shaders 2.4.78 → 2.5.81

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 (64) hide show
  1. package/dist/core/Liquify-Cr-1qPxN.js +228 -0
  2. package/dist/core/index.d.ts +1 -1
  3. package/dist/core/index.d.ts.map +1 -1
  4. package/dist/core/index.js +59 -53
  5. package/dist/core/presetRenderer.d.ts.map +1 -1
  6. package/dist/core/registry.js +2 -2
  7. package/dist/core/renderer.d.ts +5 -1
  8. package/dist/core/renderer.d.ts.map +1 -1
  9. package/dist/core/{shaderRegistry-9huRXSRI.js → shaderRegistry-DnmRD6xy.js} +1 -1
  10. package/dist/core/shaders/Liquify/index.d.ts +13 -7
  11. package/dist/core/shaders/Liquify/index.d.ts.map +1 -1
  12. package/dist/core/shaders/Liquify/index.js +1 -1
  13. package/dist/js/codegen.d.ts +1 -0
  14. package/dist/js/codegen.js +1 -0
  15. package/dist/js/createPreview.d.ts +19 -0
  16. package/dist/js/createPreview.d.ts.map +1 -0
  17. package/dist/js/createPreview.js +64 -0
  18. package/dist/js/createShader.d.ts +24 -0
  19. package/dist/js/createShader.d.ts.map +1 -0
  20. package/dist/js/createShader.js +132 -0
  21. package/dist/js/decode.d.ts +7 -0
  22. package/dist/js/decode.d.ts.map +1 -0
  23. package/dist/js/decode.js +22 -0
  24. package/dist/js/index.d.ts +6 -0
  25. package/dist/js/index.d.ts.map +1 -0
  26. package/dist/js/index.js +4 -0
  27. package/dist/js/types.d.ts +23 -0
  28. package/dist/js/types.d.ts.map +1 -0
  29. package/dist/js/utils/generatePresetCode.d.ts +13 -0
  30. package/dist/js/utils/generatePresetCode.d.ts.map +1 -0
  31. package/dist/js/utils/generatePresetCode.js +1249 -0
  32. package/dist/js/utils/generatePresetCode.template.d.ts +13 -0
  33. package/dist/js/utils/generatePresetCode.template.d.ts.map +1 -0
  34. package/dist/react/Shader.js +1 -1
  35. package/dist/react/components/Liquify.d.ts +4 -2
  36. package/dist/react/components/Liquify.d.ts.map +1 -1
  37. package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
  38. package/dist/react/utils/generatePresetCode.js +45 -8
  39. package/dist/react/utils/generatePresetCode.template.d.ts.map +1 -1
  40. package/dist/registry.js +50 -20
  41. package/dist/solid/components/Liquify.d.ts +4 -2
  42. package/dist/solid/components/Liquify.d.ts.map +1 -1
  43. package/dist/solid/engine/Shader.js +1 -1
  44. package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
  45. package/dist/solid/utils/generatePresetCode.js +51 -6
  46. package/dist/solid/utils/generatePresetCode.template.d.ts.map +1 -1
  47. package/dist/svelte/components/Liquify.svelte.d.ts +2 -1
  48. package/dist/svelte/engine/Preview.svelte.d.ts +11 -25
  49. package/dist/svelte/engine/PreviewRenderComponent.svelte.d.ts +5 -19
  50. package/dist/svelte/{generatePresetCode-Bpe8YcaW.js → generatePresetCode-6ecNqXs9.js} +34 -6
  51. package/dist/svelte/index.js +41 -67
  52. package/dist/svelte/source/components/Liquify.svelte +1 -0
  53. package/dist/svelte/source/engine/Preview.svelte +49 -35
  54. package/dist/svelte/source/engine/PreviewRenderComponent.svelte +9 -5
  55. package/dist/svelte/utils/generatePresetCode.js +1 -1
  56. package/dist/vue/Liquify.vue_vue_type_script_setup_true_lang.js +3 -2
  57. package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +1 -1
  58. package/dist/vue/components/Liquify.vue.d.ts +2 -1
  59. package/dist/vue/components/Liquify.vue.d.ts.map +1 -1
  60. package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
  61. package/dist/vue/utils/generatePresetCode.js +48 -10
  62. package/dist/vue/utils/generatePresetCode.template.d.ts.map +1 -1
  63. package/package.json +15 -1
  64. package/dist/core/Liquify-Cy6ck3_k.js +0 -157
@@ -0,0 +1,13 @@
1
+ interface ComponentConfig {
2
+ type: string;
3
+ id?: string;
4
+ props?: Record<string, any>;
5
+ children?: ComponentConfig[];
6
+ }
7
+ interface PresetConfig {
8
+ components: ComponentConfig[];
9
+ }
10
+ export declare function generatePresetCode(preset: PresetConfig, colorSpace?: 'p3-linear' | 'srgb'): string;
11
+ export declare const availableComponents: any[];
12
+ export {};
13
+ //# sourceMappingURL=generatePresetCode.template.d.ts.map
@@ -0,0 +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;AAkKD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAoBlG;AAGD,eAAO,MAAM,mBAAmB,OAG/B,CAAA"}
@@ -80,7 +80,7 @@ const Shader = ({ children, disableTelemetry = false, colorSpace = "p3-linear",
80
80
  return;
81
81
  }
82
82
  if (rendererRef.current.getPerformanceStats().fps > 0) {
83
- telemetryCollectorRef.current = startTelemetry(rendererRef.current, "2.4.78", disableTelemetry, isPreview);
83
+ telemetryCollectorRef.current = startTelemetry(rendererRef.current, "2.5.81", disableTelemetry, isPreview);
84
84
  if (telemetryCollectorRef.current) telemetryCollectorRef.current.start();
85
85
  telemetryStartTimeoutRef.current = null;
86
86
  } else telemetryStartTimeoutRef.current = window.setTimeout(checkRendering, 500);
@@ -1,5 +1,5 @@
1
1
  import { default as React } from 'react';
2
- import { BlendMode, TransformConfig } from '../../core';
2
+ import { BlendMode, PropDriver, TransformConfig } from '../../core';
3
3
  import { ComponentProps } from '../../core/shaders/Liquify';
4
4
 
5
5
  export type { ComponentProps };
@@ -22,7 +22,9 @@ interface BaseShaderProps {
22
22
  * Component-specific props that merge base props with shader-specific props
23
23
  * Note: ComponentProps are made optional since they have defaults from the shader definition
24
24
  */
25
- type ShaderComponentProps = BaseShaderProps & Partial<Omit<ComponentProps, never>> & {};
25
+ type ShaderComponentProps = BaseShaderProps & Partial<Omit<ComponentProps, 'intensity'>> & {
26
+ intensity?: ComponentProps['intensity'] | PropDriver;
27
+ };
26
28
  /**
27
29
  * The main React wrapper component for Shader shader nodes
28
30
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Liquify.d.ts","sourceRoot":"","sources":["../../src/components/Liquify.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,EAGH,KAAK,SAAS,EAKd,KAAK,eAAe,EACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGhF,YAAY,EAAE,cAAc,EAAE,CAAC;AAI/B;;GAEG;AACH,UAAU,eAAe;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACrC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACxB;AAOD;;;GAGG;AACH,KAAK,oBAAoB,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,GAAG,EACpF,CAAC;AAwDF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAmM1D,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"Liquify.d.ts","sourceRoot":"","sources":["../../src/components/Liquify.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,EAGH,KAAK,SAAS,EAId,KAAK,UAAU,EACf,KAAK,eAAe,EACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGhF,YAAY,EAAE,cAAc,EAAE,CAAC;AAI/B;;GAEG;AACH,UAAU,eAAe;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACrC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACxB;AAOD;;;GAGG;AACH,KAAK,oBAAoB,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,GAAG;IACzF,SAAS,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;CACtD,CAAC;AAwDF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAmM1D,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -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;AA8rCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CA4ClG;AAGD,eAAO,MAAM,mBAAmB,UA4F/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;AA+tCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAsElG;AAGD,eAAO,MAAM,mBAAmB,UA4F/B,CAAA"}
@@ -7,9 +7,16 @@ var DEFAULT_TRANSFORM = {
7
7
  anchorY: .5,
8
8
  edges: "transparent"
9
9
  };
10
+ function toJSLiteral(value) {
11
+ if (typeof value === "string") return JSON.stringify(value);
12
+ if (typeof value === "boolean" || typeof value === "number" || value === null || value === void 0) return String(value);
13
+ if (Array.isArray(value)) return `[${value.map((v) => toJSLiteral(v)).join(", ")}]`;
14
+ if (typeof value === "object") return `{ ${Object.entries(value).map(([k, v]) => `${k}: ${toJSLiteral(v)}`).join(", ")} }`;
15
+ return String(value);
16
+ }
10
17
  function toObjectLiteral(obj) {
11
18
  return `{ ${Object.entries(obj).map(([key, value]) => {
12
- return `${key}: ${typeof value === "string" ? `"${value}"` : value}`;
19
+ return `${key}: ${toJSLiteral(value)}`;
13
20
  }).join(", ")} }`;
14
21
  }
15
22
  var shaderMetadata = {
@@ -577,8 +584,9 @@ var shaderMetadata = {
577
584
  "Liquify": {
578
585
  "opacity": 1,
579
586
  "blendMode": "normal",
580
- "intensity": 1,
581
- "decay": 3,
587
+ "intensity": 10,
588
+ "stiffness": 3,
589
+ "damping": 3,
582
590
  "radius": 1,
583
591
  "edges": "stretch"
584
592
  },
@@ -1084,7 +1092,7 @@ function isPropMapValue(value) {
1084
1092
  function generatePropString(props, componentType, indent = " ") {
1085
1093
  return Object.entries(props).sort(([a], [b]) => a.localeCompare(b)).filter(([key, value]) => {
1086
1094
  if (key === "maskType" && value === "alpha") return false;
1087
- if (componentType === "Glass" && key === "shape" && props.shapeType === "svg") return false;
1095
+ if (key === "shape" && props.shapeSdfUrl) return false;
1088
1096
  if (key === "transform" && typeof value === "object") {
1089
1097
  if (Object.keys(DEFAULT_TRANSFORM).every((k) => value[k] === DEFAULT_TRANSFORM[k])) return false;
1090
1098
  }
@@ -1113,11 +1121,22 @@ function generatePropString(props, componentType, indent = " ") {
1113
1121
  const v = value[k];
1114
1122
  return `${k}: ${typeof v === "string" ? `"${v}"` : v}`;
1115
1123
  }).join(`,\n${indent} `)}\n${indent} }}`;
1116
- if (typeof value === "string") return `${key}="${value}"`;
1117
- else if (value !== null && typeof value === "object") {
1124
+ if (typeof value === "string") {
1125
+ if (value.startsWith("{") && value.endsWith("}")) try {
1126
+ const parsed = JSON.parse(value);
1127
+ if (typeof parsed === "object" && parsed !== null) {
1128
+ const keys = Object.keys(parsed);
1129
+ if (keys.length > 1) return `${key}={{\n${indent} ${keys.map((k) => `${k}: ${toJSLiteral(parsed[k])}`).join(`,\n${indent} `)}\n${indent} }}`;
1130
+ return `${key}={${toObjectLiteral(parsed)}}`;
1131
+ }
1132
+ } catch {}
1133
+ return `${key}="${value}"`;
1134
+ } else if (value !== null && typeof value === "object") {
1118
1135
  const roundedValue = { ...value };
1119
1136
  if ("x" in roundedValue && typeof roundedValue.x === "number") roundedValue.x = Math.round(roundedValue.x * 100) / 100;
1120
1137
  if ("y" in roundedValue && typeof roundedValue.y === "number") roundedValue.y = Math.round(roundedValue.y * 100) / 100;
1138
+ const keys = Object.keys(roundedValue);
1139
+ if (keys.length > 1) return `${key}={{\n${indent} ${keys.map((k) => `${k}: ${typeof roundedValue[k] === "string" ? `"${roundedValue[k]}"` : roundedValue[k]}`).join(`,\n${indent} `)}\n${indent} }}`;
1121
1140
  return `${key}={${toObjectLiteral(roundedValue)}}`;
1122
1141
  } else return `${key}={${value}}`;
1123
1142
  }).join("\n" + indent + " ");
@@ -1140,7 +1159,15 @@ function isIdReferenced(id, allComponents) {
1140
1159
  });
1141
1160
  }
1142
1161
  function generatePresetCode(preset, colorSpace) {
1143
- const generateComponentString = (config, indent = " ") => {
1162
+ const componentTypes = /* @__PURE__ */ new Set();
1163
+ function collectTypes(components) {
1164
+ for (const config of components) {
1165
+ componentTypes.add(config.type);
1166
+ if (config.children) collectTypes(config.children);
1167
+ }
1168
+ }
1169
+ collectTypes(preset.components);
1170
+ const generateComponentString = (config, indent = " ") => {
1144
1171
  const propString = config.props ? generatePropString(config.props, config.type, indent) : "";
1145
1172
  let idString = "";
1146
1173
  if (config.id) {
@@ -1155,7 +1182,17 @@ function generatePresetCode(preset, colorSpace) {
1155
1182
  else return `${indent}<${config.type} />`;
1156
1183
  };
1157
1184
  const componentStrings = preset.components.map((config) => generateComponentString(config)).join("\n");
1158
- return `<Shader${colorSpace && colorSpace !== "p3-linear" ? ` colorSpace="${colorSpace}"` : ""}>\n${componentStrings}\n</Shader>`;
1185
+ const shaderProps = colorSpace && colorSpace !== "p3-linear" ? ` colorSpace="${colorSpace}"` : "";
1186
+ const allImports = ["Shader", ...Array.from(componentTypes).sort()];
1187
+ return `${allImports.length > 3 ? `import {\n ${allImports.join(",\n ")},\n} from 'shaders/react'` : `import { ${allImports.join(", ")} } from 'shaders/react'`}
1188
+
1189
+ export default function ShaderEffect() {
1190
+ return (
1191
+ <Shader${shaderProps}>
1192
+ ${componentStrings}
1193
+ </Shader>
1194
+ )
1195
+ }`;
1159
1196
  }
1160
1197
  const availableComponents = [
1161
1198
  "AngularBlur",
@@ -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;AAqJD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CA4ClG;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;AAqLD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAsElG;AAGD,eAAO,MAAM,mBAAmB,OAG/B,CAAA"}
package/dist/registry.js CHANGED
@@ -9830,36 +9830,51 @@ export const shaderRegistry = [
9830
9830
  "requiresChild": true,
9831
9831
  "props": {
9832
9832
  "intensity": {
9833
- "default": 1,
9834
- "description": "Strength of the distortion effect",
9833
+ "default": 10,
9834
+ "description": "Scale of the fabric displacement effect",
9835
9835
  "ui": {
9836
- "type": "range",
9836
+ "type": [
9837
+ "range",
9838
+ "map"
9839
+ ],
9837
9840
  "min": 0,
9838
- "max": 5,
9841
+ "max": 20,
9839
9842
  "step": 0.1,
9840
9843
  "label": "Intensity",
9841
9844
  "group": "Effect"
9842
9845
  }
9843
9846
  },
9844
- "decay": {
9847
+ "stiffness": {
9845
9848
  "default": 3,
9846
- "description": "Rate of distortion decay (higher = faster)",
9849
+ "description": "Fabric rigidity (higher = stiffer canvas, lower = stretchy silk)",
9850
+ "ui": {
9851
+ "type": "range",
9852
+ "min": 1,
9853
+ "max": 30,
9854
+ "step": 0.5,
9855
+ "label": "Stiffness",
9856
+ "group": "Effect"
9857
+ }
9858
+ },
9859
+ "damping": {
9860
+ "default": 3,
9861
+ "description": "How quickly fabric motion settles",
9847
9862
  "ui": {
9848
9863
  "type": "range",
9849
9864
  "min": 0,
9850
9865
  "max": 10,
9851
9866
  "step": 0.1,
9852
- "label": "Decay",
9867
+ "label": "Damping",
9853
9868
  "group": "Effect"
9854
9869
  }
9855
9870
  },
9856
9871
  "radius": {
9857
9872
  "default": 1,
9858
- "description": "Radius of the distortion effect",
9873
+ "description": "Cursor influence area",
9859
9874
  "ui": {
9860
9875
  "type": "range",
9861
- "min": 0,
9862
- "max": 3,
9876
+ "min": 0.1,
9877
+ "max": 1.5,
9863
9878
  "step": 0.1,
9864
9879
  "label": "Radius",
9865
9880
  "group": "Effect"
@@ -9898,39 +9913,54 @@ export const shaderRegistry = [
9898
9913
  "propsMetadata": {
9899
9914
  "intensity": {
9900
9915
  "ui": {
9901
- "type": "range",
9916
+ "type": [
9917
+ "range",
9918
+ "map"
9919
+ ],
9902
9920
  "min": 0,
9903
- "max": 5,
9921
+ "max": 20,
9904
9922
  "step": 0.1,
9905
9923
  "label": "Intensity",
9906
9924
  "group": "Effect"
9907
9925
  },
9908
- "default": 1,
9909
- "description": "Strength of the distortion effect"
9926
+ "default": 10,
9927
+ "description": "Scale of the fabric displacement effect"
9910
9928
  },
9911
- "decay": {
9929
+ "stiffness": {
9930
+ "ui": {
9931
+ "type": "range",
9932
+ "min": 1,
9933
+ "max": 30,
9934
+ "step": 0.5,
9935
+ "label": "Stiffness",
9936
+ "group": "Effect"
9937
+ },
9938
+ "default": 3,
9939
+ "description": "Fabric rigidity (higher = stiffer canvas, lower = stretchy silk)"
9940
+ },
9941
+ "damping": {
9912
9942
  "ui": {
9913
9943
  "type": "range",
9914
9944
  "min": 0,
9915
9945
  "max": 10,
9916
9946
  "step": 0.1,
9917
- "label": "Decay",
9947
+ "label": "Damping",
9918
9948
  "group": "Effect"
9919
9949
  },
9920
9950
  "default": 3,
9921
- "description": "Rate of distortion decay (higher = faster)"
9951
+ "description": "How quickly fabric motion settles"
9922
9952
  },
9923
9953
  "radius": {
9924
9954
  "ui": {
9925
9955
  "type": "range",
9926
- "min": 0,
9927
- "max": 3,
9956
+ "min": 0.1,
9957
+ "max": 1.5,
9928
9958
  "step": 0.1,
9929
9959
  "label": "Radius",
9930
9960
  "group": "Effect"
9931
9961
  },
9932
9962
  "default": 1,
9933
- "description": "Radius of the distortion effect"
9963
+ "description": "Cursor influence area"
9934
9964
  },
9935
9965
  "edges": {
9936
9966
  "ui": {
@@ -1,5 +1,5 @@
1
1
  import { JSX } from 'solid-js';
2
- import { BlendMode, TransformConfig } from '../../core';
2
+ import { BlendMode, PropDriver, TransformConfig } from '../../core';
3
3
  import { ComponentProps } from '../../core/shaders/Liquify';
4
4
  export type { ComponentProps };
5
5
  /**
@@ -20,7 +20,9 @@ interface BaseShaderProps {
20
20
  * Component-specific props that merge base props with shader-specific props
21
21
  * Note: ComponentProps are made optional since they have defaults from the shader definition
22
22
  */
23
- type ShaderComponentProps = BaseShaderProps & Partial<Omit<ComponentProps, never>> & {};
23
+ type ShaderComponentProps = BaseShaderProps & Partial<Omit<ComponentProps, 'intensity'>> & {
24
+ intensity?: ComponentProps['intensity'] | PropDriver;
25
+ };
24
26
  /**
25
27
  * The main Solid wrapper component for Shader shader nodes
26
28
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Liquify.d.ts","sourceRoot":"","sources":["../../src/components/Liquify.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4D,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,EAGH,KAAK,SAAS,EAKd,KAAK,eAAe,EACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGhF,YAAY,EAAE,cAAc,EAAE,CAAC;AAI/B;;GAEG;AACH,UAAU,eAAe;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACxC;AAOD;;;GAGG;AACH,KAAK,oBAAoB,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,GAAG,EACpF,CAAC;AAmCF;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,oBAAoB,eA+LlE"}
1
+ {"version":3,"file":"Liquify.d.ts","sourceRoot":"","sources":["../../src/components/Liquify.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4D,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,EAGH,KAAK,SAAS,EAId,KAAK,UAAU,EACf,KAAK,eAAe,EACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGhF,YAAY,EAAE,cAAc,EAAE,CAAC;AAI/B;;GAEG;AACH,UAAU,eAAe;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACxC;AAOD;;;GAGG;AACH,KAAK,oBAAoB,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,GAAG;IACzF,SAAS,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;CACtD,CAAC;AAmCF;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,oBAAoB,eA+LlE"}
@@ -63,7 +63,7 @@ function Shader(allProps) {
63
63
  const checkRendering = () => {
64
64
  const stats = rendererInstance.getPerformanceStats();
65
65
  if (stats.fps > 0) {
66
- const version = "2.4.78";
66
+ const version = "2.5.81";
67
67
  telemetryCollector = startTelemetry(rendererInstance, version, props.disableTelemetry, props.isPreview);
68
68
  if (telemetryCollector) {
69
69
  telemetryCollector.start();
@@ -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;AAgsCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CA4ClG;AAGD,eAAO,MAAM,mBAAmB,UA4F/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;AAstCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAsElG;AAGD,eAAO,MAAM,mBAAmB,UA4F/B,CAAA"}
@@ -579,8 +579,9 @@ const shaderMetadata = {
579
579
  "Liquify": {
580
580
  "opacity": 1,
581
581
  "blendMode": "normal",
582
- "intensity": 1,
583
- "decay": 3,
582
+ "intensity": 10,
583
+ "stiffness": 3,
584
+ "damping": 3,
584
585
  "radius": 1,
585
586
  "edges": "stretch"
586
587
  },
@@ -1086,7 +1087,7 @@ function isPropMapValue(value) {
1086
1087
  function generatePropString(props, componentType, indent = " ") {
1087
1088
  return Object.entries(props).sort(([a], [b]) => a.localeCompare(b)).filter(([key, value]) => {
1088
1089
  if (key === "maskType" && value === "alpha") return false;
1089
- if (componentType === "Glass" && key === "shape" && props.shapeType === "svg") return false;
1090
+ if (key === "shape" && props.shapeSdfUrl) return false;
1090
1091
  if (key === "transform" && typeof value === "object") {
1091
1092
  const allDefaults = Object.keys(DEFAULT_TRANSFORM).every(
1092
1093
  (k) => value[k] === DEFAULT_TRANSFORM[k]
@@ -1136,6 +1137,23 @@ ${indent} `)}
1136
1137
  ${indent} }}`;
1137
1138
  }
1138
1139
  if (typeof value === "string") {
1140
+ if (value.startsWith("{") && value.endsWith("}")) {
1141
+ try {
1142
+ const parsed = JSON.parse(value);
1143
+ if (typeof parsed === "object" && parsed !== null) {
1144
+ const keys = Object.keys(parsed);
1145
+ if (keys.length > 1) {
1146
+ const entries = keys.map((k) => `${k}: ${typeof parsed[k] === "string" ? `"${parsed[k]}"` : parsed[k]}`);
1147
+ return `${key}={{
1148
+ ${indent} ${entries.join(`,
1149
+ ${indent} `)}
1150
+ ${indent} }}`;
1151
+ }
1152
+ return `${key}={${toObjectLiteral(parsed)}}`;
1153
+ }
1154
+ } catch {
1155
+ }
1156
+ }
1139
1157
  return `${key}=${JSON.stringify(value)}`;
1140
1158
  } else if (value !== null && typeof value === "object") {
1141
1159
  const roundedValue = { ...value };
@@ -1145,6 +1163,14 @@ ${indent} }}`;
1145
1163
  if ("y" in roundedValue && typeof roundedValue.y === "number") {
1146
1164
  roundedValue.y = Math.round(roundedValue.y * 100) / 100;
1147
1165
  }
1166
+ const keys = Object.keys(roundedValue);
1167
+ if (keys.length > 1) {
1168
+ const entries = keys.map((k) => `${k}: ${typeof roundedValue[k] === "string" ? `"${roundedValue[k]}"` : roundedValue[k]}`);
1169
+ return `${key}={{
1170
+ ${indent} ${entries.join(`,
1171
+ ${indent} `)}
1172
+ ${indent} }}`;
1173
+ }
1148
1174
  return `${key}={${toObjectLiteral(roundedValue)}}`;
1149
1175
  } else {
1150
1176
  return `${key}={${value}}`;
@@ -1174,7 +1200,15 @@ function isIdReferenced(id, allComponents) {
1174
1200
  });
1175
1201
  }
1176
1202
  function generatePresetCode(preset, colorSpace) {
1177
- const generateComponentString = (config, indent = " ") => {
1203
+ const componentTypes = /* @__PURE__ */ new Set();
1204
+ function collectTypes(components) {
1205
+ for (const config of components) {
1206
+ componentTypes.add(config.type);
1207
+ if (config.children) collectTypes(config.children);
1208
+ }
1209
+ }
1210
+ collectTypes(preset.components);
1211
+ const generateComponentString = (config, indent = " ") => {
1178
1212
  const propString = config.props ? generatePropString(config.props, config.type, indent) : "";
1179
1213
  let idString = "";
1180
1214
  if (config.id) {
@@ -1207,9 +1241,20 @@ ${indent} ${attributes} />`;
1207
1241
  };
1208
1242
  const componentStrings = preset.components.map((config) => generateComponentString(config)).join("\n");
1209
1243
  const shaderProps = colorSpace && colorSpace !== "p3-linear" ? ` colorSpace="${colorSpace}"` : "";
1210
- return `<Shader${shaderProps}>
1244
+ const sortedTypes = Array.from(componentTypes).sort();
1245
+ const allImports = ["Shader", ...sortedTypes];
1246
+ const importStatement = allImports.length > 3 ? `import {
1247
+ ${allImports.join(",\n ")},
1248
+ } from 'shaders/solid'` : `import { ${allImports.join(", ")} } from 'shaders/solid'`;
1249
+ return `${importStatement}
1250
+
1251
+ export default function ShaderEffect() {
1252
+ return (
1253
+ <Shader${shaderProps}>
1211
1254
  ${componentStrings}
1212
- </Shader>`;
1255
+ </Shader>
1256
+ )
1257
+ }`;
1213
1258
  }
1214
1259
  const availableComponents = [
1215
1260
  // @ts-ignore - replaced at build time
@@ -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;AAuJD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CA4ClG;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;AA4KD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAsElG;AAGD,eAAO,MAAM,mBAAmB,OAG/B,CAAA"}
@@ -1,9 +1,10 @@
1
- import { type BlendMode, type TransformConfig } from '../../core';
1
+ import { type BlendMode, type PropDriver, type TransformConfig } from '../../core';
2
2
  import { type ComponentProps } from '../../core/shaders/Liquify';
3
3
  /**
4
4
  * Define component props including blend mode, opacity, visibility, masking, and transformation
5
5
  */
6
6
  interface ExtendedComponentProps extends Partial<ComponentProps> {
7
+ intensity?: ComponentProps['intensity'] | PropDriver;
7
8
  blendMode?: BlendMode;
8
9
  opacity?: number;
9
10
  visible?: boolean;
@@ -1,27 +1,13 @@
1
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
- $$bindings?: Bindings;
4
- } & Exports;
5
- (internal: unknown, props: Props & {
6
- $$events?: Events;
7
- $$slots?: Slots;
8
- }): Exports & {
9
- $set?: any;
10
- $on?: any;
11
- };
12
- z_$$bindings?: Bindings;
1
+ interface Props {
2
+ shader?: string;
3
+ presetId?: string;
4
+ apiBaseUrl?: string;
5
+ obfuscationKey?: string;
6
+ watermarkText?: string;
7
+ watermarkLink?: string;
8
+ style?: string;
9
+ [key: string]: any;
13
10
  }
14
- declare const Preview: $$__sveltets_2_IsomorphicComponent<{
15
- [x: string]: any;
16
- shader?: string | undefined | undefined;
17
- presetId?: string | undefined | undefined;
18
- apiBaseUrl?: string | undefined;
19
- obfuscationKey?: string | undefined;
20
- watermarkText?: string | undefined;
21
- watermarkLink?: string | undefined;
22
- style?: string | undefined | undefined;
23
- }, {
24
- [evt: string]: CustomEvent<any>;
25
- }, {}, {}, string>;
26
- type Preview = InstanceType<typeof Preview>;
11
+ declare const Preview: import("svelte").Component<Props, {}, "">;
12
+ type Preview = ReturnType<typeof Preview>;
27
13
  export default Preview;
@@ -1,22 +1,8 @@
1
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
- $$bindings?: Bindings;
4
- } & Exports;
5
- (internal: unknown, props: Props & {
6
- $$events?: Events;
7
- $$slots?: Slots;
8
- }): Exports & {
9
- $set?: any;
10
- $on?: any;
11
- };
12
- z_$$bindings?: Bindings;
13
- }
14
- declare const PreviewRenderComponent: $$__sveltets_2_IsomorphicComponent<{
1
+ interface Props {
15
2
  config: any;
16
3
  componentMap: Record<string, any>;
17
- structureVersion?: number | undefined;
18
- }, {
19
- [evt: string]: CustomEvent<any>;
20
- }, {}, {}, string>;
21
- type PreviewRenderComponent = InstanceType<typeof PreviewRenderComponent>;
4
+ structureVersion?: number;
5
+ }
6
+ declare const PreviewRenderComponent: import("svelte").Component<Props, {}, "">;
7
+ type PreviewRenderComponent = ReturnType<typeof PreviewRenderComponent>;
22
8
  export default PreviewRenderComponent;
@@ -577,8 +577,9 @@ var shaderMetadata = {
577
577
  "Liquify": {
578
578
  "opacity": 1,
579
579
  "blendMode": "normal",
580
- "intensity": 1,
581
- "decay": 3,
580
+ "intensity": 10,
581
+ "stiffness": 3,
582
+ "damping": 3,
582
583
  "radius": 1,
583
584
  "edges": "stretch"
584
585
  },
@@ -1084,7 +1085,7 @@ function isPropMapValue(value) {
1084
1085
  function generatePropString(props, componentType, indent = " ") {
1085
1086
  return Object.entries(props).sort(([a], [b]) => a.localeCompare(b)).filter(([key, value]) => {
1086
1087
  if (key === "maskType" && value === "alpha") return false;
1087
- if (componentType === "Glass" && key === "shape" && props.shapeType === "svg") return false;
1088
+ if (key === "shape" && props.shapeSdfUrl) return false;
1088
1089
  if (key === "transform" && typeof value === "object") {
1089
1090
  if (Object.keys(DEFAULT_TRANSFORM).every((k) => value[k] === DEFAULT_TRANSFORM[k])) return false;
1090
1091
  }
@@ -1113,11 +1114,22 @@ function generatePropString(props, componentType, indent = " ") {
1113
1114
  const v = value[k];
1114
1115
  return `${k}: ${typeof v === "string" ? `"${v}"` : v}`;
1115
1116
  }).join(`,\n${indent} `)}\n${indent} }}`;
1116
- if (typeof value === "string") return `${key}="${value}"`;
1117
- else if (value !== null && typeof value === "object") {
1117
+ if (typeof value === "string") {
1118
+ if (value.startsWith("{") && value.endsWith("}")) try {
1119
+ const parsed = JSON.parse(value);
1120
+ if (typeof parsed === "object" && parsed !== null) {
1121
+ const keys = Object.keys(parsed);
1122
+ if (keys.length > 1) return `${key}={{\n${indent} ${keys.map((k) => `${k}: ${typeof parsed[k] === "string" ? `"${parsed[k]}"` : parsed[k]}`).join(`,\n${indent} `)}\n${indent} }}`;
1123
+ return `${key}={${toObjectLiteral(parsed)}}`;
1124
+ }
1125
+ } catch {}
1126
+ return `${key}="${value}"`;
1127
+ } else if (value !== null && typeof value === "object") {
1118
1128
  const roundedValue = { ...value };
1119
1129
  if ("x" in roundedValue && typeof roundedValue.x === "number") roundedValue.x = Math.round(roundedValue.x * 100) / 100;
1120
1130
  if ("y" in roundedValue && typeof roundedValue.y === "number") roundedValue.y = Math.round(roundedValue.y * 100) / 100;
1131
+ const keys = Object.keys(roundedValue);
1132
+ if (keys.length > 1) return `${key}={{\n${indent} ${keys.map((k) => `${k}: ${typeof roundedValue[k] === "string" ? `"${roundedValue[k]}"` : roundedValue[k]}`).join(`,\n${indent} `)}\n${indent} }}`;
1121
1133
  return `${key}={${toObjectLiteral(roundedValue)}}`;
1122
1134
  } else return `${key}={${value}}`;
1123
1135
  }).join("\n" + indent + " ");
@@ -1140,6 +1152,14 @@ function isIdReferenced(id, allComponents) {
1140
1152
  });
1141
1153
  }
1142
1154
  function generatePresetCode(preset, colorSpace) {
1155
+ const componentTypes = /* @__PURE__ */ new Set();
1156
+ function collectTypes(components) {
1157
+ for (const config of components) {
1158
+ componentTypes.add(config.type);
1159
+ if (config.children) collectTypes(config.children);
1160
+ }
1161
+ }
1162
+ collectTypes(preset.components);
1143
1163
  const generateComponentString = (config, indent = " ") => {
1144
1164
  const propString = config.props ? generatePropString(config.props, config.type, indent) : "";
1145
1165
  let idString = "";
@@ -1155,7 +1175,15 @@ function generatePresetCode(preset, colorSpace) {
1155
1175
  else return `${indent}<${config.type} />`;
1156
1176
  };
1157
1177
  const componentStrings = preset.components.map((config) => generateComponentString(config)).join("\n");
1158
- return `<Shader${colorSpace && colorSpace !== "p3-linear" ? ` colorSpace="${colorSpace}"` : ""}>\n${componentStrings}\n</Shader>`;
1178
+ const shaderProps = colorSpace && colorSpace !== "p3-linear" ? ` colorSpace="${colorSpace}"` : "";
1179
+ const allImports = ["Shader", ...Array.from(componentTypes).sort()];
1180
+ return `<script>
1181
+ ${allImports.length > 3 ? `import {\n ${allImports.join(",\n ")},\n } from 'shaders/svelte'` : `import { ${allImports.join(", ")} } from 'shaders/svelte'`}
1182
+ <\/script>
1183
+
1184
+ <Shader${shaderProps}>
1185
+ ${componentStrings}
1186
+ </Shader>`;
1159
1187
  }
1160
1188
  const availableComponents = [
1161
1189
  "AngularBlur",