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.
- package/dist/core/WorleyNoise-Derik4n-.js +323 -0
- package/dist/core/index.js +3 -2
- package/dist/core/registry.js +3 -2
- package/dist/core/{shaderRegistry-BPtUQU-N.js → shaderRegistry-Ceu0nAxP.js} +4 -2
- package/dist/core/shaderRegistry.d.ts.map +1 -1
- package/dist/core/shaders/WorleyNoise/index.d.ts +99 -0
- package/dist/core/shaders/WorleyNoise/index.d.ts.map +1 -0
- package/dist/core/shaders/WorleyNoise/index.js +5 -0
- package/dist/core/shaders/ZoomBlur/index.js +1 -1
- package/dist/js/createShader.js +1 -1
- package/dist/js/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/js/utils/generatePresetCode.js +19 -0
- package/dist/react/Preview.js +1 -0
- package/dist/react/Shader.js +1 -1
- package/dist/react/WorleyNoise.js +217 -0
- package/dist/react/bundle.js +207 -207
- package/dist/react/components/WorleyNoise.d.ts +39 -0
- package/dist/react/components/WorleyNoise.d.ts.map +1 -0
- package/dist/react/engine/Preview.d.ts.map +1 -1
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +2 -1
- package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/react/utils/generatePresetCode.js +19 -0
- package/dist/registry.js +519 -0
- package/dist/solid/components/WorleyNoise.d.ts +36 -0
- package/dist/solid/components/WorleyNoise.d.ts.map +1 -0
- package/dist/solid/components/WorleyNoise.js +228 -0
- package/dist/solid/engine/Preview.d.ts.map +1 -1
- package/dist/solid/engine/Preview.js +216 -214
- package/dist/solid/engine/Shader.js +1 -1
- package/dist/solid/index.d.ts +1 -0
- package/dist/solid/index.d.ts.map +1 -1
- package/dist/solid/index.js +8 -6
- package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/solid/utils/generatePresetCode.js +19 -0
- package/dist/svelte/components/WorleyNoise.svelte.d.ts +26 -0
- package/dist/svelte/index.d.ts +1 -0
- package/dist/svelte/index.js +634 -434
- package/dist/svelte/source/components/WorleyNoise.svelte +332 -0
- package/dist/svelte/source/engine/Preview.svelte +2 -0
- package/dist/svelte/source/index.js +1 -0
- package/dist/svelte/utils/generatePresetCode.js +19 -0
- package/dist/vue/Preview.vue_vue_type_script_setup_true_lang.js +2 -0
- package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +28 -18
- package/dist/vue/WorleyNoise.js +3 -0
- package/dist/vue/WorleyNoise.vue_vue_type_script_setup_true_lang.js +226 -0
- package/dist/vue/components/WorleyNoise.vue.d.ts +61 -0
- package/dist/vue/components/WorleyNoise.vue.d.ts.map +1 -0
- package/dist/vue/engine/Shader.vue.d.ts.map +1 -1
- package/dist/vue/index.d.ts +1 -0
- package/dist/vue/index.d.ts.map +1 -1
- package/dist/vue/index.js +2 -1
- package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/vue/utils/generatePresetCode.js +19 -0
- package/package.json +9 -1
- /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 };
|