@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.
- package/dist/abstract/index.cjs +16 -29
- package/dist/abstract/index.d.cts +131 -121
- package/dist/abstract/index.d.cts.map +1 -0
- package/dist/abstract/index.d.ts +131 -121
- package/dist/abstract/index.d.ts.map +1 -0
- package/dist/abstract/index.js +8 -29
- package/dist/abstract-Db8fFoLp.cjs +1423 -0
- package/dist/abstract-Db8fFoLp.cjs.map +1 -0
- package/dist/abstract-Dhf_tSuO.js +1177 -0
- package/dist/abstract-Dhf_tSuO.js.map +1 -0
- package/dist/chunk-CUT6urMc.cjs +30 -0
- package/dist/generators-BzkwG_6g.js +353 -0
- package/dist/generators-BzkwG_6g.js.map +1 -0
- package/dist/generators-D3RjZdMN.cjs +413 -0
- package/dist/generators-D3RjZdMN.cjs.map +1 -0
- package/dist/groups-BIS2AF5M.cjs +32 -0
- package/dist/groups-BIS2AF5M.cjs.map +1 -0
- package/dist/groups-CH_lk8Aw.js +26 -0
- package/dist/groups-CH_lk8Aw.js.map +1 -0
- package/dist/index-B5F3AfVc.d.ts +1 -0
- package/dist/index-B9liqMk7.d.cts +106 -0
- package/dist/index-B9liqMk7.d.cts.map +1 -0
- package/dist/index-BLREDRDJ.d.cts +1 -0
- package/dist/index-BQGb02a-.d.cts +1 -0
- package/dist/index-Be7jjS77.d.ts +1 -0
- package/dist/index-C2UIRuQU.d.ts +56 -0
- package/dist/index-C2UIRuQU.d.ts.map +1 -0
- package/dist/index-C7p7kRl6.d.ts +106 -0
- package/dist/index-C7p7kRl6.d.ts.map +1 -0
- package/dist/index-CLcwj8U0.d.ts +1 -0
- package/dist/index-CUPkUUOR.d.ts +1 -0
- package/dist/index-CdUm_2Oy.d.cts +45 -0
- package/dist/index-CdUm_2Oy.d.cts.map +1 -0
- package/dist/index-CnGot0Ls.d.ts +26 -0
- package/dist/index-CnGot0Ls.d.ts.map +1 -0
- package/dist/index-CtCMUyZA.d.cts +1 -0
- package/dist/index-DAwMsCZ3.d.ts +1 -0
- package/dist/index-DHPGVj1Q.d.cts +56 -0
- package/dist/index-DHPGVj1Q.d.cts.map +1 -0
- package/dist/index-DOvrmvAP.d.cts +1 -0
- package/dist/index-Dh6J9gb5.d.cts +1 -0
- package/dist/index-Dpmi5zcN.d.cts +1 -0
- package/dist/index-DsrVbQfJ.d.cts +26 -0
- package/dist/index-DsrVbQfJ.d.cts.map +1 -0
- package/dist/index-Dun4VhYj.d.ts +10 -0
- package/dist/index-Dun4VhYj.d.ts.map +1 -0
- package/dist/index-Dyw_KDIi.d.ts +45 -0
- package/dist/index-Dyw_KDIi.d.ts.map +1 -0
- package/dist/index-I2m6W13H.d.ts +1 -0
- package/dist/index-QAtBiMxG.d.cts +1 -0
- package/dist/index-XpRnF8C9.d.cts +98 -0
- package/dist/index-XpRnF8C9.d.cts.map +1 -0
- package/dist/index-b3KxQSTX.d.ts +98 -0
- package/dist/index-b3KxQSTX.d.ts.map +1 -0
- package/dist/index-kr8Wk7v5.d.ts +1 -0
- package/dist/index-uyclP-_e.d.cts +10 -0
- package/dist/index-uyclP-_e.d.cts.map +1 -0
- package/dist/modifiers-DU7AkD-K.cjs +545 -0
- package/dist/modifiers-DU7AkD-K.cjs.map +1 -0
- package/dist/modifiers-MSA4z6Gq.js +479 -0
- package/dist/modifiers-MSA4z6Gq.js.map +1 -0
- package/dist/module-group-template-evi7UU-G.d.ts +12 -0
- package/dist/module-group-template-evi7UU-G.d.ts.map +1 -0
- package/dist/module-group-template-hN1W1MZD.d.cts +12 -0
- package/dist/module-group-template-hN1W1MZD.d.cts.map +1 -0
- package/dist/modules/index.cjs +2 -5
- package/dist/modules/index.d.cts +10 -5
- package/dist/modules/index.d.cts.map +1 -0
- package/dist/modules/index.d.ts +10 -5
- package/dist/modules/index.d.ts.map +1 -0
- package/dist/modules/index.js +3 -6
- package/dist/node-props-76LXd76e.d.ts +141 -0
- package/dist/node-props-76LXd76e.d.ts.map +1 -0
- package/dist/node-props-D-fSg180.d.cts +141 -0
- package/dist/node-props-D-fSg180.d.cts.map +1 -0
- package/dist/nodes/generators/index.cjs +12 -24
- package/dist/nodes/generators/index.d.cts +3 -27
- package/dist/nodes/generators/index.d.ts +3 -27
- package/dist/nodes/generators/index.js +3 -24
- package/dist/nodes/groups/index.cjs +2 -5
- package/dist/nodes/groups/index.d.cts +2 -7
- package/dist/nodes/groups/index.d.ts +2 -7
- package/dist/nodes/groups/index.js +3 -6
- package/dist/nodes/index.cjs +38 -75
- package/dist/nodes/index.d.cts +9 -13
- package/dist/nodes/index.d.ts +9 -13
- package/dist/nodes/index.js +8 -75
- package/dist/nodes/modifiers/index.cjs +12 -23
- package/dist/nodes/modifiers/index.d.cts +3 -12
- package/dist/nodes/modifiers/index.d.ts +3 -12
- package/dist/nodes/modifiers/index.js +4 -23
- package/dist/nodes/output/index.cjs +11 -17
- package/dist/nodes/output/index.d.cts +2 -13
- package/dist/nodes/output/index.d.ts +2 -13
- package/dist/nodes/output/index.js +8 -17
- package/dist/nodes/selectors/index.cjs +9 -13
- package/dist/nodes/selectors/index.d.cts +3 -11
- package/dist/nodes/selectors/index.d.ts +3 -11
- package/dist/nodes/selectors/index.js +8 -13
- package/dist/nodes/transformers/index.cjs +6 -13
- package/dist/nodes/transformers/index.d.cts +3 -17
- package/dist/nodes/transformers/index.d.ts +3 -17
- package/dist/nodes/transformers/index.js +3 -14
- package/dist/noise-select-template-BIc5lJ3B.d.ts +20 -0
- package/dist/noise-select-template-BIc5lJ3B.d.ts.map +1 -0
- package/dist/noise-select-template-DCaVwZ3-.d.cts +20 -0
- package/dist/noise-select-template-DCaVwZ3-.d.cts.map +1 -0
- package/dist/noise-terrace-template-0WFJalF_.d.cts +69 -0
- package/dist/noise-terrace-template-0WFJalF_.d.cts.map +1 -0
- package/dist/noise-terrace-template-li40jZuF.d.ts +69 -0
- package/dist/noise-terrace-template-li40jZuF.d.ts.map +1 -0
- package/dist/noise-turbulence-template-BhxPzE9y.d.ts +68 -0
- package/dist/noise-turbulence-template-BhxPzE9y.d.ts.map +1 -0
- package/dist/noise-turbulence-template-D1wvZo6-.d.cts +68 -0
- package/dist/noise-turbulence-template-D1wvZo6-.d.cts.map +1 -0
- package/dist/normalize-noise-module-CTxqByn9.js +20 -0
- package/dist/normalize-noise-module-CTxqByn9.js.map +1 -0
- package/dist/normalize-noise-module-U3fMmZRj.cjs +26 -0
- package/dist/normalize-noise-module-U3fMmZRj.cjs.map +1 -0
- package/dist/output-CsgQ-PfN.js +0 -0
- package/dist/output-DhHW36T8.cjs +0 -0
- package/dist/position-grid-template-B7YMhe83.d.cts +76 -0
- package/dist/position-grid-template-B7YMhe83.d.cts.map +1 -0
- package/dist/position-grid-template-QuIcXmat.d.ts +76 -0
- package/dist/position-grid-template-QuIcXmat.d.ts.map +1 -0
- package/dist/position-logger-template-Bj6c2m8v.d.ts +33 -0
- package/dist/position-logger-template-Bj6c2m8v.d.ts.map +1 -0
- package/dist/position-logger-template-DmcBLwwL.d.cts +33 -0
- package/dist/position-logger-template-DmcBLwwL.d.cts.map +1 -0
- package/dist/selectors-DOtoPc8O.cjs +0 -0
- package/dist/selectors-DPitHA56.js +0 -0
- package/dist/templates/generators/index.cjs +18 -30
- package/dist/templates/generators/index.d.cts +4 -45
- package/dist/templates/generators/index.d.ts +4 -45
- package/dist/templates/generators/index.js +9 -30
- package/dist/templates/groups/index.cjs +9 -12
- package/dist/templates/groups/index.d.cts +3 -7
- package/dist/templates/groups/index.d.ts +3 -7
- package/dist/templates/groups/index.js +9 -12
- package/dist/templates/index.cjs +44 -77
- package/dist/templates/index.d.cts +14 -9
- package/dist/templates/index.d.ts +14 -9
- package/dist/templates/index.js +14 -77
- package/dist/templates/modifiers/index.cjs +17 -28
- package/dist/templates/modifiers/index.d.cts +4 -41
- package/dist/templates/modifiers/index.d.ts +4 -41
- package/dist/templates/modifiers/index.js +9 -28
- package/dist/templates/output/index.cjs +12 -18
- package/dist/templates/output/index.d.cts +3 -19
- package/dist/templates/output/index.d.ts +3 -19
- package/dist/templates/output/index.js +9 -18
- package/dist/templates/selectors/index.cjs +10 -14
- package/dist/templates/selectors/index.d.cts +4 -13
- package/dist/templates/selectors/index.d.ts +4 -13
- package/dist/templates/selectors/index.js +9 -14
- package/dist/templates/transformers/index.cjs +13 -20
- package/dist/templates/transformers/index.d.cts +4 -4
- package/dist/templates/transformers/index.d.ts +4 -4
- package/dist/templates/transformers/index.js +9 -20
- package/dist/transformers-C-NV_u9j.cjs +324 -0
- package/dist/transformers-C-NV_u9j.cjs.map +1 -0
- package/dist/transformers-CbfR4wDy.js +0 -0
- package/dist/transformers-Cpxm1ER8.js +276 -0
- package/dist/transformers-Cpxm1ER8.js.map +1 -0
- package/dist/transformers-iRDXBonP.cjs +0 -0
- package/package.json +14 -15
- package/dist/chunk-36USJJC4.cjs +0 -576
- package/dist/chunk-4PQ4USYV.cjs +0 -1
- package/dist/chunk-DQE5NXY7.cjs +0 -911
- package/dist/chunk-FFQRP23R.cjs +0 -1
- package/dist/chunk-FMJZTXJQ.js +0 -576
- package/dist/chunk-JACBT4MS.cjs +0 -1
- package/dist/chunk-LKDSXT7I.cjs +0 -896
- package/dist/chunk-M26CSOHC.js +0 -911
- package/dist/chunk-N6YNJKLS.cjs +0 -1
- package/dist/chunk-NUA3VGOA.js +0 -896
- package/dist/chunk-OLJKWO2H.cjs +0 -1591
- package/dist/chunk-Q5FVGKKM.cjs +0 -1
- package/dist/chunk-R6TU3SBX.js +0 -49
- package/dist/chunk-SGHEOOLW.js +0 -19
- package/dist/chunk-UNMRBZ5X.cjs +0 -19
- package/dist/chunk-W4T6Q7A5.js +0 -1591
- package/dist/chunk-WOJTKQKO.cjs +0 -1
- package/dist/chunk-XC7VF5YC.cjs +0 -49
- package/dist/index-BZr1EROK.d.cts +0 -49
- package/dist/index-DzD3jbPF.d.ts +0 -49
- package/dist/node-props-D8SnrgWa.d.cts +0 -137
- package/dist/node-props-D8SnrgWa.d.ts +0 -137
- package/dist/noise-terrace-node-D2ezdTnC.d.cts +0 -22
- package/dist/noise-terrace-node-DW81ZQk6.d.ts +0 -22
- /package/dist/{chunk-2Y22M2Y4.js → generators-CEKtVh81.cjs} +0 -0
- /package/dist/{chunk-5ELMFIRV.js → generators-DUbGjGwn.js} +0 -0
- /package/dist/{chunk-RVWCBH7K.js → groups-7QhtZ7S3.js} +0 -0
- /package/dist/{chunk-SD3T3LFY.js → groups-_x04PMtP.cjs} +0 -0
- /package/dist/{chunk-TOYKGWYO.js → modifiers-BFuezug6.js} +0 -0
- /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":"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"}
|
|
@@ -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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"}
|