shaders 2.2.43 → 2.2.44

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 (274) hide show
  1. package/dist/core/index.d.ts +0 -2
  2. package/dist/core/index.d.ts.map +1 -1
  3. package/dist/core/index.js +8 -170
  4. package/dist/core/registry.d.ts +10 -0
  5. package/dist/core/registry.d.ts.map +1 -0
  6. package/dist/core/registry.js +166 -0
  7. package/dist/react/AngularBlur.js +144 -0
  8. package/dist/react/Ascii.js +144 -0
  9. package/dist/react/Beam.js +144 -0
  10. package/dist/react/Blob.js +144 -0
  11. package/dist/react/Blur.js +144 -0
  12. package/dist/react/BrightnessContrast.js +144 -0
  13. package/dist/react/Bulge.js +144 -0
  14. package/dist/react/CRTScreen.js +144 -0
  15. package/dist/react/ChannelBlur.js +144 -0
  16. package/dist/react/Checkerboard.js +144 -0
  17. package/dist/react/ChromaFlow.js +144 -0
  18. package/dist/react/ChromaticAberration.js +144 -0
  19. package/dist/react/Circle.js +144 -0
  20. package/dist/react/CursorTrail.js +144 -0
  21. package/dist/react/DiffuseBlur.js +144 -0
  22. package/dist/react/Dither.js +144 -0
  23. package/dist/react/DotGrid.js +144 -0
  24. package/dist/react/Duotone.js +144 -0
  25. package/dist/react/FilmGrain.js +144 -0
  26. package/dist/react/FloatingParticles.js +144 -0
  27. package/dist/react/GlassTiles.js +144 -0
  28. package/dist/react/Glow.js +144 -0
  29. package/dist/react/Godrays.js +144 -0
  30. package/dist/react/Grayscale.js +144 -0
  31. package/dist/react/Grid.js +144 -0
  32. package/dist/react/GridDistortion.js +144 -0
  33. package/dist/react/Group.js +144 -0
  34. package/dist/react/Halftone.js +144 -0
  35. package/dist/react/HueShift.js +144 -0
  36. package/dist/react/ImageTexture.js +144 -0
  37. package/dist/react/Invert.js +144 -0
  38. package/dist/react/LinearBlur.js +144 -0
  39. package/dist/react/LinearGradient.js +144 -0
  40. package/dist/react/Liquify.js +144 -0
  41. package/dist/react/Perspective.js +144 -0
  42. package/dist/react/Pixelate.js +144 -0
  43. package/dist/react/PolarCoordinates.js +144 -0
  44. package/dist/react/Posterize.js +144 -0
  45. package/dist/react/ProgressiveBlur.js +144 -0
  46. package/dist/react/RadialGradient.js +144 -0
  47. package/dist/react/RectangularCoordinates.js +144 -0
  48. package/dist/react/Ripples.js +144 -0
  49. package/dist/react/Saturation.js +144 -0
  50. package/dist/react/Shader.js +166 -0
  51. package/dist/react/Sharpness.js +144 -0
  52. package/dist/react/Shatter.js +144 -0
  53. package/dist/react/SimplexNoise.js +144 -0
  54. package/dist/react/SineWave.js +144 -0
  55. package/dist/react/SolidColor.js +144 -0
  56. package/dist/react/Spherize.js +144 -0
  57. package/dist/react/Spiral.js +144 -0
  58. package/dist/react/Strands.js +144 -0
  59. package/dist/react/Stretch.js +144 -0
  60. package/dist/react/Stripes.js +144 -0
  61. package/dist/react/Swirl.js +144 -0
  62. package/dist/react/TiltShift.js +144 -0
  63. package/dist/react/Tint.js +144 -0
  64. package/dist/react/Tritone.js +144 -0
  65. package/dist/react/Twirl.js +144 -0
  66. package/dist/react/Vibrance.js +144 -0
  67. package/dist/react/WaveDistortion.js +144 -0
  68. package/dist/react/WebcamTexture.js +144 -0
  69. package/dist/react/ZoomBlur.js +144 -0
  70. package/dist/react/index.js +64 -8784
  71. package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
  72. package/dist/react/utils/generatePresetCode.js +392 -1
  73. package/dist/solid/components/AngularBlur.js +148 -0
  74. package/dist/solid/components/Ascii.js +148 -0
  75. package/dist/solid/components/Beam.js +148 -0
  76. package/dist/solid/components/Blob.js +148 -0
  77. package/dist/solid/components/Blur.js +148 -0
  78. package/dist/solid/components/BrightnessContrast.js +148 -0
  79. package/dist/solid/components/Bulge.js +148 -0
  80. package/dist/solid/components/CRTScreen.js +148 -0
  81. package/dist/solid/components/ChannelBlur.js +148 -0
  82. package/dist/solid/components/Checkerboard.js +148 -0
  83. package/dist/solid/components/ChromaFlow.js +148 -0
  84. package/dist/solid/components/ChromaticAberration.js +148 -0
  85. package/dist/solid/components/Circle.js +148 -0
  86. package/dist/solid/components/CursorTrail.js +148 -0
  87. package/dist/solid/components/DiffuseBlur.js +148 -0
  88. package/dist/solid/components/Dither.js +148 -0
  89. package/dist/solid/components/DotGrid.js +148 -0
  90. package/dist/solid/components/Duotone.js +148 -0
  91. package/dist/solid/components/FilmGrain.js +148 -0
  92. package/dist/solid/components/FloatingParticles.js +148 -0
  93. package/dist/solid/components/GlassTiles.js +148 -0
  94. package/dist/solid/components/Glow.js +148 -0
  95. package/dist/solid/components/Godrays.js +148 -0
  96. package/dist/solid/components/Grayscale.js +148 -0
  97. package/dist/solid/components/Grid.js +148 -0
  98. package/dist/solid/components/GridDistortion.js +148 -0
  99. package/dist/solid/components/Group.js +148 -0
  100. package/dist/solid/components/Halftone.js +148 -0
  101. package/dist/solid/components/HueShift.js +148 -0
  102. package/dist/solid/components/ImageTexture.js +148 -0
  103. package/dist/solid/components/Invert.js +148 -0
  104. package/dist/solid/components/LinearBlur.js +148 -0
  105. package/dist/solid/components/LinearGradient.js +148 -0
  106. package/dist/solid/components/Liquify.js +148 -0
  107. package/dist/solid/components/Perspective.js +148 -0
  108. package/dist/solid/components/Pixelate.js +148 -0
  109. package/dist/solid/components/PolarCoordinates.js +148 -0
  110. package/dist/solid/components/Posterize.js +148 -0
  111. package/dist/solid/components/ProgressiveBlur.js +148 -0
  112. package/dist/solid/components/RadialGradient.js +148 -0
  113. package/dist/solid/components/RectangularCoordinates.js +148 -0
  114. package/dist/solid/components/Ripples.js +148 -0
  115. package/dist/solid/components/Saturation.js +148 -0
  116. package/dist/solid/components/Sharpness.js +148 -0
  117. package/dist/solid/components/Shatter.js +148 -0
  118. package/dist/solid/components/SimplexNoise.js +148 -0
  119. package/dist/solid/components/SineWave.js +148 -0
  120. package/dist/solid/components/SolidColor.js +148 -0
  121. package/dist/solid/components/Spherize.js +148 -0
  122. package/dist/solid/components/Spiral.js +148 -0
  123. package/dist/solid/components/Strands.js +148 -0
  124. package/dist/solid/components/Stretch.js +148 -0
  125. package/dist/solid/components/Stripes.js +148 -0
  126. package/dist/solid/components/Swirl.js +148 -0
  127. package/dist/solid/components/TiltShift.js +148 -0
  128. package/dist/solid/components/Tint.js +148 -0
  129. package/dist/solid/components/Tritone.js +148 -0
  130. package/dist/solid/components/Twirl.js +148 -0
  131. package/dist/solid/components/Vibrance.js +148 -0
  132. package/dist/solid/components/WaveDistortion.js +148 -0
  133. package/dist/solid/components/WebcamTexture.js +148 -0
  134. package/dist/solid/components/ZoomBlur.js +148 -0
  135. package/dist/solid/engine/Shader.js +189 -0
  136. package/dist/solid/index.js +126 -8989
  137. package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
  138. package/dist/solid/utils/generatePresetCode.js +62 -417
  139. package/dist/svelte/generatePresetCode-CtXcoyI0.js +393 -0
  140. package/dist/svelte/index.js +1 -1
  141. package/dist/svelte/utils/generatePresetCode.js +1 -1
  142. package/dist/vue/AngularBlur.js +3 -0
  143. package/dist/vue/AngularBlur.vue_vue_type_script_setup_true_lang.js +125 -0
  144. package/dist/vue/Ascii.js +3 -0
  145. package/dist/vue/Ascii.vue_vue_type_script_setup_true_lang.js +127 -0
  146. package/dist/vue/Beam.js +3 -0
  147. package/dist/vue/Beam.vue_vue_type_script_setup_true_lang.js +132 -0
  148. package/dist/vue/Blob.js +3 -0
  149. package/dist/vue/Blob.vue_vue_type_script_setup_true_lang.js +137 -0
  150. package/dist/vue/Blur.js +3 -0
  151. package/dist/vue/Blur.vue_vue_type_script_setup_true_lang.js +124 -0
  152. package/dist/vue/BrightnessContrast.js +3 -0
  153. package/dist/vue/BrightnessContrast.vue_vue_type_script_setup_true_lang.js +125 -0
  154. package/dist/vue/Bulge.js +3 -0
  155. package/dist/vue/Bulge.vue_vue_type_script_setup_true_lang.js +128 -0
  156. package/dist/vue/CRTScreen.js +3 -0
  157. package/dist/vue/CRTScreen.vue_vue_type_script_setup_true_lang.js +129 -0
  158. package/dist/vue/ChannelBlur.js +3 -0
  159. package/dist/vue/ChannelBlur.vue_vue_type_script_setup_true_lang.js +126 -0
  160. package/dist/vue/Checkerboard.js +3 -0
  161. package/dist/vue/Checkerboard.vue_vue_type_script_setup_true_lang.js +128 -0
  162. package/dist/vue/ChromaFlow.js +3 -0
  163. package/dist/vue/ChromaFlow.vue_vue_type_script_setup_true_lang.js +131 -0
  164. package/dist/vue/ChromaticAberration.js +3 -0
  165. package/dist/vue/ChromaticAberration.vue_vue_type_script_setup_true_lang.js +128 -0
  166. package/dist/vue/Circle.js +3 -0
  167. package/dist/vue/Circle.vue_vue_type_script_setup_true_lang.js +127 -0
  168. package/dist/vue/CursorTrail.js +3 -0
  169. package/dist/vue/CursorTrail.vue_vue_type_script_setup_true_lang.js +129 -0
  170. package/dist/vue/DiffuseBlur.js +3 -0
  171. package/dist/vue/DiffuseBlur.vue_vue_type_script_setup_true_lang.js +125 -0
  172. package/dist/vue/Dither.js +3 -0
  173. package/dist/vue/Dither.vue_vue_type_script_setup_true_lang.js +127 -0
  174. package/dist/vue/DotGrid.js +3 -0
  175. package/dist/vue/DotGrid.vue_vue_type_script_setup_true_lang.js +127 -0
  176. package/dist/vue/Duotone.js +3 -0
  177. package/dist/vue/Duotone.vue_vue_type_script_setup_true_lang.js +127 -0
  178. package/dist/vue/FilmGrain.js +3 -0
  179. package/dist/vue/FilmGrain.vue_vue_type_script_setup_true_lang.js +124 -0
  180. package/dist/vue/FloatingParticles.js +3 -0
  181. package/dist/vue/FloatingParticles.vue_vue_type_script_setup_true_lang.js +134 -0
  182. package/dist/vue/GlassTiles.js +3 -0
  183. package/dist/vue/GlassTiles.vue_vue_type_script_setup_true_lang.js +127 -0
  184. package/dist/vue/Glow.js +3 -0
  185. package/dist/vue/Glow.vue_vue_type_script_setup_true_lang.js +126 -0
  186. package/dist/vue/Godrays.js +3 -0
  187. package/dist/vue/Godrays.vue_vue_type_script_setup_true_lang.js +130 -0
  188. package/dist/vue/Grayscale.js +3 -0
  189. package/dist/vue/Grayscale.vue_vue_type_script_setup_true_lang.js +123 -0
  190. package/dist/vue/Grid.js +3 -0
  191. package/dist/vue/Grid.vue_vue_type_script_setup_true_lang.js +126 -0
  192. package/dist/vue/GridDistortion.js +3 -0
  193. package/dist/vue/GridDistortion.vue_vue_type_script_setup_true_lang.js +129 -0
  194. package/dist/vue/Group.js +3 -0
  195. package/dist/vue/Group.vue_vue_type_script_setup_true_lang.js +123 -0
  196. package/dist/vue/Halftone.js +3 -0
  197. package/dist/vue/Halftone.vue_vue_type_script_setup_true_lang.js +126 -0
  198. package/dist/vue/HueShift.js +3 -0
  199. package/dist/vue/HueShift.vue_vue_type_script_setup_true_lang.js +124 -0
  200. package/dist/vue/ImageTexture.js +3 -0
  201. package/dist/vue/ImageTexture.vue_vue_type_script_setup_true_lang.js +125 -0
  202. package/dist/vue/Invert.js +3 -0
  203. package/dist/vue/Invert.vue_vue_type_script_setup_true_lang.js +123 -0
  204. package/dist/vue/LinearBlur.js +3 -0
  205. package/dist/vue/LinearBlur.vue_vue_type_script_setup_true_lang.js +125 -0
  206. package/dist/vue/LinearGradient.js +3 -0
  207. package/dist/vue/LinearGradient.vue_vue_type_script_setup_true_lang.js +130 -0
  208. package/dist/vue/Liquify.js +3 -0
  209. package/dist/vue/Liquify.vue_vue_type_script_setup_true_lang.js +128 -0
  210. package/dist/vue/Perspective.js +3 -0
  211. package/dist/vue/Perspective.vue_vue_type_script_setup_true_lang.js +130 -0
  212. package/dist/vue/Pixelate.js +3 -0
  213. package/dist/vue/Pixelate.vue_vue_type_script_setup_true_lang.js +124 -0
  214. package/dist/vue/PolarCoordinates.js +3 -0
  215. package/dist/vue/PolarCoordinates.vue_vue_type_script_setup_true_lang.js +128 -0
  216. package/dist/vue/Posterize.js +3 -0
  217. package/dist/vue/Posterize.vue_vue_type_script_setup_true_lang.js +124 -0
  218. package/dist/vue/ProgressiveBlur.js +3 -0
  219. package/dist/vue/ProgressiveBlur.vue_vue_type_script_setup_true_lang.js +127 -0
  220. package/dist/vue/RadialGradient.js +3 -0
  221. package/dist/vue/RadialGradient.vue_vue_type_script_setup_true_lang.js +128 -0
  222. package/dist/vue/RectangularCoordinates.js +3 -0
  223. package/dist/vue/RectangularCoordinates.vue_vue_type_script_setup_true_lang.js +127 -0
  224. package/dist/vue/Ripples.js +3 -0
  225. package/dist/vue/Ripples.vue_vue_type_script_setup_true_lang.js +131 -0
  226. package/dist/vue/Saturation.js +3 -0
  227. package/dist/vue/Saturation.vue_vue_type_script_setup_true_lang.js +124 -0
  228. package/dist/vue/Shader.js +3 -0
  229. package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +153 -0
  230. package/dist/vue/Sharpness.js +3 -0
  231. package/dist/vue/Sharpness.vue_vue_type_script_setup_true_lang.js +124 -0
  232. package/dist/vue/Shatter.js +3 -0
  233. package/dist/vue/Shatter.vue_vue_type_script_setup_true_lang.js +132 -0
  234. package/dist/vue/SimplexNoise.js +3 -0
  235. package/dist/vue/SimplexNoise.vue_vue_type_script_setup_true_lang.js +130 -0
  236. package/dist/vue/SineWave.js +3 -0
  237. package/dist/vue/SineWave.vue_vue_type_script_setup_true_lang.js +131 -0
  238. package/dist/vue/SolidColor.js +3 -0
  239. package/dist/vue/SolidColor.vue_vue_type_script_setup_true_lang.js +124 -0
  240. package/dist/vue/Spherize.js +3 -0
  241. package/dist/vue/Spherize.vue_vue_type_script_setup_true_lang.js +130 -0
  242. package/dist/vue/Spiral.js +3 -0
  243. package/dist/vue/Spiral.vue_vue_type_script_setup_true_lang.js +132 -0
  244. package/dist/vue/Strands.js +3 -0
  245. package/dist/vue/Strands.vue_vue_type_script_setup_true_lang.js +132 -0
  246. package/dist/vue/Stretch.js +3 -0
  247. package/dist/vue/Stretch.vue_vue_type_script_setup_true_lang.js +128 -0
  248. package/dist/vue/Stripes.js +3 -0
  249. package/dist/vue/Stripes.vue_vue_type_script_setup_true_lang.js +132 -0
  250. package/dist/vue/Swirl.js +3 -0
  251. package/dist/vue/Swirl.vue_vue_type_script_setup_true_lang.js +129 -0
  252. package/dist/vue/TiltShift.js +3 -0
  253. package/dist/vue/TiltShift.vue_vue_type_script_setup_true_lang.js +128 -0
  254. package/dist/vue/Tint.js +3 -0
  255. package/dist/vue/Tint.vue_vue_type_script_setup_true_lang.js +126 -0
  256. package/dist/vue/Tritone.js +3 -0
  257. package/dist/vue/Tritone.vue_vue_type_script_setup_true_lang.js +128 -0
  258. package/dist/vue/Twirl.js +3 -0
  259. package/dist/vue/Twirl.vue_vue_type_script_setup_true_lang.js +126 -0
  260. package/dist/vue/Vibrance.js +3 -0
  261. package/dist/vue/Vibrance.vue_vue_type_script_setup_true_lang.js +124 -0
  262. package/dist/vue/WaveDistortion.js +3 -0
  263. package/dist/vue/WaveDistortion.vue_vue_type_script_setup_true_lang.js +129 -0
  264. package/dist/vue/WebcamTexture.js +3 -0
  265. package/dist/vue/WebcamTexture.vue_vue_type_script_setup_true_lang.js +125 -0
  266. package/dist/vue/ZoomBlur.js +3 -0
  267. package/dist/vue/ZoomBlur.vue_vue_type_script_setup_true_lang.js +125 -0
  268. package/dist/vue/index.js +64 -7870
  269. package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
  270. package/dist/vue/utils/generatePresetCode.js +391 -1
  271. package/package.json +1 -1
  272. package/dist/react/generatePresetCode-D0yiVxb4.js +0 -748
  273. package/dist/svelte/generatePresetCode-DUGaV_ym.js +0 -748
  274. package/dist/vue/generatePresetCode-CShQ8TLw.js +0 -747
@@ -0,0 +1,144 @@
1
+ import { OmbreContext } from "./Shader.js";
2
+ import { useContext, useEffect, useMemo, useRef } from "react";
3
+ import { createUniformsMap } from "../core/index.js";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { componentDefinition } from "../core/shaders/Ripples/index.js";
6
+ function computeEffectiveProps(props, defaultProps$1) {
7
+ let baseProps = { ...defaultProps$1 };
8
+ for (const [key, value] of Object.entries(props)) if (key !== "children" && key !== "ref" && value !== void 0) baseProps[key] = value;
9
+ return baseProps;
10
+ }
11
+ var DEFAULT_TRANSFORM = {
12
+ offsetX: 0,
13
+ offsetY: 0,
14
+ rotation: 0,
15
+ scale: 1,
16
+ anchorX: .5,
17
+ anchorY: .5,
18
+ edges: "transparent"
19
+ };
20
+ var defaultProps = {
21
+ blendMode: "normal",
22
+ renderOrder: 0,
23
+ visible: true
24
+ };
25
+ try {
26
+ if (componentDefinition && componentDefinition.props) Object.entries(componentDefinition.props).forEach(([key, config]) => {
27
+ const propConfig = config;
28
+ if (propConfig && typeof propConfig === "object" && "default" in propConfig) defaultProps[key] = propConfig.default;
29
+ });
30
+ } catch (e) {
31
+ console.warn("Error extracting default props:", e);
32
+ }
33
+ const OmbreComponent = (props) => {
34
+ const context = useContext(OmbreContext);
35
+ if (!context) throw new Error("Shader components must be used inside an <Shader> component or another shader component");
36
+ const { ombreParentId: parentId, ombreNodeRegister: parentRegister, ombreUniformUpdate: parentUniformUpdate, ombreMetadataUpdate: parentMetadataUpdate } = context;
37
+ const instanceId = useMemo(() => {
38
+ return props.id || `${componentDefinition.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;
39
+ }, [props.id]);
40
+ const effectiveProps = useMemo(() => {
41
+ return computeEffectiveProps(props, defaultProps);
42
+ }, [props]);
43
+ const effectiveTransform = useMemo(() => ({
44
+ ...DEFAULT_TRANSFORM,
45
+ ...props.transform
46
+ }), [props.transform]);
47
+ const uniformsRef = useRef(null);
48
+ if (uniformsRef.current === null) uniformsRef.current = createUniformsMap(componentDefinition, effectiveProps, instanceId);
49
+ const childContextValue = useMemo(() => {
50
+ return {
51
+ ...context,
52
+ ombreParentId: instanceId
53
+ };
54
+ }, [context, instanceId]);
55
+ useEffect(() => {
56
+ if (!uniformsRef.current) return;
57
+ try {
58
+ const metadata = {
59
+ blendMode: props.blendMode || "normal",
60
+ opacity: props.opacity,
61
+ visible: props.visible === false ? false : true,
62
+ id: props.id,
63
+ mask: props.maskSource ? {
64
+ source: props.maskSource,
65
+ type: props.maskType || "alpha"
66
+ } : void 0,
67
+ renderOrder: props.renderOrder || 0,
68
+ transform: effectiveTransform
69
+ };
70
+ parentRegister(instanceId, componentDefinition.fragmentNode, parentId, metadata, uniformsRef.current, componentDefinition);
71
+ return () => {
72
+ parentRegister(instanceId, null, null, null, null);
73
+ };
74
+ } catch (error) {
75
+ console.error("Error registering shader node:", error);
76
+ return () => {};
77
+ }
78
+ }, [
79
+ instanceId,
80
+ parentId,
81
+ parentRegister
82
+ ]);
83
+ const prevPropsRef = useRef({});
84
+ useEffect(() => {
85
+ if (!uniformsRef.current) return;
86
+ try {
87
+ Object.entries(uniformsRef.current).forEach(([propName, uniformData]) => {
88
+ if (!uniformData || typeof uniformData !== "object") return;
89
+ const { uniform, transform } = uniformData;
90
+ if (uniform?.value !== void 0 && propName in effectiveProps) {
91
+ const newValue = effectiveProps[propName];
92
+ if (newValue !== prevPropsRef.current[propName]) {
93
+ parentUniformUpdate(instanceId, propName, newValue);
94
+ prevPropsRef.current[propName] = newValue;
95
+ }
96
+ }
97
+ });
98
+ } catch (error) {
99
+ console.error("Error updating uniforms:", error);
100
+ }
101
+ }, [
102
+ effectiveProps,
103
+ instanceId,
104
+ parentUniformUpdate
105
+ ]);
106
+ useEffect(() => {
107
+ try {
108
+ parentMetadataUpdate(instanceId, {
109
+ blendMode: props.blendMode || "normal",
110
+ opacity: props.opacity,
111
+ visible: props.visible === false ? false : true,
112
+ id: props.id,
113
+ mask: props.maskSource ? {
114
+ source: props.maskSource,
115
+ type: props.maskType || "alpha"
116
+ } : void 0,
117
+ renderOrder: props.renderOrder || 0,
118
+ transform: effectiveTransform
119
+ });
120
+ } catch (error) {
121
+ console.error("Error updating metadata:", error);
122
+ }
123
+ }, [
124
+ props.blendMode,
125
+ props.opacity,
126
+ props.visible,
127
+ props.maskSource,
128
+ props.maskType,
129
+ props.renderOrder,
130
+ props.id,
131
+ effectiveTransform,
132
+ instanceId,
133
+ parentMetadataUpdate
134
+ ]);
135
+ if (props.ref && typeof props.ref === "function") try {
136
+ props.ref(null);
137
+ } catch (e) {}
138
+ return /* @__PURE__ */ jsx(OmbreContext.Provider, {
139
+ value: childContextValue,
140
+ children: props.children
141
+ });
142
+ };
143
+ var Ripples_default = OmbreComponent;
144
+ export { Ripples_default as default };
@@ -0,0 +1,144 @@
1
+ import { OmbreContext } from "./Shader.js";
2
+ import { useContext, useEffect, useMemo, useRef } from "react";
3
+ import { createUniformsMap } from "../core/index.js";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { componentDefinition } from "../core/shaders/Saturation/index.js";
6
+ function computeEffectiveProps(props, defaultProps$1) {
7
+ let baseProps = { ...defaultProps$1 };
8
+ for (const [key, value] of Object.entries(props)) if (key !== "children" && key !== "ref" && value !== void 0) baseProps[key] = value;
9
+ return baseProps;
10
+ }
11
+ var DEFAULT_TRANSFORM = {
12
+ offsetX: 0,
13
+ offsetY: 0,
14
+ rotation: 0,
15
+ scale: 1,
16
+ anchorX: .5,
17
+ anchorY: .5,
18
+ edges: "transparent"
19
+ };
20
+ var defaultProps = {
21
+ blendMode: "normal",
22
+ renderOrder: 0,
23
+ visible: true
24
+ };
25
+ try {
26
+ if (componentDefinition && componentDefinition.props) Object.entries(componentDefinition.props).forEach(([key, config]) => {
27
+ const propConfig = config;
28
+ if (propConfig && typeof propConfig === "object" && "default" in propConfig) defaultProps[key] = propConfig.default;
29
+ });
30
+ } catch (e) {
31
+ console.warn("Error extracting default props:", e);
32
+ }
33
+ const OmbreComponent = (props) => {
34
+ const context = useContext(OmbreContext);
35
+ if (!context) throw new Error("Shader components must be used inside an <Shader> component or another shader component");
36
+ const { ombreParentId: parentId, ombreNodeRegister: parentRegister, ombreUniformUpdate: parentUniformUpdate, ombreMetadataUpdate: parentMetadataUpdate } = context;
37
+ const instanceId = useMemo(() => {
38
+ return props.id || `${componentDefinition.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;
39
+ }, [props.id]);
40
+ const effectiveProps = useMemo(() => {
41
+ return computeEffectiveProps(props, defaultProps);
42
+ }, [props]);
43
+ const effectiveTransform = useMemo(() => ({
44
+ ...DEFAULT_TRANSFORM,
45
+ ...props.transform
46
+ }), [props.transform]);
47
+ const uniformsRef = useRef(null);
48
+ if (uniformsRef.current === null) uniformsRef.current = createUniformsMap(componentDefinition, effectiveProps, instanceId);
49
+ const childContextValue = useMemo(() => {
50
+ return {
51
+ ...context,
52
+ ombreParentId: instanceId
53
+ };
54
+ }, [context, instanceId]);
55
+ useEffect(() => {
56
+ if (!uniformsRef.current) return;
57
+ try {
58
+ const metadata = {
59
+ blendMode: props.blendMode || "normal",
60
+ opacity: props.opacity,
61
+ visible: props.visible === false ? false : true,
62
+ id: props.id,
63
+ mask: props.maskSource ? {
64
+ source: props.maskSource,
65
+ type: props.maskType || "alpha"
66
+ } : void 0,
67
+ renderOrder: props.renderOrder || 0,
68
+ transform: effectiveTransform
69
+ };
70
+ parentRegister(instanceId, componentDefinition.fragmentNode, parentId, metadata, uniformsRef.current, componentDefinition);
71
+ return () => {
72
+ parentRegister(instanceId, null, null, null, null);
73
+ };
74
+ } catch (error) {
75
+ console.error("Error registering shader node:", error);
76
+ return () => {};
77
+ }
78
+ }, [
79
+ instanceId,
80
+ parentId,
81
+ parentRegister
82
+ ]);
83
+ const prevPropsRef = useRef({});
84
+ useEffect(() => {
85
+ if (!uniformsRef.current) return;
86
+ try {
87
+ Object.entries(uniformsRef.current).forEach(([propName, uniformData]) => {
88
+ if (!uniformData || typeof uniformData !== "object") return;
89
+ const { uniform, transform } = uniformData;
90
+ if (uniform?.value !== void 0 && propName in effectiveProps) {
91
+ const newValue = effectiveProps[propName];
92
+ if (newValue !== prevPropsRef.current[propName]) {
93
+ parentUniformUpdate(instanceId, propName, newValue);
94
+ prevPropsRef.current[propName] = newValue;
95
+ }
96
+ }
97
+ });
98
+ } catch (error) {
99
+ console.error("Error updating uniforms:", error);
100
+ }
101
+ }, [
102
+ effectiveProps,
103
+ instanceId,
104
+ parentUniformUpdate
105
+ ]);
106
+ useEffect(() => {
107
+ try {
108
+ parentMetadataUpdate(instanceId, {
109
+ blendMode: props.blendMode || "normal",
110
+ opacity: props.opacity,
111
+ visible: props.visible === false ? false : true,
112
+ id: props.id,
113
+ mask: props.maskSource ? {
114
+ source: props.maskSource,
115
+ type: props.maskType || "alpha"
116
+ } : void 0,
117
+ renderOrder: props.renderOrder || 0,
118
+ transform: effectiveTransform
119
+ });
120
+ } catch (error) {
121
+ console.error("Error updating metadata:", error);
122
+ }
123
+ }, [
124
+ props.blendMode,
125
+ props.opacity,
126
+ props.visible,
127
+ props.maskSource,
128
+ props.maskType,
129
+ props.renderOrder,
130
+ props.id,
131
+ effectiveTransform,
132
+ instanceId,
133
+ parentMetadataUpdate
134
+ ]);
135
+ if (props.ref && typeof props.ref === "function") try {
136
+ props.ref(null);
137
+ } catch (e) {}
138
+ return /* @__PURE__ */ jsx(OmbreContext.Provider, {
139
+ value: childContextValue,
140
+ children: props.children
141
+ });
142
+ };
143
+ var Saturation_default = OmbreComponent;
144
+ export { Saturation_default as default };
@@ -0,0 +1,166 @@
1
+ import { createContext, useEffect, useMemo, useRef } from "react";
2
+ import { shaderRenderer } from "../core/index.js";
3
+ import { vec4 } from "three/tsl";
4
+ import { TelemetryCollector, isExternalUser, shouldCollectTelemetry } from "../core/telemetry/index.js";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ const OmbreContext = createContext(null);
7
+ const Shader = ({ children, hideNotice = false, style = {}, className = "",...rest }) => {
8
+ const containerRef = useRef(null);
9
+ const canvasRef = useRef(null);
10
+ const rootId = useMemo(() => "ombre-root-" + Math.random().toString(36).substring(7), []);
11
+ const rendererRef = useRef(null);
12
+ if (rendererRef.current === null) rendererRef.current = shaderRenderer();
13
+ const telemetryCollectorRef = useRef(null);
14
+ const nodeRegister = useMemo(() => {
15
+ return (id, fragmentNodeFunc, parentId, metadata, uniforms = null, componentDefinition = null) => {
16
+ if (fragmentNodeFunc === null) {
17
+ try {
18
+ rendererRef.current.removeNode(id);
19
+ } catch (err) {
20
+ console.warn("Error removing node:", err);
21
+ }
22
+ return;
23
+ }
24
+ try {
25
+ rendererRef.current.registerNode(id, fragmentNodeFunc, parentId, metadata, uniforms, componentDefinition);
26
+ } catch (err) {
27
+ console.error("Error registering node:", err, {
28
+ id,
29
+ parentId,
30
+ metadata
31
+ });
32
+ }
33
+ };
34
+ }, []);
35
+ const uniformUpdate = useMemo(() => {
36
+ return (nodeId, uniformName, value) => {
37
+ try {
38
+ rendererRef.current.updateUniformValue(nodeId, uniformName, value);
39
+ } catch (err) {
40
+ console.warn("Error updating uniform:", err);
41
+ }
42
+ };
43
+ }, []);
44
+ const metadataUpdate = useMemo(() => {
45
+ return (nodeId, metadata) => {
46
+ try {
47
+ rendererRef.current.updateNodeMetadata(nodeId, metadata);
48
+ } catch (err) {
49
+ console.warn("Error updating metadata:", err);
50
+ }
51
+ };
52
+ }, []);
53
+ const contextValue = useMemo(() => {
54
+ return {
55
+ ombreParentId: rootId,
56
+ ombreNodeRegister: nodeRegister,
57
+ ombreUniformUpdate: uniformUpdate,
58
+ ombreMetadataUpdate: metadataUpdate
59
+ };
60
+ }, [
61
+ rootId,
62
+ nodeRegister,
63
+ uniformUpdate,
64
+ metadataUpdate
65
+ ]);
66
+ const isInitializedRef = useRef(false);
67
+ const isInitializingRef = useRef(false);
68
+ const isCleanedUpRef = useRef(false);
69
+ const wasVisibleRef = useRef(false);
70
+ const visibilityObserverRef = useRef(null);
71
+ const initializeRenderer = async () => {
72
+ const canvas = canvasRef.current;
73
+ if (!canvas || isInitializedRef.current || isInitializingRef.current) return;
74
+ isInitializingRef.current = true;
75
+ try {
76
+ const renderer = rendererRef.current;
77
+ if (!renderer.isInitialized()) await renderer.initialize({ canvas });
78
+ renderer.registerNode(rootId, ({ childNode }) => childNode || vec4(0, 0, 0, 0), null, null, {});
79
+ isInitializedRef.current = true;
80
+ isInitializingRef.current = false;
81
+ if (!hideNotice) renderer.showLicenseWarning();
82
+ if (isExternalUser() && shouldCollectTelemetry()) {
83
+ telemetryCollectorRef.current = new TelemetryCollector(renderer);
84
+ telemetryCollectorRef.current.start();
85
+ }
86
+ } catch (err) {
87
+ console.error("[Shader] Initialization failed:", err);
88
+ isInitializingRef.current = false;
89
+ throw err;
90
+ }
91
+ };
92
+ const setupVisibilityObserver = () => {
93
+ const container = containerRef.current;
94
+ if (!container || visibilityObserverRef.current) return;
95
+ visibilityObserverRef.current = new IntersectionObserver((entries) => {
96
+ const entry = entries[0];
97
+ if (!entry) return;
98
+ const rect = container.getBoundingClientRect();
99
+ const isCurrentlyVisible = entry.isIntersecting && rect && rect.width > 0 && rect.height > 0;
100
+ if (isCurrentlyVisible && !wasVisibleRef.current) {
101
+ if (rendererRef.current.isInitialized()) rendererRef.current.startAnimation();
102
+ else initializeRenderer().catch(console.error);
103
+ wasVisibleRef.current = true;
104
+ } else if (!isCurrentlyVisible && wasVisibleRef.current) {
105
+ rendererRef.current.stopAnimation();
106
+ wasVisibleRef.current = false;
107
+ }
108
+ }, { threshold: 0 });
109
+ visibilityObserverRef.current.observe(container);
110
+ };
111
+ useEffect(() => {
112
+ isCleanedUpRef.current = false;
113
+ const container = containerRef.current;
114
+ if (!container) return;
115
+ const rect = container.getBoundingClientRect();
116
+ if (rect.width > 0 && rect.height > 0) {
117
+ initializeRenderer().catch(console.error);
118
+ wasVisibleRef.current = true;
119
+ } else wasVisibleRef.current = false;
120
+ setupVisibilityObserver();
121
+ return () => {
122
+ if (isCleanedUpRef.current) return;
123
+ isCleanedUpRef.current = true;
124
+ if (telemetryCollectorRef.current) {
125
+ telemetryCollectorRef.current.stop();
126
+ telemetryCollectorRef.current = null;
127
+ }
128
+ if (visibilityObserverRef.current) {
129
+ visibilityObserverRef.current.disconnect();
130
+ visibilityObserverRef.current = null;
131
+ }
132
+ if (rendererRef.current && isInitializedRef.current) try {
133
+ rendererRef.current.cleanup();
134
+ } catch (err) {
135
+ console.warn("[Shader] Error during cleanup:", err);
136
+ }
137
+ isInitializedRef.current = false;
138
+ isInitializingRef.current = false;
139
+ };
140
+ }, []);
141
+ useEffect(() => {
142
+ if (!hideNotice && rendererRef.current && isInitializedRef.current) try {
143
+ rendererRef.current.showLicenseWarning();
144
+ } catch (err) {}
145
+ }, [hideNotice]);
146
+ return /* @__PURE__ */ jsx(OmbreContext.Provider, {
147
+ value: contextValue,
148
+ children: /* @__PURE__ */ jsxs("div", {
149
+ ref: containerRef,
150
+ className: "shader" + (className ? " " + className : ""),
151
+ style,
152
+ ...rest,
153
+ children: [/* @__PURE__ */ jsx("canvas", {
154
+ "data-renderer": "shaders",
155
+ ref: canvasRef,
156
+ style: {
157
+ width: "100%",
158
+ height: "100%",
159
+ display: "block"
160
+ }
161
+ }), children]
162
+ })
163
+ });
164
+ };
165
+ var Shader_default = Shader;
166
+ export { OmbreContext, Shader_default as default };
@@ -0,0 +1,144 @@
1
+ import { OmbreContext } from "./Shader.js";
2
+ import { useContext, useEffect, useMemo, useRef } from "react";
3
+ import { createUniformsMap } from "../core/index.js";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { componentDefinition } from "../core/shaders/Sharpness/index.js";
6
+ function computeEffectiveProps(props, defaultProps$1) {
7
+ let baseProps = { ...defaultProps$1 };
8
+ for (const [key, value] of Object.entries(props)) if (key !== "children" && key !== "ref" && value !== void 0) baseProps[key] = value;
9
+ return baseProps;
10
+ }
11
+ var DEFAULT_TRANSFORM = {
12
+ offsetX: 0,
13
+ offsetY: 0,
14
+ rotation: 0,
15
+ scale: 1,
16
+ anchorX: .5,
17
+ anchorY: .5,
18
+ edges: "transparent"
19
+ };
20
+ var defaultProps = {
21
+ blendMode: "normal",
22
+ renderOrder: 0,
23
+ visible: true
24
+ };
25
+ try {
26
+ if (componentDefinition && componentDefinition.props) Object.entries(componentDefinition.props).forEach(([key, config]) => {
27
+ const propConfig = config;
28
+ if (propConfig && typeof propConfig === "object" && "default" in propConfig) defaultProps[key] = propConfig.default;
29
+ });
30
+ } catch (e) {
31
+ console.warn("Error extracting default props:", e);
32
+ }
33
+ const OmbreComponent = (props) => {
34
+ const context = useContext(OmbreContext);
35
+ if (!context) throw new Error("Shader components must be used inside an <Shader> component or another shader component");
36
+ const { ombreParentId: parentId, ombreNodeRegister: parentRegister, ombreUniformUpdate: parentUniformUpdate, ombreMetadataUpdate: parentMetadataUpdate } = context;
37
+ const instanceId = useMemo(() => {
38
+ return props.id || `${componentDefinition.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;
39
+ }, [props.id]);
40
+ const effectiveProps = useMemo(() => {
41
+ return computeEffectiveProps(props, defaultProps);
42
+ }, [props]);
43
+ const effectiveTransform = useMemo(() => ({
44
+ ...DEFAULT_TRANSFORM,
45
+ ...props.transform
46
+ }), [props.transform]);
47
+ const uniformsRef = useRef(null);
48
+ if (uniformsRef.current === null) uniformsRef.current = createUniformsMap(componentDefinition, effectiveProps, instanceId);
49
+ const childContextValue = useMemo(() => {
50
+ return {
51
+ ...context,
52
+ ombreParentId: instanceId
53
+ };
54
+ }, [context, instanceId]);
55
+ useEffect(() => {
56
+ if (!uniformsRef.current) return;
57
+ try {
58
+ const metadata = {
59
+ blendMode: props.blendMode || "normal",
60
+ opacity: props.opacity,
61
+ visible: props.visible === false ? false : true,
62
+ id: props.id,
63
+ mask: props.maskSource ? {
64
+ source: props.maskSource,
65
+ type: props.maskType || "alpha"
66
+ } : void 0,
67
+ renderOrder: props.renderOrder || 0,
68
+ transform: effectiveTransform
69
+ };
70
+ parentRegister(instanceId, componentDefinition.fragmentNode, parentId, metadata, uniformsRef.current, componentDefinition);
71
+ return () => {
72
+ parentRegister(instanceId, null, null, null, null);
73
+ };
74
+ } catch (error) {
75
+ console.error("Error registering shader node:", error);
76
+ return () => {};
77
+ }
78
+ }, [
79
+ instanceId,
80
+ parentId,
81
+ parentRegister
82
+ ]);
83
+ const prevPropsRef = useRef({});
84
+ useEffect(() => {
85
+ if (!uniformsRef.current) return;
86
+ try {
87
+ Object.entries(uniformsRef.current).forEach(([propName, uniformData]) => {
88
+ if (!uniformData || typeof uniformData !== "object") return;
89
+ const { uniform, transform } = uniformData;
90
+ if (uniform?.value !== void 0 && propName in effectiveProps) {
91
+ const newValue = effectiveProps[propName];
92
+ if (newValue !== prevPropsRef.current[propName]) {
93
+ parentUniformUpdate(instanceId, propName, newValue);
94
+ prevPropsRef.current[propName] = newValue;
95
+ }
96
+ }
97
+ });
98
+ } catch (error) {
99
+ console.error("Error updating uniforms:", error);
100
+ }
101
+ }, [
102
+ effectiveProps,
103
+ instanceId,
104
+ parentUniformUpdate
105
+ ]);
106
+ useEffect(() => {
107
+ try {
108
+ parentMetadataUpdate(instanceId, {
109
+ blendMode: props.blendMode || "normal",
110
+ opacity: props.opacity,
111
+ visible: props.visible === false ? false : true,
112
+ id: props.id,
113
+ mask: props.maskSource ? {
114
+ source: props.maskSource,
115
+ type: props.maskType || "alpha"
116
+ } : void 0,
117
+ renderOrder: props.renderOrder || 0,
118
+ transform: effectiveTransform
119
+ });
120
+ } catch (error) {
121
+ console.error("Error updating metadata:", error);
122
+ }
123
+ }, [
124
+ props.blendMode,
125
+ props.opacity,
126
+ props.visible,
127
+ props.maskSource,
128
+ props.maskType,
129
+ props.renderOrder,
130
+ props.id,
131
+ effectiveTransform,
132
+ instanceId,
133
+ parentMetadataUpdate
134
+ ]);
135
+ if (props.ref && typeof props.ref === "function") try {
136
+ props.ref(null);
137
+ } catch (e) {}
138
+ return /* @__PURE__ */ jsx(OmbreContext.Provider, {
139
+ value: childContextValue,
140
+ children: props.children
141
+ });
142
+ };
143
+ var Sharpness_default = OmbreComponent;
144
+ export { Sharpness_default as default };