shaders 2.5.116 → 2.5.117

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 (57) hide show
  1. package/dist/core/WorleyNoise-Derik4n-.js +323 -0
  2. package/dist/core/index.js +3 -2
  3. package/dist/core/registry.js +3 -2
  4. package/dist/core/{shaderRegistry-BPtUQU-N.js → shaderRegistry-Ceu0nAxP.js} +4 -2
  5. package/dist/core/shaderRegistry.d.ts.map +1 -1
  6. package/dist/core/shaders/WorleyNoise/index.d.ts +99 -0
  7. package/dist/core/shaders/WorleyNoise/index.d.ts.map +1 -0
  8. package/dist/core/shaders/WorleyNoise/index.js +5 -0
  9. package/dist/core/shaders/ZoomBlur/index.js +1 -1
  10. package/dist/js/createShader.js +1 -1
  11. package/dist/js/utils/generatePresetCode.d.ts.map +1 -1
  12. package/dist/js/utils/generatePresetCode.js +19 -0
  13. package/dist/react/Preview.js +1 -0
  14. package/dist/react/Shader.js +1 -1
  15. package/dist/react/WorleyNoise.js +217 -0
  16. package/dist/react/bundle.js +207 -207
  17. package/dist/react/components/WorleyNoise.d.ts +39 -0
  18. package/dist/react/components/WorleyNoise.d.ts.map +1 -0
  19. package/dist/react/engine/Preview.d.ts.map +1 -1
  20. package/dist/react/index.d.ts +1 -0
  21. package/dist/react/index.d.ts.map +1 -1
  22. package/dist/react/index.js +2 -1
  23. package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
  24. package/dist/react/utils/generatePresetCode.js +19 -0
  25. package/dist/registry.js +519 -0
  26. package/dist/solid/components/WorleyNoise.d.ts +36 -0
  27. package/dist/solid/components/WorleyNoise.d.ts.map +1 -0
  28. package/dist/solid/components/WorleyNoise.js +228 -0
  29. package/dist/solid/engine/Preview.d.ts.map +1 -1
  30. package/dist/solid/engine/Preview.js +216 -214
  31. package/dist/solid/engine/Shader.js +1 -1
  32. package/dist/solid/index.d.ts +1 -0
  33. package/dist/solid/index.d.ts.map +1 -1
  34. package/dist/solid/index.js +8 -6
  35. package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
  36. package/dist/solid/utils/generatePresetCode.js +19 -0
  37. package/dist/svelte/components/WorleyNoise.svelte.d.ts +26 -0
  38. package/dist/svelte/index.d.ts +1 -0
  39. package/dist/svelte/index.js +634 -434
  40. package/dist/svelte/source/components/WorleyNoise.svelte +332 -0
  41. package/dist/svelte/source/engine/Preview.svelte +2 -0
  42. package/dist/svelte/source/index.js +1 -0
  43. package/dist/svelte/utils/generatePresetCode.js +19 -0
  44. package/dist/vue/Preview.vue_vue_type_script_setup_true_lang.js +2 -0
  45. package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +28 -18
  46. package/dist/vue/WorleyNoise.js +3 -0
  47. package/dist/vue/WorleyNoise.vue_vue_type_script_setup_true_lang.js +226 -0
  48. package/dist/vue/components/WorleyNoise.vue.d.ts +61 -0
  49. package/dist/vue/components/WorleyNoise.vue.d.ts.map +1 -0
  50. package/dist/vue/engine/Shader.vue.d.ts.map +1 -1
  51. package/dist/vue/index.d.ts +1 -0
  52. package/dist/vue/index.d.ts.map +1 -1
  53. package/dist/vue/index.js +2 -1
  54. package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
  55. package/dist/vue/utils/generatePresetCode.js +19 -0
  56. package/package.json +9 -1
  57. /package/dist/core/{ZoomBlur-DLaH226M.js → ZoomBlur-BdLC9MCq.js} +0 -0
@@ -0,0 +1,217 @@
1
+ import { ShaderContext } from "./Shader.js";
2
+ import { useContext, useEffect, useId, useMemo, useRef, useState } from "react";
3
+ import { createPortal } from "react-dom";
4
+ import { createUniformsMap } from "../core/index.js";
5
+ import { setColorSpaceMode } from "../core/utilities/transformations/index.js";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { componentDefinition } from "../core/shaders/WorleyNoise/index.js";
8
+ function isPropDriver(value) {
9
+ return typeof value === "object" && value !== null && "type" in value && (value.type === "map" || value.type === "mouse" || value.type === "mouse-position" || value.type === "auto-animate");
10
+ }
11
+ function computeEffectiveProps(props, defaultProps$1) {
12
+ let baseProps = { ...defaultProps$1 };
13
+ for (const [key, value] of Object.entries(props)) if (key !== "children" && key !== "ref" && value !== void 0 && !isPropDriver(value)) baseProps[key] = value;
14
+ return baseProps;
15
+ }
16
+ var MARKER_STYLE = { display: "contents" };
17
+ var DEFAULT_TRANSFORM = {
18
+ offsetX: 0,
19
+ offsetY: 0,
20
+ rotation: 0,
21
+ scale: 1,
22
+ anchorX: .5,
23
+ anchorY: .5,
24
+ edges: "transparent"
25
+ };
26
+ var defaultProps = {
27
+ blendMode: "normal",
28
+ visible: true
29
+ };
30
+ try {
31
+ if (componentDefinition && componentDefinition.props) Object.entries(componentDefinition.props).forEach(([key, config]) => {
32
+ const propConfig = config;
33
+ if (propConfig && typeof propConfig === "object" && "default" in propConfig) defaultProps[key] = propConfig.default;
34
+ });
35
+ } catch (e) {
36
+ console.warn("Error extracting default props:", e);
37
+ }
38
+ const ShaderComponent = (props) => {
39
+ const context = useContext(ShaderContext);
40
+ if (!context) throw new Error("Shader components must be used inside an <Shader> component or another shader component");
41
+ const { shaderParentId: parentId, shaderNodeRegister: parentRegister, shaderUniformUpdate: parentUniformUpdate, shaderMetadataUpdate: parentMetadataUpdate, shaderColorSpace } = context;
42
+ const reactId = useId();
43
+ const instanceId = useMemo(() => {
44
+ return (props.id ? props.id.replace(/[^a-zA-Z0-9_]/g, "_") : null) || reactId.replace(/[^a-zA-Z0-9_]/g, "");
45
+ }, [props.id, reactId]);
46
+ const effectiveProps = useMemo(() => {
47
+ return computeEffectiveProps(props, defaultProps);
48
+ }, [props]);
49
+ const effectiveTransform = useMemo(() => ({
50
+ ...DEFAULT_TRANSFORM,
51
+ ...props.transform
52
+ }), [props.transform]);
53
+ const markerRef = useRef(null);
54
+ const isCapturesDOM = !!componentDefinition.capturesDOM;
55
+ const captureCanvasRef = useRef(null);
56
+ const [domMounted, setDomMounted] = useState(false);
57
+ const [captureSize, setCaptureSize] = useState(() => ({
58
+ w: typeof window !== "undefined" ? Math.round(window.innerWidth * Math.min(window.devicePixelRatio, 2)) : 0,
59
+ h: typeof window !== "undefined" ? Math.round(window.innerHeight * Math.min(window.devicePixelRatio, 2)) : 0
60
+ }));
61
+ useEffect(() => {
62
+ if (!isCapturesDOM) return;
63
+ setDomMounted(true);
64
+ const onResize = () => {
65
+ const d = Math.min(window.devicePixelRatio, 2);
66
+ setCaptureSize({
67
+ w: Math.round(window.innerWidth * d),
68
+ h: Math.round(window.innerHeight * d)
69
+ });
70
+ };
71
+ window.addEventListener("resize", onResize);
72
+ return () => window.removeEventListener("resize", onResize);
73
+ }, [isCapturesDOM]);
74
+ const detectedOrderRef = useRef(void 0);
75
+ const uniformsRef = useRef(null);
76
+ if (uniformsRef.current === null) {
77
+ setColorSpaceMode(shaderColorSpace);
78
+ uniformsRef.current = createUniformsMap(componentDefinition, effectiveProps, instanceId);
79
+ }
80
+ const childContextValue = useMemo(() => {
81
+ return {
82
+ ...context,
83
+ shaderParentId: instanceId
84
+ };
85
+ }, [context, instanceId]);
86
+ useEffect(() => {
87
+ if (!uniformsRef.current) return;
88
+ try {
89
+ const metadata = {
90
+ blendMode: props.blendMode || "normal",
91
+ opacity: props.opacity,
92
+ visible: props.visible === false ? false : true,
93
+ id: props.id,
94
+ mask: props.maskSource ? {
95
+ source: props.maskSource,
96
+ type: props.maskType || "alpha"
97
+ } : void 0,
98
+ maps: mapsFromProps,
99
+ renderOrder: props.renderOrder ?? detectedOrderRef.current,
100
+ transform: effectiveTransform
101
+ };
102
+ parentRegister(instanceId, componentDefinition.fragmentNode, parentId, metadata, uniformsRef.current, componentDefinition, isCapturesDOM ? captureCanvasRef.current ?? void 0 : void 0);
103
+ return () => {
104
+ parentRegister(instanceId, null, null, null, null);
105
+ };
106
+ } catch (error) {
107
+ console.error("Error registering shader node:", error);
108
+ return () => {};
109
+ }
110
+ }, [
111
+ instanceId,
112
+ parentId,
113
+ parentRegister,
114
+ domMounted
115
+ ]);
116
+ useEffect(() => {
117
+ if (props.renderOrder === void 0 && markerRef.current) {
118
+ const parent = markerRef.current.parentElement;
119
+ if (parent) {
120
+ const siblings = parent.querySelectorAll(":scope > [data-shader-id]");
121
+ const position = Array.from(siblings).indexOf(markerRef.current);
122
+ if (position >= 0) {
123
+ detectedOrderRef.current = position;
124
+ parentMetadataUpdate(instanceId, { renderOrder: position });
125
+ }
126
+ }
127
+ }
128
+ }, []);
129
+ const prevPropsRef = useRef({});
130
+ const mapsFromProps = useMemo(() => {
131
+ const maps = {};
132
+ for (const [key, value] of Object.entries(props)) if (key !== "children" && key !== "ref" && isPropDriver(value)) maps[key] = value;
133
+ return Object.keys(maps).length > 0 ? maps : void 0;
134
+ }, [props]);
135
+ useEffect(() => {
136
+ if (!uniformsRef.current) return;
137
+ try {
138
+ Object.entries(uniformsRef.current).forEach(([propName, uniformData]) => {
139
+ if (!uniformData || typeof uniformData !== "object") return;
140
+ const { uniform } = uniformData;
141
+ if (uniform?.value !== void 0 && propName in effectiveProps) {
142
+ const newValue = effectiveProps[propName];
143
+ if (isPropDriver(newValue)) return;
144
+ if (newValue !== prevPropsRef.current[propName]) {
145
+ parentUniformUpdate(instanceId, propName, newValue);
146
+ prevPropsRef.current[propName] = newValue;
147
+ }
148
+ }
149
+ });
150
+ } catch (error) {
151
+ console.error("Error updating uniforms:", error);
152
+ }
153
+ }, [
154
+ effectiveProps,
155
+ instanceId,
156
+ parentUniformUpdate
157
+ ]);
158
+ useEffect(() => {
159
+ try {
160
+ parentMetadataUpdate(instanceId, {
161
+ blendMode: props.blendMode || "normal",
162
+ opacity: props.opacity,
163
+ visible: props.visible === false ? false : true,
164
+ id: props.id,
165
+ mask: props.maskSource ? {
166
+ source: props.maskSource,
167
+ type: props.maskType || "alpha"
168
+ } : void 0,
169
+ maps: mapsFromProps,
170
+ renderOrder: props.renderOrder ?? detectedOrderRef.current,
171
+ transform: effectiveTransform
172
+ });
173
+ } catch (error) {
174
+ console.error("Error updating metadata:", error);
175
+ }
176
+ }, [
177
+ props.blendMode,
178
+ props.opacity,
179
+ props.visible,
180
+ props.maskSource,
181
+ props.maskType,
182
+ props.renderOrder,
183
+ props.id,
184
+ mapsFromProps,
185
+ effectiveTransform,
186
+ instanceId,
187
+ parentMetadataUpdate
188
+ ]);
189
+ if (props.ref && typeof props.ref === "function") try {
190
+ props.ref(null);
191
+ } catch (e) {}
192
+ const captureCanvas = isCapturesDOM && domMounted ? createPortal(/* @__PURE__ */ jsx("canvas", {
193
+ ref: captureCanvasRef,
194
+ "layoutsubtree": "",
195
+ width: captureSize.w,
196
+ height: captureSize.h,
197
+ style: {
198
+ position: "fixed",
199
+ inset: 0,
200
+ width: "100vw",
201
+ height: "100vh",
202
+ zIndex: -9999
203
+ },
204
+ children: props.children
205
+ }), document.body) : null;
206
+ return /* @__PURE__ */ jsxs(ShaderContext.Provider, {
207
+ value: childContextValue,
208
+ children: [/* @__PURE__ */ jsx("span", {
209
+ ref: markerRef,
210
+ style: MARKER_STYLE,
211
+ "data-shader-id": instanceId,
212
+ children: !isCapturesDOM && props.children
213
+ }), captureCanvas]
214
+ });
215
+ };
216
+ var WorleyNoise_default = ShaderComponent;
217
+ export { ShaderComponent, WorleyNoise_default as default };