@awesome-flow/noise 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.
Files changed (196) hide show
  1. package/dist/abstract/index.cjs +16 -29
  2. package/dist/abstract/index.d.cts +131 -121
  3. package/dist/abstract/index.d.cts.map +1 -0
  4. package/dist/abstract/index.d.ts +131 -121
  5. package/dist/abstract/index.d.ts.map +1 -0
  6. package/dist/abstract/index.js +8 -29
  7. package/dist/abstract-Db8fFoLp.cjs +1423 -0
  8. package/dist/abstract-Db8fFoLp.cjs.map +1 -0
  9. package/dist/abstract-Dhf_tSuO.js +1177 -0
  10. package/dist/abstract-Dhf_tSuO.js.map +1 -0
  11. package/dist/chunk-CUT6urMc.cjs +30 -0
  12. package/dist/generators-BzkwG_6g.js +353 -0
  13. package/dist/generators-BzkwG_6g.js.map +1 -0
  14. package/dist/generators-D3RjZdMN.cjs +413 -0
  15. package/dist/generators-D3RjZdMN.cjs.map +1 -0
  16. package/dist/groups-BIS2AF5M.cjs +32 -0
  17. package/dist/groups-BIS2AF5M.cjs.map +1 -0
  18. package/dist/groups-CH_lk8Aw.js +26 -0
  19. package/dist/groups-CH_lk8Aw.js.map +1 -0
  20. package/dist/index-B5F3AfVc.d.ts +1 -0
  21. package/dist/index-B9liqMk7.d.cts +106 -0
  22. package/dist/index-B9liqMk7.d.cts.map +1 -0
  23. package/dist/index-BLREDRDJ.d.cts +1 -0
  24. package/dist/index-BQGb02a-.d.cts +1 -0
  25. package/dist/index-Be7jjS77.d.ts +1 -0
  26. package/dist/index-C2UIRuQU.d.ts +56 -0
  27. package/dist/index-C2UIRuQU.d.ts.map +1 -0
  28. package/dist/index-C7p7kRl6.d.ts +106 -0
  29. package/dist/index-C7p7kRl6.d.ts.map +1 -0
  30. package/dist/index-CLcwj8U0.d.ts +1 -0
  31. package/dist/index-CUPkUUOR.d.ts +1 -0
  32. package/dist/index-CdUm_2Oy.d.cts +45 -0
  33. package/dist/index-CdUm_2Oy.d.cts.map +1 -0
  34. package/dist/index-CnGot0Ls.d.ts +26 -0
  35. package/dist/index-CnGot0Ls.d.ts.map +1 -0
  36. package/dist/index-CtCMUyZA.d.cts +1 -0
  37. package/dist/index-DAwMsCZ3.d.ts +1 -0
  38. package/dist/index-DHPGVj1Q.d.cts +56 -0
  39. package/dist/index-DHPGVj1Q.d.cts.map +1 -0
  40. package/dist/index-DOvrmvAP.d.cts +1 -0
  41. package/dist/index-Dh6J9gb5.d.cts +1 -0
  42. package/dist/index-Dpmi5zcN.d.cts +1 -0
  43. package/dist/index-DsrVbQfJ.d.cts +26 -0
  44. package/dist/index-DsrVbQfJ.d.cts.map +1 -0
  45. package/dist/index-Dun4VhYj.d.ts +10 -0
  46. package/dist/index-Dun4VhYj.d.ts.map +1 -0
  47. package/dist/index-Dyw_KDIi.d.ts +45 -0
  48. package/dist/index-Dyw_KDIi.d.ts.map +1 -0
  49. package/dist/index-I2m6W13H.d.ts +1 -0
  50. package/dist/index-QAtBiMxG.d.cts +1 -0
  51. package/dist/index-XpRnF8C9.d.cts +98 -0
  52. package/dist/index-XpRnF8C9.d.cts.map +1 -0
  53. package/dist/index-b3KxQSTX.d.ts +98 -0
  54. package/dist/index-b3KxQSTX.d.ts.map +1 -0
  55. package/dist/index-kr8Wk7v5.d.ts +1 -0
  56. package/dist/index-uyclP-_e.d.cts +10 -0
  57. package/dist/index-uyclP-_e.d.cts.map +1 -0
  58. package/dist/modifiers-DU7AkD-K.cjs +545 -0
  59. package/dist/modifiers-DU7AkD-K.cjs.map +1 -0
  60. package/dist/modifiers-MSA4z6Gq.js +479 -0
  61. package/dist/modifiers-MSA4z6Gq.js.map +1 -0
  62. package/dist/module-group-template-evi7UU-G.d.ts +12 -0
  63. package/dist/module-group-template-evi7UU-G.d.ts.map +1 -0
  64. package/dist/module-group-template-hN1W1MZD.d.cts +12 -0
  65. package/dist/module-group-template-hN1W1MZD.d.cts.map +1 -0
  66. package/dist/modules/index.cjs +2 -5
  67. package/dist/modules/index.d.cts +10 -5
  68. package/dist/modules/index.d.cts.map +1 -0
  69. package/dist/modules/index.d.ts +10 -5
  70. package/dist/modules/index.d.ts.map +1 -0
  71. package/dist/modules/index.js +3 -6
  72. package/dist/node-props-76LXd76e.d.ts +141 -0
  73. package/dist/node-props-76LXd76e.d.ts.map +1 -0
  74. package/dist/node-props-D-fSg180.d.cts +141 -0
  75. package/dist/node-props-D-fSg180.d.cts.map +1 -0
  76. package/dist/nodes/generators/index.cjs +12 -24
  77. package/dist/nodes/generators/index.d.cts +3 -27
  78. package/dist/nodes/generators/index.d.ts +3 -27
  79. package/dist/nodes/generators/index.js +3 -24
  80. package/dist/nodes/groups/index.cjs +2 -5
  81. package/dist/nodes/groups/index.d.cts +2 -7
  82. package/dist/nodes/groups/index.d.ts +2 -7
  83. package/dist/nodes/groups/index.js +3 -6
  84. package/dist/nodes/index.cjs +38 -75
  85. package/dist/nodes/index.d.cts +9 -13
  86. package/dist/nodes/index.d.ts +9 -13
  87. package/dist/nodes/index.js +8 -75
  88. package/dist/nodes/modifiers/index.cjs +12 -23
  89. package/dist/nodes/modifiers/index.d.cts +3 -12
  90. package/dist/nodes/modifiers/index.d.ts +3 -12
  91. package/dist/nodes/modifiers/index.js +4 -23
  92. package/dist/nodes/output/index.cjs +11 -17
  93. package/dist/nodes/output/index.d.cts +2 -13
  94. package/dist/nodes/output/index.d.ts +2 -13
  95. package/dist/nodes/output/index.js +8 -17
  96. package/dist/nodes/selectors/index.cjs +9 -13
  97. package/dist/nodes/selectors/index.d.cts +3 -11
  98. package/dist/nodes/selectors/index.d.ts +3 -11
  99. package/dist/nodes/selectors/index.js +8 -13
  100. package/dist/nodes/transformers/index.cjs +6 -13
  101. package/dist/nodes/transformers/index.d.cts +3 -17
  102. package/dist/nodes/transformers/index.d.ts +3 -17
  103. package/dist/nodes/transformers/index.js +3 -14
  104. package/dist/noise-select-template-BIc5lJ3B.d.ts +20 -0
  105. package/dist/noise-select-template-BIc5lJ3B.d.ts.map +1 -0
  106. package/dist/noise-select-template-DCaVwZ3-.d.cts +20 -0
  107. package/dist/noise-select-template-DCaVwZ3-.d.cts.map +1 -0
  108. package/dist/noise-terrace-template-0WFJalF_.d.cts +69 -0
  109. package/dist/noise-terrace-template-0WFJalF_.d.cts.map +1 -0
  110. package/dist/noise-terrace-template-li40jZuF.d.ts +69 -0
  111. package/dist/noise-terrace-template-li40jZuF.d.ts.map +1 -0
  112. package/dist/noise-turbulence-template-BhxPzE9y.d.ts +68 -0
  113. package/dist/noise-turbulence-template-BhxPzE9y.d.ts.map +1 -0
  114. package/dist/noise-turbulence-template-D1wvZo6-.d.cts +68 -0
  115. package/dist/noise-turbulence-template-D1wvZo6-.d.cts.map +1 -0
  116. package/dist/normalize-noise-module-CTxqByn9.js +20 -0
  117. package/dist/normalize-noise-module-CTxqByn9.js.map +1 -0
  118. package/dist/normalize-noise-module-U3fMmZRj.cjs +26 -0
  119. package/dist/normalize-noise-module-U3fMmZRj.cjs.map +1 -0
  120. package/dist/output-CsgQ-PfN.js +0 -0
  121. package/dist/output-DhHW36T8.cjs +0 -0
  122. package/dist/position-grid-template-B7YMhe83.d.cts +76 -0
  123. package/dist/position-grid-template-B7YMhe83.d.cts.map +1 -0
  124. package/dist/position-grid-template-QuIcXmat.d.ts +76 -0
  125. package/dist/position-grid-template-QuIcXmat.d.ts.map +1 -0
  126. package/dist/position-logger-template-Bj6c2m8v.d.ts +33 -0
  127. package/dist/position-logger-template-Bj6c2m8v.d.ts.map +1 -0
  128. package/dist/position-logger-template-DmcBLwwL.d.cts +33 -0
  129. package/dist/position-logger-template-DmcBLwwL.d.cts.map +1 -0
  130. package/dist/selectors-DOtoPc8O.cjs +0 -0
  131. package/dist/selectors-DPitHA56.js +0 -0
  132. package/dist/templates/generators/index.cjs +18 -30
  133. package/dist/templates/generators/index.d.cts +4 -45
  134. package/dist/templates/generators/index.d.ts +4 -45
  135. package/dist/templates/generators/index.js +9 -30
  136. package/dist/templates/groups/index.cjs +9 -12
  137. package/dist/templates/groups/index.d.cts +3 -7
  138. package/dist/templates/groups/index.d.ts +3 -7
  139. package/dist/templates/groups/index.js +9 -12
  140. package/dist/templates/index.cjs +44 -77
  141. package/dist/templates/index.d.cts +14 -9
  142. package/dist/templates/index.d.ts +14 -9
  143. package/dist/templates/index.js +14 -77
  144. package/dist/templates/modifiers/index.cjs +17 -28
  145. package/dist/templates/modifiers/index.d.cts +4 -41
  146. package/dist/templates/modifiers/index.d.ts +4 -41
  147. package/dist/templates/modifiers/index.js +9 -28
  148. package/dist/templates/output/index.cjs +12 -18
  149. package/dist/templates/output/index.d.cts +3 -19
  150. package/dist/templates/output/index.d.ts +3 -19
  151. package/dist/templates/output/index.js +9 -18
  152. package/dist/templates/selectors/index.cjs +10 -14
  153. package/dist/templates/selectors/index.d.cts +4 -13
  154. package/dist/templates/selectors/index.d.ts +4 -13
  155. package/dist/templates/selectors/index.js +9 -14
  156. package/dist/templates/transformers/index.cjs +13 -20
  157. package/dist/templates/transformers/index.d.cts +4 -4
  158. package/dist/templates/transformers/index.d.ts +4 -4
  159. package/dist/templates/transformers/index.js +9 -20
  160. package/dist/transformers-C-NV_u9j.cjs +324 -0
  161. package/dist/transformers-C-NV_u9j.cjs.map +1 -0
  162. package/dist/transformers-CbfR4wDy.js +0 -0
  163. package/dist/transformers-Cpxm1ER8.js +276 -0
  164. package/dist/transformers-Cpxm1ER8.js.map +1 -0
  165. package/dist/transformers-iRDXBonP.cjs +0 -0
  166. package/package.json +14 -15
  167. package/dist/chunk-36USJJC4.cjs +0 -576
  168. package/dist/chunk-4PQ4USYV.cjs +0 -1
  169. package/dist/chunk-DQE5NXY7.cjs +0 -911
  170. package/dist/chunk-FFQRP23R.cjs +0 -1
  171. package/dist/chunk-FMJZTXJQ.js +0 -576
  172. package/dist/chunk-JACBT4MS.cjs +0 -1
  173. package/dist/chunk-LKDSXT7I.cjs +0 -896
  174. package/dist/chunk-M26CSOHC.js +0 -911
  175. package/dist/chunk-N6YNJKLS.cjs +0 -1
  176. package/dist/chunk-NUA3VGOA.js +0 -896
  177. package/dist/chunk-OLJKWO2H.cjs +0 -1591
  178. package/dist/chunk-Q5FVGKKM.cjs +0 -1
  179. package/dist/chunk-R6TU3SBX.js +0 -49
  180. package/dist/chunk-SGHEOOLW.js +0 -19
  181. package/dist/chunk-UNMRBZ5X.cjs +0 -19
  182. package/dist/chunk-W4T6Q7A5.js +0 -1591
  183. package/dist/chunk-WOJTKQKO.cjs +0 -1
  184. package/dist/chunk-XC7VF5YC.cjs +0 -49
  185. package/dist/index-BZr1EROK.d.cts +0 -49
  186. package/dist/index-DzD3jbPF.d.ts +0 -49
  187. package/dist/node-props-D8SnrgWa.d.cts +0 -137
  188. package/dist/node-props-D8SnrgWa.d.ts +0 -137
  189. package/dist/noise-terrace-node-D2ezdTnC.d.cts +0 -22
  190. package/dist/noise-terrace-node-DW81ZQk6.d.ts +0 -22
  191. /package/dist/{chunk-2Y22M2Y4.js → generators-CEKtVh81.cjs} +0 -0
  192. /package/dist/{chunk-5ELMFIRV.js → generators-DUbGjGwn.js} +0 -0
  193. /package/dist/{chunk-RVWCBH7K.js → groups-7QhtZ7S3.js} +0 -0
  194. /package/dist/{chunk-SD3T3LFY.js → groups-_x04PMtP.cjs} +0 -0
  195. /package/dist/{chunk-TOYKGWYO.js → modifiers-BFuezug6.js} +0 -0
  196. /package/dist/{chunk-XZQQ6N3L.js → modifiers-BPTSn-15.cjs} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract-Dhf_tSuO.js","names":["handleData: Record<NoiseHandleType, ComputedPositionsData[] | ComputedModuleData[]>","noise: PositionNoiseValue[]","incomingData: Record<NoiseSourceControlHandle, ComputedModuleData[]>","incomingData: Record<NoiseSourceControlHandle, ComputedModuleData[]>","ModuleGroupNode","PositionConstNode","PositionGridNode","NoiseOutputNode","NoiseRawTextureNode","NoiseLoggerNode","PositionsLoggerNode","NoiseConstNode","NoiseBillowNode","NoiseCheckerboardNode","NoiseCylindersNode","NoisePerlinNode","NoiseRidgedMultiNode","NoiseSpheresNode","NoiseVoronoiNode","NoiseCombineNode","NoiseClampNode","NoiseAbsNode","NoiseNormalizeNode","NoiseCurveNode","NoiseExponentNode","NoiseInvertNode","NoiseScaleBiasNode","NoiseTerraceNode","NoiseBlendNode","NoiseSelectNode","NoiseDisplaceNode","NoiseRotatePointNode","NoiseScalePointNode","NoiseTranslatePointNode","NoiseTurbulenceNode"],"sources":["../src/nodes/output/noise-logger-node.tsx","../src/nodes/output/noise-output-node.tsx","../src/nodes/output/noise-raw-texture-node.tsx","../src/nodes/output/positions-logger-node.tsx","../src/nodes/selectors/noise-blend-node.tsx","../src/nodes/selectors/noise-select-node.tsx","../src/abstract/templates.ts","../src/templates/generators/noise-billow-template.ts","../src/templates/generators/noise-checkerboard-template.ts","../src/templates/generators/noise-const-template.ts","../src/templates/generators/noise-cylinders-template.ts","../src/templates/generators/noise-perlin-template.ts","../src/templates/generators/noise-ridgedmulti-template.ts","../src/templates/generators/noise-spheres-template.ts","../src/templates/generators/noise-voronoi-template.ts","../src/templates/generators/position-const-template.ts","../src/templates/generators/position-grid-template.ts","../src/templates/groups/module-group-template.ts","../src/templates/modifiers/noise-abs-template.ts","../src/templates/modifiers/noise-clamp-template.ts","../src/templates/modifiers/noise-combine-template.ts","../src/templates/modifiers/noise-curve-template.ts","../src/templates/modifiers/noise-exponent-template.ts","../src/templates/modifiers/noise-invert-template.ts","../src/templates/modifiers/noise-normalize-template.ts","../src/templates/modifiers/noise-scalebias-template.ts","../src/templates/modifiers/noise-terrace-template.ts","../src/templates/output/noise-logger-template.ts","../src/templates/output/noise-output-template.ts","../src/templates/output/noise-raw-texture-template.ts","../src/templates/output/position-logger-template.ts","../src/templates/selectors/noise-blend-template.ts","../src/templates/selectors/noise-select-template.ts","../src/templates/transformers/noise-displace-template.ts","../src/templates/transformers/noise-rotate-point-template.ts","../src/templates/transformers/noise-scale-point-template.ts","../src/templates/transformers/noise-translate-point-template.ts","../src/templates/transformers/noise-turbulence-template.ts","../src/abstract/node-types.ts"],"sourcesContent":["import { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { useIncomingComputedData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Divider, Stack, Text } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useMemo } from 'react';\nimport { ComputedNoiseData } from '../../abstract/node-props';\n\nfunction NoiseLoggerNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const incoming = useIncomingComputedData<ComputedNoiseData>(id);\n const noise = useMemo(() => incoming?.map((p) => p.noise).flat(), [incoming]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Text>Size: {noise?.length || 0}</Text>\n <Divider h={5} />\n <Stack>\n {noise?.map((v, i) => (\n <Text key={i}>\n {v.position?.x}:{v.position?.y}:{v.position?.z}: {v.value}\n </Text>\n ))}\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default NoiseLoggerNode;\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { HandlesIncomingDataStatus } from '@awesome-flow/core/components';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Text } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useState } from 'react';\nimport { NoiseHandleType } from '../../abstract';\nimport {\n ComputedModuleData,\n ComputedNoiseData,\n ComputedPositionsData,\n PositionNoiseValue\n} from '../../abstract/node-props';\n\nfunction NoiseOutputNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const [size, setSize] = useState(0);\n\n const updateComputedData = useUpdateNodeComputedData<ComputedNoiseData>();\n\n const onDataUpdated = useCallback(\n (handleData: Record<NoiseHandleType, ComputedPositionsData[] | ComputedModuleData[]>) => {\n const incomingPositions = handleData[NoiseHandleType.position] as ComputedPositionsData[];\n const incomingModule = handleData[NoiseHandleType.module] as ComputedModuleData[];\n\n if (incomingPositions?.length && incomingModule?.length && incomingModule[0]?.module) {\n const { module } = incomingModule[0];\n\n const noise: PositionNoiseValue[] = [];\n\n for (const input of incomingPositions) {\n for (const position of input.positions) {\n const value = module.getValue(position.x, position.y, position.z);\n\n noise.push({\n position,\n value\n });\n }\n }\n\n updateComputedData(id, { noise, module });\n setSize(noise.length);\n }\n },\n [updateComputedData, id]\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <HandlesIncomingDataStatus\n nodeId={id}\n handles={data.handles}\n groupBy=\"dataType\"\n onDataUpdated={onDataUpdated}\n type=\"target\"\n resetComputedData\n />\n <Text mt={5}>Noise points: {size}</Text>\n </NodeContainer>\n );\n}\n\nexport default NoiseOutputNode;\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { useIncomingComputedData, useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Group, Stack } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { ComputedNoiseData, ComputedNoiseTextureData } from '../../abstract/node-props';\n\nfunction NoiseRawTextureNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedNoiseTextureData>();\n\n const [dataLength, setDataLength] = useState(0);\n const [resolution, setResolution] = useState(0);\n\n const incoming = useIncomingComputedData<ComputedNoiseData>(id);\n const noise = useMemo(() => incoming?.map((p) => p.noise).flat(), [incoming]);\n\n useEffect(() => {\n if (noise?.length) {\n const size = Math.ceil(Math.sqrt(noise.length));\n\n const colors = noise.map((n) => [n.value * 255, n.value * 255, n.value * 255, 255]).flat();\n const dataArray = new Uint8Array(size * size * 4);\n dataArray.set(colors);\n\n setResolution(size);\n setDataLength(dataArray.length);\n\n updateComputedData(id, {\n textureData: dataArray,\n textureResolutionX: size,\n textureResolutionY: size\n });\n }\n }, [noise, updateComputedData, id]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n Resolution: {resolution}x{resolution}\n </Group>\n <Group>Input Length: {noise?.length || 0}</Group>\n <Group>\n Output Length ({resolution}*{resolution}*4): {dataLength}\n </Group>\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default NoiseRawTextureNode;\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { useIncomingComputedData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Divider, Stack, Text } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useMemo } from 'react';\nimport { ComputedPositionsData } from '../../abstract/node-props';\n\nfunction PositionsLoggerNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const incoming = useIncomingComputedData<ComputedPositionsData>(id);\n\n const positions = useMemo(() => {\n return incoming?.map((p) => p.positions).flat();\n }, [incoming]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Text>Size: {positions?.length || 0}</Text>\n <Divider h={5} />\n <Stack>\n {positions?.map((v, i) => (\n <Text key={i}>\n {v.x}:{v.y}:{v.z}\n </Text>\n ))}\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default PositionsLoggerNode;\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { HandlesIncomingDataStatus } from '@awesome-flow/core/components';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { Blend } from 'libnoise-simplex-ts';\nimport { useCallback } from 'react';\nimport { NoiseSourceControlHandle } from '../../abstract';\nimport { ComputedModuleData } from '../../abstract/node-props';\n\nfunction NoiseBlendNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const onDataUpdated = useCallback(\n (incomingData: Record<NoiseSourceControlHandle, ComputedModuleData[]>) => {\n const incomingSources = incomingData[NoiseSourceControlHandle.source];\n const incomingControl = incomingData[NoiseSourceControlHandle.control];\n if (incomingSources?.length >= 2 && incomingControl?.length) {\n const module = new Blend(\n incomingSources[0].module,\n incomingSources[1].module,\n incomingControl[0].module\n );\n\n updateComputedData(id, { module });\n }\n },\n [id, updateComputedData]\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <HandlesIncomingDataStatus\n nodeId={id}\n handles={data.handles}\n groupBy=\"dataId\"\n onDataUpdated={onDataUpdated}\n type=\"target\"\n resetComputedData\n />\n </NodeContainer>\n );\n}\n\nexport default NoiseBlendNode;\n","import { HandlesIncomingDataStatus } from '@awesome-flow/core/components';\nimport { useUpdateNodeComputedData, useUpdateNodeData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { Select } from 'libnoise-simplex-ts';\nimport { useCallback, useEffect, useState } from 'react';\nimport { NoiseSourceControlHandle } from '../../abstract';\nimport { ComputedModuleData, NodeSelectNoiseData } from '../../abstract/node-props';\n\nfunction NoiseSelectNode({ id, selected, data, type }: NodeProps<Node<NodeSelectNoiseData>>) {\n const [edgeFalloff, setEdgeFalloff] = useState(data.edgeFalloff);\n const [lowerBound, setLowerBound] = useState(data.lowerBound);\n const [upperBound, setUpperBound] = useState(data.upperBound);\n\n const updateNodeData = useUpdateNodeData<NodeSelectNoiseData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n useEffect(() => {\n updateNodeData(id, { edgeFalloff, lowerBound, upperBound });\n }, [edgeFalloff, lowerBound, upperBound, id, updateNodeData]);\n\n const onDataUpdated = useCallback(\n (incomingData: Record<NoiseSourceControlHandle, ComputedModuleData[]>) => {\n const incomingSources = incomingData[NoiseSourceControlHandle.source];\n const incomingControl = incomingData[NoiseSourceControlHandle.control];\n\n if (incomingSources?.length >= 2 && incomingControl?.length) {\n const module = new Select(\n incomingSources[0].module,\n incomingSources[1].module,\n incomingControl[0].module,\n edgeFalloff,\n lowerBound,\n upperBound\n );\n\n updateComputedData(id, { module });\n }\n },\n [updateComputedData, id, edgeFalloff, lowerBound, upperBound]\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n Edge Falloff:\n <NumberInput\n size=\"xs\"\n w={100}\n value={edgeFalloff}\n onChange={(e) => setEdgeFalloff(Number(e))}\n step={0.1}\n />\n </Group>\n <Group>\n Lower Bound:\n <NumberInput\n size=\"xs\"\n w={100}\n value={lowerBound}\n onChange={(e) => setLowerBound(Number(e))}\n step={0.1}\n />\n </Group>\n <Group>\n Upper Bound:\n <NumberInput\n size=\"xs\"\n w={100}\n value={upperBound}\n onChange={(e) => setUpperBound(Number(e))}\n step={0.1}\n />\n </Group>\n <HandlesIncomingDataStatus\n nodeId={id}\n handles={data.handles}\n groupBy=\"dataId\"\n onDataUpdated={onDataUpdated}\n type=\"target\"\n resetComputedData\n />\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default NoiseSelectNode;\n","export enum NoiseTemplateGroup {\n positions = 'Positions',\n output = 'Output',\n noiseGenerators = 'Noise Generators',\n noiseModifiers = 'Noise Modifiers',\n noiseSelectors = 'Noise Selectors',\n noiseTransformers = 'Noise Transformers'\n}\n","import { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { IDGenerator } from '@awesome-flow/core/utils';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeFBMNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport class NoiseBillowNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeFBMNoiseData> = {\n id: IDGenerator.template(),\n type: NoiseNodeType.noiseBillow,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Billow Noise',\n frequency: 0.1,\n lacunarity: 2.0,\n octaves: 5,\n persistence: 0.5,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport class NoiseCheckerboardNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseCheckerboard,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Checkerboard Noise'\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeConstNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport class NoiseConstNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeConstNoiseData> = {\n type: NoiseNodeType.noiseConst,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Const Value Noise',\n noise: 0,\n min: -1,\n max: 1\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeCylindersNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport class NoiseCylindersNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeCylindersNoiseData> = {\n type: NoiseNodeType.noiseCylinders,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Cylinders Noise',\n frequency: 0.1\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeFBMNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport class NoisePerlinNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeFBMNoiseData> = {\n type: NoiseNodeType.noisePerlin,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Perlin Noise',\n frequency: 0.1,\n lacunarity: 2.0,\n octaves: 5,\n persistence: 0.5,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeRidgedNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport class NoiseRidgedMultiNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeRidgedNoiseData> = {\n type: NoiseNodeType.noiseRidgedMulti,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Ridged Multi Noise',\n frequency: 0.1,\n lacunarity: 2.0,\n octaves: 6,\n offset: 1.0,\n gain: 2.0,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeSpheresNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport class NoiseSpheresNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeSpheresNoiseData> = {\n type: NoiseNodeType.noiseSpheres,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Spheres Noise',\n frequency: 0.1\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeVoronoiNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport class NoiseVoronoiNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeVoronoiNoiseData> = {\n type: NoiseNodeType.noiseVoronoi,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Voronoi Noise',\n frequency: 0.1,\n displacement: 1.0,\n distance: true,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodePositionData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport class PositionConstNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodePositionData> = {\n type: NoiseNodeType.position,\n group: NoiseTemplateGroup.positions,\n data: {\n title: 'Position Output',\n position: { x: 0, y: 0, z: 0 }\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.position,\n connection: 'source'\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeGridData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport class PositionGridNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeGridData> = {\n type: NoiseNodeType.grid,\n group: NoiseTemplateGroup.positions,\n data: {\n title: 'Grid Output',\n center: { x: 0, y: 0, z: 0 },\n radius: 1\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.position,\n connection: 'source'\n }\n ]\n };\n}\n","import {\n BasicNodeData,\n CoreTemplateGroup,\n ITemplateFactory,\n NodeTemplate\n} from '@awesome-flow/core/abstract';\nimport { IDGenerator } from '@awesome-flow/core/utils';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class ModuleGroupNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n id: IDGenerator.template(),\n type: NoiseNodeType.groupModule,\n group: CoreTemplateGroup.groups,\n data: {\n title: 'Modules Group',\n isGroup: true,\n initialSize: {\n width: 300,\n height: 200\n },\n collapsedSize: {\n width: 300,\n height: 80\n }\n },\n handles: [\n {\n position: Position.Bottom,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1,\n hideOnCollapse: true\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseAbsNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseAbs,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Abs Noise'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeClampNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseClampNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeClampNoiseData> = {\n type: NoiseNodeType.noiseClamp,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Clamp Noise',\n lowerBound: -1,\n upperBound: 1\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeCombineNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseCombineType } from '../../abstract/operations';\n\nexport class NoiseCombineNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeCombineNoiseData> = {\n type: NoiseNodeType.noiseCombine,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Combine Noise',\n operation: NoiseCombineType.add\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 2\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeCurveNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseCurveNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeCurveNoiseData> = {\n type: NoiseNodeType.noiseCurve,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Noise Curve',\n points: []\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeExponentNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseExponentNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeExponentNoiseData> = {\n type: NoiseNodeType.noiseExponent,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Noise Exponent',\n exponent: 1\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseInvertNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseInvert,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Invert Noise'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { IDGenerator } from '@awesome-flow/core/utils';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeNormalizeNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseNormalizeNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeNormalizeNoiseData> = {\n id: IDGenerator.template(),\n type: NoiseNodeType.noiseNormalize,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Normalize Noise',\n intervalStart: -1,\n intervalEnd: 1\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeScaleBiasNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseScaleBiasNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeScaleBiasNoiseData> = {\n type: NoiseNodeType.noiseScaleBias,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Scale/Bias Noise',\n scale: 1.0,\n bias: 0.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeTerraceNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseTerraceNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeTerraceNoiseData> = {\n type: NoiseNodeType.noiseTerrace,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Noise Terrace',\n points: []\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseLoggerNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseLogger,\n group: NoiseTemplateGroup.output,\n data: {\n title: 'Noise Logger'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.noise,\n connection: 'target'\n }\n ]\n };\n}\n","import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseOutputNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseOutput,\n group: NoiseTemplateGroup.output,\n data: {\n title: 'Noise Output'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.position,\n connection: 'target'\n },\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.noise,\n connection: 'source'\n }\n ]\n };\n}\n","import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseRawTextureTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.textureData,\n group: NoiseTemplateGroup.output,\n data: {\n title: 'Texture Data'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.noise,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.texture,\n connection: 'source'\n }\n ]\n };\n}\n","import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class PositionLoggerNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.positionLogger,\n group: NoiseTemplateGroup.positions,\n data: {\n title: 'Position Logger'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.position,\n connection: 'target'\n }\n ]\n };\n}\n","import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType, NoiseSourceControlHandle } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseBlendNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseBlend,\n group: NoiseTemplateGroup.noiseSelectors,\n data: {\n title: 'Noise Blend'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Modules',\n dataId: NoiseSourceControlHandle.source,\n maxConnections: 2,\n minConnections: 2\n },\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.control,\n connection: 'target',\n label: 'Control Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.output,\n connection: 'source'\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType, NoiseSourceControlHandle } from '../../abstract/handle-types';\nimport { NodeSelectNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseSelectNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeSelectNoiseData> = {\n type: NoiseNodeType.noiseSelect,\n group: NoiseTemplateGroup.noiseSelectors,\n data: {\n title: 'Noise Select',\n edgeFalloff: 0.0,\n lowerBound: -1.0,\n upperBound: 1.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.source,\n connection: 'target',\n label: 'Source Modules',\n maxConnections: 2,\n minConnections: 2\n },\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.control,\n connection: 'target',\n label: 'Control Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.output,\n connection: 'source'\n }\n ]\n };\n}\n","import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport {\n DisplacementHandle,\n DisplacementModuleHandle,\n NoiseHandleType\n} from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseDisplaceNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData, Omit<DisplacementModuleHandle, 'handleId'>> = {\n type: NoiseNodeType.noiseDisplace,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Displace'\n },\n handles: [\n {\n position: Position.Left,\n connection: 'target',\n label: 'Source Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.sourceModule,\n maxConnections: 1\n },\n {\n position: Position.Left,\n connection: 'target',\n label: 'X Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.xModule,\n maxConnections: 1\n },\n {\n position: Position.Left,\n connection: 'target',\n label: 'Y Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.yModule,\n maxConnections: 1\n },\n {\n position: Position.Left,\n connection: 'target',\n label: 'Z Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.zModule,\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.output,\n connection: 'source'\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeRotatePointNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseRotatePointNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeRotatePointNoiseData> = {\n type: NoiseNodeType.noiseRotatePoint,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Rotate Point',\n xAngle: 0.0,\n yAngle: 0.0,\n zAngle: 0.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeScalePointNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseScalePointNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeScalePointNoiseData> = {\n type: NoiseNodeType.noiseScalePoint,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Scale Point',\n xScale: 1.0,\n yScale: 1.0,\n zScale: 1.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeTranslatePointNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseTranslatePointNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeTranslatePointNoiseData> = {\n type: NoiseNodeType.noiseTranslatePoint,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Translate Point',\n translateX: 0.0,\n translateY: 0.0,\n translateZ: 0.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeTurbulenceNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport class NoiseTurbulenceNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeTurbulenceNoiseData> = {\n type: NoiseNodeType.noiseTurbulence,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Turbulence',\n frequency: 1.0,\n power: 1.0,\n roughness: 1.0,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n label: 'Variable Properties',\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n}\n","import { ITemplateFactory } from '@awesome-flow/core/abstract';\nimport { NodeTypes } from '@xyflow/react';\nimport { ModuleGroupNode } from '../nodes';\nimport NoiseBillowNode from '../nodes/generators/noise-billow-node';\nimport NoiseCheckerboardNode from '../nodes/generators/noise-checkerboard-node';\nimport NoiseConstNode from '../nodes/generators/noise-const-node';\nimport NoiseCylindersNode from '../nodes/generators/noise-cylinders-node';\nimport NoisePerlinNode from '../nodes/generators/noise-perlin-node';\nimport NoiseRidgedMultiNode from '../nodes/generators/noise-ridgedmulti-node';\nimport NoiseSpheresNode from '../nodes/generators/noise-spheres-node';\nimport NoiseVoronoiNode from '../nodes/generators/noise-voronoi-node';\nimport PositionConstNode from '../nodes/generators/position-const-node';\nimport PositionGridNode from '../nodes/generators/position-grid-node';\nimport NoiseAbsNode from '../nodes/modifiers/noise-abs-node';\nimport NoiseClampNode from '../nodes/modifiers/noise-clamp-node';\nimport NoiseCombineNode from '../nodes/modifiers/noise-combine-node';\nimport NoiseCurveNode from '../nodes/modifiers/noise-curve-node';\nimport NoiseExponentNode from '../nodes/modifiers/noise-exponent-node';\nimport NoiseInvertNode from '../nodes/modifiers/noise-invert-node';\nimport NoiseNormalizeNode from '../nodes/modifiers/noise-normalize-node';\nimport NoiseScaleBiasNode from '../nodes/modifiers/noise-scale-bias-node';\nimport NoiseTerraceNode from '../nodes/modifiers/noise-terrace-node';\nimport NoiseLoggerNode from '../nodes/output/noise-logger-node';\nimport NoiseOutputNode from '../nodes/output/noise-output-node';\nimport NoiseRawTextureNode from '../nodes/output/noise-raw-texture-node';\nimport PositionsLoggerNode from '../nodes/output/positions-logger-node';\nimport NoiseBlendNode from '../nodes/selectors/noise-blend-node';\nimport NoiseSelectNode from '../nodes/selectors/noise-select-node';\nimport NoiseDisplaceNode from '../nodes/transformers/noise-displace-node';\nimport NoiseRotatePointNode from '../nodes/transformers/noise-rotate-point-node';\nimport NoiseScalePointNode from '../nodes/transformers/noise-scale-point-node';\nimport NoiseTranslatePointNode from '../nodes/transformers/noise-translate-point-node';\nimport NoiseTurbulenceNode from '../nodes/transformers/noise-turbulence-node';\nimport { NoiseBillowNodeTemplateFactory } from '../templates/generators/noise-billow-template';\nimport { NoiseCheckerboardNodeTemplateFactory } from '../templates/generators/noise-checkerboard-template';\nimport { NoiseConstNodeTemplateFactory } from '../templates/generators/noise-const-template';\nimport { NoiseCylindersNodeTemplateFactory } from '../templates/generators/noise-cylinders-template';\nimport { NoisePerlinNodeTemplateFactory } from '../templates/generators/noise-perlin-template';\nimport { NoiseRidgedMultiNodeTemplateFactory } from '../templates/generators/noise-ridgedmulti-template';\nimport { NoiseSpheresNodeTemplateFactory } from '../templates/generators/noise-spheres-template';\nimport { NoiseVoronoiNodeTemplateFactory } from '../templates/generators/noise-voronoi-template';\nimport { PositionConstNodeTemplateFactory } from '../templates/generators/position-const-template';\nimport { PositionGridNodeTemplateFactory } from '../templates/generators/position-grid-template';\nimport { ModuleGroupNodeTemplateFactory } from '../templates/groups/module-group-template';\nimport { NoiseAbsNodeTemplateFactory } from '../templates/modifiers/noise-abs-template';\nimport { NoiseClampNodeTemplateFactory } from '../templates/modifiers/noise-clamp-template';\nimport { NoiseCombineNodeTemplateFactory } from '../templates/modifiers/noise-combine-template';\nimport { NoiseCurveNodeTemplateFactory } from '../templates/modifiers/noise-curve-template';\nimport { NoiseExponentNodeTemplateFactory } from '../templates/modifiers/noise-exponent-template';\nimport { NoiseInvertNodeTemplateFactory } from '../templates/modifiers/noise-invert-template';\nimport { NoiseNormalizeNodeTemplateFactory } from '../templates/modifiers/noise-normalize-template';\nimport { NoiseScaleBiasNodeTemplateFactory } from '../templates/modifiers/noise-scalebias-template';\nimport { NoiseTerraceNodeTemplateFactory } from '../templates/modifiers/noise-terrace-template';\nimport { NoiseLoggerNodeTemplateFactory } from '../templates/output/noise-logger-template';\nimport { NoiseOutputNodeTemplateFactory } from '../templates/output/noise-output-template';\nimport { NoiseRawTextureTemplateFactory } from '../templates/output/noise-raw-texture-template';\nimport { PositionLoggerNodeTemplateFactory } from '../templates/output/position-logger-template';\nimport { NoiseBlendNodeTemplateFactory } from '../templates/selectors/noise-blend-template';\nimport { NoiseSelectNodeTemplateFactory } from '../templates/selectors/noise-select-template';\nimport { NoiseDisplaceNodeTemplateFactory } from '../templates/transformers/noise-displace-template';\nimport { NoiseRotatePointNodeTemplateFactory } from '../templates/transformers/noise-rotate-point-template';\nimport { NoiseScalePointNodeTemplateFactory } from '../templates/transformers/noise-scale-point-template';\nimport { NoiseTranslatePointNodeTemplateFactory } from '../templates/transformers/noise-translate-point-template';\nimport { NoiseTurbulenceNodeTemplateFactory } from '../templates/transformers/noise-turbulence-template';\n\nexport enum NoiseNodeType {\n position = 'position',\n grid = 'grid',\n textureData = 'texture-data',\n groupModule = 'group-module',\n positionLogger = 'position-logger',\n noiseLogger = 'noise-logger',\n noiseOutput = 'noise-output',\n noiseConst = 'noise-constant',\n noiseBillow = 'noise-billow',\n noiseCheckerboard = 'noise-checkerboard',\n noiseNormalize = 'noise-normalize',\n noiseCylinders = 'noise-cylinders',\n noisePerlin = 'noise-perlin',\n noiseRidgedMulti = 'noise-ridged-multi',\n noiseSpheres = 'noise-spheres',\n noiseVoronoi = 'noise-voronoi',\n noiseCombine = 'noise-combiner',\n noiseClamp = 'noise-clamp',\n noiseAbs = 'noise-abs',\n noiseCurve = 'noise-curve',\n noiseExponent = 'noise-exponent',\n noiseInvert = 'noise-invert',\n noiseScaleBias = 'noise-scale-bias',\n noiseTerrace = 'noise-terrace',\n noiseBlend = 'noise-blend',\n noiseSelect = 'noise-select',\n noiseDisplace = 'noise-displace',\n noiseRotatePoint = 'noise-rotate-point',\n noiseScalePoint = 'noise-scale-point',\n noiseTranslatePoint = 'noise-translate-point',\n noiseTurbulence = 'noise-turbulence'\n}\n\nexport const noiseNodeTypes = {\n [NoiseNodeType.groupModule]: ModuleGroupNode,\n [NoiseNodeType.position]: PositionConstNode,\n [NoiseNodeType.grid]: PositionGridNode,\n [NoiseNodeType.noiseOutput]: NoiseOutputNode,\n [NoiseNodeType.textureData]: NoiseRawTextureNode,\n [NoiseNodeType.noiseLogger]: NoiseLoggerNode,\n [NoiseNodeType.positionLogger]: PositionsLoggerNode,\n [NoiseNodeType.noiseConst]: NoiseConstNode,\n [NoiseNodeType.noiseBillow]: NoiseBillowNode,\n [NoiseNodeType.noiseCheckerboard]: NoiseCheckerboardNode,\n [NoiseNodeType.noiseCylinders]: NoiseCylindersNode,\n [NoiseNodeType.noisePerlin]: NoisePerlinNode,\n [NoiseNodeType.noiseRidgedMulti]: NoiseRidgedMultiNode,\n [NoiseNodeType.noiseSpheres]: NoiseSpheresNode,\n [NoiseNodeType.noiseVoronoi]: NoiseVoronoiNode,\n [NoiseNodeType.noiseCombine]: NoiseCombineNode,\n [NoiseNodeType.noiseClamp]: NoiseClampNode,\n [NoiseNodeType.noiseAbs]: NoiseAbsNode,\n [NoiseNodeType.noiseNormalize]: NoiseNormalizeNode,\n [NoiseNodeType.noiseCurve]: NoiseCurveNode,\n [NoiseNodeType.noiseExponent]: NoiseExponentNode,\n [NoiseNodeType.noiseInvert]: NoiseInvertNode,\n [NoiseNodeType.noiseScaleBias]: NoiseScaleBiasNode,\n [NoiseNodeType.noiseTerrace]: NoiseTerraceNode,\n [NoiseNodeType.noiseBlend]: NoiseBlendNode,\n [NoiseNodeType.noiseSelect]: NoiseSelectNode,\n [NoiseNodeType.noiseDisplace]: NoiseDisplaceNode,\n [NoiseNodeType.noiseRotatePoint]: NoiseRotatePointNode,\n [NoiseNodeType.noiseScalePoint]: NoiseScalePointNode,\n [NoiseNodeType.noiseTranslatePoint]: NoiseTranslatePointNode,\n [NoiseNodeType.noiseTurbulence]: NoiseTurbulenceNode\n} satisfies NodeTypes;\n\nexport const noiseNodeTemplates = {\n [NoiseNodeType.noiseOutput]: new NoiseOutputNodeTemplateFactory(),\n [NoiseNodeType.noiseBillow]: new NoiseBillowNodeTemplateFactory(),\n [NoiseNodeType.noiseCheckerboard]: new NoiseCheckerboardNodeTemplateFactory(),\n [NoiseNodeType.noiseNormalize]: new NoiseNormalizeNodeTemplateFactory(),\n [NoiseNodeType.noiseLogger]: new NoiseLoggerNodeTemplateFactory(),\n [NoiseNodeType.noiseConst]: new NoiseConstNodeTemplateFactory(),\n [NoiseNodeType.position]: new PositionConstNodeTemplateFactory(),\n [NoiseNodeType.positionLogger]: new PositionLoggerNodeTemplateFactory(),\n [NoiseNodeType.grid]: new PositionGridNodeTemplateFactory(),\n [NoiseNodeType.textureData]: new NoiseRawTextureTemplateFactory(),\n [NoiseNodeType.noiseCylinders]: new NoiseCylindersNodeTemplateFactory(),\n [NoiseNodeType.noisePerlin]: new NoisePerlinNodeTemplateFactory(),\n [NoiseNodeType.noiseRidgedMulti]: new NoiseRidgedMultiNodeTemplateFactory(),\n [NoiseNodeType.noiseSpheres]: new NoiseSpheresNodeTemplateFactory(),\n [NoiseNodeType.noiseVoronoi]: new NoiseVoronoiNodeTemplateFactory(),\n [NoiseNodeType.noiseCombine]: new NoiseCombineNodeTemplateFactory(),\n [NoiseNodeType.noiseClamp]: new NoiseClampNodeTemplateFactory(),\n [NoiseNodeType.noiseAbs]: new NoiseAbsNodeTemplateFactory(),\n [NoiseNodeType.noiseCurve]: new NoiseCurveNodeTemplateFactory(),\n [NoiseNodeType.noiseExponent]: new NoiseExponentNodeTemplateFactory(),\n [NoiseNodeType.noiseInvert]: new NoiseInvertNodeTemplateFactory(),\n [NoiseNodeType.noiseScaleBias]: new NoiseScaleBiasNodeTemplateFactory(),\n [NoiseNodeType.noiseTerrace]: new NoiseTerraceNodeTemplateFactory(),\n [NoiseNodeType.noiseBlend]: new NoiseBlendNodeTemplateFactory(),\n [NoiseNodeType.noiseSelect]: new NoiseSelectNodeTemplateFactory(),\n [NoiseNodeType.noiseDisplace]: new NoiseDisplaceNodeTemplateFactory(),\n [NoiseNodeType.noiseRotatePoint]: new NoiseRotatePointNodeTemplateFactory(),\n [NoiseNodeType.noiseScalePoint]: new NoiseScalePointNodeTemplateFactory(),\n [NoiseNodeType.noiseTranslatePoint]: new NoiseTranslatePointNodeTemplateFactory(),\n [NoiseNodeType.noiseTurbulence]: new NoiseTurbulenceNodeTemplateFactory(),\n [NoiseNodeType.groupModule]: new ModuleGroupNodeTemplateFactory()\n} satisfies Record<NoiseNodeType, ITemplateFactory>;\n"],"mappings":";;;;;;;;;;;;;;;;AAQA,SAAS,gBAAgB,EAAE,IAAI,UAAU,MAAM,MAAsC,EAAE;CACrF,MAAM,WAAW,wBAA2C,GAAG;CAC/D,MAAM,QAAQ,QAAQ,MAAM,UAAU,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,QAAS,EAAC;AAE7E,wBACE,KAAC;EAAkB;EAAc;EAAgB;EAAY;;mBAC3D,KAAC,mBAAK,UAAO,OAAO,UAAU,KAAS;mBACvC,IAAC,WAAQ,GAAG,IAAK;mBACjB,IAAC,mBACE,OAAO,IAAI,CAAC,GAAG,sBACd,KAAC;IACE,EAAE,UAAU;IAAE;IAAE,EAAE,UAAU;IAAE;IAAE,EAAE,UAAU;IAAE;IAAG,EAAE;QAD3C,EAEJ,CACP,GACI;;GACM;AAEnB;AAED,gCAAe;;;;ACZf,SAAS,gBAAgB,EAAE,IAAI,UAAU,MAAM,MAAsC,EAAE;CACrF,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,EAAE;CAEnC,MAAM,qBAAqB,2BAA8C;CAEzE,MAAM,gBAAgB,YACpB,CAACA,eAAwF;EACvF,MAAM,oBAAoB,WAAW,gBAAgB;EACrD,MAAM,iBAAiB,WAAW,gBAAgB;AAElD,MAAI,mBAAmB,UAAU,gBAAgB,UAAU,eAAe,IAAI,QAAQ;GACpF,MAAM,EAAE,QAAQ,GAAG,eAAe;GAElC,MAAMC,QAA8B,CAAE;AAEtC,QAAK,MAAM,SAAS,kBAClB,MAAK,MAAM,YAAY,MAAM,WAAW;IACtC,MAAM,QAAQ,OAAO,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS,EAAE;AAEjE,UAAM,KAAK;KACT;KACA;IACD,EAAC;GACH;AAGH,sBAAmB,IAAI;IAAE;IAAO;GAAQ,EAAC;AACzC,WAAQ,MAAM,OAAO;EACtB;CACF,GACD,CAAC,oBAAoB,EAAG,EACzB;AAED,wBACE,KAAC;EAAkB;EAAc;EAAgB;EAAY;6BAC3D,IAAC;GACC,QAAQ;GACR,SAAS,KAAK;GACd,SAAQ;GACO;GACf,MAAK;GACL;IACA,kBACF,KAAC;GAAK,IAAI;cAAG,kBAAe;IAAY;GAC1B;AAEnB;AAED,gCAAe;;;;ACvDf,SAAS,oBAAoB,EAAE,IAAI,UAAU,MAAM,MAAsC,EAAE;CACzF,MAAM,qBAAqB,2BAAqD;CAEhF,MAAM,CAAC,YAAY,cAAc,GAAG,SAAS,EAAE;CAC/C,MAAM,CAAC,YAAY,cAAc,GAAG,SAAS,EAAE;CAE/C,MAAM,WAAW,wBAA2C,GAAG;CAC/D,MAAM,QAAQ,QAAQ,MAAM,UAAU,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,QAAS,EAAC;AAE7E,WAAU,MAAM;AACd,MAAI,OAAO,QAAQ;GACjB,MAAM,OAAO,KAAK,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;GAE/C,MAAM,SAAS,MAAM,IAAI,CAAC,MAAM;IAAC,EAAE,QAAQ;IAAK,EAAE,QAAQ;IAAK,EAAE,QAAQ;IAAK;GAAI,EAAC,CAAC,MAAM;GAC1F,MAAM,YAAY,IAAI,WAAW,OAAO,OAAO;AAC/C,aAAU,IAAI,OAAO;AAErB,iBAAc,KAAK;AACnB,iBAAc,UAAU,OAAO;AAE/B,sBAAmB,IAAI;IACrB,aAAa;IACb,oBAAoB;IACpB,oBAAoB;GACrB,EAAC;EACH;CACF,GAAE;EAAC;EAAO;EAAoB;CAAG,EAAC;AAEnC,wBACE,IAAC;EAAkB;EAAc;EAAgB;EAAY;4BAC3D,KAAC;mBACC,KAAC;IAAM;IACQ;IAAW;IAAE;OACpB;mBACR,KAAC,oBAAM,kBAAe,OAAO,UAAU,KAAU;mBACjD,KAAC;IAAM;IACW;IAAW;IAAE;IAAW;IAAM;OACxC;MACF;GACM;AAEnB;AAED,qCAAe;;;;AC3Cf,SAAS,oBAAoB,EAAE,IAAI,UAAU,MAAM,MAAsC,EAAE;CACzF,MAAM,WAAW,wBAA+C,GAAG;CAEnE,MAAM,YAAY,QAAQ,MAAM;AAC9B,SAAO,UAAU,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM;CAChD,GAAE,CAAC,QAAS,EAAC;AAEd,wBACE,KAAC;EAAkB;EAAc;EAAgB;EAAY;;mBAC3D,KAAC,mBAAK,UAAO,WAAW,UAAU,KAAS;mBAC3C,IAAC,WAAQ,GAAG,IAAK;mBACjB,IAAC,mBACE,WAAW,IAAI,CAAC,GAAG,sBAClB,KAAC;IACE,EAAE;IAAE;IAAE,EAAE;IAAE;IAAE,EAAE;QADN,EAEJ,CACP,GACI;;GACM;AAEnB;AAED,oCAAe;;;;ACpBf,SAAS,eAAe,EAAE,IAAI,UAAU,MAAM,MAAsC,EAAE;CACpF,MAAM,qBAAqB,2BAA+C;CAE1E,MAAM,gBAAgB,YACpB,CAACC,iBAAyE;EACxE,MAAM,kBAAkB,aAAa,yBAAyB;EAC9D,MAAM,kBAAkB,aAAa,yBAAyB;AAC9D,MAAI,iBAAiB,UAAU,KAAK,iBAAiB,QAAQ;GAC3D,MAAM,SAAS,IAAI,MACjB,gBAAgB,GAAG,QACnB,gBAAgB,GAAG,QACnB,gBAAgB,GAAG;AAGrB,sBAAmB,IAAI,EAAE,OAAQ,EAAC;EACnC;CACF,GACD,CAAC,IAAI,kBAAmB,EACzB;AAED,wBACE,IAAC;EAAkB;EAAc;EAAgB;EAAY;4BAC3D,IAAC;GACC,QAAQ;GACR,SAAS,KAAK;GACd,SAAQ;GACO;GACf,MAAK;GACL;IACA;GACY;AAEnB;AAED,+BAAe;;;;AClCf,SAAS,gBAAgB,EAAE,IAAI,UAAU,MAAM,MAA4C,EAAE;CAC3F,MAAM,CAAC,aAAa,eAAe,GAAG,SAAS,KAAK,YAAY;CAChE,MAAM,CAAC,YAAY,cAAc,GAAG,SAAS,KAAK,WAAW;CAC7D,MAAM,CAAC,YAAY,cAAc,GAAG,SAAS,KAAK,WAAW;CAE7D,MAAM,iBAAiB,mBAAwC;CAC/D,MAAM,qBAAqB,2BAA+C;AAE1E,WAAU,MAAM;AACd,iBAAe,IAAI;GAAE;GAAa;GAAY;EAAY,EAAC;CAC5D,GAAE;EAAC;EAAa;EAAY;EAAY;EAAI;CAAe,EAAC;CAE7D,MAAM,gBAAgB,YACpB,CAACC,iBAAyE;EACxE,MAAM,kBAAkB,aAAa,yBAAyB;EAC9D,MAAM,kBAAkB,aAAa,yBAAyB;AAE9D,MAAI,iBAAiB,UAAU,KAAK,iBAAiB,QAAQ;GAC3D,MAAM,SAAS,IAAI,OACjB,gBAAgB,GAAG,QACnB,gBAAgB,GAAG,QACnB,gBAAgB,GAAG,QACnB,aACA,YACA;AAGF,sBAAmB,IAAI,EAAE,OAAQ,EAAC;EACnC;CACF,GACD;EAAC;EAAoB;EAAI;EAAa;EAAY;CAAW,EAC9D;AAED,wBACE,IAAC;EAAkB;EAAc;EAAgB;EAAY;4BAC3D,KAAC;mBACC,KAAC,oBAAM,iCAEL,IAAC;IACC,MAAK;IACL,GAAG;IACH,OAAO;IACP,UAAU,CAAC,MAAM,eAAe,OAAO,EAAE,CAAC;IAC1C,MAAM;KACN,IACI;mBACR,KAAC,oBAAM,gCAEL,IAAC;IACC,MAAK;IACL,GAAG;IACH,OAAO;IACP,UAAU,CAAC,MAAM,cAAc,OAAO,EAAE,CAAC;IACzC,MAAM;KACN,IACI;mBACR,KAAC,oBAAM,gCAEL,IAAC;IACC,MAAK;IACL,GAAG;IACH,OAAO;IACP,UAAU,CAAC,MAAM,cAAc,OAAO,EAAE,CAAC;IACzC,MAAM;KACN,IACI;mBACR,IAAC;IACC,QAAQ;IACR,SAAS,KAAK;IACd,SAAQ;IACO;IACf,MAAK;IACL;KACA;MACI;GACM;AAEnB;AAED,gCAAe;;;;ACzFf,IAAY,oEAAL;AACL;AACA;AACA;AACA;AACA;AACA;;AACD;;;;ACCD,IAAa,iCAAb,MAAwE;CACtE,AAAS,WAA2C;EAClD,IAAI,YAAY,UAAU;EAC1B,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,WAAW;GACX,YAAY;GACZ,SAAS;GACT,aAAa;GACb,MAAM;EACP;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,eAAe;GACzB,YAAY;EACb,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;AC5BD,IAAa,uCAAb,MAA8E;CAC5E,AAAS,WAAwC;EAC/C,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM,EACJ,OAAO,qBACR;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACdD,IAAa,gCAAb,MAAuE;CACrE,AAAS,WAA6C;EACpD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,OAAO;GACP,KAAK;GACL,KAAK;EACN;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;AClBD,IAAa,oCAAb,MAA2E;CACzE,AAAS,WAAiD;EACxD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,WAAW;EACZ;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,eAAe;GACzB,YAAY;EACb,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACrBD,IAAa,iCAAb,MAAwE;CACtE,AAAS,WAA2C;EAClD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,WAAW;GACX,YAAY;GACZ,SAAS;GACT,aAAa;GACb,MAAM;EACP;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,eAAe;GACzB,YAAY;EACb,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACzBD,IAAa,sCAAb,MAA6E;CAC3E,AAAS,WAA8C;EACrD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,WAAW;GACX,YAAY;GACZ,SAAS;GACT,QAAQ;GACR,MAAM;GACN,MAAM;EACP;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,eAAe;GACzB,YAAY;EACb,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;AC1BD,IAAa,kCAAb,MAAyE;CACvE,AAAS,WAA+C;EACtD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,WAAW;EACZ;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,eAAe;GACzB,YAAY;EACb,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACrBD,IAAa,kCAAb,MAAyE;CACvE,AAAS,WAA+C;EACtD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,WAAW;GACX,cAAc;GACd,UAAU;GACV,MAAM;EACP;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,eAAe;GACzB,YAAY;EACb,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACxBD,IAAa,mCAAb,MAA0E;CACxE,AAAS,WAA2C;EAClD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,UAAU;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;GAAG;EAC/B;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;AChBD,IAAa,kCAAb,MAAyE;CACvE,AAAS,WAAuC;EAC9C,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,QAAQ;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;GAAG;GAC5B,QAAQ;EACT;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACbD,IAAa,iCAAb,MAAwE;CACtE,AAAS,WAAwC;EAC/C,IAAI,YAAY,UAAU;EAC1B,MAAM,cAAc;EACpB,OAAO,kBAAkB;EACzB,MAAM;GACJ,OAAO;GACP,SAAS;GACT,aAAa;IACX,OAAO;IACP,QAAQ;GACT;GACD,eAAe;IACb,OAAO;IACP,QAAQ;GACT;EACF;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;GACZ,gBAAgB;GAChB,gBAAgB;EACjB,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACrCD,IAAa,8BAAb,MAAqE;CACnE,AAAS,WAAwC;EAC/C,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM,EACJ,OAAO,YACR;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;GACZ,gBAAgB;EACjB,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACpBD,IAAa,gCAAb,MAAuE;CACrE,AAAS,WAA6C;EACpD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,YAAY;GACZ,YAAY;EACb;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;GACZ,gBAAgB;EACjB,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACtBD,IAAa,kCAAb,MAAyE;CACvE,AAAS,WAA+C;EACtD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,WAAW,iBAAiB;EAC7B;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;GACZ,gBAAgB;EACjB,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACvBD,IAAa,gCAAb,MAAuE;CACrE,AAAS,WAA6C;EACpD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,QAAQ,CAAE;EACX;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;GACZ,gBAAgB;EACjB,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACtBD,IAAa,mCAAb,MAA0E;CACxE,AAAS,WAAgD;EACvD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,UAAU;EACX;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;GACZ,gBAAgB;EACjB,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACvBD,IAAa,iCAAb,MAAwE;CACtE,AAAS,WAAwC;EAC/C,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM,EACJ,OAAO,eACR;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;GACZ,gBAAgB;EACjB,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACnBD,IAAa,oCAAb,MAA2E;CACzE,AAAS,WAAiD;EACxD,IAAI,YAAY,UAAU;EAC1B,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,eAAe;GACf,aAAa;EACd;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;GACZ,gBAAgB;EACjB,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACzBD,IAAa,oCAAb,MAA2E;CACzE,AAAS,WAAiD;EACxD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,OAAO;GACP,MAAM;EACP;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;GACZ,gBAAgB;EACjB,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACvBD,IAAa,kCAAb,MAAyE;CACvE,AAAS,WAA+C;EACtD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,QAAQ,CAAE;EACX;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;GACZ,gBAAgB;EACjB,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACvBD,IAAa,iCAAb,MAAwE;CACtE,AAAS,WAAwC;EAC/C,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM,EACJ,OAAO,eACR;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACfD,IAAa,iCAAb,MAAwE;CACtE,AAAS,WAAwC;EAC/C,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM,EACJ,OAAO,eACR;EACD,SAAS;GACP;IACE,UAAU,SAAS;IACnB,UAAU,gBAAgB;IAC1B,YAAY;GACb;GACD;IACE,UAAU,SAAS;IACnB,UAAU,gBAAgB;IAC1B,YAAY;IACZ,gBAAgB;GACjB;GACD;IACE,UAAU,SAAS;IACnB,UAAU,gBAAgB;IAC1B,YAAY;GACb;EACF;CACF;AACF;;;;AC1BD,IAAa,iCAAb,MAAwE;CACtE,AAAS,WAAwC;EAC/C,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM,EACJ,OAAO,eACR;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;GACZ,gBAAgB;EACjB,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACrBD,IAAa,oCAAb,MAA2E;CACzE,AAAS,WAAwC;EAC/C,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM,EACJ,OAAO,kBACR;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACfD,IAAa,gCAAb,MAAuE;CACrE,AAAS,WAAwC;EAC/C,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM,EACJ,OAAO,cACR;EACD,SAAS;GACP;IACE,UAAU,SAAS;IACnB,UAAU,gBAAgB;IAC1B,YAAY;IACZ,OAAO;IACP,QAAQ,yBAAyB;IACjC,gBAAgB;IAChB,gBAAgB;GACjB;GACD;IACE,UAAU,SAAS;IACnB,UAAU,gBAAgB;IAC1B,QAAQ,yBAAyB;IACjC,YAAY;IACZ,OAAO;IACP,gBAAgB;GACjB;GACD;IACE,UAAU,SAAS;IACnB,UAAU,gBAAgB;IAC1B,QAAQ,yBAAyB;IACjC,YAAY;GACb;EACF;CACF;AACF;;;;AChCD,IAAa,iCAAb,MAAwE;CACtE,AAAS,WAA8C;EACrD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,aAAa;GACb,YAAY;GACZ,YAAY;EACb;EACD,SAAS;GACP;IACE,UAAU,SAAS;IACnB,UAAU,gBAAgB;IAC1B,QAAQ,yBAAyB;IACjC,YAAY;IACZ,OAAO;IACP,gBAAgB;IAChB,gBAAgB;GACjB;GACD;IACE,UAAU,SAAS;IACnB,UAAU,gBAAgB;IAC1B,QAAQ,yBAAyB;IACjC,YAAY;IACZ,OAAO;IACP,gBAAgB;GACjB;GACD;IACE,UAAU,SAAS;IACnB,UAAU,gBAAgB;IAC1B,QAAQ,yBAAyB;IACjC,YAAY;GACb;EACF;CACF;AACF;;;;ACjCD,IAAa,mCAAb,MAA0E;CACxE,AAAS,WAAoF;EAC3F,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM,EACJ,OAAO,iBACR;EACD,SAAS;GACP;IACE,UAAU,SAAS;IACnB,YAAY;IACZ,OAAO;IACP,UAAU,gBAAgB;IAC1B,QAAQ,mBAAmB;IAC3B,gBAAgB;GACjB;GACD;IACE,UAAU,SAAS;IACnB,YAAY;IACZ,OAAO;IACP,UAAU,gBAAgB;IAC1B,QAAQ,mBAAmB;IAC3B,gBAAgB;GACjB;GACD;IACE,UAAU,SAAS;IACnB,YAAY;IACZ,OAAO;IACP,UAAU,gBAAgB;IAC1B,QAAQ,mBAAmB;IAC3B,gBAAgB;GACjB;GACD;IACE,UAAU,SAAS;IACnB,YAAY;IACZ,OAAO;IACP,UAAU,gBAAgB;IAC1B,QAAQ,mBAAmB;IAC3B,gBAAgB;GACjB;GACD;IACE,UAAU,SAAS;IACnB,UAAU,gBAAgB;IAC1B,QAAQ,mBAAmB;IAC3B,YAAY;GACb;EACF;CACF;AACF;;;;ACnDD,IAAa,sCAAb,MAA6E;CAC3E,AAAS,WAAmD;EAC1D,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,QAAQ;EACT;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;GACZ,OAAO;GACP,gBAAgB;EACjB,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACzBD,IAAa,qCAAb,MAA4E;CAC1E,AAAS,WAAkD;EACzD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,QAAQ;EACT;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;GACZ,OAAO;GACP,gBAAgB;EACjB,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACzBD,IAAa,yCAAb,MAAgF;CAC9E,AAAS,WAAsD;EAC7D,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,YAAY;GACZ,YAAY;GACZ,YAAY;EACb;EACD,SAAS,CACP;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;GACZ,OAAO;GACP,gBAAgB;EACjB,GACD;GACE,UAAU,SAAS;GACnB,UAAU,gBAAgB;GAC1B,YAAY;EACb,CACF;CACF;AACF;;;;ACzBD,IAAa,qCAAb,MAA4E;CAC1E,AAAS,WAAkD;EACzD,MAAM,cAAc;EACpB,OAAO,mBAAmB;EAC1B,MAAM;GACJ,OAAO;GACP,WAAW;GACX,OAAO;GACP,WAAW;GACX,MAAM;EACP;EACD,SAAS;GACP;IACE,UAAU,SAAS;IACnB,UAAU,gBAAgB;IAC1B,YAAY;IACZ,OAAO;IACP,gBAAgB;GACjB;GACD;IACE,UAAU,SAAS;IACnB,UAAU,eAAe;IACzB,OAAO;IACP,YAAY;GACb;GACD;IACE,UAAU,SAAS;IACnB,UAAU,gBAAgB;IAC1B,YAAY;GACb;EACF;CACF;AACF;;;;AC0BD,IAAY,0DAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACD;AAED,MAAa,iBAAiB;EAC3B,cAAc,cAAcC;EAC5B,cAAc,WAAWC;EACzB,cAAc,OAAOC;EACrB,cAAc,cAAcC;EAC5B,cAAc,cAAcC;EAC5B,cAAc,cAAcC;EAC5B,cAAc,iBAAiBC;EAC/B,cAAc,aAAaC;EAC3B,cAAc,cAAcC;EAC5B,cAAc,oBAAoBC;EAClC,cAAc,iBAAiBC;EAC/B,cAAc,cAAcC;EAC5B,cAAc,mBAAmBC;EACjC,cAAc,eAAeC;EAC7B,cAAc,eAAeC;EAC7B,cAAc,eAAeC;EAC7B,cAAc,aAAaC;EAC3B,cAAc,WAAWC;EACzB,cAAc,iBAAiBC;EAC/B,cAAc,aAAaC;EAC3B,cAAc,gBAAgBC;EAC9B,cAAc,cAAcC;EAC5B,cAAc,iBAAiBC;EAC/B,cAAc,eAAeC;EAC7B,cAAc,aAAaC;EAC3B,cAAc,cAAcC;EAC5B,cAAc,gBAAgBC;EAC9B,cAAc,mBAAmBC;EACjC,cAAc,kBAAkBC;EAChC,cAAc,sBAAsBC;EACpC,cAAc,kBAAkBC;AAClC;AAED,MAAa,qBAAqB;EAC/B,cAAc,cAAc,IAAI;EAChC,cAAc,cAAc,IAAI;EAChC,cAAc,oBAAoB,IAAI;EACtC,cAAc,iBAAiB,IAAI;EACnC,cAAc,cAAc,IAAI;EAChC,cAAc,aAAa,IAAI;EAC/B,cAAc,WAAW,IAAI;EAC7B,cAAc,iBAAiB,IAAI;EACnC,cAAc,OAAO,IAAI;EACzB,cAAc,cAAc,IAAI;EAChC,cAAc,iBAAiB,IAAI;EACnC,cAAc,cAAc,IAAI;EAChC,cAAc,mBAAmB,IAAI;EACrC,cAAc,eAAe,IAAI;EACjC,cAAc,eAAe,IAAI;EACjC,cAAc,eAAe,IAAI;EACjC,cAAc,aAAa,IAAI;EAC/B,cAAc,WAAW,IAAI;EAC7B,cAAc,aAAa,IAAI;EAC/B,cAAc,gBAAgB,IAAI;EAClC,cAAc,cAAc,IAAI;EAChC,cAAc,iBAAiB,IAAI;EACnC,cAAc,eAAe,IAAI;EACjC,cAAc,aAAa,IAAI;EAC/B,cAAc,cAAc,IAAI;EAChC,cAAc,gBAAgB,IAAI;EAClC,cAAc,mBAAmB,IAAI;EACrC,cAAc,kBAAkB,IAAI;EACpC,cAAc,sBAAsB,IAAI;EACxC,cAAc,kBAAkB,IAAI;EACpC,cAAc,cAAc,IAAI;AAClC"}
@@ -0,0 +1,30 @@
1
+ //#region rolldown:runtime
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+
23
+ //#endregion
24
+
25
+ Object.defineProperty(exports, '__toESM', {
26
+ enumerable: true,
27
+ get: function () {
28
+ return __toESM;
29
+ }
30
+ });
@@ -0,0 +1,353 @@
1
+ import { NodePropertiesList } from "@awesome-flow/core/components";
2
+ import { useUpdateNodeComputedData, useUpdateNodeData } from "@awesome-flow/core/hooks";
3
+ import { NodeContainer } from "@awesome-flow/core/layout";
4
+ import { Billow, Checkerboard, Const, Cylinders, Perlin, RidgedMulti, Spheres, Voronoi } from "libnoise-simplex-ts";
5
+ import { useCallback, useEffect, useState } from "react";
6
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
+ import { Group, NumberInput, Stack } from "@mantine/core";
8
+
9
+ //#region src/nodes/generators/noise-billow-node.tsx
10
+ function NoiseBillowNode({ id, selected, data, type }) {
11
+ const updateComputedData = useUpdateNodeComputedData();
12
+ const onPropertiesChange = useCallback((properties) => {
13
+ const module = new Billow();
14
+ Object.keys(properties).forEach((k) => module[k] = properties[k].value);
15
+ updateComputedData(id, { module });
16
+ }, [id, updateComputedData]);
17
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(NodeContainer, {
18
+ id,
19
+ selected,
20
+ data,
21
+ type,
22
+ children: /* @__PURE__ */ jsx(NodePropertiesList, {
23
+ data,
24
+ nodeId: id,
25
+ onPropertiesChange
26
+ })
27
+ }) });
28
+ }
29
+ var noise_billow_node_default = NoiseBillowNode;
30
+
31
+ //#endregion
32
+ //#region src/nodes/generators/noise-checkerboard-node.tsx
33
+ function NoiseCheckerboardNode({ id, selected, data, type }) {
34
+ const updateComputedData = useUpdateNodeComputedData();
35
+ useEffect(() => {
36
+ const module = new Checkerboard();
37
+ updateComputedData(id, { module });
38
+ }, [id, updateComputedData]);
39
+ return /* @__PURE__ */ jsx(NodeContainer, {
40
+ id,
41
+ selected,
42
+ data,
43
+ type
44
+ });
45
+ }
46
+ var noise_checkerboard_node_default = NoiseCheckerboardNode;
47
+
48
+ //#endregion
49
+ //#region src/nodes/generators/noise-const-node.tsx
50
+ function NoiseConstNode({ id, selected, data, type }) {
51
+ const [min, setMin] = useState(data.min);
52
+ const [max, setMax] = useState(data.max);
53
+ const [noise, setNoise] = useState(data.noise);
54
+ const updateNodeData = useUpdateNodeData();
55
+ const updateComputedData = useUpdateNodeComputedData();
56
+ useEffect(() => {
57
+ const module = new Const(noise);
58
+ updateNodeData(id, {
59
+ noise,
60
+ min,
61
+ max
62
+ });
63
+ updateComputedData(id, { module });
64
+ }, [
65
+ id,
66
+ noise,
67
+ min,
68
+ max,
69
+ updateNodeData,
70
+ updateComputedData
71
+ ]);
72
+ return /* @__PURE__ */ jsx(NodeContainer, {
73
+ id,
74
+ selected,
75
+ data,
76
+ type,
77
+ children: /* @__PURE__ */ jsxs(Stack, { children: [/* @__PURE__ */ jsxs(Group, { children: [/* @__PURE__ */ jsx(NumberInput, {
78
+ size: "xs",
79
+ w: 100,
80
+ value: min,
81
+ onChange: (e) => setMin(Number(e))
82
+ }), /* @__PURE__ */ jsx(NumberInput, {
83
+ size: "xs",
84
+ w: 100,
85
+ value: max,
86
+ onChange: (e) => setMax(Number(e))
87
+ })] }), /* @__PURE__ */ jsxs(Group, { children: ["noise:", /* @__PURE__ */ jsx(NumberInput, {
88
+ size: "xs",
89
+ value: noise,
90
+ onChange: (e) => setNoise(Number(e)),
91
+ max,
92
+ min,
93
+ step: .1
94
+ })] })] })
95
+ });
96
+ }
97
+ var noise_const_node_default = NoiseConstNode;
98
+
99
+ //#endregion
100
+ //#region src/nodes/generators/noise-cylinders-node.tsx
101
+ function NoiseCylindersNode({ id, selected, data, type }) {
102
+ const updateComputedData = useUpdateNodeComputedData();
103
+ const onPropertiesChange = useCallback((properties) => {
104
+ const module = new Cylinders();
105
+ Object.keys(properties).forEach((k) => module[k] = properties[k].value);
106
+ updateComputedData(id, { module });
107
+ }, [id, updateComputedData]);
108
+ return /* @__PURE__ */ jsx(NodeContainer, {
109
+ id,
110
+ selected,
111
+ data,
112
+ type,
113
+ children: /* @__PURE__ */ jsx(NodePropertiesList, {
114
+ data,
115
+ nodeId: id,
116
+ onPropertiesChange
117
+ })
118
+ });
119
+ }
120
+ var noise_cylinders_node_default = NoiseCylindersNode;
121
+
122
+ //#endregion
123
+ //#region src/nodes/generators/noise-perlin-node.tsx
124
+ function NoisePerlinNode({ id, selected, data, type }) {
125
+ const updateComputedData = useUpdateNodeComputedData();
126
+ const onPropertiesChange = useCallback((properties) => {
127
+ const module = new Perlin();
128
+ Object.keys(properties).forEach((k) => module[k] = properties[k].value);
129
+ updateComputedData(id, { module });
130
+ }, [id, updateComputedData]);
131
+ return /* @__PURE__ */ jsx(NodeContainer, {
132
+ id,
133
+ selected,
134
+ data,
135
+ type,
136
+ children: /* @__PURE__ */ jsx(NodePropertiesList, {
137
+ data,
138
+ nodeId: id,
139
+ onPropertiesChange
140
+ })
141
+ });
142
+ }
143
+ var noise_perlin_node_default = NoisePerlinNode;
144
+
145
+ //#endregion
146
+ //#region src/nodes/generators/noise-ridgedmulti-node.tsx
147
+ function NoiseRidgedMultiNode({ id, selected, data, type }) {
148
+ const updateComputedData = useUpdateNodeComputedData();
149
+ const onPropertiesChange = useCallback((properties) => {
150
+ const module = new RidgedMulti();
151
+ Object.keys(properties).forEach((k) => module[k] = properties[k].value);
152
+ updateComputedData(id, { module });
153
+ }, [id, updateComputedData]);
154
+ return /* @__PURE__ */ jsx(NodeContainer, {
155
+ id,
156
+ selected,
157
+ data,
158
+ type,
159
+ children: /* @__PURE__ */ jsx(NodePropertiesList, {
160
+ data,
161
+ nodeId: id,
162
+ onPropertiesChange
163
+ })
164
+ });
165
+ }
166
+ var noise_ridgedmulti_node_default = NoiseRidgedMultiNode;
167
+
168
+ //#endregion
169
+ //#region src/nodes/generators/noise-spheres-node.tsx
170
+ function NoiseSpheresNode({ id, selected, data, type }) {
171
+ const updateComputedData = useUpdateNodeComputedData();
172
+ const onPropertiesChange = useCallback((properties) => {
173
+ const module = new Spheres();
174
+ Object.keys(properties).forEach((k) => module[k] = properties[k].value);
175
+ updateComputedData(id, { module });
176
+ }, [id, updateComputedData]);
177
+ return /* @__PURE__ */ jsx(NodeContainer, {
178
+ id,
179
+ selected,
180
+ data,
181
+ type,
182
+ children: /* @__PURE__ */ jsx(NodePropertiesList, {
183
+ data,
184
+ nodeId: id,
185
+ onPropertiesChange
186
+ })
187
+ });
188
+ }
189
+ var noise_spheres_node_default = NoiseSpheresNode;
190
+
191
+ //#endregion
192
+ //#region src/nodes/generators/noise-voronoi-node.tsx
193
+ function NoiseVoronoiNode({ id, selected, data, type }) {
194
+ const updateComputedData = useUpdateNodeComputedData();
195
+ const onPropertiesChange = useCallback((properties) => {
196
+ const module = new Voronoi(properties.frequency.value, properties.displacement.value, properties.distance.value, properties.seed.value);
197
+ updateComputedData(id, { module });
198
+ }, [id, updateComputedData]);
199
+ return /* @__PURE__ */ jsx(NodeContainer, {
200
+ id,
201
+ selected,
202
+ data,
203
+ type,
204
+ children: /* @__PURE__ */ jsx(NodePropertiesList, {
205
+ data,
206
+ nodeId: id,
207
+ onPropertiesChange
208
+ })
209
+ });
210
+ }
211
+ var noise_voronoi_node_default = NoiseVoronoiNode;
212
+
213
+ //#endregion
214
+ //#region src/nodes/generators/position-const-node.tsx
215
+ function PositionConstNode({ id, selected, data, type }) {
216
+ const position = data.position ?? {
217
+ x: 0,
218
+ y: 0,
219
+ z: 0
220
+ };
221
+ const [x, setX] = useState(position.x);
222
+ const [y, setY] = useState(position.y);
223
+ const [z, setZ] = useState(position.z);
224
+ const updateNodeData = useUpdateNodeData();
225
+ const updateComputedData = useUpdateNodeComputedData();
226
+ useEffect(() => {
227
+ const position$1 = {
228
+ x,
229
+ y,
230
+ z
231
+ };
232
+ updateNodeData(id, { position: position$1 });
233
+ updateComputedData(id, { positions: [position$1] });
234
+ }, [
235
+ x,
236
+ y,
237
+ z,
238
+ id,
239
+ updateComputedData,
240
+ updateNodeData
241
+ ]);
242
+ return /* @__PURE__ */ jsx(NodeContainer, {
243
+ id,
244
+ selected,
245
+ data,
246
+ type,
247
+ children: /* @__PURE__ */ jsxs(Stack, { children: [
248
+ /* @__PURE__ */ jsxs(Group, { children: ["x: ", /* @__PURE__ */ jsx(NumberInput, {
249
+ size: "xs",
250
+ w: 100,
251
+ value: x,
252
+ onChange: (e) => setX(Number(e))
253
+ })] }),
254
+ /* @__PURE__ */ jsxs(Group, { children: ["y: ", /* @__PURE__ */ jsx(NumberInput, {
255
+ size: "xs",
256
+ w: 100,
257
+ value: y,
258
+ onChange: (e) => setY(Number(e))
259
+ })] }),
260
+ /* @__PURE__ */ jsxs(Group, { children: ["z: ", /* @__PURE__ */ jsx(NumberInput, {
261
+ size: "xs",
262
+ w: 100,
263
+ value: z,
264
+ onChange: (e) => setZ(Number(e))
265
+ })] })
266
+ ] })
267
+ });
268
+ }
269
+ var position_const_node_default = PositionConstNode;
270
+
271
+ //#endregion
272
+ //#region src/nodes/generators/position-grid-node.tsx
273
+ function PositionGridNode({ id, selected, data, type }) {
274
+ const [x, setX] = useState(data.center?.x);
275
+ const [y, setY] = useState(data.center?.y);
276
+ const [z, setZ] = useState(data.center?.z);
277
+ const [radius, setRadius] = useState(data.radius);
278
+ const updateNodeData = useUpdateNodeData();
279
+ const updateComputedData = useUpdateNodeComputedData();
280
+ useEffect(() => {
281
+ updateNodeData(id, { center: {
282
+ x,
283
+ y,
284
+ z
285
+ } });
286
+ }, [
287
+ x,
288
+ y,
289
+ z,
290
+ id,
291
+ updateNodeData
292
+ ]);
293
+ useEffect(() => {
294
+ updateNodeData(id, { radius });
295
+ }, [
296
+ radius,
297
+ id,
298
+ updateNodeData
299
+ ]);
300
+ useEffect(() => {
301
+ const positions = [];
302
+ for (let i = -radius; i < radius; i++) for (let j = -radius; j < radius; j++) positions.push({
303
+ x: x + i,
304
+ y: y + j,
305
+ z
306
+ });
307
+ updateComputedData(id, { positions });
308
+ }, [
309
+ x,
310
+ y,
311
+ z,
312
+ radius,
313
+ id,
314
+ updateComputedData
315
+ ]);
316
+ return /* @__PURE__ */ jsx(NodeContainer, {
317
+ id,
318
+ selected,
319
+ data,
320
+ type,
321
+ children: /* @__PURE__ */ jsxs(Stack, { children: [
322
+ /* @__PURE__ */ jsxs(Group, { children: ["x: ", /* @__PURE__ */ jsx(NumberInput, {
323
+ size: "xs",
324
+ w: 100,
325
+ value: x,
326
+ onChange: (e) => setX(Number(e))
327
+ })] }),
328
+ /* @__PURE__ */ jsxs(Group, { children: ["y: ", /* @__PURE__ */ jsx(NumberInput, {
329
+ size: "xs",
330
+ w: 100,
331
+ value: y,
332
+ onChange: (e) => setY(Number(e))
333
+ })] }),
334
+ /* @__PURE__ */ jsxs(Group, { children: ["z: ", /* @__PURE__ */ jsx(NumberInput, {
335
+ size: "xs",
336
+ w: 100,
337
+ value: z,
338
+ onChange: (e) => setZ(Number(e))
339
+ })] }),
340
+ /* @__PURE__ */ jsxs(Group, { children: ["r: ", /* @__PURE__ */ jsx(NumberInput, {
341
+ size: "xs",
342
+ w: 100,
343
+ value: radius,
344
+ onChange: (e) => setRadius(Number(e))
345
+ })] })
346
+ ] })
347
+ });
348
+ }
349
+ var position_grid_node_default = PositionGridNode;
350
+
351
+ //#endregion
352
+ export { noise_billow_node_default, noise_checkerboard_node_default, noise_const_node_default, noise_cylinders_node_default, noise_perlin_node_default, noise_ridgedmulti_node_default, noise_spheres_node_default, noise_voronoi_node_default, position_const_node_default, position_grid_node_default };
353
+ //# sourceMappingURL=generators-BzkwG_6g.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators-BzkwG_6g.js","names":["properties: Record<string, PropertyValue>","properties: Record<string, PropertyValue>","properties: Record<string, PropertyValue>","properties: Record<string, PropertyValue>","properties: Record<string, PropertyValue>","properties: Record<string, PropertyValue<number & boolean>>","position","positions: Position[]"],"sources":["../src/nodes/generators/noise-billow-node.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-spheres-node.tsx","../src/nodes/generators/noise-voronoi-node.tsx","../src/nodes/generators/position-const-node.tsx","../src/nodes/generators/position-grid-node.tsx"],"sourcesContent":["import { PropertyValue } from '@awesome-flow/core/abstract';\nimport { NodePropertiesList } from '@awesome-flow/core/components';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { Billow } from 'libnoise-simplex-ts';\nimport { useCallback } from 'react';\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 onPropertiesChange = useCallback(\n (properties: Record<string, PropertyValue>) => {\n const module = new Billow();\n\n Object.keys(properties).forEach((k) => (module[k] = properties[k].value));\n\n updateComputedData(id, { module });\n },\n [id, updateComputedData]\n );\n\n return (\n <>\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertiesList data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n </NodeContainer>\n </>\n );\n}\n\nexport default NoiseBillowNode;\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { Checkerboard } from 'libnoise-simplex-ts';\nimport { useEffect } from 'react';\nimport { ComputedModuleData } from '../../abstract/node-props';\n\nfunction NoiseCheckerboardNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n useEffect(() => {\n const module = new Checkerboard();\n updateComputedData(id, { module });\n }, [id, updateComputedData]);\n\n return <NodeContainer id={id} selected={selected} data={data} type={type} />;\n}\n\nexport default NoiseCheckerboardNode;\n","import { useUpdateNodeComputedData, useUpdateNodeData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { Const } from 'libnoise-simplex-ts';\nimport { useEffect, useState } from 'react';\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 useEffect(() => {\n const module = new Const(noise);\n\n updateNodeData(id, { noise, min, max });\n updateComputedData(id, { module });\n }, [id, noise, min, max, updateNodeData, 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 { PropertyValue } from '@awesome-flow/core/abstract';\nimport { NodePropertiesList } from '@awesome-flow/core/components';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { Cylinders } from 'libnoise-simplex-ts';\nimport { useCallback } from 'react';\nimport { ComputedModuleData, NodeCylindersNoiseData } from '../../abstract/node-props';\n\nfunction NoiseCylindersNode({ id, selected, data, type }: NodeProps<Node<NodeCylindersNoiseData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const onPropertiesChange = useCallback(\n (properties: Record<string, PropertyValue>) => {\n const module = new Cylinders();\n\n Object.keys(properties).forEach((k) => (module[k] = properties[k].value));\n\n updateComputedData(id, { module });\n },\n [id, updateComputedData]\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertiesList data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n </NodeContainer>\n );\n}\n\nexport default NoiseCylindersNode;\n","import { PropertyValue } from '@awesome-flow/core/abstract';\nimport { NodePropertiesList } from '@awesome-flow/core/components';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { Perlin } from 'libnoise-simplex-ts';\nimport { useCallback } from 'react';\nimport { ComputedModuleData, NodeFBMNoiseData } from '../../abstract/node-props';\n\nfunction NoisePerlinNode({ id, selected, data, type }: NodeProps<Node<NodeFBMNoiseData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const onPropertiesChange = useCallback(\n (properties: Record<string, PropertyValue>) => {\n const module = new Perlin();\n\n Object.keys(properties).forEach((k) => (module[k] = properties[k].value));\n\n updateComputedData(id, { module });\n },\n [id, updateComputedData]\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertiesList data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n </NodeContainer>\n );\n}\n\nexport default NoisePerlinNode;\n","import { PropertyValue } from '@awesome-flow/core/abstract';\nimport { NodePropertiesList } from '@awesome-flow/core/components';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { RidgedMulti } from 'libnoise-simplex-ts';\nimport { useCallback } from 'react';\nimport { ComputedModuleData, NodeRidgedNoiseData } from '../../abstract/node-props';\n\nfunction NoiseRidgedMultiNode({ id, selected, data, type }: NodeProps<Node<NodeRidgedNoiseData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const onPropertiesChange = useCallback(\n (properties: Record<string, PropertyValue>) => {\n const module = new RidgedMulti();\n Object.keys(properties).forEach((k) => (module[k] = properties[k].value));\n updateComputedData(id, { module });\n },\n [id, updateComputedData]\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertiesList data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n </NodeContainer>\n );\n}\n\nexport default NoiseRidgedMultiNode;\n","import { PropertyValue } from '@awesome-flow/core/abstract';\nimport { NodePropertiesList } from '@awesome-flow/core/components';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { Spheres } from 'libnoise-simplex-ts';\nimport { useCallback } from 'react';\nimport { ComputedModuleData, NodeSpheresNoiseData } from '../../abstract/node-props';\n\nfunction NoiseSpheresNode({ id, selected, data, type }: NodeProps<Node<NodeSpheresNoiseData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const onPropertiesChange = useCallback(\n (properties: Record<string, PropertyValue>) => {\n const module = new Spheres();\n\n Object.keys(properties).forEach((k) => (module[k] = properties[k].value));\n updateComputedData(id, { module });\n },\n [id, updateComputedData]\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertiesList data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n </NodeContainer>\n );\n}\n\nexport default NoiseSpheresNode;\n","import { PropertyValue } from '@awesome-flow/core/abstract';\nimport { NodePropertiesList } from '@awesome-flow/core/components';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { Voronoi } from 'libnoise-simplex-ts';\nimport { useCallback } from 'react';\nimport { ComputedModuleData, NodeVoronoiNoiseData } from '../../abstract/node-props';\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 [id, updateComputedData]\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertiesList data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n </NodeContainer>\n );\n}\n\nexport default NoiseVoronoiNode;\n","import { useUpdateNodeComputedData, useUpdateNodeData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useState } from 'react';\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, id, updateComputedData, updateNodeData]);\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 { useUpdateNodeComputedData, useUpdateNodeData } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useState } from 'react';\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, id, updateNodeData]);\n\n useEffect(() => {\n updateNodeData(id, {\n radius\n });\n }, [radius, id, updateNodeData]);\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, id, updateComputedData]);\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"],"mappings":"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"}