@awesome-flow/ecs 0.9.2 → 0.9.4

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.
@@ -0,0 +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 { 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 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 } from 'react';\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 proxies = Array.from(props.entity.proxies.values()).map((c) => c.values());\n const items = proxies.map((p) => Array.from(p).map((k) => EcsIdGenerator.entityProxy(k))).flat();\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, 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 for (const [, proxyMap] of entity.proxies) {\n for (const proxy of proxyMap.values()) {\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 }\n }, [nodesToConnect, ecsFlowRepository, entityRepository, 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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"}
package/dist/index.d.cts CHANGED
@@ -1,83 +1,130 @@
1
- import * as react from 'react';
2
- import { EntityUid, EntityTypeUid, IEntityProxy, IEntityRepository } from '@awesome-ecs/abstract/entities';
3
- import { ISystemsModuleRepository } from '@awesome-ecs/abstract/systems';
4
- import { EntityEventsManager } from '@awesome-ecs/core/entities';
5
- import { Node, NodeProps } from '@xyflow/react';
6
- import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';
7
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as react0 from "react";
2
+ import * as react2 from "react";
3
+ import { EntityTypeUid, EntityUid, IEntityProxy, IEntityRepository } from "@awesome-ecs/abstract/entities";
4
+ import { ISystemsModuleRepository } from "@awesome-ecs/abstract/systems";
5
+ import { EntityEventsManager } from "@awesome-ecs/core/entities";
6
+ import { Node, NodeProps } from "@xyflow/react";
7
+ import { BasicNodeData, ITemplateFactory, NodeTemplate } from "@awesome-flow/core/abstract";
8
+ import * as react_jsx_runtime3 from "react/jsx-runtime";
9
+ import * as react_jsx_runtime4 from "react/jsx-runtime";
10
+ import * as react_jsx_runtime1 from "react/jsx-runtime";
8
11
 
12
+ //#region src/utils/entity-update-counter.d.ts
9
13
  interface IEntityUpdateCounter {
10
- getUpdateCount(entityUid: EntityUid): number;
11
- getRemoveCount(entityUid: EntityUid): number;
14
+ getUpdateCount(entityUid: EntityUid): number;
15
+ getRemoveCount(entityUid: EntityUid): number;
12
16
  }
13
17
 
18
+ //#endregion
19
+ //#region src/abstract/node-props.d.ts
20
+ //# sourceMappingURL=entity-update-counter.d.ts.map
14
21
  type SystemsModuleNodeData = BasicNodeData & {
15
- entityType: EntityTypeUid;
22
+ entityType: EntityTypeUid;
16
23
  };
17
24
  type EntityNodeData = BasicNodeData & {
18
- entity: IEntityProxy;
25
+ entity: IEntityProxy;
19
26
  };
20
27
 
28
+ //#endregion
29
+ //#region src/abstract/ecs-flow-repository.d.ts
30
+ //# sourceMappingURL=node-props.d.ts.map
21
31
  declare class EcsFlowRepository {
22
- private nodes;
23
- constructor();
24
- get sizeNodes(): number;
25
- addSystemModuleNode(node: Node<SystemsModuleNodeData>): void;
26
- getSystemModuleNode(entityType: EntityTypeUid): Node<SystemsModuleNodeData>;
27
- addEntityNode(node: Node<EntityNodeData>): void;
28
- getEntityNode(entity: IEntityProxy): Node<EntityNodeData>;
29
- listAllNodes(): Node[];
32
+ private nodes;
33
+ constructor();
34
+ get sizeNodes(): number;
35
+ addSystemModuleNode(node: Node<SystemsModuleNodeData>): void;
36
+ getSystemModuleNode(entityType: EntityTypeUid): Node<SystemsModuleNodeData>;
37
+ addEntityNode(node: Node<EntityNodeData>): void;
38
+ getEntityNode(entity: IEntityProxy): Node<EntityNodeData>;
39
+ listAllNodes(): Node[];
30
40
  }
31
41
 
42
+ //#endregion
43
+ //#region src/abstract/ecs-flow-context.d.ts
44
+ //# sourceMappingURL=ecs-flow-repository.d.ts.map
32
45
  type EcsFlowContextProps = {
33
- ecsFlowRepository: EcsFlowRepository;
34
- entityRepository: IEntityRepository;
35
- entityEventsManager: EntityEventsManager;
36
- entityUpdateCounter: IEntityUpdateCounter;
37
- systemsModuleRepository: ISystemsModuleRepository;
46
+ ecsFlowRepository: EcsFlowRepository;
47
+ entityRepository: IEntityRepository;
48
+ entityEventsManager: EntityEventsManager;
49
+ entityUpdateCounter: IEntityUpdateCounter;
50
+ systemsModuleRepository: ISystemsModuleRepository;
38
51
  };
39
- declare const EcsFlowContext: react.Context<EcsFlowContextProps>;
52
+ declare const EcsFlowContext: react0.Context<EcsFlowContextProps>;
40
53
 
54
+ //#endregion
55
+ //#region src/abstract/handle-types.d.ts
56
+ //# sourceMappingURL=ecs-flow-context.d.ts.map
41
57
  declare enum EcsHandleDataType {
42
- proxy = "proxy",
43
- module = "module"
58
+ proxy = "proxy",
59
+ module = "module",
44
60
  }
45
61
 
46
- declare function EntityNode({ id, data, selected, type }: NodeProps<Node<EntityNodeData>>): react_jsx_runtime.JSX.Element;
62
+ //#endregion
63
+ //#region src/nodes/node-entity.d.ts
64
+ //# sourceMappingURL=handle-types.d.ts.map
65
+ declare function EntityNode({
66
+ id,
67
+ data,
68
+ selected,
69
+ type
70
+ }: NodeProps<Node<EntityNodeData>>): react_jsx_runtime3.JSX.Element;
47
71
 
48
- declare function SystemsModuleNode({ id, data, selected, type }: NodeProps<Node<SystemsModuleNodeData>>): react_jsx_runtime.JSX.Element;
72
+ //#endregion
73
+ //#region src/nodes/node-systems-module.d.ts
74
+ declare function SystemsModuleNode({
75
+ id,
76
+ data,
77
+ selected,
78
+ type
79
+ }: NodeProps<Node<SystemsModuleNodeData>>): react_jsx_runtime4.JSX.Element;
49
80
 
81
+ //#endregion
82
+ //#region src/templates/template-entity-node.d.ts
50
83
  declare class EntityNodeTemplate implements ITemplateFactory {
51
- readonly template: NodeTemplate<EntityNodeData>;
84
+ readonly template: NodeTemplate<EntityNodeData>;
52
85
  }
53
86
 
87
+ //#endregion
88
+ //#region src/templates/template-systems-module.d.ts
89
+ //# sourceMappingURL=template-entity-node.d.ts.map
54
90
  declare class SystemsModuleNodeTemplate implements ITemplateFactory {
55
- readonly template: NodeTemplate<SystemsModuleNodeData>;
91
+ readonly template: NodeTemplate<SystemsModuleNodeData>;
56
92
  }
57
93
 
94
+ //#endregion
95
+ //#region src/abstract/node-types.d.ts
96
+ //# sourceMappingURL=template-systems-module.d.ts.map
58
97
  declare enum EcsNodeType {
59
- systemsModule = "systems-module-node",
60
- entity = "entity-node"
98
+ systemsModule = "systems-module-node",
99
+ entity = "entity-node",
61
100
  }
62
101
  declare const ecsNodeTypes: {
63
- "systems-module-node": typeof SystemsModuleNode;
64
- "entity-node": typeof EntityNode;
102
+ "systems-module-node": typeof SystemsModuleNode;
103
+ "entity-node": typeof EntityNode;
65
104
  };
66
105
  declare const ecsNodeTemplates: {
67
- "entity-node": EntityNodeTemplate;
68
- "systems-module-node": SystemsModuleNodeTemplate;
106
+ "entity-node": EntityNodeTemplate;
107
+ "systems-module-node": SystemsModuleNodeTemplate;
69
108
  };
70
109
 
110
+ //#endregion
111
+ //#region src/abstract/templates.d.ts
112
+ //# sourceMappingURL=node-types.d.ts.map
71
113
  declare enum EcsTemplateGroup {
72
- ecs = "ECS"
114
+ ecs = "ECS",
73
115
  }
74
116
 
117
+ //#endregion
118
+ //#region src/flow/flow-ecs-state.d.ts
119
+ //# sourceMappingURL=templates.d.ts.map
75
120
  type FlowEcsStateProps = {
76
- showSystemModules: boolean;
77
- showEntities: boolean;
78
- autoLayout: boolean;
121
+ showSystemModules: boolean;
122
+ showEntities: boolean;
123
+ autoLayout: boolean;
79
124
  };
80
- declare function FlowEcsState(props: Readonly<FlowEcsStateProps>): react_jsx_runtime.JSX.Element;
81
- declare const _default: react.MemoExoticComponent<typeof FlowEcsState>;
125
+ declare function FlowEcsState(props: Readonly<FlowEcsStateProps>): react_jsx_runtime1.JSX.Element;
126
+ declare const _default: react2.MemoExoticComponent<typeof FlowEcsState>;
82
127
 
83
- export { EcsFlowContext, type EcsFlowContextProps, EcsFlowRepository, EcsHandleDataType, EcsNodeType, EcsTemplateGroup, EntityNode, type EntityNodeData, EntityNodeTemplate, _default as FlowEcsState, type IEntityUpdateCounter, SystemsModuleNode, type SystemsModuleNodeData, SystemsModuleNodeTemplate, ecsNodeTemplates, ecsNodeTypes };
128
+ //#endregion
129
+ export { EcsFlowContext, EcsFlowContextProps, EcsFlowRepository, EcsHandleDataType, EcsNodeType, EcsTemplateGroup, EntityNode, EntityNodeData, EntityNodeTemplate, _default as FlowEcsState, IEntityUpdateCounter, SystemsModuleNode, SystemsModuleNodeData, SystemsModuleNodeTemplate, ecsNodeTemplates, ecsNodeTypes };
130
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +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;2BACI;;AHVV,cGaJ,cHbwB,EGaV,MAAA,CAAA,OHbU,CGaV,mBHbU,CAAA;;;;;aIFzB,iBAAA;;;;;;;;iBCSH,UAAA;;;;;GAAyC,UAAU,KAAK,mBAAgB,kBAAA,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"}
package/dist/index.d.ts CHANGED
@@ -1,83 +1,130 @@
1
- import * as react from 'react';
2
- import { EntityUid, EntityTypeUid, IEntityProxy, IEntityRepository } from '@awesome-ecs/abstract/entities';
3
- import { ISystemsModuleRepository } from '@awesome-ecs/abstract/systems';
4
- import { EntityEventsManager } from '@awesome-ecs/core/entities';
5
- import { Node, NodeProps } from '@xyflow/react';
6
- import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';
7
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as react0 from "react";
2
+ import * as react2 from "react";
3
+ import * as react_jsx_runtime3 from "react/jsx-runtime";
4
+ import * as react_jsx_runtime4 from "react/jsx-runtime";
5
+ import * as react_jsx_runtime1 from "react/jsx-runtime";
6
+ import { ISystemsModuleRepository } from "@awesome-ecs/abstract/systems";
7
+ import { Node, NodeProps } from "@xyflow/react";
8
+ import { BasicNodeData, ITemplateFactory, NodeTemplate } from "@awesome-flow/core/abstract";
9
+ import { EntityTypeUid, EntityUid, IEntityProxy, IEntityRepository } from "@awesome-ecs/abstract/entities";
10
+ import { EntityEventsManager } from "@awesome-ecs/core/entities";
8
11
 
12
+ //#region src/utils/entity-update-counter.d.ts
9
13
  interface IEntityUpdateCounter {
10
- getUpdateCount(entityUid: EntityUid): number;
11
- getRemoveCount(entityUid: EntityUid): number;
14
+ getUpdateCount(entityUid: EntityUid): number;
15
+ getRemoveCount(entityUid: EntityUid): number;
12
16
  }
13
17
 
18
+ //#endregion
19
+ //#region src/abstract/node-props.d.ts
20
+ //# sourceMappingURL=entity-update-counter.d.ts.map
14
21
  type SystemsModuleNodeData = BasicNodeData & {
15
- entityType: EntityTypeUid;
22
+ entityType: EntityTypeUid;
16
23
  };
17
24
  type EntityNodeData = BasicNodeData & {
18
- entity: IEntityProxy;
25
+ entity: IEntityProxy;
19
26
  };
20
27
 
28
+ //#endregion
29
+ //#region src/abstract/ecs-flow-repository.d.ts
30
+ //# sourceMappingURL=node-props.d.ts.map
21
31
  declare class EcsFlowRepository {
22
- private nodes;
23
- constructor();
24
- get sizeNodes(): number;
25
- addSystemModuleNode(node: Node<SystemsModuleNodeData>): void;
26
- getSystemModuleNode(entityType: EntityTypeUid): Node<SystemsModuleNodeData>;
27
- addEntityNode(node: Node<EntityNodeData>): void;
28
- getEntityNode(entity: IEntityProxy): Node<EntityNodeData>;
29
- listAllNodes(): Node[];
32
+ private nodes;
33
+ constructor();
34
+ get sizeNodes(): number;
35
+ addSystemModuleNode(node: Node<SystemsModuleNodeData>): void;
36
+ getSystemModuleNode(entityType: EntityTypeUid): Node<SystemsModuleNodeData>;
37
+ addEntityNode(node: Node<EntityNodeData>): void;
38
+ getEntityNode(entity: IEntityProxy): Node<EntityNodeData>;
39
+ listAllNodes(): Node[];
30
40
  }
31
41
 
42
+ //#endregion
43
+ //#region src/abstract/ecs-flow-context.d.ts
44
+ //# sourceMappingURL=ecs-flow-repository.d.ts.map
32
45
  type EcsFlowContextProps = {
33
- ecsFlowRepository: EcsFlowRepository;
34
- entityRepository: IEntityRepository;
35
- entityEventsManager: EntityEventsManager;
36
- entityUpdateCounter: IEntityUpdateCounter;
37
- systemsModuleRepository: ISystemsModuleRepository;
46
+ ecsFlowRepository: EcsFlowRepository;
47
+ entityRepository: IEntityRepository;
48
+ entityEventsManager: EntityEventsManager;
49
+ entityUpdateCounter: IEntityUpdateCounter;
50
+ systemsModuleRepository: ISystemsModuleRepository;
38
51
  };
39
- declare const EcsFlowContext: react.Context<EcsFlowContextProps>;
52
+ declare const EcsFlowContext: react0.Context<EcsFlowContextProps>;
40
53
 
54
+ //#endregion
55
+ //#region src/abstract/handle-types.d.ts
56
+ //# sourceMappingURL=ecs-flow-context.d.ts.map
41
57
  declare enum EcsHandleDataType {
42
- proxy = "proxy",
43
- module = "module"
58
+ proxy = "proxy",
59
+ module = "module",
44
60
  }
45
61
 
46
- declare function EntityNode({ id, data, selected, type }: NodeProps<Node<EntityNodeData>>): react_jsx_runtime.JSX.Element;
62
+ //#endregion
63
+ //#region src/nodes/node-entity.d.ts
64
+ //# sourceMappingURL=handle-types.d.ts.map
65
+ declare function EntityNode({
66
+ id,
67
+ data,
68
+ selected,
69
+ type
70
+ }: NodeProps<Node<EntityNodeData>>): react_jsx_runtime3.JSX.Element;
47
71
 
48
- declare function SystemsModuleNode({ id, data, selected, type }: NodeProps<Node<SystemsModuleNodeData>>): react_jsx_runtime.JSX.Element;
72
+ //#endregion
73
+ //#region src/nodes/node-systems-module.d.ts
74
+ declare function SystemsModuleNode({
75
+ id,
76
+ data,
77
+ selected,
78
+ type
79
+ }: NodeProps<Node<SystemsModuleNodeData>>): react_jsx_runtime4.JSX.Element;
49
80
 
81
+ //#endregion
82
+ //#region src/templates/template-entity-node.d.ts
50
83
  declare class EntityNodeTemplate implements ITemplateFactory {
51
- readonly template: NodeTemplate<EntityNodeData>;
84
+ readonly template: NodeTemplate<EntityNodeData>;
52
85
  }
53
86
 
87
+ //#endregion
88
+ //#region src/templates/template-systems-module.d.ts
89
+ //# sourceMappingURL=template-entity-node.d.ts.map
54
90
  declare class SystemsModuleNodeTemplate implements ITemplateFactory {
55
- readonly template: NodeTemplate<SystemsModuleNodeData>;
91
+ readonly template: NodeTemplate<SystemsModuleNodeData>;
56
92
  }
57
93
 
94
+ //#endregion
95
+ //#region src/abstract/node-types.d.ts
96
+ //# sourceMappingURL=template-systems-module.d.ts.map
58
97
  declare enum EcsNodeType {
59
- systemsModule = "systems-module-node",
60
- entity = "entity-node"
98
+ systemsModule = "systems-module-node",
99
+ entity = "entity-node",
61
100
  }
62
101
  declare const ecsNodeTypes: {
63
- "systems-module-node": typeof SystemsModuleNode;
64
- "entity-node": typeof EntityNode;
102
+ "systems-module-node": typeof SystemsModuleNode;
103
+ "entity-node": typeof EntityNode;
65
104
  };
66
105
  declare const ecsNodeTemplates: {
67
- "entity-node": EntityNodeTemplate;
68
- "systems-module-node": SystemsModuleNodeTemplate;
106
+ "entity-node": EntityNodeTemplate;
107
+ "systems-module-node": SystemsModuleNodeTemplate;
69
108
  };
70
109
 
110
+ //#endregion
111
+ //#region src/abstract/templates.d.ts
112
+ //# sourceMappingURL=node-types.d.ts.map
71
113
  declare enum EcsTemplateGroup {
72
- ecs = "ECS"
114
+ ecs = "ECS",
73
115
  }
74
116
 
117
+ //#endregion
118
+ //#region src/flow/flow-ecs-state.d.ts
119
+ //# sourceMappingURL=templates.d.ts.map
75
120
  type FlowEcsStateProps = {
76
- showSystemModules: boolean;
77
- showEntities: boolean;
78
- autoLayout: boolean;
121
+ showSystemModules: boolean;
122
+ showEntities: boolean;
123
+ autoLayout: boolean;
79
124
  };
80
- declare function FlowEcsState(props: Readonly<FlowEcsStateProps>): react_jsx_runtime.JSX.Element;
81
- declare const _default: react.MemoExoticComponent<typeof FlowEcsState>;
125
+ declare function FlowEcsState(props: Readonly<FlowEcsStateProps>): react_jsx_runtime1.JSX.Element;
126
+ declare const _default: react2.MemoExoticComponent<typeof FlowEcsState>;
82
127
 
83
- export { EcsFlowContext, type EcsFlowContextProps, EcsFlowRepository, EcsHandleDataType, EcsNodeType, EcsTemplateGroup, EntityNode, type EntityNodeData, EntityNodeTemplate, _default as FlowEcsState, type IEntityUpdateCounter, SystemsModuleNode, type SystemsModuleNodeData, SystemsModuleNodeTemplate, ecsNodeTemplates, ecsNodeTypes };
128
+ //#endregion
129
+ export { EcsFlowContext, EcsFlowContextProps, EcsFlowRepository, EcsHandleDataType, EcsNodeType, EcsTemplateGroup, EntityNode, EntityNodeData, EntityNodeTemplate, _default as FlowEcsState, IEntityUpdateCounter, SystemsModuleNode, SystemsModuleNodeData, SystemsModuleNodeTemplate, ecsNodeTemplates, ecsNodeTypes };
130
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","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;2BACI;;AHVV,cGaJ,cHbwB,EGaV,MAAA,CAAA,OHbU,CGaV,mBHbU,CAAA;;;;;aIFzB,iBAAA;;;;;;;;iBCSH,UAAA;;;;;GAAyC,UAAU,KAAK,mBAAgB,kBAAA,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"}