{"version":3,"sources":["../../src/components/module/CardParser.tsx","../../src/components/module/graph/GraphFlexBox.tsx","../../src/contexts/CytoscapeInstance/Context.ts","../../src/contexts/CytoscapeInstance/Provider.tsx","../../src/contexts/CytoscapeInstance/use.ts","../../src/hooks/cytoscape/elements/useCytoscapeElements.ts","../../src/Cytoscape/CytoscapeElements.ts","../../src/Cytoscape/lib/encodeSvg.ts","../../src/Cytoscape/lib/iconMap.ts","../../src/Cytoscape/lib/layout/ColaLayout.ts","../../src/Cytoscape/lib/layout/ConcentricLayout.ts","../../src/Cytoscape/lib/parseModuleType.ts","../../src/Cytoscape/CytoscapeIcons.tsx","../../src/Cytoscape/CytoscapeStyles.ts","../../src/hooks/cytoscape/elements/useHoveredNode.tsx","../../src/hooks/cytoscape/elements/useNewElements.tsx","../../src/hooks/cytoscape/elements/useRenderNewElements.tsx","../../src/hooks/cytoscape/elements/useSelectedElement.tsx","../../src/hooks/cytoscape/elements/useElements.tsx","../../src/hooks/cytoscape/useCytoscapeOptions.ts","../../src/hooks/cytoscape/useCytoscapeStyle.tsx","../../src/hooks/cytoscape/useIcons.tsx","../../src/hooks/cytoscape/useModuleDetails.tsx","../../src/hooks/cytoscape/useRelationalGraphOptions.tsx","../../src/components/cytoscape-extensions/WithExtensions.tsx","../../src/components/relational/graph/Graph.tsx","../../src/components/relational/graph/ProvidedNodeRenderer.tsx","../../src/components/module/graph/DetailsFlexbox.tsx","../../src/components/module/graph/node/Hover.tsx","../../src/components/module/graph/node/hooks/useNodeElement.tsx","../../src/components/module/graph/Popper.tsx"],"sourcesContent":["import { asArchivistInstance, isArchivistInstance } from '@xyo-network/archivist-model'\nimport { asDivinerInstance, isDivinerInstance } from '@xyo-network/diviner-model'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport { ArchivistCard } from '@xyo-network/react-archivist'\nimport { DivinerCard, ModuleCard } from '@xyo-network/react-module'\nimport React from 'react'\n\nexport interface ModuleCardParserProps {\n  mod?: ModuleInstance\n}\n\nexport const ModuleCardParser: React.FC<ModuleCardParserProps> = ({ mod }) => {\n  switch (true) {\n    case isArchivistInstance(mod): {\n      return <ArchivistCard mod={asArchivistInstance(mod)} />\n    }\n    case isDivinerInstance(mod): {\n      return <DivinerCard mod={asDivinerInstance(mod)} />\n    }\n    default: {\n      return <ModuleCard mod={mod} />\n    }\n  }\n}\n","import { Button } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport React, { useRef } from 'react'\n\nimport { CytoscapeInstanceProvider } from '../../../contexts/index.ts'\nimport {\n  useElements, useModuleDetails, useRelationalGraphOptions,\n} from '../../../hooks/index.ts'\nimport { WithExtensions } from '../../cytoscape-extensions/index.ts'\nimport { NodeRelationalGraphFlexBox } from '../../relational/index.ts'\nimport { DetailsFlexbox } from './DetailsFlexbox.tsx'\nimport { ModuleGraphNodeHover } from './node/index.ts'\nimport { StyledModuleHoverPopper } from './Popper.tsx'\n\nexport interface ModuleGraphFlexBoxProps extends FlexBoxProps {\n  disableModuleDetails?: boolean\n  hideActions?: boolean\n  layout?: 'dagre' | 'euler' | 'cose-bilkent' | 'cola'\n  layoutOptions?: object\n  rootModule?: WeakRef<ModuleInstance> | null\n}\n\nexport const ModuleGraphFlexBox: React.FC<ModuleGraphFlexBoxProps> = ({\n  hideActions, rootModule, disableModuleDetails, ...props\n}) => {\n  const cytoscapeRef = useRef<HTMLDivElement>(null)\n  const {\n    handleToggleLabels, hideLabels, options,\n  } = useRelationalGraphOptions(rootModule ?? undefined)\n  const {\n    hoveredNode, setHoveredNode, toggleSelectedElement,\n  } = useElements(hideLabels)\n\n  const { mod, onModuleDetails } = useModuleDetails(rootModule, () => setHoveredNode(undefined))\n\n  return (\n    <WithExtensions>\n      <NodeRelationalGraphFlexBox\n        actions={\n          mod\n            ? null\n            : hideActions\n              ? null\n              : (\n                  <Button size=\"small\" onClick={handleToggleLabels} variant=\"contained\">\n                    Toggle Labels\n                  </Button>\n                )\n\n        }\n        showDetails={!!mod}\n        detail={<DetailsFlexbox onClose={() => onModuleDetails(null)} />}\n        options={options}\n        ref={cytoscapeRef}\n        width=\"100%\"\n        {...props}\n      >\n        <ModuleGraphNodeHover node={hoveredNode}>\n          {element => (\n            <StyledModuleHoverPopper\n              anchorEl={element}\n              container={cytoscapeRef.current}\n              node={hoveredNode}\n              onClose={() => setHoveredNode(undefined)}\n              onModuleExplore={toggleSelectedElement}\n              onModuleDetails={disableModuleDetails ? undefined : onModuleDetails}\n              placement=\"top\"\n              open\n            />\n          )}\n        </ModuleGraphNodeHover>\n      </NodeRelationalGraphFlexBox>\n    </WithExtensions>\n  )\n}\n\nexport const ModuleGraphFlexBoxWithProvider: React.FC<ModuleGraphFlexBoxProps> = (props) => {\n  return (\n    <CytoscapeInstanceProvider>\n      <ModuleGraphFlexBox {...props} />\n    </CytoscapeInstanceProvider>\n  )\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { CytoscapeInstanceState } from './State.ts'\n\nexport const CytoscapeInstanceContext = createContextEx<CytoscapeInstanceState>()\n","import type { Core } from 'cytoscape'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { CytoscapeInstanceContext } from './Context.ts'\nimport type { CytoscapeInstanceState } from './State.ts'\n\nexport interface CytoscapeInstanceProviderProps extends PropsWithChildren {\n  defaultInstance?: WeakRef<Core>\n}\n\nexport const CytoscapeInstanceProvider: React.FC<CytoscapeInstanceProviderProps> = ({ children, defaultInstance }) => {\n  const [cy, setCy] = useState<WeakRef<Core> | undefined>(() => defaultInstance)\n\n  const value: CytoscapeInstanceState = useMemo(() => ({\n    cy, provided: true, setCy,\n  }), [cy, setCy])\n\n  return (\n    <CytoscapeInstanceContext value={value}>\n      {children}\n    </CytoscapeInstanceContext>\n  )\n}\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { CytoscapeInstanceContext } from './Context.ts'\n\nexport const useCytoscapeInstance = (required = false) => useContextEx(CytoscapeInstanceContext, 'CytoscapeInstance', required)\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport type { EventUnsubscribeFunction } from '@xylabs/sdk-js'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport type { ElementDefinition } from 'cytoscape'\nimport { useEffect, useState } from 'react'\n\nimport { CytoscapeElements } from '../../../Cytoscape/index.ts'\n\nexport const useCytoscapeElements = (mod?: WeakRef<ModuleInstance> | null) => {\n  const [elements, setElements] = useState<ElementDefinition[]>([])\n\n  useAsyncEffect(\n\n    async () => {\n      const moduleInstance = mod?.deref()\n      if (moduleInstance) {\n        const newElements = (await CytoscapeElements.buildElements(moduleInstance)) ?? []\n        setElements(newElements)\n      }\n    },\n    [mod],\n  )\n\n  useEffect(() => {\n    let attachedListener: EventUnsubscribeFunction | undefined\n    let detachedListener: EventUnsubscribeFunction | undefined\n\n    if (mod && isNodeInstance(mod)) {\n      attachedListener = mod.on('moduleAttached', async () => {\n        const newElements = (await CytoscapeElements.buildElements(mod)) ?? []\n        setElements(newElements)\n      })\n      detachedListener = mod.on('moduleDetached', async () => {\n        const newElements = (await CytoscapeElements.buildElements(mod)) ?? []\n        setElements(newElements)\n      })\n    }\n\n    return () => {\n      attachedListener?.()\n      detachedListener?.()\n    }\n  }, [mod])\n\n  return elements\n}\n","import { exists, isFalsy } from '@xylabs/sdk-js'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport type { ElementDefinition } from 'cytoscape'\n\nimport { parseModuleType } from './lib/index.ts'\n\ninterface ModuleInfo {\n  children: ModuleInfo[]\n  depth: number\n  mod: ModuleInstance\n}\n\nexport const CytoscapeElements = {\n  MaxNameLength: 20,\n\n  buildEdge(rootNode: ElementDefinition, newNode: ElementDefinition, properties?: Record<string, unknown>) {\n    return {\n      data: {\n        id: `${rootNode.data.id}/${newNode.data.id}`,\n        source: rootNode.data.id,\n        target: newNode.data.id,\n        ...properties,\n      },\n    }\n  },\n\n  async buildElements(mod: ModuleInstance): Promise<ElementDefinition[]> {\n    const info = await CytoscapeElements.recurseNodes(mod)\n    const newElements: ElementDefinition[] = await this.buildElementsFromInfo(info, undefined, ['activeNode'])\n\n    return newElements\n  },\n\n  async buildElementsFromInfo(info: ModuleInfo, root?: ElementDefinition, classes: string[] = []): Promise<ElementDefinition[]> {\n    const newNode = CytoscapeElements.buildNode(info.mod, { childCount: info.children.length, depth: info.depth }, classes)\n    const newEdge = root\n      ? CytoscapeElements.buildEdge(root, newNode, { depth: info.depth, siblingCount: info.children.length })\n      : undefined\n    const newElements: ElementDefinition[] = [newNode]\n    if (newEdge) {\n      newElements.push(newEdge)\n    }\n\n    for (const childInfo of info.children) {\n      newElements.push(...(await this.buildElementsFromInfo(childInfo, newNode)))\n    }\n\n    return newElements\n  },\n\n  buildNode(mod: ModuleInstance, properties?: Record<string, unknown>, classes?: string[]): ElementDefinition {\n    const { address, id } = mod\n    return {\n      classes,\n      data: {\n        address,\n        id: address,\n        name: id,\n        type: parseModuleType(mod),\n        ...properties,\n      },\n    }\n  },\n\n  buildRootNode: (mod: ModuleInstance): ElementDefinition => {\n    return CytoscapeElements.buildNode(mod, {}, ['activeNode'])\n  },\n\n  normalizeName(name?: string) {\n    if (isFalsy(name)) return\n    if (name.length > this.MaxNameLength) return `${name.slice(0, 20)}...`\n    return name\n  },\n\n  async recurseNodes(root: ModuleInstance, maxDepth = 10, depth = 1): Promise<ModuleInfo> {\n    const info: ModuleInfo = {\n      children: [], depth, mod: root,\n    }\n\n    if (maxDepth > 0) {\n      const children = await root.resolve('*', { direction: 'down', maxDepth: 1 })\n      info.children = (\n        await Promise.all(\n          children.map(async (child) => {\n            // don't re add the root module that was passed in\n            if (child.address !== root.address) {\n              return await this.recurseNodes(child, maxDepth - 1, depth + 1)\n            }\n          }),\n        )\n      ).filter(exists)\n    }\n\n    return info\n  },\n}\n","import { isDefined } from '@xylabs/sdk-js'\nimport type { ReactElement } from 'react'\nimport { renderToStaticMarkup } from 'react-dom/server'\n\nconst dataUri = 'data:image/svg+xml,'\n\nexport const encodeSvg = (reactElement: ReactElement, color?: string) => {\n  const svgString = renderToStaticMarkup(reactElement)\n\n  const doc = new DOMParser().parseFromString(svgString, 'text/html')\n  const svgElement = doc.querySelectorAll('svg')[0]\n  if (isDefined(svgElement)) {\n    svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg')\n    svgElement.setAttribute('height', '100')\n    svgElement.style.fill = color ?? 'black'\n  }\n\n  return `${dataUri}${globalThis.encodeURIComponent(svgElement.outerHTML)}`\n}\n","import type { CyNodeModuleTypes } from './CyNodeModuleTypes.ts'\n\nexport const generateIconMap: () => Record<CyNodeModuleTypes, string> = () => ({\n  archivist: '',\n  bridge: '',\n  diviner: '',\n\n  module: '',\n  node: '',\n  sentinel: '',\n  witness: '',\n})\n","export const ColaLayout = {\n  centerGraph: false,\n  convergenceThreshold: 0.01,\n  name: 'cola',\n}\n","import type { LayoutOptions } from 'cytoscape'\n\nexport const ConcentricLayout: LayoutOptions = {\n  concentric: function (node) {\n    return node.degree(false)\n  },\n  levelWidth: function () {\n    return 2\n  },\n  minNodeSpacing: 75,\n  name: 'concentric',\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessModule } from '@xyo-network/witness-model'\n\nimport type { CyNodeModuleTypes } from './CyNodeModuleTypes.ts'\n\nexport const parseModuleType = (mod?: ModuleInstance): CyNodeModuleTypes => {\n  let type: CyNodeModuleTypes = 'module'\n  if (mod) {\n    if (isArchivistInstance(mod)) {\n      type = 'archivist'\n    } else if (isBridgeInstance(mod)) {\n      type = 'bridge'\n    } else if (isDivinerInstance(mod)) {\n      type = 'diviner'\n    } else if (isNodeInstance(mod)) {\n      type = 'node'\n    } else if (isSentinelInstance(mod)) {\n      type = 'sentinel'\n    } else if (isWitnessModule(mod)) {\n      type = 'witness'\n    }\n  }\n  return type\n}\n","import type { SvgIconComponent } from '@mui/icons-material'\nimport {\n  BubbleChartRounded as BubbleChartRoundedIcon,\n  Hub as HubIcon,\n  InsertLinkRounded as InsertLinkRoundedIcon,\n  Inventory2Rounded as Inventory2RoundedIcon,\n  QuestionMarkRounded as QuestionMarkRoundedIcon,\n  TimerRounded as TimerRoundedIcon,\n  VisibilityRounded as VisibilityRoundedIcon,\n} from '@mui/icons-material'\n\nimport type { CyNodeModuleTypes } from './lib/index.ts'\n\nexport const CyIconSet: Record<CyNodeModuleTypes, SvgIconComponent> = {\n  archivist: Inventory2RoundedIcon,\n  bridge: InsertLinkRoundedIcon,\n  diviner: BubbleChartRoundedIcon,\n\n  module: QuestionMarkRoundedIcon,\n  node: HubIcon,\n  sentinel: TimerRoundedIcon,\n  witness: VisibilityRoundedIcon,\n}\n","import type { StylesheetCSS } from 'cytoscape'\n\nimport type { CyNodeModuleTypes } from './lib/index.ts'\n\nexport const NodeWithName = (color?: string, outlineColor?: string): StylesheetCSS => ({\n  selector: 'node[name]',\n  css: {\n    color,\n    'font-family': 'Lexend Deca, Helvetica, sans-serif',\n    'font-size': 12,\n    'overlay-padding': '6px',\n    'text-halign': 'center',\n    'text-outline-color': outlineColor,\n    'text-outline-width': '1px',\n    'text-valign': 'top',\n  },\n})\n\nexport const Node = (icons: Record<CyNodeModuleTypes, string>, bgColor?: string, hideLabels = false): StylesheetCSS => ({\n  selector: 'node',\n  css: {\n    'background-color': bgColor,\n    'background-height': '75%',\n    'background-image': elem => icons[elem.data('type') as CyNodeModuleTypes],\n    'background-width': '24',\n    'label': hideLabels ? undefined : 'data(name)',\n    'shape': 'round-rectangle',\n  },\n})\n\nexport const NodeAsRoot = (bgColor?: string): StylesheetCSS => ({\n  selector: '.activeNode',\n  css: { 'background-color': bgColor },\n})\n\nexport const EdgeStyled = (lineColor?: string, targetArrowColor?: string): StylesheetCSS => ({\n  selector: 'edge',\n  css: {\n    'curve-style': 'bezier',\n    'line-color': lineColor,\n    'line-opacity': 0.1,\n    'target-arrow-color': targetArrowColor,\n    'target-arrow-shape': 'triangle',\n    'width': 3,\n  },\n})\n","import type { NodeCollection, NodeSingular } from 'cytoscape'\nimport type { Dispatch, SetStateAction } from 'react'\nimport {\n  useCallback, useEffect, useState,\n} from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts/index.ts'\n\nexport const useHoveredNode = (renderedElements?: NodeCollection): [NodeSingular | undefined, Dispatch<SetStateAction<NodeSingular | undefined>>] => {\n  const { cy } = useCytoscapeInstance(true)\n  const [hoveredNode, setHoveredNode] = useState<NodeSingular>()\n\n  const nodeListener = useCallback((node: NodeSingular) => {\n    node.on('mouseover tap', () => {\n      setHoveredNode(node)\n    })\n  }, [])\n\n  useEffect(() => {\n    if (renderedElements) {\n      // eslint-disable-next-line unicorn/no-array-for-each\n      renderedElements.nodes().forEach(nodeListener)\n    }\n  }, [nodeListener, renderedElements])\n\n  useEffect(() => {\n    cy?.deref()?.ready(() => {\n      // eslint-disable-next-line unicorn/no-array-for-each\n      cy?.deref()?.nodes().forEach(nodeListener)\n    })\n  }, [cy, nodeListener])\n\n  return [hoveredNode, setHoveredNode]\n}\n","import { useWeakModuleFromNode } from '@xyo-network/react-node'\nimport type { NodeSingular } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { useCytoscapeElements } from './useCytoscapeElements.ts'\n\nexport const useNewElements = (selectedElement?: NodeSingular) => {\n  const selectedAddress = useMemo(() => {\n    const { address: selectedAddress } = selectedElement?.data() ?? {}\n    return selectedAddress\n  }, [selectedElement])\n\n  const [mod] = useWeakModuleFromNode(selectedAddress)\n  const newElements = useCytoscapeElements(mod)\n\n  return newElements\n}\n","import type { ElementDefinition } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts/index.ts'\nimport { ColaLayout } from '../../../Cytoscape/index.ts'\n\nexport const useRenderNewElements = (newElements: ElementDefinition[] = [], _hideLabels?: boolean) => {\n  const { cy } = useCytoscapeInstance(true)\n\n  return useMemo(() => {\n    if (newElements.length > 1) {\n      const renderedElements = cy?.deref()?.add(newElements)\n      cy?.deref()?.layout(ColaLayout).run()\n      return renderedElements\n    }\n  }, [cy, newElements])\n}\n","import type { NodeSingular } from 'cytoscape'\nimport { useState } from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts/index.ts'\n\nexport const useSelectedElement = () => {\n  const [selectedElement, setSelectedElement] = useState<NodeSingular>()\n  const { cy } = useCytoscapeInstance(true)\n\n  const updateStyles = (element: NodeSingular) => {\n    const nodes = cy?.deref()?.nodes()\n    nodes?.toggleClass('activeNode', false)\n    element.toggleClass('activeNode', true)\n  }\n\n  const toggleSelectedElement = (address?: string) => {\n    const selectedNode = cy?.deref()?.nodes(`[id=\"${address}\"]`)?.[0]\n    if (selectedNode) {\n      setSelectedElement(selectedNode)\n      updateStyles(selectedNode)\n    }\n  }\n\n  return { selectedElement, toggleSelectedElement }\n}\n","import { useHoveredNode } from './useHoveredNode.tsx'\nimport { useNewElements } from './useNewElements.tsx'\nimport { useRenderNewElements } from './useRenderNewElements.tsx'\nimport { useSelectedElement } from './useSelectedElement.tsx'\n\nexport const useElements = (hideLabels: boolean) => {\n  const { selectedElement, toggleSelectedElement } = useSelectedElement()\n  const newElements = useNewElements(selectedElement)\n  const renderedElements = useRenderNewElements(newElements, hideLabels)\n  const [hoveredNode, setHoveredNode] = useHoveredNode(renderedElements)\n\n  return {\n    hoveredNode, setHoveredNode, toggleSelectedElement,\n  }\n}\n","import { isDefined } from '@xylabs/sdk-js'\nimport type { CytoscapeOptions } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { ConcentricLayout } from '../../Cytoscape/index.ts'\nimport { useCytoscapeStyle } from './useCytoscapeStyle.tsx'\n\nexport const useCytoscapeOptions = (\n  elements: CytoscapeOptions['elements'],\n  style?: CytoscapeOptions['style'],\n  layout?: CytoscapeOptions['layout'],\n) => {\n  const defaultStyle = useCytoscapeStyle()\n\n  const resolvedLayout = layout ?? ConcentricLayout\n  const resolvedStyle = style ?? defaultStyle\n\n  const options = useMemo<CytoscapeOptions | undefined>(() => {\n    if (elements && isDefined(resolvedLayout) && isDefined(resolvedStyle)) {\n      return {\n        elements,\n        layout: resolvedLayout,\n        style: resolvedStyle,\n      }\n    }\n  }, [elements, resolvedLayout, resolvedStyle])\n\n  return options\n}\n","import { useTheme } from '@mui/material'\nimport { useIsDark } from '@xylabs/react-theme'\nimport type { CytoscapeOptions } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport {\n  EdgeStyled, Node, NodeAsRoot, NodeWithName,\n} from '../../Cytoscape/index.ts'\nimport { useIcons } from './useIcons.tsx'\n\nexport const useCytoscapeStyle = (hideLabels = false) => {\n  const theme = useTheme()\n  const dark = useIsDark()\n  const icons = useIcons()\n\n  const style: CytoscapeOptions['style'] = useMemo(\n    // eslint-disable-next-line complexity\n    () => [\n      Node(icons, dark ? theme.colorSchemes.dark?.palette.primary.main : theme.colorSchemes.light?.palette.primary.main, hideLabels),\n      NodeWithName(\n        dark ? theme.colorSchemes.dark?.palette.primary.contrastText : theme.colorSchemes.light?.palette.primary.contrastText,\n        dark ? theme.colorSchemes.dark?.palette.text.primary : theme.colorSchemes.light?.palette.text.primary,\n      ),\n      NodeAsRoot(dark ? theme.colorSchemes.dark?.palette.secondary.main : theme.colorSchemes.light?.palette.secondary.main),\n      EdgeStyled(\n        dark ? theme.colorSchemes.dark?.palette.divider : theme.colorSchemes.light?.palette.divider,\n        dark ? theme.colorSchemes.dark?.palette.divider : theme.colorSchemes.light?.palette.divider,\n      ),\n    ],\n    [icons, hideLabels, theme, dark],\n  )\n\n  return style\n}\n","import { useTheme } from '@mui/material'\nimport React, { useMemo } from 'react'\n\nimport type { CyNodeModuleTypes } from '../../Cytoscape/index.ts'\nimport {\n  CyIconSet, encodeSvg, generateIconMap,\n} from '../../Cytoscape/index.ts'\n\nexport const useIcons = () => {\n  const theme = useTheme()\n  const icons = useMemo(() => {\n    const iconMap = generateIconMap()\n    // eslint-disable-next-line unicorn/no-array-reduce\n    return Object.entries(CyIconSet).reduce((acc, [name, IconComponent]) => {\n      const icon = <IconComponent fontSize=\"small\" />\n      acc[name as CyNodeModuleTypes] = encodeSvg(icon, theme.vars.palette.primary.contrastText)\n      return acc\n    }, iconMap)\n  }, [theme.vars.palette.primary.contrastText])\n\n  return icons\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport {\n  isDefined, isDefinedNotNull, isTruthy,\n} from '@xylabs/sdk-js'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport {\n  useCallback, useEffect, useState,\n} from 'react'\n\nimport { useCytoscapeInstance } from '../../contexts/index.ts'\n\nexport const useModuleDetails = (rootModule?: WeakRef<ModuleInstance> | null, onFoundModule?: () => void) => {\n  const { cy } = useCytoscapeInstance()\n  const [moduleAddress, setModuleAddress] = useState<string | null>()\n\n  const [foundModule] = usePromise(async () => {\n    if (moduleAddress === null) return null\n    const rootModuleInstance = rootModule?.deref()\n    if (isDefined(moduleAddress) && isDefined(rootModuleInstance)) {\n      const foundModule = await rootModuleInstance.resolve(moduleAddress)\n      return foundModule ?? null\n    }\n  }, [moduleAddress, rootModule])\n\n  const createObserver = useCallback(() => {\n    return new ResizeObserver(() => {\n      if (moduleAddress === null) {\n        // cytoscape tries to center prematurely without it :(\n        setTimeout(() => {\n          cy?.deref()?.center()\n        }, 100)\n      } else if (foundModule && cy) {\n        const node = cy?.deref()?.nodes(`[id=\"${moduleAddress}\"]`)?.[0]\n        // cy.pan(newPan)\n        // cytoscape tries to center prematurely without it :(\n        setTimeout(() => {\n          cy?.deref()?.center(node)\n        }, 100)\n      }\n    })\n  }, [cy, moduleAddress, foundModule])\n\n  useEffect(() => {\n    const resizeObserver = createObserver()\n\n    const container = cy?.deref()?.container()\n    if (container) {\n      resizeObserver.observe(container)\n    }\n\n    return () => {\n      if (container) resizeObserver.unobserve(container)\n    }\n  }, [cy, moduleAddress, foundModule, rootModule, createObserver])\n\n  useEffect(() => {\n    if (foundModule) {\n      onFoundModule?.()\n    }\n  }, [cy, moduleAddress, foundModule, onFoundModule, createObserver])\n\n  // eslint-disable-next-line complexity\n  const onModuleDetails = (address?: string | null) => {\n    const moduleNode = cy?.deref()?.nodes(`[id=\"${address}\"]`)\n    const rootModuleNode = cy?.deref()?.nodes(`[id=\"${rootModule?.deref()?.address}\"]`)\n    const foundModuleNode = cy?.deref()?.nodes(`[id=\"${foundModule?.address}\"]`)\n    const notModuleNode = cy?.deref()?.nodes(`[id != \"${address}\"]`)\n\n    if (isTruthy(address)) {\n      // address was passed so we set the node to active styles\n      moduleNode?.toggleClass('activeNode', true)\n      notModuleNode?.toggleClass('activeNode', false)\n    } else {\n      // no address was passes so we reset the state\n      notModuleNode?.toggleClass('activeNode', false)\n      const activeNode = isDefinedNotNull(foundModuleNode) && foundModuleNode.length > 0 ? foundModuleNode : rootModuleNode\n      activeNode?.toggleClass('activeNode', true)\n    }\n    setModuleAddress(address)\n  }\n\n  return { mod: foundModule, onModuleDetails }\n}\n","import type { ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ConcentricLayout } from '../../Cytoscape/index.ts'\nimport { useCytoscapeElements } from './elements/index.ts'\nimport { useCytoscapeOptions } from './useCytoscapeOptions.ts'\nimport { useCytoscapeStyle } from './useCytoscapeStyle.tsx'\n\nexport const useRelationalGraphOptions = (mod?: WeakRef<ModuleInstance>) => {\n  const [hideLabels, setHideLabels] = useState(true)\n\n  const handleToggleLabels = () => {\n    setHideLabels(oldValue => !oldValue)\n  }\n\n  const elements = useCytoscapeElements(mod)\n  const style = useCytoscapeStyle(hideLabels)\n  const options = useCytoscapeOptions(elements, style, ConcentricLayout)\n\n  return {\n    handleToggleLabels, hideLabels, options,\n  }\n}\n","import cytoscape from 'cytoscape'\nimport cola from 'cytoscape-cola'\nimport coseBilkent from 'cytoscape-cose-bilkent'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo } from 'react'\n\nexport const WithExtensions: React.FC<PropsWithChildren> = ({ children }) => {\n  // eslint-disable-next-line react-x/no-unnecessary-use-memo\n  const initialized = useMemo(() => {\n    cytoscape.use(cola)\n    cytoscape.use(coseBilkent)\n    return true\n  }, [])\n\n  return <>{initialized ? children : undefined}</>\n}\n","import type { CardProps } from '@mui/material'\nimport {\n  Box, Button, ButtonGroup, Card, CardHeader, Paper, useTheme,\n} from '@mui/material'\nimport {\n  FlexCol, FlexGrowRow, FlexRow,\n} from '@xylabs/react-flexbox'\nimport { Identicon } from '@xylabs/react-identicon'\nimport type { Address } from '@xylabs/sdk-js'\nimport { asAddress, isDefined } from '@xylabs/sdk-js'\nimport { useWeakModuleFromNode } from '@xyo-network/react-node'\nimport type {\n  Core, EventHandler, NodeSingular,\n} from 'cytoscape'\nimport cytoscape from 'cytoscape'\nimport cola from 'cytoscape-cola'\nimport coseBilkentLayout from 'cytoscape-cose-bilkent'\nimport dagre from 'cytoscape-dagre'\nimport euler from 'cytoscape-euler'\nimport React, {\n  useEffect, useLayoutEffect, useRef, useState,\n} from 'react'\n\nimport type { NodeRelationalGraphProps } from '../../lib/index.ts'\n\nconst applyLayout = (cy?: cytoscape.Core, name = 'cola', options?: object) => {\n  cy?.layout({ name, ...options }).run()\n}\n\nconst loadLayout = (layout = 'cola') => {\n  switch (layout) {\n    case 'cose-bilkent': {\n      cytoscape.use(coseBilkentLayout)\n      break\n    }\n    case 'cola': {\n      cytoscape.use(cola)\n      break\n    }\n    case 'euler': {\n      cytoscape.use(euler)\n      break\n    }\n    case 'dagre': {\n      cytoscape.use(dagre)\n      break\n    }\n    default: {\n      cytoscape.use(euler)\n      break\n    }\n  }\n}\n\ntype ModuleHoverDetailsProps = CardProps & {\n  address: Address\n  name: string\n}\n\nconst ModuleHoverDetails: React.FC<ModuleHoverDetailsProps> = ({\n  name, address, ...props\n}) => {\n  return (\n    <Card elevation={3} {...props}>\n      <CardHeader\n        avatar={(\n          <Paper\n            elevation={6}\n            sx={{ bgcolor: '#fff', p: 1 }}\n          >\n            <Identicon value={address} size={24} />\n          </Paper>\n        )}\n        title={name}\n        subheader={address}\n      />\n    </Card>\n  )\n}\n\nexport const NodeRelationalGraphFlexBox: React.FC<NodeRelationalGraphProps> = ({\n  actions, children, node, layout, layoutOptions, showDetails, detail, options, onHover, ...props\n}) => {\n  const theme = useTheme()\n  const [cy, setCy] = useState<Core>()\n  const cytoscapeRef = useRef<HTMLDivElement>(null)\n  const [hoverBoundingBox, setHoverBoundingBox] = useState<{ x1: number; x2: number; y1: number; y2: number }>()\n  const [hoverAddress, setHoverAddress] = useState<Address>()\n\n  const [moduleInstance] = useWeakModuleFromNode(hoverAddress, { node })\n\n  useEffect(() => {\n    const listener: EventHandler = ({ target }) => {\n      const cyNode = target as NodeSingular\n      const bb = cyNode?.renderedBoundingBox?.()\n      setHoverBoundingBox(bb)\n      const id = cyNode.id?.()\n      if (isDefined(id)) {\n        if (id.includes('/')) {\n          setHoverAddress(undefined)\n          onHover?.()\n        } else {\n          setHoverAddress(asAddress(id))\n          onHover?.(asAddress(id))\n        }\n      }\n    }\n    cy?.on('mouseover tap', listener)\n\n    return () => {\n      cy?.off('mouseover tap', listener)\n    }\n  }, [onHover, cy])\n\n  const handleReset = () => {\n    cy?.reset()\n    applyLayout(cy, layout ?? 'euler', layoutOptions)\n  }\n\n  useLayoutEffect(() => {\n    let newCy: Core | undefined\n    const container = cytoscapeRef.current\n    if (container) {\n      newCy = cytoscape({\n        container,\n        ...options,\n      })\n      // eslint-disable-next-line react-x/set-state-in-effect\n      setCy(newCy)\n    } else {\n      newCy?.destroy()\n      // eslint-disable-next-line react-x/set-state-in-effect\n      setCy(undefined)\n    }\n    return () => {\n      newCy?.destroy()\n      setCy(undefined)\n    }\n  }, [options, cytoscapeRef, layoutOptions])\n\n  useEffect(() => {\n    if (cy) {\n      loadLayout(layout)\n      applyLayout(cy, layout ?? 'cola', layoutOptions)\n    }\n  }, [cy, layoutOptions, layout])\n\n  return (\n    <FlexCol id=\"relational-graph-wrapper\" {...props}>\n      {hoverAddress && hoverBoundingBox\n        ? (\n            <Box position=\"absolute\" top={hoverBoundingBox.y1} left={hoverBoundingBox.x1} zIndex={100}>\n              <ModuleHoverDetails address={hoverAddress} name={moduleInstance?.deref()?.id ?? 'Unknown'} />\n            </Box>\n          )\n        : null}\n      <FlexRow justifyContent=\"start\" width=\"100%\">\n        {actions === null\n          ? null\n          : isDefined(actions)\n            ? (\n                <ButtonGroup>\n                  {actions}\n                  <Button size=\"small\" variant=\"contained\" onClick={handleReset}>\n                    Reset View\n                  </Button>\n                </ButtonGroup>\n              )\n            : (\n                <Button size=\"small\" variant=\"contained\" onClick={handleReset}>\n                  Reset\n                </Button>\n              )}\n      </FlexRow>\n      <FlexGrowRow width=\"100%\" alignItems=\"start\">\n        {showDetails\n          ? (\n              <FlexCol height=\"100%\" width=\"85%\">\n                {detail}\n              </FlexCol>\n            )\n          : null}\n        <FlexCol\n          justifyContent=\"start\"\n          classes=\"cytoscape-wrap\"\n          width={showDetails ? '15%' : '100%'}\n          height={showDetails ? '50%' : '100%'}\n          border={showDetails ? `1px solid ${theme.vars.palette.divider}` : undefined}\n        >\n          {/* Cytoscape Element */}\n          <FlexCol alignItems=\"stretch\" position=\"absolute\" width=\"100%\" height=\"100%\" ref={cytoscapeRef} />\n          {children}\n        </FlexCol>\n      </FlexGrowRow>\n    </FlexCol>\n  )\n}\n\nNodeRelationalGraphFlexBox.displayName = 'NodeRelationalGraph'\n\n/** @deprecated */\nexport const NodeRelationalGraph = NodeRelationalGraphFlexBox\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { useWeakProvidedNode } from '@xyo-network/react-node'\nimport React from 'react'\n\nimport { useCytoscapeElements, useCytoscapeOptions } from '../../../hooks/index.ts'\nimport type { NodeRelationalGraphProps } from '../../lib/index.ts'\nimport { NodeRelationalGraphFlexBox } from './Graph.tsx'\n\nexport interface ProvidedNodeRendererProps extends NodeRelationalGraphProps {\n  account?: AccountInstance\n  layout?: 'dagre' | 'euler' | 'cose-bilkent' | 'cola'\n  layoutOptions?: object\n  node?: WeakRef<NodeInstance>\n}\n\nexport const ProvidedNodeRenderer: React.FC<ProvidedNodeRendererProps> = ({ node, ...props }) => {\n  const [providedNode] = useWeakProvidedNode()\n  const elements = useCytoscapeElements(node ?? providedNode)\n  const options = useCytoscapeOptions(elements)\n\n  return <NodeRelationalGraphFlexBox alignItems=\"stretch\" flexGrow={1} height=\"100%\" options={options} {...props} />\n}\n","import { CancelRounded } from '@mui/icons-material'\nimport { IconButton } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nexport interface DetailsFlexboxProps extends FlexBoxProps {\n  onClose?: () => void\n}\n\nexport const DetailsFlexbox: React.FC<DetailsFlexboxProps> = ({ children, onClose }) => {\n  return (\n    <FlexGrowCol alignItems=\"end\" justifyContent=\"start\" id=\"module-detail\" width=\"100%\" p={2} gap={2}>\n      <FlexRow justifyContent=\"end\">\n        <IconButton onClick={onClose} size=\"small\">\n          <CancelRounded />\n        </IconButton>\n      </FlexRow>\n      {children}\n    </FlexGrowCol>\n  )\n}\n","import type { PopperProps } from '@mui/material'\nimport { styled } from '@mui/material'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { NodeSingular } from 'cytoscape'\nimport type { ReactElement } from 'react'\nimport React from 'react'\n\nimport { useNodeElement } from './hooks/index.ts'\n\nexport interface ModuleHoverProps {\n  children?: (anchorElement?: PopperProps['anchorEl'], container?: PopperProps['container']) => ReactElement\n  node?: NodeSingular\n}\n\nexport const ModuleGraphNodeHover: React.FC<ModuleHoverProps> = ({ children, node }) => {\n  const {\n    boundingBox, ref, currentElement,\n  } = useNodeElement(node)\n\n  return (\n    <>\n      <StyledNodeGhostElementFlexCol ref={ref} left={boundingBox?.x1} height={boundingBox?.h} top={boundingBox?.y1} width={boundingBox?.w} />\n      {node\n        ? <>{children?.(currentElement)}</>\n        : null}\n    </>\n  )\n}\n\nconst StyledNodeGhostElementFlexCol = styled(FlexCol, { name: 'StyledNodeGhostElementFlexCol' })(() => ({\n  // For easier debugging of the 'ghost' element that matches the hovered cytoscape node\n  // backgroundColor: '#fff',\n  // opacity: 0.25,\n\n  cursor: 'pointer',\n  pointerEvents: 'none',\n  position: 'absolute',\n}))\n","import type { PopperProps } from '@mui/material'\nimport type { NodeSingular } from 'cytoscape'\nimport type { RefObject } from 'react'\nimport {\n  useEffect, useLayoutEffect, useRef, useState,\n} from 'react'\n\nexport interface UseNodeElementResult {\n  boundingBox: ReturnType<NodeSingular['renderedBoundingBox']> | undefined\n  currentElement: PopperProps['anchorEl'] | null\n  ref: RefObject<HTMLDivElement | null>\n}\n\nexport const useNodeElement = (node?: NodeSingular): UseNodeElementResult => {\n  const ref = useRef<HTMLDivElement>(null)\n  const [currentElement, setCurrentElement] = useState<PopperProps['anchorEl'] | null>(null)\n  const [boundingBox, setBoundingBox] = useState(node?.renderedBoundingBox())\n\n  // Ensure first render clears the previous element when node changes to avoid flicker\n  useLayoutEffect(() => {\n    // eslint-disable-next-line react-x/set-state-in-effect, react-hooks/set-state-in-effect\n    setCurrentElement(null)\n    // eslint-disable-next-line react-x/set-state-in-effect\n    setBoundingBox(node?.renderedBoundingBox())\n  }, [node])\n\n  useEffect(() => {\n    const listener = () => {\n      setBoundingBox(node?.renderedBoundingBox())\n    }\n\n    node?.on('position', listener)\n\n    return () => {\n      node?.off('position', undefined, listener)\n    }\n  }, [node])\n\n  // Once boundingBox state is set and applied to the layout, update the ref\n  useLayoutEffect(() => {\n    setCurrentElement(ref.current)\n  }, [boundingBox])\n\n  return {\n    boundingBox, currentElement, ref,\n  }\n}\n","import { CancelRounded } from '@mui/icons-material'\nimport type { PopperProps } from '@mui/material'\nimport {\n  Button, Card, CardActions, CardHeader, IconButton, Paper, Popper, styled,\n} from '@mui/material'\nimport { Identicon } from '@xylabs/react-identicon'\nimport type { NodeSingular } from 'cytoscape'\nimport React from 'react'\n\nexport interface ModuleHoverPopperProps extends PopperProps {\n  node?: NodeSingular\n  onClose?: () => void\n  onModuleDetails?: (address?: string) => void\n  onModuleExplore?: (address?: string) => void\n}\n\nexport const ModuleHoverPopper: React.FC<ModuleHoverPopperProps> = ({\n  anchorEl, onClose, onModuleDetails, onModuleExplore, node, ...props\n}) => {\n  const { address, name } = node?.data() ?? {}\n  return (\n    <>\n      {anchorEl\n        ? (\n            <Popper anchorEl={anchorEl} {...props}>\n              <Card elevation={3}>\n                <CardHeader\n                  action={\n                    onClose\n                      ? (\n                          <IconButton size=\"small\" onClick={onClose}>\n                            <CancelRounded />\n                          </IconButton>\n                        )\n                      : null\n                  }\n                  avatar={(\n                    <Paper\n                      elevation={6}\n                      sx={{ bgcolor: '#fff', p: 1 }}\n                    >\n                      <Identicon value={address} size={24} />\n                    </Paper>\n                  )}\n                  title={name}\n                  subheader={address}\n                />\n                <StyledCardActions>\n                  {onModuleDetails\n                    ? (\n                        <Button onClick={() => onModuleDetails?.(address)} size=\"small\" variant=\"contained\">\n                          Details\n                        </Button>\n                      )\n                    : null}\n                  {onModuleExplore\n                    ? (\n                        <Button onClick={() => onModuleExplore?.(address)} size=\"small\" variant=\"contained\">\n                          Explore\n                        </Button>\n                      )\n                    : null}\n                </StyledCardActions>\n              </Card>\n            </Popper>\n          )\n        : null}\n    </>\n  )\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const StyledModuleHoverPopper: React.FC<ModuleHoverPopperProps> = styled(ModuleHoverPopper, { name: 'StyledComponents' })(() => ({ zIndex: 2 }))\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const StyledCardActions: React.FC<React.ComponentProps<typeof CardActions>> = styled(CardActions, { name: 'StyledCardActions' })(() => ({\n  display: 'flex',\n  justifyContent: 'center',\n}))\n"],"mappings":"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","names":["Button","useRef","jsx","isNodeInstance","useState","isArchivistInstance","isDivinerInstance","useState","isNodeInstance","useEffect","useState","useState","useEffect","useMemo","useMemo","selectedAddress","useMemo","useMemo","useState","useState","isDefined","useMemo","useTheme","useMemo","useMemo","jsx","useMemo","useTheme","useMemo","useMemo","isDefined","isDefined","useCallback","useEffect","useState","useState","isDefined","foundModule","useCallback","useEffect","useState","useState","useMemo","jsx","useTheme","isDefined","useWeakModuleFromNode","cytoscape","cola","useEffect","useState","jsx","jsx","FlexRow","jsx","jsxs","FlexCol","useEffect","useLayoutEffect","useRef","useState","Fragment","jsx","jsxs","FlexCol","CancelRounded","Button","Card","CardHeader","IconButton","Paper","styled","Identicon","Fragment","jsx","jsxs","jsx","useRef","Button"]}