shaders 2.4.77 → 2.5.80

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 (47) hide show
  1. package/dist/core/index.d.ts +1 -1
  2. package/dist/core/index.d.ts.map +1 -1
  3. package/dist/core/index.js +57 -51
  4. package/dist/core/presetRenderer.d.ts.map +1 -1
  5. package/dist/core/renderer.d.ts +5 -1
  6. package/dist/core/renderer.d.ts.map +1 -1
  7. package/dist/js/codegen.d.ts +1 -0
  8. package/dist/js/codegen.js +1 -0
  9. package/dist/js/createPreview.d.ts +19 -0
  10. package/dist/js/createPreview.d.ts.map +1 -0
  11. package/dist/js/createPreview.js +64 -0
  12. package/dist/js/createShader.d.ts +24 -0
  13. package/dist/js/createShader.d.ts.map +1 -0
  14. package/dist/js/createShader.js +132 -0
  15. package/dist/js/decode.d.ts +7 -0
  16. package/dist/js/decode.d.ts.map +1 -0
  17. package/dist/js/decode.js +22 -0
  18. package/dist/js/index.d.ts +6 -0
  19. package/dist/js/index.d.ts.map +1 -0
  20. package/dist/js/index.js +4 -0
  21. package/dist/js/types.d.ts +23 -0
  22. package/dist/js/types.d.ts.map +1 -0
  23. package/dist/js/utils/generatePresetCode.d.ts +13 -0
  24. package/dist/js/utils/generatePresetCode.d.ts.map +1 -0
  25. package/dist/js/utils/generatePresetCode.js +1248 -0
  26. package/dist/js/utils/generatePresetCode.template.d.ts +13 -0
  27. package/dist/js/utils/generatePresetCode.template.d.ts.map +1 -0
  28. package/dist/react/Shader.js +1 -2
  29. package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
  30. package/dist/react/utils/generatePresetCode.js +42 -6
  31. package/dist/react/utils/generatePresetCode.template.d.ts.map +1 -1
  32. package/dist/solid/engine/Shader.js +1 -1
  33. package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
  34. package/dist/solid/utils/generatePresetCode.js +48 -4
  35. package/dist/solid/utils/generatePresetCode.template.d.ts.map +1 -1
  36. package/dist/svelte/engine/Preview.svelte.d.ts +11 -25
  37. package/dist/svelte/engine/PreviewRenderComponent.svelte.d.ts +5 -19
  38. package/dist/svelte/{generatePresetCode-Bpe8YcaW.js → generatePresetCode-BN1puRG_.js} +31 -4
  39. package/dist/svelte/index.js +41 -67
  40. package/dist/svelte/source/engine/Preview.svelte +49 -35
  41. package/dist/svelte/source/engine/PreviewRenderComponent.svelte +9 -5
  42. package/dist/svelte/utils/generatePresetCode.js +1 -1
  43. package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +1 -2
  44. package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
  45. package/dist/vue/utils/generatePresetCode.js +45 -8
  46. package/dist/vue/utils/generatePresetCode.template.d.ts.map +1 -1
  47. package/package.json +15 -1
@@ -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,8 +80,7 @@ const Shader = ({ children, disableTelemetry = false, colorSpace = "p3-linear",
80
80
  return;
81
81
  }
82
82
  if (rendererRef.current.getPerformanceStats().fps > 0) {
83
- const version = typeof __SHADERS_VERSION__ !== "undefined" ? __SHADERS_VERSION__ : "unknown";
84
- telemetryCollectorRef.current = startTelemetry(rendererRef.current, version, disableTelemetry, isPreview);
83
+ telemetryCollectorRef.current = startTelemetry(rendererRef.current, "2.5.80", disableTelemetry, isPreview);
85
84
  if (telemetryCollectorRef.current) telemetryCollectorRef.current.start();
86
85
  telemetryStartTimeoutRef.current = null;
87
86
  } else telemetryStartTimeoutRef.current = window.setTimeout(checkRendering, 500);
@@ -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;AA8tCD,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 = {
@@ -1084,7 +1091,7 @@ function isPropMapValue(value) {
1084
1091
  function generatePropString(props, componentType, indent = " ") {
1085
1092
  return Object.entries(props).sort(([a], [b]) => a.localeCompare(b)).filter(([key, value]) => {
1086
1093
  if (key === "maskType" && value === "alpha") return false;
1087
- if (componentType === "Glass" && key === "shape" && props.shapeType === "svg") return false;
1094
+ if (key === "shape" && props.shapeSdfUrl) return false;
1088
1095
  if (key === "transform" && typeof value === "object") {
1089
1096
  if (Object.keys(DEFAULT_TRANSFORM).every((k) => value[k] === DEFAULT_TRANSFORM[k])) return false;
1090
1097
  }
@@ -1113,11 +1120,22 @@ function generatePropString(props, componentType, indent = " ") {
1113
1120
  const v = value[k];
1114
1121
  return `${k}: ${typeof v === "string" ? `"${v}"` : v}`;
1115
1122
  }).join(`,\n${indent} `)}\n${indent} }}`;
1116
- if (typeof value === "string") return `${key}="${value}"`;
1117
- else if (value !== null && typeof value === "object") {
1123
+ if (typeof value === "string") {
1124
+ if (value.startsWith("{") && value.endsWith("}")) try {
1125
+ const parsed = JSON.parse(value);
1126
+ if (typeof parsed === "object" && parsed !== null) {
1127
+ const keys = Object.keys(parsed);
1128
+ if (keys.length > 1) return `${key}={{\n${indent} ${keys.map((k) => `${k}: ${toJSLiteral(parsed[k])}`).join(`,\n${indent} `)}\n${indent} }}`;
1129
+ return `${key}={${toObjectLiteral(parsed)}}`;
1130
+ }
1131
+ } catch {}
1132
+ return `${key}="${value}"`;
1133
+ } else if (value !== null && typeof value === "object") {
1118
1134
  const roundedValue = { ...value };
1119
1135
  if ("x" in roundedValue && typeof roundedValue.x === "number") roundedValue.x = Math.round(roundedValue.x * 100) / 100;
1120
1136
  if ("y" in roundedValue && typeof roundedValue.y === "number") roundedValue.y = Math.round(roundedValue.y * 100) / 100;
1137
+ const keys = Object.keys(roundedValue);
1138
+ 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
1139
  return `${key}={${toObjectLiteral(roundedValue)}}`;
1122
1140
  } else return `${key}={${value}}`;
1123
1141
  }).join("\n" + indent + " ");
@@ -1140,7 +1158,15 @@ function isIdReferenced(id, allComponents) {
1140
1158
  });
1141
1159
  }
1142
1160
  function generatePresetCode(preset, colorSpace) {
1143
- const generateComponentString = (config, indent = " ") => {
1161
+ const componentTypes = /* @__PURE__ */ new Set();
1162
+ function collectTypes(components) {
1163
+ for (const config of components) {
1164
+ componentTypes.add(config.type);
1165
+ if (config.children) collectTypes(config.children);
1166
+ }
1167
+ }
1168
+ collectTypes(preset.components);
1169
+ const generateComponentString = (config, indent = " ") => {
1144
1170
  const propString = config.props ? generatePropString(config.props, config.type, indent) : "";
1145
1171
  let idString = "";
1146
1172
  if (config.id) {
@@ -1155,7 +1181,17 @@ function generatePresetCode(preset, colorSpace) {
1155
1181
  else return `${indent}<${config.type} />`;
1156
1182
  };
1157
1183
  const componentStrings = preset.components.map((config) => generateComponentString(config)).join("\n");
1158
- return `<Shader${colorSpace && colorSpace !== "p3-linear" ? ` colorSpace="${colorSpace}"` : ""}>\n${componentStrings}\n</Shader>`;
1184
+ const shaderProps = colorSpace && colorSpace !== "p3-linear" ? ` colorSpace="${colorSpace}"` : "";
1185
+ const allImports = ["Shader", ...Array.from(componentTypes).sort()];
1186
+ return `${allImports.length > 3 ? `import {\n ${allImports.join(",\n ")},\n} from 'shaders/react'` : `import { ${allImports.join(", ")} } from 'shaders/react'`}
1187
+
1188
+ export default function ShaderEffect() {
1189
+ return (
1190
+ <Shader${shaderProps}>
1191
+ ${componentStrings}
1192
+ </Shader>
1193
+ )
1194
+ }`;
1159
1195
  }
1160
1196
  const availableComponents = [
1161
1197
  "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"}
@@ -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 = typeof __SHADERS_VERSION__ !== "undefined" ? __SHADERS_VERSION__ : "unknown";
66
+ const version = "2.5.80";
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;AAqtCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAsElG;AAGD,eAAO,MAAM,mBAAmB,UA4F/B,CAAA"}
@@ -1086,7 +1086,7 @@ function isPropMapValue(value) {
1086
1086
  function generatePropString(props, componentType, indent = " ") {
1087
1087
  return Object.entries(props).sort(([a], [b]) => a.localeCompare(b)).filter(([key, value]) => {
1088
1088
  if (key === "maskType" && value === "alpha") return false;
1089
- if (componentType === "Glass" && key === "shape" && props.shapeType === "svg") return false;
1089
+ if (key === "shape" && props.shapeSdfUrl) return false;
1090
1090
  if (key === "transform" && typeof value === "object") {
1091
1091
  const allDefaults = Object.keys(DEFAULT_TRANSFORM).every(
1092
1092
  (k) => value[k] === DEFAULT_TRANSFORM[k]
@@ -1136,6 +1136,23 @@ ${indent} `)}
1136
1136
  ${indent} }}`;
1137
1137
  }
1138
1138
  if (typeof value === "string") {
1139
+ if (value.startsWith("{") && value.endsWith("}")) {
1140
+ try {
1141
+ const parsed = JSON.parse(value);
1142
+ if (typeof parsed === "object" && parsed !== null) {
1143
+ const keys = Object.keys(parsed);
1144
+ if (keys.length > 1) {
1145
+ const entries = keys.map((k) => `${k}: ${typeof parsed[k] === "string" ? `"${parsed[k]}"` : parsed[k]}`);
1146
+ return `${key}={{
1147
+ ${indent} ${entries.join(`,
1148
+ ${indent} `)}
1149
+ ${indent} }}`;
1150
+ }
1151
+ return `${key}={${toObjectLiteral(parsed)}}`;
1152
+ }
1153
+ } catch {
1154
+ }
1155
+ }
1139
1156
  return `${key}=${JSON.stringify(value)}`;
1140
1157
  } else if (value !== null && typeof value === "object") {
1141
1158
  const roundedValue = { ...value };
@@ -1145,6 +1162,14 @@ ${indent} }}`;
1145
1162
  if ("y" in roundedValue && typeof roundedValue.y === "number") {
1146
1163
  roundedValue.y = Math.round(roundedValue.y * 100) / 100;
1147
1164
  }
1165
+ const keys = Object.keys(roundedValue);
1166
+ if (keys.length > 1) {
1167
+ const entries = keys.map((k) => `${k}: ${typeof roundedValue[k] === "string" ? `"${roundedValue[k]}"` : roundedValue[k]}`);
1168
+ return `${key}={{
1169
+ ${indent} ${entries.join(`,
1170
+ ${indent} `)}
1171
+ ${indent} }}`;
1172
+ }
1148
1173
  return `${key}={${toObjectLiteral(roundedValue)}}`;
1149
1174
  } else {
1150
1175
  return `${key}={${value}}`;
@@ -1174,7 +1199,15 @@ function isIdReferenced(id, allComponents) {
1174
1199
  });
1175
1200
  }
1176
1201
  function generatePresetCode(preset, colorSpace) {
1177
- const generateComponentString = (config, indent = " ") => {
1202
+ const componentTypes = /* @__PURE__ */ new Set();
1203
+ function collectTypes(components) {
1204
+ for (const config of components) {
1205
+ componentTypes.add(config.type);
1206
+ if (config.children) collectTypes(config.children);
1207
+ }
1208
+ }
1209
+ collectTypes(preset.components);
1210
+ const generateComponentString = (config, indent = " ") => {
1178
1211
  const propString = config.props ? generatePropString(config.props, config.type, indent) : "";
1179
1212
  let idString = "";
1180
1213
  if (config.id) {
@@ -1207,9 +1240,20 @@ ${indent} ${attributes} />`;
1207
1240
  };
1208
1241
  const componentStrings = preset.components.map((config) => generateComponentString(config)).join("\n");
1209
1242
  const shaderProps = colorSpace && colorSpace !== "p3-linear" ? ` colorSpace="${colorSpace}"` : "";
1210
- return `<Shader${shaderProps}>
1243
+ const sortedTypes = Array.from(componentTypes).sort();
1244
+ const allImports = ["Shader", ...sortedTypes];
1245
+ const importStatement = allImports.length > 3 ? `import {
1246
+ ${allImports.join(",\n ")},
1247
+ } from 'shaders/solid'` : `import { ${allImports.join(", ")} } from 'shaders/solid'`;
1248
+ return `${importStatement}
1249
+
1250
+ export default function ShaderEffect() {
1251
+ return (
1252
+ <Shader${shaderProps}>
1211
1253
  ${componentStrings}
1212
- </Shader>`;
1254
+ </Shader>
1255
+ )
1256
+ }`;
1213
1257
  }
1214
1258
  const availableComponents = [
1215
1259
  // @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,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;
@@ -1084,7 +1084,7 @@ function isPropMapValue(value) {
1084
1084
  function generatePropString(props, componentType, indent = " ") {
1085
1085
  return Object.entries(props).sort(([a], [b]) => a.localeCompare(b)).filter(([key, value]) => {
1086
1086
  if (key === "maskType" && value === "alpha") return false;
1087
- if (componentType === "Glass" && key === "shape" && props.shapeType === "svg") return false;
1087
+ if (key === "shape" && props.shapeSdfUrl) return false;
1088
1088
  if (key === "transform" && typeof value === "object") {
1089
1089
  if (Object.keys(DEFAULT_TRANSFORM).every((k) => value[k] === DEFAULT_TRANSFORM[k])) return false;
1090
1090
  }
@@ -1113,11 +1113,22 @@ function generatePropString(props, componentType, indent = " ") {
1113
1113
  const v = value[k];
1114
1114
  return `${k}: ${typeof v === "string" ? `"${v}"` : v}`;
1115
1115
  }).join(`,\n${indent} `)}\n${indent} }}`;
1116
- if (typeof value === "string") return `${key}="${value}"`;
1117
- else if (value !== null && typeof value === "object") {
1116
+ if (typeof value === "string") {
1117
+ if (value.startsWith("{") && value.endsWith("}")) try {
1118
+ const parsed = JSON.parse(value);
1119
+ if (typeof parsed === "object" && parsed !== null) {
1120
+ const keys = Object.keys(parsed);
1121
+ 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} }}`;
1122
+ return `${key}={${toObjectLiteral(parsed)}}`;
1123
+ }
1124
+ } catch {}
1125
+ return `${key}="${value}"`;
1126
+ } else if (value !== null && typeof value === "object") {
1118
1127
  const roundedValue = { ...value };
1119
1128
  if ("x" in roundedValue && typeof roundedValue.x === "number") roundedValue.x = Math.round(roundedValue.x * 100) / 100;
1120
1129
  if ("y" in roundedValue && typeof roundedValue.y === "number") roundedValue.y = Math.round(roundedValue.y * 100) / 100;
1130
+ const keys = Object.keys(roundedValue);
1131
+ 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
1132
  return `${key}={${toObjectLiteral(roundedValue)}}`;
1122
1133
  } else return `${key}={${value}}`;
1123
1134
  }).join("\n" + indent + " ");
@@ -1140,6 +1151,14 @@ function isIdReferenced(id, allComponents) {
1140
1151
  });
1141
1152
  }
1142
1153
  function generatePresetCode(preset, colorSpace) {
1154
+ const componentTypes = /* @__PURE__ */ new Set();
1155
+ function collectTypes(components) {
1156
+ for (const config of components) {
1157
+ componentTypes.add(config.type);
1158
+ if (config.children) collectTypes(config.children);
1159
+ }
1160
+ }
1161
+ collectTypes(preset.components);
1143
1162
  const generateComponentString = (config, indent = " ") => {
1144
1163
  const propString = config.props ? generatePropString(config.props, config.type, indent) : "";
1145
1164
  let idString = "";
@@ -1155,7 +1174,15 @@ function generatePresetCode(preset, colorSpace) {
1155
1174
  else return `${indent}<${config.type} />`;
1156
1175
  };
1157
1176
  const componentStrings = preset.components.map((config) => generateComponentString(config)).join("\n");
1158
- return `<Shader${colorSpace && colorSpace !== "p3-linear" ? ` colorSpace="${colorSpace}"` : ""}>\n${componentStrings}\n</Shader>`;
1177
+ const shaderProps = colorSpace && colorSpace !== "p3-linear" ? ` colorSpace="${colorSpace}"` : "";
1178
+ const allImports = ["Shader", ...Array.from(componentTypes).sort()];
1179
+ return `<script>
1180
+ ${allImports.length > 3 ? `import {\n ${allImports.join(",\n ")},\n } from 'shaders/svelte'` : `import { ${allImports.join(", ")} } from 'shaders/svelte'`}
1181
+ <\/script>
1182
+
1183
+ <Shader${shaderProps}>
1184
+ ${componentStrings}
1185
+ </Shader>`;
1159
1186
  }
1160
1187
  const availableComponents = [
1161
1188
  "AngularBlur",
@@ -1,4 +1,4 @@
1
- import { n as generatePresetCode } from "./generatePresetCode-Bpe8YcaW.js";
1
+ import { n as generatePresetCode } from "./generatePresetCode-BN1puRG_.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";
@@ -96,7 +96,6 @@ import { componentDefinition as componentDefinition$88 } from "../core/shaders/W
96
96
  import { componentDefinition as componentDefinition$89 } from "../core/shaders/ZoomBlur/index.js";
97
97
  import { vec4 } from "three/tsl";
98
98
  import { isExternalUser, shouldCollectTelemetry, startTelemetry } from "../core/telemetry/index.js";
99
- import "svelte/internal/flags/legacy";
100
99
  var root$90 = $.from_html(`<span style="display:contents"><!></span>`);
101
100
  function AngularBlur($$anchor, $$props) {
102
101
  $.push($$props, true);
@@ -13189,7 +13188,7 @@ function Shader($$anchor, $$props) {
13189
13188
  const checkRendering = () => {
13190
13189
  if (!rendererInstance) return;
13191
13190
  if (rendererInstance.getPerformanceStats().fps > 0) {
13192
- telemetryCollector = startTelemetry(rendererInstance, typeof __SHADERS_VERSION__ !== "undefined" ? __SHADERS_VERSION__ : "unknown", disableTelemetry(), isPreview());
13191
+ telemetryCollector = startTelemetry(rendererInstance, "2.5.80", disableTelemetry(), isPreview());
13193
13192
  if (telemetryCollector) telemetryCollector.start();
13194
13193
  telemetryStartTimeout = null;
13195
13194
  } else telemetryStartTimeout = window.setTimeout(checkRendering, 500);
@@ -13301,20 +13300,10 @@ function Shader($$anchor, $$props) {
13301
13300
  $.pop();
13302
13301
  }
13303
13302
  function PreviewRenderComponent($$anchor, $$props) {
13304
- $.push($$props, false);
13305
- const Component = $.mutable_source();
13306
- const componentProps = $.mutable_source();
13307
- let config = $.prop($$props, "config", 8);
13308
- let componentMap = $.prop($$props, "componentMap", 8);
13309
- let structureVersion = $.prop($$props, "structureVersion", 8, void 0);
13310
- $.legacy_pre_effect(() => ($.deep_read_state(componentMap()), $.deep_read_state(config())), () => {
13311
- $.set(Component, componentMap()[config().type]);
13312
- });
13313
- $.legacy_pre_effect(() => $.deep_read_state(config()), () => {
13314
- $.set(componentProps, config().props ? { ...config().props } : {});
13315
- });
13316
- $.legacy_pre_effect_reset();
13317
- $.init();
13303
+ $.push($$props, true);
13304
+ const structureVersion = $.prop($$props, "structureVersion", 3, void 0);
13305
+ const Component = $.derived(() => $$props.componentMap[$$props.config.type]);
13306
+ const componentProps = $.derived(() => $$props.config.props ? { ...$$props.config.props } : {});
13318
13307
  var fragment = $.comment();
13319
13308
  var node = $.first_child(fragment);
13320
13309
  var consequent_1 = ($$anchor$1) => {
@@ -13323,10 +13312,10 @@ function PreviewRenderComponent($$anchor, $$props) {
13323
13312
  $.component(node_1, () => $.get(Component), ($$anchor$2, $$component) => {
13324
13313
  $$component($$anchor$2, $.spread_props({
13325
13314
  get id() {
13326
- return $.deep_read_state(config()), $.untrack(() => config().id);
13315
+ return $$props.config.id;
13327
13316
  },
13328
13317
  get renderOrder() {
13329
- return $.deep_read_state(config()), $.untrack(() => config().renderOrder);
13318
+ return $$props.config.renderOrder;
13330
13319
  }
13331
13320
  }, () => $.get(componentProps), {
13332
13321
  children: ($$anchor$3, $$slotProps) => {
@@ -13335,20 +13324,20 @@ function PreviewRenderComponent($$anchor, $$props) {
13335
13324
  var consequent = ($$anchor$4) => {
13336
13325
  var fragment_3 = $.comment();
13337
13326
  var node_3 = $.first_child(fragment_3);
13338
- $.each(node_3, 3, () => ($.deep_read_state(config()), $.untrack(() => config().children)), (child, index) => child.id || `child_${index}_v${structureVersion() || 0}`, ($$anchor$5, child, index) => {
13327
+ $.each(node_3, 19, () => $$props.config.children, (child, index) => child.id || `child_${index}_v${structureVersion() || 0}`, ($$anchor$5, child, index) => {
13339
13328
  var fragment_4 = $.comment();
13340
13329
  var node_4 = $.first_child(fragment_4);
13341
13330
  {
13342
- let $0 = $.derived_safe_equal(() => ($.get(child), $.deep_read_state($.get(index)), $.untrack(() => ({
13331
+ let $0 = $.derived(() => ({
13343
13332
  ...$.get(child),
13344
13333
  renderOrder: $.get(child).renderOrder ?? $.get(index)
13345
- }))));
13334
+ }));
13346
13335
  PreviewRenderComponent(node_4, {
13347
13336
  get config() {
13348
13337
  return $.get($0);
13349
13338
  },
13350
13339
  get componentMap() {
13351
- return componentMap();
13340
+ return $$props.componentMap;
13352
13341
  },
13353
13342
  get structureVersion() {
13354
13343
  return structureVersion();
@@ -13360,7 +13349,7 @@ function PreviewRenderComponent($$anchor, $$props) {
13360
13349
  $.append($$anchor$4, fragment_3);
13361
13350
  };
13362
13351
  $.if(node_2, ($$render) => {
13363
- if ($.deep_read_state(config()), $.untrack(() => config().children)) $$render(consequent);
13352
+ if ($$props.config.children) $$render(consequent);
13364
13353
  });
13365
13354
  $.append($$anchor$3, fragment_2);
13366
13355
  },
@@ -13378,22 +13367,7 @@ function PreviewRenderComponent($$anchor, $$props) {
13378
13367
  var root_4 = $.from_html(`<a target="_blank" rel="noopener noreferrer"> </a>`);
13379
13368
  var root_1 = $.from_html(`<div><!> <!></div>`);
13380
13369
  function Preview($$anchor, $$props) {
13381
- const $$sanitized_props = $.legacy_rest_props($$props, [
13382
- "children",
13383
- "$$slots",
13384
- "$$events",
13385
- "$$legacy"
13386
- ]);
13387
- const $$restProps = $.legacy_rest_props($$sanitized_props, [
13388
- "shader",
13389
- "presetId",
13390
- "apiBaseUrl",
13391
- "obfuscationKey",
13392
- "watermarkText",
13393
- "watermarkLink",
13394
- "style"
13395
- ]);
13396
- $.push($$props, false);
13370
+ $.push($$props, true);
13397
13371
  const componentMap = {
13398
13372
  AngularBlur,
13399
13373
  Ascii,
@@ -13517,40 +13491,40 @@ function Preview($$anchor, $$props) {
13517
13491
  return null;
13518
13492
  });
13519
13493
  }
13520
- let shader = $.prop($$props, "shader", 8, void 0);
13521
- let presetId = $.prop($$props, "presetId", 8, void 0);
13522
- let apiBaseUrl = $.prop($$props, "apiBaseUrl", 8, "https://shaders.com");
13523
- let obfuscationKey = $.prop($$props, "obfuscationKey", 8, "shaders-preview-key");
13524
- let watermarkText = $.prop($$props, "watermarkText", 8, "Unlock your Shaders Pro license");
13525
- let watermarkLink = $.prop($$props, "watermarkLink", 8, "https://shaders.com/dashboard?pricing=true");
13526
- let style = $.prop($$props, "style", 8, void 0);
13527
- let resolvedDefinition = $.mutable_source(null);
13528
- let fetchedDefinition = $.mutable_source(null);
13529
- let watermarkHovered = $.mutable_source(false);
13530
- onMount(() => {
13531
- console.warn("[Shaders] Preview component is intended for use with a Shaders license. Visit https://shaders.com for more information.");
13532
- });
13533
- $.legacy_pre_effect(() => ($.deep_read_state(shader()), $.deep_read_state(apiBaseUrl()), $.deep_read_state(obfuscationKey()), $.deep_read_state(presetId())), () => {
13494
+ const shader = $.prop($$props, "shader", 3, void 0), presetId = $.prop($$props, "presetId", 3, void 0), apiBaseUrl = $.prop($$props, "apiBaseUrl", 3, "https://shaders.com"), obfuscationKey = $.prop($$props, "obfuscationKey", 3, "shaders-preview-key"), watermarkText = $.prop($$props, "watermarkText", 3, "Unlock your Shaders Pro license"), watermarkLink = $.prop($$props, "watermarkLink", 3, "https://shaders.com/dashboard?pricing=true"), style = $.prop($$props, "style", 3, void 0), restProps = $.rest_props($$props, [
13495
+ "$$slots",
13496
+ "$$events",
13497
+ "$$legacy",
13498
+ "shader",
13499
+ "presetId",
13500
+ "apiBaseUrl",
13501
+ "obfuscationKey",
13502
+ "watermarkText",
13503
+ "watermarkLink",
13504
+ "style"
13505
+ ]);
13506
+ let fetchedDefinition = $.state(null);
13507
+ let watermarkHovered = $.state(false);
13508
+ let resolvedDefinition = $.derived(() => $.get(fetchedDefinition) ?? null);
13509
+ $.user_effect(() => {
13534
13510
  if (shader()) {
13535
13511
  $.set(fetchedDefinition, null);
13536
13512
  fetchAndDecode(`${apiBaseUrl()}/api/preview/shader/${shader()}`, obfuscationKey()).then((def) => {
13537
- $.set(fetchedDefinition, def);
13513
+ $.set(fetchedDefinition, def, true);
13538
13514
  });
13539
13515
  } else if (!presetId()) $.set(fetchedDefinition, null);
13540
13516
  });
13541
- $.legacy_pre_effect(() => ($.deep_read_state(presetId()), $.deep_read_state(apiBaseUrl()), $.deep_read_state(obfuscationKey()), $.deep_read_state(shader())), () => {
13517
+ $.user_effect(() => {
13542
13518
  if (presetId()) {
13543
13519
  $.set(fetchedDefinition, null);
13544
13520
  fetchAndDecode(`${apiBaseUrl()}/api/preview/preset/${presetId()}`, obfuscationKey()).then((def) => {
13545
- $.set(fetchedDefinition, def);
13521
+ $.set(fetchedDefinition, def, true);
13546
13522
  });
13547
13523
  } else if (!shader()) $.set(fetchedDefinition, null);
13548
13524
  });
13549
- $.legacy_pre_effect(() => $.get(fetchedDefinition), () => {
13550
- $.set(resolvedDefinition, $.get(fetchedDefinition) ?? null);
13525
+ onMount(() => {
13526
+ console.warn("[Shaders] Preview component is intended for use with a Shaders license. Visit https://shaders.com for more information.");
13551
13527
  });
13552
- $.legacy_pre_effect_reset();
13553
- $.init();
13554
13528
  var fragment = $.comment();
13555
13529
  var node = $.first_child(fragment);
13556
13530
  var consequent_1 = ($$anchor$1) => {
@@ -13558,11 +13532,11 @@ function Preview($$anchor, $$props) {
13558
13532
  $.attribute_effect(div, () => ({
13559
13533
  class: "shaders-preview",
13560
13534
  style: `position: relative; width: 100%; height: 100%;${style() ? " " + style() : ""}`,
13561
- ...$$restProps
13535
+ ...restProps
13562
13536
  }));
13563
13537
  var node_1 = $.child(div);
13564
13538
  {
13565
- let $0 = $.derived_safe_equal(() => ($.get(resolvedDefinition), $.untrack(() => $.get(resolvedDefinition).colorSpace || "p3-linear")));
13539
+ let $0 = $.derived(() => $.get(resolvedDefinition).colorSpace || "p3-linear");
13566
13540
  Shader(node_1, {
13567
13541
  get colorSpace() {
13568
13542
  return $.get($0);
@@ -13573,12 +13547,12 @@ function Preview($$anchor, $$props) {
13573
13547
  children: ($$anchor$2, $$slotProps) => {
13574
13548
  var fragment_1 = $.comment();
13575
13549
  var node_2 = $.first_child(fragment_1);
13576
- $.each(node_2, 3, () => ($.get(resolvedDefinition), $.untrack(() => $.get(resolvedDefinition).components)), (config, index) => config.id || `root_${index}_v${$.get(resolvedDefinition).structureVersion || 0}`, ($$anchor$3, config, index) => {
13550
+ $.each(node_2, 19, () => $.get(resolvedDefinition).components, (config, index) => config.id || `root_${index}_v${$.get(resolvedDefinition).structureVersion || 0}`, ($$anchor$3, config, index) => {
13577
13551
  {
13578
- let $0$1 = $.derived_safe_equal(() => ($.get(config), $.deep_read_state($.get(index)), $.untrack(() => ({
13552
+ let $0$1 = $.derived(() => ({
13579
13553
  ...$.get(config),
13580
13554
  renderOrder: $.get(config).renderOrder ?? $.get(index)
13581
- }))));
13555
+ }));
13582
13556
  PreviewRenderComponent($$anchor$3, {
13583
13557
  get config() {
13584
13558
  return $.get($0$1);
@@ -13587,7 +13561,7 @@ function Preview($$anchor, $$props) {
13587
13561
  return componentMap;
13588
13562
  },
13589
13563
  get structureVersion() {
13590
- return $.get(resolvedDefinition), $.untrack(() => $.get(resolvedDefinition).structureVersion);
13564
+ return $.get(resolvedDefinition).structureVersion;
13591
13565
  }
13592
13566
  });
13593
13567
  }