@awesome-flow/ecs 0.14.1 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/canvas/index.cjs +1 -1
  2. package/dist/canvas/index.d.cts +1 -1
  3. package/dist/canvas/index.d.mts +1 -1
  4. package/dist/canvas/index.mjs +1 -1
  5. package/dist/{canvas-cO2NAQyX.mjs → canvas-B21OqInM.mjs} +62 -62
  6. package/dist/canvas-B21OqInM.mjs.map +1 -0
  7. package/dist/{canvas-WWAJ6C2l.cjs → canvas-CC3xvbbA.cjs} +61 -61
  8. package/dist/canvas-CC3xvbbA.cjs.map +1 -0
  9. package/dist/context/index.cjs.map +1 -1
  10. package/dist/context/index.d.cts +1 -1
  11. package/dist/context/index.d.mts +1 -1
  12. package/dist/context/index.mjs.map +1 -1
  13. package/dist/{entity-component-inspector-VlwcaUqy.cjs → entity-component-inspector-7f3SijXE.cjs} +2 -2
  14. package/dist/{entity-component-inspector-VlwcaUqy.cjs.map → entity-component-inspector-7f3SijXE.cjs.map} +1 -1
  15. package/dist/{entity-component-inspector-CNaN8Scf.mjs → entity-component-inspector-BKpliIkt.mjs} +2 -2
  16. package/dist/{entity-component-inspector-CNaN8Scf.mjs.map → entity-component-inspector-BKpliIkt.mjs.map} +1 -1
  17. package/dist/hooks/index.cjs +1 -1
  18. package/dist/hooks/index.d.cts +1 -1
  19. package/dist/hooks/index.d.mts +1 -1
  20. package/dist/hooks/index.mjs +1 -1
  21. package/dist/id-generator-C2_8g29M.cjs.map +1 -1
  22. package/dist/id-generator-DDsv3NdX.mjs.map +1 -1
  23. package/dist/{index-edb-X9uc.d.mts → index-BGxRtxzm.d.mts} +2 -3
  24. package/dist/index-BGxRtxzm.d.mts.map +1 -0
  25. package/dist/{index-2l9Vdh2S.d.mts → index-BabUtsGu.d.mts} +9 -8
  26. package/dist/index-BabUtsGu.d.mts.map +1 -0
  27. package/dist/{index-vf1CSWta.d.mts → index-BfZT1xsF.d.mts} +2 -2
  28. package/dist/index-BfZT1xsF.d.mts.map +1 -0
  29. package/dist/{index-CPTq4oOA.d.cts → index-CbjlHvOZ.d.cts} +2 -2
  30. package/dist/index-CbjlHvOZ.d.cts.map +1 -0
  31. package/dist/{index-BTs_8SY-.d.cts → index-Cet6AhTm.d.cts} +3 -4
  32. package/dist/index-Cet6AhTm.d.cts.map +1 -0
  33. package/dist/{index-BFqa6aqs.d.mts → index-D5HuA6I5.d.mts} +20 -13
  34. package/dist/index-D5HuA6I5.d.mts.map +1 -0
  35. package/dist/{index-pInK6VDK.d.cts → index-DRUvPELK.d.cts} +20 -13
  36. package/dist/index-DRUvPELK.d.cts.map +1 -0
  37. package/dist/{index-CyeezgDI.d.mts → index-DoQL-Kim.d.mts} +3 -4
  38. package/dist/index-DoQL-Kim.d.mts.map +1 -0
  39. package/dist/{index-C3QIukqX.d.cts → index-DwEO6FDo.d.cts} +2 -3
  40. package/dist/index-DwEO6FDo.d.cts.map +1 -0
  41. package/dist/{index-Ht3fVcsn.d.cts → index-N2r0CM_0.d.cts} +9 -8
  42. package/dist/index-N2r0CM_0.d.cts.map +1 -0
  43. package/dist/index.cjs +3 -3
  44. package/dist/index.d.cts +6 -6
  45. package/dist/index.d.mts +6 -6
  46. package/dist/index.mjs +3 -3
  47. package/dist/inspectors/index.cjs +1 -1
  48. package/dist/inspectors/index.d.cts +1 -1
  49. package/dist/inspectors/index.d.mts +1 -1
  50. package/dist/inspectors/index.mjs +1 -1
  51. package/dist/node-props-Bryks8-5.d.cts.map +1 -1
  52. package/dist/node-props-Cusf_qtn.d.mts.map +1 -1
  53. package/dist/{node-systems-module-Dx-hISbg.d.cts → node-systems-module-BiefT_Cv.d.cts} +4 -4
  54. package/dist/node-systems-module-BiefT_Cv.d.cts.map +1 -0
  55. package/dist/{node-systems-module-B8aKhvBo.d.mts → node-systems-module-EYtTf6Re.d.mts} +4 -4
  56. package/dist/node-systems-module-EYtTf6Re.d.mts.map +1 -0
  57. package/dist/{node-types-l0GwV0mz.mjs → node-types-DV97CoAJ.mjs} +65 -35
  58. package/dist/node-types-DV97CoAJ.mjs.map +1 -0
  59. package/dist/{node-types-CNO_-52M.cjs → node-types-Z4QaJir-.cjs} +64 -34
  60. package/dist/node-types-Z4QaJir-.cjs.map +1 -0
  61. package/dist/nodes/index.cjs +1 -1
  62. package/dist/nodes/index.d.cts +2 -2
  63. package/dist/nodes/index.d.mts +2 -2
  64. package/dist/nodes/index.mjs +1 -1
  65. package/dist/templates/index.cjs +1 -1
  66. package/dist/templates/index.mjs +1 -1
  67. package/package.json +13 -14
  68. package/dist/canvas-WWAJ6C2l.cjs.map +0 -1
  69. package/dist/canvas-cO2NAQyX.mjs.map +0 -1
  70. package/dist/index-2l9Vdh2S.d.mts.map +0 -1
  71. package/dist/index-BFqa6aqs.d.mts.map +0 -1
  72. package/dist/index-BTs_8SY-.d.cts.map +0 -1
  73. package/dist/index-C3QIukqX.d.cts.map +0 -1
  74. package/dist/index-CPTq4oOA.d.cts.map +0 -1
  75. package/dist/index-CyeezgDI.d.mts.map +0 -1
  76. package/dist/index-Ht3fVcsn.d.cts.map +0 -1
  77. package/dist/index-edb-X9uc.d.mts.map +0 -1
  78. package/dist/index-pInK6VDK.d.cts.map +0 -1
  79. package/dist/index-vf1CSWta.d.mts.map +0 -1
  80. package/dist/node-systems-module-B8aKhvBo.d.mts.map +0 -1
  81. package/dist/node-systems-module-Dx-hISbg.d.cts.map +0 -1
  82. package/dist/node-types-CNO_-52M.cjs.map +0 -1
  83. package/dist/node-types-l0GwV0mz.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_canvas = require('../canvas-WWAJ6C2l.cjs');
2
+ const require_canvas = require('../canvas-CC3xvbbA.cjs');
3
3
 
4
4
  exports.FlowEcsCanvas = require_canvas.FlowEcsCanvas;
5
5
  exports.FlowEcsState = require_canvas.flow_ecs_state_default;
@@ -1,2 +1,2 @@
1
- import { i as _default, n as FlowEcsCanvasProps, r as FlowEcsStateProps, t as FlowEcsCanvas } from "../index-pInK6VDK.cjs";
1
+ import { i as _default, n as FlowEcsCanvasProps, r as FlowEcsStateProps, t as FlowEcsCanvas } from "../index-DRUvPELK.cjs";
2
2
  export { FlowEcsCanvas, FlowEcsCanvasProps, _default as FlowEcsState, FlowEcsStateProps };
@@ -1,2 +1,2 @@
1
- import { i as _default, n as FlowEcsCanvasProps, r as FlowEcsStateProps, t as FlowEcsCanvas } from "../index-BFqa6aqs.mjs";
1
+ import { i as _default, n as FlowEcsCanvasProps, r as FlowEcsStateProps, t as FlowEcsCanvas } from "../index-D5HuA6I5.mjs";
2
2
  export { FlowEcsCanvas, FlowEcsCanvasProps, _default as FlowEcsState, FlowEcsStateProps };
@@ -1,3 +1,3 @@
1
- import { n as flow_ecs_state_default, t as FlowEcsCanvas } from "../canvas-cO2NAQyX.mjs";
1
+ import { n as flow_ecs_state_default, t as FlowEcsCanvas } from "../canvas-B21OqInM.mjs";
2
2
 
3
3
  export { FlowEcsCanvas, flow_ecs_state_default as FlowEcsState };
@@ -1,7 +1,6 @@
1
- import { E as useEntityTypeTemplates, F as useBridgeStoreVersion, I as useEcsBridge, M as useEntityList, b as useScopeList, n as ecsNodeTemplates, r as ecsNodeTypes, t as EcsNodeType, y as useSystemsModuleList } from "./node-types-l0GwV0mz.mjs";
1
+ import { E as useEntityTypeTemplates, F as useBridgeStoreVersion, I as useEcsBridge, M as useEntityList, b as useScopeList, n as ecsNodeTemplates, r as ecsNodeTypes, t as EcsNodeType, y as useSystemsModuleList } from "./node-types-DV97CoAJ.mjs";
2
2
  import { c } from "react/compiler-runtime";
3
- import { FlowAutoLayout, FlowCanvasContext, FlowCanvasDropWrapper, FlowCanvasRenderIntersections, FlowCanvasWrapper, FlowConnectionStatus, FlowEdgesSelection, FlowTemplatesList } from "@awesome-flow/core/canvas";
4
- import { Portal } from "@mantine/core";
3
+ import { FlowAutoLayout, FlowCanvasContext, FlowCanvasDropWrapper, FlowCanvasRenderIntersections, FlowCanvasWrapper, FlowConnectionStatus } from "@awesome-flow/core/canvas";
5
4
  import { memo, useContext, useEffect, useState } from "react";
6
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
6
  import { useFlowStore } from "@awesome-flow/core/hooks";
@@ -577,8 +576,8 @@ var flow_ecs_state_default = memo(FlowEcsState);
577
576
  //#endregion
578
577
  //#region src/canvas/flow-ecs-canvas.tsx
579
578
  function FlowEcsCanvas(t0) {
580
- const $ = c(21);
581
- const { autoLayout: t1, enableEntitySpawning: t2, enableDragDrop: t3, showEntities: t4, showEntityTypeTemplates: t5, showScopes: t6, showSystemModules: t7, showTemplates: t8, toolNodes: t9 } = t0;
579
+ const $ = c(25);
580
+ const { autoLayout: t1, enableEntitySpawning: t2, enableDragDrop: t3, showEntities: t4, showEntityTypeTemplates: t5, showScopes: t6, showSystemModules: t7, showTemplates: t8, toolNodes: t9, hybrid, defaultPipelineExecution, layoutEngine, beforeInsert } = t0;
582
581
  const autoLayout = t1 === void 0 ? true : t1;
583
582
  const enableEntitySpawning = t2 === void 0 ? true : t2;
584
583
  const enableDragDrop = t3 === void 0 ? true : t3;
@@ -591,39 +590,50 @@ function FlowEcsCanvas(t0) {
591
590
  const [over, setOver] = useState(false);
592
591
  const entityTypeTemplates = useEntityTypeTemplates(showEntityTypeTemplates);
593
592
  let t10;
594
- if ($[0] !== over) {
595
- t10 = /* @__PURE__ */ jsx(FlowCanvasRenderIntersections, {
593
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
594
+ t10 = { autoLayout: true };
595
+ $[0] = t10;
596
+ } else t10 = $[0];
597
+ let t11;
598
+ if ($[1] !== entityTypeTemplates || $[2] !== showTemplates) {
599
+ t11 = showTemplates ? { extraTemplates: entityTypeTemplates } : false;
600
+ $[1] = entityTypeTemplates;
601
+ $[2] = showTemplates;
602
+ $[3] = t11;
603
+ } else t11 = $[3];
604
+ let t12;
605
+ if ($[4] !== hybrid || $[5] !== over || $[6] !== t11) {
606
+ t12 = /* @__PURE__ */ jsx(FlowCanvasRenderIntersections, {
596
607
  canvasHighlighted: over,
597
- nodeTypes: ecsNodeTypes
608
+ nodeTypes: ecsNodeTypes,
609
+ hybrid,
610
+ controls: t10,
611
+ templates: t11
598
612
  });
599
- $[0] = over;
600
- $[1] = t10;
601
- } else t10 = $[1];
602
- const canvas = t10;
603
- let t11;
604
- if ($[2] !== canvas || $[3] !== enableDragDrop) {
605
- t11 = enableDragDrop ? /* @__PURE__ */ jsx(FlowCanvasDropWrapper, {
613
+ $[4] = hybrid;
614
+ $[5] = over;
615
+ $[6] = t11;
616
+ $[7] = t12;
617
+ } else t12 = $[7];
618
+ const canvas = t12;
619
+ let t13;
620
+ if ($[8] !== canvas || $[9] !== enableDragDrop) {
621
+ t13 = enableDragDrop ? /* @__PURE__ */ jsx(FlowCanvasDropWrapper, {
606
622
  setOver,
607
623
  children: canvas
608
624
  }) : /* @__PURE__ */ jsx(FlowCanvasWrapper, { children: canvas });
609
- $[2] = canvas;
610
- $[3] = enableDragDrop;
611
- $[4] = t11;
612
- } else t11 = $[4];
613
- let t12;
614
- let t13;
615
- if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
616
- t12 = /* @__PURE__ */ jsx(FlowEdgesSelection, {});
617
- t13 = /* @__PURE__ */ jsx(FlowConnectionStatus, {});
618
- $[5] = t12;
619
- $[6] = t13;
620
- } else {
621
- t12 = $[5];
622
- t13 = $[6];
623
- }
625
+ $[8] = canvas;
626
+ $[9] = enableDragDrop;
627
+ $[10] = t13;
628
+ } else t13 = $[10];
624
629
  let t14;
625
- if ($[7] !== autoLayout || $[8] !== enableEntitySpawning || $[9] !== showEntities || $[10] !== showScopes || $[11] !== showSystemModules || $[12] !== toolNodes) {
626
- t14 = /* @__PURE__ */ jsx(flow_ecs_state_default, {
630
+ if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
631
+ t14 = /* @__PURE__ */ jsx(FlowConnectionStatus, {});
632
+ $[11] = t14;
633
+ } else t14 = $[11];
634
+ let t15;
635
+ if ($[12] !== autoLayout || $[13] !== enableEntitySpawning || $[14] !== showEntities || $[15] !== showScopes || $[16] !== showSystemModules || $[17] !== toolNodes) {
636
+ t15 = /* @__PURE__ */ jsx(flow_ecs_state_default, {
627
637
  autoLayout,
628
638
  enableEntitySpawning,
629
639
  showEntities,
@@ -631,47 +641,37 @@ function FlowEcsCanvas(t0) {
631
641
  showSystemModules,
632
642
  toolNodes
633
643
  });
634
- $[7] = autoLayout;
635
- $[8] = enableEntitySpawning;
636
- $[9] = showEntities;
637
- $[10] = showScopes;
638
- $[11] = showSystemModules;
639
- $[12] = toolNodes;
640
- $[13] = t14;
641
- } else t14 = $[13];
642
- let t15;
643
- if ($[14] !== entityTypeTemplates || $[15] !== showTemplates) {
644
- t15 = showTemplates && /* @__PURE__ */ jsx(Portal, {
645
- target: "#portal-navbar",
646
- children: /* @__PURE__ */ jsx(FlowTemplatesList, {
647
- extraTemplates: entityTypeTemplates,
648
- nodeTypes: ecsNodeTypes
649
- })
650
- });
651
- $[14] = entityTypeTemplates;
652
- $[15] = showTemplates;
653
- $[16] = t15;
654
- } else t15 = $[16];
644
+ $[12] = autoLayout;
645
+ $[13] = enableEntitySpawning;
646
+ $[14] = showEntities;
647
+ $[15] = showScopes;
648
+ $[16] = showSystemModules;
649
+ $[17] = toolNodes;
650
+ $[18] = t15;
651
+ } else t15 = $[18];
655
652
  let t16;
656
- if ($[17] !== t11 || $[18] !== t14 || $[19] !== t15) {
653
+ if ($[19] !== beforeInsert || $[20] !== defaultPipelineExecution || $[21] !== layoutEngine || $[22] !== t13 || $[23] !== t15) {
657
654
  t16 = /* @__PURE__ */ jsxs(FlowCanvasContext, {
658
655
  nodeTemplates: ecsNodeTemplates,
656
+ defaultPipelineExecution,
657
+ layoutEngine,
658
+ beforeInsert,
659
659
  children: [
660
- t11,
661
- t12,
662
660
  t13,
663
661
  t14,
664
662
  t15
665
663
  ]
666
664
  });
667
- $[17] = t11;
668
- $[18] = t14;
669
- $[19] = t15;
670
- $[20] = t16;
671
- } else t16 = $[20];
665
+ $[19] = beforeInsert;
666
+ $[20] = defaultPipelineExecution;
667
+ $[21] = layoutEngine;
668
+ $[22] = t13;
669
+ $[23] = t15;
670
+ $[24] = t16;
671
+ } else t16 = $[24];
672
672
  return t16;
673
673
  }
674
674
 
675
675
  //#endregion
676
676
  export { flow_ecs_state_default as n, FlowEcsCanvas as t };
677
- //# sourceMappingURL=canvas-cO2NAQyX.mjs.map
677
+ //# sourceMappingURL=canvas-B21OqInM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-B21OqInM.mjs","names":["useFlowStore","Node","useEffect","EntityNodeData","useBridgeStoreVersion","useEcsBridge","FlowEcsEdgeProxiesProps","nodesToConnect","FlowEcsEdgeModules","props","$","_c","onConnect","_temp","bridge","moduleVersion","t0","node","data","entity","sourceHandle","handles","find","_temp2","entityRepository","getEntity","systemModule","ecsFlowRepository","getSystemModuleNode","identity","proxy","entityType","targetHandle","_temp3","source","id","target","handleId","t1","t2","Symbol","for","h_0","h","connection","state","useFlowStore","Node","useEffect","EntityNodeData","useBridgeStoreVersion","useEcsBridge","FlowEcsEdgeProxiesProps","nodesToConnect","FlowEcsEdgeProxies","props","$","_c","onConnect","_temp","bridge","proxyVersion","t0","node","data","entity","sourceHandle","handles","find","_temp2","entityRepository","getEntity","proxies","Array","from","entityProxyRepository","getAllProxies","identity","proxy","values","flat","proxyNode","ecsFlowRepository","getEntityNode","targetHandle","_temp3","source","id","target","handleId","t1","t2","Symbol","for","h_0","h","connection","state","FlowContext","useFlowStore","Node","useContext","useEffect","useState","EntityNodeData","EcsNodeType","useEcsBridge","useEntityList","FlowEcsEdgeModules","FlowEcsEdgeProxies","FlowEcsEntities","$","_c","nodeFactory","addNodes","_temp","bridge","entities","t0","Symbol","for","entityNodes","setEntityNodes","t1","t2","nodesToAdd","nodesToConnect","entity","node","ecsFlowRepository","getEntityNode","identity","proxy","createNodeFromType","data","entityType","position","x","y","addEntityNode","push","length","t3","state","FlowContext","useFlowStore","Node","useContext","useEffect","SystemsModuleNodeData","EcsNodeType","useEcsBridge","useSystemsModuleList","FlowEcsModules","$","_c","nodeFactory","addNodes","_temp","bridge","modules","t0","t1","keys","Array","from","nodesToAdd","element","ecsFlowRepository","getSystemModuleNode","node","createNodeFromType","systemsModule","data","entityType","position","x","y","addSystemModuleNode","push","length","t2","Symbol","for","state","FlowContext","StoreContext","useFlowStore","Node","useContext","useEffect","shallow","EntityNodeData","ScopeGroupNodeData","EcsNodeType","useEcsBridge","useScopeList","FlowEcsScopes","$","_c","nodeFactory","flowStore","bridge","scopes","nodes","setGroups","setNodes","_temp","t0","length","changed","currentNodes","instance","getState","nextNodes","groups","scope","groupNode","ecsFlowRepository","getScopeGroupNode","scopeId","createNodeFromType","scopeGroup","data","title","position","x","y","className","addScopeGroupNode","unshift","childIds","entity","entities","entityNode","getEntityNode","identity","proxy","push","id","scopedNodeIds","Set","Object","values","flat","groupIds","keys","orderedNodes","map","node","has","type","parentId","entries","find","t1","children","includes","undefined","extent","const","sort","_temp2","t2","Symbol","for","a","b","Number","isGroup","state","useFlowStore","FlowState","Node","useEffect","shallow","EntityNodeData","EcsNodeType","useEcsBridge","selector","state","nodes","updateNodeData","FlowEcsSpawnEntities","$","_c","bridge","t0","t1","node","type","entity","data","spawn","update","enqueueEntitySpawn","id","spawnStatus","entityType","ecsFlowRepository","addEntityNode","t2","Symbol","for","FlowContext","useFlowStore","Node","useContext","useEffect","EcsToolNodeData","EcsNodeType","useEcsBridge","defaultEcsToolNodes","scheduler","eventTimeline","telemetry","updateQueue","const","EcsToolNodeType","FlowEcsToolNodesProps","nodes","FlowEcsToolNodes","t0","$","_c","t1","undefined","nodeFactory","addNodes","_temp","bridge","t2","t3","nodesToAdd","forEach","type","index","ecsFlowRepository","getToolNode","node","createNodeFromType","position","x","y","addToolNode","push","length","t4","Symbol","for","state","FlowAutoLayout","memo","useEffect","useState","useBridgeStoreVersion","useEcsBridge","FlowEcsEntities","FlowEcsModules","FlowEcsScopes","FlowEcsSpawnEntities","FlowEcsToolNodes","EcsToolNodeType","FlowEcsStateProps","showSystemModules","showEntities","autoLayout","enableEntitySpawning","showScopes","toolNodes","FlowEcsState","props","$","_c","refreshLayout","setRefreshLayout","bridge","entityVersion","moduleVersion","t0","Symbol","for","frame","requestAnimationFrame","cancelAnimationFrame","t1","ecsFlowRepository","sizeNodes","t2","t3","t4","t5","t6","Array","isArray","undefined","t7","t8","FlowCanvasContext","FlowCanvasContextProps","FlowCanvasDropWrapper","FlowCanvasRenderIntersections","FlowCanvasRenderProps","FlowCanvasWrapper","FlowConnectionStatus","useState","ecsNodeTemplates","ecsNodeTypes","FlowEcsState","FlowEcsStateProps","useEntityTypeTemplates","FlowEcsCanvasProps","Partial","Pick","hybrid","enableDragDrop","showEntityTypeTemplates","showTemplates","FlowEcsCanvas","t0","$","_c","autoLayout","t1","enableEntitySpawning","t2","t3","showEntities","t4","t5","showScopes","t6","showSystemModules","t7","t8","toolNodes","t9","defaultPipelineExecution","layoutEngine","beforeInsert","undefined","over","setOver","entityTypeTemplates","t10","Symbol","for","t11","extraTemplates","t12","canvas","t13","t14","t15","t16"],"sources":["../src/flow/flow-ecs-edge-modules.tsx","../src/flow/flow-ecs-edge-proxies.tsx","../src/flow/flow-ecs-entities.tsx","../src/flow/flow-ecs-modules.tsx","../src/flow/flow-ecs-scopes.tsx","../src/flow/flow-ecs-spawn-entities.tsx","../src/flow/flow-ecs-tool-nodes.tsx","../src/flow/flow-ecs-state.tsx","../src/canvas/flow-ecs-canvas.tsx"],"sourcesContent":["import { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useEffect } from 'react';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { useBridgeStoreVersion, useEcsBridge } from '../hooks';\n\nexport type FlowEcsEdgeProxiesProps = {\n nodesToConnect: Node<EntityNodeData>[];\n};\n\nfunction FlowEcsEdgeModules(props: Readonly<FlowEcsEdgeProxiesProps>) {\n const { nodesToConnect } = props;\n\n const onConnect = useFlowStore((state: { onConnect: any }) => state.onConnect);\n\n const bridge = useEcsBridge();\n const moduleVersion = useBridgeStoreVersion('modules');\n\n useEffect(() => {\n for (const node of nodesToConnect) {\n if (!node.data.entity) {\n continue;\n }\n\n const sourceHandle = node.data.handles.find((h) => h.connection === 'source');\n const entity = bridge.entityRepository.getEntity(node.data.entity);\n\n const systemModule = bridge.ecsFlowRepository.getSystemModuleNode(entity.identity.proxy.entityType);\n const targetHandle = systemModule?.data.handles.find((h) => h.connection === 'target');\n\n if (sourceHandle && targetHandle) {\n onConnect({\n source: node.id,\n target: systemModule.id,\n sourceHandle: sourceHandle.handleId,\n targetHandle: targetHandle.handleId\n });\n }\n }\n }, [bridge, moduleVersion, nodesToConnect, onConnect]);\n\n return <></>;\n}\n\nexport default FlowEcsEdgeModules;\n","import { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useEffect } from 'react';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { useBridgeStoreVersion, useEcsBridge } from '../hooks';\n\nexport type FlowEcsEdgeProxiesProps = {\n nodesToConnect: Node<EntityNodeData>[];\n};\n\nfunction FlowEcsEdgeProxies(props: Readonly<FlowEcsEdgeProxiesProps>) {\n const { nodesToConnect } = props;\n\n const onConnect = useFlowStore((state: { onConnect: any }) => state.onConnect);\n\n const bridge = useEcsBridge();\n const proxyVersion = useBridgeStoreVersion('proxies');\n\n useEffect(() => {\n for (const node of nodesToConnect) {\n if (!node.data.entity) {\n continue;\n }\n\n const sourceHandle = node.data.handles.find((h) => h.connection === 'source');\n const entity = bridge.entityRepository.getEntity(node.data.entity);\n const proxies = Array.from(bridge.entityProxyRepository.getAllProxies(entity.identity.proxy).values()).flat();\n\n for (const proxy of proxies) {\n const proxyNode = bridge.ecsFlowRepository.getEntityNode(proxy);\n\n if (proxyNode) {\n const targetHandle = proxyNode.data.handles.find((h) => h.connection === 'target');\n\n if (sourceHandle && targetHandle) {\n onConnect({\n source: node.id,\n target: proxyNode.id,\n sourceHandle: sourceHandle.handleId,\n targetHandle: targetHandle.handleId\n });\n }\n }\n }\n }\n }, [bridge, nodesToConnect, onConnect, proxyVersion]);\n\n return <></>;\n}\n\nexport default FlowEcsEdgeProxies;\n","import { FlowContext } from '@awesome-flow/core/abstract';\nimport { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useContext, useEffect, useState } from 'react';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { useEcsBridge, useEntityList } from '../hooks';\nimport FlowEcsEdgeModules from './flow-ecs-edge-modules';\nimport FlowEcsEdgeProxies from './flow-ecs-edge-proxies';\n\nfunction FlowEcsEntities() {\n const { nodeFactory } = useContext(FlowContext);\n const addNodes = useFlowStore((state) => state.addNodes);\n\n const bridge = useEcsBridge();\n const entities = useEntityList();\n const [entityNodes, setEntityNodes] = useState<Node<EntityNodeData>[]>([]);\n\n useEffect(() => {\n const nodesToAdd: Node<EntityNodeData>[] = [];\n const nodesToConnect: Node<EntityNodeData>[] = [];\n\n for (const entity of entities) {\n let node = bridge.ecsFlowRepository.getEntityNode(entity.identity.proxy);\n\n if (!node) {\n node = nodeFactory.createNodeFromType<EntityNodeData>(EcsNodeType.entity);\n node.data.entity = entity.identity.proxy;\n node.data.entityType = entity.identity.proxy.entityType;\n node.position = { x: 0, y: 0 };\n\n bridge.ecsFlowRepository.addEntityNode(node);\n nodesToAdd.push(node);\n }\n\n nodesToConnect.push(node);\n }\n\n setEntityNodes(nodesToConnect);\n if (nodesToAdd.length) {\n addNodes(nodesToAdd);\n }\n }, [addNodes, bridge, entities, nodeFactory]);\n\n return (\n <>\n <FlowEcsEdgeProxies nodesToConnect={entityNodes} />\n <FlowEcsEdgeModules nodesToConnect={entityNodes} />\n </>\n );\n}\n\nexport default FlowEcsEntities;\n","import { FlowContext } from '@awesome-flow/core/abstract';\nimport { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useContext, useEffect } from 'react';\nimport { SystemsModuleNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { useEcsBridge, useSystemsModuleList } from '../hooks';\n\nfunction FlowEcsModules() {\n const { nodeFactory } = useContext(FlowContext);\n const addNodes = useFlowStore((state) => state.addNodes);\n\n const bridge = useEcsBridge();\n const modules = useSystemsModuleList();\n\n useEffect(() => {\n const keys = Array.from(modules.keys());\n\n const nodesToAdd: Node<SystemsModuleNodeData>[] = [];\n\n for (const element of keys) {\n if (bridge.ecsFlowRepository.getSystemModuleNode(element)) {\n continue;\n }\n\n const node = nodeFactory.createNodeFromType<SystemsModuleNodeData>(EcsNodeType.systemsModule);\n\n node.data.entityType = element;\n node.position = { x: 0, y: 0 };\n\n bridge.ecsFlowRepository.addSystemModuleNode(node);\n nodesToAdd.push(node);\n }\n\n if (nodesToAdd.length) {\n addNodes(nodesToAdd);\n }\n }, [addNodes, bridge, modules, nodeFactory]);\n\n return <></>;\n}\n\nexport default FlowEcsModules;\n","import { FlowContext, StoreContext } from '@awesome-flow/core/abstract';\nimport { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useContext, useEffect } from 'react';\nimport { shallow } from 'zustand/shallow';\nimport { EntityNodeData, ScopeGroupNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { useEcsBridge, useScopeList } from '../hooks';\n\nfunction FlowEcsScopes() {\n const { nodeFactory } = useContext(FlowContext);\n const { flowStore } = useContext(StoreContext);\n const bridge = useEcsBridge();\n const scopes = useScopeList();\n\n const { nodes, setGroups, setNodes } = useFlowStore(\n (state) => ({\n nodes: state.nodes,\n setGroups: state.setGroups,\n setNodes: state.setNodes\n }),\n shallow\n );\n\n useEffect(() => {\n if (!scopes.length) {\n return;\n }\n\n let changed = false;\n const currentNodes = flowStore.instance.getState().nodes;\n const nextNodes = [...currentNodes];\n const groups: Record<string, string[]> = {};\n\n for (const scope of scopes) {\n let groupNode = bridge.ecsFlowRepository.getScopeGroupNode(scope.scopeId);\n\n if (!groupNode) {\n groupNode = nodeFactory.createNodeFromType<ScopeGroupNodeData>(EcsNodeType.scopeGroup);\n groupNode.data.scopeId = scope.scopeId;\n groupNode.data.title = 'Scope';\n groupNode.position = { x: 0, y: 0 };\n groupNode.className = 'react-flow__node-group';\n\n bridge.ecsFlowRepository.addScopeGroupNode(groupNode);\n nextNodes.unshift(groupNode);\n changed = true;\n }\n\n const childIds: string[] = [];\n for (const entity of scope.entities) {\n const entityNode = bridge.ecsFlowRepository.getEntityNode(entity.identity.proxy) as Node<EntityNodeData> | undefined;\n if (!entityNode) {\n continue;\n }\n\n childIds.push(entityNode.id);\n }\n\n groups[groupNode.id] = childIds;\n }\n\n const scopedNodeIds = new Set(Object.values(groups).flat());\n const groupIds = new Set(Object.keys(groups));\n const orderedNodes = nextNodes\n .map((node) => {\n if (groupIds.has(node.id)) {\n return node;\n }\n\n if (node.type !== EcsNodeType.entity) {\n return node;\n }\n\n const parentId = scopedNodeIds.has(node.id)\n ? Object.entries(groups).find(([, children]) => children.includes(node.id))?.[0]\n : undefined;\n\n if (node.parentId !== parentId) {\n changed = true;\n return {\n ...node,\n extent: parentId ? ('parent' as const) : undefined,\n parentId\n };\n }\n\n return node;\n })\n .sort((a, b) => Number(!a.data?.isGroup) - Number(!b.data?.isGroup));\n\n if (changed) {\n setNodes(orderedNodes);\n }\n\n setGroups(groups);\n }, [bridge, flowStore, nodeFactory, nodes, scopes, setGroups, setNodes]);\n\n return <></>;\n}\n\nexport default FlowEcsScopes;\n","import { useFlowStore } from '@awesome-flow/core/hooks';\nimport { FlowState } from '@awesome-flow/core/stores';\nimport { Node } from '@xyflow/react';\nimport { useEffect } from 'react';\nimport { shallow } from 'zustand/shallow';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { useEcsBridge } from '../hooks';\n\nconst selector = (state: FlowState) => ({\n nodes: state.nodes,\n updateNodeData: state.updateNodeData\n});\n\nfunction FlowEcsSpawnEntities() {\n const bridge = useEcsBridge();\n const { nodes, updateNodeData } = useFlowStore(selector, shallow);\n\n useEffect(() => {\n for (const node of nodes as Node<EntityNodeData>[]) {\n if (node.type !== EcsNodeType.entity || !node.data.spawn || node.data.entity) {\n continue;\n }\n\n const update = bridge.enqueueEntitySpawn(node.data.spawn);\n if (!update) {\n updateNodeData<EntityNodeData>(node.id, {\n spawnStatus: 'missing-scheduler'\n });\n continue;\n }\n\n const data: Partial<EntityNodeData> = {\n entity: update.entity,\n entityType: update.entity.entityType,\n spawnStatus: 'queued'\n };\n\n bridge.ecsFlowRepository.addEntityNode({\n ...node,\n data: {\n ...node.data,\n ...data\n }\n });\n updateNodeData<EntityNodeData>(node.id, data);\n }\n }, [bridge, nodes, updateNodeData]);\n\n return <></>;\n}\n\nexport default FlowEcsSpawnEntities;\n","import { FlowContext } from '@awesome-flow/core/abstract';\nimport { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useContext, useEffect } from 'react';\nimport { EcsToolNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { useEcsBridge } from '../hooks';\n\nexport const defaultEcsToolNodes = [\n EcsNodeType.scheduler,\n EcsNodeType.eventTimeline,\n EcsNodeType.telemetry,\n EcsNodeType.updateQueue\n] as const;\n\nexport type EcsToolNodeType = (typeof defaultEcsToolNodes)[number];\n\nexport type FlowEcsToolNodesProps = {\n nodes?: readonly EcsToolNodeType[];\n};\n\nfunction FlowEcsToolNodes({ nodes = defaultEcsToolNodes }: Readonly<FlowEcsToolNodesProps>) {\n const { nodeFactory } = useContext(FlowContext);\n const addNodes = useFlowStore((state) => state.addNodes);\n const bridge = useEcsBridge();\n\n useEffect(() => {\n const nodesToAdd: Node<EcsToolNodeData>[] = [];\n\n nodes.forEach((type, index) => {\n if (bridge.ecsFlowRepository.getToolNode(type)) {\n return;\n }\n\n const node = nodeFactory.createNodeFromType<EcsToolNodeData>(type);\n node.position = { x: 980, y: index * 220 };\n bridge.ecsFlowRepository.addToolNode(node);\n nodesToAdd.push(node);\n });\n\n if (nodesToAdd.length) {\n addNodes(nodesToAdd);\n }\n }, [addNodes, bridge, nodeFactory, nodes]);\n\n return <></>;\n}\n\nexport default FlowEcsToolNodes;\n","import { FlowAutoLayout } from '@awesome-flow/core/canvas';\nimport { memo, useEffect, useState } from 'react';\nimport { useBridgeStoreVersion, useEcsBridge } from '../hooks';\nimport FlowEcsEntities from './flow-ecs-entities';\nimport FlowEcsModules from './flow-ecs-modules';\nimport FlowEcsScopes from './flow-ecs-scopes';\nimport FlowEcsSpawnEntities from './flow-ecs-spawn-entities';\nimport FlowEcsToolNodes, { EcsToolNodeType } from './flow-ecs-tool-nodes';\n\nexport type FlowEcsStateProps = {\n showSystemModules: boolean;\n showEntities: boolean;\n autoLayout: boolean;\n enableEntitySpawning?: boolean;\n showScopes?: boolean;\n toolNodes?: boolean | readonly EcsToolNodeType[];\n};\n\nfunction FlowEcsState(props: Readonly<FlowEcsStateProps>) {\n const [refreshLayout, setRefreshLayout] = useState(false);\n const bridge = useEcsBridge();\n const entityVersion = useBridgeStoreVersion('entities');\n const moduleVersion = useBridgeStoreVersion('modules');\n\n useEffect(() => {\n setRefreshLayout(false);\n const frame = requestAnimationFrame(() => setRefreshLayout(true));\n\n return () => cancelAnimationFrame(frame);\n }, [bridge.ecsFlowRepository.sizeNodes, entityVersion, moduleVersion]);\n\n return (\n <>\n {props.showSystemModules && <FlowEcsModules />}\n {props.showEntities && <FlowEcsEntities />}\n {props.enableEntitySpawning && <FlowEcsSpawnEntities />}\n {props.showScopes && <FlowEcsScopes />}\n {props.toolNodes && <FlowEcsToolNodes nodes={Array.isArray(props.toolNodes) ? props.toolNodes : undefined} />}\n {props.autoLayout && <FlowAutoLayout refreshLayout={refreshLayout} />}\n </>\n );\n}\n\nexport default memo(FlowEcsState);\n","import {\n FlowCanvasContext,\n type FlowCanvasContextProps,\n FlowCanvasDropWrapper,\n FlowCanvasRenderIntersections,\n type FlowCanvasRenderProps,\n FlowCanvasWrapper,\n FlowConnectionStatus\n} from '@awesome-flow/core/canvas';\nimport { useState } from 'react';\nimport { ecsNodeTemplates, ecsNodeTypes } from '../abstract/node-types';\nimport FlowEcsState, { FlowEcsStateProps } from '../flow/flow-ecs-state';\nimport { useEntityTypeTemplates } from '../hooks';\n\nexport type FlowEcsCanvasProps = Partial<FlowEcsStateProps> &\n Pick<FlowCanvasContextProps, 'defaultPipelineExecution' | 'layoutEngine' | 'beforeInsert'> & {\n /** Shared production rendering policy; hybrid by default, false opts out. */\n hybrid?: FlowCanvasRenderProps['hybrid'];\n enableDragDrop?: boolean;\n showEntityTypeTemplates?: boolean;\n showTemplates?: boolean;\n };\n\nexport function FlowEcsCanvas({\n autoLayout = true,\n enableEntitySpawning = true,\n enableDragDrop = true,\n showEntities = true,\n showEntityTypeTemplates = true,\n showScopes = true,\n showSystemModules = true,\n showTemplates = false,\n toolNodes = false,\n hybrid,\n defaultPipelineExecution,\n layoutEngine,\n beforeInsert\n}: Readonly<FlowEcsCanvasProps>) {\n const [over, setOver] = useState(false);\n const entityTypeTemplates = useEntityTypeTemplates(showEntityTypeTemplates);\n const canvas = (\n <FlowCanvasRenderIntersections\n canvasHighlighted={over}\n nodeTypes={ecsNodeTypes}\n hybrid={hybrid}\n controls={{ autoLayout: true }}\n templates={showTemplates ? { extraTemplates: entityTypeTemplates } : false}\n />\n );\n\n return (\n <FlowCanvasContext\n nodeTemplates={ecsNodeTemplates}\n defaultPipelineExecution={defaultPipelineExecution}\n layoutEngine={layoutEngine}\n beforeInsert={beforeInsert}\n >\n {enableDragDrop ? (\n <FlowCanvasDropWrapper setOver={setOver}>{canvas}</FlowCanvasDropWrapper>\n ) : (\n <FlowCanvasWrapper>{canvas}</FlowCanvasWrapper>\n )}\n <FlowConnectionStatus />\n <FlowEcsState\n autoLayout={autoLayout}\n enableEntitySpawning={enableEntitySpawning}\n showEntities={showEntities}\n showScopes={showScopes}\n showSystemModules={showSystemModules}\n toolNodes={toolNodes}\n />\n </FlowCanvasContext>\n );\n}\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
- const require_node_types = require('./node-types-CNO_-52M.cjs');
1
+ const require_node_types = require('./node-types-Z4QaJir-.cjs');
2
2
  let react_compiler_runtime = require("react/compiler-runtime");
3
3
  let _awesome_flow_core_canvas = require("@awesome-flow/core/canvas");
4
- let _mantine_core = require("@mantine/core");
5
4
  let react = require("react");
6
5
  let react_jsx_runtime = require("react/jsx-runtime");
7
6
  let _awesome_flow_core_hooks = require("@awesome-flow/core/hooks");
@@ -577,8 +576,8 @@ var flow_ecs_state_default = (0, react.memo)(FlowEcsState);
577
576
  //#endregion
578
577
  //#region src/canvas/flow-ecs-canvas.tsx
579
578
  function FlowEcsCanvas(t0) {
580
- const $ = (0, react_compiler_runtime.c)(21);
581
- const { autoLayout: t1, enableEntitySpawning: t2, enableDragDrop: t3, showEntities: t4, showEntityTypeTemplates: t5, showScopes: t6, showSystemModules: t7, showTemplates: t8, toolNodes: t9 } = t0;
579
+ const $ = (0, react_compiler_runtime.c)(25);
580
+ const { autoLayout: t1, enableEntitySpawning: t2, enableDragDrop: t3, showEntities: t4, showEntityTypeTemplates: t5, showScopes: t6, showSystemModules: t7, showTemplates: t8, toolNodes: t9, hybrid, defaultPipelineExecution, layoutEngine, beforeInsert } = t0;
582
581
  const autoLayout = t1 === void 0 ? true : t1;
583
582
  const enableEntitySpawning = t2 === void 0 ? true : t2;
584
583
  const enableDragDrop = t3 === void 0 ? true : t3;
@@ -591,39 +590,50 @@ function FlowEcsCanvas(t0) {
591
590
  const [over, setOver] = (0, react.useState)(false);
592
591
  const entityTypeTemplates = require_node_types.useEntityTypeTemplates(showEntityTypeTemplates);
593
592
  let t10;
594
- if ($[0] !== over) {
595
- t10 = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_awesome_flow_core_canvas.FlowCanvasRenderIntersections, {
593
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
594
+ t10 = { autoLayout: true };
595
+ $[0] = t10;
596
+ } else t10 = $[0];
597
+ let t11;
598
+ if ($[1] !== entityTypeTemplates || $[2] !== showTemplates) {
599
+ t11 = showTemplates ? { extraTemplates: entityTypeTemplates } : false;
600
+ $[1] = entityTypeTemplates;
601
+ $[2] = showTemplates;
602
+ $[3] = t11;
603
+ } else t11 = $[3];
604
+ let t12;
605
+ if ($[4] !== hybrid || $[5] !== over || $[6] !== t11) {
606
+ t12 = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_awesome_flow_core_canvas.FlowCanvasRenderIntersections, {
596
607
  canvasHighlighted: over,
597
- nodeTypes: require_node_types.ecsNodeTypes
608
+ nodeTypes: require_node_types.ecsNodeTypes,
609
+ hybrid,
610
+ controls: t10,
611
+ templates: t11
598
612
  });
599
- $[0] = over;
600
- $[1] = t10;
601
- } else t10 = $[1];
602
- const canvas = t10;
603
- let t11;
604
- if ($[2] !== canvas || $[3] !== enableDragDrop) {
605
- t11 = enableDragDrop ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_awesome_flow_core_canvas.FlowCanvasDropWrapper, {
613
+ $[4] = hybrid;
614
+ $[5] = over;
615
+ $[6] = t11;
616
+ $[7] = t12;
617
+ } else t12 = $[7];
618
+ const canvas = t12;
619
+ let t13;
620
+ if ($[8] !== canvas || $[9] !== enableDragDrop) {
621
+ t13 = enableDragDrop ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_awesome_flow_core_canvas.FlowCanvasDropWrapper, {
606
622
  setOver,
607
623
  children: canvas
608
624
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_awesome_flow_core_canvas.FlowCanvasWrapper, { children: canvas });
609
- $[2] = canvas;
610
- $[3] = enableDragDrop;
611
- $[4] = t11;
612
- } else t11 = $[4];
613
- let t12;
614
- let t13;
615
- if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
616
- t12 = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_awesome_flow_core_canvas.FlowEdgesSelection, {});
617
- t13 = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_awesome_flow_core_canvas.FlowConnectionStatus, {});
618
- $[5] = t12;
619
- $[6] = t13;
620
- } else {
621
- t12 = $[5];
622
- t13 = $[6];
623
- }
625
+ $[8] = canvas;
626
+ $[9] = enableDragDrop;
627
+ $[10] = t13;
628
+ } else t13 = $[10];
624
629
  let t14;
625
- if ($[7] !== autoLayout || $[8] !== enableEntitySpawning || $[9] !== showEntities || $[10] !== showScopes || $[11] !== showSystemModules || $[12] !== toolNodes) {
626
- t14 = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(flow_ecs_state_default, {
630
+ if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
631
+ t14 = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_awesome_flow_core_canvas.FlowConnectionStatus, {});
632
+ $[11] = t14;
633
+ } else t14 = $[11];
634
+ let t15;
635
+ if ($[12] !== autoLayout || $[13] !== enableEntitySpawning || $[14] !== showEntities || $[15] !== showScopes || $[16] !== showSystemModules || $[17] !== toolNodes) {
636
+ t15 = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(flow_ecs_state_default, {
627
637
  autoLayout,
628
638
  enableEntitySpawning,
629
639
  showEntities,
@@ -631,44 +641,34 @@ function FlowEcsCanvas(t0) {
631
641
  showSystemModules,
632
642
  toolNodes
633
643
  });
634
- $[7] = autoLayout;
635
- $[8] = enableEntitySpawning;
636
- $[9] = showEntities;
637
- $[10] = showScopes;
638
- $[11] = showSystemModules;
639
- $[12] = toolNodes;
640
- $[13] = t14;
641
- } else t14 = $[13];
642
- let t15;
643
- if ($[14] !== entityTypeTemplates || $[15] !== showTemplates) {
644
- t15 = showTemplates && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.Portal, {
645
- target: "#portal-navbar",
646
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_awesome_flow_core_canvas.FlowTemplatesList, {
647
- extraTemplates: entityTypeTemplates,
648
- nodeTypes: require_node_types.ecsNodeTypes
649
- })
650
- });
651
- $[14] = entityTypeTemplates;
652
- $[15] = showTemplates;
653
- $[16] = t15;
654
- } else t15 = $[16];
644
+ $[12] = autoLayout;
645
+ $[13] = enableEntitySpawning;
646
+ $[14] = showEntities;
647
+ $[15] = showScopes;
648
+ $[16] = showSystemModules;
649
+ $[17] = toolNodes;
650
+ $[18] = t15;
651
+ } else t15 = $[18];
655
652
  let t16;
656
- if ($[17] !== t11 || $[18] !== t14 || $[19] !== t15) {
653
+ if ($[19] !== beforeInsert || $[20] !== defaultPipelineExecution || $[21] !== layoutEngine || $[22] !== t13 || $[23] !== t15) {
657
654
  t16 = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_awesome_flow_core_canvas.FlowCanvasContext, {
658
655
  nodeTemplates: require_node_types.ecsNodeTemplates,
656
+ defaultPipelineExecution,
657
+ layoutEngine,
658
+ beforeInsert,
659
659
  children: [
660
- t11,
661
- t12,
662
660
  t13,
663
661
  t14,
664
662
  t15
665
663
  ]
666
664
  });
667
- $[17] = t11;
668
- $[18] = t14;
669
- $[19] = t15;
670
- $[20] = t16;
671
- } else t16 = $[20];
665
+ $[19] = beforeInsert;
666
+ $[20] = defaultPipelineExecution;
667
+ $[21] = layoutEngine;
668
+ $[22] = t13;
669
+ $[23] = t15;
670
+ $[24] = t16;
671
+ } else t16 = $[24];
672
672
  return t16;
673
673
  }
674
674
 
@@ -685,4 +685,4 @@ Object.defineProperty(exports, 'flow_ecs_state_default', {
685
685
  return flow_ecs_state_default;
686
686
  }
687
687
  });
688
- //# sourceMappingURL=canvas-WWAJ6C2l.cjs.map
688
+ //# sourceMappingURL=canvas-CC3xvbbA.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-CC3xvbbA.cjs","names":["useFlowStore","Node","useEffect","EntityNodeData","useBridgeStoreVersion","useEcsBridge","FlowEcsEdgeProxiesProps","nodesToConnect","FlowEcsEdgeModules","props","$","_c","onConnect","_temp","bridge","moduleVersion","t0","node","data","entity","sourceHandle","handles","find","_temp2","entityRepository","getEntity","systemModule","ecsFlowRepository","getSystemModuleNode","identity","proxy","entityType","targetHandle","_temp3","source","id","target","handleId","t1","t2","Symbol","for","h_0","h","connection","state","useFlowStore","Node","useEffect","EntityNodeData","useBridgeStoreVersion","useEcsBridge","FlowEcsEdgeProxiesProps","nodesToConnect","FlowEcsEdgeProxies","props","$","_c","onConnect","_temp","bridge","proxyVersion","t0","node","data","entity","sourceHandle","handles","find","_temp2","entityRepository","getEntity","proxies","Array","from","entityProxyRepository","getAllProxies","identity","proxy","values","flat","proxyNode","ecsFlowRepository","getEntityNode","targetHandle","_temp3","source","id","target","handleId","t1","t2","Symbol","for","h_0","h","connection","state","FlowContext","useFlowStore","Node","useContext","useEffect","useState","EntityNodeData","EcsNodeType","useEcsBridge","useEntityList","FlowEcsEdgeModules","FlowEcsEdgeProxies","FlowEcsEntities","$","_c","nodeFactory","addNodes","_temp","bridge","entities","t0","Symbol","for","entityNodes","setEntityNodes","t1","t2","nodesToAdd","nodesToConnect","entity","node","ecsFlowRepository","getEntityNode","identity","proxy","createNodeFromType","data","entityType","position","x","y","addEntityNode","push","length","t3","state","FlowContext","useFlowStore","Node","useContext","useEffect","SystemsModuleNodeData","EcsNodeType","useEcsBridge","useSystemsModuleList","FlowEcsModules","$","_c","nodeFactory","addNodes","_temp","bridge","modules","t0","t1","keys","Array","from","nodesToAdd","element","ecsFlowRepository","getSystemModuleNode","node","createNodeFromType","systemsModule","data","entityType","position","x","y","addSystemModuleNode","push","length","t2","Symbol","for","state","FlowContext","StoreContext","useFlowStore","Node","useContext","useEffect","shallow","EntityNodeData","ScopeGroupNodeData","EcsNodeType","useEcsBridge","useScopeList","FlowEcsScopes","$","_c","nodeFactory","flowStore","bridge","scopes","nodes","setGroups","setNodes","_temp","t0","length","changed","currentNodes","instance","getState","nextNodes","groups","scope","groupNode","ecsFlowRepository","getScopeGroupNode","scopeId","createNodeFromType","scopeGroup","data","title","position","x","y","className","addScopeGroupNode","unshift","childIds","entity","entities","entityNode","getEntityNode","identity","proxy","push","id","scopedNodeIds","Set","Object","values","flat","groupIds","keys","orderedNodes","map","node","has","type","parentId","entries","find","t1","children","includes","undefined","extent","const","sort","_temp2","t2","Symbol","for","a","b","Number","isGroup","state","useFlowStore","FlowState","Node","useEffect","shallow","EntityNodeData","EcsNodeType","useEcsBridge","selector","state","nodes","updateNodeData","FlowEcsSpawnEntities","$","_c","bridge","t0","t1","node","type","entity","data","spawn","update","enqueueEntitySpawn","id","spawnStatus","entityType","ecsFlowRepository","addEntityNode","t2","Symbol","for","FlowContext","useFlowStore","Node","useContext","useEffect","EcsToolNodeData","EcsNodeType","useEcsBridge","defaultEcsToolNodes","scheduler","eventTimeline","telemetry","updateQueue","const","EcsToolNodeType","FlowEcsToolNodesProps","nodes","FlowEcsToolNodes","t0","$","_c","t1","undefined","nodeFactory","addNodes","_temp","bridge","t2","t3","nodesToAdd","forEach","type","index","ecsFlowRepository","getToolNode","node","createNodeFromType","position","x","y","addToolNode","push","length","t4","Symbol","for","state","FlowAutoLayout","memo","useEffect","useState","useBridgeStoreVersion","useEcsBridge","FlowEcsEntities","FlowEcsModules","FlowEcsScopes","FlowEcsSpawnEntities","FlowEcsToolNodes","EcsToolNodeType","FlowEcsStateProps","showSystemModules","showEntities","autoLayout","enableEntitySpawning","showScopes","toolNodes","FlowEcsState","props","$","_c","refreshLayout","setRefreshLayout","bridge","entityVersion","moduleVersion","t0","Symbol","for","frame","requestAnimationFrame","cancelAnimationFrame","t1","ecsFlowRepository","sizeNodes","t2","t3","t4","t5","t6","Array","isArray","undefined","t7","t8","FlowCanvasContext","FlowCanvasContextProps","FlowCanvasDropWrapper","FlowCanvasRenderIntersections","FlowCanvasRenderProps","FlowCanvasWrapper","FlowConnectionStatus","useState","ecsNodeTemplates","ecsNodeTypes","FlowEcsState","FlowEcsStateProps","useEntityTypeTemplates","FlowEcsCanvasProps","Partial","Pick","hybrid","enableDragDrop","showEntityTypeTemplates","showTemplates","FlowEcsCanvas","t0","$","_c","autoLayout","t1","enableEntitySpawning","t2","t3","showEntities","t4","t5","showScopes","t6","showSystemModules","t7","t8","toolNodes","t9","defaultPipelineExecution","layoutEngine","beforeInsert","undefined","over","setOver","entityTypeTemplates","t10","Symbol","for","t11","extraTemplates","t12","canvas","t13","t14","t15","t16"],"sources":["../src/flow/flow-ecs-edge-modules.tsx","../src/flow/flow-ecs-edge-proxies.tsx","../src/flow/flow-ecs-entities.tsx","../src/flow/flow-ecs-modules.tsx","../src/flow/flow-ecs-scopes.tsx","../src/flow/flow-ecs-spawn-entities.tsx","../src/flow/flow-ecs-tool-nodes.tsx","../src/flow/flow-ecs-state.tsx","../src/canvas/flow-ecs-canvas.tsx"],"sourcesContent":["import { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useEffect } from 'react';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { useBridgeStoreVersion, useEcsBridge } from '../hooks';\n\nexport type FlowEcsEdgeProxiesProps = {\n nodesToConnect: Node<EntityNodeData>[];\n};\n\nfunction FlowEcsEdgeModules(props: Readonly<FlowEcsEdgeProxiesProps>) {\n const { nodesToConnect } = props;\n\n const onConnect = useFlowStore((state: { onConnect: any }) => state.onConnect);\n\n const bridge = useEcsBridge();\n const moduleVersion = useBridgeStoreVersion('modules');\n\n useEffect(() => {\n for (const node of nodesToConnect) {\n if (!node.data.entity) {\n continue;\n }\n\n const sourceHandle = node.data.handles.find((h) => h.connection === 'source');\n const entity = bridge.entityRepository.getEntity(node.data.entity);\n\n const systemModule = bridge.ecsFlowRepository.getSystemModuleNode(entity.identity.proxy.entityType);\n const targetHandle = systemModule?.data.handles.find((h) => h.connection === 'target');\n\n if (sourceHandle && targetHandle) {\n onConnect({\n source: node.id,\n target: systemModule.id,\n sourceHandle: sourceHandle.handleId,\n targetHandle: targetHandle.handleId\n });\n }\n }\n }, [bridge, moduleVersion, nodesToConnect, onConnect]);\n\n return <></>;\n}\n\nexport default FlowEcsEdgeModules;\n","import { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useEffect } from 'react';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { useBridgeStoreVersion, useEcsBridge } from '../hooks';\n\nexport type FlowEcsEdgeProxiesProps = {\n nodesToConnect: Node<EntityNodeData>[];\n};\n\nfunction FlowEcsEdgeProxies(props: Readonly<FlowEcsEdgeProxiesProps>) {\n const { nodesToConnect } = props;\n\n const onConnect = useFlowStore((state: { onConnect: any }) => state.onConnect);\n\n const bridge = useEcsBridge();\n const proxyVersion = useBridgeStoreVersion('proxies');\n\n useEffect(() => {\n for (const node of nodesToConnect) {\n if (!node.data.entity) {\n continue;\n }\n\n const sourceHandle = node.data.handles.find((h) => h.connection === 'source');\n const entity = bridge.entityRepository.getEntity(node.data.entity);\n const proxies = Array.from(bridge.entityProxyRepository.getAllProxies(entity.identity.proxy).values()).flat();\n\n for (const proxy of proxies) {\n const proxyNode = bridge.ecsFlowRepository.getEntityNode(proxy);\n\n if (proxyNode) {\n const targetHandle = proxyNode.data.handles.find((h) => h.connection === 'target');\n\n if (sourceHandle && targetHandle) {\n onConnect({\n source: node.id,\n target: proxyNode.id,\n sourceHandle: sourceHandle.handleId,\n targetHandle: targetHandle.handleId\n });\n }\n }\n }\n }\n }, [bridge, nodesToConnect, onConnect, proxyVersion]);\n\n return <></>;\n}\n\nexport default FlowEcsEdgeProxies;\n","import { FlowContext } from '@awesome-flow/core/abstract';\nimport { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useContext, useEffect, useState } from 'react';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { useEcsBridge, useEntityList } from '../hooks';\nimport FlowEcsEdgeModules from './flow-ecs-edge-modules';\nimport FlowEcsEdgeProxies from './flow-ecs-edge-proxies';\n\nfunction FlowEcsEntities() {\n const { nodeFactory } = useContext(FlowContext);\n const addNodes = useFlowStore((state) => state.addNodes);\n\n const bridge = useEcsBridge();\n const entities = useEntityList();\n const [entityNodes, setEntityNodes] = useState<Node<EntityNodeData>[]>([]);\n\n useEffect(() => {\n const nodesToAdd: Node<EntityNodeData>[] = [];\n const nodesToConnect: Node<EntityNodeData>[] = [];\n\n for (const entity of entities) {\n let node = bridge.ecsFlowRepository.getEntityNode(entity.identity.proxy);\n\n if (!node) {\n node = nodeFactory.createNodeFromType<EntityNodeData>(EcsNodeType.entity);\n node.data.entity = entity.identity.proxy;\n node.data.entityType = entity.identity.proxy.entityType;\n node.position = { x: 0, y: 0 };\n\n bridge.ecsFlowRepository.addEntityNode(node);\n nodesToAdd.push(node);\n }\n\n nodesToConnect.push(node);\n }\n\n setEntityNodes(nodesToConnect);\n if (nodesToAdd.length) {\n addNodes(nodesToAdd);\n }\n }, [addNodes, bridge, entities, nodeFactory]);\n\n return (\n <>\n <FlowEcsEdgeProxies nodesToConnect={entityNodes} />\n <FlowEcsEdgeModules nodesToConnect={entityNodes} />\n </>\n );\n}\n\nexport default FlowEcsEntities;\n","import { FlowContext } from '@awesome-flow/core/abstract';\nimport { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useContext, useEffect } from 'react';\nimport { SystemsModuleNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { useEcsBridge, useSystemsModuleList } from '../hooks';\n\nfunction FlowEcsModules() {\n const { nodeFactory } = useContext(FlowContext);\n const addNodes = useFlowStore((state) => state.addNodes);\n\n const bridge = useEcsBridge();\n const modules = useSystemsModuleList();\n\n useEffect(() => {\n const keys = Array.from(modules.keys());\n\n const nodesToAdd: Node<SystemsModuleNodeData>[] = [];\n\n for (const element of keys) {\n if (bridge.ecsFlowRepository.getSystemModuleNode(element)) {\n continue;\n }\n\n const node = nodeFactory.createNodeFromType<SystemsModuleNodeData>(EcsNodeType.systemsModule);\n\n node.data.entityType = element;\n node.position = { x: 0, y: 0 };\n\n bridge.ecsFlowRepository.addSystemModuleNode(node);\n nodesToAdd.push(node);\n }\n\n if (nodesToAdd.length) {\n addNodes(nodesToAdd);\n }\n }, [addNodes, bridge, modules, nodeFactory]);\n\n return <></>;\n}\n\nexport default FlowEcsModules;\n","import { FlowContext, StoreContext } from '@awesome-flow/core/abstract';\nimport { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useContext, useEffect } from 'react';\nimport { shallow } from 'zustand/shallow';\nimport { EntityNodeData, ScopeGroupNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { useEcsBridge, useScopeList } from '../hooks';\n\nfunction FlowEcsScopes() {\n const { nodeFactory } = useContext(FlowContext);\n const { flowStore } = useContext(StoreContext);\n const bridge = useEcsBridge();\n const scopes = useScopeList();\n\n const { nodes, setGroups, setNodes } = useFlowStore(\n (state) => ({\n nodes: state.nodes,\n setGroups: state.setGroups,\n setNodes: state.setNodes\n }),\n shallow\n );\n\n useEffect(() => {\n if (!scopes.length) {\n return;\n }\n\n let changed = false;\n const currentNodes = flowStore.instance.getState().nodes;\n const nextNodes = [...currentNodes];\n const groups: Record<string, string[]> = {};\n\n for (const scope of scopes) {\n let groupNode = bridge.ecsFlowRepository.getScopeGroupNode(scope.scopeId);\n\n if (!groupNode) {\n groupNode = nodeFactory.createNodeFromType<ScopeGroupNodeData>(EcsNodeType.scopeGroup);\n groupNode.data.scopeId = scope.scopeId;\n groupNode.data.title = 'Scope';\n groupNode.position = { x: 0, y: 0 };\n groupNode.className = 'react-flow__node-group';\n\n bridge.ecsFlowRepository.addScopeGroupNode(groupNode);\n nextNodes.unshift(groupNode);\n changed = true;\n }\n\n const childIds: string[] = [];\n for (const entity of scope.entities) {\n const entityNode = bridge.ecsFlowRepository.getEntityNode(entity.identity.proxy) as Node<EntityNodeData> | undefined;\n if (!entityNode) {\n continue;\n }\n\n childIds.push(entityNode.id);\n }\n\n groups[groupNode.id] = childIds;\n }\n\n const scopedNodeIds = new Set(Object.values(groups).flat());\n const groupIds = new Set(Object.keys(groups));\n const orderedNodes = nextNodes\n .map((node) => {\n if (groupIds.has(node.id)) {\n return node;\n }\n\n if (node.type !== EcsNodeType.entity) {\n return node;\n }\n\n const parentId = scopedNodeIds.has(node.id)\n ? Object.entries(groups).find(([, children]) => children.includes(node.id))?.[0]\n : undefined;\n\n if (node.parentId !== parentId) {\n changed = true;\n return {\n ...node,\n extent: parentId ? ('parent' as const) : undefined,\n parentId\n };\n }\n\n return node;\n })\n .sort((a, b) => Number(!a.data?.isGroup) - Number(!b.data?.isGroup));\n\n if (changed) {\n setNodes(orderedNodes);\n }\n\n setGroups(groups);\n }, [bridge, flowStore, nodeFactory, nodes, scopes, setGroups, setNodes]);\n\n return <></>;\n}\n\nexport default FlowEcsScopes;\n","import { useFlowStore } from '@awesome-flow/core/hooks';\nimport { FlowState } from '@awesome-flow/core/stores';\nimport { Node } from '@xyflow/react';\nimport { useEffect } from 'react';\nimport { shallow } from 'zustand/shallow';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { useEcsBridge } from '../hooks';\n\nconst selector = (state: FlowState) => ({\n nodes: state.nodes,\n updateNodeData: state.updateNodeData\n});\n\nfunction FlowEcsSpawnEntities() {\n const bridge = useEcsBridge();\n const { nodes, updateNodeData } = useFlowStore(selector, shallow);\n\n useEffect(() => {\n for (const node of nodes as Node<EntityNodeData>[]) {\n if (node.type !== EcsNodeType.entity || !node.data.spawn || node.data.entity) {\n continue;\n }\n\n const update = bridge.enqueueEntitySpawn(node.data.spawn);\n if (!update) {\n updateNodeData<EntityNodeData>(node.id, {\n spawnStatus: 'missing-scheduler'\n });\n continue;\n }\n\n const data: Partial<EntityNodeData> = {\n entity: update.entity,\n entityType: update.entity.entityType,\n spawnStatus: 'queued'\n };\n\n bridge.ecsFlowRepository.addEntityNode({\n ...node,\n data: {\n ...node.data,\n ...data\n }\n });\n updateNodeData<EntityNodeData>(node.id, data);\n }\n }, [bridge, nodes, updateNodeData]);\n\n return <></>;\n}\n\nexport default FlowEcsSpawnEntities;\n","import { FlowContext } from '@awesome-flow/core/abstract';\nimport { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useContext, useEffect } from 'react';\nimport { EcsToolNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { useEcsBridge } from '../hooks';\n\nexport const defaultEcsToolNodes = [\n EcsNodeType.scheduler,\n EcsNodeType.eventTimeline,\n EcsNodeType.telemetry,\n EcsNodeType.updateQueue\n] as const;\n\nexport type EcsToolNodeType = (typeof defaultEcsToolNodes)[number];\n\nexport type FlowEcsToolNodesProps = {\n nodes?: readonly EcsToolNodeType[];\n};\n\nfunction FlowEcsToolNodes({ nodes = defaultEcsToolNodes }: Readonly<FlowEcsToolNodesProps>) {\n const { nodeFactory } = useContext(FlowContext);\n const addNodes = useFlowStore((state) => state.addNodes);\n const bridge = useEcsBridge();\n\n useEffect(() => {\n const nodesToAdd: Node<EcsToolNodeData>[] = [];\n\n nodes.forEach((type, index) => {\n if (bridge.ecsFlowRepository.getToolNode(type)) {\n return;\n }\n\n const node = nodeFactory.createNodeFromType<EcsToolNodeData>(type);\n node.position = { x: 980, y: index * 220 };\n bridge.ecsFlowRepository.addToolNode(node);\n nodesToAdd.push(node);\n });\n\n if (nodesToAdd.length) {\n addNodes(nodesToAdd);\n }\n }, [addNodes, bridge, nodeFactory, nodes]);\n\n return <></>;\n}\n\nexport default FlowEcsToolNodes;\n","import { FlowAutoLayout } from '@awesome-flow/core/canvas';\nimport { memo, useEffect, useState } from 'react';\nimport { useBridgeStoreVersion, useEcsBridge } from '../hooks';\nimport FlowEcsEntities from './flow-ecs-entities';\nimport FlowEcsModules from './flow-ecs-modules';\nimport FlowEcsScopes from './flow-ecs-scopes';\nimport FlowEcsSpawnEntities from './flow-ecs-spawn-entities';\nimport FlowEcsToolNodes, { EcsToolNodeType } from './flow-ecs-tool-nodes';\n\nexport type FlowEcsStateProps = {\n showSystemModules: boolean;\n showEntities: boolean;\n autoLayout: boolean;\n enableEntitySpawning?: boolean;\n showScopes?: boolean;\n toolNodes?: boolean | readonly EcsToolNodeType[];\n};\n\nfunction FlowEcsState(props: Readonly<FlowEcsStateProps>) {\n const [refreshLayout, setRefreshLayout] = useState(false);\n const bridge = useEcsBridge();\n const entityVersion = useBridgeStoreVersion('entities');\n const moduleVersion = useBridgeStoreVersion('modules');\n\n useEffect(() => {\n setRefreshLayout(false);\n const frame = requestAnimationFrame(() => setRefreshLayout(true));\n\n return () => cancelAnimationFrame(frame);\n }, [bridge.ecsFlowRepository.sizeNodes, entityVersion, moduleVersion]);\n\n return (\n <>\n {props.showSystemModules && <FlowEcsModules />}\n {props.showEntities && <FlowEcsEntities />}\n {props.enableEntitySpawning && <FlowEcsSpawnEntities />}\n {props.showScopes && <FlowEcsScopes />}\n {props.toolNodes && <FlowEcsToolNodes nodes={Array.isArray(props.toolNodes) ? props.toolNodes : undefined} />}\n {props.autoLayout && <FlowAutoLayout refreshLayout={refreshLayout} />}\n </>\n );\n}\n\nexport default memo(FlowEcsState);\n","import {\n FlowCanvasContext,\n type FlowCanvasContextProps,\n FlowCanvasDropWrapper,\n FlowCanvasRenderIntersections,\n type FlowCanvasRenderProps,\n FlowCanvasWrapper,\n FlowConnectionStatus\n} from '@awesome-flow/core/canvas';\nimport { useState } from 'react';\nimport { ecsNodeTemplates, ecsNodeTypes } from '../abstract/node-types';\nimport FlowEcsState, { FlowEcsStateProps } from '../flow/flow-ecs-state';\nimport { useEntityTypeTemplates } from '../hooks';\n\nexport type FlowEcsCanvasProps = Partial<FlowEcsStateProps> &\n Pick<FlowCanvasContextProps, 'defaultPipelineExecution' | 'layoutEngine' | 'beforeInsert'> & {\n /** Shared production rendering policy; hybrid by default, false opts out. */\n hybrid?: FlowCanvasRenderProps['hybrid'];\n enableDragDrop?: boolean;\n showEntityTypeTemplates?: boolean;\n showTemplates?: boolean;\n };\n\nexport function FlowEcsCanvas({\n autoLayout = true,\n enableEntitySpawning = true,\n enableDragDrop = true,\n showEntities = true,\n showEntityTypeTemplates = true,\n showScopes = true,\n showSystemModules = true,\n showTemplates = false,\n toolNodes = false,\n hybrid,\n defaultPipelineExecution,\n layoutEngine,\n beforeInsert\n}: Readonly<FlowEcsCanvasProps>) {\n const [over, setOver] = useState(false);\n const entityTypeTemplates = useEntityTypeTemplates(showEntityTypeTemplates);\n const canvas = (\n <FlowCanvasRenderIntersections\n canvasHighlighted={over}\n nodeTypes={ecsNodeTypes}\n hybrid={hybrid}\n controls={{ autoLayout: true }}\n templates={showTemplates ? { extraTemplates: entityTypeTemplates } : false}\n />\n );\n\n return (\n <FlowCanvasContext\n nodeTemplates={ecsNodeTemplates}\n defaultPipelineExecution={defaultPipelineExecution}\n layoutEngine={layoutEngine}\n beforeInsert={beforeInsert}\n >\n {enableDragDrop ? (\n <FlowCanvasDropWrapper setOver={setOver}>{canvas}</FlowCanvasDropWrapper>\n ) : (\n <FlowCanvasWrapper>{canvas}</FlowCanvasWrapper>\n )}\n <FlowConnectionStatus />\n <FlowEcsState\n autoLayout={autoLayout}\n enableEntitySpawning={enableEntitySpawning}\n showEntities={showEntities}\n showScopes={showScopes}\n showSystemModules={showSystemModules}\n toolNodes={toolNodes}\n />\n </FlowCanvasContext>\n );\n}\n"],"mappings":"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"}