@awesome-flow/noise 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/abstract/index.cjs +4234 -0
  2. package/dist/abstract/index.cjs.map +1 -0
  3. package/dist/abstract/index.d.cts +137 -0
  4. package/dist/abstract/index.d.ts +137 -0
  5. package/dist/abstract/index.js +4271 -0
  6. package/dist/abstract/index.js.map +1 -0
  7. package/dist/handle-types-D-v5S53h.d.cts +22 -0
  8. package/dist/handle-types-D-v5S53h.d.ts +22 -0
  9. package/dist/layout/index.cjs +164 -0
  10. package/dist/layout/index.cjs.map +1 -0
  11. package/dist/layout/index.d.cts +26 -0
  12. package/dist/layout/index.d.ts +26 -0
  13. package/dist/layout/index.js +136 -0
  14. package/dist/layout/index.js.map +1 -0
  15. package/dist/modules/index.cjs +71 -0
  16. package/dist/modules/index.cjs.map +1 -0
  17. package/dist/modules/index.d.cts +18 -0
  18. package/dist/modules/index.d.ts +18 -0
  19. package/dist/modules/index.js +34 -0
  20. package/dist/modules/index.js.map +1 -0
  21. package/dist/node-props-CeZ8Oshz.d.ts +161 -0
  22. package/dist/node-props-hKW-_KOU.d.cts +161 -0
  23. package/dist/nodes/generators/index.cjs +640 -0
  24. package/dist/nodes/generators/index.cjs.map +1 -0
  25. package/dist/nodes/generators/index.d.cts +38 -0
  26. package/dist/nodes/generators/index.d.ts +38 -0
  27. package/dist/nodes/generators/index.js +592 -0
  28. package/dist/nodes/generators/index.js.map +1 -0
  29. package/dist/nodes/groups/index.cjs +104 -0
  30. package/dist/nodes/groups/index.cjs.map +1 -0
  31. package/dist/nodes/groups/index.d.cts +7 -0
  32. package/dist/nodes/groups/index.d.ts +7 -0
  33. package/dist/nodes/groups/index.js +78 -0
  34. package/dist/nodes/groups/index.js.map +1 -0
  35. package/dist/nodes/index.cjs +2830 -0
  36. package/dist/nodes/index.cjs.map +1 -0
  37. package/dist/nodes/index.d.cts +16 -0
  38. package/dist/nodes/index.d.ts +16 -0
  39. package/dist/nodes/index.js +2840 -0
  40. package/dist/nodes/index.js.map +1 -0
  41. package/dist/nodes/modifiers/index.cjs +1593 -0
  42. package/dist/nodes/modifiers/index.cjs.map +1 -0
  43. package/dist/nodes/modifiers/index.d.cts +32 -0
  44. package/dist/nodes/modifiers/index.d.ts +32 -0
  45. package/dist/nodes/modifiers/index.js +1612 -0
  46. package/dist/nodes/modifiers/index.js.map +1 -0
  47. package/dist/nodes/output/index.cjs +210 -0
  48. package/dist/nodes/output/index.cjs.map +1 -0
  49. package/dist/nodes/output/index.d.cts +13 -0
  50. package/dist/nodes/output/index.d.ts +13 -0
  51. package/dist/nodes/output/index.js +181 -0
  52. package/dist/nodes/output/index.js.map +1 -0
  53. package/dist/nodes/selectors/index.cjs +136 -0
  54. package/dist/nodes/selectors/index.cjs.map +1 -0
  55. package/dist/nodes/selectors/index.d.cts +16 -0
  56. package/dist/nodes/selectors/index.d.ts +16 -0
  57. package/dist/nodes/selectors/index.js +113 -0
  58. package/dist/nodes/selectors/index.js.map +1 -0
  59. package/dist/nodes/transformers/index.cjs +477 -0
  60. package/dist/nodes/transformers/index.cjs.map +1 -0
  61. package/dist/nodes/transformers/index.d.cts +22 -0
  62. package/dist/nodes/transformers/index.d.ts +22 -0
  63. package/dist/nodes/transformers/index.js +459 -0
  64. package/dist/nodes/transformers/index.js.map +1 -0
  65. package/dist/properties-BxwtU6i9.d.cts +9 -0
  66. package/dist/properties-BxwtU6i9.d.ts +9 -0
  67. package/dist/templates/generators/index.cjs +1714 -0
  68. package/dist/templates/generators/index.cjs.map +1 -0
  69. package/dist/templates/generators/index.d.cts +89 -0
  70. package/dist/templates/generators/index.d.ts +89 -0
  71. package/dist/templates/generators/index.js +1723 -0
  72. package/dist/templates/generators/index.js.map +1 -0
  73. package/dist/templates/groups/index.cjs +1690 -0
  74. package/dist/templates/groups/index.cjs.map +1 -0
  75. package/dist/templates/groups/index.d.cts +11 -0
  76. package/dist/templates/groups/index.d.ts +11 -0
  77. package/dist/templates/groups/index.js +1711 -0
  78. package/dist/templates/groups/index.js.map +1 -0
  79. package/dist/templates/index.cjs +1758 -0
  80. package/dist/templates/index.cjs.map +1 -0
  81. package/dist/templates/index.d.cts +15 -0
  82. package/dist/templates/index.d.ts +15 -0
  83. package/dist/templates/index.js +1745 -0
  84. package/dist/templates/index.js.map +1 -0
  85. package/dist/templates/modifiers/index.cjs +1708 -0
  86. package/dist/templates/modifiers/index.cjs.map +1 -0
  87. package/dist/templates/modifiers/index.d.cts +71 -0
  88. package/dist/templates/modifiers/index.d.ts +71 -0
  89. package/dist/templates/modifiers/index.js +1720 -0
  90. package/dist/templates/modifiers/index.js.map +1 -0
  91. package/dist/templates/output/index.cjs +1696 -0
  92. package/dist/templates/output/index.cjs.map +1 -0
  93. package/dist/templates/output/index.d.cts +29 -0
  94. package/dist/templates/output/index.d.ts +29 -0
  95. package/dist/templates/output/index.js +1714 -0
  96. package/dist/templates/output/index.js.map +1 -0
  97. package/dist/templates/selectors/index.cjs +1692 -0
  98. package/dist/templates/selectors/index.cjs.map +1 -0
  99. package/dist/templates/selectors/index.d.cts +22 -0
  100. package/dist/templates/selectors/index.d.ts +22 -0
  101. package/dist/templates/selectors/index.js +1712 -0
  102. package/dist/templates/selectors/index.js.map +1 -0
  103. package/dist/templates/transformers/index.cjs +1698 -0
  104. package/dist/templates/transformers/index.cjs.map +1 -0
  105. package/dist/templates/transformers/index.d.cts +40 -0
  106. package/dist/templates/transformers/index.d.ts +40 -0
  107. package/dist/templates/transformers/index.js +1715 -0
  108. package/dist/templates/transformers/index.js.map +1 -0
  109. package/package.json +111 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/nodes/generators/noise-billow-node.tsx","../../../src/layout/node-property-variables.tsx","../../../src/layout/node-value-input.tsx","../../../src/layout/node-property-input.tsx","../../../src/nodes/generators/noise-checkerboard-node.tsx","../../../src/nodes/generators/noise-const-node.tsx","../../../src/nodes/generators/noise-cylinders-node.tsx","../../../src/nodes/generators/noise-perlin-node.tsx","../../../src/nodes/generators/noise-ridgedmulti-node.tsx","../../../src/nodes/generators/noise-simplex-node.tsx","../../../src/modules/simplex-module.ts","../../../src/nodes/generators/noise-spheres-node.tsx","../../../src/nodes/generators/noise-voronoi-node.tsx","../../../src/nodes/generators/position-const-node.tsx","../../../src/nodes/generators/position-grid-node.tsx","../../../src/nodes/generators/variable-property-node.tsx","../../../src/nodes/generators/variable-value-node.tsx"],"sourcesContent":["import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useMemo } from 'react';\nimport { Billow } from 'libnoise-ts/module/generator';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { nodeDataPropertyExcept } from '@awesome-flow/core/abstract';\nimport { PropertyValue } from '../../abstract/properties';\nimport NodePropertyVariables from '../../layout/node-property-variables';\nimport { ComputedModuleData, NodeFBMNoiseData } from '../../abstract/node-props';\n\nfunction NoiseBillowNode({ id, selected, data, type }: NodeProps<Node<NodeFBMNoiseData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const module = useMemo(() => new Billow(), []);\n\n const onPropertiesChange = useCallback(\n (properties: Record<string, PropertyValue>) => {\n Object.keys(properties).forEach((k) => {\n module[k] = properties[k].value;\n });\n\n updateComputedData(id, { module });\n },\n [id, module, updateComputedData]\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertyVariables\n data={data}\n except={nodeDataPropertyExcept}\n nodeId={id}\n onPropertiesChange={onPropertiesChange}\n />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseBillowNode;\n","import { useIncomingNodeData, useUpdateNodeData } from '@awesome-flow/core/hooks';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Group, Stack } from '@mantine/core';\nimport { getObjectKeys } from '@awesome-flow/core/utils';\nimport { nodeDataPropertyExcept } from '@awesome-flow/core/abstract';\nimport { NodeVariablePropertyData } from '../abstract/node-props';\nimport { PropertyValue, ValueType } from '../abstract/properties';\nimport NodePropertyInput from './node-property-input';\n\nexport type NodeTrackVariablesProps = {\n nodeId: string;\n data: Record<string, any>;\n except?: Set<string>;\n onPropertiesChange?: (properties: Record<string, PropertyValue>) => void;\n};\n\nfunction NodePropertyVariables({\n data,\n nodeId,\n onPropertiesChange,\n except = nodeDataPropertyExcept,\n}: Readonly<NodeTrackVariablesProps>) {\n const [properties, setProperties] = useState<Record<string, PropertyValue>>(() => {\n const keys = getObjectKeys(data, except);\n\n const dataProps = {};\n\n for (const key of keys) {\n dataProps[key] = {\n name: key,\n value: data[key],\n } satisfies PropertyValue;\n }\n\n return dataProps;\n });\n\n const updateNodeData = useUpdateNodeData();\n const incoming = useIncomingNodeData<NodeVariablePropertyData>(nodeId);\n\n const resetAllDisabled = useCallback(() => {\n const keys = Object.keys(properties);\n\n keys.forEach((k) => {\n properties[k].disabled = false;\n });\n\n setProperties(properties);\n }, []);\n\n const updatePropertyValue = useCallback((name: string, value: ValueType, disabled?: boolean) => {\n let property = properties[name];\n\n if (property) {\n property.value = value;\n } else {\n property = {\n name,\n value,\n };\n }\n\n property.disabled = disabled;\n\n setProperties({ ...properties, [name]: property });\n updateNodeData(nodeId, { [name]: value });\n }, []);\n\n useEffect(() => {\n resetAllDisabled();\n\n if (incoming?.length) {\n for (const connection of incoming) {\n if (connection.property && properties[connection.property.name] !== undefined) {\n updatePropertyValue(connection.property.name, connection.property.value, true);\n }\n }\n }\n }, [incoming]);\n\n useEffect(() => {\n if (onPropertiesChange) {\n onPropertiesChange(properties);\n }\n }, [onPropertiesChange, properties]);\n\n const nodes = useMemo(() => {\n return Object.keys(properties).map((key) => {\n const property = properties[key];\n\n return (\n <Group key={key}>\n {property.name}:<NodePropertyInput property={property} onChange={updatePropertyValue} />\n </Group>\n );\n });\n }, [properties, updatePropertyValue]);\n\n return <Stack>{nodes}</Stack>;\n}\n\nexport default NodePropertyVariables;\n","import { Input, NumberInput, Switch } from '@mantine/core';\nimport { ValueType } from '../abstract/properties';\n\nexport type NodeValueInputProps = {\n value: ValueType;\n disabled?: boolean;\n step?: number;\n onChange: (value: ValueType) => void;\n};\n\nfunction NodeValueInput({ value, disabled, step, onChange }: Readonly<NodeValueInputProps>) {\n if (value === undefined || value === null) {\n return <></>;\n }\n\n switch (typeof value) {\n case 'boolean': {\n return (\n <Switch\n checked={value}\n disabled={disabled}\n onChange={(e) => onChange(e.currentTarget.checked)}\n />\n );\n }\n\n case 'number': {\n return (\n <NumberInput value={value} disabled={disabled} step={step} onChange={(e) => onChange(e)} />\n );\n }\n\n case 'string': {\n return (\n <Input\n value={value}\n disabled={disabled}\n onChange={(e) => onChange(e.currentTarget.value)}\n />\n );\n }\n\n default:\n throw new Error(`Unknown input node for value of type: ${typeof value} (${value})`);\n }\n}\n\nexport default NodeValueInput;\n","import { ValueType, PropertyValue } from '../abstract/properties';\nimport NodeValueInput from './node-value-input';\n\nexport type NodePropertyInputProps = {\n property: PropertyValue;\n onChange: (name: string, value: ValueType) => void;\n};\n\nfunction NodePropertyInput({ property, onChange }: Readonly<NodePropertyInputProps>) {\n if (!property) {\n return <></>;\n }\n\n return (\n <NodeValueInput\n value={property.value}\n disabled={property.disabled}\n step={property.step}\n onChange={(value) => onChange(property.name, value)}\n />\n );\n}\n\nexport default NodePropertyInput;\n","import { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useMemo } from 'react';\nimport { Checkerboard } from 'libnoise-ts/module/generator';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { ComputedModuleData } from '../../abstract/node-props';\n\nfunction NoiseCheckerboardNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n const module = useMemo(() => new Checkerboard(), []);\n\n useEffect(() => {\n updateComputedData(id, { module });\n }, [id, module, updateComputedData]);\n\n return <NodeContainer id={id} selected={selected} data={data} type={type} />;\n}\n\nexport default NoiseCheckerboardNode;\n","import { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport { useUpdateNodeComputedData, useUpdateNodeData } from '@awesome-flow/core/hooks';\nimport { Const } from 'libnoise-ts/module/generator';\nimport { ComputedModuleData, NodeConstNoiseData } from '../../abstract/node-props';\n\nfunction NoiseConstNode({ id, selected, data, type }: NodeProps<Node<NodeConstNoiseData>>) {\n const [min, setMin] = useState(data.min);\n const [max, setMax] = useState(data.max);\n const [noise, setNoise] = useState(data.noise);\n\n const updateNodeData = useUpdateNodeData<NodeConstNoiseData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const module = useMemo(() => new Const(), []);\n\n useEffect(() => {\n module.value = noise;\n\n updateNodeData(id, { noise, min, max });\n updateComputedData(id, { module });\n }, [noise, min, max, module, updateNodeData, id, updateComputedData]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n <NumberInput size=\"xs\" w={100} value={min} onChange={(e) => setMin(Number(e))} />\n <NumberInput size=\"xs\" w={100} value={max} onChange={(e) => setMax(Number(e))} />\n </Group>\n <Group>\n noise:\n <NumberInput\n size=\"xs\"\n value={noise}\n onChange={(e) => setNoise(Number(e))}\n max={max}\n min={min}\n step={0.1}\n />\n </Group>\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default NoiseConstNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useMemo } from 'react';\nimport { Cylinders } from 'libnoise-ts/module/generator';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { ComputedModuleData, NodeCylindersNoiseData } from '../../abstract/node-props';\nimport { PropertyValue } from '../../abstract/properties';\nimport NodePropertyVariables from '../../layout/node-property-variables';\n\nfunction NoiseCylindersNode({ id, selected, data, type }: NodeProps<Node<NodeCylindersNoiseData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const module = useMemo(() => new Cylinders(), []);\n\n const onPropertiesChange = useCallback(\n (properties: Record<string, PropertyValue>) => {\n Object.keys(properties).forEach((k) => {\n module[k] = properties[k].value;\n });\n updateComputedData(id, { module });\n },\n\n [id, module, updateComputedData]\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertyVariables data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseCylindersNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useMemo } from 'react';\nimport { Perlin } from 'libnoise-ts/module/generator';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { ComputedModuleData, NodeFBMNoiseData } from '../../abstract/node-props';\nimport { PropertyValue } from '../../abstract/properties';\nimport NodePropertyVariables from '../../layout/node-property-variables';\n\nfunction NoisePerlinNode({ id, selected, data, type }: NodeProps<Node<NodeFBMNoiseData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const module = useMemo(() => new Perlin(), []);\n\n const onPropertiesChange = useCallback(\n (properties: Record<string, PropertyValue>) => {\n Object.keys(properties).forEach((k) => {\n module[k] = properties[k].value;\n });\n\n updateComputedData(id, { module });\n },\n [id, module, updateComputedData]\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertyVariables data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoisePerlinNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useMemo } from 'react';\nimport { RidgedMulti } from 'libnoise-ts/module/generator';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { ComputedModuleData, NodeRidgedNoiseData } from '../../abstract/node-props';\nimport { PropertyValue } from '../../abstract/properties';\nimport NodePropertyVariables from '../../layout/node-property-variables';\n\nfunction NoiseRidgedMultiNode({ id, selected, data, type }: NodeProps<Node<NodeRidgedNoiseData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n const module = useMemo(() => new RidgedMulti(), []);\n\n const onPropertiesChange = useCallback((properties: Record<string, PropertyValue>) => {\n Object.keys(properties).forEach((k) => (module[k] = properties[k].value));\n updateComputedData(id, { module });\n }, []);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertyVariables data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseRidgedMultiNode;\n","import { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useMemo } from 'react';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { ComputedModuleData } from '../../abstract/node-props';\nimport { SimplexModule } from '../../modules/simplex-module';\n\nfunction NoiseSimplexNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const module = useMemo(() => new SimplexModule(), []);\n\n useEffect(() => {\n updateComputedData(id, { module });\n }, []);\n\n return <NodeContainer id={id} selected={selected} data={data} type={type} />;\n}\n\nexport default NoiseSimplexNode;\n","import Module from 'libnoise-ts/module/Module';\nimport { NoiseFunction3D, RandomFn, createNoise3D } from 'simplex-noise';\n\nexport class SimplexModule extends Module {\n private noise: NoiseFunction3D;\n\n constructor(random?: RandomFn) {\n super();\n this.noise = createNoise3D(random);\n }\n\n getValue(x: number, y: number, z: number): number {\n return this.noise(x, y, z);\n }\n}\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useMemo } from 'react';\nimport { Spheres } from 'libnoise-ts/module/generator';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { ComputedModuleData, NodeSpheresNoiseData } from '../../abstract/node-props';\nimport { PropertyValue } from '../../abstract/properties';\nimport NodePropertyVariables from '../../layout/node-property-variables';\n\nfunction NoiseSpheresNode({ id, selected, data, type }: NodeProps<Node<NodeSpheresNoiseData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n const module = useMemo(() => new Spheres(), []);\n\n const onPropertiesChange = useCallback((properties: Record<string, PropertyValue>) => {\n Object.keys(properties).forEach((k) => (module[k] = properties[k].value));\n updateComputedData(id, { module });\n }, []);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertyVariables data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseSpheresNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback } from 'react';\nimport { Voronoi } from 'libnoise-ts/module/generator';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { ComputedModuleData, NodeVoronoiNoiseData } from '../../abstract/node-props';\nimport { PropertyValue } from '../../abstract/properties';\nimport NodePropertyVariables from '../../layout/node-property-variables';\n\nfunction NoiseVoronoiNode({ id, selected, data, type }: NodeProps<Node<NodeVoronoiNoiseData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const onPropertiesChange = useCallback(\n (properties: Record<string, PropertyValue<number & boolean>>) => {\n const module = new Voronoi(\n properties.frequency.value,\n properties.displacement.value,\n properties.distance.value,\n properties.seed.value\n );\n\n updateComputedData(id, { module });\n },\n []\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertyVariables data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseVoronoiNode;\n","import { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useState } from 'react';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport { useUpdateNodeComputedData, useUpdateNodeData } from '@awesome-flow/core/hooks';\nimport { ComputedPositionsData, NodePositionData } from '../../abstract/node-props';\n\nfunction PositionConstNode({ id, selected, data, type }: NodeProps<Node<NodePositionData>>) {\n const position = data.position ?? { x: 0, y: 0, z: 0 };\n\n const [x, setX] = useState(position.x);\n const [y, setY] = useState(position.y);\n const [z, setZ] = useState(position.z);\n\n const updateNodeData = useUpdateNodeData<NodePositionData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedPositionsData>();\n\n useEffect(() => {\n const position = { x, y, z };\n\n updateNodeData(id, {\n position,\n });\n\n updateComputedData(id, {\n positions: [position],\n });\n }, [x, y, z]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n x: <NumberInput size=\"xs\" w={100} value={x} onChange={(e) => setX(Number(e))} />\n </Group>\n <Group>\n y: <NumberInput size=\"xs\" w={100} value={y} onChange={(e) => setY(Number(e))} />\n </Group>\n <Group>\n z: <NumberInput size=\"xs\" w={100} value={z} onChange={(e) => setZ(Number(e))} />\n </Group>\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default PositionConstNode;\n","import { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useState } from 'react';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport { useUpdateNodeComputedData, useUpdateNodeData } from '@awesome-flow/core/hooks';\nimport { ComputedPositionsData, NodeGridData, Position } from '../../abstract/node-props';\n\nfunction PositionGridNode({ id, selected, data, type }: NodeProps<Node<NodeGridData>>) {\n const [x, setX] = useState(data.center?.x);\n const [y, setY] = useState(data.center?.y);\n const [z, setZ] = useState(data.center?.z);\n\n const [radius, setRadius] = useState(data.radius);\n\n const updateNodeData = useUpdateNodeData<NodeGridData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedPositionsData>();\n\n useEffect(() => {\n updateNodeData(id, {\n center: { x, y, z },\n });\n }, [x, y, z]);\n\n useEffect(() => {\n updateNodeData(id, {\n radius,\n });\n }, [radius]);\n\n useEffect(() => {\n const positions: Position[] = [];\n\n for (let i = -radius; i < radius; i++) {\n for (let j = -radius; j < radius; j++) {\n positions.push({ x: x + i, y: y + j, z });\n }\n }\n\n updateComputedData(id, {\n positions,\n });\n }, [x, y, z, radius]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n x: <NumberInput size=\"xs\" w={100} value={x} onChange={(e) => setX(Number(e))} />\n </Group>\n <Group>\n y: <NumberInput size=\"xs\" w={100} value={y} onChange={(e) => setY(Number(e))} />\n </Group>\n <Group>\n z: <NumberInput size=\"xs\" w={100} value={z} onChange={(e) => setZ(Number(e))} />\n </Group>\n <Group>\n r: <NumberInput size=\"xs\" w={100} value={radius} onChange={(e) => setRadius(Number(e))} />\n </Group>\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default PositionGridNode;\n","import { NodeCombobox, NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useEffect, useState } from 'react';\nimport { Stack } from '@mantine/core';\nimport { useIncomingNodeData, useOutgoingNodes, useUpdateNodeData } from '@awesome-flow/core/hooks';\nimport { getObjectPropertyMap } from '@awesome-flow/core/utils';\nimport { nodeDataPropertyExcept } from '@awesome-flow/core/abstract';\nimport { NodeVariablePropertyData, NodeVariableValueData } from '../../abstract/node-props';\nimport { PropertyValue, ValueType } from '../../abstract/properties';\nimport NodePropertyInput from '../../layout/node-property-input';\n\nfunction VariablePropertyNode({\n id,\n selected,\n data,\n type,\n}: NodeProps<Node<NodeVariablePropertyData>>) {\n const [options, setOptions] = useState<Record<string, number>>({});\n const [selectedProperty, setSelectedProperty] = useState<PropertyValue>(data.property);\n\n const updateNodeData = useUpdateNodeData<NodeVariablePropertyData>();\n const outgoing = useOutgoingNodes<NodeVariablePropertyData>(id);\n const incoming = useIncomingNodeData<NodeVariableValueData>(id);\n\n useEffect(() => {\n if (outgoing?.length) {\n // todo: only show common properties from all outgoing connections\n const { data } = outgoing[0];\n const properties = getObjectPropertyMap(data, nodeDataPropertyExcept);\n\n setOptions(properties);\n\n if (!selectedProperty) {\n const keys = Object.keys(properties);\n\n if (keys.length) {\n setSelectedProperty({\n name: keys[0],\n value: properties[keys[0]],\n });\n }\n }\n } else {\n setSelectedProperty(null);\n }\n }, [outgoing]);\n\n useEffect(() => {\n if (!incoming?.length && selectedProperty?.disabled) {\n setSelectedProperty({ ...selectedProperty, disabled: false });\n } else if (incoming?.length && selectedProperty) {\n const incomingValue = incoming[0].value;\n\n if (incomingValue !== undefined && incomingValue !== null) {\n setSelectedProperty({\n name: selectedProperty.name,\n value: incomingValue,\n disabled: true,\n });\n }\n }\n }, [incoming]);\n\n useEffect(() => {\n if (selectedProperty) {\n updateNodeData(id, { property: selectedProperty });\n }\n }, [selectedProperty]);\n\n const onPropertyChange = useCallback(\n (selected: string) => {\n setSelectedProperty({\n name: selected,\n value: options[selected],\n });\n },\n [options]\n );\n\n const onValueChange = useCallback((name: string, value: ValueType) => {\n setSelectedProperty({\n name,\n value,\n });\n }, []);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack align=\"center\">\n <NodeCombobox\n options={options}\n onChange={onPropertyChange}\n selected={selectedProperty?.name}\n hideListValues\n />\n <NodePropertyInput property={selectedProperty} onChange={onValueChange} />\n </Stack>\n <NodeTrackConnections handles={data.handles} nodeId={id} />\n </NodeContainer>\n );\n}\n\nexport default VariablePropertyNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useState } from 'react';\nimport { useUpdateNodeData } from '@awesome-flow/core/hooks';\nimport { NodeVariableValueData } from '../../abstract/node-props';\nimport { ValueType } from '../../abstract/properties';\nimport NodeValueInput from '../../layout/node-value-input';\n\nfunction VariableValueNode({ id, selected, data, type }: NodeProps<Node<NodeVariableValueData>>) {\n const [value, setValue] = useState<ValueType>(data.value || 0.0);\n const updateNodeData = useUpdateNodeData<NodeVariableValueData>();\n\n const onValueChange = useCallback((newValue: ValueType) => {\n updateNodeData(id, { value: newValue });\n setValue(newValue);\n }, []);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodeValueInput value={value} onChange={onValueChange} />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"source\" />\n </NodeContainer>\n );\n}\n\nexport default VariableValueNode;\n"],"mappings":"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","names":["useCallback","useMemo","nodeDataPropertyExcept","Fragment","jsx","jsx","jsx","jsxs","useMemo","useCallback","nodeDataPropertyExcept","NodeContainer","useEffect","useMemo","useUpdateNodeComputedData","jsx","NodeContainer","useEffect","useMemo","useState","Group","NumberInput","Stack","useUpdateNodeComputedData","useUpdateNodeData","jsx","jsxs","NodeContainer","NodeTrackConnections","useCallback","useMemo","useUpdateNodeComputedData","jsx","jsxs","useUpdateNodeComputedData","useMemo","useCallback","NodeContainer","NodeTrackConnections","NodeContainer","NodeTrackConnections","useCallback","useMemo","useUpdateNodeComputedData","jsx","jsxs","useUpdateNodeComputedData","useMemo","useCallback","NodeContainer","NodeTrackConnections","NodeContainer","NodeTrackConnections","useCallback","useMemo","useUpdateNodeComputedData","jsx","jsxs","useUpdateNodeComputedData","useMemo","useCallback","NodeContainer","NodeTrackConnections","NodeContainer","useEffect","useMemo","useUpdateNodeComputedData","jsx","useUpdateNodeComputedData","useMemo","useEffect","NodeContainer","NodeContainer","NodeTrackConnections","useCallback","useMemo","useUpdateNodeComputedData","jsx","jsxs","useUpdateNodeComputedData","useMemo","useCallback","NodeContainer","NodeTrackConnections","NodeContainer","NodeTrackConnections","useCallback","useUpdateNodeComputedData","jsx","jsxs","useUpdateNodeComputedData","useCallback","NodeContainer","NodeTrackConnections","NodeContainer","useEffect","useState","Group","NumberInput","Stack","useUpdateNodeComputedData","useUpdateNodeData","jsx","jsxs","position","NodeContainer","useEffect","useState","Group","NumberInput","Stack","useUpdateNodeComputedData","useUpdateNodeData","jsx","jsxs","NodeContainer","NodeTrackConnections","useCallback","useEffect","useState","Stack","useIncomingNodeData","useUpdateNodeData","nodeDataPropertyExcept","jsx","jsxs","useState","useUpdateNodeData","useIncomingNodeData","useEffect","data","nodeDataPropertyExcept","useCallback","selected","NodeContainer","Stack","NodeTrackConnections","NodeContainer","NodeTrackConnections","useCallback","useState","useUpdateNodeData","jsx","jsxs","useState","useUpdateNodeData","useCallback","NodeContainer","NodeTrackConnections"]}
@@ -0,0 +1,104 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/nodes/groups/index.ts
20
+ var groups_exports = {};
21
+ __export(groups_exports, {
22
+ ModuleGroupNode: () => node_module_group_default
23
+ });
24
+ module.exports = __toCommonJS(groups_exports);
25
+
26
+ // src/nodes/groups/node-module-group.tsx
27
+ var import_layout = require("@awesome-flow/core/layout");
28
+ var import_react = require("@xyflow/react");
29
+ var import_abstract = require("@awesome-flow/core/abstract");
30
+ var import_react2 = require("react");
31
+ var import_shallow = require("zustand/shallow");
32
+ var import_core = require("@mantine/core");
33
+ var import_jsx_runtime = require("react/jsx-runtime");
34
+ function ModuleGroupNode({
35
+ id,
36
+ selected,
37
+ data,
38
+ type,
39
+ width,
40
+ height
41
+ }) {
42
+ const context = (0, import_react2.useContext)(import_abstract.FlowContext);
43
+ const updateNodeInternals = (0, import_react.useUpdateNodeInternals)();
44
+ const triggerNodeChanges = (0, import_react.useStore)((s) => s.triggerNodeChanges);
45
+ const { groupNodes, setGroupCollapsed } = context.useFlowStore(
46
+ (0, import_react2.useCallback)(
47
+ (state) => ({ groupNodes: state.groups[id], setGroupCollapsed: state.setGroupCollapsed }),
48
+ []
49
+ )
50
+ );
51
+ const intersectingNode = context.useInteractivityStore(
52
+ (0, import_react2.useCallback)((state) => state.nodeIntersectionTargets[id], [id]),
53
+ import_shallow.shallow
54
+ );
55
+ (0, import_react2.useEffect)(() => {
56
+ updateNodeInternals(id);
57
+ }, [width, height]);
58
+ (0, import_react2.useEffect)(() => {
59
+ triggerNodeChanges([
60
+ {
61
+ id,
62
+ type: "select",
63
+ selected: !!intersectingNode
64
+ }
65
+ ]);
66
+ }, [intersectingNode]);
67
+ const onCollapsed = (0, import_react2.useCallback)((collapsed) => {
68
+ setGroupCollapsed(id, collapsed);
69
+ }, []);
70
+ const size = (0, import_react2.useMemo)(() => {
71
+ return {
72
+ width: data.initialSize?.width || 100,
73
+ height: data.initialSize?.height || 50
74
+ };
75
+ }, [data.initialSize]);
76
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
77
+ import_layout.NodeContainer,
78
+ {
79
+ id,
80
+ selected,
81
+ data,
82
+ title: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.Group, { justify: "space-between", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_core.Group, { gap: "xs", children: [
83
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.Badge, { size: "xs", variant: "outline", radius: "xs", color: "gray", children: groupNodes?.length || 0 }),
84
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_layout.NodeCollapse, { nodeId: id, isCollapsed: data.isCollapsed, onCollapsed })
85
+ ] }) }),
86
+ type,
87
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
88
+ import_react.NodeResizer,
89
+ {
90
+ nodeId: id,
91
+ minWidth: size.width,
92
+ minHeight: size.height,
93
+ isVisible: selected && !data.isCollapsed
94
+ }
95
+ )
96
+ }
97
+ );
98
+ }
99
+ var node_module_group_default = ModuleGroupNode;
100
+ // Annotate the CommonJS export names for ESM import in node:
101
+ 0 && (module.exports = {
102
+ ModuleGroupNode
103
+ });
104
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/nodes/groups/index.ts","../../../src/nodes/groups/node-module-group.tsx"],"sourcesContent":["export { default as ModuleGroupNode } from './node-module-group';\n","import { NodeContainer, NodeCollapse } from '@awesome-flow/core/layout';\nimport { Node, NodeProps, NodeResizer, useStore, useUpdateNodeInternals } from '@xyflow/react';\nimport { BasicNodeData, FlowContext } from '@awesome-flow/core/abstract';\nimport { useCallback, useContext, useEffect, useMemo } from 'react';\nimport { shallow } from 'zustand/shallow';\nimport { Badge, Group } from '@mantine/core';\n\nfunction ModuleGroupNode({\n id,\n selected,\n data,\n type,\n width,\n height,\n}: NodeProps<Node<BasicNodeData>>) {\n const context = useContext(FlowContext);\n const updateNodeInternals = useUpdateNodeInternals();\n const triggerNodeChanges = useStore((s) => s.triggerNodeChanges);\n\n const { groupNodes, setGroupCollapsed } = context.useFlowStore(\n useCallback(\n (state) => ({ groupNodes: state.groups[id], setGroupCollapsed: state.setGroupCollapsed }),\n []\n )\n );\n\n const intersectingNode = context.useInteractivityStore(\n useCallback((state) => state.nodeIntersectionTargets[id], [id]),\n shallow\n );\n\n useEffect(() => {\n updateNodeInternals(id);\n }, [width, height]);\n\n useEffect(() => {\n triggerNodeChanges([\n {\n id,\n type: 'select',\n selected: !!intersectingNode,\n },\n ]);\n }, [intersectingNode]);\n\n const onCollapsed = useCallback((collapsed: boolean) => {\n setGroupCollapsed(id, collapsed);\n }, []);\n\n const size = useMemo(() => {\n return {\n width: data.initialSize?.width || 100,\n height: data.initialSize?.height || 50,\n };\n }, [data.initialSize]);\n\n return (\n <NodeContainer\n id={id}\n selected={selected}\n data={data}\n title={\n <Group justify=\"space-between\">\n <Group gap=\"xs\">\n <Badge size=\"xs\" variant=\"outline\" radius=\"xs\" color=\"gray\">\n {groupNodes?.length || 0}\n </Badge>\n <NodeCollapse nodeId={id} isCollapsed={data.isCollapsed} onCollapsed={onCollapsed} />\n </Group>\n </Group>\n }\n type={type}\n >\n <NodeResizer\n nodeId={id}\n minWidth={size.width}\n minHeight={size.height}\n isVisible={selected && !data.isCollapsed}\n />\n </NodeContainer>\n );\n}\n\nexport default ModuleGroupNode;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAA4C;AAC5C,mBAA+E;AAC/E,sBAA2C;AAC3C,IAAAA,gBAA4D;AAC5D,qBAAwB;AACxB,kBAA6B;AA0DnB;AAxDV,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAmC;AACjC,QAAM,cAAU,0BAAW,2BAAW;AACtC,QAAM,0BAAsB,qCAAuB;AACnD,QAAM,yBAAqB,uBAAS,CAAC,MAAM,EAAE,kBAAkB;AAE/D,QAAM,EAAE,YAAY,kBAAkB,IAAI,QAAQ;AAAA,QAChD;AAAA,MACE,CAAC,WAAW,EAAE,YAAY,MAAM,OAAO,EAAE,GAAG,mBAAmB,MAAM,kBAAkB;AAAA,MACvF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,mBAAmB,QAAQ;AAAA,QAC/B,2BAAY,CAAC,UAAU,MAAM,wBAAwB,EAAE,GAAG,CAAC,EAAE,CAAC;AAAA,IAC9D;AAAA,EACF;AAEA,+BAAU,MAAM;AACd,wBAAoB,EAAE;AAAA,EACxB,GAAG,CAAC,OAAO,MAAM,CAAC;AAElB,+BAAU,MAAM;AACd,uBAAmB;AAAA,MACjB;AAAA,QACE;AAAA,QACA,MAAM;AAAA,QACN,UAAU,CAAC,CAAC;AAAA,MACd;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,gBAAgB,CAAC;AAErB,QAAM,kBAAc,2BAAY,CAAC,cAAuB;AACtD,sBAAkB,IAAI,SAAS;AAAA,EACjC,GAAG,CAAC,CAAC;AAEL,QAAM,WAAO,uBAAQ,MAAM;AACzB,WAAO;AAAA,MACL,OAAO,KAAK,aAAa,SAAS;AAAA,MAClC,QAAQ,KAAK,aAAa,UAAU;AAAA,IACtC;AAAA,EACF,GAAG,CAAC,KAAK,WAAW,CAAC;AAErB,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,OACE,4CAAC,qBAAM,SAAQ,iBACb,uDAAC,qBAAM,KAAI,MACT;AAAA,oDAAC,qBAAM,MAAK,MAAK,SAAQ,WAAU,QAAO,MAAK,OAAM,QAClD,sBAAY,UAAU,GACzB;AAAA,QACA,4CAAC,8BAAa,QAAQ,IAAI,aAAa,KAAK,aAAa,aAA0B;AAAA,SACrF,GACF;AAAA,MAEF;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,QAAQ;AAAA,UACR,UAAU,KAAK;AAAA,UACf,WAAW,KAAK;AAAA,UAChB,WAAW,YAAY,CAAC,KAAK;AAAA;AAAA,MAC/B;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,4BAAQ;","names":["import_react"]}
@@ -0,0 +1,7 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { NodeProps, Node } from '@xyflow/react';
3
+ import { BasicNodeData } from '@awesome-flow/core/abstract';
4
+
5
+ declare function ModuleGroupNode({ id, selected, data, type, width, height, }: NodeProps<Node<BasicNodeData>>): react_jsx_runtime.JSX.Element;
6
+
7
+ export { ModuleGroupNode };
@@ -0,0 +1,7 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { NodeProps, Node } from '@xyflow/react';
3
+ import { BasicNodeData } from '@awesome-flow/core/abstract';
4
+
5
+ declare function ModuleGroupNode({ id, selected, data, type, width, height, }: NodeProps<Node<BasicNodeData>>): react_jsx_runtime.JSX.Element;
6
+
7
+ export { ModuleGroupNode };
@@ -0,0 +1,78 @@
1
+ // src/nodes/groups/node-module-group.tsx
2
+ import { NodeContainer, NodeCollapse } from "@awesome-flow/core/layout";
3
+ import { NodeResizer, useStore, useUpdateNodeInternals } from "@xyflow/react";
4
+ import { FlowContext } from "@awesome-flow/core/abstract";
5
+ import { useCallback, useContext, useEffect, useMemo } from "react";
6
+ import { shallow } from "zustand/shallow";
7
+ import { Badge, Group } from "@mantine/core";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ function ModuleGroupNode({
10
+ id,
11
+ selected,
12
+ data,
13
+ type,
14
+ width,
15
+ height
16
+ }) {
17
+ const context = useContext(FlowContext);
18
+ const updateNodeInternals = useUpdateNodeInternals();
19
+ const triggerNodeChanges = useStore((s) => s.triggerNodeChanges);
20
+ const { groupNodes, setGroupCollapsed } = context.useFlowStore(
21
+ useCallback(
22
+ (state) => ({ groupNodes: state.groups[id], setGroupCollapsed: state.setGroupCollapsed }),
23
+ []
24
+ )
25
+ );
26
+ const intersectingNode = context.useInteractivityStore(
27
+ useCallback((state) => state.nodeIntersectionTargets[id], [id]),
28
+ shallow
29
+ );
30
+ useEffect(() => {
31
+ updateNodeInternals(id);
32
+ }, [width, height]);
33
+ useEffect(() => {
34
+ triggerNodeChanges([
35
+ {
36
+ id,
37
+ type: "select",
38
+ selected: !!intersectingNode
39
+ }
40
+ ]);
41
+ }, [intersectingNode]);
42
+ const onCollapsed = useCallback((collapsed) => {
43
+ setGroupCollapsed(id, collapsed);
44
+ }, []);
45
+ const size = useMemo(() => {
46
+ return {
47
+ width: data.initialSize?.width || 100,
48
+ height: data.initialSize?.height || 50
49
+ };
50
+ }, [data.initialSize]);
51
+ return /* @__PURE__ */ jsx(
52
+ NodeContainer,
53
+ {
54
+ id,
55
+ selected,
56
+ data,
57
+ title: /* @__PURE__ */ jsx(Group, { justify: "space-between", children: /* @__PURE__ */ jsxs(Group, { gap: "xs", children: [
58
+ /* @__PURE__ */ jsx(Badge, { size: "xs", variant: "outline", radius: "xs", color: "gray", children: groupNodes?.length || 0 }),
59
+ /* @__PURE__ */ jsx(NodeCollapse, { nodeId: id, isCollapsed: data.isCollapsed, onCollapsed })
60
+ ] }) }),
61
+ type,
62
+ children: /* @__PURE__ */ jsx(
63
+ NodeResizer,
64
+ {
65
+ nodeId: id,
66
+ minWidth: size.width,
67
+ minHeight: size.height,
68
+ isVisible: selected && !data.isCollapsed
69
+ }
70
+ )
71
+ }
72
+ );
73
+ }
74
+ var node_module_group_default = ModuleGroupNode;
75
+ export {
76
+ node_module_group_default as ModuleGroupNode
77
+ };
78
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/nodes/groups/node-module-group.tsx"],"sourcesContent":["import { NodeContainer, NodeCollapse } from '@awesome-flow/core/layout';\nimport { Node, NodeProps, NodeResizer, useStore, useUpdateNodeInternals } from '@xyflow/react';\nimport { BasicNodeData, FlowContext } from '@awesome-flow/core/abstract';\nimport { useCallback, useContext, useEffect, useMemo } from 'react';\nimport { shallow } from 'zustand/shallow';\nimport { Badge, Group } from '@mantine/core';\n\nfunction ModuleGroupNode({\n id,\n selected,\n data,\n type,\n width,\n height,\n}: NodeProps<Node<BasicNodeData>>) {\n const context = useContext(FlowContext);\n const updateNodeInternals = useUpdateNodeInternals();\n const triggerNodeChanges = useStore((s) => s.triggerNodeChanges);\n\n const { groupNodes, setGroupCollapsed } = context.useFlowStore(\n useCallback(\n (state) => ({ groupNodes: state.groups[id], setGroupCollapsed: state.setGroupCollapsed }),\n []\n )\n );\n\n const intersectingNode = context.useInteractivityStore(\n useCallback((state) => state.nodeIntersectionTargets[id], [id]),\n shallow\n );\n\n useEffect(() => {\n updateNodeInternals(id);\n }, [width, height]);\n\n useEffect(() => {\n triggerNodeChanges([\n {\n id,\n type: 'select',\n selected: !!intersectingNode,\n },\n ]);\n }, [intersectingNode]);\n\n const onCollapsed = useCallback((collapsed: boolean) => {\n setGroupCollapsed(id, collapsed);\n }, []);\n\n const size = useMemo(() => {\n return {\n width: data.initialSize?.width || 100,\n height: data.initialSize?.height || 50,\n };\n }, [data.initialSize]);\n\n return (\n <NodeContainer\n id={id}\n selected={selected}\n data={data}\n title={\n <Group justify=\"space-between\">\n <Group gap=\"xs\">\n <Badge size=\"xs\" variant=\"outline\" radius=\"xs\" color=\"gray\">\n {groupNodes?.length || 0}\n </Badge>\n <NodeCollapse nodeId={id} isCollapsed={data.isCollapsed} onCollapsed={onCollapsed} />\n </Group>\n </Group>\n }\n type={type}\n >\n <NodeResizer\n nodeId={id}\n minWidth={size.width}\n minHeight={size.height}\n isVisible={selected && !data.isCollapsed}\n />\n </NodeContainer>\n );\n}\n\nexport default ModuleGroupNode;\n"],"mappings":";AAAA,SAAS,eAAe,oBAAoB;AAC5C,SAA0B,aAAa,UAAU,8BAA8B;AAC/E,SAAwB,mBAAmB;AAC3C,SAAS,aAAa,YAAY,WAAW,eAAe;AAC5D,SAAS,eAAe;AACxB,SAAS,OAAO,aAAa;AA0DnB,SACE,KADF;AAxDV,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAmC;AACjC,QAAM,UAAU,WAAW,WAAW;AACtC,QAAM,sBAAsB,uBAAuB;AACnD,QAAM,qBAAqB,SAAS,CAAC,MAAM,EAAE,kBAAkB;AAE/D,QAAM,EAAE,YAAY,kBAAkB,IAAI,QAAQ;AAAA,IAChD;AAAA,MACE,CAAC,WAAW,EAAE,YAAY,MAAM,OAAO,EAAE,GAAG,mBAAmB,MAAM,kBAAkB;AAAA,MACvF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,mBAAmB,QAAQ;AAAA,IAC/B,YAAY,CAAC,UAAU,MAAM,wBAAwB,EAAE,GAAG,CAAC,EAAE,CAAC;AAAA,IAC9D;AAAA,EACF;AAEA,YAAU,MAAM;AACd,wBAAoB,EAAE;AAAA,EACxB,GAAG,CAAC,OAAO,MAAM,CAAC;AAElB,YAAU,MAAM;AACd,uBAAmB;AAAA,MACjB;AAAA,QACE;AAAA,QACA,MAAM;AAAA,QACN,UAAU,CAAC,CAAC;AAAA,MACd;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,gBAAgB,CAAC;AAErB,QAAM,cAAc,YAAY,CAAC,cAAuB;AACtD,sBAAkB,IAAI,SAAS;AAAA,EACjC,GAAG,CAAC,CAAC;AAEL,QAAM,OAAO,QAAQ,MAAM;AACzB,WAAO;AAAA,MACL,OAAO,KAAK,aAAa,SAAS;AAAA,MAClC,QAAQ,KAAK,aAAa,UAAU;AAAA,IACtC;AAAA,EACF,GAAG,CAAC,KAAK,WAAW,CAAC;AAErB,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,OACE,oBAAC,SAAM,SAAQ,iBACb,+BAAC,SAAM,KAAI,MACT;AAAA,4BAAC,SAAM,MAAK,MAAK,SAAQ,WAAU,QAAO,MAAK,OAAM,QAClD,sBAAY,UAAU,GACzB;AAAA,QACA,oBAAC,gBAAa,QAAQ,IAAI,aAAa,KAAK,aAAa,aAA0B;AAAA,SACrF,GACF;AAAA,MAEF;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,QAAQ;AAAA,UACR,UAAU,KAAK;AAAA,UACf,WAAW,KAAK;AAAA,UAChB,WAAW,YAAY,CAAC,KAAK;AAAA;AAAA,MAC/B;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,4BAAQ;","names":[]}