shaders 2.5.101 → 2.5.103

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 (88) hide show
  1. package/dist/core/{FilmGrain-yBeLmqwl.js → FilmGrain-DSJiMtEp.js} +3 -3
  2. package/dist/core/Halftone-XFa7by1s.js +287 -0
  3. package/dist/core/VHS-CQJ1hV_D.js +123 -0
  4. package/dist/core/{VideoTexture-DJrkry82.js → VideoTexture-DnHIs4pp.js} +1 -1
  5. package/dist/core/{WebcamTexture-Cf8J7JB1.js → WebcamTexture-XBDo2kgN.js} +1 -1
  6. package/dist/core/index.js +13 -12
  7. package/dist/core/registry.js +13 -12
  8. package/dist/core/{shaderRegistry-X16MNgs8.js → shaderRegistry-BWuH2me2.js} +20 -18
  9. package/dist/core/shaderRegistry.d.ts.map +1 -1
  10. package/dist/core/shaders/FilmGrain/index.d.ts.map +1 -1
  11. package/dist/core/shaders/FilmGrain/index.js +1 -1
  12. package/dist/core/shaders/Halftone/index.d.ts +76 -4
  13. package/dist/core/shaders/Halftone/index.d.ts.map +1 -1
  14. package/dist/core/shaders/Halftone/index.js +2 -1
  15. package/dist/core/shaders/VHS/index.d.ts +32 -0
  16. package/dist/core/shaders/VHS/index.d.ts.map +1 -0
  17. package/dist/core/shaders/VHS/index.js +3 -0
  18. package/dist/core/shaders/Vibrance/index.js +1 -1
  19. package/dist/core/shaders/VideoTexture/index.js +2 -2
  20. package/dist/core/shaders/Vignette/index.js +1 -1
  21. package/dist/core/shaders/Voronoi/index.js +1 -1
  22. package/dist/core/shaders/WaveDistortion/index.js +1 -1
  23. package/dist/core/shaders/Weave/index.js +1 -1
  24. package/dist/core/shaders/WebcamTexture/index.js +2 -2
  25. package/dist/core/shaders/ZoomBlur/index.js +1 -1
  26. package/dist/js/createShader.js +1 -1
  27. package/dist/js/utils/generatePresetCode.d.ts.map +1 -1
  28. package/dist/js/utils/generatePresetCode.js +21 -1
  29. package/dist/react/Preview.js +1 -0
  30. package/dist/react/Shader.js +1 -1
  31. package/dist/react/VHS.js +223 -0
  32. package/dist/react/components/Halftone.d.ts +7 -2
  33. package/dist/react/components/Halftone.d.ts.map +1 -1
  34. package/dist/react/components/VHS.d.ts +35 -0
  35. package/dist/react/components/VHS.d.ts.map +1 -0
  36. package/dist/react/engine/Preview.d.ts.map +1 -1
  37. package/dist/react/index.d.ts +1 -0
  38. package/dist/react/index.d.ts.map +1 -1
  39. package/dist/react/index.js +2 -1
  40. package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
  41. package/dist/react/utils/generatePresetCode.js +21 -1
  42. package/dist/registry.js +500 -16
  43. package/dist/solid/components/Halftone.d.ts +7 -2
  44. package/dist/solid/components/Halftone.d.ts.map +1 -1
  45. package/dist/solid/components/VHS.d.ts +32 -0
  46. package/dist/solid/components/VHS.d.ts.map +1 -0
  47. package/dist/solid/components/VHS.js +228 -0
  48. package/dist/solid/engine/Preview.d.ts.map +1 -1
  49. package/dist/solid/engine/Preview.js +190 -188
  50. package/dist/solid/engine/Shader.js +1 -1
  51. package/dist/solid/index.d.ts +1 -0
  52. package/dist/solid/index.d.ts.map +1 -1
  53. package/dist/solid/index.js +24 -22
  54. package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
  55. package/dist/solid/utils/generatePresetCode.js +21 -1
  56. package/dist/svelte/components/Halftone.svelte.d.ts +6 -1
  57. package/dist/svelte/components/VHS.svelte.d.ts +22 -0
  58. package/dist/svelte/{generatePresetCode-Cdho2JhN.js → generatePresetCode-psTzYsW3.js} +21 -1
  59. package/dist/svelte/index.d.ts +1 -0
  60. package/dist/svelte/index.js +631 -431
  61. package/dist/svelte/source/components/Halftone.svelte +6 -1
  62. package/dist/svelte/source/components/VHS.svelte +328 -0
  63. package/dist/svelte/source/engine/Preview.svelte +2 -0
  64. package/dist/svelte/source/index.js +1 -0
  65. package/dist/svelte/utils/generatePresetCode.js +1 -1
  66. package/dist/vue/Halftone.vue_vue_type_script_setup_true_lang.js +13 -2
  67. package/dist/vue/Preview.vue_vue_type_script_setup_true_lang.js +2 -0
  68. package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +1 -1
  69. package/dist/vue/VHS.js +3 -0
  70. package/dist/vue/VHS.vue_vue_type_script_setup_true_lang.js +216 -0
  71. package/dist/vue/components/Halftone.vue.d.ts +6 -1
  72. package/dist/vue/components/Halftone.vue.d.ts.map +1 -1
  73. package/dist/vue/components/VHS.vue.d.ts +57 -0
  74. package/dist/vue/components/VHS.vue.d.ts.map +1 -0
  75. package/dist/vue/index.d.ts +1 -0
  76. package/dist/vue/index.d.ts.map +1 -1
  77. package/dist/vue/index.js +2 -1
  78. package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
  79. package/dist/vue/utils/generatePresetCode.js +21 -1
  80. package/package.json +9 -1
  81. package/dist/core/Halftone-BVL2oy37.js +0 -67
  82. /package/dist/core/{Vibrance-dqIV6GBe.js → Vibrance-CGvYDeds.js} +0 -0
  83. /package/dist/core/{Vignette-DB1wO1dm.js → Vignette-BJaonUVL.js} +0 -0
  84. /package/dist/core/{Voronoi-C3WIJFWc.js → Voronoi-DZemzWA4.js} +0 -0
  85. /package/dist/core/{WaveDistortion-BKma8-Ju.js → WaveDistortion--Y-m667K.js} +0 -0
  86. /package/dist/core/{Weave-xuu_vQ5e.js → Weave-CtyohvHz.js} +0 -0
  87. /package/dist/core/{ZoomBlur-UcS2iFT2.js → ZoomBlur-BwkhsFRE.js} +0 -0
  88. /package/dist/core/{browser-ClWxLlIB.js → browser-DTNngPey.js} +0 -0
@@ -0,0 +1,32 @@
1
+ import { JSX } from 'solid-js';
2
+ import { BlendMode, PropDriver, TransformConfig } from '../../core';
3
+ import { ComponentProps } from '../../core/shaders/VHS';
4
+ export type { ComponentProps };
5
+ /**
6
+ * Base props that all shader components have
7
+ */
8
+ interface BaseShaderProps {
9
+ children?: JSX.Element;
10
+ blendMode?: BlendMode;
11
+ opacity?: number;
12
+ visible?: boolean;
13
+ id?: string;
14
+ maskSource?: string;
15
+ maskType?: string;
16
+ renderOrder?: number;
17
+ transform?: Partial<TransformConfig>;
18
+ }
19
+ /**
20
+ * Component-specific props that merge base props with shader-specific props
21
+ * Note: ComponentProps are made optional since they have defaults from the shader definition
22
+ */
23
+ type ShaderComponentProps = BaseShaderProps & Partial<Omit<ComponentProps, 'wobble' | 'scanlineNoise' | 'smear'>> & {
24
+ wobble?: ComponentProps['wobble'] | PropDriver;
25
+ scanlineNoise?: ComponentProps['scanlineNoise'] | PropDriver;
26
+ smear?: ComponentProps['smear'] | PropDriver;
27
+ };
28
+ /**
29
+ * The main Solid wrapper component for Shader shader nodes
30
+ */
31
+ export default function ShaderComponent(props: ShaderComponentProps): JSX.Element;
32
+ //# sourceMappingURL=VHS.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VHS.d.ts","sourceRoot":"","sources":["../../src/components/VHS.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA0F,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAE5H,OAAO,EAGH,KAAK,SAAS,EAId,KAAK,UAAU,EACf,KAAK,eAAe,EACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG5E,YAAY,EAAE,cAAc,EAAE,CAAC;AAY/B;;GAEG;AACH,UAAU,eAAe;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACxC;AAOD;;;GAGG;AACH,KAAK,oBAAoB,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,eAAe,GAAG,OAAO,CAAC,CAAC,GAAG;IAClH,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;IAC/C,aAAa,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC;IAC7D,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;CAC9C,CAAC;AAmCF;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,oBAAoB,eA8NlE"}
@@ -0,0 +1,228 @@
1
+ import { createComponent, memo, template, setAttribute, insert, Portal, spread, mergeProps, use } from "solid-js/web";
2
+ import { splitProps, createUniqueId, createMemo, createSignal, onMount, onCleanup, createEffect } from "solid-js";
3
+ import { createUniformsMap } from "../../core/index.js";
4
+ import { setColorSpaceMode } from "../../core/utilities/transformations/index.js";
5
+ import { componentDefinition } from "../../core/shaders/VHS/index.js";
6
+ import { useShaderContext, ShaderContext } from "../engine/Shader.js";
7
+ var _tmpl$ = /* @__PURE__ */ template(`<span style=display:contents>`), _tmpl$2 = /* @__PURE__ */ template(`<canvas>`);
8
+ let _experimentalWarnedOnce = false;
9
+ if (componentDefinition.experimental && !_experimentalWarnedOnce) {
10
+ _experimentalWarnedOnce = true;
11
+ const _e = componentDefinition.experimental;
12
+ console.info(`%c⚠ [Shaders] ${componentDefinition.name} is experimental: ${_e.message}`, "color: #f59e0b; font-weight: bold");
13
+ }
14
+ function isPropDriver(value) {
15
+ return typeof value === "object" && value !== null && "type" in value && (value.type === "map" || value.type === "mouse" || value.type === "mouse-position" || value.type === "auto-animate");
16
+ }
17
+ const DEFAULT_TRANSFORM = {
18
+ offsetX: 0,
19
+ offsetY: 0,
20
+ rotation: 0,
21
+ scale: 1,
22
+ anchorX: 0.5,
23
+ anchorY: 0.5,
24
+ edges: "transparent"
25
+ };
26
+ const defaultProps = {
27
+ blendMode: "normal",
28
+ visible: true
29
+ // opacity intentionally has no default - handled by renderer
30
+ // transform intentionally has no default - handled by effectiveTransform
31
+ };
32
+ try {
33
+ if (componentDefinition && componentDefinition.props) {
34
+ Object.entries(componentDefinition.props).forEach(([key, config]) => {
35
+ const propConfig = config;
36
+ if (propConfig && typeof propConfig === "object" && "default" in propConfig) {
37
+ defaultProps[key] = propConfig.default;
38
+ }
39
+ });
40
+ }
41
+ } catch (e) {
42
+ console.warn("Error extracting default props:", e);
43
+ }
44
+ function ShaderComponent(props) {
45
+ const [local, otherProps] = splitProps(props, ["children"]);
46
+ const context = useShaderContext();
47
+ const {
48
+ shaderParentId: parentId,
49
+ shaderNodeRegister: parentRegister,
50
+ shaderUniformUpdate: parentUniformUpdate,
51
+ shaderMetadataUpdate: parentMetadataUpdate,
52
+ shaderColorSpace
53
+ } = context;
54
+ const instanceId = (props.id ? props.id.replace(/[^a-zA-Z0-9_]/g, "_") : null) || createUniqueId();
55
+ const effectiveProps = createMemo(() => {
56
+ let baseProps = {
57
+ ...defaultProps
58
+ };
59
+ for (const [key, value] of Object.entries(otherProps)) {
60
+ if (value !== void 0 && !isPropDriver(value)) {
61
+ baseProps[key] = value;
62
+ }
63
+ }
64
+ return baseProps;
65
+ });
66
+ const effectiveTransform = createMemo(() => ({
67
+ ...DEFAULT_TRANSFORM,
68
+ ...props.transform
69
+ }));
70
+ const mapsFromProps = createMemo(() => {
71
+ const maps = {};
72
+ for (const [key, value] of Object.entries(otherProps)) {
73
+ if (isPropDriver(value)) maps[key] = value;
74
+ }
75
+ return Object.keys(maps).length > 0 ? maps : void 0;
76
+ });
77
+ let uniformsMap = null;
78
+ const getUniformsMap = () => {
79
+ if (!uniformsMap) {
80
+ setColorSpaceMode(shaderColorSpace);
81
+ uniformsMap = createUniformsMap(componentDefinition, effectiveProps(), instanceId);
82
+ }
83
+ return uniformsMap;
84
+ };
85
+ const childContextValue = createMemo(() => ({
86
+ ...context,
87
+ shaderParentId: instanceId
88
+ }));
89
+ const isCapturesDOM = !!componentDefinition.capturesDOM;
90
+ let captureCanvasEl;
91
+ const [captureSize, setCaptureSize] = createSignal({
92
+ w: typeof window !== "undefined" ? Math.round(window.innerWidth * Math.min(window.devicePixelRatio, 2)) : 0,
93
+ h: typeof window !== "undefined" ? Math.round(window.innerHeight * Math.min(window.devicePixelRatio, 2)) : 0
94
+ });
95
+ if (isCapturesDOM) {
96
+ const onWinResize = () => {
97
+ const d = Math.min(window.devicePixelRatio, 2);
98
+ setCaptureSize({
99
+ w: Math.round(window.innerWidth * d),
100
+ h: Math.round(window.innerHeight * d)
101
+ });
102
+ };
103
+ onMount(() => window.addEventListener("resize", onWinResize));
104
+ onCleanup(() => window.removeEventListener("resize", onWinResize));
105
+ }
106
+ let markerRef;
107
+ let detectedRenderOrder = void 0;
108
+ let isRegistered = false;
109
+ onMount(() => {
110
+ const uniforms = getUniformsMap();
111
+ if (!uniforms) return;
112
+ try {
113
+ const metadata = {
114
+ blendMode: props.blendMode || "normal",
115
+ opacity: props.opacity,
116
+ visible: props.visible === false ? false : true,
117
+ id: props.id,
118
+ mask: props.maskSource ? {
119
+ source: props.maskSource,
120
+ type: props.maskType || "alpha"
121
+ } : void 0,
122
+ maps: mapsFromProps(),
123
+ renderOrder: props.renderOrder ?? detectedRenderOrder,
124
+ transform: effectiveTransform()
125
+ };
126
+ parentRegister(instanceId, componentDefinition.fragmentNode, parentId, metadata, uniforms, componentDefinition, isCapturesDOM ? captureCanvasEl : void 0);
127
+ isRegistered = true;
128
+ if (props.renderOrder === void 0 && markerRef) {
129
+ const parent = markerRef.parentElement;
130
+ if (parent) {
131
+ const siblings = parent.querySelectorAll(":scope > [data-shader-id]");
132
+ const position = Array.from(siblings).indexOf(markerRef);
133
+ if (position >= 0) {
134
+ detectedRenderOrder = position;
135
+ parentMetadataUpdate(instanceId, {
136
+ renderOrder: position
137
+ });
138
+ }
139
+ }
140
+ }
141
+ } catch (error) {
142
+ console.error("Error registering shader node:", error);
143
+ }
144
+ });
145
+ onCleanup(() => {
146
+ isRegistered = false;
147
+ parentRegister(instanceId, null, null, null, null);
148
+ });
149
+ createEffect(() => {
150
+ if (!isRegistered) return;
151
+ const uniforms = getUniformsMap();
152
+ if (!uniforms) return;
153
+ try {
154
+ const props_snapshot = effectiveProps();
155
+ Object.entries(uniforms).forEach(([propName, uniformData]) => {
156
+ if (!uniformData || typeof uniformData !== "object") return;
157
+ const {
158
+ uniform
159
+ } = uniformData;
160
+ if ((uniform == null ? void 0 : uniform.value) !== void 0 && propName in props_snapshot) {
161
+ const newValue = props_snapshot[propName];
162
+ parentUniformUpdate(instanceId, propName, newValue);
163
+ }
164
+ });
165
+ } catch (error) {
166
+ console.error("Error updating uniforms:", error);
167
+ }
168
+ });
169
+ createEffect(() => {
170
+ if (!isRegistered) return;
171
+ try {
172
+ const metadata = {
173
+ blendMode: props.blendMode || "normal",
174
+ opacity: props.opacity,
175
+ visible: props.visible === false ? false : true,
176
+ id: props.id,
177
+ mask: props.maskSource ? {
178
+ source: props.maskSource,
179
+ type: props.maskType || "alpha"
180
+ } : void 0,
181
+ maps: mapsFromProps(),
182
+ renderOrder: props.renderOrder ?? detectedRenderOrder,
183
+ transform: effectiveTransform()
184
+ };
185
+ parentMetadataUpdate(instanceId, metadata);
186
+ } catch (error) {
187
+ console.error("Error updating metadata:", error);
188
+ }
189
+ });
190
+ const canUseDOM = typeof document !== "undefined" && typeof window !== "undefined";
191
+ return createComponent(ShaderContext.Provider, {
192
+ get value() {
193
+ return childContextValue();
194
+ },
195
+ get children() {
196
+ return [(() => {
197
+ var _el$ = _tmpl$();
198
+ var _ref$ = markerRef;
199
+ typeof _ref$ === "function" ? use(_ref$, _el$) : markerRef = _el$;
200
+ setAttribute(_el$, "data-shader-id", instanceId);
201
+ insert(_el$, () => (!isCapturesDOM || !canUseDOM) && local.children);
202
+ return _el$;
203
+ })(), memo(() => isCapturesDOM && canUseDOM && createComponent(Portal, {
204
+ get children() {
205
+ var _el$2 = _tmpl$2();
206
+ var _ref$2 = captureCanvasEl;
207
+ typeof _ref$2 === "function" ? use(_ref$2, _el$2) : captureCanvasEl = _el$2;
208
+ spread(_el$2, mergeProps({
209
+ "layoutsubtree": ""
210
+ }, {
211
+ get width() {
212
+ return captureSize().w;
213
+ },
214
+ get height() {
215
+ return captureSize().h;
216
+ },
217
+ "style": "position:fixed;inset:0;width:100vw;height:100vh;z-index:-9999"
218
+ }), false, true);
219
+ insert(_el$2, () => local.children);
220
+ return _el$2;
221
+ }
222
+ }))];
223
+ }
224
+ });
225
+ }
226
+ export {
227
+ ShaderComponent as default
228
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"Preview.d.ts","sourceRoot":"","sources":["../../src/engine/Preview.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+C,KAAK,GAAG,EAAoC,MAAM,UAAU,CAAA;AA4TlH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,GAAG,CAAC,aAAa,GAAG,MAAM,CAAA;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAID,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,KAAK,EAAE,YAAY,eAmHlD"}
1
+ {"version":3,"file":"Preview.d.ts","sourceRoot":"","sources":["../../src/engine/Preview.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+C,KAAK,GAAG,EAAoC,MAAM,UAAU,CAAA;AA8TlH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,GAAG,CAAC,aAAa,GAAG,MAAM,CAAA;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAID,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,KAAK,EAAE,YAAY,eAmHlD"}