shaders 2.3.59 → 2.3.60

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 (149) hide show
  1. package/dist/core/{AngularBlur-CHTeMEG5.js → AngularBlur-m_DWR-a1.js} +1 -1
  2. package/dist/core/{Aurora-CF3ANMDG.js → Aurora-CYCPE1wp.js} +1 -1
  3. package/dist/core/{Beam-DtcIK_b_.js → Beam-COjEb2JI.js} +1 -1
  4. package/dist/core/{Blob-BnpAPM8l.js → Blob-jHnoxt2N.js} +1 -1
  5. package/dist/core/{Bulge-C3jFPuOK.js → Bulge-CsNj4Jew.js} +1 -1
  6. package/dist/core/{Checkerboard-D1ae-0n2.js → Checkerboard-DwiW08iJ.js} +1 -1
  7. package/dist/core/{ChromaFlow-CeXcR6pL.js → ChromaFlow-DfP9ZDg0.js} +1 -1
  8. package/dist/core/{ChromaticAberration-B4012BNj.js → ChromaticAberration-VL5tfOeo.js} +1 -1
  9. package/dist/core/{Circle-DOQ5F63j.js → Circle-CUYMdgd5.js} +1 -1
  10. package/dist/core/{ConcentricSpin-Ct7YyQP3.js → ConcentricSpin-DBqXmCjg.js} +1 -1
  11. package/dist/core/{ContourLines-DWw0CHEU.js → ContourLines-D2KRIOBw.js} +1 -1
  12. package/dist/core/{CursorRipples-Dl6VZaiT.js → CursorRipples-JWrDL_dU.js} +1 -1
  13. package/dist/core/{CursorTrail-B7RS5cXG.js → CursorTrail-D2_14ZEz.js} +1 -1
  14. package/dist/core/{DiffuseBlur-o0h84ibu.js → DiffuseBlur-siJmc-84.js} +1 -1
  15. package/dist/core/{Dither-BIhaGd7d.js → Dither-GoyNQ4_v.js} +1 -1
  16. package/dist/core/{DotGrid-CrBCbO3M.js → DotGrid-B8bSufr6.js} +1 -1
  17. package/dist/core/{Duotone-HYxV5a8V.js → Duotone-CRiDL3YN.js} +1 -1
  18. package/dist/core/{FloatingParticles-DeWwEtlq.js → FloatingParticles-CtrWM2rw.js} +1 -1
  19. package/dist/core/{FlowField-Bo4T5OFm.js → FlowField-B-sNApu9.js} +1 -1
  20. package/dist/core/{Godrays-CcJx19_L.js → Godrays-BV94FCDI.js} +1 -1
  21. package/dist/core/{Grid-Cvpth9Oi.js → Grid-Czxa6-My.js} +1 -1
  22. package/dist/core/{GridDistortion-cTIdpRyG.js → GridDistortion-CKhOZRpM.js} +1 -1
  23. package/dist/core/{Halftone-BEPTnKW6.js → Halftone-YTJAc3Ie.js} +1 -1
  24. package/dist/core/{Kaleidoscope-Cnfedu-B.js → Kaleidoscope-BDTIWTFC.js} +1 -1
  25. package/dist/core/{LensFlare-DNO4UQG8.js → LensFlare-CxyJBEvr.js} +1 -1
  26. package/dist/core/{LinearBlur-C_bpZQcG.js → LinearBlur-BtsleV0J.js} +1 -1
  27. package/dist/core/{LinearGradient-Bc1INE7C.js → LinearGradient-BP91wtXm.js} +1 -1
  28. package/dist/core/{Liquify-D5sl_Rtk.js → Liquify-2u2lkBhB.js} +1 -1
  29. package/dist/core/{Mirror-C0hacD-B.js → Mirror-BonA1elw.js} +1 -1
  30. package/dist/core/{Perspective-CfC6bKsJ.js → Perspective-Cwpv4683.js} +1 -1
  31. package/dist/core/{Plasma-D5gyjFl8.js → Plasma-BU4ujuLB.js} +1 -1
  32. package/dist/core/{PolarCoordinates-BhAihp7Z.js → PolarCoordinates-6BZYZFoj.js} +1 -1
  33. package/dist/core/{ProgressiveBlur-CJavcHQI.js → ProgressiveBlur-Y8YqC7HM.js} +1 -1
  34. package/dist/core/{RadialGradient-D4yl6nJ-.js → RadialGradient-DauSwpwY.js} +1 -1
  35. package/dist/core/{RectangularCoordinates-CtXnf1mj.js → RectangularCoordinates-C5585uvf.js} +1 -1
  36. package/dist/core/{Ripples-DbZdh29z.js → Ripples-QWGujQgy.js} +1 -1
  37. package/dist/core/{Shatter-CYHavYlJ.js → Shatter-DRSn9uGZ.js} +1 -1
  38. package/dist/core/{SimplexNoise-VmkKWJJ_.js → SimplexNoise-W0fx_Y5Q.js} +1 -1
  39. package/dist/core/{SineWave-BJiQQ5mH.js → SineWave-C-r5bVGK.js} +1 -1
  40. package/dist/core/{SolidColor-Dym-TMi_.js → SolidColor-BY2tBGcO.js} +1 -1
  41. package/dist/core/{Spherize-tGTqCifk.js → Spherize-DF4iTTzb.js} +1 -1
  42. package/dist/core/{Spiral-q4HnjiwB.js → Spiral-DWBdkW7Y.js} +1 -1
  43. package/dist/core/{Strands-BPQ8qqBR.js → Strands-BFVI3C04.js} +1 -1
  44. package/dist/core/{Stretch-DnMB46Ey.js → Stretch-CB92XLiC.js} +1 -1
  45. package/dist/core/{Stripes-Bb3sqRlB.js → Stripes-CTmvjI0U.js} +1 -1
  46. package/dist/core/{StudioBackground-DNezGoE_.js → StudioBackground-DXHPEKcb.js} +1 -1
  47. package/dist/core/{Swirl-BnoTw2v_.js → Swirl-DVaTB8HY.js} +1 -1
  48. package/dist/core/{TiltShift-B35F5fNx.js → TiltShift-CMTVpEBO.js} +1 -1
  49. package/dist/core/{Tint-BmwtUjg4.js → Tint-COD37j4D.js} +1 -1
  50. package/dist/core/{Tritone-BplKm991.js → Tritone-BETUi-og.js} +1 -1
  51. package/dist/core/{Twirl-Dn5j12Yk.js → Twirl-BUlMUymT.js} +1 -1
  52. package/dist/core/{WaveDistortion-Dv8k3RMK.js → WaveDistortion-DzwdX6Wj.js} +1 -1
  53. package/dist/core/{ZoomBlur-CCSC20me.js → ZoomBlur-BE1vT38D.js} +1 -1
  54. package/dist/core/index.js +4 -3
  55. package/dist/core/registry.js +54 -54
  56. package/dist/core/renderer.d.ts +2 -1
  57. package/dist/core/renderer.d.ts.map +1 -1
  58. package/dist/core/shaders/AngularBlur/index.js +2 -2
  59. package/dist/core/shaders/Aurora/index.js +2 -2
  60. package/dist/core/shaders/Beam/index.js +2 -2
  61. package/dist/core/shaders/Blob/index.js +2 -2
  62. package/dist/core/shaders/Bulge/index.js +2 -2
  63. package/dist/core/shaders/Checkerboard/index.js +2 -2
  64. package/dist/core/shaders/ChromaFlow/index.js +2 -2
  65. package/dist/core/shaders/ChromaticAberration/index.js +2 -2
  66. package/dist/core/shaders/Circle/index.js +2 -2
  67. package/dist/core/shaders/ConcentricSpin/index.js +2 -2
  68. package/dist/core/shaders/ContourLines/index.js +2 -2
  69. package/dist/core/shaders/CursorRipples/index.js +2 -2
  70. package/dist/core/shaders/CursorTrail/index.js +2 -2
  71. package/dist/core/shaders/DiffuseBlur/index.js +2 -2
  72. package/dist/core/shaders/Dither/index.js +2 -2
  73. package/dist/core/shaders/DotGrid/index.js +2 -2
  74. package/dist/core/shaders/Duotone/index.js +2 -2
  75. package/dist/core/shaders/FloatingParticles/index.js +2 -2
  76. package/dist/core/shaders/FlowField/index.js +2 -2
  77. package/dist/core/shaders/Godrays/index.js +2 -2
  78. package/dist/core/shaders/Grid/index.js +2 -2
  79. package/dist/core/shaders/GridDistortion/index.js +2 -2
  80. package/dist/core/shaders/Halftone/index.js +2 -2
  81. package/dist/core/shaders/Kaleidoscope/index.js +2 -2
  82. package/dist/core/shaders/LensFlare/index.js +2 -2
  83. package/dist/core/shaders/LinearBlur/index.js +2 -2
  84. package/dist/core/shaders/LinearGradient/index.js +2 -2
  85. package/dist/core/shaders/Liquify/index.js +2 -2
  86. package/dist/core/shaders/Mirror/index.js +2 -2
  87. package/dist/core/shaders/Perspective/index.js +2 -2
  88. package/dist/core/shaders/Plasma/index.js +2 -2
  89. package/dist/core/shaders/PolarCoordinates/index.js +2 -2
  90. package/dist/core/shaders/ProgressiveBlur/index.js +2 -2
  91. package/dist/core/shaders/RadialGradient/index.js +2 -2
  92. package/dist/core/shaders/RectangularCoordinates/index.js +2 -2
  93. package/dist/core/shaders/Ripples/index.js +2 -2
  94. package/dist/core/shaders/Shatter/index.js +2 -2
  95. package/dist/core/shaders/SimplexNoise/index.js +2 -2
  96. package/dist/core/shaders/SineWave/index.js +2 -2
  97. package/dist/core/shaders/SolidColor/index.js +2 -2
  98. package/dist/core/shaders/Spherize/index.js +2 -2
  99. package/dist/core/shaders/Spiral/index.js +2 -2
  100. package/dist/core/shaders/Strands/index.js +2 -2
  101. package/dist/core/shaders/Stretch/index.js +2 -2
  102. package/dist/core/shaders/Stripes/index.js +2 -2
  103. package/dist/core/shaders/StudioBackground/index.js +2 -2
  104. package/dist/core/shaders/Swirl/index.js +2 -2
  105. package/dist/core/shaders/TiltShift/index.js +2 -2
  106. package/dist/core/shaders/Tint/index.js +2 -2
  107. package/dist/core/shaders/Tritone/index.js +2 -2
  108. package/dist/core/shaders/Twirl/index.js +2 -2
  109. package/dist/core/shaders/WaveDistortion/index.js +2 -2
  110. package/dist/core/shaders/ZoomBlur/index.js +2 -2
  111. package/dist/core/telemetry/collector.d.ts.map +1 -1
  112. package/dist/core/telemetry/index.js +1 -0
  113. package/dist/core/telemetry/types.d.ts +1 -0
  114. package/dist/core/telemetry/types.d.ts.map +1 -1
  115. package/dist/core/{transformations-DM6huB9g.js → transformations-B5lM6fYX.js} +10 -3
  116. package/dist/core/utilities/transformations/index.js +2 -0
  117. package/dist/core/utilities/transformations.d.ts +3 -0
  118. package/dist/core/utilities/transformations.d.ts.map +1 -1
  119. package/dist/react/Shader.js +27 -4
  120. package/dist/react/engine/Shader.d.ts +1 -0
  121. package/dist/react/engine/Shader.d.ts.map +1 -1
  122. package/dist/react/utils/generatePresetCode.d.ts +1 -1
  123. package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
  124. package/dist/react/utils/generatePresetCode.js +3 -2
  125. package/dist/react/utils/generatePresetCode.template.d.ts +1 -1
  126. package/dist/react/utils/generatePresetCode.template.d.ts.map +1 -1
  127. package/dist/solid/engine/Shader.d.ts +1 -0
  128. package/dist/solid/engine/Shader.d.ts.map +1 -1
  129. package/dist/solid/engine/Shader.js +25 -5
  130. package/dist/solid/utils/generatePresetCode.d.ts +1 -1
  131. package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
  132. package/dist/solid/utils/generatePresetCode.js +3 -2
  133. package/dist/solid/utils/generatePresetCode.template.d.ts +1 -1
  134. package/dist/solid/utils/generatePresetCode.template.d.ts.map +1 -1
  135. package/dist/svelte/engine/Shader.svelte.d.ts +1 -0
  136. package/dist/svelte/{generatePresetCode-CO9fAymD.js → generatePresetCode-EA1bmNOJ.js} +3 -2
  137. package/dist/svelte/index.js +25 -5
  138. package/dist/svelte/utils/generatePresetCode.d.ts +1 -1
  139. package/dist/svelte/utils/generatePresetCode.js +1 -1
  140. package/dist/svelte/utils/generatePresetCode.template.d.ts +1 -1
  141. package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +23 -6
  142. package/dist/vue/engine/Shader.vue.d.ts +4 -0
  143. package/dist/vue/engine/Shader.vue.d.ts.map +1 -1
  144. package/dist/vue/utils/generatePresetCode.d.ts +1 -1
  145. package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
  146. package/dist/vue/utils/generatePresetCode.js +3 -2
  147. package/dist/vue/utils/generatePresetCode.template.d.ts +1 -1
  148. package/dist/vue/utils/generatePresetCode.template.d.ts.map +1 -1
  149. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"transformations.d.ts","sourceRoot":"","sources":["../../src/utilities/transformations.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,OAAO,CAAA;AAuBtC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,UAAW,OAAO,WAAkB,CAAA;AAEjE;;;;GAIG;AACH,eAAO,MAAM,cAAc,UAAW,MAAM;UAKV,GAAG;;CAGpC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,UAAW,MAAM,KAAG,OAIpD,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,UAAW;IAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,GAAG,MAAM;UA4DzD,GAAG;;CAGnC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,UAAW;IAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,GAAG,MAAM,KAAG,OAiDlG,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAAW,MAAM,GAAG,MAAM,KAAG,MAyEvD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAAW,MAAM,KAAG,MAe9C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;GAO7B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,UAAW,MAAM,KAAG,MAiBnD,CAAA"}
1
+ {"version":3,"file":"transformations.d.ts","sourceRoot":"","sources":["../../src/utilities/transformations.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,OAAO,CAAA;AA4BtC,eAAO,MAAM,iBAAiB,SAAU,WAAW,GAAG,MAAM,SAE3D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,UAAW,OAAO,WAAkB,CAAA;AAEjE;;;;;GAKG;AACH,eAAO,MAAM,cAAc,UAAW,MAAM;UAMV,GAAG;;CAGpC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,UAAW,MAAM,KAAG,OAKpD,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,UAAW;IAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,GAAG,MAAM;UA4DzD,GAAG;;CAGnC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,UAAW;IAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,GAAG,MAAM,KAAG,OAiDlG,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAAW,MAAM,GAAG,MAAM,KAAG,MAyEvD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAAW,MAAM,KAAG,MAe9C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;GAO7B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,UAAW,MAAM,KAAG,MAiBnD,CAAA"}
@@ -2,9 +2,10 @@ import { createContext, useEffect, useMemo, useRef } from "react";
2
2
  import { shaderRenderer } from "../core/index.js";
3
3
  import { vec4 } from "three/tsl";
4
4
  import { TelemetryCollector, isExternalUser, shouldCollectTelemetry } from "../core/telemetry/index.js";
5
+ import { setColorSpaceMode } from "../core/utilities/transformations/index.js";
5
6
  import { jsx, jsxs } from "react/jsx-runtime";
6
7
  const ShaderContext = createContext(null);
7
- const Shader = ({ children, disableTelemetry = false, style = {}, className = "",...rest }) => {
8
+ const Shader = ({ children, disableTelemetry = false, colorSpace = "p3-linear", style = {}, className = "",...rest }) => {
8
9
  const containerRef = useRef(null);
9
10
  const canvasRef = useRef(null);
10
11
  const rootId = useMemo(() => "shader-root-" + Math.random().toString(36).substring(7), []);
@@ -12,6 +13,7 @@ const Shader = ({ children, disableTelemetry = false, style = {}, className = ""
12
13
  if (rendererRef.current === null) rendererRef.current = shaderRenderer();
13
14
  const telemetryCollectorRef = useRef(null);
14
15
  const telemetryStartTimeoutRef = useRef(null);
16
+ const shouldSendTelemetryRef = useRef(null);
15
17
  const nodeRegister = useMemo(() => {
16
18
  return (id, fragmentNodeFunc, parentId, metadata, uniforms = null, componentDefinition = null) => {
17
19
  if (fragmentNodeFunc === null) {
@@ -89,11 +91,15 @@ const Shader = ({ children, disableTelemetry = false, style = {}, className = ""
89
91
  isInitializingRef.current = true;
90
92
  try {
91
93
  const renderer = rendererRef.current;
92
- if (!renderer.isInitialized()) await renderer.initialize({ canvas });
94
+ if (!renderer.isInitialized()) await renderer.initialize({
95
+ canvas,
96
+ colorSpace
97
+ });
93
98
  renderer.registerNode(rootId, ({ childNode }) => childNode || vec4(0, 0, 0, 0), null, null, {});
94
99
  isInitializedRef.current = true;
95
100
  isInitializingRef.current = false;
96
- if (isExternalUser() && shouldCollectTelemetry(disableTelemetry) && !telemetryCollectorRef.current) startTelemetryWhenReady();
101
+ if (shouldSendTelemetryRef.current === null) shouldSendTelemetryRef.current = isExternalUser() && shouldCollectTelemetry(disableTelemetry);
102
+ if (shouldSendTelemetryRef.current && !telemetryCollectorRef.current) startTelemetryWhenReady();
97
103
  } catch (err) {
98
104
  console.error("[Shader] Initialization failed:", err);
99
105
  isInitializingRef.current = false;
@@ -111,7 +117,7 @@ const Shader = ({ children, disableTelemetry = false, style = {}, className = ""
111
117
  if (isCurrentlyVisible && !wasVisibleRef.current) {
112
118
  if (rendererRef.current.isInitialized()) {
113
119
  rendererRef.current.startAnimation();
114
- if (isExternalUser() && shouldCollectTelemetry(disableTelemetry) && !telemetryCollectorRef.current && !telemetryStartTimeoutRef.current) startTelemetryWhenReady();
120
+ if (shouldSendTelemetryRef.current && !telemetryCollectorRef.current && !telemetryStartTimeoutRef.current) startTelemetryWhenReady();
115
121
  } else initializeRenderer().catch(console.error);
116
122
  wasVisibleRef.current = true;
117
123
  } else if (!isCurrentlyVisible && wasVisibleRef.current) {
@@ -155,6 +161,23 @@ const Shader = ({ children, disableTelemetry = false, style = {}, className = ""
155
161
  isInitializingRef.current = false;
156
162
  };
157
163
  }, []);
164
+ const isFirstRenderRef = useRef(true);
165
+ useEffect(() => {
166
+ if (isFirstRenderRef.current) {
167
+ isFirstRenderRef.current = false;
168
+ return;
169
+ }
170
+ if (rendererRef.current && isInitializedRef.current) {
171
+ setColorSpaceMode(colorSpace);
172
+ try {
173
+ rendererRef.current.cleanup();
174
+ isInitializedRef.current = false;
175
+ initializeRenderer().catch(console.error);
176
+ } catch (err) {
177
+ console.error("[Shader] Error updating colorSpace:", err);
178
+ }
179
+ }
180
+ }, [colorSpace]);
158
181
  return /* @__PURE__ */ jsx(ShaderContext.Provider, {
159
182
  value: contextValue,
160
183
  children: /* @__PURE__ */ jsxs("div", {
@@ -10,6 +10,7 @@ export declare const ShaderContext: React.Context<ShaderContextValue | null>;
10
10
  interface ShaderProps {
11
11
  children?: React.ReactNode;
12
12
  disableTelemetry?: boolean;
13
+ colorSpace?: 'p3-linear' | 'srgb';
13
14
  style?: React.CSSProperties;
14
15
  className?: string;
15
16
  [key: string]: any;
@@ -1 +1 @@
1
- {"version":3,"file":"Shader.d.ts","sourceRoot":"","sources":["../../src/engine/Shader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAMvE,MAAM,WAAW,kBAAkB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,mBAAmB,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAClJ,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/E,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;CACjE;AAED,eAAO,MAAM,aAAa,0CAAiD,CAAC;AAE5E,UAAU,WAAW;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA8QxC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Shader.d.ts","sourceRoot":"","sources":["../../src/engine/Shader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAOvE,MAAM,WAAW,kBAAkB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,mBAAmB,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAClJ,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/E,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;CACjE;AAED,eAAO,MAAM,aAAa,0CAAiD,CAAC;AAE5E,UAAU,WAAW;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA2SxC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -7,7 +7,7 @@ interface ComponentConfig {
7
7
  interface PresetConfig {
8
8
  components: ComponentConfig[];
9
9
  }
10
- export declare function generatePresetCode(preset: PresetConfig): string;
10
+ export declare function generatePresetCode(preset: PresetConfig, colorSpace?: 'p3-linear' | 'srgb'): string;
11
11
  export declare const availableComponents: string[];
12
12
  export {};
13
13
  //# sourceMappingURL=generatePresetCode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generatePresetCode.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AAy4BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAyC/D;AAGD,eAAO,MAAM,mBAAmB,UA4E/B,CAAA"}
1
+ {"version":3,"file":"generatePresetCode.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AAy4BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CA4ClG;AAGD,eAAO,MAAM,mBAAmB,UA4E/B,CAAA"}
@@ -841,7 +841,7 @@ function isIdUsedAsMaskSource(id, allComponents) {
841
841
  flattenComponents(allComponents);
842
842
  return flatComponents.some((component) => component.props?.maskSource === id);
843
843
  }
844
- function generatePresetCode(preset) {
844
+ function generatePresetCode(preset, colorSpace) {
845
845
  const generateComponentString = (config, indent = " ") => {
846
846
  const propString = config.props ? generatePropString(config.props, config.type, indent) : "";
847
847
  let idString = "";
@@ -856,7 +856,8 @@ function generatePresetCode(preset) {
856
856
  } else if (attributes) return `${indent}<${config.type}\n${indent} ${attributes} />`;
857
857
  else return `${indent}<${config.type} />`;
858
858
  };
859
- return `<Shader>\n${preset.components.map((config) => generateComponentString(config)).join("\n")}\n</Shader>`;
859
+ const componentStrings = preset.components.map((config) => generateComponentString(config)).join("\n");
860
+ return `<Shader${colorSpace && colorSpace !== "p3-linear" ? ` colorSpace="${colorSpace}"` : ""}>\n${componentStrings}\n</Shader>`;
860
861
  }
861
862
  const availableComponents = [
862
863
  "AngularBlur",
@@ -7,7 +7,7 @@ interface ComponentConfig {
7
7
  interface PresetConfig {
8
8
  components: ComponentConfig[];
9
9
  }
10
- export declare function generatePresetCode(preset: PresetConfig): string;
10
+ export declare function generatePresetCode(preset: PresetConfig, colorSpace?: 'p3-linear' | 'srgb'): string;
11
11
  export declare const availableComponents: any[];
12
12
  export {};
13
13
  //# sourceMappingURL=generatePresetCode.template.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generatePresetCode.template.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.template.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AA4HD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAyC/D;AAGD,eAAO,MAAM,mBAAmB,OAG/B,CAAA"}
1
+ {"version":3,"file":"generatePresetCode.template.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.template.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AA4HD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CA4ClG;AAGD,eAAO,MAAM,mBAAmB,OAG/B,CAAA"}
@@ -9,6 +9,7 @@ export declare const ShaderContext: import('solid-js').Context<ShaderContextValu
9
9
  interface ShaderProps {
10
10
  children?: JSX.Element;
11
11
  disableTelemetry?: boolean;
12
+ colorSpace?: 'p3-linear' | 'srgb';
12
13
  style?: JSX.CSSProperties;
13
14
  class?: string;
14
15
  [key: string]: any;
@@ -1 +1 @@
1
- {"version":3,"file":"Shader.d.ts","sourceRoot":"","sources":["../../src/engine/Shader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyE,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAM3G,MAAM,WAAW,kBAAkB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,mBAAmB,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAClJ,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/E,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;CACjE;AAED,eAAO,MAAM,aAAa,4DAAsC,CAAC;AAEjE,UAAU,WAAW;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,QAAQ,EAAE,WAAW,eA0OnD;AAGD,wBAAgB,gBAAgB,uBAM/B"}
1
+ {"version":3,"file":"Shader.d.ts","sourceRoot":"","sources":["../../src/engine/Shader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuF,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAOzH,MAAM,WAAW,kBAAkB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,mBAAmB,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAClJ,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/E,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;CACjE;AAED,eAAO,MAAM,aAAa,4DAAsC,CAAC;AAEjE,UAAU,WAAW;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAClC,KAAK,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,QAAQ,EAAE,WAAW,eAsQnD;AAGD,wBAAgB,gBAAgB,uBAM/B"}
@@ -1,18 +1,20 @@
1
1
  import { createComponent, template, spread, mergeProps, insert, use } from "solid-js/web";
2
- import { createContext, splitProps, createMemo, onMount, onCleanup, useContext } from "solid-js";
2
+ import { createContext, splitProps, createMemo, onMount, onCleanup, createEffect, useContext } from "solid-js";
3
3
  import { shaderRenderer } from "../../core/index.js";
4
4
  import { vec4 } from "three/tsl";
5
5
  import { isExternalUser, shouldCollectTelemetry, TelemetryCollector } from "../../core/telemetry/index.js";
6
+ import { setColorSpaceMode } from "../../core/utilities/transformations/index.js";
6
7
  var _tmpl$ = /* @__PURE__ */ template(`<div><canvas data-renderer=shaders style=width:100%;height:100%;display:block>`);
7
8
  const ShaderContext = createContext();
8
9
  function Shader(allProps) {
9
- const [props, domProps] = splitProps(allProps, ["children", "disableTelemetry", "style", "class"]);
10
+ const [props, domProps] = splitProps(allProps, ["children", "disableTelemetry", "colorSpace", "style", "class"]);
10
11
  let containerRef;
11
12
  let canvasRef;
12
13
  const rootId = "shader-root-" + Math.random().toString(36).substring(7);
13
14
  const rendererInstance = shaderRenderer();
14
15
  let telemetryCollector = null;
15
16
  let telemetryStartTimeout = null;
17
+ let shouldSendTelemetry = null;
16
18
  let wasVisible = false;
17
19
  let visibilityObserver = null;
18
20
  let isInitialized = false;
@@ -78,7 +80,8 @@ function Shader(allProps) {
78
80
  try {
79
81
  if (!rendererInstance.isInitialized()) {
80
82
  await rendererInstance.initialize({
81
- canvas
83
+ canvas,
84
+ colorSpace: props.colorSpace || "p3-linear"
82
85
  });
83
86
  }
84
87
  rendererInstance.registerNode(
@@ -96,7 +99,10 @@ function Shader(allProps) {
96
99
  );
97
100
  isInitialized = true;
98
101
  isInitializing = false;
99
- if (isExternalUser() && shouldCollectTelemetry(props.disableTelemetry) && !telemetryCollector) {
102
+ if (shouldSendTelemetry === null) {
103
+ shouldSendTelemetry = isExternalUser() && shouldCollectTelemetry(props.disableTelemetry);
104
+ }
105
+ if (shouldSendTelemetry && !telemetryCollector) {
100
106
  startTelemetryWhenReady();
101
107
  }
102
108
  } catch (err) {
@@ -116,7 +122,7 @@ function Shader(allProps) {
116
122
  if (isCurrentlyVisible && !wasVisible) {
117
123
  if (rendererInstance.isInitialized()) {
118
124
  rendererInstance.startAnimation();
119
- if (isExternalUser() && shouldCollectTelemetry(props.disableTelemetry) && !telemetryCollector && !telemetryStartTimeout) {
125
+ if (shouldSendTelemetry && !telemetryCollector && !telemetryStartTimeout) {
120
126
  startTelemetryWhenReady();
121
127
  }
122
128
  } else {
@@ -169,6 +175,20 @@ function Shader(allProps) {
169
175
  }
170
176
  }
171
177
  });
178
+ let isFirstEffect = true;
179
+ createEffect(() => {
180
+ const currentColorSpace = props.colorSpace || "p3-linear";
181
+ if (isFirstEffect) {
182
+ isFirstEffect = false;
183
+ return;
184
+ }
185
+ if (rendererInstance.isInitialized()) {
186
+ setColorSpaceMode(currentColorSpace);
187
+ rendererInstance.cleanup();
188
+ isInitialized = false;
189
+ initializeRenderer().catch(console.error);
190
+ }
191
+ });
172
192
  return createComponent(ShaderContext.Provider, {
173
193
  get value() {
174
194
  return contextValue();
@@ -7,7 +7,7 @@ interface ComponentConfig {
7
7
  interface PresetConfig {
8
8
  components: ComponentConfig[];
9
9
  }
10
- export declare function generatePresetCode(preset: PresetConfig): string;
10
+ export declare function generatePresetCode(preset: PresetConfig, colorSpace?: 'p3-linear' | 'srgb'): string;
11
11
  export declare const availableComponents: string[];
12
12
  export {};
13
13
  //# sourceMappingURL=generatePresetCode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generatePresetCode.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AA24BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAyC/D;AAGD,eAAO,MAAM,mBAAmB,UA4E/B,CAAA"}
1
+ {"version":3,"file":"generatePresetCode.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AA24BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CA4ClG;AAGD,eAAO,MAAM,mBAAmB,UA4E/B,CAAA"}
@@ -871,7 +871,7 @@ function isIdUsedAsMaskSource(id, allComponents) {
871
871
  }
872
872
  );
873
873
  }
874
- function generatePresetCode(preset) {
874
+ function generatePresetCode(preset, colorSpace) {
875
875
  const generateComponentString = (config, indent = " ") => {
876
876
  const propString = config.props ? generatePropString(config.props, config.type, indent) : "";
877
877
  let idString = "";
@@ -904,7 +904,8 @@ ${indent} ${attributes} />`;
904
904
  }
905
905
  };
906
906
  const componentStrings = preset.components.map((config) => generateComponentString(config)).join("\n");
907
- return `<Shader>
907
+ const shaderProps = colorSpace && colorSpace !== "p3-linear" ? ` colorSpace="${colorSpace}"` : "";
908
+ return `<Shader${shaderProps}>
908
909
  ${componentStrings}
909
910
  </Shader>`;
910
911
  }
@@ -7,7 +7,7 @@ interface ComponentConfig {
7
7
  interface PresetConfig {
8
8
  components: ComponentConfig[];
9
9
  }
10
- export declare function generatePresetCode(preset: PresetConfig): string;
10
+ export declare function generatePresetCode(preset: PresetConfig, colorSpace?: 'p3-linear' | 'srgb'): string;
11
11
  export declare const availableComponents: any[];
12
12
  export {};
13
13
  //# sourceMappingURL=generatePresetCode.template.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generatePresetCode.template.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.template.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AA8HD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAyC/D;AAGD,eAAO,MAAM,mBAAmB,OAG/B,CAAA"}
1
+ {"version":3,"file":"generatePresetCode.template.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.template.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AA8HD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CA4ClG;AAGD,eAAO,MAAM,mBAAmB,OAG/B,CAAA"}
@@ -1,5 +1,6 @@
1
1
  interface Props {
2
2
  disableTelemetry?: boolean;
3
+ colorSpace?: 'p3-linear' | 'srgb';
3
4
  children?: import('svelte').Snippet;
4
5
  [key: string]: any;
5
6
  }
@@ -841,7 +841,7 @@ function isIdUsedAsMaskSource(id, allComponents) {
841
841
  flattenComponents(allComponents);
842
842
  return flatComponents.some((component) => component.props?.maskSource === id);
843
843
  }
844
- function generatePresetCode(preset) {
844
+ function generatePresetCode(preset, colorSpace) {
845
845
  const generateComponentString = (config, indent = " ") => {
846
846
  const propString = config.props ? generatePropString(config.props, config.type, indent) : "";
847
847
  let idString = "";
@@ -856,7 +856,8 @@ function generatePresetCode(preset) {
856
856
  } else if (attributes) return `${indent}<${config.type}\n${indent} ${attributes} />`;
857
857
  else return `${indent}<${config.type} />`;
858
858
  };
859
- return `<Shader>\n${preset.components.map((config) => generateComponentString(config)).join("\n")}\n</Shader>`;
859
+ const componentStrings = preset.components.map((config) => generateComponentString(config)).join("\n");
860
+ return `<Shader${colorSpace && colorSpace !== "p3-linear" ? ` colorSpace="${colorSpace}"` : ""}>\n${componentStrings}\n</Shader>`;
860
861
  }
861
862
  const availableComponents = [
862
863
  "AngularBlur",
@@ -1,4 +1,4 @@
1
- import { n as generatePresetCode } from "./generatePresetCode-CO9fAymD.js";
1
+ import { n as generatePresetCode } from "./generatePresetCode-EA1bmNOJ.js";
2
2
  import "svelte/internal/disclose-version";
3
3
  import * as $ from "svelte/internal/client";
4
4
  import { getContext, onDestroy, onMount, setContext } from "svelte";
@@ -79,6 +79,7 @@ import { componentDefinition as componentDefinition$72 } from "../core/shaders/W
79
79
  import { componentDefinition as componentDefinition$73 } from "../core/shaders/ZoomBlur/index.js";
80
80
  import { vec4 } from "three/tsl";
81
81
  import { TelemetryCollector, isExternalUser, shouldCollectTelemetry } from "../core/telemetry/index.js";
82
+ import { setColorSpaceMode } from "../core/utilities/transformations/index.js";
82
83
  var root$74 = $.from_html(`<span style="display:contents"><!></span>`);
83
84
  function AngularBlur($$anchor, $$props) {
84
85
  $.push($$props, true);
@@ -9629,11 +9630,12 @@ var root_1 = $.from_html(`<canvas data-renderer="shaders" style="width: 100%; he
9629
9630
  var root = $.from_html(`<div><!></div>`);
9630
9631
  function Shader($$anchor, $$props) {
9631
9632
  $.push($$props, true);
9632
- const disableTelemetry = $.prop($$props, "disableTelemetry", 3, false), rest = $.rest_props($$props, [
9633
+ const disableTelemetry = $.prop($$props, "disableTelemetry", 3, false), colorSpace = $.prop($$props, "colorSpace", 3, "p3-linear"), rest = $.rest_props($$props, [
9633
9634
  "$$slots",
9634
9635
  "$$events",
9635
9636
  "$$legacy",
9636
9637
  "disableTelemetry",
9638
+ "colorSpace",
9637
9639
  "children"
9638
9640
  ]);
9639
9641
  let containerRef;
@@ -9643,6 +9645,7 @@ function Shader($$anchor, $$props) {
9643
9645
  let rendererInstance = null;
9644
9646
  let telemetryCollector = null;
9645
9647
  let telemetryStartTimeout = null;
9648
+ let shouldSendTelemetry = null;
9646
9649
  setContext("shaderParentId", rootId);
9647
9650
  setContext("shaderNodeRegister", (id, fragmentNodeFunc, parentId, metadata, uniforms = null) => {
9648
9651
  if (!rendererInstance) return;
@@ -9673,9 +9676,13 @@ function Shader($$anchor, $$props) {
9673
9676
  const initializeRenderer = async () => {
9674
9677
  if (!canvasRef || !rendererInstance) return;
9675
9678
  try {
9676
- if (!rendererInstance.isInitialized()) await rendererInstance.initialize({ canvas: canvasRef });
9679
+ if (!rendererInstance.isInitialized()) await rendererInstance.initialize({
9680
+ canvas: canvasRef,
9681
+ colorSpace: colorSpace()
9682
+ });
9677
9683
  rendererInstance.registerNode(rootId, ({ childNode }) => childNode || vec4(0, 0, 0, 0), null, null, {});
9678
- if (isExternalUser() && shouldCollectTelemetry(disableTelemetry()) && !telemetryCollector) startTelemetryWhenReady();
9684
+ if (shouldSendTelemetry === null) shouldSendTelemetry = isExternalUser() && shouldCollectTelemetry(disableTelemetry());
9685
+ if (shouldSendTelemetry && !telemetryCollector) startTelemetryWhenReady();
9679
9686
  } catch (err) {
9680
9687
  console.error("[Shader] Initialization failed:", err);
9681
9688
  throw err;
@@ -9691,7 +9698,7 @@ function Shader($$anchor, $$props) {
9691
9698
  if (isCurrentlyVisible && !wasVisible) {
9692
9699
  if (rendererInstance?.isInitialized()) {
9693
9700
  rendererInstance.startAnimation();
9694
- if (isExternalUser() && shouldCollectTelemetry(disableTelemetry()) && !telemetryCollector && !telemetryStartTimeout) startTelemetryWhenReady();
9701
+ if (shouldSendTelemetry && !telemetryCollector && !telemetryStartTimeout) startTelemetryWhenReady();
9695
9702
  } else initializeRenderer().catch(console.error);
9696
9703
  wasVisible = true;
9697
9704
  } else if (!isCurrentlyVisible && wasVisible) {
@@ -9735,6 +9742,19 @@ function Shader($$anchor, $$props) {
9735
9742
  console.warn("[Shader] Error during cleanup:", err);
9736
9743
  }
9737
9744
  });
9745
+ let isFirstEffect = true;
9746
+ $.user_effect(() => {
9747
+ const currentColorSpace = colorSpace();
9748
+ if (isFirstEffect) {
9749
+ isFirstEffect = false;
9750
+ return;
9751
+ }
9752
+ if (rendererInstance?.isInitialized()) {
9753
+ setColorSpaceMode(currentColorSpace);
9754
+ rendererInstance.cleanup();
9755
+ initializeRenderer().catch(console.error);
9756
+ }
9757
+ });
9738
9758
  var div = root();
9739
9759
  $.attribute_effect(div, () => ({
9740
9760
  class: "shader",
@@ -7,6 +7,6 @@ interface ComponentConfig {
7
7
  interface PresetConfig {
8
8
  components: ComponentConfig[];
9
9
  }
10
- export declare function generatePresetCode(preset: PresetConfig): string;
10
+ export declare function generatePresetCode(preset: PresetConfig, colorSpace?: 'p3-linear' | 'srgb'): string;
11
11
  export declare const availableComponents: string[];
12
12
  export {};
@@ -1,2 +1,2 @@
1
- import { n as generatePresetCode, t as availableComponents } from "../generatePresetCode-CO9fAymD.js";
1
+ import { n as generatePresetCode, t as availableComponents } from "../generatePresetCode-EA1bmNOJ.js";
2
2
  export { availableComponents, generatePresetCode };
@@ -7,6 +7,6 @@ interface ComponentConfig {
7
7
  interface PresetConfig {
8
8
  components: ComponentConfig[];
9
9
  }
10
- export declare function generatePresetCode(preset: PresetConfig): string;
10
+ export declare function generatePresetCode(preset: PresetConfig, colorSpace?: 'p3-linear' | 'srgb'): string;
11
11
  export declare const availableComponents: any[];
12
12
  export {};
@@ -1,7 +1,8 @@
1
- import { createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, provide, ref, renderSlot, shallowRef } from "vue";
1
+ import { createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, provide, ref, renderSlot, shallowRef, watch } from "vue";
2
2
  import { shaderRenderer } from "../core/index.js";
3
3
  import { vec4 } from "three/tsl";
4
4
  import { TelemetryCollector, isExternalUser, shouldCollectTelemetry } from "../core/telemetry/index.js";
5
+ import { setColorSpaceMode } from "../core/utilities/transformations/index.js";
5
6
  var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
6
7
  __name: "Shader",
7
8
  props: {
@@ -11,11 +12,13 @@ var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
11
12
  },
12
13
  enablePerformanceTracking: {
13
14
  type: Boolean,
14
- default: false
15
- }
15
+ default: true
16
+ },
17
+ colorSpace: { default: "p3-linear" }
16
18
  },
17
19
  setup(__props, { expose: __expose }) {
18
20
  const props = __props;
21
+ setColorSpaceMode(props.colorSpace);
19
22
  const containerRef = ref(null);
20
23
  const canvasRef = ref(null);
21
24
  const rootId = ref("shader-root-" + Math.random().toString(36).substring(7));
@@ -23,6 +26,7 @@ var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
23
26
  const rendererResetSignal = ref(0);
24
27
  let telemetryCollector = null;
25
28
  let telemetryStartTimeout = null;
29
+ let shouldSendTelemetry = null;
26
30
  provide("shaderParentId", rootId.value);
27
31
  provide("shaderRendererResetSignal", rendererResetSignal);
28
32
  provide("shaderNodeRegister", (id, fragmentNodeFunc, parentId, metadata, uniforms = null, componentDefinition = null) => {
@@ -39,10 +43,12 @@ var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
39
43
  if (!canvasRef.value) return;
40
44
  if (!rendererInstance.value.isInitialized()) await rendererInstance.value.initialize({
41
45
  canvas: canvasRef.value,
42
- enablePerformanceTracking: props.enablePerformanceTracking
46
+ enablePerformanceTracking: props.enablePerformanceTracking,
47
+ colorSpace: props.colorSpace
43
48
  });
44
49
  rendererInstance.value.registerNode(rootId.value, ({ childNode }) => childNode || vec4(0, 0, 0, 0), null, null, {}, void 0);
45
- if (isExternalUser() && shouldCollectTelemetry(props.disableTelemetry) && !telemetryCollector) startTelemetryWhenReady();
50
+ if (shouldSendTelemetry === null) shouldSendTelemetry = isExternalUser() && shouldCollectTelemetry(props.disableTelemetry);
51
+ if (shouldSendTelemetry && !telemetryCollector) startTelemetryWhenReady();
46
52
  };
47
53
  const startTelemetryWhenReady = () => {
48
54
  const checkRendering = () => {
@@ -65,7 +71,7 @@ var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
65
71
  if (isCurrentlyVisible && !wasVisible) {
66
72
  if (rendererInstance.value.isInitialized()) {
67
73
  rendererInstance.value.startAnimation();
68
- if (isExternalUser() && shouldCollectTelemetry(props.disableTelemetry) && !telemetryCollector && !telemetryStartTimeout) startTelemetryWhenReady();
74
+ if (shouldSendTelemetry && !telemetryCollector && !telemetryStartTimeout) startTelemetryWhenReady();
69
75
  } else initializeRenderer().then(() => {
70
76
  rendererResetSignal.value++;
71
77
  }).catch(console.error);
@@ -88,6 +94,17 @@ var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
88
94
  setupVisibilityObserver();
89
95
  }
90
96
  });
97
+ let isFirstRun = true;
98
+ watch(() => props.colorSpace, (newColorSpace) => {
99
+ if (isFirstRun) {
100
+ isFirstRun = false;
101
+ return;
102
+ }
103
+ if (rendererInstance.value.isInitialized()) {
104
+ setColorSpaceMode(newColorSpace);
105
+ rendererResetSignal.value++;
106
+ }
107
+ });
91
108
  const captureScreenshot = async (maxWidth = 1200) => {
92
109
  if (!canvasRef.value) throw new Error("Canvas not available");
93
110
  try {
@@ -1,6 +1,7 @@
1
1
  interface Props {
2
2
  disableTelemetry?: boolean;
3
3
  enablePerformanceTracking?: boolean;
4
+ colorSpace?: 'p3-linear' | 'srgb';
4
5
  }
5
6
  declare function __VLS_template(): {
6
7
  default?(_: {}): any;
@@ -8,13 +9,16 @@ declare function __VLS_template(): {
8
9
  declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
9
10
  disableTelemetry: boolean;
10
11
  enablePerformanceTracking: boolean;
12
+ colorSpace: string;
11
13
  }>>, {
12
14
  captureScreenshot: (maxWidth?: number) => Promise<Blob>;
13
15
  getPerformanceStats: () => import('../../core').PerformanceStats;
14
16
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
15
17
  disableTelemetry: boolean;
16
18
  enablePerformanceTracking: boolean;
19
+ colorSpace: string;
17
20
  }>>> & Readonly<{}>, {
21
+ colorSpace: "p3-linear" | "srgb";
18
22
  disableTelemetry: boolean;
19
23
  enablePerformanceTracking: boolean;
20
24
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"Shader.vue.d.ts","sourceRoot":"","sources":["../../src/engine/Shader.vue"],"names":[],"mappings":"AASA,UAAU,KAAK;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,yBAAyB,CAAC,EAAE,OAAO,CAAA;CACpC;AAiRD,iBAAS,cAAc;qBAkDO,GAAG;EAKhC;AAUD,QAAA,MAAM,eAAe;;;;8CA/K8B,OAAO,CAAC,IAAI,CAAC;;;;;;sBArK3C,OAAO;+BACE,OAAO;4EA0VnC,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAAvG,wBAAwG;AACxG,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC;AACxD,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAO;QAClD,MAAM,EAAE,CAAC,CAAC;KACT,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"Shader.vue.d.ts","sourceRoot":"","sources":["../../src/engine/Shader.vue"],"names":[],"mappings":"AAUA,UAAU,KAAK;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;CAClC;AA+SD,iBAAS,cAAc;qBAkDO,GAAG;EAKhC;AAUD,QAAA,MAAM,eAAe;;;;;8CAhL8B,OAAO,CAAC,IAAI,CAAC;;;;;;;gBAjMjD,WAAW,GAAG,MAAM;sBAFd,OAAO;+BACE,OAAO;4EAyXnC,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAAvG,wBAAwG;AACxG,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC;AACxD,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAO;QAClD,MAAM,EAAE,CAAC,CAAC;KACT,CAAA;CAAE,CAAC"}
@@ -7,7 +7,7 @@ interface ComponentConfig {
7
7
  interface PresetConfig {
8
8
  components: ComponentConfig[];
9
9
  }
10
- export declare function generatePresetCode(preset: PresetConfig): string;
10
+ export declare function generatePresetCode(preset: PresetConfig, colorSpace?: 'p3-linear' | 'srgb'): string;
11
11
  export declare const availableComponents: string[];
12
12
  export {};
13
13
  //# sourceMappingURL=generatePresetCode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generatePresetCode.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AAs4BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAyC/D;AAGD,eAAO,MAAM,mBAAmB,UA4E/B,CAAA"}
1
+ {"version":3,"file":"generatePresetCode.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AAs4BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CA4ClG;AAGD,eAAO,MAAM,mBAAmB,UA4E/B,CAAA"}
@@ -840,7 +840,7 @@ function isIdUsedAsMaskSource(id, allComponents) {
840
840
  flattenComponents(allComponents);
841
841
  return flatComponents.some((component) => component.props?.maskSource === id);
842
842
  }
843
- function generatePresetCode(preset) {
843
+ function generatePresetCode(preset, colorSpace) {
844
844
  const generateComponentString = (config, indent = " ") => {
845
845
  const propString = config.props ? generatePropString(config.props, config.type, indent) : "";
846
846
  let idString = "";
@@ -855,7 +855,8 @@ function generatePresetCode(preset) {
855
855
  } else if (attributes) return `${indent}<${config.type}\n${indent} ${attributes}/>`;
856
856
  else return `${indent}<${config.type}/>`;
857
857
  };
858
- return `<Shader>\n${preset.components.map((config) => generateComponentString(config)).join("\n")}\n</Shader>`;
858
+ const componentStrings = preset.components.map((config) => generateComponentString(config)).join("\n");
859
+ return `<Shader${colorSpace && colorSpace !== "p3-linear" ? ` color-space="${colorSpace}"` : ""}>\n${componentStrings}\n</Shader>`;
859
860
  }
860
861
  const availableComponents = [
861
862
  "AngularBlur",
@@ -7,7 +7,7 @@ interface ComponentConfig {
7
7
  interface PresetConfig {
8
8
  components: ComponentConfig[];
9
9
  }
10
- export declare function generatePresetCode(preset: PresetConfig): string;
10
+ export declare function generatePresetCode(preset: PresetConfig, colorSpace?: 'p3-linear' | 'srgb'): string;
11
11
  export declare const availableComponents: any[];
12
12
  export {};
13
13
  //# sourceMappingURL=generatePresetCode.template.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generatePresetCode.template.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.template.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AAyHD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAyC/D;AAGD,eAAO,MAAM,mBAAmB,OAG/B,CAAA"}
1
+ {"version":3,"file":"generatePresetCode.template.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.template.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AAyHD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CA4ClG;AAGD,eAAO,MAAM,mBAAmB,OAG/B,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shaders",
3
- "version": "2.3.59",
3
+ "version": "2.3.60",
4
4
  "description": "Shader magic for modern frontends",
5
5
  "author": "Shader Effects Inc.",
6
6
  "homepage": "https://shaders.com/",