@awesome-flow/ecs 0.9.5 → 0.11.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 +87 -126
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -24
- package/dist/index.d.cts.map +1 -1
- package/dist/{index.d.ts → index.d.mts} +12 -25
- package/dist/index.d.mts.map +1 -0
- package/dist/{index.js → index.mjs} +36 -53
- package/dist/index.mjs.map +1 -0
- package/package.json +20 -17
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
package/dist/index.cjs.map
CHANGED
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAa,iBAAiB,yBAAmC,KAAK;;;;ACdtE,IAAa,iBAAb,MAA4B;CAC1B,OAAO,YAAYA,OAA6B;AAC9C,UAAQ,EAAE,MAAM,WAAW,GAAG,MAAM,UAAU;CAC/C;AACF;;;;ACDD,IAAa,oBAAb,MAA+B;CAC7B,AAAQ;CAER,cAAc;AACZ,OAAK,QAAQ,IAAI;CAClB;CAED,IAAI,YAAoB;AACtB,SAAO,KAAK,MAAM;CACnB;CAED,oBAAoBC,MAAmC;AACrD,OAAK,MAAM,IAAI,KAAK,KAAK,WAAW,UAAU,EAAE,KAAK;CACtD;CAED,oBAAoBC,YAAwD;AAC1E,SAAO,KAAK,MAAM,IAAI,WAAW,UAAU,CAAC;CAC7C;CAED,cAAcC,MAA4B;AACxC,OAAK,MAAM,IAAI,eAAe,YAAY,KAAK,KAAK,OAAO,EAAE,KAAK;CACnE;CAED,cAAcC,QAA4C;AACxD,SAAO,KAAK,MAAM,IAAI,eAAe,YAAY,OAAO,CAAC;CAC1D;CAED,eAAuB;AACrB,SAAO,MAAM,KAAK,KAAK,MAAM,QAAQ,CAAC;CACvC;AACF;;;;ACnCD,IAAY,kEAAL;AACL;AACA;;AACD;;;;ACGD,SAAS,mBAAmBC,OAA0C;CACpE,MAAM,QAAQ,mBACZ,MAAM,MAAM,OAAO,UAAU,CAAC,QAAQ,mBAAmB,QAAQ,EACjE,CAAC,MAAM,KAAM,EACd;AACD,QAAO;AACR;AAED,mCAAe,gBAAK,mBAAmB;;;;ACNvC,SAAS,gBAAgBC,OAAuC;CAC9D,MAAM,cAAc,4CAAwB;CAE5C,MAAM,QAAQ,mBACZ,MAAO,gBAAgB,SAAS,eAAe,eAC/C,CAAC,WAAY,EACd;AAED,wBAAO,2BAACC;EAAU,OAAO;EAAc;EAAO,MAAM,MAAM;GAAQ;AACnE;AAED,+BAAe,gBAAK,gBAAgB;;;;ACTpC,SAAS,yBAAyBC,OAAgD;CAChF,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,mCAAc,MAAM;CAEjD,MAAM,cAAc,mBAAQ,MAAO,SAAS,UAAU,UAAW,CAAC,MAAO,EAAC;AAE1E,wBACE,4BAACC,iDACC,2BAACC;EAAO,SAAQ;EAAU,MAAK;EAAK,SAAS;EAAQ,OAAO;EAAa;YACtE,MAAM,UAAU;GACV,kBAET,2BAACC;EAAS,IAAI;YAAS,0BAAU,2BAACC,4BAAgB,MAAM,MAAM,YAAa;GAAY,IACnF;AAET;AAED,yCAAe,gBAAK,yBAAyB;;;;ACjB7C,SAAS,oBAAoBC,OAA2C;CACtE,MAAM,aAAa,MAAM,KAAK,MAAM,OAAO,WAAW,QAAQ,CAAC;AAE/D,wBACE,4BAACC,yBAAU;EAAsB,OAAM;6BACrC,2BAACA,yBAAU,qCACT,2BAACC;GAAM;GAAU,SAAQ;GAAQ,cAAc,WAAW;aAAQ;IAE1D,GACU,kBACpB,2BAACD,yBAAU,mCACT,2BAACE,kCACE,WAAW,IAAI,CAAC,GAAG,sBAClB,2BAACC,sCAAyB,WAAW,KAAQ,EAAK,CAClD,GACI,GACQ;IAZA,aAaH;AAEpB;AAED,oCAAe,gBAAK,oBAAoB;;;;ACrBxC,SAAS,UAAUC,OAAiC;AAClD,QAAO,MAAM,MAAM,IAAI,CAAC,OAAO,MAAM;AACnC,yBACE,2BAACC;GAAc,GAAK,MAAM,SAAS,CAAE;6BACnC,2BAACC,gCAA0B,QAAS;KAD1B,EAEJ;CAEX,EAAC;AACH;AAED,yBAAe,gBAAK,UAAU;;;;ACR9B,SAAS,gBAAgBC,OAAuC;CAC9D,MAAM,EAAE,uBAAuB,GAAG,sBAAW,eAAe;CAE5D,MAAM,UAAU,MAAM,KAAK,sBAAsB,OAAO,MAAM,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM;CAC9F,MAAM,QAAQ,QAAQ,IAAI,CAAC,MAAM,eAAe,YAAY,EAAE,CAAC;AAE/D,wBACE,4BAACC,yBAAU;EAAmB,OAAM;6BAClC,2BAACA,yBAAU,qCACT,2BAACC;GAAM;GAAU,SAAQ;GAAQ,cAAc,MAAM;aAAQ;IAErD,GACU,kBACpB,2BAACD,yBAAU,mCACT,2BAACE,kDACC,2BAACC;GAAiB;GAAO,OAAO,EAAE,SAAS,UAAW;IAAI,GACpD,GACQ;IAVA,UAWH;AAEpB;AAED,gCAAe,gBAAK,gBAAgB;;;;ACvBpC,SAAS,uBAAuBC,OAA8C;CAC5E,MAAM,EAAE,qBAAqB,GAAG,sBAAW,eAAe;CAC1D,MAAM,gBAAgB,oBAAoB,0BAA0B,MAAM,OAAO,QAAQ;AAEzF,wBACE,4BAACC,yBAAU;EAAyB,OAAM;6BACxC,2BAACA,yBAAU,qCACT,2BAACC;GAAM;GAAU,SAAQ;GAAQ,cAAc,cAAc;aAAQ;IAE7D,GACU,kBACpB,2BAACD,yBAAU,mCACT,2BAACE,kDACC,2BAACC;GAAU,OAAO;GAAe,OAAO,EAAE,SAAS,UAAW;IAAI,GAC5D,GACQ;IAVA,gBAWH;AAEpB;AAED,uCAAe,gBAAK,uBAAuB;;;;ACrB3C,SAAS,oBAAoBC,OAA2C;CACtE,MAAM,GAAG,WAAW,GAAG,oBAAS,EAAE;CAElC,MAAM,EAAE,qBAAqB,GAAG,sBAAW,eAAe;CAE1D,MAAM,UAAU,oBAAoB,eAAe,MAAM,UAAU,IAAI;CACvE,MAAM,UAAU,oBAAoB,eAAe,MAAM,UAAU,IAAI;AAEvE,sBAAU,MAAM;EACd,MAAM,WAAW,YAAY,MAAM;AACjC,cAAW,CAAC,YAAY,UAAU,EAAE;EACrC,GAAE,IAAK;AAER,SAAO,MAAM;AACX,WAAQ,IAAI,iBAAiB;AAC7B,iBAAc,SAAS;EACxB;CACF,GAAE,CAAE,EAAC;AAEN,wBACE,qFACE,2BAACC;EAAM,SAAQ;YAAS;GAAgB,kBACxC,2BAACA;EAAM,SAAQ;EAAQ,OAAM;YAC1B;GACK,IACP;AAEN;AAED,oCAAe,gBAAK,oBAAoB;;;;AC3BxC,SAAS,aAAa,EAAE,QAAmC,EAAE;AAC3D,wBACE;kBACE,4BAACC,mDACC,2BAACC;GAAM,SAAQ;GAAU,OAAM;aAC5B,OAAO,QAAQ;IACV,kBACR,2BAACC,iCAAoB,WAAW,OAAO,QAAQ,YAAa,IACtD;kBACR,2BAACC,0BAAQ,IAAI,IAAK;kBAClB,4BAACC;mBACC,2BAACC,iCAA4B,SAAU;mBACvC,2BAACC,6BAAwB,SAAU;mBACnC,2BAACC,oCAA+B,SAAU;MAChC;KACX;AAEN;AAED,4BAAe;;;;ACrBf,SAAS,WAAW,EAAE,IAAI,MAAM,UAAU,MAAuC,EAAE;CACjF,MAAM,EAAE,kBAAkB,GAAG,sBAAW,eAAe;CACvD,MAAM,SAAS,mBAAQ,MAAM,iBAAiB,IAAI,KAAK,OAAO,EAAE,CAAC,KAAK,QAAQ,gBAAiB,EAAC;AAEhG,wBACE,2BAACC;EACK;EACM;EACJ;EACN,uBACE,2BAACC;GAAM;GAAU,SAAQ;6BACvB,2BAACC,gCAAmB,OAAO,OAAO,QAAQ,aAAc;IAClD;EAEJ;4BAEN,2BAACC,yBAAqB,SAAU;GAClB;AAEnB;AAED,0BAAe;;;;ACrBf,SAAS,uBAAuBC,OAA8C;CAC5E,IAAIC,aAA8C,CAAE;AAEpD,KAAI,MAAM,SACR,cAAa,MAAM,SAAS;CAG9B,MAAM,aAAa,WAAW,IAAI,CAAC,MAAM;AACvC,SAAO,EAAE,QAAQ,EAAE,YAAY;CAChC,EAAC;AAEF,wBACE,4BAACC,yBAAU;EAAuB,OAAO,MAAM;6BAC7C,2BAACA,yBAAU,qCACT,2BAACC;GAAM;GAAU,SAAQ;GAAQ,cAAc,WAAW;aACvD,MAAM;IACD,GACU,kBACpB,2BAACD,yBAAU,mCACT,2BAACE,kDACC,2BAACC;GAAU,OAAO;GAAY,OAAO,EAAE,SAAS,UAAW;IAAI,GACzD,GACQ;IAVC,MAAM,MAWV;AAEpB;AAED,uCAAe;;;;ACzBf,SAAS,oBAAoBC,OAAwC;CACnE,MAAM,EAAE,kBAAQ,GAAG;CAEnB,MAAM,iBAAiBC,SAAO;CAC9B,MAAM,EAAE,eAAe,GAAG;CAE1B,MAAM,EAAE,QAAQ,GAAG,mBAAQ,MAAM;AAC/B,SAAO,cAAc;CACtB,GAAE,CAAC,cAAc,OAAQ,EAAC;CAE3B,MAAM,OAAO,eAAe,gBAAgB,IAAIC,0CAAW,WAAW;CACtE,MAAM,SAAS,eAAe,gBAAgB,IAAIA,0CAAW,OAAO;CACpE,MAAM,SAAS,eAAe,gBAAgB,IAAIA,0CAAW,OAAO;CACpE,MAAM,OAAO,eAAe,gBAAgB,IAAIA,0CAAW,KAAK;AAEhE,wBACE,qFACE,4BAACC,kCAAK,YAAS,UAAc,kBAC7B,4BAACC;EACE,wBAAQ,2BAACC;GAAuB,UAAU;GAAM,OAAM;IAAe;EACrE,0BAAU,2BAACA;GAAuB,UAAU;GAAQ,OAAM;IAAW;EACrE,0BAAU,2BAACA;GAAuB,UAAU;GAAQ,OAAM;IAAW;EACrE,wBAAQ,2BAACA;GAAuB,UAAU;GAAM,OAAM;IAAS;KACtD,IACX;AAEN;AAED,oCAAe;;;;AC9Bf,SAAS,kBAAkB,EAAE,IAAI,MAAM,UAAU,MAA8C,EAAE;CAC/F,MAAM,EAAE,yBAAyB,GAAG,sBAAW,eAAe;CAC9D,MAAMC,WAAS,wBAAwB,IAAI,KAAK,WAAW;AAE3D,wBACE,2BAACC;EACK;EACM;EACJ;EACN,uBACE,2BAACC;GAAM;GAAU,OAAM;GAAS,SAAQ;6BACtC,2BAACC,gCAAmB,OAAO,KAAK,aAAc;IACxC;EAEJ;4BAEN,2BAACC;GAAoB,MAAM,KAAK;GAAY,QAAQJ;IAAU;GAChD;AAEnB;AAED,kCAAe;;;;AC9Bf,IAAY,gEAAL;AACL;;AACD;;;;ACKD,IAAa,qBAAb,MAA4D;CAC1D,AAAS,WAAyC;EAChD,MAAM,YAAY;EAClB,OAAO,iBAAiB;EACxB,MAAM;GACJ,OAAO;GACP,QAAQ;EACT;EACD,SAAS,CACP;GACE,UAAU,kBAAkB;GAC5B,UAAUK,wBAAS;GACnB,YAAY;GACZ,UAAU;EACX,GACD;GACE,UAAU,kBAAkB;GAC5B,UAAUA,wBAAS;GACnB,YAAY;GACZ,UAAU;EACX,CACF;CACF;AACF;;;;ACvBD,IAAa,4BAAb,MAAmE;CACjE,AAAS,WAAgD;EACvD,MAAM,YAAY;EAClB,OAAO,iBAAiB;EACxB,MAAM;GACJ,OAAO;GACP,YAAY;EACb;EACD,SAAS,CACP;GACE,UAAU,kBAAkB;GAC5B,UAAUC,wBAAS;GACnB,YAAY;GACZ,UAAU;EACX,CACF;CACF;AACF;;;;AClBD,IAAY,sDAAL;AACL;AACA;;AACD;AAED,MAAa,eAAe;EACzB,YAAY,gBAAgBC;EAC5B,YAAY,SAASC;AACvB;AAED,MAAa,mBAAmB;EAC7B,YAAY,SAAS,IAAI;EACzB,YAAY,gBAAgB,IAAI;AAClC;;;;ACTD,SAAS,mBAAmBC,OAA0C;CACpE,MAAM,EAAE,gBAAgB,GAAG;CAE3B,MAAM,YAAY,4CAAa,CAACC,UAA8B,MAAM,UAAU;CAE9E,MAAM,EAAE,mBAAmB,kBAAkB,GAAG,sBAAW,eAAe;AAE1E,sBAAU,MAAM;AACd,OAAK,MAAM,QAAQ,gBAAgB;GACjC,MAAM,eAAe,KAAK,KAAK,QAAQ,KAAK,CAAC,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,KAAK,CAAC,MAAM,EAAE,eAAe,SAAS;AAEtF,OAAI,aACF,WAAU;IACR,QAAQ,KAAK;IACb,QAAQ,aAAa;IACrB,cAAc,aAAa;IAC3B,cAAc,aAAa;GAC5B,EAAC;EAEL;CACF,GAAE;EAAC;EAAgB;EAAmB;EAAkB;CAAU,EAAC;AAEpE,wBAAO,0DAAK;AACb;AAED,oCAAe;;;;AC7Bf,SAAS,mBAAmBC,OAA0C;CACpE,MAAM,EAAE,gBAAgB,GAAG;CAE3B,MAAM,YAAY,4CAAa,CAACC,UAA8B,MAAM,UAAU;CAE9E,MAAM,EAAE,mBAAmB,uBAAuB,kBAAkB,GAAG,sBAAW,eAAe;AAEjG,sBAAU,MAAM;AACd,OAAK,MAAM,QAAQ,gBAAgB;GACjC,MAAM,eAAe,KAAK,KAAK,QAAQ,KAAK,CAAC,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,KAAK,CAAC,MAAM,EAAE,eAAe,SAAS;AAElF,eAAU;MACR,QAAQ,KAAK;MACb,QAAQ,UAAU;MAClB,cAAc,aAAa;MAC3B,cAAc,aAAa;KAC5B,EAAC;IACH;GACF;EACF;CACF,GAAE;EAAC;EAAgB;EAAmB;EAAkB;EAAuB;CAAU,EAAC;AAE3F,wBAAO,0DAAK;AACb;AAED,oCAAe;;;;ACjCf,SAAS,kBAAkB;CACzB,MAAM,EAAE,aAAa,GAAG,sBAAWC,yCAAY;CAC/C,MAAM,WAAW,4CAAa,CAAC,UAAU,MAAM,SAAS;CAExD,MAAM,EAAE,mBAAmB,kBAAkB,GAAG,sBAAW,eAAe;CAC1E,MAAM,CAAC,aAAa,eAAe,GAAG,oBAAiC,CAAE,EAAC;AAE1E,sBAAU,MAAM;EACd,MAAM,WAAW,iBAAiB,SAAS;EAC3C,MAAM,QAAQ,CAAE;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;GAAG;AAE9B,qBAAkB,cAAc,KAAK;AACrC,SAAM,KAAK,KAAK;EACjB;AAED,iBAAe,MAAM;AACrB,WAAS,MAAM;CAChB,GAAE;EAAC;EAAkB,iBAAiB;EAAM;EAAmB;EAAa;CAAS,EAAC;AAEvF,wBACE,qFACE,2BAACC,iCAAmB,gBAAgB,cAAe,kBACnD,2BAACC,iCAAmB,gBAAgB,cAAe,IAClD;AAEN;AAED,gCAAe;;;;ACxCf,SAAS,iBAAiB;CACxB,MAAM,EAAE,aAAa,GAAG,sBAAWC,yCAAY;CAC/C,MAAM,WAAW,4CAAa,CAAC,UAAU,MAAM,SAAS;CAExD,MAAM,EAAE,mBAAmB,yBAAyB,GAAG,sBAAW,eAAe;AAEjF,sBAAU,MAAM;EACd,MAAM,UAAU,MAAM,KAAK,wBAAwB,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;EAC7E,MAAM,OAAO,MAAM,KAAK,QAAQ,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG;EAE1D,MAAM,aAAa,CAAE;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;GAAG;AAE9B,qBAAkB,oBAAoB,KAAK;AAC3C,cAAW,KAAK,KAAK;EACtB;AAED,MAAI,WAAW,OACb,UAAS,WAAW;CAEvB,GAAE;EACD;EACA;EACA;EACA,kBAAkB;EAClB;EACA,wBAAwB;CACzB,EAAC;AAEF,wBAAO,0DAAK;AACb;AAED,+BAAe;;;;ACpCf,SAAS,aAAaC,OAAoC;CACxD,MAAM,GAAG,WAAW,GAAG,oBAAS,EAAE;CAClC,MAAM,CAAC,eAAe,iBAAiB,GAAG,oBAAS,MAAM;CAEzD,MAAM,EAAE,mBAAmB,GAAG,sBAAW,eAAe;AAExD,sBAAU,MAAM;AACd,mBAAiB,KAAK;CACvB,GAAE,CAAC,kBAAkB,SAAU,EAAC;AAEjC,sBAAU,MAAM;AACd,cAAY,MAAM;AAChB,cAAW,CAAC,YAAY,UAAU,EAAE;EACrC,GAAE,IAAK;CACT,GAAE,CAAE,EAAC;AAEN,wBACE;EACG,MAAM,qCAAqB,2BAACC,6BAAiB;EAC7C,MAAM,gCAAgB,2BAACC,8BAAkB;EACzC,MAAM,8BAAc,2BAACC,6CAA8B,gBAAiB;KACpE;AAEN;AAED,6BAAe,gBAAK,aAAa"}
|
|
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":"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"}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import
|
|
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:
|
|
38
|
+
entityEventsManager: IEntityEventsManager;
|
|
46
39
|
entityUpdateCounter: IEntityUpdateCounter;
|
|
47
40
|
entityProxyRepository: IEntityProxyRepository;
|
|
48
41
|
systemsModuleRepository: ISystemsModuleRepository;
|
|
49
42
|
};
|
|
50
|
-
declare const EcsFlowContext:
|
|
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
|
|
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>>):
|
|
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:
|
|
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
|
package/dist/index.d.cts.map
CHANGED
|
@@ -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"],"
|
|
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
|
|
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:
|
|
38
|
+
entityEventsManager: IEntityEventsManager;
|
|
46
39
|
entityUpdateCounter: IEntityUpdateCounter;
|
|
47
40
|
entityProxyRepository: IEntityProxyRepository;
|
|
48
41
|
systemsModuleRepository: ISystemsModuleRepository;
|
|
49
42
|
};
|
|
50
|
-
declare const EcsFlowContext:
|
|
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
|
|
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>>):
|
|
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:
|
|
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.
|
|
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"}
|