@awesome-flow/noise 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/abstract/index.cjs +4234 -0
  2. package/dist/abstract/index.cjs.map +1 -0
  3. package/dist/abstract/index.d.cts +137 -0
  4. package/dist/abstract/index.d.ts +137 -0
  5. package/dist/abstract/index.js +4271 -0
  6. package/dist/abstract/index.js.map +1 -0
  7. package/dist/handle-types-D-v5S53h.d.cts +22 -0
  8. package/dist/handle-types-D-v5S53h.d.ts +22 -0
  9. package/dist/layout/index.cjs +164 -0
  10. package/dist/layout/index.cjs.map +1 -0
  11. package/dist/layout/index.d.cts +26 -0
  12. package/dist/layout/index.d.ts +26 -0
  13. package/dist/layout/index.js +136 -0
  14. package/dist/layout/index.js.map +1 -0
  15. package/dist/modules/index.cjs +71 -0
  16. package/dist/modules/index.cjs.map +1 -0
  17. package/dist/modules/index.d.cts +18 -0
  18. package/dist/modules/index.d.ts +18 -0
  19. package/dist/modules/index.js +34 -0
  20. package/dist/modules/index.js.map +1 -0
  21. package/dist/node-props-CeZ8Oshz.d.ts +161 -0
  22. package/dist/node-props-hKW-_KOU.d.cts +161 -0
  23. package/dist/nodes/generators/index.cjs +640 -0
  24. package/dist/nodes/generators/index.cjs.map +1 -0
  25. package/dist/nodes/generators/index.d.cts +38 -0
  26. package/dist/nodes/generators/index.d.ts +38 -0
  27. package/dist/nodes/generators/index.js +592 -0
  28. package/dist/nodes/generators/index.js.map +1 -0
  29. package/dist/nodes/groups/index.cjs +104 -0
  30. package/dist/nodes/groups/index.cjs.map +1 -0
  31. package/dist/nodes/groups/index.d.cts +7 -0
  32. package/dist/nodes/groups/index.d.ts +7 -0
  33. package/dist/nodes/groups/index.js +78 -0
  34. package/dist/nodes/groups/index.js.map +1 -0
  35. package/dist/nodes/index.cjs +2830 -0
  36. package/dist/nodes/index.cjs.map +1 -0
  37. package/dist/nodes/index.d.cts +16 -0
  38. package/dist/nodes/index.d.ts +16 -0
  39. package/dist/nodes/index.js +2840 -0
  40. package/dist/nodes/index.js.map +1 -0
  41. package/dist/nodes/modifiers/index.cjs +1593 -0
  42. package/dist/nodes/modifiers/index.cjs.map +1 -0
  43. package/dist/nodes/modifiers/index.d.cts +32 -0
  44. package/dist/nodes/modifiers/index.d.ts +32 -0
  45. package/dist/nodes/modifiers/index.js +1612 -0
  46. package/dist/nodes/modifiers/index.js.map +1 -0
  47. package/dist/nodes/output/index.cjs +210 -0
  48. package/dist/nodes/output/index.cjs.map +1 -0
  49. package/dist/nodes/output/index.d.cts +13 -0
  50. package/dist/nodes/output/index.d.ts +13 -0
  51. package/dist/nodes/output/index.js +181 -0
  52. package/dist/nodes/output/index.js.map +1 -0
  53. package/dist/nodes/selectors/index.cjs +136 -0
  54. package/dist/nodes/selectors/index.cjs.map +1 -0
  55. package/dist/nodes/selectors/index.d.cts +16 -0
  56. package/dist/nodes/selectors/index.d.ts +16 -0
  57. package/dist/nodes/selectors/index.js +113 -0
  58. package/dist/nodes/selectors/index.js.map +1 -0
  59. package/dist/nodes/transformers/index.cjs +477 -0
  60. package/dist/nodes/transformers/index.cjs.map +1 -0
  61. package/dist/nodes/transformers/index.d.cts +22 -0
  62. package/dist/nodes/transformers/index.d.ts +22 -0
  63. package/dist/nodes/transformers/index.js +459 -0
  64. package/dist/nodes/transformers/index.js.map +1 -0
  65. package/dist/properties-BxwtU6i9.d.cts +9 -0
  66. package/dist/properties-BxwtU6i9.d.ts +9 -0
  67. package/dist/templates/generators/index.cjs +1714 -0
  68. package/dist/templates/generators/index.cjs.map +1 -0
  69. package/dist/templates/generators/index.d.cts +89 -0
  70. package/dist/templates/generators/index.d.ts +89 -0
  71. package/dist/templates/generators/index.js +1723 -0
  72. package/dist/templates/generators/index.js.map +1 -0
  73. package/dist/templates/groups/index.cjs +1690 -0
  74. package/dist/templates/groups/index.cjs.map +1 -0
  75. package/dist/templates/groups/index.d.cts +11 -0
  76. package/dist/templates/groups/index.d.ts +11 -0
  77. package/dist/templates/groups/index.js +1711 -0
  78. package/dist/templates/groups/index.js.map +1 -0
  79. package/dist/templates/index.cjs +1758 -0
  80. package/dist/templates/index.cjs.map +1 -0
  81. package/dist/templates/index.d.cts +15 -0
  82. package/dist/templates/index.d.ts +15 -0
  83. package/dist/templates/index.js +1745 -0
  84. package/dist/templates/index.js.map +1 -0
  85. package/dist/templates/modifiers/index.cjs +1708 -0
  86. package/dist/templates/modifiers/index.cjs.map +1 -0
  87. package/dist/templates/modifiers/index.d.cts +71 -0
  88. package/dist/templates/modifiers/index.d.ts +71 -0
  89. package/dist/templates/modifiers/index.js +1720 -0
  90. package/dist/templates/modifiers/index.js.map +1 -0
  91. package/dist/templates/output/index.cjs +1696 -0
  92. package/dist/templates/output/index.cjs.map +1 -0
  93. package/dist/templates/output/index.d.cts +29 -0
  94. package/dist/templates/output/index.d.ts +29 -0
  95. package/dist/templates/output/index.js +1714 -0
  96. package/dist/templates/output/index.js.map +1 -0
  97. package/dist/templates/selectors/index.cjs +1692 -0
  98. package/dist/templates/selectors/index.cjs.map +1 -0
  99. package/dist/templates/selectors/index.d.cts +22 -0
  100. package/dist/templates/selectors/index.d.ts +22 -0
  101. package/dist/templates/selectors/index.js +1712 -0
  102. package/dist/templates/selectors/index.js.map +1 -0
  103. package/dist/templates/transformers/index.cjs +1698 -0
  104. package/dist/templates/transformers/index.cjs.map +1 -0
  105. package/dist/templates/transformers/index.d.cts +40 -0
  106. package/dist/templates/transformers/index.d.ts +40 -0
  107. package/dist/templates/transformers/index.js +1715 -0
  108. package/dist/templates/transformers/index.js.map +1 -0
  109. package/package.json +111 -0
@@ -0,0 +1,592 @@
1
+ // src/nodes/generators/noise-billow-node.tsx
2
+ import { NodeContainer, NodeTrackConnections } from "@awesome-flow/core/layout";
3
+ import { useCallback as useCallback2, useMemo as useMemo2 } from "react";
4
+ import { Billow } from "libnoise-ts/module/generator";
5
+ import { useUpdateNodeComputedData } from "@awesome-flow/core/hooks";
6
+ import { nodeDataPropertyExcept as nodeDataPropertyExcept2 } from "@awesome-flow/core/abstract";
7
+
8
+ // src/layout/node-property-variables.tsx
9
+ import { useIncomingNodeData, useUpdateNodeData } from "@awesome-flow/core/hooks";
10
+ import { useCallback, useEffect, useMemo, useState } from "react";
11
+ import { Group, Stack } from "@mantine/core";
12
+ import { getObjectKeys } from "@awesome-flow/core/utils";
13
+ import { nodeDataPropertyExcept } from "@awesome-flow/core/abstract";
14
+
15
+ // src/layout/node-value-input.tsx
16
+ import { Input, NumberInput, Switch } from "@mantine/core";
17
+ import { Fragment, jsx } from "react/jsx-runtime";
18
+ function NodeValueInput({ value, disabled, step, onChange }) {
19
+ if (value === void 0 || value === null) {
20
+ return /* @__PURE__ */ jsx(Fragment, {});
21
+ }
22
+ switch (typeof value) {
23
+ case "boolean": {
24
+ return /* @__PURE__ */ jsx(
25
+ Switch,
26
+ {
27
+ checked: value,
28
+ disabled,
29
+ onChange: (e) => onChange(e.currentTarget.checked)
30
+ }
31
+ );
32
+ }
33
+ case "number": {
34
+ return /* @__PURE__ */ jsx(NumberInput, { value, disabled, step, onChange: (e) => onChange(e) });
35
+ }
36
+ case "string": {
37
+ return /* @__PURE__ */ jsx(
38
+ Input,
39
+ {
40
+ value,
41
+ disabled,
42
+ onChange: (e) => onChange(e.currentTarget.value)
43
+ }
44
+ );
45
+ }
46
+ default:
47
+ throw new Error(`Unknown input node for value of type: ${typeof value} (${value})`);
48
+ }
49
+ }
50
+ var node_value_input_default = NodeValueInput;
51
+
52
+ // src/layout/node-property-input.tsx
53
+ import { Fragment as Fragment2, jsx as jsx2 } from "react/jsx-runtime";
54
+ function NodePropertyInput({ property, onChange }) {
55
+ if (!property) {
56
+ return /* @__PURE__ */ jsx2(Fragment2, {});
57
+ }
58
+ return /* @__PURE__ */ jsx2(
59
+ node_value_input_default,
60
+ {
61
+ value: property.value,
62
+ disabled: property.disabled,
63
+ step: property.step,
64
+ onChange: (value) => onChange(property.name, value)
65
+ }
66
+ );
67
+ }
68
+ var node_property_input_default = NodePropertyInput;
69
+
70
+ // src/layout/node-property-variables.tsx
71
+ import { jsx as jsx3, jsxs } from "react/jsx-runtime";
72
+ function NodePropertyVariables({
73
+ data,
74
+ nodeId,
75
+ onPropertiesChange,
76
+ except = nodeDataPropertyExcept
77
+ }) {
78
+ const [properties, setProperties] = useState(() => {
79
+ const keys = getObjectKeys(data, except);
80
+ const dataProps = {};
81
+ for (const key of keys) {
82
+ dataProps[key] = {
83
+ name: key,
84
+ value: data[key]
85
+ };
86
+ }
87
+ return dataProps;
88
+ });
89
+ const updateNodeData = useUpdateNodeData();
90
+ const incoming = useIncomingNodeData(nodeId);
91
+ const resetAllDisabled = useCallback(() => {
92
+ const keys = Object.keys(properties);
93
+ keys.forEach((k) => {
94
+ properties[k].disabled = false;
95
+ });
96
+ setProperties(properties);
97
+ }, []);
98
+ const updatePropertyValue = useCallback((name, value, disabled) => {
99
+ let property = properties[name];
100
+ if (property) {
101
+ property.value = value;
102
+ } else {
103
+ property = {
104
+ name,
105
+ value
106
+ };
107
+ }
108
+ property.disabled = disabled;
109
+ setProperties({ ...properties, [name]: property });
110
+ updateNodeData(nodeId, { [name]: value });
111
+ }, []);
112
+ useEffect(() => {
113
+ resetAllDisabled();
114
+ if (incoming?.length) {
115
+ for (const connection of incoming) {
116
+ if (connection.property && properties[connection.property.name] !== void 0) {
117
+ updatePropertyValue(connection.property.name, connection.property.value, true);
118
+ }
119
+ }
120
+ }
121
+ }, [incoming]);
122
+ useEffect(() => {
123
+ if (onPropertiesChange) {
124
+ onPropertiesChange(properties);
125
+ }
126
+ }, [onPropertiesChange, properties]);
127
+ const nodes = useMemo(() => {
128
+ return Object.keys(properties).map((key) => {
129
+ const property = properties[key];
130
+ return /* @__PURE__ */ jsxs(Group, { children: [
131
+ property.name,
132
+ ":",
133
+ /* @__PURE__ */ jsx3(node_property_input_default, { property, onChange: updatePropertyValue })
134
+ ] }, key);
135
+ });
136
+ }, [properties, updatePropertyValue]);
137
+ return /* @__PURE__ */ jsx3(Stack, { children: nodes });
138
+ }
139
+ var node_property_variables_default = NodePropertyVariables;
140
+
141
+ // src/nodes/generators/noise-billow-node.tsx
142
+ import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
143
+ function NoiseBillowNode({ id, selected, data, type }) {
144
+ const updateComputedData = useUpdateNodeComputedData();
145
+ const module = useMemo2(() => new Billow(), []);
146
+ const onPropertiesChange = useCallback2(
147
+ (properties) => {
148
+ Object.keys(properties).forEach((k) => {
149
+ module[k] = properties[k].value;
150
+ });
151
+ updateComputedData(id, { module });
152
+ },
153
+ [id, module, updateComputedData]
154
+ );
155
+ return /* @__PURE__ */ jsxs2(NodeContainer, { id, selected, data, type, children: [
156
+ /* @__PURE__ */ jsx4(
157
+ node_property_variables_default,
158
+ {
159
+ data,
160
+ except: nodeDataPropertyExcept2,
161
+ nodeId: id,
162
+ onPropertiesChange
163
+ }
164
+ ),
165
+ /* @__PURE__ */ jsx4(NodeTrackConnections, { handles: data.handles, nodeId: id, type: "target" })
166
+ ] });
167
+ }
168
+ var noise_billow_node_default = NoiseBillowNode;
169
+
170
+ // src/nodes/generators/noise-checkerboard-node.tsx
171
+ import { NodeContainer as NodeContainer2 } from "@awesome-flow/core/layout";
172
+ import { useEffect as useEffect2, useMemo as useMemo3 } from "react";
173
+ import { Checkerboard } from "libnoise-ts/module/generator";
174
+ import { useUpdateNodeComputedData as useUpdateNodeComputedData2 } from "@awesome-flow/core/hooks";
175
+ import { jsx as jsx5 } from "react/jsx-runtime";
176
+ function NoiseCheckerboardNode({ id, selected, data, type }) {
177
+ const updateComputedData = useUpdateNodeComputedData2();
178
+ const module = useMemo3(() => new Checkerboard(), []);
179
+ useEffect2(() => {
180
+ updateComputedData(id, { module });
181
+ }, [id, module, updateComputedData]);
182
+ return /* @__PURE__ */ jsx5(NodeContainer2, { id, selected, data, type });
183
+ }
184
+ var noise_checkerboard_node_default = NoiseCheckerboardNode;
185
+
186
+ // src/nodes/generators/noise-const-node.tsx
187
+ import { NodeContainer as NodeContainer3 } from "@awesome-flow/core/layout";
188
+ import { useEffect as useEffect3, useMemo as useMemo4, useState as useState2 } from "react";
189
+ import { Group as Group2, NumberInput as NumberInput2, Stack as Stack2 } from "@mantine/core";
190
+ import { useUpdateNodeComputedData as useUpdateNodeComputedData3, useUpdateNodeData as useUpdateNodeData2 } from "@awesome-flow/core/hooks";
191
+ import { Const } from "libnoise-ts/module/generator";
192
+ import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
193
+ function NoiseConstNode({ id, selected, data, type }) {
194
+ const [min, setMin] = useState2(data.min);
195
+ const [max, setMax] = useState2(data.max);
196
+ const [noise, setNoise] = useState2(data.noise);
197
+ const updateNodeData = useUpdateNodeData2();
198
+ const updateComputedData = useUpdateNodeComputedData3();
199
+ const module = useMemo4(() => new Const(), []);
200
+ useEffect3(() => {
201
+ module.value = noise;
202
+ updateNodeData(id, { noise, min, max });
203
+ updateComputedData(id, { module });
204
+ }, [noise, min, max, module, updateNodeData, id, updateComputedData]);
205
+ return /* @__PURE__ */ jsx6(NodeContainer3, { id, selected, data, type, children: /* @__PURE__ */ jsxs3(Stack2, { children: [
206
+ /* @__PURE__ */ jsxs3(Group2, { children: [
207
+ /* @__PURE__ */ jsx6(NumberInput2, { size: "xs", w: 100, value: min, onChange: (e) => setMin(Number(e)) }),
208
+ /* @__PURE__ */ jsx6(NumberInput2, { size: "xs", w: 100, value: max, onChange: (e) => setMax(Number(e)) })
209
+ ] }),
210
+ /* @__PURE__ */ jsxs3(Group2, { children: [
211
+ "noise:",
212
+ /* @__PURE__ */ jsx6(
213
+ NumberInput2,
214
+ {
215
+ size: "xs",
216
+ value: noise,
217
+ onChange: (e) => setNoise(Number(e)),
218
+ max,
219
+ min,
220
+ step: 0.1
221
+ }
222
+ )
223
+ ] })
224
+ ] }) });
225
+ }
226
+ var noise_const_node_default = NoiseConstNode;
227
+
228
+ // src/nodes/generators/noise-cylinders-node.tsx
229
+ import { NodeContainer as NodeContainer4, NodeTrackConnections as NodeTrackConnections2 } from "@awesome-flow/core/layout";
230
+ import { useCallback as useCallback3, useMemo as useMemo5 } from "react";
231
+ import { Cylinders } from "libnoise-ts/module/generator";
232
+ import { useUpdateNodeComputedData as useUpdateNodeComputedData4 } from "@awesome-flow/core/hooks";
233
+ import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
234
+ function NoiseCylindersNode({ id, selected, data, type }) {
235
+ const updateComputedData = useUpdateNodeComputedData4();
236
+ const module = useMemo5(() => new Cylinders(), []);
237
+ const onPropertiesChange = useCallback3(
238
+ (properties) => {
239
+ Object.keys(properties).forEach((k) => {
240
+ module[k] = properties[k].value;
241
+ });
242
+ updateComputedData(id, { module });
243
+ },
244
+ [id, module, updateComputedData]
245
+ );
246
+ return /* @__PURE__ */ jsxs4(NodeContainer4, { id, selected, data, type, children: [
247
+ /* @__PURE__ */ jsx7(node_property_variables_default, { data, nodeId: id, onPropertiesChange }),
248
+ /* @__PURE__ */ jsx7(NodeTrackConnections2, { handles: data.handles, nodeId: id, type: "target" })
249
+ ] });
250
+ }
251
+ var noise_cylinders_node_default = NoiseCylindersNode;
252
+
253
+ // src/nodes/generators/noise-perlin-node.tsx
254
+ import { NodeContainer as NodeContainer5, NodeTrackConnections as NodeTrackConnections3 } from "@awesome-flow/core/layout";
255
+ import { useCallback as useCallback4, useMemo as useMemo6 } from "react";
256
+ import { Perlin } from "libnoise-ts/module/generator";
257
+ import { useUpdateNodeComputedData as useUpdateNodeComputedData5 } from "@awesome-flow/core/hooks";
258
+ import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
259
+ function NoisePerlinNode({ id, selected, data, type }) {
260
+ const updateComputedData = useUpdateNodeComputedData5();
261
+ const module = useMemo6(() => new Perlin(), []);
262
+ const onPropertiesChange = useCallback4(
263
+ (properties) => {
264
+ Object.keys(properties).forEach((k) => {
265
+ module[k] = properties[k].value;
266
+ });
267
+ updateComputedData(id, { module });
268
+ },
269
+ [id, module, updateComputedData]
270
+ );
271
+ return /* @__PURE__ */ jsxs5(NodeContainer5, { id, selected, data, type, children: [
272
+ /* @__PURE__ */ jsx8(node_property_variables_default, { data, nodeId: id, onPropertiesChange }),
273
+ /* @__PURE__ */ jsx8(NodeTrackConnections3, { handles: data.handles, nodeId: id, type: "target" })
274
+ ] });
275
+ }
276
+ var noise_perlin_node_default = NoisePerlinNode;
277
+
278
+ // src/nodes/generators/noise-ridgedmulti-node.tsx
279
+ import { NodeContainer as NodeContainer6, NodeTrackConnections as NodeTrackConnections4 } from "@awesome-flow/core/layout";
280
+ import { useCallback as useCallback5, useMemo as useMemo7 } from "react";
281
+ import { RidgedMulti } from "libnoise-ts/module/generator";
282
+ import { useUpdateNodeComputedData as useUpdateNodeComputedData6 } from "@awesome-flow/core/hooks";
283
+ import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
284
+ function NoiseRidgedMultiNode({ id, selected, data, type }) {
285
+ const updateComputedData = useUpdateNodeComputedData6();
286
+ const module = useMemo7(() => new RidgedMulti(), []);
287
+ const onPropertiesChange = useCallback5((properties) => {
288
+ Object.keys(properties).forEach((k) => module[k] = properties[k].value);
289
+ updateComputedData(id, { module });
290
+ }, []);
291
+ return /* @__PURE__ */ jsxs6(NodeContainer6, { id, selected, data, type, children: [
292
+ /* @__PURE__ */ jsx9(node_property_variables_default, { data, nodeId: id, onPropertiesChange }),
293
+ /* @__PURE__ */ jsx9(NodeTrackConnections4, { handles: data.handles, nodeId: id, type: "target" })
294
+ ] });
295
+ }
296
+ var noise_ridgedmulti_node_default = NoiseRidgedMultiNode;
297
+
298
+ // src/nodes/generators/noise-simplex-node.tsx
299
+ import { NodeContainer as NodeContainer7 } from "@awesome-flow/core/layout";
300
+ import { useEffect as useEffect4, useMemo as useMemo8 } from "react";
301
+ import { useUpdateNodeComputedData as useUpdateNodeComputedData7 } from "@awesome-flow/core/hooks";
302
+
303
+ // src/modules/simplex-module.ts
304
+ import Module from "libnoise-ts/module/Module";
305
+ import { createNoise3D } from "simplex-noise";
306
+ var SimplexModule = class extends Module {
307
+ noise;
308
+ constructor(random) {
309
+ super();
310
+ this.noise = createNoise3D(random);
311
+ }
312
+ getValue(x, y, z) {
313
+ return this.noise(x, y, z);
314
+ }
315
+ };
316
+
317
+ // src/nodes/generators/noise-simplex-node.tsx
318
+ import { jsx as jsx10 } from "react/jsx-runtime";
319
+ function NoiseSimplexNode({ id, selected, data, type }) {
320
+ const updateComputedData = useUpdateNodeComputedData7();
321
+ const module = useMemo8(() => new SimplexModule(), []);
322
+ useEffect4(() => {
323
+ updateComputedData(id, { module });
324
+ }, []);
325
+ return /* @__PURE__ */ jsx10(NodeContainer7, { id, selected, data, type });
326
+ }
327
+ var noise_simplex_node_default = NoiseSimplexNode;
328
+
329
+ // src/nodes/generators/noise-spheres-node.tsx
330
+ import { NodeContainer as NodeContainer8, NodeTrackConnections as NodeTrackConnections5 } from "@awesome-flow/core/layout";
331
+ import { useCallback as useCallback6, useMemo as useMemo9 } from "react";
332
+ import { Spheres } from "libnoise-ts/module/generator";
333
+ import { useUpdateNodeComputedData as useUpdateNodeComputedData8 } from "@awesome-flow/core/hooks";
334
+ import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
335
+ function NoiseSpheresNode({ id, selected, data, type }) {
336
+ const updateComputedData = useUpdateNodeComputedData8();
337
+ const module = useMemo9(() => new Spheres(), []);
338
+ const onPropertiesChange = useCallback6((properties) => {
339
+ Object.keys(properties).forEach((k) => module[k] = properties[k].value);
340
+ updateComputedData(id, { module });
341
+ }, []);
342
+ return /* @__PURE__ */ jsxs7(NodeContainer8, { id, selected, data, type, children: [
343
+ /* @__PURE__ */ jsx11(node_property_variables_default, { data, nodeId: id, onPropertiesChange }),
344
+ /* @__PURE__ */ jsx11(NodeTrackConnections5, { handles: data.handles, nodeId: id, type: "target" })
345
+ ] });
346
+ }
347
+ var noise_spheres_node_default = NoiseSpheresNode;
348
+
349
+ // src/nodes/generators/noise-voronoi-node.tsx
350
+ import { NodeContainer as NodeContainer9, NodeTrackConnections as NodeTrackConnections6 } from "@awesome-flow/core/layout";
351
+ import { useCallback as useCallback7 } from "react";
352
+ import { Voronoi } from "libnoise-ts/module/generator";
353
+ import { useUpdateNodeComputedData as useUpdateNodeComputedData9 } from "@awesome-flow/core/hooks";
354
+ import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
355
+ function NoiseVoronoiNode({ id, selected, data, type }) {
356
+ const updateComputedData = useUpdateNodeComputedData9();
357
+ const onPropertiesChange = useCallback7(
358
+ (properties) => {
359
+ const module = new Voronoi(
360
+ properties.frequency.value,
361
+ properties.displacement.value,
362
+ properties.distance.value,
363
+ properties.seed.value
364
+ );
365
+ updateComputedData(id, { module });
366
+ },
367
+ []
368
+ );
369
+ return /* @__PURE__ */ jsxs8(NodeContainer9, { id, selected, data, type, children: [
370
+ /* @__PURE__ */ jsx12(node_property_variables_default, { data, nodeId: id, onPropertiesChange }),
371
+ /* @__PURE__ */ jsx12(NodeTrackConnections6, { handles: data.handles, nodeId: id, type: "target" })
372
+ ] });
373
+ }
374
+ var noise_voronoi_node_default = NoiseVoronoiNode;
375
+
376
+ // src/nodes/generators/position-const-node.tsx
377
+ import { NodeContainer as NodeContainer10 } from "@awesome-flow/core/layout";
378
+ import { useEffect as useEffect5, useState as useState3 } from "react";
379
+ import { Group as Group3, NumberInput as NumberInput3, Stack as Stack3 } from "@mantine/core";
380
+ import { useUpdateNodeComputedData as useUpdateNodeComputedData10, useUpdateNodeData as useUpdateNodeData3 } from "@awesome-flow/core/hooks";
381
+ import { jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
382
+ function PositionConstNode({ id, selected, data, type }) {
383
+ const position = data.position ?? { x: 0, y: 0, z: 0 };
384
+ const [x, setX] = useState3(position.x);
385
+ const [y, setY] = useState3(position.y);
386
+ const [z, setZ] = useState3(position.z);
387
+ const updateNodeData = useUpdateNodeData3();
388
+ const updateComputedData = useUpdateNodeComputedData10();
389
+ useEffect5(() => {
390
+ const position2 = { x, y, z };
391
+ updateNodeData(id, {
392
+ position: position2
393
+ });
394
+ updateComputedData(id, {
395
+ positions: [position2]
396
+ });
397
+ }, [x, y, z]);
398
+ return /* @__PURE__ */ jsx13(NodeContainer10, { id, selected, data, type, children: /* @__PURE__ */ jsxs9(Stack3, { children: [
399
+ /* @__PURE__ */ jsxs9(Group3, { children: [
400
+ "x: ",
401
+ /* @__PURE__ */ jsx13(NumberInput3, { size: "xs", w: 100, value: x, onChange: (e) => setX(Number(e)) })
402
+ ] }),
403
+ /* @__PURE__ */ jsxs9(Group3, { children: [
404
+ "y: ",
405
+ /* @__PURE__ */ jsx13(NumberInput3, { size: "xs", w: 100, value: y, onChange: (e) => setY(Number(e)) })
406
+ ] }),
407
+ /* @__PURE__ */ jsxs9(Group3, { children: [
408
+ "z: ",
409
+ /* @__PURE__ */ jsx13(NumberInput3, { size: "xs", w: 100, value: z, onChange: (e) => setZ(Number(e)) })
410
+ ] })
411
+ ] }) });
412
+ }
413
+ var position_const_node_default = PositionConstNode;
414
+
415
+ // src/nodes/generators/position-grid-node.tsx
416
+ import { NodeContainer as NodeContainer11 } from "@awesome-flow/core/layout";
417
+ import { useEffect as useEffect6, useState as useState4 } from "react";
418
+ import { Group as Group4, NumberInput as NumberInput4, Stack as Stack4 } from "@mantine/core";
419
+ import { useUpdateNodeComputedData as useUpdateNodeComputedData11, useUpdateNodeData as useUpdateNodeData4 } from "@awesome-flow/core/hooks";
420
+ import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
421
+ function PositionGridNode({ id, selected, data, type }) {
422
+ const [x, setX] = useState4(data.center?.x);
423
+ const [y, setY] = useState4(data.center?.y);
424
+ const [z, setZ] = useState4(data.center?.z);
425
+ const [radius, setRadius] = useState4(data.radius);
426
+ const updateNodeData = useUpdateNodeData4();
427
+ const updateComputedData = useUpdateNodeComputedData11();
428
+ useEffect6(() => {
429
+ updateNodeData(id, {
430
+ center: { x, y, z }
431
+ });
432
+ }, [x, y, z]);
433
+ useEffect6(() => {
434
+ updateNodeData(id, {
435
+ radius
436
+ });
437
+ }, [radius]);
438
+ useEffect6(() => {
439
+ const positions = [];
440
+ for (let i = -radius; i < radius; i++) {
441
+ for (let j = -radius; j < radius; j++) {
442
+ positions.push({ x: x + i, y: y + j, z });
443
+ }
444
+ }
445
+ updateComputedData(id, {
446
+ positions
447
+ });
448
+ }, [x, y, z, radius]);
449
+ return /* @__PURE__ */ jsx14(NodeContainer11, { id, selected, data, type, children: /* @__PURE__ */ jsxs10(Stack4, { children: [
450
+ /* @__PURE__ */ jsxs10(Group4, { children: [
451
+ "x: ",
452
+ /* @__PURE__ */ jsx14(NumberInput4, { size: "xs", w: 100, value: x, onChange: (e) => setX(Number(e)) })
453
+ ] }),
454
+ /* @__PURE__ */ jsxs10(Group4, { children: [
455
+ "y: ",
456
+ /* @__PURE__ */ jsx14(NumberInput4, { size: "xs", w: 100, value: y, onChange: (e) => setY(Number(e)) })
457
+ ] }),
458
+ /* @__PURE__ */ jsxs10(Group4, { children: [
459
+ "z: ",
460
+ /* @__PURE__ */ jsx14(NumberInput4, { size: "xs", w: 100, value: z, onChange: (e) => setZ(Number(e)) })
461
+ ] }),
462
+ /* @__PURE__ */ jsxs10(Group4, { children: [
463
+ "r: ",
464
+ /* @__PURE__ */ jsx14(NumberInput4, { size: "xs", w: 100, value: radius, onChange: (e) => setRadius(Number(e)) })
465
+ ] })
466
+ ] }) });
467
+ }
468
+ var position_grid_node_default = PositionGridNode;
469
+
470
+ // src/nodes/generators/variable-property-node.tsx
471
+ import { NodeCombobox, NodeContainer as NodeContainer12, NodeTrackConnections as NodeTrackConnections7 } from "@awesome-flow/core/layout";
472
+ import { useCallback as useCallback8, useEffect as useEffect7, useState as useState5 } from "react";
473
+ import { Stack as Stack5 } from "@mantine/core";
474
+ import { useIncomingNodeData as useIncomingNodeData2, useOutgoingNodes, useUpdateNodeData as useUpdateNodeData5 } from "@awesome-flow/core/hooks";
475
+ import { getObjectPropertyMap } from "@awesome-flow/core/utils";
476
+ import { nodeDataPropertyExcept as nodeDataPropertyExcept3 } from "@awesome-flow/core/abstract";
477
+ import { jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
478
+ function VariablePropertyNode({
479
+ id,
480
+ selected,
481
+ data,
482
+ type
483
+ }) {
484
+ const [options, setOptions] = useState5({});
485
+ const [selectedProperty, setSelectedProperty] = useState5(data.property);
486
+ const updateNodeData = useUpdateNodeData5();
487
+ const outgoing = useOutgoingNodes(id);
488
+ const incoming = useIncomingNodeData2(id);
489
+ useEffect7(() => {
490
+ if (outgoing?.length) {
491
+ const { data: data2 } = outgoing[0];
492
+ const properties = getObjectPropertyMap(data2, nodeDataPropertyExcept3);
493
+ setOptions(properties);
494
+ if (!selectedProperty) {
495
+ const keys = Object.keys(properties);
496
+ if (keys.length) {
497
+ setSelectedProperty({
498
+ name: keys[0],
499
+ value: properties[keys[0]]
500
+ });
501
+ }
502
+ }
503
+ } else {
504
+ setSelectedProperty(null);
505
+ }
506
+ }, [outgoing]);
507
+ useEffect7(() => {
508
+ if (!incoming?.length && selectedProperty?.disabled) {
509
+ setSelectedProperty({ ...selectedProperty, disabled: false });
510
+ } else if (incoming?.length && selectedProperty) {
511
+ const incomingValue = incoming[0].value;
512
+ if (incomingValue !== void 0 && incomingValue !== null) {
513
+ setSelectedProperty({
514
+ name: selectedProperty.name,
515
+ value: incomingValue,
516
+ disabled: true
517
+ });
518
+ }
519
+ }
520
+ }, [incoming]);
521
+ useEffect7(() => {
522
+ if (selectedProperty) {
523
+ updateNodeData(id, { property: selectedProperty });
524
+ }
525
+ }, [selectedProperty]);
526
+ const onPropertyChange = useCallback8(
527
+ (selected2) => {
528
+ setSelectedProperty({
529
+ name: selected2,
530
+ value: options[selected2]
531
+ });
532
+ },
533
+ [options]
534
+ );
535
+ const onValueChange = useCallback8((name, value) => {
536
+ setSelectedProperty({
537
+ name,
538
+ value
539
+ });
540
+ }, []);
541
+ return /* @__PURE__ */ jsxs11(NodeContainer12, { id, selected, data, type, children: [
542
+ /* @__PURE__ */ jsxs11(Stack5, { align: "center", children: [
543
+ /* @__PURE__ */ jsx15(
544
+ NodeCombobox,
545
+ {
546
+ options,
547
+ onChange: onPropertyChange,
548
+ selected: selectedProperty?.name,
549
+ hideListValues: true
550
+ }
551
+ ),
552
+ /* @__PURE__ */ jsx15(node_property_input_default, { property: selectedProperty, onChange: onValueChange })
553
+ ] }),
554
+ /* @__PURE__ */ jsx15(NodeTrackConnections7, { handles: data.handles, nodeId: id })
555
+ ] });
556
+ }
557
+ var variable_property_node_default = VariablePropertyNode;
558
+
559
+ // src/nodes/generators/variable-value-node.tsx
560
+ import { NodeContainer as NodeContainer13, NodeTrackConnections as NodeTrackConnections8 } from "@awesome-flow/core/layout";
561
+ import { useCallback as useCallback9, useState as useState6 } from "react";
562
+ import { useUpdateNodeData as useUpdateNodeData6 } from "@awesome-flow/core/hooks";
563
+ import { jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
564
+ function VariableValueNode({ id, selected, data, type }) {
565
+ const [value, setValue] = useState6(data.value || 0);
566
+ const updateNodeData = useUpdateNodeData6();
567
+ const onValueChange = useCallback9((newValue) => {
568
+ updateNodeData(id, { value: newValue });
569
+ setValue(newValue);
570
+ }, []);
571
+ return /* @__PURE__ */ jsxs12(NodeContainer13, { id, selected, data, type, children: [
572
+ /* @__PURE__ */ jsx16(node_value_input_default, { value, onChange: onValueChange }),
573
+ /* @__PURE__ */ jsx16(NodeTrackConnections8, { handles: data.handles, nodeId: id, type: "source" })
574
+ ] });
575
+ }
576
+ var variable_value_node_default = VariableValueNode;
577
+ export {
578
+ noise_billow_node_default as NoiseBillowNode,
579
+ noise_checkerboard_node_default as NoiseCheckerboardNode,
580
+ noise_const_node_default as NoiseConstNode,
581
+ noise_cylinders_node_default as NoiseCylindersNode,
582
+ noise_perlin_node_default as NoisePerlinNode,
583
+ noise_ridgedmulti_node_default as NoiseRidgedMultiNode,
584
+ noise_simplex_node_default as NoiseSimplexNode,
585
+ noise_spheres_node_default as NoiseSpheresNode,
586
+ noise_voronoi_node_default as NoiseVoronoiNode,
587
+ position_const_node_default as PositionConstNode,
588
+ position_grid_node_default as PositionGridNode,
589
+ variable_property_node_default as VariablePropertyNode,
590
+ variable_value_node_default as VariableValueNode
591
+ };
592
+ //# sourceMappingURL=index.js.map