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,64 @@
|
|
|
1
|
+
import { createShader } from "./createShader.js";
|
|
2
|
+
import { decodePreviewDefinition } from "./decode.js";
|
|
3
|
+
var DEFAULT_API_BASE = "https://shaders.com";
|
|
4
|
+
var WATERMARK_TEXT = "Unlock your Shaders Pro license";
|
|
5
|
+
var WATERMARK_LINK = "https://shaders.com/dashboard?pricing=true";
|
|
6
|
+
async function createPreview(canvas, options) {
|
|
7
|
+
if (!options.shader && !options.presetId || options.shader && options.presetId) throw new Error("Exactly one of shader (preview token) or presetId must be provided");
|
|
8
|
+
const apiBase = options.apiBaseUrl || DEFAULT_API_BASE;
|
|
9
|
+
const url = options.shader ? `${apiBase}/api/preview/shader/${encodeURIComponent(options.shader)}` : `${apiBase}/api/preview/preset/${encodeURIComponent(options.presetId)}`;
|
|
10
|
+
const response = await fetch(url);
|
|
11
|
+
if (!response.ok) throw new Error(`Failed to fetch preview: ${response.status} ${response.statusText}`);
|
|
12
|
+
const instance = await createShader(canvas, decodePreviewDefinition(await response.text()), {
|
|
13
|
+
isPreview: true,
|
|
14
|
+
enablePerformanceTracking: true
|
|
15
|
+
});
|
|
16
|
+
const { overlay, savedPosition, parentEl } = createWatermarkOverlay(canvas);
|
|
17
|
+
const originalDestroy = instance.destroy.bind(instance);
|
|
18
|
+
instance.destroy = () => {
|
|
19
|
+
if (parentEl && savedPosition !== void 0) parentEl.style.position = savedPosition;
|
|
20
|
+
overlay.remove();
|
|
21
|
+
originalDestroy();
|
|
22
|
+
};
|
|
23
|
+
return instance;
|
|
24
|
+
}
|
|
25
|
+
function createWatermarkOverlay(canvas) {
|
|
26
|
+
const parent = canvas.parentElement;
|
|
27
|
+
let savedPosition;
|
|
28
|
+
if (parent) {
|
|
29
|
+
if (getComputedStyle(parent).position === "static") {
|
|
30
|
+
savedPosition = parent.style.position;
|
|
31
|
+
parent.style.position = "relative";
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const link = document.createElement("a");
|
|
35
|
+
link.href = WATERMARK_LINK;
|
|
36
|
+
link.target = "_blank";
|
|
37
|
+
link.rel = "noopener noreferrer";
|
|
38
|
+
link.textContent = WATERMARK_TEXT;
|
|
39
|
+
Object.assign(link.style, {
|
|
40
|
+
position: "absolute",
|
|
41
|
+
bottom: "8px",
|
|
42
|
+
right: "12px",
|
|
43
|
+
fontSize: "11px",
|
|
44
|
+
fontFamily: "system-ui, -apple-system, sans-serif",
|
|
45
|
+
color: "rgba(255, 255, 255, 0.5)",
|
|
46
|
+
textDecoration: "none",
|
|
47
|
+
zIndex: "10",
|
|
48
|
+
pointerEvents: "auto",
|
|
49
|
+
transition: "color 0.2s ease"
|
|
50
|
+
});
|
|
51
|
+
link.addEventListener("mouseenter", () => {
|
|
52
|
+
link.style.color = "rgba(255, 255, 255, 0.8)";
|
|
53
|
+
});
|
|
54
|
+
link.addEventListener("mouseleave", () => {
|
|
55
|
+
link.style.color = "rgba(255, 255, 255, 0.5)";
|
|
56
|
+
});
|
|
57
|
+
if (parent) parent.appendChild(link);
|
|
58
|
+
return {
|
|
59
|
+
overlay: link,
|
|
60
|
+
savedPosition,
|
|
61
|
+
parentEl: parent
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export { createPreview };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { PresetConfig } from '../core';
|
|
2
|
+
import { ShaderOptions, ShaderInstance } from './types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Create a shader instance from preset JSON.
|
|
6
|
+
* Auto-starts animation loop — no manual render needed.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* const shader = await createShader(canvas, {
|
|
11
|
+
* components: [
|
|
12
|
+
* { type: 'Circle', id: 'c1', props: { color: '#ff0000', radius: 0.5 } }
|
|
13
|
+
* ]
|
|
14
|
+
* })
|
|
15
|
+
*
|
|
16
|
+
* // Update at runtime
|
|
17
|
+
* shader.update('c1', { radius: 0.8 })
|
|
18
|
+
*
|
|
19
|
+
* // Cleanup
|
|
20
|
+
* shader.destroy()
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function createShader(canvas: HTMLCanvasElement, preset: PresetConfig, options?: ShaderOptions): Promise<ShaderInstance>;
|
|
24
|
+
//# sourceMappingURL=createShader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createShader.d.ts","sourceRoot":"","sources":["../src/createShader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,cAAc,CAAA;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAa5D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,cAAc,CAAC,CAqOzB"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { createUniformsMap, shaderRenderer } from "../core/index.js";
|
|
2
|
+
import { getAllShaders } from "../core/registry.js";
|
|
3
|
+
import { isExternalUser, shouldCollectTelemetry, startTelemetry } from "../core/telemetry/index.js";
|
|
4
|
+
import { vec4 } from "three/tsl";
|
|
5
|
+
var METADATA_PROPS = new Set([
|
|
6
|
+
"opacity",
|
|
7
|
+
"blendMode",
|
|
8
|
+
"visible",
|
|
9
|
+
"transform",
|
|
10
|
+
"maskSource",
|
|
11
|
+
"maskType"
|
|
12
|
+
]);
|
|
13
|
+
async function createShader(canvas, preset, options) {
|
|
14
|
+
const renderer = shaderRenderer();
|
|
15
|
+
const componentRegistry = /* @__PURE__ */ new Map();
|
|
16
|
+
getAllShaders().forEach((shader) => {
|
|
17
|
+
componentRegistry.set(shader.definition.name, shader.definition);
|
|
18
|
+
});
|
|
19
|
+
const nodeEntryMap = /* @__PURE__ */ new Map();
|
|
20
|
+
if (!canvas.style.width || !canvas.style.height) {
|
|
21
|
+
const rect = canvas.getBoundingClientRect();
|
|
22
|
+
const w = rect.width > 0 ? rect.width : canvas.width;
|
|
23
|
+
const h = rect.height > 0 ? rect.height : canvas.height;
|
|
24
|
+
if (w > 0 && !canvas.style.width) canvas.style.width = `${w}px`;
|
|
25
|
+
if (h > 0 && !canvas.style.height) canvas.style.height = `${h}px`;
|
|
26
|
+
}
|
|
27
|
+
await renderer.initialize({
|
|
28
|
+
canvas,
|
|
29
|
+
resizeTarget: canvas,
|
|
30
|
+
enablePerformanceTracking: options?.enablePerformanceTracking || false,
|
|
31
|
+
colorSpace: options?.colorSpace
|
|
32
|
+
});
|
|
33
|
+
const rootId = "shader-root";
|
|
34
|
+
renderer.registerNode(rootId, ({ childNode }) => childNode || vec4(0, 0, 0, 0), null, null, {}, void 0);
|
|
35
|
+
preset.components.forEach((component, index) => {
|
|
36
|
+
registerComponent(component, rootId, index);
|
|
37
|
+
});
|
|
38
|
+
let telemetryCollector = null;
|
|
39
|
+
let telemetryStartTimeout = null;
|
|
40
|
+
if (isExternalUser() && shouldCollectTelemetry(options?.disableTelemetry || false, options?.isPreview || false)) {
|
|
41
|
+
const checkRendering = () => {
|
|
42
|
+
if (renderer.getPerformanceStats().fps > 0) {
|
|
43
|
+
telemetryCollector = startTelemetry(renderer, "2.5.81", options?.disableTelemetry || false, false);
|
|
44
|
+
if (telemetryCollector) telemetryCollector.start();
|
|
45
|
+
telemetryStartTimeout = null;
|
|
46
|
+
} else telemetryStartTimeout = setTimeout(checkRendering, 500);
|
|
47
|
+
};
|
|
48
|
+
telemetryStartTimeout = setTimeout(checkRendering, 500);
|
|
49
|
+
}
|
|
50
|
+
function registerComponent(component, parentId, renderOrder) {
|
|
51
|
+
const componentDef = componentRegistry.get(component.type);
|
|
52
|
+
if (!componentDef) {
|
|
53
|
+
console.warn(`[createShader] Unknown component type: ${component.type}`);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const nodeId = component.id || `${component.type}_${Date.now()}_${Math.random()}`;
|
|
57
|
+
const uniforms = createUniformsMap(componentDef, Object.fromEntries(Object.entries(componentDef.props).map(([key, propConfig]) => [key, component.props?.[key] !== void 0 ? component.props[key] : propConfig.default])), nodeId);
|
|
58
|
+
const metadata = {
|
|
59
|
+
blendMode: component.props?.blendMode || "normal",
|
|
60
|
+
opacity: component.props?.opacity,
|
|
61
|
+
visible: component.props?.visible,
|
|
62
|
+
renderOrder,
|
|
63
|
+
id: component.id,
|
|
64
|
+
mask: component.props?.maskSource ? {
|
|
65
|
+
source: component.props.maskSource,
|
|
66
|
+
type: component.props.maskType || "alpha"
|
|
67
|
+
} : void 0,
|
|
68
|
+
transform: component.props?.transform ? {
|
|
69
|
+
offsetX: 0,
|
|
70
|
+
offsetY: 0,
|
|
71
|
+
rotation: 0,
|
|
72
|
+
scale: 1,
|
|
73
|
+
anchorX: .5,
|
|
74
|
+
anchorY: .5,
|
|
75
|
+
edges: "transparent",
|
|
76
|
+
...component.props.transform
|
|
77
|
+
} : void 0
|
|
78
|
+
};
|
|
79
|
+
renderer.registerNode(nodeId, componentDef.fragmentNode, parentId, metadata, uniforms, componentDef);
|
|
80
|
+
nodeEntryMap.set(nodeId, {
|
|
81
|
+
componentDef,
|
|
82
|
+
uniforms,
|
|
83
|
+
nodeId,
|
|
84
|
+
component
|
|
85
|
+
});
|
|
86
|
+
component.children?.forEach((child, index) => {
|
|
87
|
+
registerComponent(child, nodeId, index);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function update(componentId, props) {
|
|
91
|
+
const entry = nodeEntryMap.get(componentId);
|
|
92
|
+
if (!entry) {
|
|
93
|
+
console.warn(`[createShader] Component ID not found: ${componentId}`);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
for (const [key, value] of Object.entries(props)) if (METADATA_PROPS.has(key)) if (key === "maskSource") renderer.updateNodeMetadata(entry.nodeId, { mask: value ? {
|
|
97
|
+
source: value,
|
|
98
|
+
type: props.maskType || entry.component.props?.maskType || "alpha"
|
|
99
|
+
} : void 0 });
|
|
100
|
+
else if (key === "maskType") continue;
|
|
101
|
+
else if (key === "transform") renderer.updateNodeMetadata(entry.nodeId, { transform: value });
|
|
102
|
+
else renderer.updateNodeMetadata(entry.nodeId, { [key]: value });
|
|
103
|
+
else renderer.updateUniformValue(entry.nodeId, key, value);
|
|
104
|
+
}
|
|
105
|
+
function resize(width, height) {
|
|
106
|
+
const rect = canvas.getBoundingClientRect();
|
|
107
|
+
const w = width ?? (rect.width > 0 ? rect.width : canvas.width);
|
|
108
|
+
const h = height ?? (rect.height > 0 ? rect.height : canvas.height);
|
|
109
|
+
if (w > 0 && h > 0) {
|
|
110
|
+
canvas.style.width = `${w}px`;
|
|
111
|
+
canvas.style.height = `${h}px`;
|
|
112
|
+
renderer.resize(w, h);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function destroy() {
|
|
116
|
+
if (telemetryCollector) {
|
|
117
|
+
telemetryCollector.stop();
|
|
118
|
+
telemetryCollector = null;
|
|
119
|
+
}
|
|
120
|
+
if (telemetryStartTimeout !== null) {
|
|
121
|
+
clearTimeout(telemetryStartTimeout);
|
|
122
|
+
telemetryStartTimeout = null;
|
|
123
|
+
}
|
|
124
|
+
renderer.cleanup();
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
update,
|
|
128
|
+
resize,
|
|
129
|
+
destroy
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
export { createShader };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decode a preview definition (simple XOR + Base64, no name mapping).
|
|
3
|
+
* Preview definitions are version-proof — they use readable JSON
|
|
4
|
+
* instead of index-based name mapping.
|
|
5
|
+
*/
|
|
6
|
+
export declare function decodePreviewDefinition(encoded: string): Record<string, unknown>;
|
|
7
|
+
//# sourceMappingURL=decode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../src/decode.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBhF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
var PREVIEW_KEY = "shaders-preview-key";
|
|
2
|
+
function xorCrypt(data, key) {
|
|
3
|
+
const keyBytes = new TextEncoder().encode(key);
|
|
4
|
+
const result = new Uint8Array(data.length);
|
|
5
|
+
for (let i = 0; i < data.length; i++) result[i] = data[i] ^ keyBytes[i % keyBytes.length];
|
|
6
|
+
return result;
|
|
7
|
+
}
|
|
8
|
+
function decodePreviewDefinition(encoded) {
|
|
9
|
+
try {
|
|
10
|
+
const binaryString = atob(encoded);
|
|
11
|
+
const encrypted = new Uint8Array(binaryString.length);
|
|
12
|
+
for (let i = 0; i < binaryString.length; i++) encrypted[i] = binaryString.charCodeAt(i);
|
|
13
|
+
const decrypted = xorCrypt(encrypted, PREVIEW_KEY);
|
|
14
|
+
const json = new TextDecoder().decode(decrypted);
|
|
15
|
+
const result = JSON.parse(json);
|
|
16
|
+
if (typeof result !== "object" || result === null || Array.isArray(result)) throw new Error("unexpected shape");
|
|
17
|
+
return result;
|
|
18
|
+
} catch {
|
|
19
|
+
throw new Error("Failed to decode preview definition: invalid data");
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export { decodePreviewDefinition };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { createShader } from './createShader';
|
|
2
|
+
export { createPreview } from './createPreview';
|
|
3
|
+
export type { ShaderInstance, ShaderOptions, PreviewOptions } from './types';
|
|
4
|
+
export type { PresetConfig, ComponentConfig } from '../core';
|
|
5
|
+
export { generatePresetCode } from './utils/generatePresetCode';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC5E,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA"}
|
package/dist/js/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type { PresetConfig, ComponentConfig } from '../core';
|
|
2
|
+
export interface ShaderOptions {
|
|
3
|
+
colorSpace?: 'p3-linear' | 'srgb';
|
|
4
|
+
disableTelemetry?: boolean;
|
|
5
|
+
enablePerformanceTracking?: boolean;
|
|
6
|
+
isPreview?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface PreviewOptions {
|
|
9
|
+
shader?: string;
|
|
10
|
+
presetId?: string;
|
|
11
|
+
apiBaseUrl?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ShaderInstance {
|
|
14
|
+
update(componentId: string, props: Record<string, any>): void;
|
|
15
|
+
/**
|
|
16
|
+
* Sync the renderer to the canvas's current dimensions.
|
|
17
|
+
* Call this after changing canvas.style.width/height or the width/height attributes.
|
|
18
|
+
* Optionally pass explicit pixel dimensions to force a specific size.
|
|
19
|
+
*/
|
|
20
|
+
resize(width?: number, height?: number): void;
|
|
21
|
+
destroy(): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAEjE,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IACjC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAA;IAC7D;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7C,OAAO,IAAI,IAAI,CAAA;CAChB"}
|
|
@@ -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: string[];
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=generatePresetCode.d.ts.map
|
|
@@ -0,0 +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;AA4sCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAoBlG;AAGD,eAAO,MAAM,mBAAmB,UA4F/B,CAAA"}
|