@awesome-flow/ecs 0.9.5 → 0.10.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["proxy: IEntityProxy","node: Node<SystemsModuleNodeData>","entityType: EntityTypeUid","node: Node<EntityNodeData>","entity: IEntityProxy","props: Readonly<CamelCaseFormatterProps>","props: Readonly<ObjectInspectorProps>","Inspector","props: Readonly<EntityComponentInspectorProps>","Box","Button","Collapse","ObjectInspector","props: Readonly<EntityComponentListProps>","Accordion","Badge","Stack","EntityComponentInspector","props: Readonly<BadgeListProps>","Badge","FormatterCamelCase","props: Readonly<EntityProxyListProps>","Accordion","Badge","Stack","BadgeList","props: Readonly<EntitySubscriptionListProps>","Accordion","Badge","Stack","BadgeList","props: Readonly<EntityUpdateCounterProps>","Badge","Group","Badge","EntityUpdateCounter","Divider","Accordion","EntityComponentList","EntityProxyList","EntitySubscriptionList","NodeContainer","Badge","CamelCaseFormatter","EntityLayout","props: Readonly<PipelineMiddlewareListProps>","middleware: IMiddleware<IPipelineContext>[]","Accordion","Badge","Stack","BadgeList","props: Readonly<NodeSystemModuleProps>","module","SystemType","Text","Accordion","PipelineMiddlewareList","module","NodeContainer","Badge","CamelCaseFormatter","SystemsModuleLayout","Position","Position","SystemsModuleNode","EntityNode","props: Readonly<FlowEcsEdgeProxiesProps>","state: { onConnect: any }","props: Readonly<FlowEcsEdgeProxiesProps>","state: { onConnect: any }","FlowContext","FlowEcsEdgeProxies","FlowEcsEdgeModules","FlowContext","props: Readonly<FlowEcsStateProps>","FlowEcsModules","FlowEcsEntities","FlowAutoLayout"],"sources":["../src/abstract/ecs-flow-context.ts","../src/utils/id-generator.ts","../src/abstract/ecs-flow-repository.ts","../src/abstract/handle-types.ts","../src/components/formatter-camel-case.tsx","../src/components/object-inspector.tsx","../src/components/entity-component-inspector.tsx","../src/components/entity-component-list.tsx","../src/components/badge-list.tsx","../src/components/entity-proxy-list.tsx","../src/components/entity-subscription-list.tsx","../src/components/entity-update-counter.tsx","../src/layout/entity-layout.tsx","../src/nodes/node-entity.tsx","../src/components/pipeline-middleware-list.tsx","../src/layout/systems-module-layout.tsx","../src/nodes/node-systems-module.tsx","../src/abstract/templates.ts","../src/templates/template-entity-node.ts","../src/templates/template-systems-module.ts","../src/abstract/node-types.ts","../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-state.tsx"],"sourcesContent":["import { IEntityProxyRepository, IEntityRepository } from '@awesome-ecs/abstract/entities';\nimport { ISystemsModuleRepository } from '@awesome-ecs/abstract/systems';\nimport { EntityEventsManager } from '@awesome-ecs/core/entities';\nimport { createContext } from 'react';\nimport { IEntityUpdateCounter } from '../utils/entity-update-counter';\nimport { EcsFlowRepository } from './ecs-flow-repository';\n\nexport type EcsFlowContextProps = {\n ecsFlowRepository: EcsFlowRepository;\n entityRepository: IEntityRepository;\n entityEventsManager: EntityEventsManager;\n entityUpdateCounter: IEntityUpdateCounter;\n entityProxyRepository: IEntityProxyRepository;\n systemsModuleRepository: ISystemsModuleRepository;\n};\n\nexport const EcsFlowContext = createContext<EcsFlowContextProps>(null);\n","import { IEntityProxy } from '@awesome-ecs/abstract/entities';\n\nexport class EcsIdGenerator {\n static entityProxy(proxy: IEntityProxy): string {\n return `${proxy.entityType}:${proxy.entityUid}`;\n }\n}\n","import { EntityTypeUid, IEntityProxy } from '@awesome-ecs/abstract/entities';\nimport { Node } from '@xyflow/react';\nimport { EcsIdGenerator } from '../utils/id-generator';\nimport { EntityNodeData, SystemsModuleNodeData } from './node-props';\n\nexport class EcsFlowRepository {\n private nodes: Map<string, Node>;\n\n constructor() {\n this.nodes = new Map();\n }\n\n get sizeNodes(): number {\n return this.nodes.size;\n }\n\n addSystemModuleNode(node: Node<SystemsModuleNodeData>) {\n this.nodes.set(node.data.entityType.toString(), node);\n }\n\n getSystemModuleNode(entityType: EntityTypeUid): Node<SystemsModuleNodeData> {\n return this.nodes.get(entityType.toString()) as Node<SystemsModuleNodeData>;\n }\n\n addEntityNode(node: Node<EntityNodeData>) {\n this.nodes.set(EcsIdGenerator.entityProxy(node.data.entity), node);\n }\n\n getEntityNode(entity: IEntityProxy): Node<EntityNodeData> {\n return this.nodes.get(EcsIdGenerator.entityProxy(entity)) as Node<EntityNodeData>;\n }\n\n listAllNodes(): Node[] {\n return Array.from(this.nodes.values());\n }\n}\n","export enum EcsHandleDataType {\n proxy = 'proxy',\n module = 'module'\n}\n","import { memo, useMemo } from 'react';\n\nexport type CamelCaseFormatterProps = {\n value: string | number;\n};\n\nfunction CamelCaseFormatter(props: Readonly<CamelCaseFormatterProps>) {\n const value = useMemo(\n () => props.value?.toString().replace(/([a-z])([A-Z])/g, '$1 $2'),\n [props.value]\n );\n return value;\n}\n\nexport default memo(CamelCaseFormatter);\n","import { useComputedColorScheme } from '@mantine/core';\nimport { memo, useMemo } from 'react';\nimport { Inspector } from 'react-inspector';\n\nexport type ObjectInspectorProps = {\n data: any;\n};\n\nfunction ObjectInspector(props: Readonly<ObjectInspectorProps>) {\n const colorScheme = useComputedColorScheme();\n\n const theme = useMemo(\n () => (colorScheme === 'dark' ? 'chromeDark' : 'chromeLight'),\n [colorScheme]\n );\n\n return <Inspector table={false} theme={theme} data={props.data} />;\n}\n\nexport default memo(ObjectInspector);\n","import { IComponent } from '@awesome-ecs/abstract/components';\nimport { Box, Button, Collapse } from '@mantine/core';\nimport { useDisclosure } from '@mantine/hooks';\nimport { memo, useMemo } from 'react';\nimport ObjectInspector from './object-inspector';\n\nexport type EntityComponentInspectorProps = {\n component: IComponent;\n};\n\nfunction EntityComponentInspector(props: Readonly<EntityComponentInspectorProps>) {\n const [opened, { toggle }] = useDisclosure(false);\n\n const buttonColor = useMemo(() => (opened ? 'light' : 'indigo'), [opened]);\n\n return (\n <Box>\n <Button variant=\"outline\" size=\"xs\" onClick={toggle} color={buttonColor} fullWidth>\n {props.component.componentType}\n </Button>\n\n <Collapse in={opened}>{opened && <ObjectInspector data={props.component} />}</Collapse>\n </Box>\n );\n}\n\nexport default memo(EntityComponentInspector);\n","import { IEntity } from '@awesome-ecs/abstract/entities';\nimport { Accordion, Badge, Stack } from '@mantine/core';\nimport { memo } from 'react';\nimport EntityComponentInspector from './entity-component-inspector';\n\nexport type EntityComponentListProps = {\n entity: IEntity;\n};\n\nfunction EntityComponentList(props: Readonly<EntityComponentListProps>) {\n const components = Array.from(props.entity.components.values());\n\n return (\n <Accordion.Item key=\"components\" value=\"components\">\n <Accordion.Control>\n <Badge fullWidth variant=\"light\" rightSection={components.length}>\n Components\n </Badge>\n </Accordion.Control>\n <Accordion.Panel>\n <Stack>\n {components.map((c, i) => (\n <EntityComponentInspector component={c} key={i} />\n ))}\n </Stack>\n </Accordion.Panel>\n </Accordion.Item>\n );\n}\n\nexport default memo(EntityComponentList);\n","import { Badge, BadgeProps } from '@mantine/core';\nimport { memo } from 'react';\nimport FormatterCamelCase from './formatter-camel-case';\n\nexport type BadgeListProps = {\n items: (string | number)[];\n badge?: BadgeProps;\n};\n\nfunction BadgeList(props: Readonly<BadgeListProps>) {\n return props.items.map((value, i) => {\n return (\n <Badge key={i} {...(props.badge || [])}>\n <FormatterCamelCase value={value} />\n </Badge>\n );\n });\n}\n\nexport default memo(BadgeList);\n","import { IEntity } from '@awesome-ecs/abstract/entities';\nimport { Accordion, Badge, Stack } from '@mantine/core';\nimport { memo, useContext } from 'react';\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\nimport { EcsIdGenerator } from '../utils/id-generator';\nimport BadgeList from './badge-list';\n\nexport type EntityProxyListProps = {\n entity: IEntity;\n};\n\nfunction EntityProxyList(props: Readonly<EntityProxyListProps>) {\n const { entityProxyRepository } = useContext(EcsFlowContext);\n\n const proxies = Array.from(entityProxyRepository.getAll(props.entity.myProxy).values()).flat();\n const items = proxies.map((p) => EcsIdGenerator.entityProxy(p));\n\n return (\n <Accordion.Item key=\"proxies\" value=\"proxies\">\n <Accordion.Control>\n <Badge fullWidth variant=\"light\" rightSection={items.length}>\n Proxies\n </Badge>\n </Accordion.Control>\n <Accordion.Panel>\n <Stack>\n <BadgeList items={items} badge={{ variant: 'outline' }} />\n </Stack>\n </Accordion.Panel>\n </Accordion.Item>\n );\n}\n\nexport default memo(EntityProxyList);\n","import { IEntity } from '@awesome-ecs/abstract/entities';\nimport { Accordion, Badge, Stack } from '@mantine/core';\nimport { memo, useContext } from 'react';\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\nimport BadgeList from './badge-list';\n\nexport type EntitySubscriptionListProps = {\n entity: IEntity;\n};\n\nfunction EntitySubscriptionList(props: Readonly<EntitySubscriptionListProps>) {\n const { entityEventsManager } = useContext(EcsFlowContext);\n const subscriptions = entityEventsManager.getSubscriptionsForEntity(props.entity.myProxy);\n\n return (\n <Accordion.Item key=\"subscriptions\" value=\"subscriptions\">\n <Accordion.Control>\n <Badge fullWidth variant=\"light\" rightSection={subscriptions.length}>\n Events\n </Badge>\n </Accordion.Control>\n <Accordion.Panel>\n <Stack>\n <BadgeList items={subscriptions} badge={{ variant: 'outline' }} />\n </Stack>\n </Accordion.Panel>\n </Accordion.Item>\n );\n}\n\nexport default memo(EntitySubscriptionList);\n","import { EntityUid } from '@awesome-ecs/abstract/entities';\nimport { Badge } from '@mantine/core';\nimport { memo, useContext, useEffect, useState } from 'react';\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\n\nexport type EntityUpdateCounterProps = {\n entityUid: EntityUid;\n};\n\nfunction EntityUpdateCounter(props: Readonly<EntityUpdateCounterProps>) {\n const [, setRefresh] = useState(0);\n\n const { entityUpdateCounter } = useContext(EcsFlowContext);\n\n const updates = entityUpdateCounter.getUpdateCount(props.entityUid) || 0;\n const removes = entityUpdateCounter.getRemoveCount(props.entityUid) || 0;\n\n useEffect(() => {\n const interval = setInterval(() => {\n setRefresh((refresh) => refresh + 1);\n }, 1000);\n\n return () => {\n console.log('CLEAR INTERVAL');\n clearInterval(interval);\n };\n }, []);\n\n return (\n <>\n <Badge variant=\"light\">{updates}</Badge>\n <Badge variant=\"light\" color=\"orange\">\n {removes}\n </Badge>\n </>\n );\n}\n\nexport default memo(EntityUpdateCounter);\n","import { IEntity } from '@awesome-ecs/abstract/entities';\nimport { Accordion, Badge, Divider, Group } from '@mantine/core';\nimport EntityComponentList from '../components/entity-component-list';\nimport EntityProxyList from '../components/entity-proxy-list';\nimport EntitySubscriptionList from '../components/entity-subscription-list';\nimport EntityUpdateCounter from '../components/entity-update-counter';\n\nexport type NodeEntityProps = {\n entity: IEntity;\n};\n\nfunction EntityLayout({ entity }: Readonly<NodeEntityProps>) {\n return (\n <>\n <Group>\n <Badge variant=\"outline\" color=\"orange\">\n {entity.myProxy.entityUid}\n </Badge>\n <EntityUpdateCounter entityUid={entity.myProxy.entityUid} />\n </Group>\n <Divider my={5} />\n <Accordion>\n <EntityComponentList entity={entity} />\n <EntityProxyList entity={entity} />\n <EntitySubscriptionList entity={entity} />\n </Accordion>\n </>\n );\n}\n\nexport default EntityLayout;\n","import { NodeContainer } from '@awesome-flow/core/layout';\nimport { Badge } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useContext, useMemo } from 'react';\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\nimport { EntityNodeData } from '../abstract/node-props';\nimport CamelCaseFormatter from '../components/formatter-camel-case';\nimport EntityLayout from '../layout/entity-layout';\n\nfunction EntityNode({ id, data, selected, type }: NodeProps<Node<EntityNodeData>>) {\n const { entityRepository } = useContext(EcsFlowContext);\n const entity = useMemo(() => entityRepository.get(data.entity), [data.entity, entityRepository]);\n\n return (\n <NodeContainer\n id={id}\n selected={selected}\n data={data}\n title={\n <Badge fullWidth variant=\"transparent\">\n <CamelCaseFormatter value={entity.myProxy.entityType} />\n </Badge>\n }\n type={type}\n >\n <EntityLayout entity={entity} />\n </NodeContainer>\n );\n}\n\nexport default EntityNode;\n","import { IMiddleware, IPipeline, IPipelineContext } from '@awesome-ecs/abstract/pipelines';\nimport { Accordion, Badge, Stack } from '@mantine/core';\nimport BadgeList from './badge-list';\n\nexport type PipelineMiddlewareListProps = {\n pipeline: IPipeline<IPipelineContext>;\n label: string;\n};\n\nfunction PipelineMiddlewareList(props: Readonly<PipelineMiddlewareListProps>) {\n let middleware: IMiddleware<IPipelineContext>[] = [];\n\n if (props.pipeline) {\n middleware = props.pipeline['middleware'] as IMiddleware<IPipelineContext>[];\n }\n\n const components = middleware.map((m) => {\n return m.name || m.constructor.name;\n });\n\n return (\n <Accordion.Item key={props.label} value={props.label}>\n <Accordion.Control>\n <Badge fullWidth variant=\"light\" rightSection={components.length}>\n {props.label}\n </Badge>\n </Accordion.Control>\n <Accordion.Panel>\n <Stack>\n <BadgeList items={components} badge={{ variant: 'outline' }} />\n </Stack>\n </Accordion.Panel>\n </Accordion.Item>\n );\n}\n\nexport default PipelineMiddlewareList;\n","import { EntityTypeUid, IEntity } from '@awesome-ecs/abstract/entities';\nimport { ISystemsModule, ISystemsRuntimeContext, SystemType } from '@awesome-ecs/abstract/systems';\nimport { Accordion, Text } from '@mantine/core';\nimport { useMemo } from 'react';\nimport PipelineMiddlewareList from '../components/pipeline-middleware-list';\n\nexport type NodeSystemModuleProps = {\n type: EntityTypeUid;\n module: ISystemsModule<IEntity>;\n};\n\nfunction SystemsModuleLayout(props: Readonly<NodeSystemModuleProps>) {\n const { module } = props;\n\n const runtimeContext = module['runtimeContext'] as ISystemsRuntimeContext<IEntity>;\n const { systemContext } = runtimeContext;\n\n const { status } = useMemo(() => {\n return systemContext.runtime;\n }, [systemContext.runtime]);\n\n const init = runtimeContext.systemPipelines.get(SystemType.initialize);\n const update = runtimeContext.systemPipelines.get(SystemType.update);\n const render = runtimeContext.systemPipelines.get(SystemType.render);\n const sync = runtimeContext.systemPipelines.get(SystemType.sync);\n\n return (\n <>\n <Text>Status: {status}</Text>\n <Accordion>\n {init && <PipelineMiddlewareList pipeline={init} label=\"Initialize\" />}\n {update && <PipelineMiddlewareList pipeline={update} label=\"Update\" />}\n {render && <PipelineMiddlewareList pipeline={render} label=\"Render\" />}\n {sync && <PipelineMiddlewareList pipeline={sync} label=\"Sync\" />}\n </Accordion>\n </>\n );\n}\n\nexport default SystemsModuleLayout;\n","import { NodeContainer } from '@awesome-flow/core/layout';\nimport { Badge } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useContext } from 'react';\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\nimport { SystemsModuleNodeData } from '../abstract/node-props';\nimport CamelCaseFormatter from '../components/formatter-camel-case';\nimport SystemsModuleLayout from '../layout/systems-module-layout';\n\nfunction SystemsModuleNode({ id, data, selected, type }: NodeProps<Node<SystemsModuleNodeData>>) {\n const { systemsModuleRepository } = useContext(EcsFlowContext);\n const module = systemsModuleRepository.get(data.entityType);\n\n return (\n <NodeContainer\n id={id}\n selected={selected}\n data={data}\n title={\n <Badge fullWidth color=\"indigo\" variant=\"transparent\">\n <CamelCaseFormatter value={data.entityType} />\n </Badge>\n }\n type={type}\n >\n <SystemsModuleLayout type={data.entityType} module={module} />\n </NodeContainer>\n );\n}\n\nexport default SystemsModuleNode;\n","export enum EcsTemplateGroup {\n ecs = 'ECS'\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/react';\nimport { EcsHandleDataType } from '../abstract/handle-types';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { EcsTemplateGroup } from '../abstract/templates';\n\nexport class EntityNodeTemplate implements ITemplateFactory {\n readonly template: NodeTemplate<EntityNodeData> = {\n type: EcsNodeType.entity,\n group: EcsTemplateGroup.ecs,\n data: {\n title: 'Entity',\n entity: null\n },\n handles: [\n {\n dataType: EcsHandleDataType.proxy,\n position: Position.Left,\n connection: 'target',\n disabled: true\n },\n {\n dataType: EcsHandleDataType.proxy,\n position: Position.Right,\n connection: 'source',\n disabled: true\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/react';\nimport { EcsHandleDataType } from '../abstract/handle-types';\nimport { SystemsModuleNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { EcsTemplateGroup } from '../abstract/templates';\n\nexport class SystemsModuleNodeTemplate implements ITemplateFactory {\n readonly template: NodeTemplate<SystemsModuleNodeData> = {\n type: EcsNodeType.systemsModule,\n group: EcsTemplateGroup.ecs,\n data: {\n title: 'Systems Module',\n entityType: null\n },\n handles: [\n {\n dataType: EcsHandleDataType.module,\n position: Position.Left,\n connection: 'target',\n disabled: true\n }\n ]\n };\n}\n","import { NodeTypes } from '@xyflow/react';\nimport EntityNode from '../nodes/node-entity';\nimport SystemsModuleNode from '../nodes/node-systems-module';\nimport { EntityNodeTemplate } from '../templates/template-entity-node';\nimport { SystemsModuleNodeTemplate } from '../templates/template-systems-module';\n\nexport enum EcsNodeType {\n systemsModule = 'systems-module-node',\n entity = 'entity-node'\n}\n\nexport const ecsNodeTypes = {\n [EcsNodeType.systemsModule]: SystemsModuleNode,\n [EcsNodeType.entity]: EntityNode\n} satisfies NodeTypes;\n\nexport const ecsNodeTemplates = {\n [EcsNodeType.entity]: new EntityNodeTemplate(),\n [EcsNodeType.systemsModule]: new SystemsModuleNodeTemplate()\n};\n","import { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useContext, useEffect } from 'react';\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\nimport { EntityNodeData } from '../abstract/node-props';\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 { ecsFlowRepository, entityRepository } = useContext(EcsFlowContext);\n\n useEffect(() => {\n for (const node of nodesToConnect) {\n const sourceHandle = node.data.handles.find((h) => h.connection === 'source');\n const entity = entityRepository.get(node.data.entity);\n\n const systemModule = ecsFlowRepository.getSystemModuleNode(entity.myProxy.entityType);\n const targetHandle = systemModule?.data.handles.find((h) => h.connection === 'target');\n\n if (targetHandle) {\n onConnect({\n source: node.id,\n target: systemModule.id,\n sourceHandle: sourceHandle.handleId,\n targetHandle: targetHandle.handleId\n });\n }\n }\n }, [nodesToConnect, ecsFlowRepository, entityRepository, onConnect]);\n\n return <></>;\n}\n\nexport default FlowEcsEdgeModules;\n","import { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useContext, useEffect } from 'react';\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\nimport { EntityNodeData } from '../abstract/node-props';\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 { ecsFlowRepository, entityProxyRepository, entityRepository } = useContext(EcsFlowContext);\n\n useEffect(() => {\n for (const node of nodesToConnect) {\n const sourceHandle = node.data.handles.find((h) => h.connection === 'source');\n const entity = entityRepository.get(node.data.entity);\n const proxies = Array.from(entityProxyRepository.getAll(entity.myProxy).values()).flat();\n\n for (const proxy of proxies) {\n const proxyNode = ecsFlowRepository.getEntityNode(proxy);\n\n if (proxyNode) {\n const targetHandle = proxyNode.data.handles.find((h) => h.connection === 'target');\n\n onConnect({\n source: node.id,\n target: proxyNode.id,\n sourceHandle: sourceHandle.handleId,\n targetHandle: targetHandle.handleId\n });\n }\n }\n }\n }, [nodesToConnect, ecsFlowRepository, entityRepository, entityProxyRepository, onConnect]);\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 { EcsFlowContext } from '../abstract/ecs-flow-context';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\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 { ecsFlowRepository, entityRepository } = useContext(EcsFlowContext);\n const [entityNodes, setEntityNodes] = useState<Node<EntityNodeData>[]>([]);\n\n useEffect(() => {\n const entities = entityRepository.listAll();\n const nodes = [];\n\n for (const entity of entities) {\n if (ecsFlowRepository.getEntityNode(entity.myProxy)) {\n continue;\n }\n\n const node = nodeFactory.createNodeFromType<EntityNodeData>(EcsNodeType.entity);\n\n node.data.entity = entity.myProxy;\n node.position = { x: 0, y: 0 };\n\n ecsFlowRepository.addEntityNode(node);\n nodes.push(node);\n }\n\n setEntityNodes(nodes);\n addNodes(nodes);\n }, [entityRepository, entityRepository.size, ecsFlowRepository, nodeFactory, addNodes]);\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 { useContext, useEffect } from 'react';\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\nimport { SystemsModuleNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\n\nfunction FlowEcsModules() {\n const { nodeFactory } = useContext(FlowContext);\n const addNodes = useFlowStore((state) => state.addNodes);\n\n const { ecsFlowRepository, systemsModuleRepository } = useContext(EcsFlowContext);\n\n useEffect(() => {\n const modules = Array.from(systemsModuleRepository.list()).filter((m) => !!m);\n const keys = Array.from(modules.values()).map((v) => v[0]);\n\n const nodesToAdd = [];\n\n for (const element of keys) {\n if (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 ecsFlowRepository.addSystemModuleNode(node);\n nodesToAdd.push(node);\n }\n\n if (nodesToAdd.length) {\n addNodes(nodesToAdd);\n }\n }, [\n nodeFactory,\n addNodes,\n ecsFlowRepository,\n ecsFlowRepository.sizeNodes,\n systemsModuleRepository,\n systemsModuleRepository.size\n ]);\n\n return <></>;\n}\n\nexport default FlowEcsModules;\n","import { FlowAutoLayout } from '@awesome-flow/core/canvas';\nimport { memo, useContext, useEffect, useState } from 'react';\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\nimport FlowEcsEntities from './flow-ecs-entities';\nimport FlowEcsModules from './flow-ecs-modules';\n\nexport type FlowEcsStateProps = {\n showSystemModules: boolean;\n showEntities: boolean;\n autoLayout: boolean;\n};\n\nfunction FlowEcsState(props: Readonly<FlowEcsStateProps>) {\n const [, setUpdates] = useState(0);\n const [refreshLayout, setRefreshLayout] = useState(false);\n\n const { ecsFlowRepository } = useContext(EcsFlowContext);\n\n useEffect(() => {\n setRefreshLayout(true);\n }, [ecsFlowRepository.sizeNodes]);\n\n useEffect(() => {\n setInterval(() => {\n setUpdates((updates) => updates + 1);\n }, 1000);\n }, []);\n\n return (\n <>\n {props.showSystemModules && <FlowEcsModules />}\n {props.showEntities && <FlowEcsEntities />}\n {props.autoLayout && <FlowAutoLayout refreshLayout={refreshLayout} />}\n </>\n );\n}\n\nexport default memo(FlowEcsState);\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["Inspector","Box","Button","Collapse","ObjectInspector","Accordion","Badge","Stack","EntityComponentInspector","Badge","FormatterCamelCase","Accordion","Badge","Stack","BadgeList","Accordion","Badge","Stack","BadgeList","Badge","Group","Badge","EntityUpdateCounter","Divider","Accordion","EntityComponentList","EntityProxyList","EntitySubscriptionList","NodeContainer","Badge","CamelCaseFormatter","Accordion","Badge","Stack","BadgeList","SystemType","Text","Accordion","NodeContainer","Badge","CamelCaseFormatter","Position","Position","FlowContext","FlowContext","FlowAutoLayout"],"sources":["../src/abstract/ecs-flow-context.ts","../src/utils/id-generator.ts","../src/abstract/ecs-flow-repository.ts","../src/abstract/handle-types.ts","../src/components/formatter-camel-case.tsx","../src/components/object-inspector.tsx","../src/components/entity-component-inspector.tsx","../src/components/entity-component-list.tsx","../src/components/badge-list.tsx","../src/components/entity-proxy-list.tsx","../src/components/entity-subscription-list.tsx","../src/components/entity-update-counter.tsx","../src/layout/entity-layout.tsx","../src/nodes/node-entity.tsx","../src/components/pipeline-middleware-list.tsx","../src/layout/systems-module-layout.tsx","../src/nodes/node-systems-module.tsx","../src/abstract/templates.ts","../src/templates/template-entity-node.ts","../src/templates/template-systems-module.ts","../src/abstract/node-types.ts","../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-state.tsx"],"sourcesContent":["import { IEntityEventsManager, IEntityProxyRepository, IEntityRepository } from '@awesome-ecs/abstract/entities';\r\nimport { ISystemsModuleRepository } from '@awesome-ecs/abstract/systems';\r\nimport { createContext } from 'react';\r\nimport { IEntityUpdateCounter } from '../utils/entity-update-counter';\r\nimport { EcsFlowRepository } from './ecs-flow-repository';\r\n\r\nexport type EcsFlowContextProps = {\r\n ecsFlowRepository: EcsFlowRepository;\r\n entityRepository: IEntityRepository;\r\n entityEventsManager: IEntityEventsManager;\r\n entityUpdateCounter: IEntityUpdateCounter;\r\n entityProxyRepository: IEntityProxyRepository;\r\n systemsModuleRepository: ISystemsModuleRepository;\r\n};\r\n\r\nexport const EcsFlowContext = createContext<EcsFlowContextProps>(null);\r\n","import { IEntityProxy } from '@awesome-ecs/abstract/entities';\n\nexport class EcsIdGenerator {\n static entityProxy(proxy: IEntityProxy): string {\n return `${proxy.entityType}:${proxy.entityUid}`;\n }\n}\n","import { EntityTypeUid, IEntityProxy } from '@awesome-ecs/abstract/entities';\r\nimport { Node } from '@xyflow/react';\r\nimport { EcsIdGenerator } from '../utils/id-generator';\r\nimport { EntityNodeData, SystemsModuleNodeData } from './node-props';\r\n\r\nexport class EcsFlowRepository {\r\n private readonly nodes: Map<string, Node>;\r\n\r\n constructor() {\r\n this.nodes = new Map();\r\n }\r\n\r\n get sizeNodes(): number {\r\n return this.nodes.size;\r\n }\r\n\r\n addSystemModuleNode(node: Node<SystemsModuleNodeData>) {\r\n this.nodes.set(node.data.entityType.toString(), node);\r\n }\r\n\r\n getSystemModuleNode(entityType: EntityTypeUid): Node<SystemsModuleNodeData> {\r\n return this.nodes.get(entityType.toString()) as Node<SystemsModuleNodeData>;\r\n }\r\n\r\n addEntityNode(node: Node<EntityNodeData>) {\r\n this.nodes.set(EcsIdGenerator.entityProxy(node.data.entity), node);\r\n }\r\n\r\n getEntityNode(entity: IEntityProxy): Node<EntityNodeData> {\r\n return this.nodes.get(EcsIdGenerator.entityProxy(entity)) as Node<EntityNodeData>;\r\n }\r\n\r\n listAllNodes(): Node[] {\r\n return Array.from(this.nodes.values());\r\n }\r\n}\r\n","export enum EcsHandleDataType {\n proxy = 'proxy',\n module = 'module'\n}\n","import { memo, useMemo } from 'react';\n\nexport type CamelCaseFormatterProps = {\n value: string | number;\n};\n\nfunction CamelCaseFormatter(props: Readonly<CamelCaseFormatterProps>) {\n const value = useMemo(\n () => props.value?.toString().replace(/([a-z])([A-Z])/g, '$1 $2'),\n [props.value]\n );\n return value;\n}\n\nexport default memo(CamelCaseFormatter);\n","import { useComputedColorScheme } from '@mantine/core';\nimport { memo, useMemo } from 'react';\nimport { Inspector } from 'react-inspector';\n\nexport type ObjectInspectorProps = {\n data: any;\n};\n\nfunction ObjectInspector(props: Readonly<ObjectInspectorProps>) {\n const colorScheme = useComputedColorScheme();\n\n const theme = useMemo(\n () => (colorScheme === 'dark' ? 'chromeDark' : 'chromeLight'),\n [colorScheme]\n );\n\n return <Inspector table={false} theme={theme} data={props.data} />;\n}\n\nexport default memo(ObjectInspector);\n","import { IComponent } from '@awesome-ecs/abstract/components';\nimport { Box, Button, Collapse } from '@mantine/core';\nimport { useDisclosure } from '@mantine/hooks';\nimport { memo, useMemo } from 'react';\nimport ObjectInspector from './object-inspector';\n\nexport type EntityComponentInspectorProps = {\n component: IComponent;\n};\n\nfunction EntityComponentInspector(props: Readonly<EntityComponentInspectorProps>) {\n const [opened, { toggle }] = useDisclosure(false);\n\n const buttonColor = useMemo(() => (opened ? 'light' : 'indigo'), [opened]);\n\n return (\n <Box>\n <Button variant=\"outline\" size=\"xs\" onClick={toggle} color={buttonColor} fullWidth>\n {props.component.componentType}\n </Button>\n\n <Collapse in={opened}>{opened && <ObjectInspector data={props.component} />}</Collapse>\n </Box>\n );\n}\n\nexport default memo(EntityComponentInspector);\n","import { IEntity } from '@awesome-ecs/abstract/entities';\nimport { Accordion, Badge, Stack } from '@mantine/core';\nimport { memo } from 'react';\nimport EntityComponentInspector from './entity-component-inspector';\n\nexport type EntityComponentListProps = {\n entity: IEntity;\n};\n\nfunction EntityComponentList(props: Readonly<EntityComponentListProps>) {\n const components = Array.from(props.entity.components.values());\n\n return (\n <Accordion.Item key=\"components\" value=\"components\">\n <Accordion.Control>\n <Badge fullWidth variant=\"light\" rightSection={components.length}>\n Components\n </Badge>\n </Accordion.Control>\n <Accordion.Panel>\n <Stack>\n {components.map((c, i) => (\n <EntityComponentInspector component={c} key={i} />\n ))}\n </Stack>\n </Accordion.Panel>\n </Accordion.Item>\n );\n}\n\nexport default memo(EntityComponentList);\n","import { Badge, BadgeProps } from '@mantine/core';\nimport { memo } from 'react';\nimport FormatterCamelCase from './formatter-camel-case';\n\nexport type BadgeListProps = {\n items: (string | number)[];\n badge?: BadgeProps;\n};\n\nfunction BadgeList(props: Readonly<BadgeListProps>) {\n return props.items.map((value, i) => {\n return (\n <Badge key={i} {...(props.badge || [])}>\n <FormatterCamelCase value={value} />\n </Badge>\n );\n });\n}\n\nexport default memo(BadgeList);\n","import { IEntity } from '@awesome-ecs/abstract/entities';\r\nimport { Accordion, Badge, Stack } from '@mantine/core';\r\nimport { memo, useContext } from 'react';\r\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\r\nimport { EcsIdGenerator } from '../utils/id-generator';\r\nimport BadgeList from './badge-list';\r\n\r\nexport type EntityProxyListProps = {\r\n entity: IEntity;\r\n};\r\n\r\nfunction EntityProxyList(props: Readonly<EntityProxyListProps>) {\r\n const { entityProxyRepository } = useContext(EcsFlowContext);\r\n\r\n const proxies = Array.from(entityProxyRepository.getAll(props.entity.myProxy).values()).flat();\r\n const items = proxies.map((p) => EcsIdGenerator.entityProxy(p));\r\n\r\n return (\r\n <Accordion.Item key=\"proxies\" value=\"proxies\">\r\n <Accordion.Control>\r\n <Badge fullWidth variant=\"light\" rightSection={items.length}>\r\n Proxies\r\n </Badge>\r\n </Accordion.Control>\r\n <Accordion.Panel>\r\n <Stack>\r\n <BadgeList items={items} badge={{ variant: 'outline' }} />\r\n </Stack>\r\n </Accordion.Panel>\r\n </Accordion.Item>\r\n );\r\n}\r\n\r\nexport default memo(EntityProxyList);\r\n","import { IEntity } from '@awesome-ecs/abstract/entities';\nimport { Accordion, Badge, Stack } from '@mantine/core';\nimport { memo, useContext } from 'react';\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\nimport BadgeList from './badge-list';\n\nexport type EntitySubscriptionListProps = {\n entity: IEntity;\n};\n\nfunction EntitySubscriptionList(props: Readonly<EntitySubscriptionListProps>) {\n const { entityEventsManager } = useContext(EcsFlowContext);\n const subscriptions = entityEventsManager.getSubscriptionsForEntity(props.entity.myProxy);\n\n return (\n <Accordion.Item key=\"subscriptions\" value=\"subscriptions\">\n <Accordion.Control>\n <Badge fullWidth variant=\"light\" rightSection={subscriptions.length}>\n Events\n </Badge>\n </Accordion.Control>\n <Accordion.Panel>\n <Stack>\n <BadgeList items={subscriptions} badge={{ variant: 'outline' }} />\n </Stack>\n </Accordion.Panel>\n </Accordion.Item>\n );\n}\n\nexport default memo(EntitySubscriptionList);\n","import { EntityUid } from '@awesome-ecs/abstract/entities';\nimport { Badge } from '@mantine/core';\nimport { memo, useContext, useEffect, useState } from 'react';\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\n\nexport type EntityUpdateCounterProps = {\n entityUid: EntityUid;\n};\n\nfunction EntityUpdateCounter(props: Readonly<EntityUpdateCounterProps>) {\n const [, setRefresh] = useState(0);\n\n const { entityUpdateCounter } = useContext(EcsFlowContext);\n\n const updates = entityUpdateCounter.getUpdateCount(props.entityUid) || 0;\n const removes = entityUpdateCounter.getRemoveCount(props.entityUid) || 0;\n\n useEffect(() => {\n const interval = setInterval(() => {\n setRefresh((refresh) => refresh + 1);\n }, 1000);\n\n return () => {\n clearInterval(interval);\n };\n }, []);\n\n return (\n <>\n <Badge variant=\"light\">{updates}</Badge>\n <Badge variant=\"light\" color=\"orange\">\n {removes}\n </Badge>\n </>\n );\n}\n\nexport default memo(EntityUpdateCounter);\n","import { IEntity } from '@awesome-ecs/abstract/entities';\nimport { Accordion, Badge, Divider, Group } from '@mantine/core';\nimport EntityComponentList from '../components/entity-component-list';\nimport EntityProxyList from '../components/entity-proxy-list';\nimport EntitySubscriptionList from '../components/entity-subscription-list';\nimport EntityUpdateCounter from '../components/entity-update-counter';\n\nexport type NodeEntityProps = {\n entity: IEntity;\n};\n\nfunction EntityLayout({ entity }: Readonly<NodeEntityProps>) {\n return (\n <>\n <Group>\n <Badge variant=\"outline\" color=\"orange\">\n {entity.myProxy.entityUid}\n </Badge>\n <EntityUpdateCounter entityUid={entity.myProxy.entityUid} />\n </Group>\n <Divider my={5} />\n <Accordion>\n <EntityComponentList entity={entity} />\n <EntityProxyList entity={entity} />\n <EntitySubscriptionList entity={entity} />\n </Accordion>\n </>\n );\n}\n\nexport default EntityLayout;\n","import { NodeContainer } from '@awesome-flow/core/layout';\r\nimport { Badge } from '@mantine/core';\r\nimport { Node, NodeProps } from '@xyflow/react';\r\nimport { useContext, useMemo } from 'react';\r\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\r\nimport { EntityNodeData } from '../abstract/node-props';\r\nimport CamelCaseFormatter from '../components/formatter-camel-case';\r\nimport EntityLayout from '../layout/entity-layout';\r\n\r\nfunction EntityNode({ id, data, selected, type }: NodeProps<Node<EntityNodeData>>) {\r\n const { entityRepository } = useContext(EcsFlowContext);\r\n const entity = useMemo(() => entityRepository.get(data.entity), [data.entity, entityRepository]);\r\n\r\n return (\r\n <NodeContainer\r\n id={id}\r\n selected={selected}\r\n data={data}\r\n title={\r\n <Badge fullWidth variant=\"transparent\">\r\n <CamelCaseFormatter value={entity.myProxy.entityType} />\r\n </Badge>\r\n }\r\n type={type}\r\n >\r\n <EntityLayout entity={entity} />\r\n </NodeContainer>\r\n );\r\n}\r\n\r\nexport default EntityNode;\r\n","import { IMiddleware, IPipeline, IPipelineContext } from '@awesome-ecs/abstract/pipelines';\nimport { Accordion, Badge, Stack } from '@mantine/core';\nimport BadgeList from './badge-list';\n\nexport type PipelineMiddlewareListProps = {\n pipeline: IPipeline<IPipelineContext>;\n label: string;\n};\n\nfunction PipelineMiddlewareList(props: Readonly<PipelineMiddlewareListProps>) {\n let middleware: IMiddleware<IPipelineContext>[] = [];\n\n if (props.pipeline) {\n middleware = props.pipeline['middleware'] as IMiddleware<IPipelineContext>[];\n }\n\n const components = middleware.map((m) => {\n return m.name || m.constructor.name;\n });\n\n return (\n <Accordion.Item key={props.label} value={props.label}>\n <Accordion.Control>\n <Badge fullWidth variant=\"light\" rightSection={components.length}>\n {props.label}\n </Badge>\n </Accordion.Control>\n <Accordion.Panel>\n <Stack>\n <BadgeList items={components} badge={{ variant: 'outline' }} />\n </Stack>\n </Accordion.Panel>\n </Accordion.Item>\n );\n}\n\nexport default PipelineMiddlewareList;\n","import { EntityTypeUid, IEntity } from '@awesome-ecs/abstract/entities';\nimport { ISystemsModule, ISystemsRuntimeContext, SystemType } from '@awesome-ecs/abstract/systems';\nimport { Accordion, Text } from '@mantine/core';\nimport { useMemo } from 'react';\nimport PipelineMiddlewareList from '../components/pipeline-middleware-list';\n\nexport type NodeSystemModuleProps = {\n type: EntityTypeUid;\n module: ISystemsModule<IEntity>;\n};\n\nfunction SystemsModuleLayout(props: Readonly<NodeSystemModuleProps>) {\n const { module } = props;\n\n const runtimeContext = module['runtimeContext'] as ISystemsRuntimeContext<IEntity>;\n const { systemContext, systemsModule } = runtimeContext;\n\n const error = systemContext.runtime.error;\n\n const init = systemsModule.pipelines.get(SystemType.initialize);\n const update = systemsModule.pipelines.get(SystemType.update);\n const render = systemsModule.pipelines.get(SystemType.render);\n const sync = systemsModule.pipelines.get(SystemType.sync);\n\n return (\n <>\n <Text>Error?: {error}</Text>\n <Accordion>\n {init && <PipelineMiddlewareList pipeline={init} label=\"Initialize\" />}\n {update && <PipelineMiddlewareList pipeline={update} label=\"Update\" />}\n {render && <PipelineMiddlewareList pipeline={render} label=\"Render\" />}\n {sync && <PipelineMiddlewareList pipeline={sync} label=\"Sync\" />}\n </Accordion>\n </>\n );\n}\n\nexport default SystemsModuleLayout;\n","import { NodeContainer } from '@awesome-flow/core/layout';\r\nimport { Badge } from '@mantine/core';\r\nimport { Node, NodeProps } from '@xyflow/react';\r\nimport { useContext } from 'react';\r\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\r\nimport { SystemsModuleNodeData } from '../abstract/node-props';\r\nimport CamelCaseFormatter from '../components/formatter-camel-case';\r\nimport SystemsModuleLayout from '../layout/systems-module-layout';\r\n\r\nfunction SystemsModuleNode({ id, data, selected, type }: NodeProps<Node<SystemsModuleNodeData>>) {\r\n const { systemsModuleRepository } = useContext(EcsFlowContext);\r\n const module = systemsModuleRepository.get(data.entityType);\r\n\r\n return (\r\n <NodeContainer\r\n id={id}\r\n selected={selected}\r\n data={data}\r\n title={\r\n <Badge fullWidth color=\"indigo\" variant=\"transparent\">\r\n <CamelCaseFormatter value={data.entityType} />\r\n </Badge>\r\n }\r\n type={type}\r\n >\r\n <SystemsModuleLayout type={data.entityType} module={module} />\r\n </NodeContainer>\r\n );\r\n}\r\n\r\nexport default SystemsModuleNode;\r\n","export enum EcsTemplateGroup {\n ecs = 'ECS'\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/react';\nimport { EcsHandleDataType } from '../abstract/handle-types';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { EcsTemplateGroup } from '../abstract/templates';\n\nexport class EntityNodeTemplate implements ITemplateFactory {\n readonly template: NodeTemplate<EntityNodeData> = {\n type: EcsNodeType.entity,\n group: EcsTemplateGroup.ecs,\n data: {\n title: 'Entity',\n entity: null\n },\n handles: [\n {\n dataType: EcsHandleDataType.proxy,\n position: Position.Left,\n connection: 'target',\n disabled: true\n },\n {\n dataType: EcsHandleDataType.proxy,\n position: Position.Right,\n connection: 'source',\n disabled: true\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/react';\nimport { EcsHandleDataType } from '../abstract/handle-types';\nimport { SystemsModuleNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { EcsTemplateGroup } from '../abstract/templates';\n\nexport class SystemsModuleNodeTemplate implements ITemplateFactory {\n readonly template: NodeTemplate<SystemsModuleNodeData> = {\n type: EcsNodeType.systemsModule,\n group: EcsTemplateGroup.ecs,\n data: {\n title: 'Systems Module',\n entityType: null\n },\n handles: [\n {\n dataType: EcsHandleDataType.module,\n position: Position.Left,\n connection: 'target',\n disabled: true\n }\n ]\n };\n}\n","import { NodeTypes } from '@xyflow/react';\nimport EntityNode from '../nodes/node-entity';\nimport SystemsModuleNode from '../nodes/node-systems-module';\nimport { EntityNodeTemplate } from '../templates/template-entity-node';\nimport { SystemsModuleNodeTemplate } from '../templates/template-systems-module';\n\nexport enum EcsNodeType {\n systemsModule = 'systems-module-node',\n entity = 'entity-node'\n}\n\nexport const ecsNodeTypes = {\n [EcsNodeType.systemsModule]: SystemsModuleNode,\n [EcsNodeType.entity]: EntityNode\n} satisfies NodeTypes;\n\nexport const ecsNodeTemplates = {\n [EcsNodeType.entity]: new EntityNodeTemplate(),\n [EcsNodeType.systemsModule]: new SystemsModuleNodeTemplate()\n};\n","import { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useContext, useEffect } from 'react';\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\nimport { EntityNodeData } from '../abstract/node-props';\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 { ecsFlowRepository, entityRepository } = useContext(EcsFlowContext);\n\n useEffect(() => {\n for (const node of nodesToConnect) {\n const sourceHandle = node.data.handles.find((h) => h.connection === 'source');\n const entity = entityRepository.get(node.data.entity);\n\n const systemModule = ecsFlowRepository.getSystemModuleNode(entity.myProxy.entityType);\n const targetHandle = systemModule?.data.handles.find((h) => h.connection === 'target');\n\n if (targetHandle) {\n onConnect({\n source: node.id,\n target: systemModule.id,\n sourceHandle: sourceHandle.handleId,\n targetHandle: targetHandle.handleId\n });\n }\n }\n }, [nodesToConnect, ecsFlowRepository, entityRepository, onConnect]);\n\n return <></>;\n}\n\nexport default FlowEcsEdgeModules;\n","import { useFlowStore } from '@awesome-flow/core/hooks';\r\nimport { Node } from '@xyflow/react';\r\nimport { useContext, useEffect } from 'react';\r\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\r\nimport { EntityNodeData } from '../abstract/node-props';\r\n\r\nexport type FlowEcsEdgeProxiesProps = {\r\n nodesToConnect: Node<EntityNodeData>[];\r\n};\r\n\r\nfunction FlowEcsEdgeProxies(props: Readonly<FlowEcsEdgeProxiesProps>) {\r\n const { nodesToConnect } = props;\r\n\r\n const onConnect = useFlowStore((state: { onConnect: any }) => state.onConnect);\r\n\r\n const { ecsFlowRepository, entityProxyRepository, entityRepository } = useContext(EcsFlowContext);\r\n\r\n useEffect(() => {\r\n for (const node of nodesToConnect) {\r\n const sourceHandle = node.data.handles.find((h) => h.connection === 'source');\r\n const entity = entityRepository.get(node.data.entity);\r\n const proxies = Array.from(entityProxyRepository.getAll(entity.myProxy).values()).flat();\r\n\r\n for (const proxy of proxies) {\r\n const proxyNode = ecsFlowRepository.getEntityNode(proxy);\r\n\r\n if (proxyNode) {\r\n const targetHandle = proxyNode.data.handles.find((h) => h.connection === 'target');\r\n\r\n onConnect({\r\n source: node.id,\r\n target: proxyNode.id,\r\n sourceHandle: sourceHandle.handleId,\r\n targetHandle: targetHandle.handleId\r\n });\r\n }\r\n }\r\n }\r\n }, [nodesToConnect, ecsFlowRepository, entityRepository, entityProxyRepository, onConnect]);\r\n\r\n return <></>;\r\n}\r\n\r\nexport default FlowEcsEdgeProxies;\r\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 { EcsFlowContext } from '../abstract/ecs-flow-context';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\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 { ecsFlowRepository, entityRepository } = useContext(EcsFlowContext);\n const [entityNodes, setEntityNodes] = useState<Node<EntityNodeData>[]>([]);\n\n useEffect(() => {\n const entities = entityRepository.listAll();\n const nodes = [];\n\n for (const entity of entities) {\n if (ecsFlowRepository.getEntityNode(entity.myProxy)) {\n continue;\n }\n\n const node = nodeFactory.createNodeFromType<EntityNodeData>(EcsNodeType.entity);\n\n node.data.entity = entity.myProxy;\n node.position = { x: 0, y: 0 };\n\n ecsFlowRepository.addEntityNode(node);\n nodes.push(node);\n }\n\n setEntityNodes(nodes);\n addNodes(nodes);\n }, [entityRepository, entityRepository.size, ecsFlowRepository, nodeFactory, addNodes]);\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';\r\nimport { useFlowStore } from '@awesome-flow/core/hooks';\r\nimport { useContext, useEffect } from 'react';\r\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\r\nimport { SystemsModuleNodeData } from '../abstract/node-props';\r\nimport { EcsNodeType } from '../abstract/node-types';\r\n\r\nfunction FlowEcsModules() {\r\n const { nodeFactory } = useContext(FlowContext);\r\n const addNodes = useFlowStore((state) => state.addNodes);\r\n\r\n const { ecsFlowRepository, systemsModuleRepository } = useContext(EcsFlowContext);\r\n\r\n useEffect(() => {\r\n const modules = Array.from(systemsModuleRepository.list()).filter((m) => !!m);\r\n const keys = Array.from(modules.values()).map((v) => v[0]);\r\n\r\n const nodesToAdd = [];\r\n\r\n for (const element of keys) {\r\n if (ecsFlowRepository.getSystemModuleNode(element)) {\r\n continue;\r\n }\r\n\r\n const node = nodeFactory.createNodeFromType<SystemsModuleNodeData>(EcsNodeType.systemsModule);\r\n\r\n node.data.entityType = element;\r\n node.position = { x: 0, y: 0 };\r\n\r\n ecsFlowRepository.addSystemModuleNode(node);\r\n nodesToAdd.push(node);\r\n }\r\n\r\n if (nodesToAdd.length) {\r\n addNodes(nodesToAdd);\r\n }\r\n }, [\r\n nodeFactory,\r\n addNodes,\r\n ecsFlowRepository,\r\n ecsFlowRepository.sizeNodes,\r\n systemsModuleRepository,\r\n systemsModuleRepository.size\r\n ]);\r\n\r\n return <></>;\r\n}\r\n\r\nexport default FlowEcsModules;\r\n","import { FlowAutoLayout } from '@awesome-flow/core/canvas';\nimport { memo, useContext, useEffect, useState } from 'react';\nimport { EcsFlowContext } from '../abstract/ecs-flow-context';\nimport FlowEcsEntities from './flow-ecs-entities';\nimport FlowEcsModules from './flow-ecs-modules';\n\nexport type FlowEcsStateProps = {\n showSystemModules: boolean;\n showEntities: boolean;\n autoLayout: boolean;\n};\n\nfunction FlowEcsState(props: Readonly<FlowEcsStateProps>) {\n const [, setUpdates] = useState(0);\n const [refreshLayout, setRefreshLayout] = useState(false);\n\n const { ecsFlowRepository } = useContext(EcsFlowContext);\n\n useEffect(() => {\n setRefreshLayout(true);\n }, [ecsFlowRepository.sizeNodes]);\n\n useEffect(() => {\n setInterval(() => {\n setUpdates((updates) => updates + 1);\n }, 1000);\n }, []);\n\n return (\n <>\n {props.showSystemModules && <FlowEcsModules />}\n {props.showEntities && <FlowEcsEntities />}\n {props.autoLayout && <FlowAutoLayout refreshLayout={refreshLayout} />}\n </>\n );\n}\n\nexport default memo(FlowEcsState);\n"],"mappings":";;;;;;;;;;;;;;AAeA,MAAa,0CAAoD,KAAK;;;;ACbtE,IAAa,iBAAb,MAA4B;CAC1B,OAAO,YAAY,OAA6B;AAC9C,SAAO,GAAG,MAAM,WAAW,GAAG,MAAM;;;;;;ACCxC,IAAa,oBAAb,MAA+B;CAC7B,AAAiB;CAEjB,cAAc;AACZ,OAAK,wBAAQ,IAAI,KAAK;;CAGxB,IAAI,YAAoB;AACtB,SAAO,KAAK,MAAM;;CAGpB,oBAAoB,MAAmC;AACrD,OAAK,MAAM,IAAI,KAAK,KAAK,WAAW,UAAU,EAAE,KAAK;;CAGvD,oBAAoB,YAAwD;AAC1E,SAAO,KAAK,MAAM,IAAI,WAAW,UAAU,CAAC;;CAG9C,cAAc,MAA4B;AACxC,OAAK,MAAM,IAAI,eAAe,YAAY,KAAK,KAAK,OAAO,EAAE,KAAK;;CAGpE,cAAc,QAA4C;AACxD,SAAO,KAAK,MAAM,IAAI,eAAe,YAAY,OAAO,CAAC;;CAG3D,eAAuB;AACrB,SAAO,MAAM,KAAK,KAAK,MAAM,QAAQ,CAAC;;;;;;ACjC1C,IAAY,oBAAL;AACL;AACA;;KACD;;;;ACGD,SAAS,mBAAmB,OAA0C;AAKpE,iCAHQ,MAAM,OAAO,UAAU,CAAC,QAAQ,mBAAmB,QAAQ,EACjE,CAAC,MAAM,MAAM,CACd;;AAIH,mDAAoB,mBAAmB;;;;ACNvC,SAAS,gBAAgB,OAAuC;CAC9D,MAAM,yDAAsC;AAO5C,QAAO,2CAACA,2BAAD;EAAW,OAAO;EAAO,gCAJvB,gBAAgB,SAAS,eAAe,eAC/C,CAAC,YAAY,CACd;EAE6C,MAAM,MAAM;EAAQ;;AAGpE,+CAAoB,gBAAgB;;;;ACTpC,SAAS,yBAAyB,OAAgD;CAChF,MAAM,CAAC,QAAQ,EAAE,8CAA0B,MAAM;AAIjD,QACE,4CAACC,mBAAD,aACE,2CAACC,sBAAD;EAAQ,SAAQ;EAAU,MAAK;EAAK,SAAS;EAAQ,gCAJtB,SAAS,UAAU,UAAW,CAAC,OAAO,CAAC;EAIG;YACtE,MAAM,UAAU;EACV,GAET,2CAACC,wBAAD;EAAU,IAAI;YAAS,UAAU,2CAACC,0BAAD,EAAiB,MAAM,MAAM,WAAa;EAAY,EACnF;;AAIV,yDAAoB,yBAAyB;;;;ACjB7C,SAAS,oBAAoB,OAA2C;CACtE,MAAM,aAAa,MAAM,KAAK,MAAM,OAAO,WAAW,QAAQ,CAAC;AAE/D,QACE,4CAACC,wBAAU,MAAX;EAAiC,OAAM;YAAvC,CACE,2CAACA,wBAAU,SAAX,YACE,2CAACC,qBAAD;GAAO;GAAU,SAAQ;GAAQ,cAAc,WAAW;aAAQ;GAE1D,GACU,GACpB,2CAACD,wBAAU,OAAX,YACE,2CAACE,qBAAD,YACG,WAAW,KAAK,GAAG,MAClB,2CAACC,oCAAD,EAA0B,WAAW,GAAa,EAAL,EAAK,CAClD,EACI,GACQ,EACH;IAbG,aAaH;;AAIrB,oDAAoB,oBAAoB;;;;ACrBxC,SAAS,UAAU,OAAiC;AAClD,QAAO,MAAM,MAAM,KAAK,OAAO,MAAM;AACnC,SACE,2CAACC,qBAAD;GAAe,GAAK,MAAM,SAAS,EAAE;aACnC,2CAACC,8BAAD,EAA2B,OAAS;GAC9B,EAFI,EAEJ;GAEV;;AAGJ,yCAAoB,UAAU;;;;ACR9B,SAAS,gBAAgB,OAAuC;CAC9D,MAAM,EAAE,gDAAqC,eAAe;CAG5D,MAAM,QADU,MAAM,KAAK,sBAAsB,OAAO,MAAM,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CACxE,KAAK,MAAM,eAAe,YAAY,EAAE,CAAC;AAE/D,QACE,4CAACC,wBAAU,MAAX;EAA8B,OAAM;YAApC,CACE,2CAACA,wBAAU,SAAX,YACE,2CAACC,qBAAD;GAAO;GAAU,SAAQ;GAAQ,cAAc,MAAM;aAAQ;GAErD,GACU,GACpB,2CAACD,wBAAU,OAAX,YACE,2CAACE,qBAAD,YACE,2CAACC,oBAAD;GAAkB;GAAO,OAAO,EAAE,SAAS,WAAW;GAAI,GACpD,GACQ,EACH;IAXG,UAWH;;AAIrB,gDAAoB,gBAAgB;;;;ACvBpC,SAAS,uBAAuB,OAA8C;CAC5E,MAAM,EAAE,8CAAmC,eAAe;CAC1D,MAAM,gBAAgB,oBAAoB,0BAA0B,MAAM,OAAO,QAAQ;AAEzF,QACE,4CAACC,wBAAU,MAAX;EAAoC,OAAM;YAA1C,CACE,2CAACA,wBAAU,SAAX,YACE,2CAACC,qBAAD;GAAO;GAAU,SAAQ;GAAQ,cAAc,cAAc;aAAQ;GAE7D,GACU,GACpB,2CAACD,wBAAU,OAAX,YACE,2CAACE,qBAAD,YACE,2CAACC,oBAAD;GAAW,OAAO;GAAe,OAAO,EAAE,SAAS,WAAW;GAAI,GAC5D,GACQ,EACH;IAXG,gBAWH;;AAIrB,uDAAoB,uBAAuB;;;;ACrB3C,SAAS,oBAAoB,OAA2C;CACtE,MAAM,GAAG,kCAAuB,EAAE;CAElC,MAAM,EAAE,8CAAmC,eAAe;CAE1D,MAAM,UAAU,oBAAoB,eAAe,MAAM,UAAU,IAAI;CACvE,MAAM,UAAU,oBAAoB,eAAe,MAAM,UAAU,IAAI;AAEvE,4BAAgB;EACd,MAAM,WAAW,kBAAkB;AACjC,eAAY,YAAY,UAAU,EAAE;KACnC,IAAK;AAER,eAAa;AACX,iBAAc,SAAS;;IAExB,EAAE,CAAC;AAEN,QACE,qFACE,2CAACC,qBAAD;EAAO,SAAQ;YAAS;EAAgB,GACxC,2CAACA,qBAAD;EAAO,SAAQ;EAAQ,OAAM;YAC1B;EACK,EACP;;AAIP,oDAAoB,oBAAoB;;;;AC1BxC,SAAS,aAAa,EAAE,UAAqC;AAC3D,QACE;EACE,4CAACC,qBAAD,aACE,2CAACC,qBAAD;GAAO,SAAQ;GAAU,OAAM;aAC5B,OAAO,QAAQ;GACV,GACR,2CAACC,+BAAD,EAAqB,WAAW,OAAO,QAAQ,WAAa,EACtD;EACR,2CAACC,uBAAD,EAAS,IAAI,GAAK;EAClB,4CAACC,yBAAD;GACE,2CAACC,+BAAD,EAA6B,QAAU;GACvC,2CAACC,2BAAD,EAAyB,QAAU;GACnC,2CAACC,kCAAD,EAAgC,QAAU;GAChC;EACX;;;;;ACjBP,SAAS,WAAW,EAAE,IAAI,MAAM,UAAU,QAAyC;CACjF,MAAM,EAAE,2CAAgC,eAAe;CACvD,MAAM,kCAAuB,iBAAiB,IAAI,KAAK,OAAO,EAAE,CAAC,KAAK,QAAQ,iBAAiB,CAAC;AAEhG,QACE,2CAACC,yCAAD;EACM;EACM;EACJ;EACN,OACE,2CAACC,qBAAD;GAAO;GAAU,SAAQ;aACvB,2CAACC,8BAAD,EAAoB,OAAO,OAAO,QAAQ,YAAc;GAClD;EAEJ;YAEN,2CAAC,cAAD,EAAsB,QAAU;EAClB;;;;;ACjBpB,SAAS,uBAAuB,OAA8C;CAC5E,IAAI,aAA8C,EAAE;AAEpD,KAAI,MAAM,SACR,cAAa,MAAM,SAAS;CAG9B,MAAM,aAAa,WAAW,KAAK,MAAM;AACvC,SAAO,EAAE,QAAQ,EAAE,YAAY;GAC/B;AAEF,QACE,4CAACC,wBAAU,MAAX;EAAkC,OAAO,MAAM;YAA/C,CACE,2CAACA,wBAAU,SAAX,YACE,2CAACC,qBAAD;GAAO;GAAU,SAAQ;GAAQ,cAAc,WAAW;aACvD,MAAM;GACD,GACU,GACpB,2CAACD,wBAAU,OAAX,YACE,2CAACE,qBAAD,YACE,2CAACC,oBAAD;GAAW,OAAO;GAAY,OAAO,EAAE,SAAS,WAAW;GAAI,GACzD,GACQ,EACH;IAXI,MAAM,MAWV;;;;;ACrBrB,SAAS,oBAAoB,OAAwC;CACnE,MAAM,EAAE,WAAW;CAGnB,MAAM,EAAE,eAAe,kBADA,OAAO;CAG9B,MAAM,QAAQ,cAAc,QAAQ;CAEpC,MAAM,OAAO,cAAc,UAAU,IAAIC,yCAAW,WAAW;CAC/D,MAAM,SAAS,cAAc,UAAU,IAAIA,yCAAW,OAAO;CAC7D,MAAM,SAAS,cAAc,UAAU,IAAIA,yCAAW,OAAO;CAC7D,MAAM,OAAO,cAAc,UAAU,IAAIA,yCAAW,KAAK;AAEzD,QACE,qFACE,4CAACC,oBAAD,aAAM,YAAS,MAAa,KAC5B,4CAACC,yBAAD;EACG,QAAQ,2CAAC,wBAAD;GAAwB,UAAU;GAAM,OAAM;GAAe;EACrE,UAAU,2CAAC,wBAAD;GAAwB,UAAU;GAAQ,OAAM;GAAW;EACrE,UAAU,2CAAC,wBAAD;GAAwB,UAAU;GAAQ,OAAM;GAAW;EACrE,QAAQ,2CAAC,wBAAD;GAAwB,UAAU;GAAM,OAAM;GAAS;EACtD,IACX;;;;;ACxBP,SAAS,kBAAkB,EAAE,IAAI,MAAM,UAAU,QAAgD;CAC/F,MAAM,EAAE,kDAAuC,eAAe;CAC9D,MAAM,SAAS,wBAAwB,IAAI,KAAK,WAAW;AAE3D,QACE,2CAACC,yCAAD;EACM;EACM;EACJ;EACN,OACE,2CAACC,qBAAD;GAAO;GAAU,OAAM;GAAS,SAAQ;aACtC,2CAACC,8BAAD,EAAoB,OAAO,KAAK,YAAc;GACxC;EAEJ;YAEN,2CAAC,qBAAD;GAAqB,MAAM,KAAK;GAAoB;GAAU;EAChD;;;;;AC1BpB,IAAY,mBAAL;AACL;;KACD;;;;ACKD,IAAa,qBAAb,MAA4D;CAC1D,AAAS,WAAyC;EAChD,MAAM,YAAY;EAClB,OAAO,iBAAiB;EACxB,MAAM;GACJ,OAAO;GACP,QAAQ;GACT;EACD,SAAS,CACP;GACE,UAAU,kBAAkB;GAC5B,UAAUC,uBAAS;GACnB,YAAY;GACZ,UAAU;GACX,EACD;GACE,UAAU,kBAAkB;GAC5B,UAAUA,uBAAS;GACnB,YAAY;GACZ,UAAU;GACX,CACF;EACF;;;;;ACtBH,IAAa,4BAAb,MAAmE;CACjE,AAAS,WAAgD;EACvD,MAAM,YAAY;EAClB,OAAO,iBAAiB;EACxB,MAAM;GACJ,OAAO;GACP,YAAY;GACb;EACD,SAAS,CACP;GACE,UAAU,kBAAkB;GAC5B,UAAUC,uBAAS;GACnB,YAAY;GACZ,UAAU;GACX,CACF;EACF;;;;;ACjBH,IAAY,cAAL;AACL;AACA;;KACD;AAED,MAAa,eAAe;EACzB,YAAY,gBAAgB;EAC5B,YAAY,SAAS;CACvB;AAED,MAAa,mBAAmB;EAC7B,YAAY,SAAS,IAAI,oBAAoB;EAC7C,YAAY,gBAAgB,IAAI,2BAA2B;CAC7D;;;;ACTD,SAAS,mBAAmB,OAA0C;CACpE,MAAM,EAAE,mBAAmB;CAE3B,MAAM,wDAA0B,UAA8B,MAAM,UAAU;CAE9E,MAAM,EAAE,mBAAmB,2CAAgC,eAAe;AAE1E,4BAAgB;AACd,OAAK,MAAM,QAAQ,gBAAgB;GACjC,MAAM,eAAe,KAAK,KAAK,QAAQ,MAAM,MAAM,EAAE,eAAe,SAAS;GAC7E,MAAM,SAAS,iBAAiB,IAAI,KAAK,KAAK,OAAO;GAErD,MAAM,eAAe,kBAAkB,oBAAoB,OAAO,QAAQ,WAAW;GACrF,MAAM,eAAe,cAAc,KAAK,QAAQ,MAAM,MAAM,EAAE,eAAe,SAAS;AAEtF,OAAI,aACF,WAAU;IACR,QAAQ,KAAK;IACb,QAAQ,aAAa;IACrB,cAAc,aAAa;IAC3B,cAAc,aAAa;IAC5B,CAAC;;IAGL;EAAC;EAAgB;EAAmB;EAAkB;EAAU,CAAC;AAEpE,QAAO,yEAAK;;;;;AC1Bd,SAAS,mBAAmB,OAA0C;CACpE,MAAM,EAAE,mBAAmB;CAE3B,MAAM,wDAA0B,UAA8B,MAAM,UAAU;CAE9E,MAAM,EAAE,mBAAmB,uBAAuB,2CAAgC,eAAe;AAEjG,4BAAgB;AACd,OAAK,MAAM,QAAQ,gBAAgB;GACjC,MAAM,eAAe,KAAK,KAAK,QAAQ,MAAM,MAAM,EAAE,eAAe,SAAS;GAC7E,MAAM,SAAS,iBAAiB,IAAI,KAAK,KAAK,OAAO;GACrD,MAAM,UAAU,MAAM,KAAK,sBAAsB,OAAO,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM;AAExF,QAAK,MAAM,SAAS,SAAS;IAC3B,MAAM,YAAY,kBAAkB,cAAc,MAAM;AAExD,QAAI,WAAW;KACb,MAAM,eAAe,UAAU,KAAK,QAAQ,MAAM,MAAM,EAAE,eAAe,SAAS;AAElF,eAAU;MACR,QAAQ,KAAK;MACb,QAAQ,UAAU;MAClB,cAAc,aAAa;MAC3B,cAAc,aAAa;MAC5B,CAAC;;;;IAIP;EAAC;EAAgB;EAAmB;EAAkB;EAAuB;EAAU,CAAC;AAE3F,QAAO,yEAAK;;;;;AC9Bd,SAAS,kBAAkB;CACzB,MAAM,EAAE,sCAA2BC,wCAAY;CAC/C,MAAM,uDAAyB,UAAU,MAAM,SAAS;CAExD,MAAM,EAAE,mBAAmB,2CAAgC,eAAe;CAC1E,MAAM,CAAC,aAAa,sCAAmD,EAAE,CAAC;AAE1E,4BAAgB;EACd,MAAM,WAAW,iBAAiB,SAAS;EAC3C,MAAM,QAAQ,EAAE;AAEhB,OAAK,MAAM,UAAU,UAAU;AAC7B,OAAI,kBAAkB,cAAc,OAAO,QAAQ,CACjD;GAGF,MAAM,OAAO,YAAY,mBAAmC,YAAY,OAAO;AAE/E,QAAK,KAAK,SAAS,OAAO;AAC1B,QAAK,WAAW;IAAE,GAAG;IAAG,GAAG;IAAG;AAE9B,qBAAkB,cAAc,KAAK;AACrC,SAAM,KAAK,KAAK;;AAGlB,iBAAe,MAAM;AACrB,WAAS,MAAM;IACd;EAAC;EAAkB,iBAAiB;EAAM;EAAmB;EAAa;EAAS,CAAC;AAEvF,QACE,qFACE,2CAAC,oBAAD,EAAoB,gBAAgB,aAAe,GACnD,2CAAC,oBAAD,EAAoB,gBAAgB,aAAe,EAClD;;;;;ACpCP,SAAS,iBAAiB;CACxB,MAAM,EAAE,sCAA2BC,wCAAY;CAC/C,MAAM,uDAAyB,UAAU,MAAM,SAAS;CAExD,MAAM,EAAE,mBAAmB,kDAAuC,eAAe;AAEjF,4BAAgB;EACd,MAAM,UAAU,MAAM,KAAK,wBAAwB,MAAM,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,EAAE;EAC7E,MAAM,OAAO,MAAM,KAAK,QAAQ,QAAQ,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG;EAE1D,MAAM,aAAa,EAAE;AAErB,OAAK,MAAM,WAAW,MAAM;AAC1B,OAAI,kBAAkB,oBAAoB,QAAQ,CAChD;GAGF,MAAM,OAAO,YAAY,mBAA0C,YAAY,cAAc;AAE7F,QAAK,KAAK,aAAa;AACvB,QAAK,WAAW;IAAE,GAAG;IAAG,GAAG;IAAG;AAE9B,qBAAkB,oBAAoB,KAAK;AAC3C,cAAW,KAAK,KAAK;;AAGvB,MAAI,WAAW,OACb,UAAS,WAAW;IAErB;EACD;EACA;EACA;EACA,kBAAkB;EAClB;EACA,wBAAwB;EACzB,CAAC;AAEF,QAAO,yEAAK;;;;;ACjCd,SAAS,aAAa,OAAoC;CACxD,MAAM,GAAG,kCAAuB,EAAE;CAClC,MAAM,CAAC,eAAe,wCAA6B,MAAM;CAEzD,MAAM,EAAE,4CAAiC,eAAe;AAExD,4BAAgB;AACd,mBAAiB,KAAK;IACrB,CAAC,kBAAkB,UAAU,CAAC;AAEjC,4BAAgB;AACd,oBAAkB;AAChB,eAAY,YAAY,UAAU,EAAE;KACnC,IAAK;IACP,EAAE,CAAC;AAEN,QACE;EACG,MAAM,qBAAqB,2CAAC,gBAAD,EAAkB;EAC7C,MAAM,gBAAgB,2CAAC,iBAAD,EAAmB;EACzC,MAAM,cAAc,2CAACC,0CAAD,EAA+B,eAAiB;EACpE;;AAIP,6CAAoB,aAAa"}
package/dist/index.d.cts CHANGED
@@ -1,12 +1,8 @@
1
- import * as react0$1 from "react";
2
- import * as react0 from "react";
3
- import { EntityTypeUid, EntityUid, IEntityProxy, IEntityProxyRepository, IEntityRepository } from "@awesome-ecs/abstract/entities";
1
+ import * as react from "react";
2
+ import { EntityTypeUid, EntityUid, IEntityEventsManager, IEntityProxy, IEntityProxyRepository, IEntityRepository } from "@awesome-ecs/abstract/entities";
4
3
  import { ISystemsModuleRepository } from "@awesome-ecs/abstract/systems";
5
- import { EntityEventsManager } from "@awesome-ecs/core/entities";
6
4
  import { Node, NodeProps } from "@xyflow/react";
7
5
  import { BasicNodeData, ITemplateFactory, NodeTemplate } from "@awesome-flow/core/abstract";
8
- import * as react_jsx_runtime0$1 from "react/jsx-runtime";
9
- import * as react_jsx_runtime1 from "react/jsx-runtime";
10
6
  import * as react_jsx_runtime0 from "react/jsx-runtime";
11
7
 
12
8
  //#region src/utils/entity-update-counter.d.ts
@@ -14,7 +10,6 @@ interface IEntityUpdateCounter {
14
10
  getUpdateCount(entityUid: EntityUid): number;
15
11
  getRemoveCount(entityUid: EntityUid): number;
16
12
  }
17
- //# sourceMappingURL=entity-update-counter.d.ts.map
18
13
  //#endregion
19
14
  //#region src/abstract/node-props.d.ts
20
15
  type SystemsModuleNodeData = BasicNodeData & {
@@ -23,11 +18,10 @@ type SystemsModuleNodeData = BasicNodeData & {
23
18
  type EntityNodeData = BasicNodeData & {
24
19
  entity: IEntityProxy;
25
20
  };
26
- //# sourceMappingURL=node-props.d.ts.map
27
21
  //#endregion
28
22
  //#region src/abstract/ecs-flow-repository.d.ts
29
23
  declare class EcsFlowRepository {
30
- private nodes;
24
+ private readonly nodes;
31
25
  constructor();
32
26
  get sizeNodes(): number;
33
27
  addSystemModuleNode(node: Node<SystemsModuleNodeData>): void;
@@ -36,26 +30,23 @@ declare class EcsFlowRepository {
36
30
  getEntityNode(entity: IEntityProxy): Node<EntityNodeData>;
37
31
  listAllNodes(): Node[];
38
32
  }
39
- //# sourceMappingURL=ecs-flow-repository.d.ts.map
40
33
  //#endregion
41
34
  //#region src/abstract/ecs-flow-context.d.ts
42
35
  type EcsFlowContextProps = {
43
36
  ecsFlowRepository: EcsFlowRepository;
44
37
  entityRepository: IEntityRepository;
45
- entityEventsManager: EntityEventsManager;
38
+ entityEventsManager: IEntityEventsManager;
46
39
  entityUpdateCounter: IEntityUpdateCounter;
47
40
  entityProxyRepository: IEntityProxyRepository;
48
41
  systemsModuleRepository: ISystemsModuleRepository;
49
42
  };
50
- declare const EcsFlowContext: react0$1.Context<EcsFlowContextProps>;
51
- //# sourceMappingURL=ecs-flow-context.d.ts.map
43
+ declare const EcsFlowContext: react.Context<EcsFlowContextProps>;
52
44
  //#endregion
53
45
  //#region src/abstract/handle-types.d.ts
54
46
  declare enum EcsHandleDataType {
55
47
  proxy = "proxy",
56
- module = "module",
48
+ module = "module"
57
49
  }
58
- //# sourceMappingURL=handle-types.d.ts.map
59
50
  //#endregion
60
51
  //#region src/nodes/node-entity.d.ts
61
52
  declare function EntityNode({
@@ -63,7 +54,7 @@ declare function EntityNode({
63
54
  data,
64
55
  selected,
65
56
  type
66
- }: NodeProps<Node<EntityNodeData>>): react_jsx_runtime0$1.JSX.Element;
57
+ }: NodeProps<Node<EntityNodeData>>): react_jsx_runtime0.JSX.Element;
67
58
  //#endregion
68
59
  //#region src/nodes/node-systems-module.d.ts
69
60
  declare function SystemsModuleNode({
@@ -71,24 +62,22 @@ declare function SystemsModuleNode({
71
62
  data,
72
63
  selected,
73
64
  type
74
- }: NodeProps<Node<SystemsModuleNodeData>>): react_jsx_runtime1.JSX.Element;
65
+ }: NodeProps<Node<SystemsModuleNodeData>>): react_jsx_runtime0.JSX.Element;
75
66
  //#endregion
76
67
  //#region src/templates/template-entity-node.d.ts
77
68
  declare class EntityNodeTemplate implements ITemplateFactory {
78
69
  readonly template: NodeTemplate<EntityNodeData>;
79
70
  }
80
- //# sourceMappingURL=template-entity-node.d.ts.map
81
71
  //#endregion
82
72
  //#region src/templates/template-systems-module.d.ts
83
73
  declare class SystemsModuleNodeTemplate implements ITemplateFactory {
84
74
  readonly template: NodeTemplate<SystemsModuleNodeData>;
85
75
  }
86
- //# sourceMappingURL=template-systems-module.d.ts.map
87
76
  //#endregion
88
77
  //#region src/abstract/node-types.d.ts
89
78
  declare enum EcsNodeType {
90
79
  systemsModule = "systems-module-node",
91
- entity = "entity-node",
80
+ entity = "entity-node"
92
81
  }
93
82
  declare const ecsNodeTypes: {
94
83
  "systems-module-node": typeof SystemsModuleNode;
@@ -98,13 +87,11 @@ declare const ecsNodeTemplates: {
98
87
  "entity-node": EntityNodeTemplate;
99
88
  "systems-module-node": SystemsModuleNodeTemplate;
100
89
  };
101
- //# sourceMappingURL=node-types.d.ts.map
102
90
  //#endregion
103
91
  //#region src/abstract/templates.d.ts
104
92
  declare enum EcsTemplateGroup {
105
- ecs = "ECS",
93
+ ecs = "ECS"
106
94
  }
107
- //# sourceMappingURL=templates.d.ts.map
108
95
  //#endregion
109
96
  //#region src/flow/flow-ecs-state.d.ts
110
97
  type FlowEcsStateProps = {
@@ -113,7 +100,7 @@ type FlowEcsStateProps = {
113
100
  autoLayout: boolean;
114
101
  };
115
102
  declare function FlowEcsState(props: Readonly<FlowEcsStateProps>): react_jsx_runtime0.JSX.Element;
116
- declare const _default: react0.MemoExoticComponent<typeof FlowEcsState>;
103
+ declare const _default: react.MemoExoticComponent<typeof FlowEcsState>;
117
104
  //#endregion
118
105
  export { EcsFlowContext, EcsFlowContextProps, EcsFlowRepository, EcsHandleDataType, EcsNodeType, EcsTemplateGroup, EntityNode, EntityNodeData, EntityNodeTemplate, _default as FlowEcsState, IEntityUpdateCounter, SystemsModuleNode, SystemsModuleNodeData, SystemsModuleNodeTemplate, ecsNodeTemplates, ecsNodeTypes };
119
106
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/utils/entity-update-counter.ts","../src/abstract/node-props.ts","../src/abstract/ecs-flow-repository.ts","../src/abstract/ecs-flow-context.ts","../src/abstract/handle-types.ts","../src/nodes/node-entity.tsx","../src/nodes/node-systems-module.tsx","../src/templates/template-entity-node.ts","../src/templates/template-systems-module.ts","../src/abstract/node-types.ts","../src/abstract/templates.ts","../src/flow/flow-ecs-state.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;;;;UAEiB,oBAAA;4BACW;4BACA;;;;;KCDhB,qBAAA,GAAwB;cACtB;;KAGF,cAAA,GAAiB;UACnB;;;;;cCHG,iBAAA;;;;4BAWe,KAAK;kCAIC,gBAAgB,KAAK;sBAIjC,KAAK;wBAIH,eAAe,KAAK;kBAI1B;AF9BlB;;;;KGKY,mBAAA;qBACS;oBACD;uBACG;uBACA;yBACE;2BACE;AHX3B,CAAA;AAAqC,cGcxB,cHdwB,EGcV,QAAA,CAAA,OHdU,CGcV,mBHdU,CAAA;;;;aIFzB,iBAAA;;;;;;;iBCSH,UAAA;;;;;GAAyC,UAAU,KAAK,mBAAgB,oBAAA,CAAA,GAAA,CAAA;;;iBCAxE,iBAAA;;;;;GAAgD,UAAU,KAAK,0BAAuB,kBAAA,CAAA,GAAA,CAAA;;;cCFlF,kBAAA,YAA8B;qBACtB,aAAa;;;;;cCDrB,yBAAA,YAAqC;qBAC7B,aAAa;;;;;aCFtB,WAAA;;;;cAKC;gCAGQ;;;ATZJ,cScJ,gBTdwB,EAAA;EAAA,aAAA,ESiBpC,kBTjBoC;EAAA,qBACT,2BAAA;CAAS;AACA;;;aUJzB,gBAAA;;;;;;KCMA,iBAAA;;;;;iBAMH,YAAA,QAAoB,SAAS,qBAAkB,kBAAA,CAAA,GAAA,CAAA;cAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/utils/entity-update-counter.ts","../src/abstract/node-props.ts","../src/abstract/ecs-flow-repository.ts","../src/abstract/ecs-flow-context.ts","../src/abstract/handle-types.ts","../src/nodes/node-entity.tsx","../src/nodes/node-systems-module.tsx","../src/templates/template-entity-node.ts","../src/templates/template-systems-module.ts","../src/abstract/node-types.ts","../src/abstract/templates.ts","../src/flow/flow-ecs-state.tsx"],"mappings":";;;;;;;;UAEiB,oBAAA;EACf,cAAA,CAAe,SAAA,EAAW,SAAA;EAC1B,cAAA,CAAe,SAAA,EAAW,SAAA;AAAA;;;KCDhB,qBAAA,GAAwB,aAAA;EAClC,UAAA,EAAY,aAAA;AAAA;AAAA,KAGF,cAAA,GAAiB,aAAA;EAC3B,MAAA,EAAQ,YAAA;AAAA;;;cCHG,iBAAA;EAAA,iBACM,KAAA;;MAMb,SAAA,CAAA;EAIJ,mBAAA,CAAoB,IAAA,EAAM,IAAA,CAAK,qBAAA;EAI/B,mBAAA,CAAoB,UAAA,EAAY,aAAA,GAAgB,IAAA,CAAK,qBAAA;EAIrD,aAAA,CAAc,IAAA,EAAM,IAAA,CAAK,cAAA;EAIzB,aAAA,CAAc,MAAA,EAAQ,YAAA,GAAe,IAAA,CAAK,cAAA;EAI1C,YAAA,CAAA,GAAgB,IAAA;AAAA;;;KC1BN,mBAAA;EACV,iBAAA,EAAmB,iBAAA;EACnB,gBAAA,EAAkB,iBAAA;EAClB,mBAAA,EAAqB,oBAAA;EACrB,mBAAA,EAAqB,oBAAA;EACrB,qBAAA,EAAuB,sBAAA;EACvB,uBAAA,EAAyB,wBAAA;AAAA;AAAA,cAGd,cAAA,EAAc,KAAA,CAAA,OAAA,CAAA,mBAAA;;;aCff,iBAAA;EACV,KAAA;EACA,MAAA;AAAA;;;iBCOO,UAAA,CAAA;EAAa,EAAA;EAAI,IAAA;EAAM,QAAA;EAAU;AAAA,GAAQ,SAAA,CAAU,IAAA,CAAK,cAAA,KAAgB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;iBCAxE,iBAAA,CAAA;EAAoB,EAAA;EAAI,IAAA;EAAM,QAAA;EAAU;AAAA,GAAQ,SAAA,CAAU,IAAA,CAAK,qBAAA,KAAuB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;cCFlF,kBAAA,YAA8B,gBAAA;EAAA,SAChC,QAAA,EAAU,YAAA,CAAa,cAAA;AAAA;;;cCDrB,yBAAA,YAAqC,gBAAA;EAAA,SACvC,QAAA,EAAU,YAAA,CAAa,qBAAA;AAAA;;;aCFtB,WAAA;EACV,aAAA;EACA,MAAA;AAAA;AAAA,cAGW,YAAA;gCAGQ,iBAAA;wBAAA,UAAA;AAAA;AAAA,cAER,gBAAA;iBAGZ,kBAAA;yBAAA,yBAAA;AAAA;;;aCnBW,gBAAA;EACV,GAAA;AAAA;;;KCKU,iBAAA;EACV,iBAAA;EACA,YAAA;EACA,UAAA;AAAA;AAAA,iBAGO,YAAA,CAAa,KAAA,EAAO,QAAA,CAAS,iBAAA,IAAkB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,cAAA,QAAA"}
@@ -1,20 +1,15 @@
1
- import * as react0$1 from "react";
2
- import * as react0 from "react";
3
- import * as react_jsx_runtime0$1 from "react/jsx-runtime";
4
- import * as react_jsx_runtime1 from "react/jsx-runtime";
1
+ import * as react from "react";
5
2
  import * as react_jsx_runtime0 from "react/jsx-runtime";
6
3
  import { ISystemsModuleRepository } from "@awesome-ecs/abstract/systems";
7
4
  import { Node, NodeProps } from "@xyflow/react";
8
5
  import { BasicNodeData, ITemplateFactory, NodeTemplate } from "@awesome-flow/core/abstract";
9
- import { EntityTypeUid, EntityUid, IEntityProxy, IEntityProxyRepository, IEntityRepository } from "@awesome-ecs/abstract/entities";
10
- import { EntityEventsManager } from "@awesome-ecs/core/entities";
6
+ import { EntityTypeUid, EntityUid, IEntityEventsManager, IEntityProxy, IEntityProxyRepository, IEntityRepository } from "@awesome-ecs/abstract/entities";
11
7
 
12
8
  //#region src/utils/entity-update-counter.d.ts
13
9
  interface IEntityUpdateCounter {
14
10
  getUpdateCount(entityUid: EntityUid): number;
15
11
  getRemoveCount(entityUid: EntityUid): number;
16
12
  }
17
- //# sourceMappingURL=entity-update-counter.d.ts.map
18
13
  //#endregion
19
14
  //#region src/abstract/node-props.d.ts
20
15
  type SystemsModuleNodeData = BasicNodeData & {
@@ -23,11 +18,10 @@ type SystemsModuleNodeData = BasicNodeData & {
23
18
  type EntityNodeData = BasicNodeData & {
24
19
  entity: IEntityProxy;
25
20
  };
26
- //# sourceMappingURL=node-props.d.ts.map
27
21
  //#endregion
28
22
  //#region src/abstract/ecs-flow-repository.d.ts
29
23
  declare class EcsFlowRepository {
30
- private nodes;
24
+ private readonly nodes;
31
25
  constructor();
32
26
  get sizeNodes(): number;
33
27
  addSystemModuleNode(node: Node<SystemsModuleNodeData>): void;
@@ -36,26 +30,23 @@ declare class EcsFlowRepository {
36
30
  getEntityNode(entity: IEntityProxy): Node<EntityNodeData>;
37
31
  listAllNodes(): Node[];
38
32
  }
39
- //# sourceMappingURL=ecs-flow-repository.d.ts.map
40
33
  //#endregion
41
34
  //#region src/abstract/ecs-flow-context.d.ts
42
35
  type EcsFlowContextProps = {
43
36
  ecsFlowRepository: EcsFlowRepository;
44
37
  entityRepository: IEntityRepository;
45
- entityEventsManager: EntityEventsManager;
38
+ entityEventsManager: IEntityEventsManager;
46
39
  entityUpdateCounter: IEntityUpdateCounter;
47
40
  entityProxyRepository: IEntityProxyRepository;
48
41
  systemsModuleRepository: ISystemsModuleRepository;
49
42
  };
50
- declare const EcsFlowContext: react0$1.Context<EcsFlowContextProps>;
51
- //# sourceMappingURL=ecs-flow-context.d.ts.map
43
+ declare const EcsFlowContext: react.Context<EcsFlowContextProps>;
52
44
  //#endregion
53
45
  //#region src/abstract/handle-types.d.ts
54
46
  declare enum EcsHandleDataType {
55
47
  proxy = "proxy",
56
- module = "module",
48
+ module = "module"
57
49
  }
58
- //# sourceMappingURL=handle-types.d.ts.map
59
50
  //#endregion
60
51
  //#region src/nodes/node-entity.d.ts
61
52
  declare function EntityNode({
@@ -63,7 +54,7 @@ declare function EntityNode({
63
54
  data,
64
55
  selected,
65
56
  type
66
- }: NodeProps<Node<EntityNodeData>>): react_jsx_runtime0$1.JSX.Element;
57
+ }: NodeProps<Node<EntityNodeData>>): react_jsx_runtime0.JSX.Element;
67
58
  //#endregion
68
59
  //#region src/nodes/node-systems-module.d.ts
69
60
  declare function SystemsModuleNode({
@@ -71,24 +62,22 @@ declare function SystemsModuleNode({
71
62
  data,
72
63
  selected,
73
64
  type
74
- }: NodeProps<Node<SystemsModuleNodeData>>): react_jsx_runtime1.JSX.Element;
65
+ }: NodeProps<Node<SystemsModuleNodeData>>): react_jsx_runtime0.JSX.Element;
75
66
  //#endregion
76
67
  //#region src/templates/template-entity-node.d.ts
77
68
  declare class EntityNodeTemplate implements ITemplateFactory {
78
69
  readonly template: NodeTemplate<EntityNodeData>;
79
70
  }
80
- //# sourceMappingURL=template-entity-node.d.ts.map
81
71
  //#endregion
82
72
  //#region src/templates/template-systems-module.d.ts
83
73
  declare class SystemsModuleNodeTemplate implements ITemplateFactory {
84
74
  readonly template: NodeTemplate<SystemsModuleNodeData>;
85
75
  }
86
- //# sourceMappingURL=template-systems-module.d.ts.map
87
76
  //#endregion
88
77
  //#region src/abstract/node-types.d.ts
89
78
  declare enum EcsNodeType {
90
79
  systemsModule = "systems-module-node",
91
- entity = "entity-node",
80
+ entity = "entity-node"
92
81
  }
93
82
  declare const ecsNodeTypes: {
94
83
  "systems-module-node": typeof SystemsModuleNode;
@@ -98,13 +87,11 @@ declare const ecsNodeTemplates: {
98
87
  "entity-node": EntityNodeTemplate;
99
88
  "systems-module-node": SystemsModuleNodeTemplate;
100
89
  };
101
- //# sourceMappingURL=node-types.d.ts.map
102
90
  //#endregion
103
91
  //#region src/abstract/templates.d.ts
104
92
  declare enum EcsTemplateGroup {
105
- ecs = "ECS",
93
+ ecs = "ECS"
106
94
  }
107
- //# sourceMappingURL=templates.d.ts.map
108
95
  //#endregion
109
96
  //#region src/flow/flow-ecs-state.d.ts
110
97
  type FlowEcsStateProps = {
@@ -113,7 +100,7 @@ type FlowEcsStateProps = {
113
100
  autoLayout: boolean;
114
101
  };
115
102
  declare function FlowEcsState(props: Readonly<FlowEcsStateProps>): react_jsx_runtime0.JSX.Element;
116
- declare const _default: react0.MemoExoticComponent<typeof FlowEcsState>;
103
+ declare const _default: react.MemoExoticComponent<typeof FlowEcsState>;
117
104
  //#endregion
118
105
  export { EcsFlowContext, EcsFlowContextProps, EcsFlowRepository, EcsHandleDataType, EcsNodeType, EcsTemplateGroup, EntityNode, EntityNodeData, EntityNodeTemplate, _default as FlowEcsState, IEntityUpdateCounter, SystemsModuleNode, SystemsModuleNodeData, SystemsModuleNodeTemplate, ecsNodeTemplates, ecsNodeTypes };
119
- //# sourceMappingURL=index.d.ts.map
106
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/utils/entity-update-counter.ts","../src/abstract/node-props.ts","../src/abstract/ecs-flow-repository.ts","../src/abstract/ecs-flow-context.ts","../src/abstract/handle-types.ts","../src/nodes/node-entity.tsx","../src/nodes/node-systems-module.tsx","../src/templates/template-entity-node.ts","../src/templates/template-systems-module.ts","../src/abstract/node-types.ts","../src/abstract/templates.ts","../src/flow/flow-ecs-state.tsx"],"mappings":";;;;;;;;UAEiB,oBAAA;EACf,cAAA,CAAe,SAAA,EAAW,SAAA;EAC1B,cAAA,CAAe,SAAA,EAAW,SAAA;AAAA;;;KCDhB,qBAAA,GAAwB,aAAA;EAClC,UAAA,EAAY,aAAA;AAAA;AAAA,KAGF,cAAA,GAAiB,aAAA;EAC3B,MAAA,EAAQ,YAAA;AAAA;;;cCHG,iBAAA;EAAA,iBACM,KAAA;;MAMb,SAAA,CAAA;EAIJ,mBAAA,CAAoB,IAAA,EAAM,IAAA,CAAK,qBAAA;EAI/B,mBAAA,CAAoB,UAAA,EAAY,aAAA,GAAgB,IAAA,CAAK,qBAAA;EAIrD,aAAA,CAAc,IAAA,EAAM,IAAA,CAAK,cAAA;EAIzB,aAAA,CAAc,MAAA,EAAQ,YAAA,GAAe,IAAA,CAAK,cAAA;EAI1C,YAAA,CAAA,GAAgB,IAAA;AAAA;;;KC1BN,mBAAA;EACV,iBAAA,EAAmB,iBAAA;EACnB,gBAAA,EAAkB,iBAAA;EAClB,mBAAA,EAAqB,oBAAA;EACrB,mBAAA,EAAqB,oBAAA;EACrB,qBAAA,EAAuB,sBAAA;EACvB,uBAAA,EAAyB,wBAAA;AAAA;AAAA,cAGd,cAAA,EAAc,KAAA,CAAA,OAAA,CAAA,mBAAA;;;aCff,iBAAA;EACV,KAAA;EACA,MAAA;AAAA;;;iBCOO,UAAA,CAAA;EAAa,EAAA;EAAI,IAAA;EAAM,QAAA;EAAU;AAAA,GAAQ,SAAA,CAAU,IAAA,CAAK,cAAA,KAAgB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;iBCAxE,iBAAA,CAAA;EAAoB,EAAA;EAAI,IAAA;EAAM,QAAA;EAAU;AAAA,GAAQ,SAAA,CAAU,IAAA,CAAK,qBAAA,KAAuB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;cCFlF,kBAAA,YAA8B,gBAAA;EAAA,SAChC,QAAA,EAAU,YAAA,CAAa,cAAA;AAAA;;;cCDrB,yBAAA,YAAqC,gBAAA;EAAA,SACvC,QAAA,EAAU,YAAA,CAAa,qBAAA;AAAA;;;aCFtB,WAAA;EACV,aAAA;EACA,MAAA;AAAA;AAAA,cAGW,YAAA;gCAGQ,iBAAA;wBAAA,UAAA;AAAA;AAAA,cAER,gBAAA;iBAGZ,kBAAA;yBAAA,yBAAA;AAAA;;;aCnBW,gBAAA;EACV,GAAA;AAAA;;;KCKU,iBAAA;EACV,iBAAA;EACA,YAAA;EACA,UAAA;AAAA;AAAA,iBAGO,YAAA,CAAa,KAAA,EAAO,QAAA,CAAS,iBAAA,IAAkB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,cAAA,QAAA"}