{"version":3,"sources":["../src/index.ts","../src/panel.tsx","../src/components/devtools-pin.tsx","../src/components/devtools-selector.tsx","../src/utilities/use-selector.tsx","../src/utilities/selector-helpers.ts","../src/components/apply-styles.tsx","../src/components/selectable-elements.tsx","../src/components/icons/selector-button.tsx","../src/components/icons/devtools-icon.tsx","../src/components/resizable-pane.tsx","../src/utilities/index.ts","../src/components/icons/resize-handle-icon.tsx","../src/provider.tsx","../src/utilities/get-devtools-url-from-env.ts"],"sourcesContent":["export { DevtoolsPanel } from \"./panel.js\";\nexport { DevtoolsProvider } from \"./provider.js\";\n","import React from \"react\";\nimport { DevtoolsPin } from \"./components/devtools-pin\";\nimport { ResizablePane } from \"./components/resizable-pane\";\n\nimport {\n  DevToolsContext,\n  DevtoolsEvent,\n  send,\n} from \"@refinedev/devtools-shared\";\n\nimport type { Placement } from \"./interfaces/placement\";\n\nconst MAX_IFRAME_WAIT_TIME = 1500;\n\nexport const DevtoolsPanel =\n  __DEV_CONDITION__ !== \"development\"\n    ? () => null\n    : () => {\n        const [browser, setBrowser] = React.useState<boolean>(false);\n        const [visible, setVisible] = React.useState(false);\n        const [placement] = React.useState<Placement>(\"bottom\");\n        const { httpUrl, ws } = React.useContext(DevToolsContext);\n        const [width, setWidth] = React.useState<number>(0);\n        const [selectorActive, setSelectorActive] = React.useState(false);\n        const [iframeStatus, setIframeStatus] = React.useState<\n          \"loading\" | \"loaded\" | \"failed\"\n        >(\"loading\");\n\n        const onSelectorHighlight = React.useCallback(\n          (name: string) => {\n            if (ws) {\n              send(ws, DevtoolsEvent.DEVTOOLS_HIGHLIGHT_IN_MONITOR, {\n                name,\n              });\n            }\n            setVisible(true);\n          },\n          [ws],\n        );\n\n        React.useEffect(() => {\n          if (selectorActive) {\n            setVisible(false);\n          }\n        }, [selectorActive]);\n\n        React.useEffect(() => {\n          if (typeof window !== \"undefined\") {\n            setBrowser(true);\n          }\n        }, []);\n\n        React.useEffect(() => {\n          if (browser) {\n            // set width by window size dynamically\n            setWidth(window.innerWidth);\n\n            const onResize = () => {\n              setWidth(window.innerWidth);\n            };\n\n            window.addEventListener(\"resize\", onResize);\n\n            return () => {\n              window.removeEventListener(\"resize\", onResize);\n            };\n          }\n\n          return () => undefined;\n        }, [browser]);\n\n        React.useEffect(() => {\n          if (iframeStatus !== \"loaded\") {\n            const onMessage = (event: MessageEvent) => {\n              if (event.data.type === \"refine-devtools-iframe-loaded\") {\n                setIframeStatus(\"loaded\");\n              }\n            };\n\n            window.addEventListener(\"message\", onMessage);\n\n            return () => {\n              window.removeEventListener(\"message\", onMessage);\n            };\n          }\n\n          return () => 0;\n        }, []);\n\n        React.useEffect(() => {\n          let timeout: number;\n          if (iframeStatus === \"loading\") {\n            timeout = window.setTimeout(() => {\n              setIframeStatus(\"failed\");\n              if (timeout) {\n                clearInterval(timeout);\n              }\n            }, MAX_IFRAME_WAIT_TIME);\n          }\n          return () => {\n            if (typeof timeout !== \"undefined\") {\n              clearInterval(timeout);\n            }\n          };\n        }, [iframeStatus]);\n\n        if (!browser) {\n          return null;\n        }\n\n        return (\n          <div\n            style={{\n              position: \"fixed\",\n              left: `${Math.round(width / 2)}px`,\n              transform: \"translateX(-50%)\",\n              bottom: 0,\n              zIndex: 99999,\n            }}\n          >\n            <DevtoolsPin\n              onClick={() => {\n                setVisible((v) => !v);\n                setSelectorActive(false);\n              }}\n              onSelectorHighlight={onSelectorHighlight}\n              selectorActive={selectorActive}\n              setSelectorActive={setSelectorActive}\n            />\n            <ResizablePane visible={visible} placement={placement}>\n              {({ resizing }) => (\n                <iframe\n                  allow=\"clipboard-write;\"\n                  src={httpUrl}\n                  srcDoc={\n                    httpUrl\n                      ? iframeStatus === \"failed\"\n                        ? failedConnectionContent\n                        : undefined\n                      : missingUrlContent\n                  }\n                  style={{\n                    width: \"100%\",\n                    height: \"100%\",\n                    border: \"none\",\n                    borderRadius: \"7px\",\n                    pointerEvents: resizing ? \"none\" : \"auto\",\n                    background: \"#14141F\",\n                  }}\n                />\n              )}\n            </ResizablePane>\n          </div>\n        );\n      };\n\nconst missingUrlContent = `\n      <html style=\"height:100%;padding:0;margin:0;background:#14141F;\">\n        <body style=\"background:#14141F;display:flex;justify-content:center;height:100%;padding:24px;margin:0;align-items:center;box-sizing:border-box;\">\n          <h1 style=\"font-family:ui-monospace,monospace;font-weight:400;color:#CFD7E2;text-align:center;font-size:24px;\">Could not connect to the devtools server.</h1>\n        </body>\n      </html>\n      `;\n\nconst failedConnectionContent = `\n      <html style=\"height:100%;padding:0;margin:0;background:#14141F;\">\n        <body style=\"background:#14141F;display:flex;flex-direction:column;justify-content:center;height:100%;padding:24px;margin:0;align-items:center;box-sizing:border-box;\">\n          <h1 style=\"max-width:480px;min-width:480px;font-family:ui-monospace,monospace;font-weight:400;color:#CFD7E2;text-align:left;font-size:24px;margin-bottom:12px;line-height:24px;\">Devtools Server is unreachable.</h1>\n          <p style=\"max-width:480px;font-family:ui-monospace,monospace;font-weight:400;color:#6C7793;text-align:left;font-size:16px;line-height:32px;\">Please make sure Refine Devtools is running and <code style=\"background:#303450;color:#A3ADC2;padding:3px 6px;border-radius:4px;\">&lt;DevtoolsProvider /&gt;</code> has valid <code style=\"background:#303450;color:#A3ADC2;padding:3px 6px;border-radius:4px;\">url</code> prop. Environment variables may not always be available in browser depending on your project setup.</p>\n        </body>\n      </html>\n      `;\n","import React from \"react\";\nimport { DevtoolsSelector } from \"./devtools-selector\";\nimport { DevtoolsIcon } from \"./icons/devtools-icon\";\nimport { SelectorButtonIcon } from \"./icons/selector-button\";\nimport { ApplyStyles } from \"./apply-styles\";\n\ntype Props = {\n  onClick?: () => void;\n  groupHover?: boolean;\n  onSelectorHighlight: (name: string) => void;\n  selectorActive: boolean;\n  setSelectorActive: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nexport const DevtoolsPin = ({\n  onClick,\n  onSelectorHighlight,\n  selectorActive,\n  setSelectorActive,\n}: Props) => {\n  return (\n    <div role=\"button\" className=\"devtools-selector-pin-box\" onClick={onClick}>\n      <DevtoolsIcon />\n      <DevtoolsSelector\n        style={{\n          position: \"absolute\",\n          top: 5,\n          right: 18,\n          width: \"16px\",\n          height: \"16px\",\n        }}\n        icon={\n          <SelectorButtonIcon\n            width={16}\n            height={16}\n            style={{ pointerEvents: \"none\" }}\n          />\n        }\n        onHighlight={onSelectorHighlight}\n        active={selectorActive}\n        setActive={setSelectorActive}\n      />\n      <ApplyStyles>\n        {\n          /* css */ `\n            .devtools-selector-pin-box {\n              z-index: 9999;\n              position: relative;\n              user-select: none;\n              -webkit-user-select: none;\n              background: none;\n              border: none;\n              padding: 0;\n              margin: 0;\n              appearance: none;\n              padding-right: 1px;\n              display: flex;\n              align-items: center;\n              justify-content: center;\n              cursor: pointer;\n              color: #6C7793;\n              transition: color 0.1s ease-in-out;\n            }\n\n            .devtools-selector-pin-box:hover {\n              color: #0FBDBD;\n            }\n          `\n        }\n      </ApplyStyles>\n    </div>\n  );\n};\n","import React from \"react\";\nimport { useSelector } from \"src/utilities/use-selector\";\nimport { ApplyStyles } from \"./apply-styles\";\nimport { SelectableElements } from \"./selectable-elements\";\n\ntype Props = {\n  active: boolean;\n  setActive: React.Dispatch<React.SetStateAction<boolean>>;\n  onHighlight: (name: string) => void;\n  icon?: React.ReactNode;\n  style?: React.CSSProperties;\n};\n\nexport const DevtoolsSelector = ({\n  active,\n  setActive,\n  onHighlight,\n  icon,\n  style,\n}: Props) => {\n  const { selectableElements } = useSelector(active);\n\n  const onSelect = (name: string) => {\n    onHighlight(name);\n    setActive(false);\n  };\n\n  return (\n    <div style={style}>\n      <div\n        role=\"button\"\n        title=\"Element Selector\"\n        className=\"refine-devtools-selector-button\"\n        onClick={(event) => {\n          event.preventDefault();\n          event.stopPropagation();\n          (document?.activeElement as HTMLElement)?.blur();\n          setActive((active) => !active);\n        }}\n      >\n        {icon}\n      </div>\n      {active && (\n        <SelectableElements elements={selectableElements} onSelect={onSelect} />\n      )}\n      <ApplyStyles>\n        {\n          /* css */ `\n        .refine-devtools-selector-button {\n          padding: 0;\n          margin: 0;\n          height: 100%;\n          width: 100%;\n          transform: rotate(0deg);\n          transition: transform 0.2s ease-in-out;\n          line-height: 1;\n        }\n\n        .refine-devtools-selector-button:hover {\n          transform: rotate(180deg);\n        }\n    `\n        }\n      </ApplyStyles>\n    </div>\n  );\n};\n","import React from \"react\";\nimport { DevToolsContext } from \"@refinedev/devtools-shared\";\n\nimport {\n  filterInvisibleNodes,\n  getUniqueNodes,\n  traverseDom,\n  type SelectableElement,\n} from \"./selector-helpers\";\n\nexport const useSelector = (active: boolean) => {\n  const { httpUrl } = React.useContext(DevToolsContext);\n  const [selectableElements, setSelectableElements] = React.useState<\n    SelectableElement[]\n  >([]);\n\n  const fetchTraceItems = React.useCallback(async () => {\n    const response = await fetch(`${httpUrl}/api/unique-trace-items`);\n    const data = await response.json();\n\n    return data.data as string[];\n  }, [httpUrl]);\n\n  const prepareSelector = React.useCallback(async () => {\n    const fetchedTraceItems = await fetchTraceItems();\n    const traversedNodes = traverseDom(document.body, fetchedTraceItems);\n    const filterInvisible = filterInvisibleNodes(traversedNodes);\n    const uniqueNodes = getUniqueNodes(filterInvisible);\n\n    setSelectableElements(uniqueNodes);\n  }, [fetchTraceItems]);\n\n  React.useEffect(() => {\n    if (active) {\n      prepareSelector();\n    }\n  }, [active, prepareSelector]);\n\n  return {\n    selectableElements,\n  };\n};\n","import {\n  getElementFromFiber,\n  getFiberFromElement,\n  getFirstFiberHasName,\n  getFirstStateNodeFiber,\n  getNameFromFiber,\n  getParentOfFiber,\n} from \"@aliemir/dom-to-fiber-utils\";\n\ntype Fiber = Exclude<ReturnType<typeof getFiberFromElement>, null>;\n\nexport type SelectableElement = {\n  element: HTMLElement;\n  name: string;\n};\n\nconst getChildOfFiber = (fiber: Fiber | null) => {\n  if (!fiber) {\n    return null;\n  }\n\n  return fiber.child;\n};\n\nconst getFirstHTMLElementFromFiberByChild = (fiber: Fiber | null) => {\n  let child = fiber;\n\n  while (child) {\n    const element = getElementFromFiber(child);\n    if (element && element instanceof HTMLElement) {\n      return element;\n    }\n\n    child = getChildOfFiber(child) as Fiber;\n  }\n\n  return null;\n};\n\nconst getFirstHTMLElementFromFiberByParent = (fiber: Fiber | null) => {\n  let parent = fiber;\n\n  while (parent) {\n    const element = getElementFromFiber(parent);\n    if (element && element instanceof HTMLElement) {\n      return element;\n    }\n\n    parent = getParentOfFiber(parent) as Fiber;\n  }\n\n  return null;\n};\n\nconst getFirstHTMLElementFromFiber = (\n  fiber: Fiber | null,\n): [element: HTMLElement, \"child\" | \"parent\" | \"body\"] => {\n  let element = getFirstHTMLElementFromFiberByChild(fiber);\n\n  if (element) {\n    return [element, \"child\"];\n  }\n\n  element = getFirstHTMLElementFromFiberByParent(fiber);\n\n  if (element) {\n    return [element, \"parent\"];\n  }\n\n  return [document.body, \"body\"];\n};\n\nconst selectFiber = (start: Fiber | null, activeTraceItems: string[]) => {\n  let fiber = start;\n  let firstParentOfNodeWithName: Fiber | null = null;\n  let fiberWithStateNode: Fiber | null = null;\n\n  let acceptedName = false;\n\n  while (!acceptedName && fiber) {\n    // Get the first fiber node that has a name (look up the tree)\n    firstParentOfNodeWithName = getFirstFiberHasName(fiber);\n    // Get the first fiber node that has a state node (look up the tree)\n    fiberWithStateNode = getFirstStateNodeFiber(firstParentOfNodeWithName);\n    acceptedName = activeTraceItems.includes(\n      getNameFromFiber(firstParentOfNodeWithName) ?? \"\",\n    );\n    if (!acceptedName) {\n      fiber = getParentOfFiber(fiber);\n    }\n  }\n\n  if (fiberWithStateNode && firstParentOfNodeWithName) {\n    return {\n      stateNode: fiberWithStateNode,\n      nameFiber: firstParentOfNodeWithName,\n    };\n  }\n  return {\n    stateNode: null,\n    nameFiber: null,\n  };\n};\n\nexport const filterInvisibleNodes = (nodes: SelectableElement[]) => {\n  return nodes.filter(\n    (item) => item.element.offsetWidth > 0 && item.element.offsetHeight > 0,\n  );\n};\n\nexport const getUniqueNodes = (nodes: SelectableElement[]) => {\n  const uniques: SelectableElement[] = [];\n\n  nodes.forEach((node) => {\n    const isElementExist = uniques.find(\n      (item) => item.element === node.element && item.name === node.name,\n    );\n    if (!isElementExist) {\n      uniques.push(node);\n    }\n  });\n\n  return uniques;\n};\n\nexport const traverseDom = (\n  node: HTMLElement | null,\n  activeTraceItems: string[],\n): SelectableElement[] => {\n  if (!node) {\n    return [];\n  }\n\n  const items: SelectableElement[] = [];\n\n  const fiber = getFiberFromElement(node);\n  const targetFiber = selectFiber(fiber, activeTraceItems);\n\n  if (targetFiber.nameFiber) {\n    const [element] = getFirstHTMLElementFromFiber(targetFiber.nameFiber);\n    const name = getNameFromFiber(targetFiber.nameFiber);\n    if (element && name) {\n      items.push({\n        element,\n        name,\n      });\n    }\n  }\n\n  for (let i = 0; i < (node?.children?.length ?? 0); i++) {\n    items.push(\n      ...traverseDom(node.children[i] as HTMLElement, activeTraceItems),\n    );\n  }\n\n  return items;\n};\n","import React from \"react\";\n\ntype Props = {\n  children: string;\n};\n\nexport const ApplyStyles = ({ children }: Props) => {\n  React.useEffect(() => {\n    const element = document.createElement(\"style\");\n    element.innerHTML = children;\n    document.head.appendChild(element);\n\n    return () => {\n      document.head.removeChild(element);\n    };\n  }, [children]);\n\n  return null;\n};\n","import React from \"react\";\nimport debounce from \"lodash/debounce\";\nimport { createPortal } from \"react-dom\";\nimport { ApplyStyles } from \"./apply-styles\";\nimport { SelectorIcon } from \"./icons/selector-button\";\n\nconst MIN_SIZE = 22;\n\nconst getPosition = (element: HTMLElement, document: Document) => {\n  const { top, left, width, height } = element.getBoundingClientRect();\n  const { scrollLeft, scrollTop } = document.documentElement;\n  const positionLeft = left + scrollLeft - Math.max(0, MIN_SIZE - width) / 2;\n  const positionTop = top + scrollTop - Math.max(0, MIN_SIZE - height) / 2;\n\n  return {\n    left: positionLeft,\n    top: positionTop,\n    width: Math.max(MIN_SIZE, width),\n    height: Math.max(MIN_SIZE, height),\n  };\n};\n\nconst SelectableElement = ({\n  element,\n  name,\n  onSelect,\n}: {\n  element: HTMLElement;\n  name: string;\n  onSelect: (name: string) => void;\n}) => {\n  const [position] = React.useState(() => getPosition(element, document));\n\n  const elementRef = React.useRef<HTMLButtonElement | null>(null);\n\n  React.useEffect(() => {\n    // use scroll event listener\n    const onScroll = debounce(\n      () => {\n        const nextPos = getPosition(element, document);\n        ([\"left\", \"top\", \"width\", \"height\"] as const).forEach((prop) => {\n          elementRef.current?.style.setProperty(prop, `${nextPos[prop]}px`);\n        });\n        elementRef.current?.style.setProperty(\"opacity\", \"1\");\n      },\n      200,\n      {\n        leading: false,\n        trailing: true,\n      },\n    );\n\n    const opacityOnScroll = debounce(\n      () => {\n        elementRef.current?.style.setProperty(\"opacity\", \"0\");\n      },\n      200,\n      {\n        leading: true,\n        trailing: false,\n      },\n    );\n\n    document.addEventListener(\"scroll\", onScroll);\n    document.addEventListener(\"scroll\", opacityOnScroll);\n\n    return () => {\n      document.removeEventListener(\"scroll\", onScroll);\n      document.removeEventListener(\"scroll\", opacityOnScroll);\n    };\n  }, [element]);\n\n  const placement = React.useMemo(() => {\n    const tooltipBaseSize = { width: 22, height: 22 };\n    const nameWidth = name.length * 7.5;\n    const tooltipSize = {\n      width: tooltipBaseSize.width + nameWidth,\n      height: tooltipBaseSize.height,\n    };\n    const gap = 4;\n\n    // outside top start\n    if (\n      position.top - tooltipSize.height > 0 &&\n      position.left + tooltipSize.width < window.innerWidth &&\n      position.width > tooltipSize.width\n    ) {\n      return { left: gap / 2, top: tooltipSize.height * -1 - gap };\n    }\n    // inside top start\n    if (\n      position.height >= tooltipSize.height * 1.5 &&\n      position.width >= tooltipSize.width * 1.5\n    ) {\n      return { left: 0 + gap, top: 0 + gap };\n    }\n    // outside left start\n    if (position.left - tooltipSize.width > 0) {\n      return { right: position.width + gap, top: 0 - 1 };\n    }\n    // outside right start\n    if (\n      position.left + position.width + tooltipSize.width <\n      window.innerWidth\n    ) {\n      return { left: position.width + gap, top: 0 - 1 };\n    }\n    // outside bottom start\n    if (\n      position.top + position.height + tooltipSize.height <\n      document.documentElement.scrollHeight\n    ) {\n      return { left: 0 - 1, top: position.height + gap };\n    }\n\n    return { left: 0, top: 0 };\n  }, [position, name.length]);\n\n  return (\n    <button\n      type=\"button\"\n      className=\"selector-xray-box\"\n      onClick={(event) => {\n        event?.preventDefault();\n        event?.stopPropagation();\n        onSelect(name);\n      }}\n      ref={elementRef}\n      style={{\n        position: \"absolute\",\n        ...position,\n      }}\n    >\n      <div\n        style={{\n          position: \"absolute\",\n          ...placement,\n        }}\n        className=\"selector-xray-info\"\n      >\n        <span className=\"selector-xray-info-icon\">\n          <SelectorIcon\n            width={12}\n            height={12}\n            style={{ pointerEvents: \"none\" }}\n          />\n        </span>\n        <span className=\"selector-xray-info-title\">{` ${name}`}</span>\n      </div>\n    </button>\n  );\n};\n\nexport const SelectableElements = ({\n  elements,\n  onSelect,\n}: {\n  elements: Array<{ element: HTMLElement; name: string }>;\n  onSelect: (name: string) => void;\n}) => {\n  const [selectorBoxRoot, setSelectorBoxRoot] =\n    React.useState<HTMLElement | null>(null);\n\n  React.useEffect(() => {\n    if (!selectorBoxRoot) {\n      const element = document.createElement(\"div\");\n      element.id = \"selector-box-root\";\n\n      document.body.appendChild(element);\n\n      setSelectorBoxRoot(element);\n\n      return () => {\n        document.body.removeChild(element);\n        setSelectorBoxRoot(null);\n      };\n    }\n\n    return () => 0;\n  }, []);\n\n  if (!selectorBoxRoot) return null;\n\n  return (\n    <>\n      {createPortal(\n        elements.map((element, idx) => (\n          <SelectableElement\n            key={`selector-element-${idx}-${element.name}`}\n            {...element}\n            onSelect={onSelect}\n          />\n        )),\n        selectorBoxRoot,\n      )}\n      <ApplyStyles>\n        {\n          /* css */ `\n          .selector-xray-box {\n            display: flex;\n            margin: 0;\n            padding: 0;\n            appearance: none;\n            z-index: 9999;\n            border: 2px dashed #47EBEB;\n            border-radius: 6px;\n            background: rgba(71, 235, 235, 0.01);\n            transition: opacity 0.2s ease-in-out;\n            cursor: crosshair;\n          }\n        \n          .selector-xray-info {\n            display: flex;\n            justify-content: center;\n            align-items: center;\n      \n            z-index: 10;\n      \n            padding: 3px 0;\n            min-width: 22px;\n            height: 22px;\n      \n            color: #14141F;\n            background: #47EBEB;\n      \n            font-size: 12px;\n            line-height: 16px;\n            font-family: monospace;\n            border-radius: 11px;\n          }\n      \n          .selector-xray-info-icon {\n            display: flex;\n            min-width: 22px;\n            justify-content: center;\n            align-items: center;\n            flex-shrink: 0;\n          }\n      \n          .selector-xray-info-title {\n            display: block;\n            max-width: 0;\n            overflow: hidden;\n            transition-property: max-width, padding-right;\n            transition-duration: 0.2s;\n            transition-timing-function: ease-in-out;\n            transition-delay: 0.1s;\n          }\n      \n          .selector-xray-box:hover .selector-xray-info-title {\n            max-width: 200px;\n            padding-right: 8px;\n          }\n          .selector-xray-box:hover .selector-xray-info-title {\n            z-index: 90;\n          }\n        `\n        }\n      </ApplyStyles>\n    </>\n  );\n};\n","import React from \"react\";\n\nexport const SelectorButtonIcon = (props: React.SVGProps<SVGSVGElement>) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width={16}\n    height={16}\n    viewBox=\"0 0 16 16\"\n    fill=\"none\"\n    {...props}\n  >\n    <path\n      fill=\"#0FBDBD\"\n      fillRule=\"evenodd\"\n      d=\"M9 1a1 1 0 0 0-2 0v2.1A5.006 5.006 0 0 0 3.1 7H1a1 1 0 0 0 0 2h2.1A5.006 5.006 0 0 0 7 12.9V15a1 1 0 1 0 2 0v-2.1A5.006 5.006 0 0 0 12.9 9H15a1 1 0 1 0 0-2h-2.1A5.006 5.006 0 0 0 9 3.1V1Zm2 7a3 3 0 1 0-6 0 3 3 0 0 0 6 0Z\"\n      clipRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const SelectorIcon = (props: React.SVGProps<SVGSVGElement>) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width={16}\n    height={16}\n    viewBox=\"0 0 16 16\"\n    fill=\"none\"\n    {...props}\n  >\n    <path\n      fill=\"#14141F\"\n      fillRule=\"evenodd\"\n      d=\"M9 1a1 1 0 0 0-2 0v2.1A5.006 5.006 0 0 0 3.1 7H1a1 1 0 0 0 0 2h2.1A5.006 5.006 0 0 0 7 12.9V15a1 1 0 1 0 2 0v-2.1A5.006 5.006 0 0 0 12.9 9H15a1 1 0 1 0 0-2h-2.1A5.006 5.006 0 0 0 9 3.1V1Zm2 7a3 3 0 1 0-6 0 3 3 0 0 0 6 0Z\"\n      clipRule=\"evenodd\"\n    />\n  </svg>\n);\n","import * as React from \"react\";\nimport type { SVGProps } from \"react\";\n\nexport const DevtoolsIcon = (props: SVGProps<SVGSVGElement>) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width={157}\n    height={25}\n    viewBox=\"0 0 157 25\"\n    fill=\"none\"\n    {...props}\n  >\n    <g>\n      <path fill=\"#1D1E30\" d=\"M17 1h123v24H17z\" />\n      <path\n        fill=\"#1D1E30\"\n        d=\"M6.265 9.205A12 12 0 0 1 17.649 1H25v24H1L6.265 9.205ZM150.735 9.205A12 12 0 0 0 139.351 1H132v24h24l-5.265-15.795Z\"\n      />\n      <path\n        fill=\"currentColor\"\n        d=\"M25 14.333A1.333 1.333 0 1 1 25 17a1.333 1.333 0 0 1 0-2.667Z\"\n      />\n      <path\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n        d=\"M23.211 20.578a4 4 0 0 0 3.578 0l4-2A4 4 0 0 0 33 15v-4a4 4 0 0 0-2.211-3.578l-4-2a4 4 0 0 0-3.578 0l-4 2A4 4 0 0 0 17 11v4a4 4 0 0 0 2.211 3.578l4 2Zm-.878-4.911a2.667 2.667 0 0 0 5.334 0v-5.334a2.667 2.667 0 0 0-5.334 0v5.334Z\"\n        clipRule=\"evenodd\"\n      />\n      <path\n        fill=\"#CFD7E2\"\n        d=\"M42.152 17a.287.287 0 0 1-.192-.072.287.287 0 0 1-.072-.192V9.032c0-.072.024-.132.072-.18a.264.264 0 0 1 .192-.084h4.2c.288 0 .56.056.816.168a2.135 2.135 0 0 1 1.14 1.128c.112.256.168.532.168.828v3.984c0 .296-.056.572-.168.828a2.135 2.135 0 0 1-1.14 1.128 2.014 2.014 0 0 1-.816.168h-4.2Zm1.38-1.644h2.82a.455.455 0 0 0 .336-.132.497.497 0 0 0 .132-.348v-3.984a.455.455 0 0 0-.132-.336.436.436 0 0 0-.336-.144h-2.82v4.944Zm13.18-5.196a.244.244 0 0 1-.253.252h-4.44v1.656h4.02c.072 0 .132.024.18.072a.227.227 0 0 1 .084.18v1.128a.264.264 0 0 1-.084.192.244.244 0 0 1-.18.072h-4.02v1.644h4.44c.072 0 .132.028.18.084a.244.244 0 0 1 .072.18v1.116a.287.287 0 0 1-.072.192.244.244 0 0 1-.18.072h-5.832a.244.244 0 0 1-.18-.072.287.287 0 0 1-.072-.192V9.032c0-.072.024-.132.072-.18a.227.227 0 0 1 .18-.084h5.832c.072 0 .132.028.18.084a.244.244 0 0 1 .072.18v1.128ZM63.014 17h-2.232a.387.387 0 0 1-.216-.072.356.356 0 0 1-.144-.168l-1.716-4.296a.853.853 0 0 1-.072-.24 1.783 1.783 0 0 1-.024-.264V9.032c0-.072.024-.132.072-.18a.227.227 0 0 1 .18-.084h1.128c.072 0 .132.028.18.084a.227.227 0 0 1 .084.18v2.616c0 .072.008.156.024.252s.04.176.072.24l1.284 3.216h.528l1.284-3.216a.853.853 0 0 0 .072-.24c.016-.096.024-.18.024-.252V9.032c0-.072.024-.132.072-.18a.264.264 0 0 1 .192-.084h1.128c.072 0 .132.028.18.084a.244.244 0 0 1 .072.18v2.928c0 .072-.008.16-.024.264a.853.853 0 0 1-.072.24l-1.716 4.296a.356.356 0 0 1-.144.168.387.387 0 0 1-.216.072ZM73.29 8.768c.072 0 .132.028.18.084a.227.227 0 0 1 .084.18v1.128a.227.227 0 0 1-.084.18.244.244 0 0 1-.18.072h-2.208v6.324a.264.264 0 0 1-.084.192.244.244 0 0 1-.18.072H69.69a.244.244 0 0 1-.18-.072.287.287 0 0 1-.072-.192v-6.324H67.23a.287.287 0 0 1-.192-.072.244.244 0 0 1-.072-.18V9.032c0-.072.024-.132.072-.18a.264.264 0 0 1 .192-.084h6.06Zm6.507.012c.296 0 .572.056.828.168a2.171 2.171 0 0 1 1.128 1.128c.112.256.168.528.168.816v3.996c0 .288-.056.56-.168.816a2.171 2.171 0 0 1-1.128 1.128 2.043 2.043 0 0 1-.828.168h-2.34c-.296 0-.572-.056-.828-.168a2.171 2.171 0 0 1-1.128-1.128 2.014 2.014 0 0 1-.168-.816v-3.996c0-.288.056-.56.168-.816a2.171 2.171 0 0 1 1.128-1.128c.256-.112.532-.168.828-.168h2.34Zm.48 2.112a.436.436 0 0 0-.144-.336.455.455 0 0 0-.336-.132h-2.34a.497.497 0 0 0-.348.132.455.455 0 0 0-.132.336v3.996c0 .136.044.248.132.336a.497.497 0 0 0 .348.132h2.34a.455.455 0 0 0 .336-.132.436.436 0 0 0 .144-.336v-3.996Zm7.888-2.112c.295 0 .572.056.828.168a2.171 2.171 0 0 1 1.128 1.128c.112.256.168.528.168.816v3.996c0 .288-.056.56-.168.816a2.171 2.171 0 0 1-1.128 1.128 2.043 2.043 0 0 1-.828.168h-2.34c-.297 0-.573-.056-.829-.168a2.171 2.171 0 0 1-1.127-1.128 2.014 2.014 0 0 1-.168-.816v-3.996c0-.288.056-.56.168-.816a2.171 2.171 0 0 1 1.127-1.128c.257-.112.532-.168.829-.168h2.34Zm.48 2.112a.436.436 0 0 0-.144-.336.455.455 0 0 0-.337-.132h-2.34a.497.497 0 0 0-.347.132.455.455 0 0 0-.133.336v3.996c0 .136.044.248.133.336a.497.497 0 0 0 .347.132h2.34a.455.455 0 0 0 .337-.132.436.436 0 0 0 .143-.336v-3.996ZM98.294 17H92.68a.287.287 0 0 1-.192-.072.287.287 0 0 1-.072-.192V9.032c0-.072.024-.132.072-.18a.264.264 0 0 1 .192-.084h1.116c.072 0 .132.028.18.084a.227.227 0 0 1 .084.18v6.324h4.236c.072 0 .132.028.18.084a.244.244 0 0 1 .072.18v1.116a.287.287 0 0 1-.072.192.244.244 0 0 1-.18.072Zm7.336-5.76a.287.287 0 0 1-.192-.072.287.287 0 0 1-.072-.192v-.084a.455.455 0 0 0-.132-.336.436.436 0 0 0-.336-.144h-2.352a.46.46 0 0 0-.336.144.455.455 0 0 0-.132.336v.696c0 .136.044.252.132.348a.482.482 0 0 0 .336.132h2.352c.288 0 .56.056.816.168a2.171 2.171 0 0 1 1.128 1.128c.112.256.168.528.168.816v.696c0 .296-.056.572-.168.828a2.171 2.171 0 0 1-1.128 1.128 2.014 2.014 0 0 1-.816.168h-2.352c-.288 0-.56-.056-.816-.168a2.171 2.171 0 0 1-1.128-1.128 2.043 2.043 0 0 1-.168-.828v-.084c0-.072.024-.132.072-.18a.264.264 0 0 1 .192-.084h1.116c.072 0 .132.028.18.084a.227.227 0 0 1 .084.18v.084c0 .136.044.252.132.348a.482.482 0 0 0 .336.132h2.352a.455.455 0 0 0 .336-.132.497.497 0 0 0 .132-.348v-.696a.455.455 0 0 0-.132-.336.455.455 0 0 0-.336-.132h-2.352c-.288 0-.56-.056-.816-.168a2.171 2.171 0 0 1-1.128-1.128 2.099 2.099 0 0 1-.168-.828v-.696c0-.296.056-.572.168-.828a2.171 2.171 0 0 1 1.128-1.128c.256-.112.528-.168.816-.168h2.352c.288 0 .56.056.816.168a2.171 2.171 0 0 1 1.128 1.128c.112.256.168.532.168.828v.084a.287.287 0 0 1-.072.192.244.244 0 0 1-.18.072h-1.128Z\"\n      />\n    </g>\n  </svg>\n);\n","import React from \"react\";\nimport type { Placement } from \"src/interfaces/placement\";\nimport {\n  getDefaultPanelSize,\n  getMaxPanelHeight,\n  getMaxPanelWidth,\n  getPanelPosition,\n  getPanelToggleTransforms,\n  MIN_PANEL_HEIGHT,\n  MIN_PANEL_WIDTH,\n  roundToEven,\n} from \"src/utilities\";\nimport { ResizeHandleIcon } from \"./icons/resize-handle-icon\";\n\ntype Props = {\n  placement: Placement;\n  defaultWidth?: number;\n  minWidth?: number;\n  maxWidth?: number;\n  defaultHeight?: number;\n  minHeight?: number;\n  maxHeight?: number;\n  children: ({ resizing }: { resizing: string | null }) => React.ReactNode;\n  onResize?: (width: number, height: number) => void;\n  visible?: boolean;\n};\n\nexport const ResizablePane = ({ placement, visible, children }: Props) => {\n  const [hover, setHover] = React.useState(false);\n  const [resizing, setResizing] = React.useState<\n    \"lx\" | \"rx\" | \"ty\" | \"by\" | null\n  >(null);\n  const [resizePosition, setResizePosition] = React.useState<{\n    x: number;\n    y: number;\n  } | null>(null);\n  const [panelSize, setPanelSize] = React.useState<\n    Record<\"width\" | \"height\", number>\n  >(() => {\n    const defaultSize = getDefaultPanelSize(placement);\n\n    return {\n      width: roundToEven(defaultSize.width),\n      height: roundToEven(defaultSize.height),\n    };\n  });\n\n  React.useEffect(() => {\n    const handleResize = () => {\n      setPanelSize((p) => {\n        const defaultSize = getDefaultPanelSize(placement, p);\n\n        return {\n          width: roundToEven(defaultSize.width),\n          height: roundToEven(defaultSize.height),\n        };\n      });\n    };\n\n    handleResize();\n\n    window.addEventListener(\"resize\", handleResize);\n\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  }, [placement]);\n\n  React.useEffect(() => {\n    const handleMouseUp = () => {\n      setResizing(null);\n    };\n\n    if (resizing !== null) {\n      window.addEventListener(\"mouseup\", handleMouseUp);\n\n      return () => {\n        window.removeEventListener(\"mouseup\", handleMouseUp);\n      };\n    }\n\n    return;\n  }, [resizing]);\n\n  React.useEffect(() => {\n    const currentCursor = document.body.style.cursor;\n\n    if (resizing?.includes(\"x\")) {\n      document.body.style.cursor = \"col-resize\";\n    } else if (resizing?.includes(\"y\")) {\n      document.body.style.cursor = \"row-resize\";\n    }\n\n    return () => {\n      document.body.style.cursor = currentCursor;\n    };\n  }, [resizing]);\n\n  React.useEffect(() => {\n    const handleMouseMove = (e: MouseEvent) => {\n      if (resizing?.[1] === \"x\") {\n        const diff = e.clientX - (resizePosition?.x ?? e.clientX);\n        const newWidth =\n          panelSize.width + (resizing === \"lx\" ? -diff : diff) * 2;\n\n        setPanelSize((p) => ({\n          ...p,\n          width: roundToEven(\n            Math.min(\n              getMaxPanelWidth(placement),\n              Math.max(MIN_PANEL_WIDTH, newWidth),\n            ),\n          ),\n        }));\n      } else if (resizing?.[1] === \"y\") {\n        const diff = e.clientY - (resizePosition?.y ?? e.clientY);\n        const newHeight =\n          panelSize.height + (resizing === \"ty\" ? -diff : diff) * 1;\n\n        setPanelSize((p) => ({\n          ...p,\n          height: roundToEven(\n            Math.min(\n              getMaxPanelHeight(placement),\n              Math.max(MIN_PANEL_HEIGHT, newHeight),\n            ),\n          ),\n        }));\n      }\n    };\n\n    if (resizing !== null) {\n      window.addEventListener(\"mousemove\", handleMouseMove);\n\n      return () => {\n        window.removeEventListener(\"mousemove\", handleMouseMove);\n      };\n    }\n\n    return;\n  }, [resizing, placement]);\n\n  return (\n    <div\n      style={{\n        position: \"absolute\",\n        borderRadius: \"8px\",\n        boxShadow: \"0 0 10px rgba(0, 0, 0, 0.5)\",\n        border: \"1px solid rgba(0, 0, 0, 0.5)\",\n        transitionProperty: \"transform, opacity\",\n        transitionTimingFunction: \"ease-in-out\",\n        transitionDuration: \"0.2s\",\n        ...getPanelPosition(placement),\n        opacity: visible ? 1 : 0,\n        transform: `${\n          getPanelPosition(placement).transform\n        } ${getPanelToggleTransforms(visible ?? false)}`,\n        ...panelSize,\n      }}\n      onMouseEnter={() => {\n        setHover(true);\n      }}\n      onMouseLeave={() => {\n        setHover(false);\n      }}\n    >\n      {children({ resizing })}\n      {/*  */}\n      <React.Fragment>\n        <div\n          style={{\n            position: \"absolute\",\n            left: 0,\n            top: \"50%\",\n            width: \"10px\",\n            height: \"26px\",\n            transform: \"translateY(-13px) translateX(-5px)\",\n            cursor: \"col-resize\",\n            transition: \"opacity ease-in-out 0.2s\",\n            pointerEvents: hover || resizing ? \"auto\" : \"none\",\n            opacity: hover || resizing ? 1 : 0,\n          }}\n          onMouseDown={(event) => {\n            setResizing(\"lx\");\n            setResizePosition({\n              x: event.clientX,\n              y: event.clientY,\n            });\n\n            event.preventDefault();\n          }}\n        >\n          <ResizeHandleIcon />\n        </div>\n        <div\n          style={{\n            position: \"absolute\",\n            right: 0,\n            top: \"50%\",\n            width: \"10px\",\n            height: \"26px\",\n            transform: \"translateY(-13px) translateX(5px)\",\n            cursor: \"col-resize\",\n            transition: \"opacity ease-in-out 0.2s\",\n            pointerEvents: hover || resizing ? \"auto\" : \"none\",\n            opacity: hover || resizing ? 1 : 0,\n          }}\n          onMouseDown={(event) => {\n            setResizing(\"rx\");\n            setResizePosition({\n              x: event.clientX,\n              y: event.clientY,\n            });\n\n            event.preventDefault();\n          }}\n        >\n          <ResizeHandleIcon />\n        </div>\n        <div\n          style={{\n            position: \"absolute\",\n            left: \"50%\",\n            top: 0,\n            width: \"26px\",\n            height: \"10px\",\n            transform: \"translateY(-5px) translateX(-13px)\",\n            cursor: \"row-resize\",\n            transition: \"opacity ease-in-out 0.2s\",\n            pointerEvents: hover || resizing ? \"auto\" : \"none\",\n            opacity: hover || resizing ? 1 : 0,\n          }}\n          onMouseDown={(event) => {\n            setResizing(\"ty\");\n            setResizePosition({\n              x: event.clientX,\n              y: event.clientY,\n            });\n\n            event.preventDefault();\n          }}\n        >\n          <ResizeHandleIcon\n            style={{\n              transform: \"rotate(90deg)\",\n              transformOrigin: \"13px 13px\",\n            }}\n          />\n        </div>\n        <div\n          style={{\n            position: \"absolute\",\n            left: \"50%\",\n            bottom: 0,\n            width: \"26px\",\n            height: \"10px\",\n            transform: \"translateY(5px) translateX(-13px)\",\n            cursor: \"row-resize\",\n            transition: \"opacity ease-in-out 0.2s\",\n            pointerEvents: hover || resizing ? \"auto\" : \"none\",\n            opacity: hover || resizing ? 1 : 0,\n          }}\n          onMouseDown={(event) => {\n            setResizing(\"by\");\n            setResizePosition({\n              x: event.clientX,\n              y: event.clientY,\n            });\n\n            event.preventDefault();\n          }}\n        >\n          <ResizeHandleIcon\n            style={{\n              transform: \"rotate(90deg)\",\n              transformOrigin: \"13px 13px\",\n            }}\n          />\n        </div>\n      </React.Fragment>\n    </div>\n  );\n};\n","import type { Placement } from \"src/interfaces/placement\";\n\nexport const getPanelToggleTransforms = (visible: boolean) => {\n  return visible ? \"scaleX(1) translateY(0)\" : \"scaleX(0) translateY(25vw)\";\n};\n\nexport const SIZE = 50;\nexport const BUFFER = 10;\n\nconst PREFERRED_DEFAULT_WIDTH = () =>\n  typeof window !== \"undefined\" ? window.innerWidth * 0.7 : 1440 * 0.7; // 70% of window width\nconst PREFERRED_DEFAULT_HEIGHT = () =>\n  typeof window !== \"undefined\" ? window.innerHeight * 0.7 : 900 * 0.7; // 70% of window height\n\nexport const MIN_PANEL_WIDTH = 640;\nexport const MIN_PANEL_HEIGHT = 360;\n\nexport const getPinButtonTransform = (hover?: boolean) => {\n  return `translateY(${hover ? \"0\" : \"50%\"})`;\n};\n\nexport const getPanelPosition = (placement: Placement) => {\n  switch (placement) {\n    case \"left\":\n      return {\n        left: `calc(${SIZE}px + ${BUFFER}px)`,\n        top: \"50%\",\n        transform: \"translateY(-50%)\",\n      };\n    case \"right\":\n      return {\n        right: `calc(${SIZE}px + ${BUFFER}px)`,\n        top: \"50%\",\n        transform: \"translateY(-50%)\",\n      };\n    case \"top\":\n      return {\n        left: \"50%\",\n        top: `calc(${SIZE}px + ${BUFFER}px)`,\n        transform: \"translateX(-50%)\",\n      };\n    case \"bottom\":\n      return {\n        left: \"50%\",\n        bottom: `calc(${SIZE}px + ${BUFFER}px)`,\n        transform: \"translateX(-50%)\",\n      };\n  }\n};\n\nexport const getMaxPanelWidth = (placement: Placement) => {\n  switch (placement) {\n    case \"left\":\n    case \"right\":\n      return (\n        -BUFFER -\n        SIZE -\n        BUFFER +\n        (typeof window !== \"undefined\" ? window.innerWidth : 1440) -\n        BUFFER\n      );\n    case \"top\":\n    case \"bottom\":\n      return (\n        -BUFFER +\n        (typeof window !== \"undefined\" ? window.innerWidth : 1440) -\n        BUFFER\n      );\n  }\n};\n\nexport const getMaxPanelHeight = (placement: Placement) => {\n  switch (placement) {\n    case \"left\":\n    case \"right\":\n      return (\n        -BUFFER +\n        (typeof window !== \"undefined\" ? window.innerHeight : 900) -\n        BUFFER\n      );\n    case \"top\":\n    case \"bottom\":\n      return (\n        -BUFFER -\n        SIZE -\n        BUFFER +\n        (typeof window !== \"undefined\" ? window.innerHeight : 900) -\n        BUFFER\n      );\n  }\n};\n\nexport const getDefaultPanelSize = (\n  placement: Placement,\n  preferredSize?: { width: number; height: number },\n): { width: number; height: number } => {\n  const defaultPreferred = {\n    width: PREFERRED_DEFAULT_WIDTH(),\n    height: PREFERRED_DEFAULT_HEIGHT(),\n  };\n\n  const maxPanelWidth = getMaxPanelWidth(placement);\n  const maxPanelHeight = getMaxPanelHeight(placement);\n\n  const width = Math.min(\n    maxPanelWidth,\n    (preferredSize ?? defaultPreferred).width,\n  );\n  const height = Math.min(\n    maxPanelHeight,\n    (preferredSize ?? defaultPreferred).height,\n  );\n\n  return {\n    width: width,\n    height: height,\n  };\n};\n\nexport const roundToEven = (num: number) => {\n  const rounded = Math.round(num);\n  return rounded % 2 === 0 ? rounded : rounded + 1;\n};\n","import React from \"react\";\n\nexport const ResizeHandleIcon = (props: React.SVGProps<SVGSVGElement>) => (\n  <svg\n    width={10}\n    height={26}\n    viewBox=\"0 0 10 26\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <rect x={0.5} y={0.5} width={9} height={25} rx={4.5} fill=\"#1D1E30\" />\n    <path\n      d=\"M7 5C7 6.10457 6.10457 7 5 7C3.89543 7 3 6.10457 3 5C3 3.89543 3.89543 3 5 3C6.10457 3 7 3.89543 7 5Z\"\n      fill=\"#303450\"\n    />\n    <path\n      d=\"M7 13C7 14.1046 6.10457 15 5 15C3.89543 15 3 14.1046 3 13C3 11.8954 3.89543 11 5 11C6.10457 11 7 11.8954 7 13Z\"\n      fill=\"#303450\"\n    />\n    <path\n      d=\"M7 21C7 22.1046 6.10457 23 5 23C3.89543 23 3 22.1046 3 21C3 19.8954 3.89543 19 5 19C6.10457 19 7 19.8954 7 21Z\"\n      fill=\"#303450\"\n    />\n    <rect x={0.5} y={0.5} width={9} height={25} rx={4.5} stroke=\"#303450\" />\n  </svg>\n);\n","import React from \"react\";\nimport { DevToolsContextProvider } from \"@refinedev/devtools-shared\";\nimport { getDevtoolsUrlFromEnv } from \"./utilities/get-devtools-url-from-env\";\n\ntype Props = React.PropsWithChildren<{\n  /**\n   * Devtools URL to connect to the server. This will also be used for the WebSocket connections and serving the Devtools UI.\n   * By default, it will use the `REFINE_DEVTOOLS_PORT` environment variable to construct to URL or use `5001` as the default port.\n   * If you're using `refine dev` command, it will try to automatically set the environment variable for you and use it.\n   * If environment variable is not working for you, you can manually set the URL as a string or a tuple of `[httpUrl: string, wsUrl: string]`.\n   */\n  url?: string | [httpUrl: string, wsUrl: string];\n}>;\n\nexport const DevtoolsProvider =\n  __DEV_CONDITION__ !== \"development\"\n    ? ({ children }: Props) => children as any\n    : ({ children, url = getDevtoolsUrlFromEnv() }: Props) => {\n        return (\n          <DevToolsContextProvider url={url}>\n            {children}\n          </DevToolsContextProvider>\n        );\n      };\n","const DEFAULT_DEVTOOLS_PORT = 5001;\n\nexport const getDevtoolsUrlFromEnv = () => {\n  const PORT_FROM_ENV =\n    typeof __PROCESS_KEY__ !== \"undefined\" && \"env\" in __PROCESS_KEY__\n      ? __PROCESS_ENV_REFINE_DEVTOOLS_PORT_KEY__ ||\n        __PROCESS_ENV_NEXT_PUBLIC_REFINE_DEVTOOLS_PORT_KEY__ ||\n        __PROCESS_ENV_REACT_APP_REFINE_DEVTOOLS_PORT_KEY__\n      : typeof __IMPORT_META_KEY__ !== \"undefined\" && __IMPORT_META_KEY__.env\n        ? __IMPORT_META_ENV_REFINE_DEVTOOLS_PORT_KEY__ ||\n          __IMPORT_META_ENV_VITE_REFINE_DEVTOOLS_PORT_KEY__\n        : null;\n\n  const port = PORT_FROM_ENV || DEFAULT_DEVTOOLS_PORT;\n\n  return [`http://localhost:${port}`, `ws://localhost:${port}`] as [\n    httpUrl: string,\n    wsUrl: string,\n  ];\n};\n"],"mappings":"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","names":["import_react","import_react","import_react","React","import_react","React","import_react","import_react","React","document","React","debounce","_a","React","active","React","React","import_react","import_react","React","React","import_devtools_shared","React","import_react","import_devtools_shared","React"]}