shaders 2.5.103 → 2.5.104

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 (223) hide show
  1. package/dist/core/Fog-DhFHErOx.js +674 -0
  2. package/dist/core/Smoke-LIDjCv7f.js +629 -0
  3. package/dist/core/SmokeFill-ChSIfTxW.js +641 -0
  4. package/dist/core/{VideoTexture-DnHIs4pp.js → VideoTexture-SWLe5c3m.js} +1 -1
  5. package/dist/core/{WebcamTexture-XBDo2kgN.js → WebcamTexture-cXPyEumA.js} +1 -1
  6. package/dist/core/index.js +73 -70
  7. package/dist/core/registry.js +72 -69
  8. package/dist/core/renderer.d.ts.map +1 -1
  9. package/dist/core/shaderRegistry-CVhdTDhR.js +252 -0
  10. package/dist/core/shaderRegistry.d.ts.map +1 -1
  11. package/dist/core/shaders/Fog/index.d.ts +78 -0
  12. package/dist/core/shaders/Fog/index.d.ts.map +1 -0
  13. package/dist/core/shaders/Fog/index.js +4 -0
  14. package/dist/core/shaders/Form3D/index.js +1 -1
  15. package/dist/core/shaders/Glass/index.js +1 -1
  16. package/dist/core/shaders/GlassTiles/index.js +1 -1
  17. package/dist/core/shaders/Glitch/index.js +1 -1
  18. package/dist/core/shaders/Glow/index.js +1 -1
  19. package/dist/core/shaders/Godrays/index.js +1 -1
  20. package/dist/core/shaders/Grayscale/index.js +1 -1
  21. package/dist/core/shaders/Grid/index.js +1 -1
  22. package/dist/core/shaders/GridDistortion/index.js +1 -1
  23. package/dist/core/shaders/Group/index.js +1 -1
  24. package/dist/core/shaders/Halftone/index.js +1 -1
  25. package/dist/core/shaders/HexGrid/index.js +1 -1
  26. package/dist/core/shaders/HueShift/index.js +1 -1
  27. package/dist/core/shaders/ImageTexture/index.js +1 -1
  28. package/dist/core/shaders/Invert/index.js +1 -1
  29. package/dist/core/shaders/Kaleidoscope/index.js +1 -1
  30. package/dist/core/shaders/LensFlare/index.js +1 -1
  31. package/dist/core/shaders/LinearBlur/index.js +1 -1
  32. package/dist/core/shaders/LinearGradient/index.js +1 -1
  33. package/dist/core/shaders/Liquify/index.js +1 -1
  34. package/dist/core/shaders/Mirror/index.js +1 -1
  35. package/dist/core/shaders/MultiPointGradient/index.js +1 -1
  36. package/dist/core/shaders/Neon/index.js +1 -1
  37. package/dist/core/shaders/Paper/index.js +1 -1
  38. package/dist/core/shaders/Perspective/index.js +1 -1
  39. package/dist/core/shaders/Pixelate/index.js +1 -1
  40. package/dist/core/shaders/Plasma/index.js +1 -1
  41. package/dist/core/shaders/PolarCoordinates/index.js +1 -1
  42. package/dist/core/shaders/Polygon/index.js +1 -1
  43. package/dist/core/shaders/Posterize/index.js +1 -1
  44. package/dist/core/shaders/ProgressiveBlur/index.js +1 -1
  45. package/dist/core/shaders/RadialGradient/index.js +1 -1
  46. package/dist/core/shaders/RectangularCoordinates/index.js +1 -1
  47. package/dist/core/shaders/Ring/index.js +1 -1
  48. package/dist/core/shaders/Ripples/index.js +1 -1
  49. package/dist/core/shaders/RoundedRect/index.js +1 -1
  50. package/dist/core/shaders/Saturation/index.js +1 -1
  51. package/dist/core/shaders/Sharpness/index.js +1 -1
  52. package/dist/core/shaders/Shatter/index.js +1 -1
  53. package/dist/core/shaders/SimplexNoise/index.js +1 -1
  54. package/dist/core/shaders/SineWave/index.js +1 -1
  55. package/dist/core/shaders/Smoke/index.d.ts +113 -0
  56. package/dist/core/shaders/Smoke/index.d.ts.map +1 -0
  57. package/dist/core/shaders/Smoke/index.js +4 -0
  58. package/dist/core/shaders/SmokeFill/index.d.ts +145 -0
  59. package/dist/core/shaders/SmokeFill/index.d.ts.map +1 -0
  60. package/dist/core/shaders/SmokeFill/index.js +5 -0
  61. package/dist/core/shaders/Solarize/index.js +1 -1
  62. package/dist/core/shaders/SolidColor/index.js +1 -1
  63. package/dist/core/shaders/Spherize/index.js +1 -1
  64. package/dist/core/shaders/Spiral/index.js +1 -1
  65. package/dist/core/shaders/Star/index.js +1 -1
  66. package/dist/core/shaders/Strands/index.js +1 -1
  67. package/dist/core/shaders/Stretch/index.js +1 -1
  68. package/dist/core/shaders/Stripes/index.js +1 -1
  69. package/dist/core/shaders/StudioBackground/index.js +1 -1
  70. package/dist/core/shaders/Swirl/index.js +1 -1
  71. package/dist/core/shaders/TiltShift/index.js +1 -1
  72. package/dist/core/shaders/Tint/index.js +1 -1
  73. package/dist/core/shaders/Trapezoid/index.js +1 -1
  74. package/dist/core/shaders/Tritone/index.js +1 -1
  75. package/dist/core/shaders/Truchet/index.js +1 -1
  76. package/dist/core/shaders/Twirl/index.js +1 -1
  77. package/dist/core/shaders/VHS/index.js +1 -1
  78. package/dist/core/shaders/Vesica/index.js +1 -1
  79. package/dist/core/shaders/Vibrance/index.js +1 -1
  80. package/dist/core/shaders/VideoTexture/index.js +2 -2
  81. package/dist/core/shaders/Vignette/index.js +1 -1
  82. package/dist/core/shaders/Voronoi/index.js +1 -1
  83. package/dist/core/shaders/WaveDistortion/index.js +1 -1
  84. package/dist/core/shaders/Weave/index.js +1 -1
  85. package/dist/core/shaders/WebcamTexture/index.js +2 -2
  86. package/dist/core/shaders/ZoomBlur/index.js +1 -1
  87. package/dist/js/createShader.js +1 -1
  88. package/dist/js/utils/generatePresetCode.d.ts.map +1 -1
  89. package/dist/js/utils/generatePresetCode.js +67 -0
  90. package/dist/react/Fog.js +223 -0
  91. package/dist/react/Preview.js +3 -0
  92. package/dist/react/Shader.js +1 -1
  93. package/dist/react/Smoke.js +223 -0
  94. package/dist/react/SmokeFill.js +223 -0
  95. package/dist/react/components/Fog.d.ts +31 -0
  96. package/dist/react/components/Fog.d.ts.map +1 -0
  97. package/dist/react/components/Smoke.d.ts +33 -0
  98. package/dist/react/components/Smoke.d.ts.map +1 -0
  99. package/dist/react/components/SmokeFill.d.ts +34 -0
  100. package/dist/react/components/SmokeFill.d.ts.map +1 -0
  101. package/dist/react/engine/Preview.d.ts.map +1 -1
  102. package/dist/react/index.d.ts +3 -0
  103. package/dist/react/index.d.ts.map +1 -1
  104. package/dist/react/index.js +4 -1
  105. package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
  106. package/dist/react/utils/generatePresetCode.js +67 -0
  107. package/dist/registry.js +1189 -0
  108. package/dist/solid/components/Fog.d.ts +28 -0
  109. package/dist/solid/components/Fog.d.ts.map +1 -0
  110. package/dist/solid/components/Fog.js +228 -0
  111. package/dist/solid/components/Smoke.d.ts +30 -0
  112. package/dist/solid/components/Smoke.d.ts.map +1 -0
  113. package/dist/solid/components/Smoke.js +228 -0
  114. package/dist/solid/components/SmokeFill.d.ts +31 -0
  115. package/dist/solid/components/SmokeFill.d.ts.map +1 -0
  116. package/dist/solid/components/SmokeFill.js +228 -0
  117. package/dist/solid/engine/Preview.d.ts.map +1 -1
  118. package/dist/solid/engine/Preview.js +162 -156
  119. package/dist/solid/engine/Shader.js +1 -1
  120. package/dist/solid/index.d.ts +3 -0
  121. package/dist/solid/index.d.ts.map +1 -1
  122. package/dist/solid/index.js +144 -138
  123. package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
  124. package/dist/solid/utils/generatePresetCode.js +67 -0
  125. package/dist/svelte/components/Fog.svelte.d.ts +19 -0
  126. package/dist/svelte/components/Smoke.svelte.d.ts +20 -0
  127. package/dist/svelte/components/SmokeFill.svelte.d.ts +21 -0
  128. package/dist/svelte/{generatePresetCode-psTzYsW3.js → generatePresetCode-DR_OAIL7.js} +67 -0
  129. package/dist/svelte/index.d.ts +3 -0
  130. package/dist/svelte/index.js +1151 -551
  131. package/dist/svelte/source/components/Fog.svelte +325 -0
  132. package/dist/svelte/source/components/Smoke.svelte +326 -0
  133. package/dist/svelte/source/components/SmokeFill.svelte +327 -0
  134. package/dist/svelte/source/engine/Preview.svelte +6 -0
  135. package/dist/svelte/source/index.js +3 -0
  136. package/dist/svelte/utils/generatePresetCode.js +1 -1
  137. package/dist/vue/Fog.js +3 -0
  138. package/dist/vue/Fog.vue_vue_type_script_setup_true_lang.js +222 -0
  139. package/dist/vue/Preview.vue_vue_type_script_setup_true_lang.js +6 -0
  140. package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +1 -1
  141. package/dist/vue/Smoke.js +3 -0
  142. package/dist/vue/Smoke.vue_vue_type_script_setup_true_lang.js +227 -0
  143. package/dist/vue/SmokeFill.js +3 -0
  144. package/dist/vue/SmokeFill.vue_vue_type_script_setup_true_lang.js +232 -0
  145. package/dist/vue/components/Fog.vue.d.ts +54 -0
  146. package/dist/vue/components/Fog.vue.d.ts.map +1 -0
  147. package/dist/vue/components/Smoke.vue.d.ts +55 -0
  148. package/dist/vue/components/Smoke.vue.d.ts.map +1 -0
  149. package/dist/vue/components/SmokeFill.vue.d.ts +56 -0
  150. package/dist/vue/components/SmokeFill.vue.d.ts.map +1 -0
  151. package/dist/vue/index.d.ts +3 -0
  152. package/dist/vue/index.d.ts.map +1 -1
  153. package/dist/vue/index.js +4 -1
  154. package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
  155. package/dist/vue/utils/generatePresetCode.js +67 -0
  156. package/package.json +25 -1
  157. package/dist/core/shaderRegistry-BWuH2me2.js +0 -246
  158. /package/dist/core/{Form3D-rKpxb9t3.js → Form3D-DaPbLGUi.js} +0 -0
  159. /package/dist/core/{Glass-C04tCmBL.js → Glass-CpcmrDfm.js} +0 -0
  160. /package/dist/core/{GlassTiles-k1C4a4u8.js → GlassTiles-Dgh6nOaE.js} +0 -0
  161. /package/dist/core/{Glitch-DzPMkBu4.js → Glitch-BsbzLahF.js} +0 -0
  162. /package/dist/core/{Glow-BwaPYDRZ.js → Glow-Ft2x2QHL.js} +0 -0
  163. /package/dist/core/{Godrays-DAYmq-BP.js → Godrays-D1LINbut.js} +0 -0
  164. /package/dist/core/{Grayscale-lYKBBkGY.js → Grayscale-Ri-695Uh.js} +0 -0
  165. /package/dist/core/{Grid-BJ-nxN3i.js → Grid-BYSsAIEv.js} +0 -0
  166. /package/dist/core/{GridDistortion-DtaRNrTZ.js → GridDistortion-DWFGD8ya.js} +0 -0
  167. /package/dist/core/{Group-DpozigtX.js → Group-CkhjTW59.js} +0 -0
  168. /package/dist/core/{Halftone-XFa7by1s.js → Halftone-BUCDTTAU.js} +0 -0
  169. /package/dist/core/{HexGrid-D-EmQ4kI.js → HexGrid-BUiDrehv.js} +0 -0
  170. /package/dist/core/{HueShift-D9K0ynaS.js → HueShift-BtGVMu7q.js} +0 -0
  171. /package/dist/core/{ImageTexture-CArkZMfh.js → ImageTexture-CrX_9-f0.js} +0 -0
  172. /package/dist/core/{Invert-DCnwo_Xq.js → Invert-azYrcDMi.js} +0 -0
  173. /package/dist/core/{Kaleidoscope-BytHro3k.js → Kaleidoscope-CFWtKisp.js} +0 -0
  174. /package/dist/core/{LensFlare-B0vv4x97.js → LensFlare-ttrXgfea.js} +0 -0
  175. /package/dist/core/{LinearBlur-BFewxPjV.js → LinearBlur-By2aD8OO.js} +0 -0
  176. /package/dist/core/{LinearGradient-BKUf_u7r.js → LinearGradient-CM02z32l.js} +0 -0
  177. /package/dist/core/{Liquify-cE5dxrfh.js → Liquify-CyXo6vAH.js} +0 -0
  178. /package/dist/core/{Mirror-DIle92J8.js → Mirror-B7XmfGdw.js} +0 -0
  179. /package/dist/core/{MultiPointGradient-DDwac_mm.js → MultiPointGradient-8zGSIM4U.js} +0 -0
  180. /package/dist/core/{Neon-Dg8UfC7P.js → Neon-C1JlexhM.js} +0 -0
  181. /package/dist/core/{Paper-bMSMCeYK.js → Paper-B08rxNys.js} +0 -0
  182. /package/dist/core/{Perspective-BmfvQV6W.js → Perspective-BN_OpTZq.js} +0 -0
  183. /package/dist/core/{Pixelate-Dl26r6IT.js → Pixelate-dxPAFCRu.js} +0 -0
  184. /package/dist/core/{Plasma-CJWS1TvX.js → Plasma-DGCw0cd7.js} +0 -0
  185. /package/dist/core/{PolarCoordinates-lq6K4WBm.js → PolarCoordinates-CMYCFT4S.js} +0 -0
  186. /package/dist/core/{Polygon-DRCs3CYs.js → Polygon-CsCOt5YE.js} +0 -0
  187. /package/dist/core/{Posterize-BjH7Zscm.js → Posterize-Blv9pzPT.js} +0 -0
  188. /package/dist/core/{ProgressiveBlur-B8xwWyTM.js → ProgressiveBlur-Cx6eR7o9.js} +0 -0
  189. /package/dist/core/{RadialGradient-DiGFPgrn.js → RadialGradient-De0gtdh3.js} +0 -0
  190. /package/dist/core/{RectangularCoordinates-COkNDxi0.js → RectangularCoordinates-8Sa2GaDy.js} +0 -0
  191. /package/dist/core/{Ring-QApyKPzE.js → Ring-kHH-DIDQ.js} +0 -0
  192. /package/dist/core/{Ripples-C8Q17Hvz.js → Ripples-Bf6Zwg6X.js} +0 -0
  193. /package/dist/core/{RoundedRect-Ca9af9xe.js → RoundedRect-B0sWh2BN.js} +0 -0
  194. /package/dist/core/{Saturation-CgDaiq6n.js → Saturation-CB19kOXg.js} +0 -0
  195. /package/dist/core/{Sharpness-CRXT0D30.js → Sharpness-CQOboeqy.js} +0 -0
  196. /package/dist/core/{Shatter-BssZTRYJ.js → Shatter-BhK75BiG.js} +0 -0
  197. /package/dist/core/{SimplexNoise-KfTCAfpL.js → SimplexNoise-BcSgytjc.js} +0 -0
  198. /package/dist/core/{SineWave-Ckeap_YM.js → SineWave-VTNDSK_g.js} +0 -0
  199. /package/dist/core/{Solarize-DhtQYYpW.js → Solarize-CWDgSBiv.js} +0 -0
  200. /package/dist/core/{SolidColor-6yUkGybH.js → SolidColor-DhMdM3bE.js} +0 -0
  201. /package/dist/core/{Spherize-8LXrGGG_.js → Spherize-BZxwopX8.js} +0 -0
  202. /package/dist/core/{Spiral-Bs7uZrBr.js → Spiral-gpkw37l1.js} +0 -0
  203. /package/dist/core/{Star-DiXwnPGP.js → Star-WJAOZ5P5.js} +0 -0
  204. /package/dist/core/{Strands-DsAAVemq.js → Strands-DOthZNHt.js} +0 -0
  205. /package/dist/core/{Stretch-D7P2R5lV.js → Stretch--GV6hbru.js} +0 -0
  206. /package/dist/core/{Stripes-DF8agIiJ.js → Stripes-CFCXw1_N.js} +0 -0
  207. /package/dist/core/{StudioBackground-BFeNfwEu.js → StudioBackground-DJr-cxOL.js} +0 -0
  208. /package/dist/core/{Swirl-BwezrSAA.js → Swirl-By5FadQK.js} +0 -0
  209. /package/dist/core/{TiltShift-CI3FlfYk.js → TiltShift-Dh8wc9GG.js} +0 -0
  210. /package/dist/core/{Tint-BdXlqlzz.js → Tint-DaTx2HII.js} +0 -0
  211. /package/dist/core/{Trapezoid-BX_hmeZJ.js → Trapezoid-Co0sIA73.js} +0 -0
  212. /package/dist/core/{Tritone-BlJ7cchN.js → Tritone-C9Yx69Tw.js} +0 -0
  213. /package/dist/core/{Truchet-Bnn0fwbF.js → Truchet-CkFSkniR.js} +0 -0
  214. /package/dist/core/{Twirl-C5ijhqz1.js → Twirl-v8pLqUTN.js} +0 -0
  215. /package/dist/core/{VHS-CQJ1hV_D.js → VHS-mKd1QBBj.js} +0 -0
  216. /package/dist/core/{Vesica-DU0f85NG.js → Vesica-CxP7UD0a.js} +0 -0
  217. /package/dist/core/{Vibrance-CGvYDeds.js → Vibrance-WR5yQv_9.js} +0 -0
  218. /package/dist/core/{Vignette-BJaonUVL.js → Vignette-hAIKTi35.js} +0 -0
  219. /package/dist/core/{Voronoi-DZemzWA4.js → Voronoi-DOGmwUSK.js} +0 -0
  220. /package/dist/core/{WaveDistortion--Y-m667K.js → WaveDistortion-BGdgj3Iz.js} +0 -0
  221. /package/dist/core/{Weave-CtyohvHz.js → Weave-CIP_EUPa.js} +0 -0
  222. /package/dist/core/{ZoomBlur-BwkhsFRE.js → ZoomBlur-BuIVpHGG.js} +0 -0
  223. /package/dist/core/{browser-DTNngPey.js → browser-D8zonASQ.js} +0 -0
@@ -0,0 +1,223 @@
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/Fog/index.js";
8
+ var _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
+ function computeEffectiveProps(props, defaultProps$1) {
18
+ let baseProps = { ...defaultProps$1 };
19
+ for (const [key, value] of Object.entries(props)) if (key !== "children" && key !== "ref" && value !== void 0 && !isPropDriver(value)) baseProps[key] = value;
20
+ return baseProps;
21
+ }
22
+ var MARKER_STYLE = { display: "contents" };
23
+ var DEFAULT_TRANSFORM = {
24
+ offsetX: 0,
25
+ offsetY: 0,
26
+ rotation: 0,
27
+ scale: 1,
28
+ anchorX: .5,
29
+ anchorY: .5,
30
+ edges: "transparent"
31
+ };
32
+ var defaultProps = {
33
+ blendMode: "normal",
34
+ visible: true
35
+ };
36
+ try {
37
+ if (componentDefinition && componentDefinition.props) Object.entries(componentDefinition.props).forEach(([key, config]) => {
38
+ const propConfig = config;
39
+ if (propConfig && typeof propConfig === "object" && "default" in propConfig) defaultProps[key] = propConfig.default;
40
+ });
41
+ } catch (e) {
42
+ console.warn("Error extracting default props:", e);
43
+ }
44
+ const ShaderComponent = (props) => {
45
+ const context = useContext(ShaderContext);
46
+ if (!context) throw new Error("Shader components must be used inside an <Shader> component or another shader component");
47
+ const { shaderParentId: parentId, shaderNodeRegister: parentRegister, shaderUniformUpdate: parentUniformUpdate, shaderMetadataUpdate: parentMetadataUpdate, shaderColorSpace } = context;
48
+ const reactId = useId();
49
+ const instanceId = useMemo(() => {
50
+ return (props.id ? props.id.replace(/[^a-zA-Z0-9_]/g, "_") : null) || reactId.replace(/[^a-zA-Z0-9_]/g, "");
51
+ }, [props.id, reactId]);
52
+ const effectiveProps = useMemo(() => {
53
+ return computeEffectiveProps(props, defaultProps);
54
+ }, [props]);
55
+ const effectiveTransform = useMemo(() => ({
56
+ ...DEFAULT_TRANSFORM,
57
+ ...props.transform
58
+ }), [props.transform]);
59
+ const markerRef = useRef(null);
60
+ const isCapturesDOM = !!componentDefinition.capturesDOM;
61
+ const captureCanvasRef = useRef(null);
62
+ const [domMounted, setDomMounted] = useState(false);
63
+ const [captureSize, setCaptureSize] = useState(() => ({
64
+ w: typeof window !== "undefined" ? Math.round(window.innerWidth * Math.min(window.devicePixelRatio, 2)) : 0,
65
+ h: typeof window !== "undefined" ? Math.round(window.innerHeight * Math.min(window.devicePixelRatio, 2)) : 0
66
+ }));
67
+ useEffect(() => {
68
+ if (!isCapturesDOM) return;
69
+ setDomMounted(true);
70
+ const onResize = () => {
71
+ const d = Math.min(window.devicePixelRatio, 2);
72
+ setCaptureSize({
73
+ w: Math.round(window.innerWidth * d),
74
+ h: Math.round(window.innerHeight * d)
75
+ });
76
+ };
77
+ window.addEventListener("resize", onResize);
78
+ return () => window.removeEventListener("resize", onResize);
79
+ }, [isCapturesDOM]);
80
+ const detectedOrderRef = useRef(void 0);
81
+ const uniformsRef = useRef(null);
82
+ if (uniformsRef.current === null) {
83
+ setColorSpaceMode(shaderColorSpace);
84
+ uniformsRef.current = createUniformsMap(componentDefinition, effectiveProps, instanceId);
85
+ }
86
+ const childContextValue = useMemo(() => {
87
+ return {
88
+ ...context,
89
+ shaderParentId: instanceId
90
+ };
91
+ }, [context, instanceId]);
92
+ useEffect(() => {
93
+ if (!uniformsRef.current) return;
94
+ try {
95
+ const metadata = {
96
+ blendMode: props.blendMode || "normal",
97
+ opacity: props.opacity,
98
+ visible: props.visible === false ? false : true,
99
+ id: props.id,
100
+ mask: props.maskSource ? {
101
+ source: props.maskSource,
102
+ type: props.maskType || "alpha"
103
+ } : void 0,
104
+ maps: mapsFromProps,
105
+ renderOrder: props.renderOrder ?? detectedOrderRef.current,
106
+ transform: effectiveTransform
107
+ };
108
+ parentRegister(instanceId, componentDefinition.fragmentNode, parentId, metadata, uniformsRef.current, componentDefinition, isCapturesDOM ? captureCanvasRef.current ?? void 0 : void 0);
109
+ return () => {
110
+ parentRegister(instanceId, null, null, null, null);
111
+ };
112
+ } catch (error) {
113
+ console.error("Error registering shader node:", error);
114
+ return () => {};
115
+ }
116
+ }, [
117
+ instanceId,
118
+ parentId,
119
+ parentRegister,
120
+ domMounted
121
+ ]);
122
+ useEffect(() => {
123
+ if (props.renderOrder === void 0 && markerRef.current) {
124
+ const parent = markerRef.current.parentElement;
125
+ if (parent) {
126
+ const siblings = parent.querySelectorAll(":scope > [data-shader-id]");
127
+ const position = Array.from(siblings).indexOf(markerRef.current);
128
+ if (position >= 0) {
129
+ detectedOrderRef.current = position;
130
+ parentMetadataUpdate(instanceId, { renderOrder: position });
131
+ }
132
+ }
133
+ }
134
+ }, []);
135
+ const prevPropsRef = useRef({});
136
+ const mapsFromProps = useMemo(() => {
137
+ const maps = {};
138
+ for (const [key, value] of Object.entries(props)) if (key !== "children" && key !== "ref" && isPropDriver(value)) maps[key] = value;
139
+ return Object.keys(maps).length > 0 ? maps : void 0;
140
+ }, [props]);
141
+ useEffect(() => {
142
+ if (!uniformsRef.current) return;
143
+ try {
144
+ Object.entries(uniformsRef.current).forEach(([propName, uniformData]) => {
145
+ if (!uniformData || typeof uniformData !== "object") return;
146
+ const { uniform } = uniformData;
147
+ if (uniform?.value !== void 0 && propName in effectiveProps) {
148
+ const newValue = effectiveProps[propName];
149
+ if (isPropDriver(newValue)) return;
150
+ if (newValue !== prevPropsRef.current[propName]) {
151
+ parentUniformUpdate(instanceId, propName, newValue);
152
+ prevPropsRef.current[propName] = newValue;
153
+ }
154
+ }
155
+ });
156
+ } catch (error) {
157
+ console.error("Error updating uniforms:", error);
158
+ }
159
+ }, [
160
+ effectiveProps,
161
+ instanceId,
162
+ parentUniformUpdate
163
+ ]);
164
+ useEffect(() => {
165
+ try {
166
+ parentMetadataUpdate(instanceId, {
167
+ blendMode: props.blendMode || "normal",
168
+ opacity: props.opacity,
169
+ visible: props.visible === false ? false : true,
170
+ id: props.id,
171
+ mask: props.maskSource ? {
172
+ source: props.maskSource,
173
+ type: props.maskType || "alpha"
174
+ } : void 0,
175
+ maps: mapsFromProps,
176
+ renderOrder: props.renderOrder ?? detectedOrderRef.current,
177
+ transform: effectiveTransform
178
+ });
179
+ } catch (error) {
180
+ console.error("Error updating metadata:", error);
181
+ }
182
+ }, [
183
+ props.blendMode,
184
+ props.opacity,
185
+ props.visible,
186
+ props.maskSource,
187
+ props.maskType,
188
+ props.renderOrder,
189
+ props.id,
190
+ mapsFromProps,
191
+ effectiveTransform,
192
+ instanceId,
193
+ parentMetadataUpdate
194
+ ]);
195
+ if (props.ref && typeof props.ref === "function") try {
196
+ props.ref(null);
197
+ } catch (e) {}
198
+ const captureCanvas = isCapturesDOM && domMounted ? createPortal(/* @__PURE__ */ jsx("canvas", {
199
+ ref: captureCanvasRef,
200
+ "layoutsubtree": "",
201
+ width: captureSize.w,
202
+ height: captureSize.h,
203
+ style: {
204
+ position: "fixed",
205
+ inset: 0,
206
+ width: "100vw",
207
+ height: "100vh",
208
+ zIndex: -9999
209
+ },
210
+ children: props.children
211
+ }), document.body) : null;
212
+ return /* @__PURE__ */ jsxs(ShaderContext.Provider, {
213
+ value: childContextValue,
214
+ children: [/* @__PURE__ */ jsx("span", {
215
+ ref: markerRef,
216
+ style: MARKER_STYLE,
217
+ "data-shader-id": instanceId,
218
+ children: !isCapturesDOM && props.children
219
+ }), captureCanvas]
220
+ });
221
+ };
222
+ var Fog_default = ShaderComponent;
223
+ export { ShaderComponent, Fog_default as default };
@@ -57,6 +57,7 @@ var componentMap = {
57
57
  FlowField: lazy(() => import("./FlowField.js")),
58
58
  Flower: lazy(() => import("./Flower.js")),
59
59
  FlowingGradient: lazy(() => import("./FlowingGradient.js")),
60
+ Fog: lazy(() => import("./Fog.js")),
60
61
  Form3D: lazy(() => import("./Form3D.js")),
61
62
  Glass: lazy(() => import("./Glass.js")),
62
63
  GlassTiles: lazy(() => import("./GlassTiles.js")),
@@ -98,6 +99,8 @@ var componentMap = {
98
99
  Shatter: lazy(() => import("./Shatter.js")),
99
100
  SimplexNoise: lazy(() => import("./SimplexNoise.js")),
100
101
  SineWave: lazy(() => import("./SineWave.js")),
102
+ Smoke: lazy(() => import("./Smoke.js")),
103
+ SmokeFill: lazy(() => import("./SmokeFill.js")),
101
104
  Solarize: lazy(() => import("./Solarize.js")),
102
105
  SolidColor: lazy(() => import("./SolidColor.js")),
103
106
  Spherize: lazy(() => import("./Spherize.js")),
@@ -89,7 +89,7 @@ const Shader = ({ children, disableTelemetry = false, colorSpace = "p3-linear",
89
89
  return;
90
90
  }
91
91
  if (rendererRef.current.getPerformanceStats().fps > 0) {
92
- telemetryCollectorRef.current = startTelemetry(rendererRef.current, "2.5.103", disableTelemetry, isPreview);
92
+ telemetryCollectorRef.current = startTelemetry(rendererRef.current, "2.5.104", disableTelemetry, isPreview);
93
93
  if (telemetryCollectorRef.current) telemetryCollectorRef.current.start();
94
94
  telemetryStartTimeoutRef.current = null;
95
95
  } else telemetryStartTimeoutRef.current = window.setTimeout(checkRendering, 500);
@@ -0,0 +1,223 @@
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/Smoke/index.js";
8
+ var _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
+ function computeEffectiveProps(props, defaultProps$1) {
18
+ let baseProps = { ...defaultProps$1 };
19
+ for (const [key, value] of Object.entries(props)) if (key !== "children" && key !== "ref" && value !== void 0 && !isPropDriver(value)) baseProps[key] = value;
20
+ return baseProps;
21
+ }
22
+ var MARKER_STYLE = { display: "contents" };
23
+ var DEFAULT_TRANSFORM = {
24
+ offsetX: 0,
25
+ offsetY: 0,
26
+ rotation: 0,
27
+ scale: 1,
28
+ anchorX: .5,
29
+ anchorY: .5,
30
+ edges: "transparent"
31
+ };
32
+ var defaultProps = {
33
+ blendMode: "normal",
34
+ visible: true
35
+ };
36
+ try {
37
+ if (componentDefinition && componentDefinition.props) Object.entries(componentDefinition.props).forEach(([key, config]) => {
38
+ const propConfig = config;
39
+ if (propConfig && typeof propConfig === "object" && "default" in propConfig) defaultProps[key] = propConfig.default;
40
+ });
41
+ } catch (e) {
42
+ console.warn("Error extracting default props:", e);
43
+ }
44
+ const ShaderComponent = (props) => {
45
+ const context = useContext(ShaderContext);
46
+ if (!context) throw new Error("Shader components must be used inside an <Shader> component or another shader component");
47
+ const { shaderParentId: parentId, shaderNodeRegister: parentRegister, shaderUniformUpdate: parentUniformUpdate, shaderMetadataUpdate: parentMetadataUpdate, shaderColorSpace } = context;
48
+ const reactId = useId();
49
+ const instanceId = useMemo(() => {
50
+ return (props.id ? props.id.replace(/[^a-zA-Z0-9_]/g, "_") : null) || reactId.replace(/[^a-zA-Z0-9_]/g, "");
51
+ }, [props.id, reactId]);
52
+ const effectiveProps = useMemo(() => {
53
+ return computeEffectiveProps(props, defaultProps);
54
+ }, [props]);
55
+ const effectiveTransform = useMemo(() => ({
56
+ ...DEFAULT_TRANSFORM,
57
+ ...props.transform
58
+ }), [props.transform]);
59
+ const markerRef = useRef(null);
60
+ const isCapturesDOM = !!componentDefinition.capturesDOM;
61
+ const captureCanvasRef = useRef(null);
62
+ const [domMounted, setDomMounted] = useState(false);
63
+ const [captureSize, setCaptureSize] = useState(() => ({
64
+ w: typeof window !== "undefined" ? Math.round(window.innerWidth * Math.min(window.devicePixelRatio, 2)) : 0,
65
+ h: typeof window !== "undefined" ? Math.round(window.innerHeight * Math.min(window.devicePixelRatio, 2)) : 0
66
+ }));
67
+ useEffect(() => {
68
+ if (!isCapturesDOM) return;
69
+ setDomMounted(true);
70
+ const onResize = () => {
71
+ const d = Math.min(window.devicePixelRatio, 2);
72
+ setCaptureSize({
73
+ w: Math.round(window.innerWidth * d),
74
+ h: Math.round(window.innerHeight * d)
75
+ });
76
+ };
77
+ window.addEventListener("resize", onResize);
78
+ return () => window.removeEventListener("resize", onResize);
79
+ }, [isCapturesDOM]);
80
+ const detectedOrderRef = useRef(void 0);
81
+ const uniformsRef = useRef(null);
82
+ if (uniformsRef.current === null) {
83
+ setColorSpaceMode(shaderColorSpace);
84
+ uniformsRef.current = createUniformsMap(componentDefinition, effectiveProps, instanceId);
85
+ }
86
+ const childContextValue = useMemo(() => {
87
+ return {
88
+ ...context,
89
+ shaderParentId: instanceId
90
+ };
91
+ }, [context, instanceId]);
92
+ useEffect(() => {
93
+ if (!uniformsRef.current) return;
94
+ try {
95
+ const metadata = {
96
+ blendMode: props.blendMode || "normal",
97
+ opacity: props.opacity,
98
+ visible: props.visible === false ? false : true,
99
+ id: props.id,
100
+ mask: props.maskSource ? {
101
+ source: props.maskSource,
102
+ type: props.maskType || "alpha"
103
+ } : void 0,
104
+ maps: mapsFromProps,
105
+ renderOrder: props.renderOrder ?? detectedOrderRef.current,
106
+ transform: effectiveTransform
107
+ };
108
+ parentRegister(instanceId, componentDefinition.fragmentNode, parentId, metadata, uniformsRef.current, componentDefinition, isCapturesDOM ? captureCanvasRef.current ?? void 0 : void 0);
109
+ return () => {
110
+ parentRegister(instanceId, null, null, null, null);
111
+ };
112
+ } catch (error) {
113
+ console.error("Error registering shader node:", error);
114
+ return () => {};
115
+ }
116
+ }, [
117
+ instanceId,
118
+ parentId,
119
+ parentRegister,
120
+ domMounted
121
+ ]);
122
+ useEffect(() => {
123
+ if (props.renderOrder === void 0 && markerRef.current) {
124
+ const parent = markerRef.current.parentElement;
125
+ if (parent) {
126
+ const siblings = parent.querySelectorAll(":scope > [data-shader-id]");
127
+ const position = Array.from(siblings).indexOf(markerRef.current);
128
+ if (position >= 0) {
129
+ detectedOrderRef.current = position;
130
+ parentMetadataUpdate(instanceId, { renderOrder: position });
131
+ }
132
+ }
133
+ }
134
+ }, []);
135
+ const prevPropsRef = useRef({});
136
+ const mapsFromProps = useMemo(() => {
137
+ const maps = {};
138
+ for (const [key, value] of Object.entries(props)) if (key !== "children" && key !== "ref" && isPropDriver(value)) maps[key] = value;
139
+ return Object.keys(maps).length > 0 ? maps : void 0;
140
+ }, [props]);
141
+ useEffect(() => {
142
+ if (!uniformsRef.current) return;
143
+ try {
144
+ Object.entries(uniformsRef.current).forEach(([propName, uniformData]) => {
145
+ if (!uniformData || typeof uniformData !== "object") return;
146
+ const { uniform } = uniformData;
147
+ if (uniform?.value !== void 0 && propName in effectiveProps) {
148
+ const newValue = effectiveProps[propName];
149
+ if (isPropDriver(newValue)) return;
150
+ if (newValue !== prevPropsRef.current[propName]) {
151
+ parentUniformUpdate(instanceId, propName, newValue);
152
+ prevPropsRef.current[propName] = newValue;
153
+ }
154
+ }
155
+ });
156
+ } catch (error) {
157
+ console.error("Error updating uniforms:", error);
158
+ }
159
+ }, [
160
+ effectiveProps,
161
+ instanceId,
162
+ parentUniformUpdate
163
+ ]);
164
+ useEffect(() => {
165
+ try {
166
+ parentMetadataUpdate(instanceId, {
167
+ blendMode: props.blendMode || "normal",
168
+ opacity: props.opacity,
169
+ visible: props.visible === false ? false : true,
170
+ id: props.id,
171
+ mask: props.maskSource ? {
172
+ source: props.maskSource,
173
+ type: props.maskType || "alpha"
174
+ } : void 0,
175
+ maps: mapsFromProps,
176
+ renderOrder: props.renderOrder ?? detectedOrderRef.current,
177
+ transform: effectiveTransform
178
+ });
179
+ } catch (error) {
180
+ console.error("Error updating metadata:", error);
181
+ }
182
+ }, [
183
+ props.blendMode,
184
+ props.opacity,
185
+ props.visible,
186
+ props.maskSource,
187
+ props.maskType,
188
+ props.renderOrder,
189
+ props.id,
190
+ mapsFromProps,
191
+ effectiveTransform,
192
+ instanceId,
193
+ parentMetadataUpdate
194
+ ]);
195
+ if (props.ref && typeof props.ref === "function") try {
196
+ props.ref(null);
197
+ } catch (e) {}
198
+ const captureCanvas = isCapturesDOM && domMounted ? createPortal(/* @__PURE__ */ jsx("canvas", {
199
+ ref: captureCanvasRef,
200
+ "layoutsubtree": "",
201
+ width: captureSize.w,
202
+ height: captureSize.h,
203
+ style: {
204
+ position: "fixed",
205
+ inset: 0,
206
+ width: "100vw",
207
+ height: "100vh",
208
+ zIndex: -9999
209
+ },
210
+ children: props.children
211
+ }), document.body) : null;
212
+ return /* @__PURE__ */ jsxs(ShaderContext.Provider, {
213
+ value: childContextValue,
214
+ children: [/* @__PURE__ */ jsx("span", {
215
+ ref: markerRef,
216
+ style: MARKER_STYLE,
217
+ "data-shader-id": instanceId,
218
+ children: !isCapturesDOM && props.children
219
+ }), captureCanvas]
220
+ });
221
+ };
222
+ var Smoke_default = ShaderComponent;
223
+ export { ShaderComponent, Smoke_default as default };
@@ -0,0 +1,223 @@
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/SmokeFill/index.js";
8
+ var _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
+ function computeEffectiveProps(props, defaultProps$1) {
18
+ let baseProps = { ...defaultProps$1 };
19
+ for (const [key, value] of Object.entries(props)) if (key !== "children" && key !== "ref" && value !== void 0 && !isPropDriver(value)) baseProps[key] = value;
20
+ return baseProps;
21
+ }
22
+ var MARKER_STYLE = { display: "contents" };
23
+ var DEFAULT_TRANSFORM = {
24
+ offsetX: 0,
25
+ offsetY: 0,
26
+ rotation: 0,
27
+ scale: 1,
28
+ anchorX: .5,
29
+ anchorY: .5,
30
+ edges: "transparent"
31
+ };
32
+ var defaultProps = {
33
+ blendMode: "normal",
34
+ visible: true
35
+ };
36
+ try {
37
+ if (componentDefinition && componentDefinition.props) Object.entries(componentDefinition.props).forEach(([key, config]) => {
38
+ const propConfig = config;
39
+ if (propConfig && typeof propConfig === "object" && "default" in propConfig) defaultProps[key] = propConfig.default;
40
+ });
41
+ } catch (e) {
42
+ console.warn("Error extracting default props:", e);
43
+ }
44
+ const ShaderComponent = (props) => {
45
+ const context = useContext(ShaderContext);
46
+ if (!context) throw new Error("Shader components must be used inside an <Shader> component or another shader component");
47
+ const { shaderParentId: parentId, shaderNodeRegister: parentRegister, shaderUniformUpdate: parentUniformUpdate, shaderMetadataUpdate: parentMetadataUpdate, shaderColorSpace } = context;
48
+ const reactId = useId();
49
+ const instanceId = useMemo(() => {
50
+ return (props.id ? props.id.replace(/[^a-zA-Z0-9_]/g, "_") : null) || reactId.replace(/[^a-zA-Z0-9_]/g, "");
51
+ }, [props.id, reactId]);
52
+ const effectiveProps = useMemo(() => {
53
+ return computeEffectiveProps(props, defaultProps);
54
+ }, [props]);
55
+ const effectiveTransform = useMemo(() => ({
56
+ ...DEFAULT_TRANSFORM,
57
+ ...props.transform
58
+ }), [props.transform]);
59
+ const markerRef = useRef(null);
60
+ const isCapturesDOM = !!componentDefinition.capturesDOM;
61
+ const captureCanvasRef = useRef(null);
62
+ const [domMounted, setDomMounted] = useState(false);
63
+ const [captureSize, setCaptureSize] = useState(() => ({
64
+ w: typeof window !== "undefined" ? Math.round(window.innerWidth * Math.min(window.devicePixelRatio, 2)) : 0,
65
+ h: typeof window !== "undefined" ? Math.round(window.innerHeight * Math.min(window.devicePixelRatio, 2)) : 0
66
+ }));
67
+ useEffect(() => {
68
+ if (!isCapturesDOM) return;
69
+ setDomMounted(true);
70
+ const onResize = () => {
71
+ const d = Math.min(window.devicePixelRatio, 2);
72
+ setCaptureSize({
73
+ w: Math.round(window.innerWidth * d),
74
+ h: Math.round(window.innerHeight * d)
75
+ });
76
+ };
77
+ window.addEventListener("resize", onResize);
78
+ return () => window.removeEventListener("resize", onResize);
79
+ }, [isCapturesDOM]);
80
+ const detectedOrderRef = useRef(void 0);
81
+ const uniformsRef = useRef(null);
82
+ if (uniformsRef.current === null) {
83
+ setColorSpaceMode(shaderColorSpace);
84
+ uniformsRef.current = createUniformsMap(componentDefinition, effectiveProps, instanceId);
85
+ }
86
+ const childContextValue = useMemo(() => {
87
+ return {
88
+ ...context,
89
+ shaderParentId: instanceId
90
+ };
91
+ }, [context, instanceId]);
92
+ useEffect(() => {
93
+ if (!uniformsRef.current) return;
94
+ try {
95
+ const metadata = {
96
+ blendMode: props.blendMode || "normal",
97
+ opacity: props.opacity,
98
+ visible: props.visible === false ? false : true,
99
+ id: props.id,
100
+ mask: props.maskSource ? {
101
+ source: props.maskSource,
102
+ type: props.maskType || "alpha"
103
+ } : void 0,
104
+ maps: mapsFromProps,
105
+ renderOrder: props.renderOrder ?? detectedOrderRef.current,
106
+ transform: effectiveTransform
107
+ };
108
+ parentRegister(instanceId, componentDefinition.fragmentNode, parentId, metadata, uniformsRef.current, componentDefinition, isCapturesDOM ? captureCanvasRef.current ?? void 0 : void 0);
109
+ return () => {
110
+ parentRegister(instanceId, null, null, null, null);
111
+ };
112
+ } catch (error) {
113
+ console.error("Error registering shader node:", error);
114
+ return () => {};
115
+ }
116
+ }, [
117
+ instanceId,
118
+ parentId,
119
+ parentRegister,
120
+ domMounted
121
+ ]);
122
+ useEffect(() => {
123
+ if (props.renderOrder === void 0 && markerRef.current) {
124
+ const parent = markerRef.current.parentElement;
125
+ if (parent) {
126
+ const siblings = parent.querySelectorAll(":scope > [data-shader-id]");
127
+ const position = Array.from(siblings).indexOf(markerRef.current);
128
+ if (position >= 0) {
129
+ detectedOrderRef.current = position;
130
+ parentMetadataUpdate(instanceId, { renderOrder: position });
131
+ }
132
+ }
133
+ }
134
+ }, []);
135
+ const prevPropsRef = useRef({});
136
+ const mapsFromProps = useMemo(() => {
137
+ const maps = {};
138
+ for (const [key, value] of Object.entries(props)) if (key !== "children" && key !== "ref" && isPropDriver(value)) maps[key] = value;
139
+ return Object.keys(maps).length > 0 ? maps : void 0;
140
+ }, [props]);
141
+ useEffect(() => {
142
+ if (!uniformsRef.current) return;
143
+ try {
144
+ Object.entries(uniformsRef.current).forEach(([propName, uniformData]) => {
145
+ if (!uniformData || typeof uniformData !== "object") return;
146
+ const { uniform } = uniformData;
147
+ if (uniform?.value !== void 0 && propName in effectiveProps) {
148
+ const newValue = effectiveProps[propName];
149
+ if (isPropDriver(newValue)) return;
150
+ if (newValue !== prevPropsRef.current[propName]) {
151
+ parentUniformUpdate(instanceId, propName, newValue);
152
+ prevPropsRef.current[propName] = newValue;
153
+ }
154
+ }
155
+ });
156
+ } catch (error) {
157
+ console.error("Error updating uniforms:", error);
158
+ }
159
+ }, [
160
+ effectiveProps,
161
+ instanceId,
162
+ parentUniformUpdate
163
+ ]);
164
+ useEffect(() => {
165
+ try {
166
+ parentMetadataUpdate(instanceId, {
167
+ blendMode: props.blendMode || "normal",
168
+ opacity: props.opacity,
169
+ visible: props.visible === false ? false : true,
170
+ id: props.id,
171
+ mask: props.maskSource ? {
172
+ source: props.maskSource,
173
+ type: props.maskType || "alpha"
174
+ } : void 0,
175
+ maps: mapsFromProps,
176
+ renderOrder: props.renderOrder ?? detectedOrderRef.current,
177
+ transform: effectiveTransform
178
+ });
179
+ } catch (error) {
180
+ console.error("Error updating metadata:", error);
181
+ }
182
+ }, [
183
+ props.blendMode,
184
+ props.opacity,
185
+ props.visible,
186
+ props.maskSource,
187
+ props.maskType,
188
+ props.renderOrder,
189
+ props.id,
190
+ mapsFromProps,
191
+ effectiveTransform,
192
+ instanceId,
193
+ parentMetadataUpdate
194
+ ]);
195
+ if (props.ref && typeof props.ref === "function") try {
196
+ props.ref(null);
197
+ } catch (e) {}
198
+ const captureCanvas = isCapturesDOM && domMounted ? createPortal(/* @__PURE__ */ jsx("canvas", {
199
+ ref: captureCanvasRef,
200
+ "layoutsubtree": "",
201
+ width: captureSize.w,
202
+ height: captureSize.h,
203
+ style: {
204
+ position: "fixed",
205
+ inset: 0,
206
+ width: "100vw",
207
+ height: "100vh",
208
+ zIndex: -9999
209
+ },
210
+ children: props.children
211
+ }), document.body) : null;
212
+ return /* @__PURE__ */ jsxs(ShaderContext.Provider, {
213
+ value: childContextValue,
214
+ children: [/* @__PURE__ */ jsx("span", {
215
+ ref: markerRef,
216
+ style: MARKER_STYLE,
217
+ "data-shader-id": instanceId,
218
+ children: !isCapturesDOM && props.children
219
+ }), captureCanvas]
220
+ });
221
+ };
222
+ var SmokeFill_default = ShaderComponent;
223
+ export { ShaderComponent, SmokeFill_default as default };