@awesome-flow/noise 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abstract/index.cjs +42 -42
- package/dist/abstract/index.js +59 -54
- package/dist/modules/index.cjs +0 -1
- package/dist/modules/index.js +0 -1
- package/dist/nodes/generators/index.cjs +0 -1
- package/dist/nodes/generators/index.js +0 -1
- package/dist/nodes/groups/index.cjs +2 -5
- package/dist/nodes/groups/index.js +9 -7
- package/dist/nodes/index.cjs +68 -68
- package/dist/nodes/index.js +59 -54
- package/dist/nodes/modifiers/index.cjs +40 -38
- package/dist/nodes/modifiers/index.js +50 -48
- package/dist/nodes/output/index.cjs +0 -2
- package/dist/nodes/output/index.js +7 -4
- package/dist/nodes/selectors/index.cjs +0 -2
- package/dist/nodes/selectors/index.js +7 -4
- package/dist/nodes/transformers/index.cjs +0 -1
- package/dist/nodes/transformers/index.js +0 -1
- package/dist/templates/generators/index.cjs +2 -4
- package/dist/templates/generators/index.js +7 -4
- package/dist/templates/groups/index.cjs +2 -4
- package/dist/templates/groups/index.js +7 -4
- package/dist/templates/index.cjs +2 -4
- package/dist/templates/index.js +7 -4
- package/dist/templates/modifiers/index.cjs +0 -2
- package/dist/templates/modifiers/index.js +7 -4
- package/dist/templates/output/index.cjs +0 -2
- package/dist/templates/output/index.js +7 -4
- package/dist/templates/selectors/index.cjs +0 -2
- package/dist/templates/selectors/index.js +7 -4
- package/dist/templates/transformers/index.cjs +0 -2
- package/dist/templates/transformers/index.js +7 -4
- package/package.json +3 -3
- package/dist/abstract/index.cjs.map +0 -1
- package/dist/abstract/index.js.map +0 -1
- package/dist/modules/index.cjs.map +0 -1
- package/dist/modules/index.js.map +0 -1
- package/dist/nodes/generators/index.cjs.map +0 -1
- package/dist/nodes/generators/index.js.map +0 -1
- package/dist/nodes/groups/index.cjs.map +0 -1
- package/dist/nodes/groups/index.js.map +0 -1
- package/dist/nodes/index.cjs.map +0 -1
- package/dist/nodes/index.js.map +0 -1
- package/dist/nodes/modifiers/index.cjs.map +0 -1
- package/dist/nodes/modifiers/index.js.map +0 -1
- package/dist/nodes/output/index.cjs.map +0 -1
- package/dist/nodes/output/index.js.map +0 -1
- package/dist/nodes/selectors/index.cjs.map +0 -1
- package/dist/nodes/selectors/index.js.map +0 -1
- package/dist/nodes/transformers/index.cjs.map +0 -1
- package/dist/nodes/transformers/index.js.map +0 -1
- package/dist/templates/generators/index.cjs.map +0 -1
- package/dist/templates/generators/index.js.map +0 -1
- package/dist/templates/groups/index.cjs.map +0 -1
- package/dist/templates/groups/index.js.map +0 -1
- package/dist/templates/index.cjs.map +0 -1
- package/dist/templates/index.js.map +0 -1
- package/dist/templates/modifiers/index.cjs.map +0 -1
- package/dist/templates/modifiers/index.js.map +0 -1
- package/dist/templates/output/index.cjs.map +0 -1
- package/dist/templates/output/index.js.map +0 -1
- package/dist/templates/selectors/index.cjs.map +0 -1
- package/dist/templates/selectors/index.js.map +0 -1
- package/dist/templates/transformers/index.cjs.map +0 -1
- package/dist/templates/transformers/index.js.map +0 -1
package/dist/nodes/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/fast-deep-equal/index.js","../../src/nodes/index.ts","../../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-simplex-node.tsx","../../src/modules/simplex-module.ts","../../src/nodes/generators/noise-spheres-node.tsx","../../src/nodes/generators/noise-voronoi-node.tsx","../../src/nodes/generators/position-const-node.tsx","../../src/nodes/generators/position-grid-node.tsx","../../src/nodes/groups/module-group-node.tsx","../../src/nodes/modifiers/noise-abs-node.tsx","../../src/nodes/modifiers/noise-clamp-node.tsx","../../src/nodes/modifiers/noise-combine-node.tsx","../../src/abstract/operations.ts","../../src/nodes/modifiers/noise-curve-node.tsx","../../../../node_modules/@mantine/form/src/actions/actions.ts","../../../../node_modules/@mantine/form/src/get-input-on-change/get-input-on-change.ts","../../../../node_modules/@mantine/form/src/hooks/use-form-errors/filter-errors/filter-errors.ts","../../../../node_modules/@mantine/form/src/hooks/use-form-errors/use-form-errors.ts","../../../../node_modules/@mantine/form/src/lists/clear-list-state.ts","../../../../node_modules/@mantine/form/src/lists/change-error-indices.ts","../../../../node_modules/@mantine/form/src/lists/reorder-errors.ts","../../../../node_modules/klona/full/index.mjs","../../../../node_modules/@mantine/form/src/paths/get-splitted-path.ts","../../../../node_modules/@mantine/form/src/paths/get-path.ts","../../../../node_modules/@mantine/form/src/paths/set-path.ts","../../../../node_modules/@mantine/form/src/paths/reorder-path.ts","../../../../node_modules/@mantine/form/src/paths/insert-path.ts","../../../../node_modules/@mantine/form/src/paths/remove-path.ts","../../../../node_modules/@mantine/form/src/hooks/use-form-list/use-form-list.ts","../../../../node_modules/@mantine/form/src/get-status/get-status.ts","../../../../node_modules/@mantine/form/src/hooks/use-form-status/use-form-status.ts","../../../../node_modules/@mantine/form/src/hooks/use-form-values/use-form-values.ts","../../../../node_modules/@mantine/form/src/hooks/use-form-watch/use-form-watch.ts","../../../../node_modules/@mantine/form/src/paths/get-data-path.ts","../../../../node_modules/@mantine/form/src/validate/validate-values.ts","../../../../node_modules/@mantine/form/src/validate/validate-field-value.ts","../../../../node_modules/@mantine/form/src/form-index.ts","../../../../node_modules/@mantine/form/src/validate/should-validate-on-change.ts","../../../../node_modules/@mantine/form/src/use-form.ts","../../src/nodes/modifiers/noise-exponent-node.tsx","../../src/nodes/modifiers/noise-invert-node.tsx","../../src/nodes/modifiers/noise-normalize-node.tsx","../../src/modules/normalize-noise-module.ts","../../src/nodes/modifiers/noise-scale-bias-node.tsx","../../src/nodes/modifiers/noise-terrace-node.tsx","../../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/nodes/transformers/noise-displace-node.tsx","../../src/nodes/transformers/noise-rotate-point-node.tsx","../../src/nodes/transformers/noise-scale-point-node.tsx","../../src/nodes/transformers/noise-translate-point-node.tsx","../../src/nodes/transformers/noise-turbulence-node .tsx","../../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-simplex-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/modifiers/noise-normalize-template.ts","../../src/templates/output/noise-logger-template.ts","../../src/templates/output/noise-raw-texture-template.ts","../../src/templates/output/position-logger-template.ts","../../src/templates/modifiers/noise-combine-template.ts","../../src/templates/modifiers/noise-clamp-template.ts","../../src/templates/modifiers/noise-abs-template.ts","../../src/templates/output/noise-output-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-scalebias-template.ts","../../src/templates/modifiers/noise-terrace-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/templates/generators/noise-billow-template.ts","../../src/templates/groups/module-group-template.ts","../../src/abstract/node-types.ts"],"sourcesContent":["'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","export * from './generators';\nexport * from './groups';\nexport * from './modifiers';\nexport * from './output';\nexport * from './selectors';\nexport * from './transformers';\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useMemo } from 'react';\nimport { Billow } from 'libnoise-ts/module/generator';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { PropertyValue } from '@awesome-flow/core/abstract';\nimport { NodePropertyVariables } from '@awesome-flow/core/components';\nimport { ComputedModuleData, NodeFBMNoiseData } from '../../abstract/node-props';\n\nfunction NoiseBillowNode({ id, selected, data, type }: NodeProps<Node<NodeFBMNoiseData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const module = useMemo(() => new Billow(), []);\n\n const onPropertiesChange = useCallback(\n (properties: Record<string, PropertyValue>) => {\n Object.keys(properties).forEach((k) => {\n module[k] = properties[k].value;\n });\n\n updateComputedData(id, { module });\n },\n [id, module, updateComputedData]\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertyVariables data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseBillowNode;\n","import { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useMemo } from 'react';\nimport { Checkerboard } from 'libnoise-ts/module/generator';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { ComputedModuleData } from '../../abstract/node-props';\n\nfunction NoiseCheckerboardNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n const module = useMemo(() => new Checkerboard(), []);\n\n useEffect(() => {\n updateComputedData(id, { module });\n }, [id, module, updateComputedData]);\n\n return <NodeContainer id={id} selected={selected} data={data} type={type} />;\n}\n\nexport default NoiseCheckerboardNode;\n","import { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport { useUpdateNodeComputedData, useUpdateNodeData } from '@awesome-flow/core/hooks';\nimport { Const } from 'libnoise-ts/module/generator';\nimport { ComputedModuleData, NodeConstNoiseData } from '../../abstract/node-props';\n\nfunction NoiseConstNode({ id, selected, data, type }: NodeProps<Node<NodeConstNoiseData>>) {\n const [min, setMin] = useState(data.min);\n const [max, setMax] = useState(data.max);\n const [noise, setNoise] = useState(data.noise);\n\n const updateNodeData = useUpdateNodeData<NodeConstNoiseData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const module = useMemo(() => new Const(), []);\n\n useEffect(() => {\n module.value = noise;\n\n updateNodeData(id, { noise, min, max });\n updateComputedData(id, { module });\n }, [noise, min, max, module, updateNodeData, id, updateComputedData]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n <NumberInput size=\"xs\" w={100} value={min} onChange={(e) => setMin(Number(e))} />\n <NumberInput size=\"xs\" w={100} value={max} onChange={(e) => setMax(Number(e))} />\n </Group>\n <Group>\n noise:\n <NumberInput\n size=\"xs\"\n value={noise}\n onChange={(e) => setNoise(Number(e))}\n max={max}\n min={min}\n step={0.1}\n />\n </Group>\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default NoiseConstNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useMemo } from 'react';\nimport { Cylinders } from 'libnoise-ts/module/generator';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { PropertyValue } from '@awesome-flow/core/abstract';\nimport { NodePropertyVariables } from '@awesome-flow/core/components';\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 module = useMemo(() => new Cylinders(), []);\n\n const onPropertiesChange = useCallback(\n (properties: Record<string, PropertyValue>) => {\n Object.keys(properties).forEach((k) => {\n module[k] = properties[k].value;\n });\n updateComputedData(id, { module });\n },\n\n [id, module, updateComputedData]\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertyVariables data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseCylindersNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useMemo } from 'react';\nimport { Perlin } from 'libnoise-ts/module/generator';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { NodePropertyVariables } from '@awesome-flow/core/components';\nimport { PropertyValue } from '@awesome-flow/core/abstract';\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 module = useMemo(() => new Perlin(), []);\n\n const onPropertiesChange = useCallback(\n (properties: Record<string, PropertyValue>) => {\n Object.keys(properties).forEach((k) => {\n module[k] = properties[k].value;\n });\n\n updateComputedData(id, { module });\n },\n [id, module, updateComputedData]\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertyVariables data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoisePerlinNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useMemo } from 'react';\nimport { RidgedMulti } from 'libnoise-ts/module/generator';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { PropertyValue } from '@awesome-flow/core/abstract';\nimport { NodePropertyVariables } from '@awesome-flow/core/components';\nimport { ComputedModuleData, NodeRidgedNoiseData } from '../../abstract/node-props';\n\nfunction NoiseRidgedMultiNode({ id, selected, data, type }: NodeProps<Node<NodeRidgedNoiseData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n const module = useMemo(() => new RidgedMulti(), []);\n\n const onPropertiesChange = useCallback((properties: Record<string, PropertyValue>) => {\n Object.keys(properties).forEach((k) => (module[k] = properties[k].value));\n updateComputedData(id, { module });\n }, []);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertyVariables data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseRidgedMultiNode;\n","import { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useMemo } from 'react';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { ComputedModuleData } from '../../abstract/node-props';\nimport { SimplexModule } from '../../modules/simplex-module';\n\nfunction NoiseSimplexNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const module = useMemo(() => new SimplexModule(), []);\n\n useEffect(() => {\n updateComputedData(id, { module });\n }, []);\n\n return <NodeContainer id={id} selected={selected} data={data} type={type} />;\n}\n\nexport default NoiseSimplexNode;\n","import Module from 'libnoise-ts/module/Module';\nimport { NoiseFunction3D, RandomFn, createNoise3D } from 'simplex-noise';\n\nexport class SimplexModule extends Module {\n private noise: NoiseFunction3D;\n\n constructor(random?: RandomFn) {\n super();\n this.noise = createNoise3D(random);\n }\n\n getValue(x: number, y: number, z: number): number {\n return this.noise(x, y, z);\n }\n}\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useMemo } from 'react';\nimport { Spheres } from 'libnoise-ts/module/generator';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { PropertyValue } from '@awesome-flow/core/abstract';\nimport { NodePropertyVariables } from '@awesome-flow/core/components';\nimport { ComputedModuleData, NodeSpheresNoiseData } from '../../abstract/node-props';\n\nfunction NoiseSpheresNode({ id, selected, data, type }: NodeProps<Node<NodeSpheresNoiseData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n const module = useMemo(() => new Spheres(), []);\n\n const onPropertiesChange = useCallback((properties: Record<string, PropertyValue>) => {\n Object.keys(properties).forEach((k) => (module[k] = properties[k].value));\n updateComputedData(id, { module });\n }, []);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertyVariables data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseSpheresNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback } from 'react';\nimport { Voronoi } from 'libnoise-ts/module/generator';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { PropertyValue } from '@awesome-flow/core/abstract';\nimport { NodePropertyVariables } from '@awesome-flow/core/components';\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 []\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertyVariables data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseVoronoiNode;\n","import { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useState } from 'react';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport { useUpdateNodeComputedData, useUpdateNodeData } from '@awesome-flow/core/hooks';\nimport { ComputedPositionsData, NodePositionData } from '../../abstract/node-props';\n\nfunction PositionConstNode({ id, selected, data, type }: NodeProps<Node<NodePositionData>>) {\n const position = data.position ?? { x: 0, y: 0, z: 0 };\n\n const [x, setX] = useState(position.x);\n const [y, setY] = useState(position.y);\n const [z, setZ] = useState(position.z);\n\n const updateNodeData = useUpdateNodeData<NodePositionData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedPositionsData>();\n\n useEffect(() => {\n const position = { x, y, z };\n\n updateNodeData(id, {\n position,\n });\n\n updateComputedData(id, {\n positions: [position],\n });\n }, [x, y, z]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n x: <NumberInput size=\"xs\" w={100} value={x} onChange={(e) => setX(Number(e))} />\n </Group>\n <Group>\n y: <NumberInput size=\"xs\" w={100} value={y} onChange={(e) => setY(Number(e))} />\n </Group>\n <Group>\n z: <NumberInput size=\"xs\" w={100} value={z} onChange={(e) => setZ(Number(e))} />\n </Group>\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default PositionConstNode;\n","import { NodeContainer } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useState } from 'react';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport { useUpdateNodeComputedData, useUpdateNodeData } from '@awesome-flow/core/hooks';\nimport { ComputedPositionsData, NodeGridData, Position } from '../../abstract/node-props';\n\nfunction PositionGridNode({ id, selected, data, type }: NodeProps<Node<NodeGridData>>) {\n const [x, setX] = useState(data.center?.x);\n const [y, setY] = useState(data.center?.y);\n const [z, setZ] = useState(data.center?.z);\n\n const [radius, setRadius] = useState(data.radius);\n\n const updateNodeData = useUpdateNodeData<NodeGridData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedPositionsData>();\n\n useEffect(() => {\n updateNodeData(id, {\n center: { x, y, z },\n });\n }, [x, y, z]);\n\n useEffect(() => {\n updateNodeData(id, {\n radius,\n });\n }, [radius]);\n\n useEffect(() => {\n const positions: Position[] = [];\n\n for (let i = -radius; i < radius; i++) {\n for (let j = -radius; j < radius; j++) {\n positions.push({ x: x + i, y: y + j, z });\n }\n }\n\n updateComputedData(id, {\n positions,\n });\n }, [x, y, z, radius]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n x: <NumberInput size=\"xs\" w={100} value={x} onChange={(e) => setX(Number(e))} />\n </Group>\n <Group>\n y: <NumberInput size=\"xs\" w={100} value={y} onChange={(e) => setY(Number(e))} />\n </Group>\n <Group>\n z: <NumberInput size=\"xs\" w={100} value={z} onChange={(e) => setZ(Number(e))} />\n </Group>\n <Group>\n r: <NumberInput size=\"xs\" w={100} value={radius} onChange={(e) => setRadius(Number(e))} />\n </Group>\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default PositionGridNode;\n","import { NodeContainer, NodeCollapse, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps, NodeResizer, useStore, useUpdateNodeInternals } from '@xyflow/react';\nimport { BasicNodeData, FlowContext } from '@awesome-flow/core/abstract';\nimport { useCallback, useContext, useEffect, useMemo } from 'react';\nimport { shallow } from 'zustand/shallow';\nimport { Badge, Group } from '@mantine/core';\nimport { useIncomingComputedData, useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { ComputedModuleData } from '../../abstract/node-props';\n\nfunction ModuleGroupNode({\n id,\n selected,\n data,\n type,\n width,\n height,\n}: NodeProps<Node<BasicNodeData>>) {\n const context = useContext(FlowContext);\n const updateNodeInternals = useUpdateNodeInternals();\n const triggerNodeChanges = useStore((s) => s.triggerNodeChanges);\n\n const { groupNodes, setGroupCollapsed } = context.useFlowStore(\n useCallback(\n (state) => ({ groupNodes: state.groups[id], setGroupCollapsed: state.setGroupCollapsed }),\n []\n )\n );\n\n const intersectingNode = context.useInteractivityStore(\n useCallback((state) => state.nodeIntersectionTargets[id], [id]),\n shallow\n );\n\n useEffect(() => {\n updateNodeInternals(id);\n }, [width, height]);\n\n useEffect(() => {\n triggerNodeChanges([\n {\n id,\n type: 'select',\n selected: !!intersectingNode,\n },\n ]);\n }, [intersectingNode]);\n\n const onCollapsed = useCallback((collapsed: boolean) => {\n setGroupCollapsed(id, collapsed);\n }, []);\n\n const size = useMemo(() => {\n return {\n width: data.initialSize?.width || 100,\n height: data.initialSize?.height || 50,\n };\n }, [data.initialSize]);\n\n const incomingModules = useIncomingComputedData<ComputedModuleData>(id);\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n useEffect(() => {\n if (incomingModules?.length) {\n const { module } = incomingModules[0];\n updateComputedData(id, { module });\n }\n }, [incomingModules]);\n\n return (\n <NodeContainer\n id={id}\n selected={selected}\n data={data}\n title={\n <Group justify=\"space-between\">\n <Group gap=\"xs\">\n <Badge size=\"xs\" variant=\"outline\" radius=\"xs\" color=\"gray\">\n {groupNodes?.length || 0}\n </Badge>\n <NodeCollapse nodeId={id} isCollapsed={data.isCollapsed} onCollapsed={onCollapsed} />\n </Group>\n </Group>\n }\n type={type}\n >\n <NodeResizer\n nodeId={id}\n minWidth={size.width}\n minHeight={size.height}\n isVisible={selected && !data.isCollapsed}\n />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default ModuleGroupNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect } from 'react';\nimport { useIncomingComputedData, useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { Abs } from 'libnoise-ts/module/modifier';\nimport { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { ComputedModuleData } from '../../abstract/node-props';\n\nfunction NoiseAbsNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const incoming = useIncomingComputedData<ComputedModuleData>(id);\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n useEffect(() => {\n if (incoming?.length > 0) {\n const module = new Abs(incoming[0].module);\n updateComputedData(id, { module });\n }\n }, [incoming]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseAbsNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useState } from 'react';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport {\n useIncomingComputedData,\n useUpdateNodeComputedData,\n useUpdateNodeData,\n} from '@awesome-flow/core/hooks';\nimport { Clamp } from 'libnoise-ts/module/modifier';\nimport { ComputedModuleData, NodeClampNoiseData } from '../../abstract/node-props';\n\nfunction NoiseClampNode({ id, selected, data, type }: NodeProps<Node<NodeClampNoiseData>>) {\n const [lowerBound, setLowerBound] = useState(data.lowerBound);\n const [upperBound, setUpperBound] = useState(data.upperBound);\n\n const incoming = useIncomingComputedData<ComputedModuleData>(id);\n\n const updateNodeData = useUpdateNodeData<NodeClampNoiseData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n useEffect(() => {\n if (incoming?.length) {\n const module = new Clamp(incoming[0].module, lowerBound, upperBound);\n updateComputedData(id, { module });\n }\n\n updateNodeData(id, { lowerBound, upperBound });\n }, [incoming, lowerBound, upperBound]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n <NumberInput\n size=\"xs\"\n w={100}\n value={lowerBound}\n onChange={(e) => setLowerBound(Number(e))}\n step={0.1}\n />\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 </Stack>\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseClampNode;\n","import { NodeCombobox, NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { ReactNode, useCallback, useEffect } from 'react';\nimport {\n useIncomingComputedData,\n useUpdateNodeComputedData,\n useUpdateNodeData,\n} from '@awesome-flow/core/hooks';\nimport {\n IconAsterisk,\n IconChevronLeft,\n IconChevronRight,\n IconChevronUp,\n IconPlus,\n} from '@tabler/icons-react';\nimport { ComputedModuleData, NodeCombineNoiseData } from '../../abstract/node-props';\nimport { NoiseCombineType, noiseCombineModuleMap } from '../../abstract/operations';\n\nconst options: Record<NoiseCombineType, ReactNode | string> = {\n add: <IconPlus />,\n min: <IconChevronLeft />,\n max: <IconChevronRight />,\n multiply: <IconAsterisk />,\n power: <IconChevronUp />,\n};\n\nfunction NoiseCombineNode({ id, selected, data, type }: NodeProps<Node<NodeCombineNoiseData>>) {\n const updateNodeData = useUpdateNodeData<NodeCombineNoiseData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const incoming = useIncomingComputedData<ComputedModuleData>(id);\n\n useEffect(() => {\n const ModuleFactory = noiseCombineModuleMap[data.operation];\n\n if (incoming?.length > 1) {\n const module = new ModuleFactory(incoming[0].module, incoming[1].module);\n updateComputedData(id, { module });\n }\n }, [data.operation, incoming]);\n\n const onChange = useCallback((operation: NoiseCombineType) => {\n updateNodeData(id, { operation });\n }, []);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodeCombobox options={options} selected={data.operation} onChange={onChange} width={150} />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseCombineNode;\n","import { Add, Max, Min, Multiply, Power } from 'libnoise-ts/module/combiner';\n\nexport enum NoiseCombineType {\n add = 'add',\n max = 'max',\n min = 'min',\n multiply = 'multiply',\n power = 'power',\n}\n\nexport const noiseCombineModuleMap = {\n [NoiseCombineType.add]: Add,\n [NoiseCombineType.max]: Max,\n [NoiseCombineType.min]: Min,\n [NoiseCombineType.multiply]: Multiply,\n [NoiseCombineType.power]: Power,\n};\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { ActionIcon, Button, Group, NumberInput, Space } from '@mantine/core';\nimport {\n useIncomingComputedData,\n useUpdateNodeComputedData,\n useUpdateNodeData,\n} from '@awesome-flow/core/hooks';\nimport { FORM_INDEX, useForm } from '@mantine/form';\nimport { useCallback, useEffect, useState } from 'react';\nimport { Curve } from 'libnoise-ts/module/modifier';\nimport { Tuple } from 'libnoise-ts/util';\nimport { IconX } from '@tabler/icons-react';\nimport { randomId } from '@mantine/hooks';\nimport { NodeState } from '@awesome-flow/core/abstract';\nimport { ComputedModuleData, ControlPoint, NodeCurveNoiseData } from '../../abstract/node-props';\n\nfunction NoiseCurveNode({ id, selected, data, type }: NodeProps<Node<NodeCurveNoiseData>>) {\n const incoming = useIncomingComputedData<ComputedModuleData>(id);\n\n const updateNodeData = useUpdateNodeData<NodeCurveNoiseData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const [values, setValues] = useState([]);\n\n const form = useForm<{ points: (ControlPoint & { key: string })[] }>({\n mode: 'uncontrolled',\n initialValues: {\n points: [],\n },\n validateInputOnChange: [`points.${FORM_INDEX}.input`],\n clearInputErrorOnChange: true,\n validate: {\n points: {\n input: (value, values) => {\n const counts: Record<number, number> = {};\n\n values.points.forEach((x) => {\n counts[x.input] = (counts[x.input] || 0) + 1;\n });\n\n return counts[value] > 1;\n },\n },\n },\n onValuesChange: useCallback((values) => {\n if (form.isValid()) {\n const points = values.points.map((v) => ({ input: v.input, output: v.output }));\n setValues(points);\n updateNodeData(id, { points });\n }\n\n form.validate();\n }, []),\n });\n\n useEffect(() => {\n const points = data.points?.length\n ? data.points.map((v) => ({ input: v.input, output: v.output, key: randomId() }))\n : [1, 2, 3, 4].map(() => ({ input: 0, output: 0, key: randomId() }));\n\n form.initialize({ points });\n }, []);\n\n useEffect(() => {\n if (incoming?.length && values?.length >= 4) {\n const module = new Curve(\n incoming[0].module,\n values.map((p) => new Tuple(p.input, p.output))\n );\n\n updateComputedData(id, { module });\n }\n }, [values, incoming]);\n\n const fields = form.getValues().points.map((item, index) => (\n <Group mt=\"xs\" key={item.key}>\n <NumberInput\n size=\"xs\"\n w={100}\n placeholder=\"Input Value\"\n key={form.key(`points.${index}.input`)}\n {...form.getInputProps(`points.${index}.input`)}\n step={0.1}\n />\n <NumberInput\n size=\"xs\"\n w={100}\n placeholder=\"Output Value\"\n key={form.key(`points.${index}.output`)}\n {...form.getInputProps(`points.${index}.output`)}\n step={0.1}\n />\n {data.state === NodeState.edit && values.length > 4 && (\n <ActionIcon\n color=\"red\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => form.removeListItem('points', index)}\n >\n <IconX size=\"1rem\" />\n </ActionIcon>\n )}\n </Group>\n ));\n\n return (\n <NodeContainer id={id} selected={selected} type={type} data={data}>\n {fields}\n {data.state === NodeState.edit && (\n <>\n <Space h={10} />\n <Button\n variant=\"outline\"\n size=\"xs\"\n fullWidth\n onClick={() => form.insertListItem('points', { input: 0, output: 0, key: randomId() })}\n >\n Add control point\n </Button>\n </>\n )}\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseCurveNode;\n","import { useEffect, useLayoutEffect } from 'react';\nimport type {\n _TransformValues,\n ClearErrors,\n ClearFieldError,\n InsertListItem,\n RemoveListItem,\n ReorderListItem,\n Reset,\n ResetDirty,\n ResetStatus,\n SetErrors,\n SetFieldError,\n SetFieldValue,\n SetFormStatus,\n SetInitialValues,\n SetValues,\n UseFormReturnType,\n ValidateField,\n} from '../types';\n\nfunction dispatchEvent(type: string, detail?: any): any {\n window.dispatchEvent(new CustomEvent(type, { detail }));\n}\n\nfunction validateFormName(name: string) {\n if (!/^[0-9a-zA-Z-]+$/.test(name)) {\n throw new Error(\n `[@mantine/use-form] Form name \"${name}\" is invalid, it should contain only letters, numbers and dashes`\n );\n }\n}\n\nexport const useIsomorphicEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nexport function createFormActions<FormValues extends Record<string, any> = Record<string, any>>(\n name: string\n) {\n validateFormName(name);\n\n const setFieldValue: SetFieldValue<FormValues> = (path, value) =>\n dispatchEvent(`mantine-form:${name}:set-field-value`, { path, value });\n\n const setValues: SetValues<FormValues> = (values) =>\n dispatchEvent(`mantine-form:${name}:set-values`, values);\n\n const setInitialValues: SetInitialValues<FormValues> = (values) =>\n dispatchEvent(`mantine-form:${name}:set-initial-values`, values);\n\n const setErrors: SetErrors = (errors) => dispatchEvent(`mantine-form:${name}:set-errors`, errors);\n\n const setFieldError: SetFieldError<FormValues> = (path, error) =>\n dispatchEvent(`mantine-form:${name}:set-field-error`, { path, error });\n\n const clearFieldError: ClearFieldError = (path) =>\n dispatchEvent(`mantine-form:${name}:clear-field-error`, path);\n\n const clearErrors: ClearErrors = () => dispatchEvent(`mantine-form:${name}:clear-errors`);\n\n const reset: Reset = () => dispatchEvent(`mantine-form:${name}:reset`);\n\n const validate: () => void = () => dispatchEvent(`mantine-form:${name}:validate`);\n\n const validateField: ValidateField<FormValues> = (path) =>\n dispatchEvent(`mantine-form:${name}:validate-field`, path);\n\n const reorderListItem: ReorderListItem<FormValues> = (path, payload) =>\n dispatchEvent(`mantine-form:${name}:reorder-list-item`, { path, payload });\n\n const removeListItem: RemoveListItem<FormValues> = (path, index) =>\n dispatchEvent(`mantine-form:${name}:remove-list-item`, { path, index });\n\n const insertListItem: InsertListItem<FormValues> = (path, item, index) =>\n dispatchEvent(`mantine-form:${name}:insert-list-item`, { path, index, item });\n\n const setDirty: SetFormStatus = (value) => dispatchEvent(`mantine-form:${name}:set-dirty`, value);\n\n const setTouched: SetFormStatus = (value) =>\n dispatchEvent(`mantine-form:${name}:set-touched`, value);\n\n const resetDirty: ResetDirty<FormValues> = (values) =>\n dispatchEvent(`mantine-form:${name}:reset-dirty`, values);\n\n const resetTouched: ResetStatus = () => dispatchEvent(`mantine-form:${name}:reset-touched`);\n\n return {\n setFieldValue,\n setValues,\n setInitialValues,\n setErrors,\n setFieldError,\n clearFieldError,\n clearErrors,\n reset,\n validate,\n validateField,\n reorderListItem,\n removeListItem,\n insertListItem,\n setDirty,\n setTouched,\n resetDirty,\n resetTouched,\n };\n}\n\nfunction useFormEvent(eventKey: string | undefined, handler: Function) {\n useIsomorphicEffect(() => {\n if (eventKey) {\n window.addEventListener(eventKey, handler as any);\n return () => window.removeEventListener(eventKey, handler as any);\n }\n return undefined;\n }, [eventKey]);\n}\n\nexport function useFormActions<\n Values = Record<string, unknown>,\n TransformValues extends _TransformValues<Values> = (values: Values) => Values,\n>(name: string | undefined, form: UseFormReturnType<Values, TransformValues>) {\n if (name) {\n validateFormName(name);\n }\n\n useFormEvent(`mantine-form:${name}:set-field-value`, (event: CustomEvent) =>\n form.setFieldValue(event.detail.path, event.detail.value)\n );\n\n useFormEvent(`mantine-form:${name}:set-values`, (event: CustomEvent) =>\n form.setValues(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:set-initial-values`, (event: CustomEvent) =>\n form.setInitialValues(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:set-errors`, (event: CustomEvent) =>\n form.setErrors(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:set-field-error`, (event: CustomEvent) =>\n form.setFieldError(event.detail.path, event.detail.error)\n );\n\n useFormEvent(`mantine-form:${name}:clear-field-error`, (event: CustomEvent) =>\n form.clearFieldError(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:clear-errors`, form.clearErrors);\n useFormEvent(`mantine-form:${name}:reset`, form.reset);\n useFormEvent(`mantine-form:${name}:validate`, form.validate);\n\n useFormEvent(`mantine-form:${name}:validate-field`, (event: CustomEvent) =>\n form.validateField(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:reorder-list-item`, (event: CustomEvent) =>\n form.reorderListItem(event.detail.path, event.detail.payload)\n );\n\n useFormEvent(`mantine-form:${name}:remove-list-item`, (event: CustomEvent) =>\n form.removeListItem(event.detail.path, event.detail.index)\n );\n\n useFormEvent(`mantine-form:${name}:insert-list-item`, (event: CustomEvent) =>\n form.insertListItem(event.detail.path, event.detail.item, event.detail.index)\n );\n\n useFormEvent(`mantine-form:${name}:set-dirty`, (event: CustomEvent) =>\n form.setDirty(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:set-touched`, (event: CustomEvent) =>\n form.setTouched(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:reset-dirty`, (event: CustomEvent) =>\n form.resetDirty(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:reset-touched`, form.resetTouched);\n}\n","export function getInputOnChange<Value>(\n setValue: (value: Value | ((current: Value) => Value)) => void\n) {\n return (val: Value | React.ChangeEvent<unknown> | ((current: Value) => Value)) => {\n if (!val) {\n setValue(val as Value);\n } else if (typeof val === 'function') {\n setValue(val);\n } else if (typeof val === 'object' && 'nativeEvent' in val) {\n const { currentTarget } = val;\n if (currentTarget instanceof HTMLInputElement) {\n if (currentTarget.type === 'checkbox') {\n setValue(currentTarget.checked as any);\n } else {\n setValue(currentTarget.value as any);\n }\n } else if (\n currentTarget instanceof HTMLTextAreaElement ||\n currentTarget instanceof HTMLSelectElement\n ) {\n setValue(currentTarget.value as any);\n }\n } else {\n setValue(val);\n }\n };\n}\n","import type { FormErrors } from '../../../types';\n\nexport function filterErrors(errors: FormErrors): FormErrors {\n if (errors === null || typeof errors !== 'object') {\n return {};\n }\n\n return Object.keys(errors).reduce<FormErrors>((acc, key) => {\n const errorValue = errors[key];\n\n if (errorValue !== undefined && errorValue !== null && errorValue !== false) {\n acc[key] = errorValue;\n }\n\n return acc;\n }, {});\n}\n","import { useCallback, useState } from 'react';\nimport { ClearErrors, ClearFieldError, FormErrors, SetErrors, SetFieldError } from '../../types';\nimport { filterErrors } from './filter-errors/filter-errors';\n\nexport interface $FormErrors<Values extends Record<string, any>> {\n errorsState: FormErrors;\n setErrors: SetErrors;\n clearErrors: ClearErrors;\n setFieldError: SetFieldError<Values>;\n clearFieldError: ClearFieldError;\n}\n\nexport function useFormErrors<Values extends Record<string, any>>(\n initialErrors: FormErrors\n): $FormErrors<Values> {\n const [errorsState, setErrorsState] = useState(filterErrors(initialErrors));\n\n const setErrors: SetErrors = useCallback((errors) => {\n setErrorsState((current) =>\n filterErrors(typeof errors === 'function' ? errors(current) : errors)\n );\n }, []);\n\n const clearErrors: ClearErrors = useCallback(() => setErrorsState({}), []);\n\n const clearFieldError: ClearFieldError = useCallback(\n (path) => {\n if (errorsState[path as string] === undefined) {\n return;\n }\n\n setErrors((current) => {\n const errors = { ...current };\n delete errors[path as string];\n return errors;\n });\n },\n [errorsState]\n );\n\n const setFieldError: SetFieldError<Values> = useCallback(\n (path, error) => {\n if (error == null || error === false) {\n clearFieldError(path);\n } else if (errorsState[path as string] !== error) {\n setErrors((current) => ({ ...current, [path]: error }));\n }\n },\n [errorsState]\n );\n\n return {\n errorsState,\n setErrors,\n clearErrors,\n setFieldError,\n clearFieldError,\n };\n}\n","export function clearListState<T extends Record<PropertyKey, any>>(\n field: PropertyKey,\n state: T\n): T {\n if (state === null || typeof state !== 'object') {\n return {} as T;\n }\n\n const clone = { ...state };\n Object.keys(state).forEach((errorKey) => {\n if (errorKey.includes(`${String(field)}.`)) {\n delete clone[errorKey];\n }\n });\n\n return clone;\n}\n","import { clearListState } from './clear-list-state';\n\n/**\n * Gets the part of the key after the path which can be an index\n */\nfunction getIndexFromKeyAfterPath(key: string, path: string): number {\n const split = key.substring(path.length + 1).split('.')[0];\n return parseInt(split, 10);\n}\n\n/**\n * Changes the indices of every error that is after the given `index` with the given `change` at the given `path`.\n * This requires that the errors are in the format of `path.index` and that the index is a number.\n */\nexport function changeErrorIndices<T extends Record<PropertyKey, any>>(\n path: PropertyKey,\n index: number | undefined,\n errors: T,\n change: 1 | -1\n): T {\n if (index === undefined) {\n return errors;\n }\n const pathString = `${String(path)}`;\n let clearedErrors = errors;\n // Remove all errors if the corresponding item was removed\n if (change === -1) {\n clearedErrors = clearListState(`${pathString}.${index}`, clearedErrors);\n }\n\n const cloned = { ...clearedErrors };\n const changedKeys = new Set<string>();\n Object.entries(clearedErrors)\n .filter(([key]) => {\n if (!key.startsWith(`${pathString}.`)) {\n return false;\n }\n const currIndex = getIndexFromKeyAfterPath(key, pathString);\n if (Number.isNaN(currIndex)) {\n return false;\n }\n return currIndex >= index;\n })\n .forEach(([key, value]) => {\n const currIndex = getIndexFromKeyAfterPath(key, pathString);\n\n const newKey: keyof T = key.replace(\n `${pathString}.${currIndex}`,\n `${pathString}.${currIndex + change}`\n );\n cloned[newKey] = value;\n changedKeys.add(newKey);\n if (!changedKeys.has(key)) {\n delete cloned[key];\n }\n });\n\n return cloned;\n}\n","import { ReorderPayload } from '../types';\n\nexport function reorderErrors<T>(path: unknown, { from, to }: ReorderPayload, errors: T): T {\n const oldKeyStart = `${path}.${from}`;\n const newKeyStart = `${path}.${to}`;\n\n const clone: any = { ...errors };\n Object.keys(errors as any).every((key) => {\n let oldKey;\n let newKey;\n if (key.startsWith(oldKeyStart)) {\n oldKey = key;\n newKey = key.replace(oldKeyStart, newKeyStart);\n }\n if (key.startsWith(newKeyStart)) {\n oldKey = key.replace(newKeyStart, oldKeyStart);\n newKey = key;\n }\n if (oldKey && newKey) {\n const value1 = clone[oldKey];\n const value2 = clone[newKey];\n value2 === undefined ? delete clone[oldKey] : (clone[oldKey] = value2);\n value1 === undefined ? delete clone[newKey] : (clone[newKey] = value1);\n return false;\n }\n return true;\n });\n\n return clone;\n}\n","function set(obj, key, val) {\n\tif (typeof val.value === 'object') val.value = klona(val.value);\n\tif (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === '__proto__') {\n\t\tObject.defineProperty(obj, key, val);\n\t} else obj[key] = val.value;\n}\n\nexport function klona(x) {\n\tif (typeof x !== 'object') return x;\n\n\tvar i=0, k, list, tmp, str=Object.prototype.toString.call(x);\n\n\tif (str === '[object Object]') {\n\t\ttmp = Object.create(x.__proto__ || null);\n\t} else if (str === '[object Array]') {\n\t\ttmp = Array(x.length);\n\t} else if (str === '[object Set]') {\n\t\ttmp = new Set;\n\t\tx.forEach(function (val) {\n\t\t\ttmp.add(klona(val));\n\t\t});\n\t} else if (str === '[object Map]') {\n\t\ttmp = new Map;\n\t\tx.forEach(function (val, key) {\n\t\t\ttmp.set(klona(key), klona(val));\n\t\t});\n\t} else if (str === '[object Date]') {\n\t\ttmp = new Date(+x);\n\t} else if (str === '[object RegExp]') {\n\t\ttmp = new RegExp(x.source, x.flags);\n\t} else if (str === '[object DataView]') {\n\t\ttmp = new x.constructor( klona(x.buffer) );\n\t} else if (str === '[object ArrayBuffer]') {\n\t\ttmp = x.slice(0);\n\t} else if (str.slice(-6) === 'Array]') {\n\t\t// ArrayBuffer.isView(x)\n\t\t// ~> `new` bcuz `Buffer.slice` => ref\n\t\ttmp = new x.constructor(x);\n\t}\n\n\tif (tmp) {\n\t\tfor (list=Object.getOwnPropertySymbols(x); i < list.length; i++) {\n\t\t\tset(tmp, list[i], Object.getOwnPropertyDescriptor(x, list[i]));\n\t\t}\n\n\t\tfor (i=0, list=Object.getOwnPropertyNames(x); i < list.length; i++) {\n\t\t\tif (Object.hasOwnProperty.call(tmp, k=list[i]) && tmp[k] === x[k]) continue;\n\t\t\tset(tmp, k, Object.getOwnPropertyDescriptor(x, k));\n\t\t}\n\t}\n\n\treturn tmp || x;\n}\n","export function getSplittedPath(path: unknown) {\n if (typeof path !== 'string') {\n return [];\n }\n\n return path.split('.');\n}\n","import { getSplittedPath } from './get-splitted-path';\n\nexport function getPath(path: unknown, values: unknown): unknown {\n const splittedPath = getSplittedPath(path);\n\n if (splittedPath.length === 0 || typeof values !== 'object' || values === null) {\n return undefined;\n }\n\n let value = values[splittedPath[0] as keyof typeof values];\n for (let i = 1; i < splittedPath.length; i += 1) {\n if (value === undefined) {\n break;\n }\n\n value = value[splittedPath[i]];\n }\n\n return value;\n}\n","import { klona } from 'klona/full';\nimport { getSplittedPath } from './get-splitted-path';\n\nexport function setPath<T>(path: unknown, value: unknown, values: T): T {\n const splittedPath = getSplittedPath(path);\n\n if (splittedPath.length === 0) {\n return values;\n }\n\n const cloned: any = klona(values);\n\n if (splittedPath.length === 1) {\n cloned[splittedPath[0]] = value;\n return cloned;\n }\n\n let val = cloned[splittedPath[0]];\n\n for (let i = 1; i < splittedPath.length - 1; i += 1) {\n if (val === undefined) {\n return cloned;\n }\n\n val = val[splittedPath[i]];\n }\n\n val[splittedPath[splittedPath.length - 1]] = value;\n\n return cloned;\n}\n","import { ReorderPayload } from '../types';\nimport { getPath } from './get-path';\nimport { setPath } from './set-path';\n\nexport function reorderPath<T>(path: unknown, { from, to }: ReorderPayload, values: T) {\n const currentValue = getPath(path, values);\n\n if (!Array.isArray(currentValue)) {\n return values;\n }\n\n const cloned = [...currentValue];\n const item = currentValue[from];\n cloned.splice(from, 1);\n cloned.splice(to, 0, item);\n\n return setPath(path, cloned, values);\n}\n","import { getPath } from './get-path';\nimport { setPath } from './set-path';\n\nexport function insertPath<T>(path: unknown, value: unknown, index: number | undefined, values: T) {\n const currentValue = getPath(path, values);\n\n if (!Array.isArray(currentValue)) {\n return values;\n }\n\n const cloned = [...currentValue];\n cloned.splice(typeof index === 'number' ? index : cloned.length, 0, value);\n\n return setPath(path, cloned, values);\n}\n","import { getPath } from './get-path';\nimport { setPath } from './set-path';\n\nexport function removePath<T>(path: unknown, index: number, values: T) {\n const currentValue = getPath(path, values);\n\n if (!Array.isArray(currentValue)) {\n return values;\n }\n\n return setPath(\n path,\n currentValue.filter((_, itemIndex) => itemIndex !== index),\n values\n );\n}\n","import { useCallback } from 'react';\nimport { changeErrorIndices, reorderErrors } from '../../lists';\nimport { insertPath, removePath, reorderPath } from '../../paths';\nimport { InsertListItem, RemoveListItem, ReorderListItem } from '../../types';\nimport type { $FormErrors } from '../use-form-errors/use-form-errors';\nimport type { $FormStatus } from '../use-form-status/use-form-status';\nimport type { $FormValues } from '../use-form-values/use-form-values';\n\ninterface UseFormListInput<Values extends Record<string, any>> {\n $values: $FormValues<Values>;\n $errors: $FormErrors<Values>;\n $status: $FormStatus<Values>;\n}\n\nexport function useFormList<Values extends Record<string, any>>({\n $values,\n $errors,\n $status,\n}: UseFormListInput<Values>) {\n const reorderListItem: ReorderListItem<Values> = useCallback((path, payload) => {\n $status.clearFieldDirty(path);\n $errors.setErrors((errs) => reorderErrors(path, payload, errs));\n $values.setValues({\n values: reorderPath(path, payload, $values.refValues.current),\n updateState: true,\n });\n }, []);\n\n const removeListItem: RemoveListItem<Values> = useCallback((path, index) => {\n $status.clearFieldDirty(path);\n $errors.setErrors((errs) => changeErrorIndices(path, index, errs, -1));\n $values.setValues({\n values: removePath(path, index, $values.refValues.current),\n updateState: true,\n });\n }, []);\n\n const insertListItem: InsertListItem<Values> = useCallback((path, item, index) => {\n $status.clearFieldDirty(path);\n $errors.setErrors((errs) => changeErrorIndices(path, index, errs, 1));\n $values.setValues({\n values: insertPath(path, item, index, $values.refValues.current),\n updateState: true,\n });\n }, []);\n\n return { reorderListItem, removeListItem, insertListItem };\n}\n","import { FormStatus } from '../types';\n\nexport function getStatus(status: FormStatus, path?: unknown) {\n const paths = Object.keys(status);\n\n if (typeof path === 'string') {\n const nestedPaths = paths.filter((statusPath) => statusPath.startsWith(`${path}.`));\n return status[path] || nestedPaths.some((statusPath) => status[statusPath]) || false;\n }\n\n return paths.some((statusPath) => status[statusPath]);\n}\n","import { useCallback, useRef, useState } from 'react';\nimport isEqual from 'fast-deep-equal';\nimport { getStatus } from '../../get-status';\nimport { clearListState } from '../../lists';\nimport { getPath } from '../../paths';\nimport {\n ClearFieldDirty,\n FormMode,\n FormStatus,\n GetFieldStatus,\n ResetDirty,\n ResetStatus,\n SetFieldDirty,\n SetFieldTouched,\n} from '../../types';\nimport type { $FormValues } from '../use-form-values/use-form-values';\n\nexport interface $FormStatus<Values extends Record<string, any>> {\n touchedState: FormStatus;\n dirtyState: FormStatus;\n touchedRef: React.MutableRefObject<FormStatus>;\n dirtyRef: React.MutableRefObject<FormStatus>;\n setTouched: React.Dispatch<React.SetStateAction<FormStatus>>;\n setDirty: React.Dispatch<React.SetStateAction<FormStatus>>;\n resetDirty: ResetStatus;\n resetTouched: ResetStatus;\n isTouched: GetFieldStatus<Values>;\n setFieldTouched: SetFieldTouched<Values>;\n setFieldDirty: SetFieldDirty<Values>;\n setTouchedState: React.Dispatch<React.SetStateAction<FormStatus>>;\n setDirtyState: React.Dispatch<React.SetStateAction<FormStatus>>;\n clearFieldDirty: ClearFieldDirty;\n isDirty: GetFieldStatus<Values>;\n getDirty: () => FormStatus;\n getTouched: () => FormStatus;\n}\n\ninterface UseFormStatusInput<Values extends Record<string, any>> {\n initialDirty: FormStatus;\n initialTouched: FormStatus;\n mode: FormMode;\n $values: $FormValues<Values>;\n}\n\nexport function useFormStatus<Values extends Record<string, any>>({\n initialDirty,\n initialTouched,\n mode,\n $values,\n}: UseFormStatusInput<Values>): $FormStatus<Values> {\n const [touchedState, setTouchedState] = useState(initialTouched);\n const [dirtyState, setDirtyState] = useState(initialDirty);\n\n const touchedRef = useRef(initialTouched);\n const dirtyRef = useRef(initialDirty);\n\n const setTouched = useCallback((values: FormStatus | ((current: FormStatus) => FormStatus)) => {\n const resolvedValues = typeof values === 'function' ? values(touchedRef.current) : values;\n touchedRef.current = resolvedValues;\n\n if (mode === 'controlled') {\n setTouchedState(resolvedValues);\n }\n }, []);\n\n const setDirty = useCallback((values: FormStatus | ((current: FormStatus) => FormStatus)) => {\n const resolvedValues = typeof values === 'function' ? values(dirtyRef.current) : values;\n dirtyRef.current = resolvedValues;\n\n if (mode === 'controlled') {\n setDirtyState(resolvedValues);\n }\n }, []);\n\n const resetTouched: ResetStatus = useCallback(() => setTouched({}), []);\n\n const resetDirty: ResetDirty<Values> = (values) => {\n const newSnapshot = values\n ? { ...values, ...$values.refValues.current }\n : $values.refValues.current;\n $values.setValuesSnapshot(newSnapshot);\n setDirty({});\n };\n\n const setFieldTouched: SetFieldTouched<Values> = useCallback((path, touched) => {\n setTouched((currentTouched) => {\n if (getStatus(currentTouched, path) === touched) {\n return currentTouched;\n }\n\n return { ...currentTouched, [path]: touched };\n });\n }, []);\n\n const setFieldDirty: SetFieldDirty<Values> = useCallback((path, dirty) => {\n setDirty((currentDirty) => {\n if (getStatus(currentDirty, path) === dirty) {\n return currentDirty;\n }\n\n return { ...currentDirty, [path]: dirty };\n });\n }, []);\n\n const isTouched: GetFieldStatus<Values> = useCallback(\n (path) => getStatus(touchedRef.current, path),\n []\n );\n\n const clearFieldDirty: ClearFieldDirty = useCallback(\n (path) =>\n setDirty((current) => {\n if (typeof path !== 'string') {\n return current;\n }\n\n const result = clearListState(path, current);\n delete result[path];\n\n if (isEqual(result, current)) {\n return current;\n }\n\n return result;\n }),\n []\n );\n\n const isDirty: GetFieldStatus<Values> = useCallback((path) => {\n if (path) {\n const overriddenValue = getPath(path, dirtyRef.current);\n if (typeof overriddenValue === 'boolean') {\n return overriddenValue;\n }\n\n const sliceOfValues = getPath(path, $values.refValues.current);\n const sliceOfInitialValues = getPath(path, $values.valuesSnapshot.current);\n return !isEqual(sliceOfValues, sliceOfInitialValues);\n }\n\n const isOverridden = Object.keys(dirtyRef.current).length > 0;\n if (isOverridden) {\n return getStatus(dirtyRef.current);\n }\n\n return !isEqual($values.refValues.current, $values.valuesSnapshot.current);\n }, []);\n\n const getDirty = useCallback(() => dirtyRef.current, []);\n const getTouched = useCallback(() => touchedRef.current, []);\n\n return {\n touchedState,\n dirtyState,\n touchedRef,\n dirtyRef,\n setTouched,\n setDirty,\n resetDirty,\n resetTouched,\n isTouched,\n setFieldTouched,\n setFieldDirty,\n setTouchedState,\n setDirtyState,\n clearFieldDirty,\n isDirty,\n getDirty,\n getTouched,\n };\n}\n","import { useCallback, useRef, useState } from 'react';\nimport { getPath, setPath } from '../../paths';\nimport { FormMode } from '../../types';\n\nexport interface $FormValues<Values extends Record<PropertyKey, any>> {\n initialized: React.MutableRefObject<boolean>;\n stateValues: Values;\n refValues: React.MutableRefObject<Values>;\n valuesSnapshot: React.MutableRefObject<Values>;\n setValues: (payload: SetValuesInput<Values>) => void;\n setFieldValue: (payload: SetFieldValueInput<Values>) => void;\n resetValues: () => void;\n setValuesSnapshot: (payload: Values) => void;\n initialize: (values: Values, onInitialize: () => void) => void;\n getValues: () => Values;\n}\n\nexport interface SetValuesSubscriberPayload<Values> {\n path?: PropertyKey;\n updatedValues: Values;\n previousValues: Values;\n}\n\nexport interface SetValuesInput<Values> {\n values: Partial<Values> | ((values: Values) => Partial<Values>);\n mergeWithPreviousValues?: boolean;\n updateState?: boolean;\n subscribers?: (SetFieldValueSubscriber<Values> | null | undefined)[];\n}\n\nexport type SetFieldValueSubscriber<Values> = (payload: SetValuesSubscriberPayload<Values>) => void;\n\nexport interface SetFieldValueInput<Values> {\n path: PropertyKey;\n value: any;\n updateState?: boolean;\n subscribers?: (SetFieldValueSubscriber<Values> | null | undefined)[];\n}\n\ninterface UseFormValuesInput<Values extends Record<PropertyKey, any>> {\n initialValues: Values | undefined;\n mode: FormMode;\n onValuesChange?: ((values: Values, previousValues: Values) => void) | undefined;\n}\n\nexport function useFormValues<Values extends Record<PropertyKey, any>>({\n initialValues,\n onValuesChange,\n mode,\n}: UseFormValuesInput<Values>): $FormValues<Values> {\n const initialized = useRef(false);\n const [stateValues, setStateValues] = useState<Values>(initialValues || ({} as Values));\n const refValues = useRef(stateValues);\n const valuesSnapshot = useRef(stateValues);\n\n const setValues = useCallback(\n ({\n values,\n subscribers,\n updateState = true,\n mergeWithPreviousValues = true,\n }: SetValuesInput<Values>) => {\n const previousValues = refValues.current;\n const resolvedValues = values instanceof Function ? values(refValues.current) : values;\n const updatedValues = mergeWithPreviousValues\n ? { ...previousValues, ...resolvedValues }\n : (resolvedValues as Values);\n refValues.current = updatedValues;\n updateState && setStateValues(updatedValues);\n onValuesChange?.(updatedValues, previousValues);\n subscribers\n ?.filter(Boolean)\n .forEach((subscriber) => subscriber!({ updatedValues, previousValues }));\n },\n [onValuesChange]\n );\n\n const setFieldValue = useCallback((payload: SetFieldValueInput<Values>) => {\n const currentValue = getPath(payload.path, refValues.current);\n const updatedValue =\n payload.value instanceof Function ? payload.value(currentValue) : payload.value;\n\n if (currentValue !== updatedValue) {\n const previousValues = refValues.current;\n const updatedValues = setPath(payload.path, updatedValue, refValues.current);\n setValues({ values: updatedValues, updateState: payload.updateState });\n\n payload.subscribers\n ?.filter(Boolean)\n .forEach((subscriber) =>\n subscriber!({ path: payload.path, updatedValues, previousValues })\n );\n }\n }, []);\n\n const setValuesSnapshot = useCallback((payload: Values) => {\n valuesSnapshot.current = payload;\n }, []);\n\n const initialize = useCallback((values: Values, onInitialize: () => void) => {\n if (!initialized.current) {\n initialized.current = true;\n setValues({ values, updateState: mode === 'controlled' });\n setValuesSnapshot(values);\n onInitialize();\n }\n }, []);\n\n const resetValues = useCallback(() => {\n setValues({\n values: valuesSnapshot.current,\n updateState: true,\n mergeWithPreviousValues: false,\n });\n }, []);\n\n const getValues = useCallback(() => refValues.current, []);\n\n return {\n initialized,\n stateValues,\n refValues,\n valuesSnapshot,\n setValues,\n setFieldValue,\n resetValues,\n setValuesSnapshot,\n initialize,\n getValues,\n };\n}\n","import { useCallback, useEffect, useRef } from 'react';\nimport { getPath } from '../../paths';\nimport { FormFieldSubscriber, LooseKeys, Watch } from '../../types';\nimport { $FormStatus } from '../use-form-status/use-form-status';\nimport { SetValuesSubscriberPayload } from '../use-form-values/use-form-values';\n\ninterface UseFormWatchInput<Values extends Record<string, any>> {\n $status: $FormStatus<Values>;\n}\n\nexport function useFormWatch<Values extends Record<string, any>>({\n $status,\n}: UseFormWatchInput<Values>) {\n const subscribers = useRef<Record<LooseKeys<Values>, FormFieldSubscriber<Values, any>[]>>(\n {} as any\n );\n\n const watch: Watch<Values> = useCallback((path, callback) => {\n useEffect(() => {\n subscribers.current[path] = subscribers.current[path] || [];\n subscribers.current[path].push(callback);\n\n return () => {\n subscribers.current[path] = subscribers.current[path].filter((cb) => cb !== callback);\n };\n }, [callback]);\n }, []);\n\n const getFieldSubscribers = useCallback((path: LooseKeys<Values>) => {\n if (!subscribers.current[path]) {\n return [];\n }\n\n return subscribers.current[path].map(\n (callback) => (input: SetValuesSubscriberPayload<Values>) =>\n callback({\n previousValue: getPath(path, input.previousValues) as any,\n value: getPath(path, input.updatedValues) as any,\n touched: $status.isTouched(path),\n dirty: $status.isDirty(path),\n })\n );\n }, []);\n\n return {\n subscribers,\n watch,\n getFieldSubscribers,\n };\n}\n","export function getDataPath(formName: string | undefined, fieldPath: PropertyKey) {\n return formName ? `${formName}-${fieldPath.toString()}` : fieldPath.toString();\n}\n","import { filterErrors } from '../hooks/use-form-errors/filter-errors/filter-errors';\nimport { getPath } from '../paths';\nimport { FormErrors, FormRule, FormRulesRecord, FormValidateInput } from '../types';\n\nfunction getValidationResults(errors: FormErrors) {\n const filteredErrors = filterErrors(errors);\n return { hasErrors: Object.keys(filteredErrors).length > 0, errors: filteredErrors };\n}\n\nfunction validateRulesRecord<T>(\n rules: FormRulesRecord<T> | undefined,\n values: T,\n path = '',\n errors: FormErrors = {}\n) {\n if (typeof rules !== 'object' || rules === null) {\n return errors;\n }\n\n return Object.keys(rules).reduce((acc, ruleKey) => {\n const rule: FormRule<any, any> = (rules as any)[ruleKey];\n const rulePath = `${path === '' ? '' : `${path}.`}${ruleKey}`;\n const value = getPath(rulePath, values);\n let arrayValidation = false;\n\n if (typeof rule === 'function') {\n acc[rulePath] = rule(value, values, rulePath);\n }\n\n if (typeof rule === 'object' && Array.isArray(value)) {\n arrayValidation = true;\n value.forEach((_item, index) =>\n validateRulesRecord(rule, values, `${rulePath}.${index}`, acc)\n );\n }\n\n if (typeof rule === 'object' && typeof value === 'object' && value !== null) {\n if (!arrayValidation) {\n validateRulesRecord(rule, values, rulePath, acc);\n }\n }\n\n return acc;\n }, errors);\n}\n\nexport function validateValues<T>(validate: FormValidateInput<T> | undefined, values: T) {\n if (typeof validate === 'function') {\n return getValidationResults(validate(values));\n }\n\n return getValidationResults(validateRulesRecord(validate, values));\n}\n","import { FormFieldValidationResult, FormValidateInput } from '../types';\nimport { validateValues } from './validate-values';\n\nexport function validateFieldValue<T>(\n path: unknown,\n rules: FormValidateInput<T> | undefined,\n values: T\n): FormFieldValidationResult {\n if (typeof path !== 'string') {\n return { hasError: false, error: null };\n }\n\n const results = validateValues(rules, values);\n const pathInError = Object.keys(results.errors).find((errorKey) =>\n path.split('.').every((pathPart, i) => pathPart === errorKey.split('.')[i])\n );\n return { hasError: !!pathInError, error: pathInError ? results.errors[pathInError] : null };\n}\n","export const FORM_INDEX = '__MANTINE_FORM_INDEX__';\n","import { FORM_INDEX } from '../form-index';\n\nexport function shouldValidateOnChange(path: unknown, validateInputOnChange: boolean | unknown[]) {\n if (!validateInputOnChange) {\n return false;\n }\n\n if (typeof validateInputOnChange === 'boolean') {\n return validateInputOnChange;\n }\n\n if (Array.isArray(validateInputOnChange)) {\n return validateInputOnChange.includes((path as string).replace(/[.][0-9]/g, `.${FORM_INDEX}`));\n }\n\n return false;\n}\n","import { useCallback, useState } from 'react';\nimport { useFormActions } from './actions';\nimport { getInputOnChange } from './get-input-on-change';\nimport { useFormErrors } from './hooks/use-form-errors/use-form-errors';\nimport { useFormList } from './hooks/use-form-list/use-form-list';\nimport { useFormStatus } from './hooks/use-form-status/use-form-status';\nimport { useFormValues } from './hooks/use-form-values/use-form-values';\nimport { useFormWatch } from './hooks/use-form-watch/use-form-watch';\nimport { getDataPath, getPath } from './paths';\nimport {\n _TransformValues,\n GetInputNode,\n GetInputProps,\n GetTransformedValues,\n Initialize,\n IsValid,\n Key,\n OnReset,\n OnSubmit,\n Reset,\n SetFieldValue,\n SetValues,\n UseFormInput,\n UseFormReturnType,\n Validate,\n ValidateField,\n} from './types';\nimport { shouldValidateOnChange, validateFieldValue, validateValues } from './validate';\n\nexport function useForm<\n Values extends Record<string, any> = Record<string, any>,\n TransformValues extends _TransformValues<Values> = (values: Values) => Values,\n>({\n name,\n mode = 'controlled',\n initialValues,\n initialErrors = {},\n initialDirty = {},\n initialTouched = {},\n clearInputErrorOnChange = true,\n validateInputOnChange = false,\n validateInputOnBlur = false,\n onValuesChange,\n transformValues = ((values: Values) => values) as any,\n enhanceGetInputProps,\n validate: rules,\n}: UseFormInput<Values, TransformValues> = {}): UseFormReturnType<Values, TransformValues> {\n const $errors = useFormErrors<Values>(initialErrors);\n const $values = useFormValues<Values>({ initialValues, onValuesChange, mode });\n const $status = useFormStatus<Values>({ initialDirty, initialTouched, $values, mode });\n const $list = useFormList<Values>({ $values, $errors, $status });\n const $watch = useFormWatch<Values>({ $status });\n const [formKey, setFormKey] = useState(0);\n const [fieldKeys, setFieldKeys] = useState<Record<string, number>>({});\n\n const reset: Reset = useCallback(() => {\n $values.resetValues();\n $errors.clearErrors();\n $status.resetDirty();\n $status.resetTouched();\n mode === 'uncontrolled' && setFormKey((key) => key + 1);\n }, []);\n\n const initialize: Initialize<Values> = useCallback((values) => {\n $values.initialize(values, () => mode === 'uncontrolled' && setFormKey((key) => key + 1));\n }, []);\n\n const setFieldValue: SetFieldValue<Values> = useCallback(\n (path, value, options) => {\n const shouldValidate = shouldValidateOnChange(path, validateInputOnChange);\n\n $status.clearFieldDirty(path);\n $status.setFieldTouched(path, true);\n !shouldValidate && clearInputErrorOnChange && $errors.clearFieldError(path);\n\n $values.setFieldValue({\n path,\n value,\n updateState: mode === 'controlled',\n subscribers: [\n ...$watch.getFieldSubscribers(path),\n shouldValidate\n ? (payload) => {\n const validationResults = validateFieldValue(path, rules, payload.updatedValues);\n validationResults.hasError\n ? $errors.setFieldError(path, validationResults.error)\n : $errors.clearFieldError(path);\n }\n : null,\n options?.forceUpdate !== false && mode !== 'controlled'\n ? () =>\n setFieldKeys((keys) => ({\n ...keys,\n [path as string]: (keys[path as string] || 0) + 1,\n }))\n : null,\n ],\n });\n },\n [onValuesChange, rules]\n );\n\n const setValues: SetValues<Values> = useCallback(\n (values) => {\n const previousValues = $values.refValues.current;\n $values.setValues({ values, updateState: mode === 'controlled' });\n clearInputErrorOnChange && $errors.clearErrors();\n mode === 'uncontrolled' && setFormKey((key) => key + 1);\n\n Object.keys($watch.subscribers.current).forEach((path) => {\n const value = getPath(path, $values.refValues.current);\n const previousValue = getPath(path, previousValues);\n\n if (value !== previousValue) {\n $watch\n .getFieldSubscribers(path)\n .forEach((cb) => cb({ previousValues, updatedValues: $values.refValues.current }));\n }\n });\n },\n [onValuesChange, clearInputErrorOnChange]\n );\n\n const validate: Validate = useCallback(() => {\n const results = validateValues(rules, $values.refValues.current);\n $errors.setErrors(results.errors);\n return results;\n }, [rules]);\n\n const validateField: ValidateField<Values> = useCallback(\n (path) => {\n const results = validateFieldValue(path, rules, $values.refValues.current);\n results.hasError ? $errors.setFieldError(path, results.error) : $errors.clearFieldError(path);\n return results;\n },\n [rules]\n );\n\n const getInputProps: GetInputProps<Values> = (\n path,\n { type = 'input', withError = true, withFocus = true, ...otherOptions } = {}\n ) => {\n const onChange = getInputOnChange((value) =>\n setFieldValue(path, value as any, { forceUpdate: false })\n );\n\n const payload: any = { onChange, 'data-path': getDataPath(name, path) };\n\n if (withError) {\n payload.error = $errors.errorsState[path];\n }\n\n if (type === 'checkbox') {\n payload[mode === 'controlled' ? 'checked' : 'defaultChecked'] = getPath(\n path,\n $values.refValues.current\n );\n } else {\n payload[mode === 'controlled' ? 'value' : 'defaultValue'] = getPath(\n path,\n $values.refValues.current\n );\n }\n\n if (withFocus) {\n payload.onFocus = () => $status.setFieldTouched(path, true);\n payload.onBlur = () => {\n if (shouldValidateOnChange(path, validateInputOnBlur)) {\n const validationResults = validateFieldValue(path, rules, $values.refValues.current);\n\n validationResults.hasError\n ? $errors.setFieldError(path, validationResults.error)\n : $errors.clearFieldError(path);\n }\n };\n }\n\n return Object.assign(\n payload,\n enhanceGetInputProps?.({\n inputProps: payload,\n field: path,\n options: { type, withError, withFocus, ...otherOptions },\n form,\n })\n );\n };\n\n const onSubmit: OnSubmit<Values, TransformValues> =\n (handleSubmit, handleValidationFailure) => (event) => {\n event?.preventDefault();\n const results = validate();\n\n if (results.hasErrors) {\n handleValidationFailure?.(results.errors, $values.refValues.current, event);\n } else {\n handleSubmit?.(transformValues($values.refValues.current) as any, event);\n }\n };\n\n const getTransformedValues: GetTransformedValues<Values, TransformValues> = (input) =>\n (transformValues as any)(input || $values.refValues.current);\n\n const onReset: OnReset = useCallback((event) => {\n event.preventDefault();\n reset();\n }, []);\n\n const isValid: IsValid<Values> = useCallback(\n (path) =>\n path\n ? !validateFieldValue(path, rules, $values.refValues.current).hasError\n : !validateValues(rules, $values.refValues.current).hasErrors,\n [rules]\n );\n\n const key: Key<Values> = (path) =>\n `${formKey}-${path as string}-${fieldKeys[path as string] || 0}`;\n\n const getInputNode: GetInputNode<Values> = useCallback(\n (path) => document.querySelector(`[data-path=\"${getDataPath(name, path)}\"]`),\n []\n );\n\n const form: UseFormReturnType<Values, TransformValues> = {\n watch: $watch.watch,\n\n initialized: $values.initialized.current,\n values: $values.stateValues,\n getValues: $values.getValues,\n setInitialValues: $values.setValuesSnapshot,\n initialize,\n setValues,\n setFieldValue,\n\n errors: $errors.errorsState,\n setErrors: $errors.setErrors,\n setFieldError: $errors.setFieldError,\n clearFieldError: $errors.clearFieldError,\n clearErrors: $errors.clearErrors,\n\n resetDirty: $status.resetDirty,\n setTouched: $status.setTouched,\n setDirty: $status.setDirty,\n isTouched: $status.isTouched,\n resetTouched: $status.resetTouched,\n isDirty: $status.isDirty,\n getTouched: $status.getTouched,\n getDirty: $status.getDirty,\n\n reorderListItem: $list.reorderListItem,\n insertListItem: $list.insertListItem,\n removeListItem: $list.removeListItem,\n\n reset,\n validate,\n validateField,\n getInputProps,\n onSubmit,\n onReset,\n isValid,\n getTransformedValues,\n key,\n\n getInputNode,\n };\n\n useFormActions(name, form);\n\n return form;\n}\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useState } from 'react';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport {\n useIncomingComputedData,\n useUpdateNodeComputedData,\n useUpdateNodeData,\n} from '@awesome-flow/core/hooks';\nimport { Exponent } from 'libnoise-ts/module/modifier';\nimport { ComputedModuleData, NodeExponentNoiseData } from '../../abstract/node-props';\n\nfunction NoiseExponentNode({ id, selected, data, type }: NodeProps<Node<NodeExponentNoiseData>>) {\n const [exponent, setExponent] = useState(data.exponent);\n\n const incoming = useIncomingComputedData<ComputedModuleData>(id);\n\n const updateNodeData = useUpdateNodeData<NodeExponentNoiseData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n useEffect(() => {\n if (incoming?.length > 0) {\n const module = new Exponent(incoming[0].module, exponent);\n updateComputedData(id, { module });\n }\n\n updateNodeData(id, { exponent });\n }, [incoming, exponent]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n Exponent:\n <NumberInput\n size=\"xs\"\n value={exponent}\n onChange={(e) => setExponent(Number(e))}\n step={0.1}\n // min={1}\n />\n </Group>\n </Stack>\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseExponentNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect } from 'react';\nimport { useIncomingComputedData, useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { Invert } from 'libnoise-ts/module/modifier';\nimport { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { ComputedModuleData } from '../../abstract/node-props';\n\nfunction NoiseInvertNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const incoming = useIncomingComputedData<ComputedModuleData>(id);\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n useEffect(() => {\n if (incoming?.length > 0) {\n const module = new Invert(incoming[0].module);\n updateComputedData(id, { module });\n }\n }, [incoming]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseInvertNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useState } from 'react';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport {\n useIncomingComputedData,\n useUpdateNodeComputedData,\n useUpdateNodeData,\n} from '@awesome-flow/core/hooks';\nimport { ComputedModuleData, NodeNormalizeNoiseData } from '../../abstract/node-props';\nimport { NormalizeNoiseModule } from '../../modules/normalize-noise-module';\n\nfunction NoiseNormalizeNode({ id, selected, data, type }: NodeProps<Node<NodeNormalizeNoiseData>>) {\n const [intervalStart, setIntervalStart] = useState(data.intervalStart);\n const [intervalEnd, setIntervalEnd] = useState(data.intervalEnd);\n\n const incoming = useIncomingComputedData<ComputedModuleData>(id);\n\n const updateNodeData = useUpdateNodeData<NodeNormalizeNoiseData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n useEffect(() => {\n if (incoming?.length) {\n const source = incoming[0].module;\n const module = new NormalizeNoiseModule(source, intervalStart, intervalEnd);\n\n updateComputedData(id, { module });\n }\n\n updateNodeData(id, { intervalStart, intervalEnd });\n }, [incoming, intervalStart, intervalEnd]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n <NumberInput\n size=\"xs\"\n w={100}\n value={intervalStart}\n onChange={(e) => setIntervalStart(Number(e))}\n />\n <NumberInput\n size=\"xs\"\n w={100}\n value={intervalEnd}\n onChange={(e) => setIntervalEnd(Number(e))}\n />\n </Group>\n </Stack>\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseNormalizeNode;\n","import Module from 'libnoise-ts/module/Module';\nimport ModifierModule from 'libnoise-ts/module/modifier';\n\nexport class NormalizeNoiseModule extends ModifierModule {\n constructor(\n source: Module,\n public lowerBound: number,\n public upperBound: number\n ) {\n super(source);\n }\n\n getValue(x: number, y: number, z: number): number {\n return normalize(this.sourceModule.getValue(x, y, z), this.lowerBound, this.upperBound);\n }\n}\n\nfunction normalize(value: number, min: number, max: number) {\n return (value - min) / (max - min);\n}\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useState } from 'react';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport {\n useIncomingComputedData,\n useUpdateNodeComputedData,\n useUpdateNodeData,\n} from '@awesome-flow/core/hooks';\nimport { ScaleBias } from 'libnoise-ts/module/modifier';\nimport { ComputedModuleData, NodeScaleBiasNoiseData } from '../../abstract/node-props';\n\nfunction NoiseScaleBiasNode({ id, selected, data, type }: NodeProps<Node<NodeScaleBiasNoiseData>>) {\n const [scale, setScale] = useState(data.scale);\n const [bias, setBias] = useState(data.bias);\n\n const incoming = useIncomingComputedData<ComputedModuleData>(id);\n\n const updateNodeData = useUpdateNodeData<NodeScaleBiasNoiseData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n useEffect(() => {\n if (incoming?.length > 0) {\n const module = new ScaleBias(incoming[0].module, scale, bias);\n updateComputedData(id, { module });\n }\n\n updateNodeData(id, { scale, bias });\n }, [incoming, scale, bias]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n Scale:\n <NumberInput\n size=\"xs\"\n w={100}\n value={scale}\n onChange={(e) => setScale(Number(e))}\n step={0.1}\n />\n </Group>\n <Group>\n Bias:\n <NumberInput\n size=\"xs\"\n w={100}\n value={bias}\n onChange={(e) => setBias(Number(e))}\n step={0.1}\n />\n </Group>\n </Stack>\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseScaleBiasNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { ActionIcon, Button, Group, NumberInput, Space } from '@mantine/core';\nimport {\n useIncomingComputedData,\n useUpdateNodeComputedData,\n useUpdateNodeData,\n} from '@awesome-flow/core/hooks';\nimport { FORM_INDEX, useForm } from '@mantine/form';\nimport { useCallback, useEffect, useState } from 'react';\nimport { Terrace } from 'libnoise-ts/module/modifier';\nimport { IconX } from '@tabler/icons-react';\nimport { randomId } from '@mantine/hooks';\nimport { NodeState } from '@awesome-flow/core/abstract';\nimport { ComputedModuleData, NodeTerraceNoiseData } from '../../abstract/node-props';\n\nfunction NoiseTerraceNode({ id, selected, data, type }: NodeProps<Node<NodeTerraceNoiseData>>) {\n const incoming = useIncomingComputedData<ComputedModuleData>(id);\n\n const updateNodeData = useUpdateNodeData<NodeTerraceNoiseData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const [values, setValues] = useState<number[]>([]);\n\n const form = useForm<{ points: { value: number; key: string }[] }>({\n mode: 'uncontrolled',\n initialValues: {\n points: [],\n },\n validateInputOnChange: [`points.${FORM_INDEX}.input`],\n clearInputErrorOnChange: true,\n onValuesChange: useCallback((values) => {\n if (form.isValid()) {\n const points = values.points.map((v) => v.value);\n setValues(points);\n updateNodeData(id, { points });\n }\n\n form.validate();\n }, []),\n });\n\n useEffect(() => {\n const points = data.points?.length\n ? data.points.map((v) => ({ value: v, key: randomId() }))\n : [1, 2].map(() => ({ value: 0, key: randomId() }));\n\n form.initialize({ points });\n }, []);\n\n useEffect(() => {\n if (incoming?.length && values?.length >= 2) {\n const module = new Terrace(incoming[0].module, values);\n updateComputedData(id, { module });\n }\n }, [values, incoming]);\n\n const fields = form.getValues().points.map((item, index) => (\n <Group mt=\"xs\" key={item.key}>\n <NumberInput\n size=\"xs\"\n placeholder=\"Input Value\"\n key={form.key(`points.${index}.value`)}\n {...form.getInputProps(`points.${index}.value`)}\n step={0.1}\n />\n {data.state === NodeState.edit && values.length > 2 && (\n <ActionIcon\n color=\"red\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => form.removeListItem('points', index)}\n >\n <IconX size=\"1rem\" />\n </ActionIcon>\n )}\n </Group>\n ));\n\n return (\n <NodeContainer id={id} selected={selected} type={type} data={data}>\n {fields}\n {data.state === NodeState.edit && (\n <>\n <Space h={10} />\n <Button\n variant=\"outline\"\n size=\"xs\"\n fullWidth\n onClick={() => form.insertListItem('points', { value: 0, key: randomId() })}\n >\n Add control point\n </Button>\n </>\n )}\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseTerraceNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useMemo } from 'react';\nimport { Divider, Stack, Text } from '@mantine/core';\nimport { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { useIncomingComputedData } from '@awesome-flow/core/hooks';\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 <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseLoggerNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useState } from 'react';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { HandlesIncomingDataStatus } from '@awesome-flow/core/components';\nimport { Text } from '@mantine/core';\nimport {\n ComputedModuleData,\n ComputedNoiseData,\n ComputedPositionsData,\n PositionNoiseValue,\n} from '../../abstract/node-props';\nimport { NoiseHandleType } from '../../abstract';\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 []\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <HandlesIncomingDataStatus\n nodeId={id}\n handles={data.handles}\n handleKey=\"dataType\"\n onDataUpdated={onDataUpdated}\n type=\"target\"\n resetComputedData\n />\n <Text mt={5}>Noise points: {size}</Text>\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseOutputNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useIncomingComputedData, useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { Group, Stack } from '@mantine/core';\nimport { BasicNodeData } from '@awesome-flow/core/abstract';\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, { textureData: dataArray, textureResolution: size });\n }\n }, [noise]);\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 <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseRawTextureNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useMemo } from 'react';\nimport { Divider, Stack, Text } from '@mantine/core';\nimport { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { useIncomingComputedData } from '@awesome-flow/core/hooks';\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 <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default PositionsLoggerNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback } from 'react';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { Blend } from 'libnoise-ts/module/selector';\nimport { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { HandlesIncomingDataStatus } from '@awesome-flow/core/components';\nimport { ComputedModuleData } from '../../abstract/node-props';\nimport { NoiseSourceControlHandle } from '../../abstract';\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\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 []\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <HandlesIncomingDataStatus\n nodeId={id}\n handles={data.handles}\n handleKey=\"dataId\"\n onDataUpdated={onDataUpdated}\n type=\"target\"\n resetComputedData\n />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseBlendNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useUpdateNodeComputedData, useUpdateNodeData } from '@awesome-flow/core/hooks';\nimport { Select } from 'libnoise-ts/module/selector';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport { HandlesIncomingDataStatus } from '@awesome-flow/core/components';\nimport { ComputedModuleData, NodeSelectNoiseData } from '../../abstract/node-props';\nimport { NoiseSourceControlHandle } from '../../abstract';\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]);\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 []\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 handleKey=\"dataId\"\n onDataUpdated={onDataUpdated}\n type=\"target\"\n resetComputedData\n />\n </Stack>\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseSelectNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback } from 'react';\nimport { useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { Displace } from 'libnoise-ts/module/transformer';\nimport { HandlesIncomingDataStatus } from '@awesome-flow/core/components';\nimport { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { ComputedModuleData } from '../../abstract/node-props';\nimport { DisplacementHandle } from '../../abstract/handle-types';\n\nfunction NoiseDisplaceNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const onDataUpdated = useCallback(\n (handleData: Record<DisplacementHandle, ComputedModuleData>) => {\n const sourceModule = handleData[DisplacementHandle.sourceModule];\n const xModule = handleData[DisplacementHandle.xModule];\n const yModule = handleData[DisplacementHandle.yModule];\n const zModule = handleData[DisplacementHandle.zModule];\n\n if (sourceModule && xModule && yModule && zModule) {\n const module = new Displace(\n sourceModule[0].module,\n xModule[0].module,\n yModule[0].module,\n zModule[0].module\n );\n\n updateComputedData(id, { module });\n }\n },\n []\n );\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <HandlesIncomingDataStatus\n nodeId={id}\n handles={data.handles}\n handleKey=\"dataId\"\n onDataUpdated={onDataUpdated}\n type=\"target\"\n resetComputedData\n />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseDisplaceNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useState } from 'react';\nimport {\n useIncomingComputedData,\n useUpdateNodeComputedData,\n useUpdateNodeData,\n} from '@awesome-flow/core/hooks';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport { RotatePoint } from 'libnoise-ts/module/transformer';\nimport { ComputedModuleData, NodeRotatePointNoiseData } from '../../abstract/node-props';\n\nfunction NoiseRotatePointNode({\n id,\n selected,\n data,\n type,\n}: NodeProps<Node<NodeRotatePointNoiseData>>) {\n const [xAngle, setXAngle] = useState(data.xAngle);\n const [yAngle, setYAngle] = useState(data.yAngle);\n const [zAngle, setZAngle] = useState(data.zAngle);\n\n const incoming = useIncomingComputedData<ComputedModuleData>(id);\n\n const updateNodeData = useUpdateNodeData<NodeRotatePointNoiseData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n useEffect(() => {\n if (incoming?.length) {\n const module = new RotatePoint(incoming[0].module, xAngle, yAngle, zAngle);\n updateComputedData(id, { module });\n }\n\n updateNodeData(id, { xAngle, yAngle, zAngle });\n }, [id, updateComputedData, updateNodeData, incoming, xAngle, yAngle, zAngle]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n X Angle:\n <NumberInput\n size=\"xs\"\n w={100}\n value={xAngle}\n onChange={(e) => setXAngle(Number(e))}\n step={0.01}\n />\n </Group>\n <Group>\n Y Angle:\n <NumberInput\n size=\"xs\"\n w={100}\n value={yAngle}\n onChange={(e) => setYAngle(Number(e))}\n step={0.01}\n />\n </Group>\n <Group>\n Z Angle:\n <NumberInput\n size=\"xs\"\n w={100}\n value={zAngle}\n onChange={(e) => setZAngle(Number(e))}\n step={0.01}\n />\n </Group>\n </Stack>\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseRotatePointNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useState } from 'react';\nimport {\n useIncomingComputedData,\n useUpdateNodeComputedData,\n useUpdateNodeData,\n} from '@awesome-flow/core/hooks';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport { ScalePoint } from 'libnoise-ts/module/transformer';\nimport { ComputedModuleData, NodeScalePointNoiseData } from '../../abstract/node-props';\n\nfunction NoiseScalePointNode({\n id,\n selected,\n data,\n type,\n}: NodeProps<Node<NodeScalePointNoiseData>>) {\n const [xScale, setXScale] = useState(data.xScale);\n const [yScale, setYScale] = useState(data.yScale);\n const [zScale, setZScale] = useState(data.zScale);\n\n const incoming = useIncomingComputedData<ComputedModuleData>(id);\n\n const updateNodeData = useUpdateNodeData<NodeScalePointNoiseData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n useEffect(() => {\n if (incoming?.length) {\n const module = new ScalePoint(incoming[0].module, xScale, yScale, zScale);\n updateComputedData(id, { module });\n }\n\n updateNodeData(id, { xScale, yScale, zScale });\n }, [id, incoming, updateComputedData, updateNodeData, xScale, yScale, zScale]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n X Scale:\n <NumberInput\n size=\"xs\"\n w={100}\n value={xScale}\n onChange={(e) => setXScale(Number(e))}\n step={0.01}\n />\n </Group>\n <Group>\n Y Scale:\n <NumberInput\n size=\"xs\"\n w={100}\n value={yScale}\n onChange={(e) => setYScale(Number(e))}\n step={0.01}\n />\n </Group>\n <Group>\n Z Scale:\n <NumberInput\n size=\"xs\"\n w={100}\n value={zScale}\n onChange={(e) => setZScale(Number(e))}\n step={0.01}\n />\n </Group>\n </Stack>\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseScalePointNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useEffect, useState } from 'react';\nimport {\n useIncomingComputedData,\n useUpdateNodeComputedData,\n useUpdateNodeData,\n} from '@awesome-flow/core/hooks';\nimport { Group, NumberInput, Stack } from '@mantine/core';\nimport { TranslatePoint } from 'libnoise-ts/module/transformer';\nimport { ComputedModuleData, NodeTranslatePointNoiseData } from '../../abstract/node-props';\n\nfunction NoiseTranslatePointNode({\n id,\n selected,\n data,\n type,\n}: NodeProps<Node<NodeTranslatePointNoiseData>>) {\n const [translateX, setTranslateX] = useState(data.translateX);\n const [translateY, setTranslateY] = useState(data.translateY);\n const [translateZ, setTranslateZ] = useState(data.translateZ);\n\n const incoming = useIncomingComputedData<ComputedModuleData>(id);\n\n const updateNodeData = useUpdateNodeData<NodeTranslatePointNoiseData>();\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n useEffect(() => {\n if (incoming?.length) {\n const module = new TranslatePoint(incoming[0].module, translateX, translateY, translateZ);\n updateComputedData(id, { module });\n }\n\n updateNodeData(id, { translateX, translateY, translateZ });\n }, [id, incoming, translateX, translateY, translateZ, updateComputedData, updateNodeData]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n Translate X:\n <NumberInput\n size=\"xs\"\n w={100}\n value={translateX}\n onChange={(e) => setTranslateX(Number(e))}\n step={1}\n />\n </Group>\n <Group>\n Translate Y:\n <NumberInput\n size=\"xs\"\n w={100}\n value={translateY}\n onChange={(e) => setTranslateY(Number(e))}\n step={1}\n />\n </Group>\n <Group>\n Translate Z:\n <NumberInput\n size=\"xs\"\n w={100}\n value={translateZ}\n onChange={(e) => setTranslateZ(Number(e))}\n step={1}\n />\n </Group>\n </Stack>\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseTranslatePointNode;\n","import { NodeContainer, NodeTrackConnections } from '@awesome-flow/core/layout';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useIncomingComputedData, useUpdateNodeComputedData } from '@awesome-flow/core/hooks';\nimport { Turbulence } from 'libnoise-ts/module/transformer';\nimport { PropertyValue } from '@awesome-flow/core/abstract';\nimport { NodePropertyVariables } from '@awesome-flow/core/components';\nimport { ComputedModuleData, NodeTurbulenceNoiseData } from '../../abstract/node-props';\n\nfunction NoiseTurbulenceNode({\n id,\n selected,\n data,\n type,\n}: NodeProps<Node<NodeTurbulenceNoiseData>>) {\n const [properties, setProperties] = useState(null);\n\n const incoming = useIncomingComputedData<ComputedModuleData>(id);\n const updateComputedData = useUpdateNodeComputedData<ComputedModuleData>();\n\n const onPropertiesChange = useCallback((props: Record<string, PropertyValue<number>>) => {\n setProperties(props);\n }, []);\n\n useEffect(() => {\n if (incoming?.length && properties) {\n const module = new Turbulence(\n incoming[0].module,\n properties.frequency.value,\n properties.power.value,\n properties.roughness.value,\n properties.seed.value\n );\n updateComputedData(id, { module });\n }\n }, [id, incoming, properties]);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <NodePropertyVariables data={data} nodeId={id} onPropertiesChange={onPropertiesChange} />\n <NodeTrackConnections handles={data.handles} nodeId={id} type=\"target\" />\n </NodeContainer>\n );\n}\n\nexport default NoiseTurbulenceNode;\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 { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeConstNoiseData } from '../../abstract/node-props';\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 { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeCylindersNoiseData } from '../../abstract/node-props';\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 { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeFBMNoiseData } from '../../abstract/node-props';\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 { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeRidgedNoiseData } from '../../abstract/node-props';\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 {\n BasicNodeData,\n CoreHandleType,\n ITemplateFactory,\n NodeTemplate,\n} 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 NoiseSimplexNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseSimplex,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Simplex Noise',\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 { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeSpheresNoiseData } from '../../abstract/node-props';\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 { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeVoronoiNoiseData } from '../../abstract/node-props';\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 { NoiseNodeType } from '../../abstract/node-types';\nimport { NodePositionData } from '../../abstract/node-props';\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 { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeGridData } from '../../abstract/node-props';\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 { 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 { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeNormalizeNoiseData } from '../../abstract/node-props';\nimport { NoiseTemplateGroup } from '../../abstract';\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 { 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';\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 { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract';\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 { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract';\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 { 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 { NodeCombineNoiseData } from '../../abstract/node-props';\nimport { NoiseCombineType } from '../../abstract/operations';\nimport { NoiseTemplateGroup } from '../../abstract';\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 { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeClampNoiseData } from '../../abstract/node-props';\nimport { NoiseTemplateGroup } from '../../abstract';\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 { 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';\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 { 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';\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 { CoreHandleType, 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 { NodeCurveNoiseData } from '../../abstract/node-props';\nimport { NoiseTemplateGroup } from '../../abstract';\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.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 { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeExponentNoiseData } from '../../abstract/node-props';\nimport { NoiseTemplateGroup } from '../../abstract';\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 { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract';\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 { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeScaleBiasNoiseData } from '../../abstract/node-props';\nimport { NoiseTemplateGroup } from '../../abstract';\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 { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeTerraceNoiseData } from '../../abstract/node-props';\nimport { NoiseTemplateGroup } from '../../abstract';\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 { NoiseHandleType, NoiseSourceControlHandle } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract';\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 { NoiseHandleType, NoiseSourceControlHandle } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeSelectNoiseData } from '../../abstract/node-props';\nimport { NoiseTemplateGroup } from '../../abstract';\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 {\n DisplacementHandle,\n DisplacementModuleHandle,\n NoiseHandleType,\n} from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract';\n\nexport class NoiseDisplaceNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData, Omit<DisplacementModuleHandle, 'id'>> = {\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 { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeRotatePointNoiseData } from '../../abstract/node-props';\nimport { NoiseTemplateGroup } from '../../abstract';\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 { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeScalePointNoiseData } from '../../abstract/node-props';\nimport { NoiseTemplateGroup } from '../../abstract';\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 { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeTranslatePointNoiseData } from '../../abstract/node-props';\nimport { NoiseTemplateGroup } from '../../abstract';\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 { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeTurbulenceNoiseData } from '../../abstract/node-props';\nimport { NoiseTemplateGroup } from '../../abstract';\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 { 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 { NoiseNodeType } from '../../abstract/node-types';\nimport { NodeFBMNoiseData } from '../../abstract/node-props';\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 {\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 { NodeTypes } from '@xyflow/react';\nimport { ITemplateFactory } from '@awesome-flow/core/abstract';\nimport NoiseSimplexNode from '../nodes/generators/noise-simplex-node';\nimport PositionConstNode from '../nodes/generators/position-const-node';\nimport PositionGridNode from '../nodes/generators/position-grid-node';\nimport NoiseNormalizeNode from '../nodes/modifiers/noise-normalize-node';\nimport NoiseConstNode from '../nodes/generators/noise-const-node';\nimport NoiseBillowNode from '../nodes/generators/noise-billow-node';\nimport NoiseLoggerNode from '../nodes/output/noise-logger-node';\nimport NoiseRawTextureNode from '../nodes/output/noise-raw-texture-node';\nimport NoiseCheckerboardNode from '../nodes/generators/noise-checkerboard-node';\nimport PositionsLoggerNode from '../nodes/output/positions-logger-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 NoiseCombineNode from '../nodes/modifiers/noise-combine-node';\nimport NoiseClampNode from '../nodes/modifiers/noise-clamp-node';\nimport NoiseAbsNode from '../nodes/modifiers/noise-abs-node';\nimport NoiseOutputNode from '../nodes/output/noise-output-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 NoiseScaleBiasNode from '../nodes/modifiers/noise-scale-bias-node';\nimport NoiseTerraceNode from '../nodes/modifiers/noise-terrace-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 { 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 { NoiseSimplexNodeTemplateFactory } from '../templates/generators/noise-simplex-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 { NoiseNormalizeNodeTemplateFactory } from '../templates/modifiers/noise-normalize-template';\nimport { NoiseLoggerNodeTemplateFactory } from '../templates/output/noise-logger-template';\nimport { NoiseRawTextureTemplateFactory } from '../templates/output/noise-raw-texture-template';\nimport { PositionLoggerNodeTemplateFactory } from '../templates/output/position-logger-template';\nimport { NoiseCombineNodeTemplateFactory } from '../templates/modifiers/noise-combine-template';\nimport { NoiseClampNodeTemplateFactory } from '../templates/modifiers/noise-clamp-template';\nimport { NoiseAbsNodeTemplateFactory } from '../templates/modifiers/noise-abs-template';\nimport { NoiseOutputNodeTemplateFactory } from '../templates/output/noise-output-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 { NoiseScaleBiasNodeTemplateFactory } from '../templates/modifiers/noise-scalebias-template';\nimport { NoiseTerraceNodeTemplateFactory } from '../templates/modifiers/noise-terrace-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';\nimport { NoiseBillowNodeTemplateFactory } from '../templates/generators/noise-billow-template';\nimport { ModuleGroupNodeTemplateFactory } from '../templates/groups/module-group-template';\nimport { ModuleGroupNode } from '../nodes';\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 noiseSimplex = 'noise-simplex',\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.noiseSimplex]: NoiseSimplexNode,\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.noiseSimplex]: new NoiseSimplexNodeTemplateFactory(),\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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","names":["exports","module","module","import_layout","import_react","import_generator","import_hooks","import_jsx_runtime","module","import_layout","import_react","import_hooks","import_generator","import_jsx_runtime","module","import_layout","import_react","import_generator","import_hooks","import_components","import_jsx_runtime","module","import_layout","import_react","import_generator","import_hooks","import_components","import_jsx_runtime","module","import_layout","import_react","import_generator","import_hooks","import_components","import_jsx_runtime","module","import_layout","import_react","import_hooks","Module","import_jsx_runtime","module","import_layout","import_react","import_generator","import_hooks","import_components","import_jsx_runtime","module","import_layout","import_react","import_generator","import_hooks","import_components","import_jsx_runtime","module","import_layout","import_react","import_core","import_hooks","import_jsx_runtime","position","import_layout","import_react","import_core","import_hooks","import_jsx_runtime","import_layout","import_react","import_core","import_hooks","import_jsx_runtime","module","import_layout","import_react","import_hooks","import_jsx_runtime","module","import_layout","import_react","import_core","import_hooks","import_modifier","import_jsx_runtime","module","import_layout","import_react","import_hooks","import_jsx_runtime","module","import_layout","import_core","import_hooks","isEqual","options","import_react","import_modifier","import_icons_react","import_hooks","import_abstract","import_jsx_runtime","values","module","import_layout","import_react","import_core","import_hooks","import_modifier","import_jsx_runtime","module","import_layout","import_react","import_hooks","import_modifier","import_jsx_runtime","module","import_layout","import_react","import_core","import_hooks","import_modifier","ModifierModule","import_jsx_runtime","module","import_layout","import_react","import_core","import_hooks","import_modifier","import_jsx_runtime","module","import_layout","import_core","import_hooks","import_react","import_modifier","import_icons_react","import_hooks","import_abstract","import_jsx_runtime","values","module","import_layout","import_react","import_core","import_hooks","import_jsx_runtime","import_layout","import_react","import_hooks","import_components","import_core","import_layout","import_react","import_hooks","import_core","import_jsx_runtime","import_layout","import_react","import_core","import_hooks","import_jsx_runtime","import_layout","import_react","import_hooks","import_components","import_jsx_runtime","module","import_layout","import_react","import_hooks","import_selector","import_core","import_components","import_jsx_runtime","module","import_layout","import_react","import_hooks","import_components","import_jsx_runtime","module","import_layout","import_react","import_hooks","import_core","import_transformer","import_jsx_runtime","module","import_layout","import_react","import_hooks","import_core","import_transformer","import_jsx_runtime","module","import_layout","import_react","import_hooks","import_core","import_transformer","import_jsx_runtime","module","import_layout","import_react","import_hooks","import_transformer","import_components","import_jsx_runtime","module","import_system","import_abstract","import_system","import_abstract","import_system","import_abstract","import_system","import_abstract","import_system","import_abstract","import_system","import_abstract","import_system","import_system","import_system","import_system","import_system","import_system","import_system","import_system","import_system","import_system","import_system","import_abstract","import_system","import_system","import_system","import_system","import_system","import_system","import_system","import_system","import_system","import_system","import_system","import_abstract","import_system","import_abstract","import_utils","import_system","import_abstract","import_utils","import_system","import_jsx_runtime","module"]}
|