{
  "version": 3,
  "sources": ["../../src/modules/node-provider/MemoryProvider.tsx", "../../src/modules/node-provider/Node/Provider.tsx", "../../src/modules/node-provider/NodeDrawerContext/Provider.tsx", "../../src/modules/node-provider/NodeDrawerContext/use.ts"],
  "sourcesContent": ["import { forget } from '@ariestools/sdk'\nimport { useAsyncEffect } from '@ariestools/sdk-react/async-effect'\nimport type {\n  AttachableModuleInstance, ModuleParams, NodeConfig,\n} from '@xyo-network/sdk'\nimport { MemoryNode } from '@xyo-network/sdk'\nimport type { PropsWithChildren } from 'react'\nimport React, { useState } from 'react'\n\nimport { NodeProvider } from './Node/index.ts'\n\n/** Props for {@link MemoryNodeProvider}. */\nexport type MemoryNodeProviderProps = PropsWithChildren<{\n  moduleParams?: ModuleParams<NodeConfig>\n  modules?: AttachableModuleInstance[]\n  required?: boolean\n}>\n& ModuleParams<NodeConfig>\n\n/** Creates an in-memory XYO node, registers modules, and provides it via context. */\nexport const MemoryNodeProvider: React.FC<MemoryNodeProviderProps> = ({\n  children, modules, moduleParams,\n}) => {\n  const [node, setNode] = useState<MemoryNode | null>(null)\n\n  useAsyncEffect(\n\n    async () => {\n      if (node && modules) {\n        await Promise.all(\n          modules.map(async (mod) => {\n            await node.register(mod)\n          }),\n        )\n        return () => {\n          forget(\n            Promise.all(\n              modules.map(async (mod) => {\n                await node.unregister(mod)\n              }),\n            ),\n          )\n        }\n      }\n    },\n    [modules, node],\n  )\n\n  useAsyncEffect(\n\n    async (mounted) => {\n      const node = await MemoryNode.create(moduleParams ?? {})\n      if (mounted()) {\n        setNode(node)\n      }\n    },\n    [moduleParams],\n  )\n\n  return <NodeProvider node={node}>{children}</NodeProvider>\n}\n", "import type { NodeInstance } from '@xyo-network/sdk'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo } from 'react'\n\nimport type { NodeContextState } from '#node-context'\nimport { NodeContext } from '#node-context'\n\n/** Props for {@link NodeProvider}. */\nexport interface NodeProviderProps {\n  node?: NodeInstance | null\n}\n\n/** Provides an XYO node instance to descendants via {@link NodeContext}. */\nexport const NodeProvider: React.FC<PropsWithChildren<NodeProviderProps>> = ({ node, children }) => {\n  // save a reference to it\n  const memoNode = useMemo(() => node, [node])\n\n  const value: NodeContextState = useMemo(() => ({ node: memoNode, provided: true }), [memoNode])\n\n  return (\n    <NodeContext value={value}>\n      {children}\n    </NodeContext>\n  )\n}\n", "import type { PropsWithChildren } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport type { NodeDrawerState } from '#node-context'\nimport { NodeDrawerContext } from '#node-context'\n\n/** Props for {@link NodeDrawerProvider}. */\nexport interface NodeDrawerProviderProps extends PropsWithChildren {\n  defaultOpen?: boolean\n}\n\n/** Provides open/closed state for the node drawer UI. */\nexport const NodeDrawerProvider: React.FC<NodeDrawerProviderProps> = ({ children, defaultOpen = false }) => {\n  const [open, setOpen] = useState(() => defaultOpen)\n\n  const value: NodeDrawerState = useMemo(() => ({\n    open, provided: true, setOpen,\n  }), [open])\n\n  return (\n    <NodeDrawerContext value={value}>\n      {children}\n    </NodeDrawerContext>\n  )\n}\n", "import { useContextEx } from '@ariestools/sdk-react/shared'\n\nimport type { NodeDrawerState } from '#node-context'\nimport { NodeDrawerContext } from '#node-context'\n\n/** Consumes the node drawer context for open state and setter. */\nexport const useNodeDrawer = (required = true) => useContextEx<NodeDrawerState>(NodeDrawerContext, 'NodeDrawer', required)\n"],
  "mappings": ";AAAA,SAAS,cAAc;AACvB,SAAS,sBAAsB;AAI/B,SAAS,kBAAkB;AAE3B,SAAgB,gBAAgB;;;ACLhC,SAAgB,eAAe;AAG/B,SAAS,mBAAmB;AAexB;AAPG,IAAM,eAA+D,CAAC,EAAE,MAAM,SAAS,MAAM;AAElG,QAAM,WAAW,QAAQ,MAAM,MAAM,CAAC,IAAI,CAAC;AAE3C,QAAM,QAA0B,QAAQ,OAAO,EAAE,MAAM,UAAU,UAAU,KAAK,IAAI,CAAC,QAAQ,CAAC;AAE9F,SACE,oBAAC,eAAY,OACV,UACH;AAEJ;;;ADmCS,gBAAAA,YAAA;AAvCF,IAAM,qBAAwD,CAAC;AAAA,EACpE;AAAA,EAAU;AAAA,EAAS;AACrB,MAAM;AACJ,QAAM,CAAC,MAAM,OAAO,IAAI,SAA4B,IAAI;AAExD;AAAA,IAEE,YAAY;AACV,UAAI,QAAQ,SAAS;AACnB,cAAM,QAAQ;AAAA,UACZ,QAAQ,IAAI,OAAO,QAAQ;AACzB,kBAAM,KAAK,SAAS,GAAG;AAAA,UACzB,CAAC;AAAA,QACH;AACA,eAAO,MAAM;AACX;AAAA,YACE,QAAQ;AAAA,cACN,QAAQ,IAAI,OAAO,QAAQ;AACzB,sBAAM,KAAK,WAAW,GAAG;AAAA,cAC3B,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,SAAS,IAAI;AAAA,EAChB;AAEA;AAAA,IAEE,OAAO,YAAY;AACjB,YAAMC,QAAO,MAAM,WAAW,OAAO,gBAAgB,CAAC,CAAC;AACvD,UAAI,QAAQ,GAAG;AACb,gBAAQA,KAAI;AAAA,MACd;AAAA,IACF;AAAA,IACA,CAAC,YAAY;AAAA,EACf;AAEA,SAAO,gBAAAD,KAAC,gBAAa,MAAa,UAAS;AAC7C;;;AE3DA,SAAgB,WAAAE,UAAS,YAAAC,iBAAgB;AAGzC,SAAS,yBAAyB;AAgB9B,gBAAAC,YAAA;AARG,IAAM,qBAAwD,CAAC,EAAE,UAAU,cAAc,MAAM,MAAM;AAC1G,QAAM,CAAC,MAAM,OAAO,IAAID,UAAS,MAAM,WAAW;AAElD,QAAM,QAAyBD,SAAQ,OAAO;AAAA,IAC5C;AAAA,IAAM,UAAU;AAAA,IAAM;AAAA,EACxB,IAAI,CAAC,IAAI,CAAC;AAEV,SACE,gBAAAE,KAAC,qBAAkB,OAChB,UACH;AAEJ;;;ACxBA,SAAS,oBAAoB;AAG7B,SAAS,qBAAAC,0BAAyB;AAG3B,IAAM,gBAAgB,CAAC,WAAW,SAAS,aAA8BA,oBAAmB,cAAc,QAAQ;",
  "names": ["jsx", "node", "useMemo", "useState", "jsx", "NodeDrawerContext"]
}
