How to get the actual location of the nodes Programmatically?

This is a strange situation I’m having.
Since GOjs has no direct support for popups, I implemented it manually, using the bellow code:
I bind a single click to objects,

this.diagram.addDiagramListener("ObjectSingleClicked", this._onObjectSingleClick.bind(this));
_onObjectSingleClick(e) {
        const part = e.subject.part;
        if (part instanceof go.Link) {
            const point = e.diagram.lastInput.viewPoint;
            this.positionAndOpenPopup(point, part);
        }
    }

And in positionAndOpenPopup(), I use point to place the popup div, then I change it’s content according to part.data then I change it’s display prop to show it.
This works like a charm.

Here is the problem:
I also have a search input, that the user can type in a keyword and the popup for that node must be opened automatically.
So, when I do diagram.lastInput.viewPort I don’t get correct location of the nodes. Because the user didn’t click on the node.
I tried to get it using node.location but for some reason that gives me wrong x and y.
Can you give me any help to implement this functionality?
Once again, to be clear, I want to use a search box, to find the node (I already know how to find it no problem there), and then, open a popup on the node, in correct location. And to give you an image of what my popups look like, they are kinda like thought bubbles with an arrow pointing to the node on the diagram.

That depends on what you mean by “actual location”.
Please read https://gojs.net/latest/intro/viewport.html

I should’ve read the docs carefully because it was very easy.
All I needed to do was to call diagram.transformDocToView(part.location) and that will give me the correct location points.
Clean and simple.
Thanks.