function openMenu()

in frontend/src/lib/cytoscape-cxtmenu/cxtmenu.js [414:471]


        function openMenu() {
          if (!commands || commands.length === 0) { return; }

          zoomEnabled = cy.userZoomingEnabled();
          cy.userZoomingEnabled(false);

          panEnabled = cy.userPanningEnabled();
          cy.userPanningEnabled(false);

          boxEnabled = cy.boxSelectionEnabled();
          cy.boxSelectionEnabled(false);

          grabbable = target.grabbable && target.grabbable();
          if (grabbable) {
            target.ungrabify();
          }

          let rp; let rw; let
            rh;
          if (!isCy && ele.isNode() && !ele.isParent() && !options.atMouse) {
            rp = ele.renderedPosition();
            rw = ele.renderedOuterWidth();
            rh = ele.renderedOuterHeight();
          } else {
            rp = e.renderedPosition || e.cyRenderedPosition;
            rw = 1;
            rh = 1;
          }

          offset = getOffset(container);

          ctrx = rp.x;
          ctry = rp.y;

          r = rw / 2 + options.menuRadius(target);
          containerSize = (r + options.activePadding) * 2;
          updatePixelRatio();

          setStyles(parent, {
            width: `${containerSize}px`,
            height: `${containerSize}px`,
            display: 'block',
            left: `${rp.x - r}px`,
            top: `${rp.y - r}px`,
          });
          createMenuItems();

          rs = Math.max(rw, rh) / 2;
          rs = Math.max(rs, options.minSpotlightRadius);
          rs = Math.min(rs, options.maxSpotlightRadius);

          queueDrawBg(r);

          activeCommandI = undefined;

          inGesture = true;
          gestureStartEvent = e;
        }