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.
- package/dist/core/Liquify-Cr-1qPxN.js +228 -0
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +59 -53
- package/dist/core/presetRenderer.d.ts.map +1 -1
- package/dist/core/registry.js +2 -2
- package/dist/core/renderer.d.ts +5 -1
- package/dist/core/renderer.d.ts.map +1 -1
- package/dist/core/{shaderRegistry-9huRXSRI.js → shaderRegistry-DnmRD6xy.js} +1 -1
- package/dist/core/shaders/Liquify/index.d.ts +13 -7
- package/dist/core/shaders/Liquify/index.d.ts.map +1 -1
- package/dist/core/shaders/Liquify/index.js +1 -1
- package/dist/js/codegen.d.ts +1 -0
- package/dist/js/codegen.js +1 -0
- package/dist/js/createPreview.d.ts +19 -0
- package/dist/js/createPreview.d.ts.map +1 -0
- package/dist/js/createPreview.js +64 -0
- package/dist/js/createShader.d.ts +24 -0
- package/dist/js/createShader.d.ts.map +1 -0
- package/dist/js/createShader.js +132 -0
- package/dist/js/decode.d.ts +7 -0
- package/dist/js/decode.d.ts.map +1 -0
- package/dist/js/decode.js +22 -0
- package/dist/js/index.d.ts +6 -0
- package/dist/js/index.d.ts.map +1 -0
- package/dist/js/index.js +4 -0
- package/dist/js/types.d.ts +23 -0
- package/dist/js/types.d.ts.map +1 -0
- package/dist/js/utils/generatePresetCode.d.ts +13 -0
- package/dist/js/utils/generatePresetCode.d.ts.map +1 -0
- package/dist/js/utils/generatePresetCode.js +1249 -0
- package/dist/js/utils/generatePresetCode.template.d.ts +13 -0
- package/dist/js/utils/generatePresetCode.template.d.ts.map +1 -0
- package/dist/react/Shader.js +1 -1
- package/dist/react/components/Liquify.d.ts +4 -2
- package/dist/react/components/Liquify.d.ts.map +1 -1
- package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/react/utils/generatePresetCode.js +45 -8
- package/dist/react/utils/generatePresetCode.template.d.ts.map +1 -1
- package/dist/registry.js +50 -20
- package/dist/solid/components/Liquify.d.ts +4 -2
- package/dist/solid/components/Liquify.d.ts.map +1 -1
- package/dist/solid/engine/Shader.js +1 -1
- package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/solid/utils/generatePresetCode.js +51 -6
- package/dist/solid/utils/generatePresetCode.template.d.ts.map +1 -1
- package/dist/svelte/components/Liquify.svelte.d.ts +2 -1
- package/dist/svelte/engine/Preview.svelte.d.ts +11 -25
- package/dist/svelte/engine/PreviewRenderComponent.svelte.d.ts +5 -19
- package/dist/svelte/{generatePresetCode-Bpe8YcaW.js → generatePresetCode-6ecNqXs9.js} +34 -6
- package/dist/svelte/index.js +41 -67
- package/dist/svelte/source/components/Liquify.svelte +1 -0
- package/dist/svelte/source/engine/Preview.svelte +49 -35
- package/dist/svelte/source/engine/PreviewRenderComponent.svelte +9 -5
- package/dist/svelte/utils/generatePresetCode.js +1 -1
- package/dist/vue/Liquify.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/vue/components/Liquify.vue.d.ts +2 -1
- package/dist/vue/components/Liquify.vue.d.ts.map +1 -1
- package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/vue/utils/generatePresetCode.js +48 -10
- package/dist/vue/utils/generatePresetCode.template.d.ts.map +1 -1
- package/package.json +15 -1
- 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"}
|
package/dist/react/Shader.js
CHANGED
|
@@ -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.
|
|
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,
|
|
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,
|
|
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;
|
|
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}: ${
|
|
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":
|
|
581
|
-
"
|
|
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 (
|
|
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")
|
|
1117
|
-
|
|
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
|
|
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
|
-
|
|
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;
|
|
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":
|
|
9834
|
-
"description": "
|
|
9833
|
+
"default": 10,
|
|
9834
|
+
"description": "Scale of the fabric displacement effect",
|
|
9835
9835
|
"ui": {
|
|
9836
|
-
"type":
|
|
9836
|
+
"type": [
|
|
9837
|
+
"range",
|
|
9838
|
+
"map"
|
|
9839
|
+
],
|
|
9837
9840
|
"min": 0,
|
|
9838
|
-
"max":
|
|
9841
|
+
"max": 20,
|
|
9839
9842
|
"step": 0.1,
|
|
9840
9843
|
"label": "Intensity",
|
|
9841
9844
|
"group": "Effect"
|
|
9842
9845
|
}
|
|
9843
9846
|
},
|
|
9844
|
-
"
|
|
9847
|
+
"stiffness": {
|
|
9845
9848
|
"default": 3,
|
|
9846
|
-
"description": "
|
|
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": "
|
|
9867
|
+
"label": "Damping",
|
|
9853
9868
|
"group": "Effect"
|
|
9854
9869
|
}
|
|
9855
9870
|
},
|
|
9856
9871
|
"radius": {
|
|
9857
9872
|
"default": 1,
|
|
9858
|
-
"description": "
|
|
9873
|
+
"description": "Cursor influence area",
|
|
9859
9874
|
"ui": {
|
|
9860
9875
|
"type": "range",
|
|
9861
|
-
"min": 0,
|
|
9862
|
-
"max":
|
|
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":
|
|
9916
|
+
"type": [
|
|
9917
|
+
"range",
|
|
9918
|
+
"map"
|
|
9919
|
+
],
|
|
9902
9920
|
"min": 0,
|
|
9903
|
-
"max":
|
|
9921
|
+
"max": 20,
|
|
9904
9922
|
"step": 0.1,
|
|
9905
9923
|
"label": "Intensity",
|
|
9906
9924
|
"group": "Effect"
|
|
9907
9925
|
},
|
|
9908
|
-
"default":
|
|
9909
|
-
"description": "
|
|
9926
|
+
"default": 10,
|
|
9927
|
+
"description": "Scale of the fabric displacement effect"
|
|
9910
9928
|
},
|
|
9911
|
-
"
|
|
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": "
|
|
9947
|
+
"label": "Damping",
|
|
9918
9948
|
"group": "Effect"
|
|
9919
9949
|
},
|
|
9920
9950
|
"default": 3,
|
|
9921
|
-
"description": "
|
|
9951
|
+
"description": "How quickly fabric motion settles"
|
|
9922
9952
|
},
|
|
9923
9953
|
"radius": {
|
|
9924
9954
|
"ui": {
|
|
9925
9955
|
"type": "range",
|
|
9926
|
-
"min": 0,
|
|
9927
|
-
"max":
|
|
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": "
|
|
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,
|
|
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,
|
|
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.
|
|
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;
|
|
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":
|
|
583
|
-
"
|
|
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 (
|
|
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
|
|
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
|
-
|
|
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;
|
|
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
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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:
|
|
15
|
-
|
|
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
|
|
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
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
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":
|
|
581
|
-
"
|
|
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 (
|
|
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")
|
|
1117
|
-
|
|
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
|
-
|
|
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",
|