@awesome-flow/ecs 0.7.0 → 0.8.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.
package/dist/index.cjs CHANGED
@@ -1,42 +1,6 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
-
19
- // src/index.ts
20
- var src_exports = {};
21
- __export(src_exports, {
22
- EcsFlowContext: () => EcsFlowContext,
23
- EcsFlowRepository: () => EcsFlowRepository,
24
- EcsHandleDataType: () => EcsHandleDataType,
25
- EcsNodeType: () => EcsNodeType,
26
- EcsTemplateGroup: () => EcsTemplateGroup,
27
- EntityNode: () => node_entity_default,
28
- EntityNodeTemplate: () => EntityNodeTemplate,
29
- FlowEcsState: () => flow_ecs_state_default,
30
- SystemsModuleNode: () => node_systems_module_default,
31
- SystemsModuleNodeTemplate: () => SystemsModuleNodeTemplate,
32
- ecsNodeTemplates: () => ecsNodeTemplates,
33
- ecsNodeTypes: () => ecsNodeTypes
34
- });
35
- module.exports = __toCommonJS(src_exports);
36
-
37
- // src/abstract/ecs-flow-context.ts
38
- var import_react = require("react");
39
- var EcsFlowContext = (0, import_react.createContext)(null);
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2;// src/abstract/ecs-flow-context.ts
2
+ var _react = require('react');
3
+ var EcsFlowContext = _react.createContext.call(void 0, null);
40
4
 
41
5
  // src/utils/id-generator.ts
42
6
  var EcsIdGenerator = class {
@@ -47,7 +11,7 @@ var EcsIdGenerator = class {
47
11
 
48
12
  // src/abstract/ecs-flow-repository.ts
49
13
  var EcsFlowRepository = class {
50
- nodes;
14
+
51
15
  constructor() {
52
16
  this.nodes = /* @__PURE__ */ new Map();
53
17
  }
@@ -78,200 +42,123 @@ var EcsHandleDataType = /* @__PURE__ */ ((EcsHandleDataType2) => {
78
42
  return EcsHandleDataType2;
79
43
  })(EcsHandleDataType || {});
80
44
 
81
- // src/nodes/node-systems-module.tsx
82
- var import_layout = require("@awesome-flow/core/layout");
83
- var import_react5 = require("react");
84
- var import_core4 = require("@mantine/core");
85
-
86
- // src/layout/systems-module-layout.tsx
87
- var import_systems = require("@awesome-ecs/abstract/systems");
88
- var import_core3 = require("@mantine/core");
89
- var import_react4 = require("react");
90
-
91
- // src/components/pipeline-middleware-list.tsx
92
- var import_core2 = require("@mantine/core");
45
+ // src/nodes/node-entity.tsx
46
+ var _layout = require('@awesome-flow/core/layout');
47
+ var _core = require('@mantine/core');
93
48
 
94
- // src/components/badge-list.tsx
95
- var import_core = require("@mantine/core");
96
- var import_react3 = require("react");
97
49
 
98
50
  // src/components/formatter-camel-case.tsx
99
- var import_react2 = require("react");
51
+
100
52
  function CamelCaseFormatter(props) {
101
- const value = (0, import_react2.useMemo)(
102
- () => props.value?.toString().replace(/([a-z])([A-Z])/g, "$1 $2"),
53
+ const value = _react.useMemo.call(void 0,
54
+ () => _optionalChain([props, 'access', _ => _.value, 'optionalAccess', _2 => _2.toString, 'call', _3 => _3(), 'access', _4 => _4.replace, 'call', _5 => _5(/([a-z])([A-Z])/g, "$1 $2")]),
103
55
  [props.value]
104
56
  );
105
57
  return value;
106
58
  }
107
- var formatter_camel_case_default = (0, import_react2.memo)(CamelCaseFormatter);
59
+ var formatter_camel_case_default = _react.memo.call(void 0, CamelCaseFormatter);
108
60
 
109
- // src/components/badge-list.tsx
110
- var import_jsx_runtime = require("react/jsx-runtime");
111
- function BadgeList(props) {
112
- return props.items.map((value, i) => {
113
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.Badge, { ...props.badge || [], children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(formatter_camel_case_default, { value }) }, i);
114
- });
115
- }
116
- var badge_list_default = (0, import_react3.memo)(BadgeList);
61
+ // src/layout/entity-layout.tsx
117
62
 
118
- // src/components/pipeline-middleware-list.tsx
119
- var import_jsx_runtime2 = require("react/jsx-runtime");
120
- function PipelineMiddlewareList(props) {
121
- let middleware = [];
122
- if (props.pipeline) {
123
- middleware = props.pipeline["middleware"];
124
- }
125
- const components = middleware.map((m) => {
126
- return m.name || m.constructor.name;
127
- });
128
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_core2.Accordion.Item, { value: props.label, children: [
129
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_core2.Accordion.Control, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_core2.Badge, { fullWidth: true, variant: "light", rightSection: components.length, children: props.label }) }),
130
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_core2.Accordion.Panel, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_core2.Stack, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(badge_list_default, { items: components, badge: { variant: "outline" } }) }) })
131
- ] }, props.label);
132
- }
133
- var pipeline_middleware_list_default = PipelineMiddlewareList;
134
63
 
135
- // src/layout/systems-module-layout.tsx
136
- var import_jsx_runtime3 = require("react/jsx-runtime");
137
- function SystemsModuleLayout(props) {
138
- const { module: module2 } = props;
139
- const runtimeContext = module2["runtimeContext"];
140
- const { systemContext } = runtimeContext;
141
- const { status } = (0, import_react4.useMemo)(() => {
142
- return systemContext.runtime;
143
- }, [systemContext.runtime.status]);
144
- const init = runtimeContext.systemPipelines.get(import_systems.SystemType.initialize);
145
- const update = runtimeContext.systemPipelines.get(import_systems.SystemType.update);
146
- const render = runtimeContext.systemPipelines.get(import_systems.SystemType.render);
147
- const sync = runtimeContext.systemPipelines.get(import_systems.SystemType.sync);
148
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
149
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_core3.Text, { children: [
150
- "Status: ",
151
- status
152
- ] }),
153
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_core3.Accordion, { children: [
154
- init && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(pipeline_middleware_list_default, { pipeline: init, label: "Initialize" }),
155
- update && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(pipeline_middleware_list_default, { pipeline: update, label: "Update" }),
156
- render && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(pipeline_middleware_list_default, { pipeline: render, label: "Render" }),
157
- sync && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(pipeline_middleware_list_default, { pipeline: sync, label: "Sync" })
158
- ] })
159
- ] });
160
- }
161
- var systems_module_layout_default = SystemsModuleLayout;
64
+ // src/components/entity-component-list.tsx
162
65
 
163
- // src/nodes/node-systems-module.tsx
164
- var import_jsx_runtime4 = require("react/jsx-runtime");
165
- function SystemsModuleNode({ id, data, selected, type }) {
166
- const { systemsModuleRepository } = (0, import_react5.useContext)(EcsFlowContext);
167
- const module2 = systemsModuleRepository.get(data.entityType);
168
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
169
- import_layout.NodeContainer,
170
- {
171
- id,
172
- selected,
173
- data,
174
- title: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_core4.Badge, { fullWidth: true, color: "indigo", variant: "transparent", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(formatter_camel_case_default, { value: data.entityType }) }),
175
- type,
176
- children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(systems_module_layout_default, { type: data.entityType, module: module2 })
177
- }
178
- );
179
- }
180
- var node_systems_module_default = SystemsModuleNode;
181
66
 
182
- // src/nodes/node-entity.tsx
183
- var import_layout2 = require("@awesome-flow/core/layout");
184
- var import_core12 = require("@mantine/core");
185
- var import_react12 = require("react");
186
67
 
187
- // src/layout/entity-layout.tsx
188
- var import_core11 = require("@mantine/core");
68
+ // src/components/entity-component-inspector.tsx
189
69
 
190
- // src/components/entity-component-list.tsx
191
- var import_core7 = require("@mantine/core");
192
- var import_react8 = require("react");
70
+ var _hooks = require('@mantine/hooks');
193
71
 
194
- // src/components/entity-component-inspector.tsx
195
- var import_core6 = require("@mantine/core");
196
- var import_react7 = require("react");
197
- var import_hooks = require("@mantine/hooks");
198
72
 
199
73
  // src/components/object-inspector.tsx
200
- var import_core5 = require("@mantine/core");
201
- var import_react6 = require("react");
202
- var import_react_inspector = require("react-inspector");
203
- var import_jsx_runtime5 = require("react/jsx-runtime");
74
+
75
+
76
+ var _reactinspector = require('react-inspector');
77
+ var _jsxruntime = require('react/jsx-runtime');
204
78
  function ObjectInspector(props) {
205
- const colorScheme = (0, import_core5.useComputedColorScheme)();
206
- const theme = (0, import_react6.useMemo)(
79
+ const colorScheme = _core.useComputedColorScheme.call(void 0, );
80
+ const theme = _react.useMemo.call(void 0,
207
81
  () => colorScheme === "dark" ? "chromeDark" : "chromeLight",
208
82
  [colorScheme]
209
83
  );
210
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react_inspector.Inspector, { table: false, theme, data: props.data });
84
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactinspector.Inspector, { table: false, theme, data: props.data });
211
85
  }
212
- var object_inspector_default = (0, import_react6.memo)(ObjectInspector);
86
+ var object_inspector_default = _react.memo.call(void 0, ObjectInspector);
213
87
 
214
88
  // src/components/entity-component-inspector.tsx
215
- var import_jsx_runtime6 = require("react/jsx-runtime");
89
+
216
90
  function EntityComponentInspector(props) {
217
- const [opened, { toggle }] = (0, import_hooks.useDisclosure)(false);
218
- const buttonColor = (0, import_react7.useMemo)(() => opened ? "light" : "indigo", [opened]);
219
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_core6.Box, { children: [
220
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_core6.Button, { variant: "outline", size: "xs", onClick: toggle, color: buttonColor, fullWidth: true, children: props.component.componentType }),
221
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_core6.Collapse, { in: opened, children: opened && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(object_inspector_default, { data: props.component }) })
91
+ const [opened, { toggle }] = _hooks.useDisclosure.call(void 0, false);
92
+ const buttonColor = _react.useMemo.call(void 0, () => opened ? "light" : "indigo", [opened]);
93
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _core.Box, { children: [
94
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Button, { variant: "outline", size: "xs", onClick: toggle, color: buttonColor, fullWidth: true, children: props.component.componentType }),
95
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Collapse, { in: opened, children: opened && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, object_inspector_default, { data: props.component }) })
222
96
  ] });
223
97
  }
224
- var entity_component_inspector_default = (0, import_react7.memo)(EntityComponentInspector);
98
+ var entity_component_inspector_default = _react.memo.call(void 0, EntityComponentInspector);
225
99
 
226
100
  // src/components/entity-component-list.tsx
227
- var import_jsx_runtime7 = require("react/jsx-runtime");
101
+
228
102
  function EntityComponentList(props) {
229
103
  const components = Array.from(props.entity.components.values());
230
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_core7.Accordion.Item, { value: "components", children: [
231
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_core7.Accordion.Control, { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_core7.Badge, { fullWidth: true, variant: "light", rightSection: components.length, children: "Components" }) }),
232
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_core7.Accordion.Panel, { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_core7.Stack, { children: components.map((c, i) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(entity_component_inspector_default, { component: c }, i)) }) })
104
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _core.Accordion.Item, { value: "components", children: [
105
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Accordion.Control, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Badge, { fullWidth: true, variant: "light", rightSection: components.length, children: "Components" }) }),
106
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Accordion.Panel, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Stack, { children: components.map((c, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, entity_component_inspector_default, { component: c }, i)) }) })
233
107
  ] }, "components");
234
108
  }
235
- var entity_component_list_default = (0, import_react8.memo)(EntityComponentList);
109
+ var entity_component_list_default = _react.memo.call(void 0, EntityComponentList);
110
+
111
+ // src/components/entity-proxy-list.tsx
112
+
113
+
114
+
115
+ // src/components/badge-list.tsx
116
+
117
+
118
+
119
+ function BadgeList(props) {
120
+ return props.items.map((value, i) => {
121
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Badge, { ...props.badge || [], children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, formatter_camel_case_default, { value }) }, i);
122
+ });
123
+ }
124
+ var badge_list_default = _react.memo.call(void 0, BadgeList);
236
125
 
237
126
  // src/components/entity-proxy-list.tsx
238
- var import_core8 = require("@mantine/core");
239
- var import_react9 = require("react");
240
- var import_jsx_runtime8 = require("react/jsx-runtime");
127
+
241
128
  function EntityProxyList(props) {
242
129
  const proxies = Array.from(props.entity.proxies.values()).map((c) => c.values());
243
130
  const items = proxies.map((p) => Array.from(p).map((k) => EcsIdGenerator.entityProxy(k))).flat();
244
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_core8.Accordion.Item, { value: "proxies", children: [
245
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_core8.Accordion.Control, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_core8.Badge, { fullWidth: true, variant: "light", rightSection: items.length, children: "Proxies" }) }),
246
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_core8.Accordion.Panel, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_core8.Stack, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(badge_list_default, { items, badge: { variant: "outline" } }) }) })
131
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _core.Accordion.Item, { value: "proxies", children: [
132
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Accordion.Control, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Badge, { fullWidth: true, variant: "light", rightSection: items.length, children: "Proxies" }) }),
133
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Accordion.Panel, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Stack, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, badge_list_default, { items, badge: { variant: "outline" } }) }) })
247
134
  ] }, "proxies");
248
135
  }
249
- var entity_proxy_list_default = (0, import_react9.memo)(EntityProxyList);
136
+ var entity_proxy_list_default = _react.memo.call(void 0, EntityProxyList);
250
137
 
251
138
  // src/components/entity-subscription-list.tsx
252
- var import_core9 = require("@mantine/core");
253
- var import_react10 = require("react");
254
- var import_jsx_runtime9 = require("react/jsx-runtime");
139
+
140
+
141
+
255
142
  function EntitySubscriptionList(props) {
256
- const { entityEventsManager } = (0, import_react10.useContext)(EcsFlowContext);
143
+ const { entityEventsManager } = _react.useContext.call(void 0, EcsFlowContext);
257
144
  const subscriptions = entityEventsManager.getSubscriptionsForEntity(props.entity.myProxy);
258
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_core9.Accordion.Item, { value: "subscriptions", children: [
259
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_core9.Accordion.Control, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_core9.Badge, { fullWidth: true, variant: "light", rightSection: subscriptions.length, children: "Events" }) }),
260
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_core9.Accordion.Panel, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_core9.Stack, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(badge_list_default, { items: subscriptions, badge: { variant: "outline" } }) }) })
145
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _core.Accordion.Item, { value: "subscriptions", children: [
146
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Accordion.Control, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Badge, { fullWidth: true, variant: "light", rightSection: subscriptions.length, children: "Events" }) }),
147
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Accordion.Panel, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Stack, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, badge_list_default, { items: subscriptions, badge: { variant: "outline" } }) }) })
261
148
  ] }, "subscriptions");
262
149
  }
263
- var entity_subscription_list_default = (0, import_react10.memo)(EntitySubscriptionList);
150
+ var entity_subscription_list_default = _react.memo.call(void 0, EntitySubscriptionList);
264
151
 
265
152
  // src/components/entity-update-counter.tsx
266
- var import_core10 = require("@mantine/core");
267
- var import_react11 = require("react");
268
- var import_jsx_runtime10 = require("react/jsx-runtime");
153
+
154
+
155
+
269
156
  function EntityUpdateCounter(props) {
270
- const [, setRefresh] = (0, import_react11.useState)(0);
271
- const { entityUpdateCounter } = (0, import_react11.useContext)(EcsFlowContext);
157
+ const [, setRefresh] = _react.useState.call(void 0, 0);
158
+ const { entityUpdateCounter } = _react.useContext.call(void 0, EcsFlowContext);
272
159
  const updates = entityUpdateCounter.getUpdateCount(props.entityUid) || 0;
273
160
  const removes = entityUpdateCounter.getRemoveCount(props.entityUid) || 0;
274
- (0, import_react11.useEffect)(() => {
161
+ _react.useEffect.call(void 0, () => {
275
162
  const interval = setInterval(() => {
276
163
  setRefresh((refresh) => refresh + 1);
277
164
  }, 1e3);
@@ -280,52 +167,127 @@ function EntityUpdateCounter(props) {
280
167
  clearInterval(interval);
281
168
  };
282
169
  }, []);
283
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
284
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_core10.Badge, { variant: "light", children: updates }),
285
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_core10.Badge, { variant: "light", color: "orange", children: removes })
170
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
171
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Badge, { variant: "light", children: updates }),
172
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Badge, { variant: "light", color: "orange", children: removes })
286
173
  ] });
287
174
  }
288
- var entity_update_counter_default = (0, import_react11.memo)(EntityUpdateCounter);
175
+ var entity_update_counter_default = _react.memo.call(void 0, EntityUpdateCounter);
289
176
 
290
177
  // src/layout/entity-layout.tsx
291
- var import_jsx_runtime11 = require("react/jsx-runtime");
178
+
292
179
  function EntityLayout({ entity }) {
293
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
294
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_core11.Group, { children: [
295
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_core11.Badge, { variant: "outline", color: "orange", children: entity.myProxy.entityUid }),
296
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(entity_update_counter_default, { entityUid: entity.myProxy.entityUid })
180
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
181
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _core.Group, { children: [
182
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Badge, { variant: "outline", color: "orange", children: entity.myProxy.entityUid }),
183
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, entity_update_counter_default, { entityUid: entity.myProxy.entityUid })
297
184
  ] }),
298
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_core11.Divider, { my: 5 }),
299
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_core11.Accordion, { children: [
300
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(entity_component_list_default, { entity }),
301
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(entity_proxy_list_default, { entity }),
302
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(entity_subscription_list_default, { entity })
185
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Divider, { my: 5 }),
186
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _core.Accordion, { children: [
187
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, entity_component_list_default, { entity }),
188
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, entity_proxy_list_default, { entity }),
189
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, entity_subscription_list_default, { entity })
303
190
  ] })
304
191
  ] });
305
192
  }
306
193
  var entity_layout_default = EntityLayout;
307
194
 
308
195
  // src/nodes/node-entity.tsx
309
- var import_jsx_runtime12 = require("react/jsx-runtime");
196
+
310
197
  function EntityNode({ id, data, selected, type }) {
311
- const { entityRepository } = (0, import_react12.useContext)(EcsFlowContext);
312
- const entity = (0, import_react12.useMemo)(() => entityRepository.get(data.entity), [data.entity]);
313
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
314
- import_layout2.NodeContainer,
198
+ const { entityRepository } = _react.useContext.call(void 0, EcsFlowContext);
199
+ const entity = _react.useMemo.call(void 0, () => entityRepository.get(data.entity), [data.entity]);
200
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
201
+ _layout.NodeContainer,
315
202
  {
316
203
  id,
317
204
  selected,
318
205
  data,
319
- title: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_core12.Badge, { fullWidth: true, variant: "transparent", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(formatter_camel_case_default, { value: entity.myProxy.entityType }) }),
206
+ title: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Badge, { fullWidth: true, variant: "transparent", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, formatter_camel_case_default, { value: entity.myProxy.entityType }) }),
320
207
  type,
321
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(entity_layout_default, { entity })
208
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, entity_layout_default, { entity })
322
209
  }
323
210
  );
324
211
  }
325
212
  var node_entity_default = EntityNode;
326
213
 
214
+ // src/nodes/node-systems-module.tsx
215
+
216
+
217
+
218
+
219
+ // src/layout/systems-module-layout.tsx
220
+ var _systems = require('@awesome-ecs/abstract/systems');
221
+
222
+
223
+
224
+ // src/components/pipeline-middleware-list.tsx
225
+
226
+
227
+ function PipelineMiddlewareList(props) {
228
+ let middleware = [];
229
+ if (props.pipeline) {
230
+ middleware = props.pipeline["middleware"];
231
+ }
232
+ const components = middleware.map((m) => {
233
+ return m.name || m.constructor.name;
234
+ });
235
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _core.Accordion.Item, { value: props.label, children: [
236
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Accordion.Control, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Badge, { fullWidth: true, variant: "light", rightSection: components.length, children: props.label }) }),
237
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Accordion.Panel, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Stack, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, badge_list_default, { items: components, badge: { variant: "outline" } }) }) })
238
+ ] }, props.label);
239
+ }
240
+ var pipeline_middleware_list_default = PipelineMiddlewareList;
241
+
242
+ // src/layout/systems-module-layout.tsx
243
+
244
+ function SystemsModuleLayout(props) {
245
+ const { module } = props;
246
+ const runtimeContext = module["runtimeContext"];
247
+ const { systemContext } = runtimeContext;
248
+ const { status } = _react.useMemo.call(void 0, () => {
249
+ return systemContext.runtime;
250
+ }, [systemContext.runtime.status]);
251
+ const init = runtimeContext.systemPipelines.get(_systems.SystemType.initialize);
252
+ const update = runtimeContext.systemPipelines.get(_systems.SystemType.update);
253
+ const render = runtimeContext.systemPipelines.get(_systems.SystemType.render);
254
+ const sync = runtimeContext.systemPipelines.get(_systems.SystemType.sync);
255
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
256
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _core.Text, { children: [
257
+ "Status: ",
258
+ status
259
+ ] }),
260
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _core.Accordion, { children: [
261
+ init && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, pipeline_middleware_list_default, { pipeline: init, label: "Initialize" }),
262
+ update && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, pipeline_middleware_list_default, { pipeline: update, label: "Update" }),
263
+ render && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, pipeline_middleware_list_default, { pipeline: render, label: "Render" }),
264
+ sync && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, pipeline_middleware_list_default, { pipeline: sync, label: "Sync" })
265
+ ] })
266
+ ] });
267
+ }
268
+ var systems_module_layout_default = SystemsModuleLayout;
269
+
270
+ // src/nodes/node-systems-module.tsx
271
+
272
+ function SystemsModuleNode({ id, data, selected, type }) {
273
+ const { systemsModuleRepository } = _react.useContext.call(void 0, EcsFlowContext);
274
+ const module = systemsModuleRepository.get(data.entityType);
275
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
276
+ _layout.NodeContainer,
277
+ {
278
+ id,
279
+ selected,
280
+ data,
281
+ title: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _core.Badge, { fullWidth: true, color: "indigo", variant: "transparent", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, formatter_camel_case_default, { value: data.entityType }) }),
282
+ type,
283
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, systems_module_layout_default, { type: data.entityType, module })
284
+ }
285
+ );
286
+ }
287
+ var node_systems_module_default = SystemsModuleNode;
288
+
327
289
  // src/templates/template-entity-node.ts
328
- var import_react13 = require("@xyflow/react");
290
+ var _react3 = require('@xyflow/react');
329
291
 
330
292
  // src/abstract/templates.ts
331
293
  var EcsTemplateGroup = /* @__PURE__ */ ((EcsTemplateGroup2) => {
@@ -334,8 +296,8 @@ var EcsTemplateGroup = /* @__PURE__ */ ((EcsTemplateGroup2) => {
334
296
  })(EcsTemplateGroup || {});
335
297
 
336
298
  // src/templates/template-entity-node.ts
337
- var EntityNodeTemplate = class {
338
- template = {
299
+ var EntityNodeTemplate = (_class = class {constructor() { _class.prototype.__init.call(this); }
300
+ __init() {this.template = {
339
301
  type: "entity-node" /* entity */,
340
302
  group: "ECS" /* ecs */,
341
303
  data: {
@@ -345,24 +307,24 @@ var EntityNodeTemplate = class {
345
307
  handles: [
346
308
  {
347
309
  dataType: "proxy" /* proxy */,
348
- position: import_react13.Position.Left,
310
+ position: _react3.Position.Left,
349
311
  connection: "target",
350
312
  disabled: true
351
313
  },
352
314
  {
353
315
  dataType: "proxy" /* proxy */,
354
- position: import_react13.Position.Right,
316
+ position: _react3.Position.Right,
355
317
  connection: "source",
356
318
  disabled: true
357
319
  }
358
320
  ]
359
- };
360
- };
321
+ }}
322
+ }, _class);
361
323
 
362
324
  // src/templates/template-systems-module.ts
363
- var import_react14 = require("@xyflow/react");
364
- var SystemsModuleNodeTemplate = class {
365
- template = {
325
+
326
+ var SystemsModuleNodeTemplate = (_class2 = class {constructor() { _class2.prototype.__init2.call(this); }
327
+ __init2() {this.template = {
366
328
  type: "systems-module-node" /* systemsModule */,
367
329
  group: "ECS" /* ecs */,
368
330
  data: {
@@ -372,13 +334,13 @@ var SystemsModuleNodeTemplate = class {
372
334
  handles: [
373
335
  {
374
336
  dataType: "module" /* module */,
375
- position: import_react14.Position.Left,
337
+ position: _react3.Position.Left,
376
338
  connection: "target",
377
339
  disabled: true
378
340
  }
379
341
  ]
380
- };
381
- };
342
+ }}
343
+ }, _class2);
382
344
 
383
345
  // src/abstract/node-types.ts
384
346
  var EcsNodeType = /* @__PURE__ */ ((EcsNodeType2) => {
@@ -396,22 +358,51 @@ var ecsNodeTemplates = {
396
358
  };
397
359
 
398
360
  // src/flow/flow-ecs-state.tsx
399
- var import_react19 = require("react");
361
+ var _canvas = require('@awesome-flow/core/canvas');
362
+
400
363
 
401
364
  // src/flow/flow-ecs-entities.tsx
402
- var import_abstract = require("@awesome-flow/core/abstract");
403
- var import_react17 = require("react");
404
- var import_hooks4 = require("@awesome-flow/core/hooks");
365
+ var _abstract = require('@awesome-flow/core/abstract');
366
+ var _hooks3 = require('@awesome-flow/core/hooks');
367
+
368
+
369
+ // src/flow/flow-ecs-edge-modules.tsx
370
+
371
+
372
+
373
+ function FlowEcsEdgeModules(props) {
374
+ const { nodesToConnect } = props;
375
+ const onConnect = _hooks3.useFlowStore.call(void 0, (state) => state.onConnect);
376
+ const { ecsFlowRepository, entityRepository } = _react.useContext.call(void 0, EcsFlowContext);
377
+ _react.useEffect.call(void 0, () => {
378
+ for (const node of nodesToConnect) {
379
+ const sourceHandle = node.data.handles.find((h) => h.connection === "source");
380
+ const entity = entityRepository.get(node.data.entity);
381
+ const systemModule = ecsFlowRepository.getSystemModuleNode(entity.myProxy.entityType);
382
+ const targetHandle = _optionalChain([systemModule, 'optionalAccess', _6 => _6.data, 'access', _7 => _7.handles, 'access', _8 => _8.find, 'call', _9 => _9((h) => h.connection === "target")]);
383
+ if (targetHandle) {
384
+ onConnect({
385
+ source: node.id,
386
+ target: systemModule.id,
387
+ sourceHandle: sourceHandle.id,
388
+ targetHandle: targetHandle.id
389
+ });
390
+ }
391
+ }
392
+ }, [nodesToConnect]);
393
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, {});
394
+ }
395
+ var flow_ecs_edge_modules_default = FlowEcsEdgeModules;
405
396
 
406
397
  // src/flow/flow-ecs-edge-proxies.tsx
407
- var import_react15 = require("react");
408
- var import_hooks2 = require("@awesome-flow/core/hooks");
409
- var import_jsx_runtime13 = require("react/jsx-runtime");
398
+
399
+
400
+
410
401
  function FlowEcsEdgeProxies(props) {
411
402
  const { nodesToConnect } = props;
412
- const onConnect = (0, import_hooks2.useFlowStore)((state) => state.onConnect);
413
- const { ecsFlowRepository, entityRepository } = (0, import_react15.useContext)(EcsFlowContext);
414
- (0, import_react15.useEffect)(() => {
403
+ const onConnect = _hooks3.useFlowStore.call(void 0, (state) => state.onConnect);
404
+ const { ecsFlowRepository, entityRepository } = _react.useContext.call(void 0, EcsFlowContext);
405
+ _react.useEffect.call(void 0, () => {
415
406
  for (const node of nodesToConnect) {
416
407
  const sourceHandle = node.data.handles.find((h) => h.connection === "source");
417
408
  const entity = entityRepository.get(node.data.entity);
@@ -431,46 +422,18 @@ function FlowEcsEdgeProxies(props) {
431
422
  }
432
423
  }
433
424
  }, [nodesToConnect]);
434
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_jsx_runtime13.Fragment, {});
425
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, {});
435
426
  }
436
427
  var flow_ecs_edge_proxies_default = FlowEcsEdgeProxies;
437
428
 
438
- // src/flow/flow-ecs-edge-modules.tsx
439
- var import_react16 = require("react");
440
- var import_hooks3 = require("@awesome-flow/core/hooks");
441
- var import_jsx_runtime14 = require("react/jsx-runtime");
442
- function FlowEcsEdgeModules(props) {
443
- const { nodesToConnect } = props;
444
- const onConnect = (0, import_hooks3.useFlowStore)((state) => state.onConnect);
445
- const { ecsFlowRepository, entityRepository } = (0, import_react16.useContext)(EcsFlowContext);
446
- (0, import_react16.useEffect)(() => {
447
- for (const node of nodesToConnect) {
448
- const sourceHandle = node.data.handles.find((h) => h.connection === "source");
449
- const entity = entityRepository.get(node.data.entity);
450
- const systemModule = ecsFlowRepository.getSystemModuleNode(entity.myProxy.entityType);
451
- const targetHandle = systemModule?.data.handles.find((h) => h.connection === "target");
452
- if (targetHandle) {
453
- onConnect({
454
- source: node.id,
455
- target: systemModule.id,
456
- sourceHandle: sourceHandle.id,
457
- targetHandle: targetHandle.id
458
- });
459
- }
460
- }
461
- }, [nodesToConnect]);
462
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, {});
463
- }
464
- var flow_ecs_edge_modules_default = FlowEcsEdgeModules;
465
-
466
429
  // src/flow/flow-ecs-entities.tsx
467
- var import_jsx_runtime15 = require("react/jsx-runtime");
430
+
468
431
  function FlowEcsEntities() {
469
- const { nodeFactory } = (0, import_react17.useContext)(import_abstract.FlowContext);
470
- const addNodes = (0, import_hooks4.useFlowStore)((state) => state.addNodes);
471
- const { ecsFlowRepository, entityRepository } = (0, import_react17.useContext)(EcsFlowContext);
472
- const [entityNodes, setEntityNodes] = (0, import_react17.useState)([]);
473
- (0, import_react17.useEffect)(() => {
432
+ const { nodeFactory } = _react.useContext.call(void 0, _abstract.FlowContext);
433
+ const addNodes = _hooks3.useFlowStore.call(void 0, (state) => state.addNodes);
434
+ const { ecsFlowRepository, entityRepository } = _react.useContext.call(void 0, EcsFlowContext);
435
+ const [entityNodes, setEntityNodes] = _react.useState.call(void 0, []);
436
+ _react.useEffect.call(void 0, () => {
474
437
  const entities = entityRepository.listAll();
475
438
  const nodes = [];
476
439
  for (const entity of entities) {
@@ -486,23 +449,23 @@ function FlowEcsEntities() {
486
449
  setEntityNodes(nodes);
487
450
  addNodes(nodes);
488
451
  }, [entityRepository.size]);
489
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
490
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(flow_ecs_edge_proxies_default, { nodesToConnect: entityNodes }),
491
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(flow_ecs_edge_modules_default, { nodesToConnect: entityNodes })
452
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
453
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, flow_ecs_edge_proxies_default, { nodesToConnect: entityNodes }),
454
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, flow_ecs_edge_modules_default, { nodesToConnect: entityNodes })
492
455
  ] });
493
456
  }
494
457
  var flow_ecs_entities_default = FlowEcsEntities;
495
458
 
496
459
  // src/flow/flow-ecs-modules.tsx
497
- var import_react18 = require("react");
498
- var import_abstract2 = require("@awesome-flow/core/abstract");
499
- var import_hooks5 = require("@awesome-flow/core/hooks");
500
- var import_jsx_runtime16 = require("react/jsx-runtime");
460
+
461
+
462
+
463
+
501
464
  function FlowEcsModules() {
502
- const { nodeFactory } = (0, import_react18.useContext)(import_abstract2.FlowContext);
503
- const addNodes = (0, import_hooks5.useFlowStore)((state) => state.addNodes);
504
- const { ecsFlowRepository, systemsModuleRepository } = (0, import_react18.useContext)(EcsFlowContext);
505
- (0, import_react18.useEffect)(() => {
465
+ const { nodeFactory } = _react.useContext.call(void 0, _abstract.FlowContext);
466
+ const addNodes = _hooks3.useFlowStore.call(void 0, (state) => state.addNodes);
467
+ const { ecsFlowRepository, systemsModuleRepository } = _react.useContext.call(void 0, EcsFlowContext);
468
+ _react.useEffect.call(void 0, () => {
506
469
  const modules = Array.from(systemsModuleRepository.list()).filter((m) => !!m);
507
470
  const keys = Array.from(modules.values()).map((v) => v[0]);
508
471
  const nodesToAdd = [];
@@ -520,45 +483,42 @@ function FlowEcsModules() {
520
483
  addNodes(nodesToAdd);
521
484
  }
522
485
  }, [systemsModuleRepository.size]);
523
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_jsx_runtime16.Fragment, {});
486
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, {});
524
487
  }
525
488
  var flow_ecs_modules_default = FlowEcsModules;
526
489
 
527
490
  // src/flow/flow-ecs-state.tsx
528
- var import_canvas = require("@awesome-flow/core/canvas");
529
- var import_jsx_runtime17 = require("react/jsx-runtime");
491
+
530
492
  function FlowEcsState(props) {
531
- const [, setUpdates] = (0, import_react19.useState)(0);
532
- const [refreshLayout, setRefreshLayout] = (0, import_react19.useState)(false);
533
- const { ecsFlowRepository } = (0, import_react19.useContext)(EcsFlowContext);
534
- (0, import_react19.useEffect)(() => {
493
+ const [, setUpdates] = _react.useState.call(void 0, 0);
494
+ const [refreshLayout, setRefreshLayout] = _react.useState.call(void 0, false);
495
+ const { ecsFlowRepository } = _react.useContext.call(void 0, EcsFlowContext);
496
+ _react.useEffect.call(void 0, () => {
535
497
  setRefreshLayout(true);
536
498
  }, [ecsFlowRepository.sizeNodes]);
537
- (0, import_react19.useEffect)(() => {
499
+ _react.useEffect.call(void 0, () => {
538
500
  setInterval(() => {
539
501
  setUpdates((updates) => updates + 1);
540
502
  }, 1e3);
541
503
  }, []);
542
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
543
- props.showSystemModules && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(flow_ecs_modules_default, {}),
544
- props.showEntities && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(flow_ecs_entities_default, {}),
545
- props.autoLayout && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_canvas.FlowAutoLayout, { refreshLayout })
504
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
505
+ props.showSystemModules && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, flow_ecs_modules_default, {}),
506
+ props.showEntities && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, flow_ecs_entities_default, {}),
507
+ props.autoLayout && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _canvas.FlowAutoLayout, { refreshLayout })
546
508
  ] });
547
509
  }
548
- var flow_ecs_state_default = (0, import_react19.memo)(FlowEcsState);
549
- // Annotate the CommonJS export names for ESM import in node:
550
- 0 && (module.exports = {
551
- EcsFlowContext,
552
- EcsFlowRepository,
553
- EcsHandleDataType,
554
- EcsNodeType,
555
- EcsTemplateGroup,
556
- EntityNode,
557
- EntityNodeTemplate,
558
- FlowEcsState,
559
- SystemsModuleNode,
560
- SystemsModuleNodeTemplate,
561
- ecsNodeTemplates,
562
- ecsNodeTypes
563
- });
564
- //# sourceMappingURL=index.cjs.map
510
+ var flow_ecs_state_default = _react.memo.call(void 0, FlowEcsState);
511
+
512
+
513
+
514
+
515
+
516
+
517
+
518
+
519
+
520
+
521
+
522
+
523
+
524
+ exports.EcsFlowContext = EcsFlowContext; exports.EcsFlowRepository = EcsFlowRepository; exports.EcsHandleDataType = EcsHandleDataType; exports.EcsNodeType = EcsNodeType; exports.EcsTemplateGroup = EcsTemplateGroup; exports.EntityNode = node_entity_default; exports.EntityNodeTemplate = EntityNodeTemplate; exports.FlowEcsState = flow_ecs_state_default; exports.SystemsModuleNode = node_systems_module_default; exports.SystemsModuleNodeTemplate = SystemsModuleNodeTemplate; exports.ecsNodeTemplates = ecsNodeTemplates; exports.ecsNodeTypes = ecsNodeTypes;