@bilalba/fig-mcp 1.0.0
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/README.md +112 -0
- package/dist/compare-get-vector.d.ts +2 -0
- package/dist/compare-get-vector.d.ts.map +1 -0
- package/dist/compare-get-vector.js +124 -0
- package/dist/compare-get-vector.js.map +1 -0
- package/dist/compare-mcp-vs-direct.d.ts +2 -0
- package/dist/compare-mcp-vs-direct.d.ts.map +1 -0
- package/dist/compare-mcp-vs-direct.js +173 -0
- package/dist/compare-mcp-vs-direct.js.map +1 -0
- package/dist/compare-renderers.d.ts +2 -0
- package/dist/compare-renderers.d.ts.map +1 -0
- package/dist/compare-renderers.js +110 -0
- package/dist/compare-renderers.js.map +1 -0
- package/dist/debug/debug-stroke-geom.d.ts +2 -0
- package/dist/debug/debug-stroke-geom.d.ts.map +1 -0
- package/dist/debug/debug-stroke-geom.js +67 -0
- package/dist/debug/debug-stroke-geom.js.map +1 -0
- package/dist/debug/debug-transforms.d.ts +2 -0
- package/dist/debug/debug-transforms.d.ts.map +1 -0
- package/dist/debug/debug-transforms.js +97 -0
- package/dist/debug/debug-transforms.js.map +1 -0
- package/dist/debug/debug-vertex.d.ts +2 -0
- package/dist/debug/debug-vertex.d.ts.map +1 -0
- package/dist/debug/debug-vertex.js +72 -0
- package/dist/debug/debug-vertex.js.map +1 -0
- package/dist/debug-group.d.ts +5 -0
- package/dist/debug-group.d.ts.map +1 -0
- package/dist/debug-group.js +44 -0
- package/dist/debug-group.js.map +1 -0
- package/dist/debug-stroke-geom.d.ts +2 -0
- package/dist/debug-stroke-geom.d.ts.map +1 -0
- package/dist/debug-stroke-geom.js +67 -0
- package/dist/debug-stroke-geom.js.map +1 -0
- package/dist/debug-transforms.d.ts +2 -0
- package/dist/debug-transforms.d.ts.map +1 -0
- package/dist/debug-transforms.js +97 -0
- package/dist/debug-transforms.js.map +1 -0
- package/dist/debug-vertex.d.ts +2 -0
- package/dist/debug-vertex.d.ts.map +1 -0
- package/dist/debug-vertex.js +72 -0
- package/dist/debug-vertex.js.map +1 -0
- package/dist/decode-vector-network.d.ts +5 -0
- package/dist/decode-vector-network.d.ts.map +1 -0
- package/dist/decode-vector-network.js +160 -0
- package/dist/decode-vector-network.js.map +1 -0
- package/dist/experimental/paint-utils.d.ts +35 -0
- package/dist/experimental/paint-utils.d.ts.map +1 -0
- package/dist/experimental/paint-utils.js +105 -0
- package/dist/experimental/paint-utils.js.map +1 -0
- package/dist/experimental/render-screen-v2.d.ts +32 -0
- package/dist/experimental/render-screen-v2.d.ts.map +1 -0
- package/dist/experimental/render-screen-v2.js +366 -0
- package/dist/experimental/render-screen-v2.js.map +1 -0
- package/dist/experimental/render-screen.d.ts +26 -0
- package/dist/experimental/render-screen.d.ts.map +1 -0
- package/dist/experimental/render-screen.js +547 -0
- package/dist/experimental/render-screen.js.map +1 -0
- package/dist/experimental/render-types.d.ts +43 -0
- package/dist/experimental/render-types.d.ts.map +1 -0
- package/dist/experimental/render-types.js +22 -0
- package/dist/experimental/render-types.js.map +1 -0
- package/dist/experimental/render-utils.d.ts +38 -0
- package/dist/experimental/render-utils.d.ts.map +1 -0
- package/dist/experimental/render-utils.js +126 -0
- package/dist/experimental/render-utils.js.map +1 -0
- package/dist/experimental/screenshot.d.ts +11 -0
- package/dist/experimental/screenshot.d.ts.map +1 -0
- package/dist/experimental/screenshot.js +26 -0
- package/dist/experimental/screenshot.js.map +1 -0
- package/dist/experimental/vector-renderer.d.ts +31 -0
- package/dist/experimental/vector-renderer.d.ts.map +1 -0
- package/dist/experimental/vector-renderer.js +427 -0
- package/dist/experimental/vector-renderer.js.map +1 -0
- package/dist/explore-images.d.ts +9 -0
- package/dist/explore-images.d.ts.map +1 -0
- package/dist/explore-images.js +307 -0
- package/dist/explore-images.js.map +1 -0
- package/dist/http-server.d.ts +8 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +95 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/inspect-fig.d.ts +16 -0
- package/dist/inspect-fig.d.ts.map +1 -0
- package/dist/inspect-fig.js +134 -0
- package/dist/inspect-fig.js.map +1 -0
- package/dist/inspect-frame.d.ts +2 -0
- package/dist/inspect-frame.d.ts.map +1 -0
- package/dist/inspect-frame.js +90 -0
- package/dist/inspect-frame.js.map +1 -0
- package/dist/inspect-nodes.d.ts +5 -0
- package/dist/inspect-nodes.d.ts.map +1 -0
- package/dist/inspect-nodes.js +193 -0
- package/dist/inspect-nodes.js.map +1 -0
- package/dist/mcp/server.d.ts +38 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +1524 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/parser/fig-reader.d.ts +29 -0
- package/dist/parser/fig-reader.d.ts.map +1 -0
- package/dist/parser/fig-reader.js +182 -0
- package/dist/parser/fig-reader.js.map +1 -0
- package/dist/parser/index.d.ts +48 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +106 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/kiwi-parser.d.ts +66 -0
- package/dist/parser/kiwi-parser.d.ts.map +1 -0
- package/dist/parser/kiwi-parser.js +491 -0
- package/dist/parser/kiwi-parser.js.map +1 -0
- package/dist/parser/layout-inference.d.ts +63 -0
- package/dist/parser/layout-inference.d.ts.map +1 -0
- package/dist/parser/layout-inference.js +446 -0
- package/dist/parser/layout-inference.js.map +1 -0
- package/dist/parser/types.d.ts +286 -0
- package/dist/parser/types.d.ts.map +1 -0
- package/dist/parser/types.js +6 -0
- package/dist/parser/types.js.map +1 -0
- package/dist/render-single.d.ts +2 -0
- package/dist/render-single.d.ts.map +1 -0
- package/dist/render-single.js +53 -0
- package/dist/render-single.js.map +1 -0
- package/dist/renderer/index.d.ts +16 -0
- package/dist/renderer/index.d.ts.map +1 -0
- package/dist/renderer/index.js +18 -0
- package/dist/renderer/index.js.map +1 -0
- package/dist/renderer/paint-utils.d.ts +35 -0
- package/dist/renderer/paint-utils.d.ts.map +1 -0
- package/dist/renderer/paint-utils.js +105 -0
- package/dist/renderer/paint-utils.js.map +1 -0
- package/dist/renderer/render-screen.d.ts +26 -0
- package/dist/renderer/render-screen.d.ts.map +1 -0
- package/dist/renderer/render-screen.js +547 -0
- package/dist/renderer/render-screen.js.map +1 -0
- package/dist/renderer/render-types.d.ts +43 -0
- package/dist/renderer/render-types.d.ts.map +1 -0
- package/dist/renderer/render-types.js +22 -0
- package/dist/renderer/render-types.js.map +1 -0
- package/dist/renderer/render-utils.d.ts +38 -0
- package/dist/renderer/render-utils.d.ts.map +1 -0
- package/dist/renderer/render-utils.js +126 -0
- package/dist/renderer/render-utils.js.map +1 -0
- package/dist/renderer/screenshot.d.ts +11 -0
- package/dist/renderer/screenshot.d.ts.map +1 -0
- package/dist/renderer/screenshot.js +26 -0
- package/dist/renderer/screenshot.js.map +1 -0
- package/dist/renderer/vector-renderer.d.ts +31 -0
- package/dist/renderer/vector-renderer.d.ts.map +1 -0
- package/dist/renderer/vector-renderer.js +427 -0
- package/dist/renderer/vector-renderer.js.map +1 -0
- package/dist/shared-config.d.ts +9 -0
- package/dist/shared-config.d.ts.map +1 -0
- package/dist/shared-config.js +9 -0
- package/dist/shared-config.js.map +1 -0
- package/dist/test-parser.d.ts +3 -0
- package/dist/test-parser.d.ts.map +1 -0
- package/dist/test-parser.js +74 -0
- package/dist/test-parser.js.map +1 -0
- package/dist/test-render-v2.d.ts +5 -0
- package/dist/test-render-v2.d.ts.map +1 -0
- package/dist/test-render-v2.js +76 -0
- package/dist/test-render-v2.js.map +1 -0
- package/dist/test-render.d.ts +5 -0
- package/dist/test-render.d.ts.map +1 -0
- package/dist/test-render.js +76 -0
- package/dist/test-render.js.map +1 -0
- package/dist/vector-export.d.ts +52 -0
- package/dist/vector-export.d.ts.map +1 -0
- package/dist/vector-export.js +628 -0
- package/dist/vector-export.js.map +1 -0
- package/dist/web-viewer/build-client.d.ts +6 -0
- package/dist/web-viewer/build-client.d.ts.map +1 -0
- package/dist/web-viewer/build-client.js +36 -0
- package/dist/web-viewer/build-client.js.map +1 -0
- package/dist/web-viewer/client/viewer.d.ts +7 -0
- package/dist/web-viewer/client/viewer.d.ts.map +1 -0
- package/dist/web-viewer/client/viewer.js +873 -0
- package/dist/web-viewer/client/viewer.js.map +1 -0
- package/dist/web-viewer/server.d.ts +16 -0
- package/dist/web-viewer/server.d.ts.map +1 -0
- package/dist/web-viewer/server.js +420 -0
- package/dist/web-viewer/server.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utility functions for SVG rendering
|
|
3
|
+
*/
|
|
4
|
+
import type { SceneNode } from "../parser/types.js";
|
|
5
|
+
import type { TransformMatrix, PathCommand } from "./render-types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Escape special characters for XML/SVG content.
|
|
8
|
+
*/
|
|
9
|
+
export declare function escapeXml(value: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Multiply two transform matrices.
|
|
12
|
+
*/
|
|
13
|
+
export declare function multiplyTransforms(parent: TransformMatrix, child: TransformMatrix): TransformMatrix;
|
|
14
|
+
/**
|
|
15
|
+
* Get the local transform matrix from a scene node.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getLocalTransform(node: SceneNode): TransformMatrix;
|
|
18
|
+
/**
|
|
19
|
+
* Transform a point using a transform matrix.
|
|
20
|
+
*/
|
|
21
|
+
export declare function transformPoint(x: number, y: number, t: TransformMatrix): {
|
|
22
|
+
x: number;
|
|
23
|
+
y: number;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Compute bounding box of path commands (in local coordinates, before transform).
|
|
27
|
+
*/
|
|
28
|
+
export declare function computeCommandBounds(commands: PathCommand[]): {
|
|
29
|
+
minX: number;
|
|
30
|
+
minY: number;
|
|
31
|
+
maxX: number;
|
|
32
|
+
maxY: number;
|
|
33
|
+
} | null;
|
|
34
|
+
/**
|
|
35
|
+
* Build SVG path string from commands, applying transform.
|
|
36
|
+
*/
|
|
37
|
+
export declare function buildSvgPath(commands: PathCommand[], transform: TransformMatrix): string;
|
|
38
|
+
//# sourceMappingURL=render-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-utils.d.ts","sourceRoot":"","sources":["../../src/experimental/render-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,GAAG,eAAe,CASnG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,eAAe,CAYlE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAKjG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,WAAW,EAAE,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAkCnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,eAAe,GAAG,MAAM,CAuCxF"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utility functions for SVG rendering
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Escape special characters for XML/SVG content.
|
|
6
|
+
*/
|
|
7
|
+
export function escapeXml(value) {
|
|
8
|
+
return value
|
|
9
|
+
.replace(/&/g, "&")
|
|
10
|
+
.replace(/</g, "<")
|
|
11
|
+
.replace(/>/g, ">")
|
|
12
|
+
.replace(/"/g, """);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Multiply two transform matrices.
|
|
16
|
+
*/
|
|
17
|
+
export function multiplyTransforms(parent, child) {
|
|
18
|
+
return {
|
|
19
|
+
a: parent.a * child.a + parent.c * child.b,
|
|
20
|
+
b: parent.b * child.a + parent.d * child.b,
|
|
21
|
+
c: parent.a * child.c + parent.c * child.d,
|
|
22
|
+
d: parent.b * child.c + parent.d * child.d,
|
|
23
|
+
e: parent.a * child.e + parent.c * child.f + parent.e,
|
|
24
|
+
f: parent.b * child.e + parent.d * child.f + parent.f,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get the local transform matrix from a scene node.
|
|
29
|
+
*/
|
|
30
|
+
export function getLocalTransform(node) {
|
|
31
|
+
if (node.transform) {
|
|
32
|
+
return {
|
|
33
|
+
a: node.transform.m00,
|
|
34
|
+
b: node.transform.m10,
|
|
35
|
+
c: node.transform.m01,
|
|
36
|
+
d: node.transform.m11,
|
|
37
|
+
e: node.transform.m02,
|
|
38
|
+
f: node.transform.m12,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return { a: 1, b: 0, c: 0, d: 1, e: node.x ?? 0, f: node.y ?? 0 };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Transform a point using a transform matrix.
|
|
45
|
+
*/
|
|
46
|
+
export function transformPoint(x, y, t) {
|
|
47
|
+
return {
|
|
48
|
+
x: t.a * x + t.c * y + t.e,
|
|
49
|
+
y: t.b * x + t.d * y + t.f,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Compute bounding box of path commands (in local coordinates, before transform).
|
|
54
|
+
*/
|
|
55
|
+
export function computeCommandBounds(commands) {
|
|
56
|
+
let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
|
|
57
|
+
const update = (x, y) => {
|
|
58
|
+
minX = Math.min(minX, x);
|
|
59
|
+
minY = Math.min(minY, y);
|
|
60
|
+
maxX = Math.max(maxX, x);
|
|
61
|
+
maxY = Math.max(maxY, y);
|
|
62
|
+
};
|
|
63
|
+
for (const { cmd, values } of commands) {
|
|
64
|
+
switch (cmd) {
|
|
65
|
+
case 1: // Move
|
|
66
|
+
case 2: // Line
|
|
67
|
+
update(values[0] ?? 0, values[1] ?? 0);
|
|
68
|
+
break;
|
|
69
|
+
case 3: // Quad
|
|
70
|
+
case 5:
|
|
71
|
+
update(values[0] ?? 0, values[1] ?? 0);
|
|
72
|
+
update(values[2] ?? 0, values[3] ?? 0);
|
|
73
|
+
break;
|
|
74
|
+
case 4: // Cubic
|
|
75
|
+
update(values[0] ?? 0, values[1] ?? 0);
|
|
76
|
+
update(values[2] ?? 0, values[3] ?? 0);
|
|
77
|
+
update(values[4] ?? 0, values[5] ?? 0);
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (!Number.isFinite(minX) || !Number.isFinite(minY))
|
|
82
|
+
return null;
|
|
83
|
+
return { minX, minY, maxX, maxY };
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Build SVG path string from commands, applying transform.
|
|
87
|
+
*/
|
|
88
|
+
export function buildSvgPath(commands, transform) {
|
|
89
|
+
const parts = [];
|
|
90
|
+
for (const { cmd, values } of commands) {
|
|
91
|
+
switch (cmd) {
|
|
92
|
+
case 0: // Close
|
|
93
|
+
parts.push("Z");
|
|
94
|
+
break;
|
|
95
|
+
case 1: {
|
|
96
|
+
// Move
|
|
97
|
+
const p = transformPoint(values[0] ?? 0, values[1] ?? 0, transform);
|
|
98
|
+
parts.push(`M ${p.x} ${p.y}`);
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
case 2: {
|
|
102
|
+
// Line
|
|
103
|
+
const p = transformPoint(values[0] ?? 0, values[1] ?? 0, transform);
|
|
104
|
+
parts.push(`L ${p.x} ${p.y}`);
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
case 3: // Quad
|
|
108
|
+
case 5: {
|
|
109
|
+
const p1 = transformPoint(values[0] ?? 0, values[1] ?? 0, transform);
|
|
110
|
+
const p2 = transformPoint(values[2] ?? 0, values[3] ?? 0, transform);
|
|
111
|
+
parts.push(`Q ${p1.x} ${p1.y} ${p2.x} ${p2.y}`);
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
case 4: {
|
|
115
|
+
// Cubic
|
|
116
|
+
const p1 = transformPoint(values[0] ?? 0, values[1] ?? 0, transform);
|
|
117
|
+
const p2 = transformPoint(values[2] ?? 0, values[3] ?? 0, transform);
|
|
118
|
+
const p3 = transformPoint(values[4] ?? 0, values[5] ?? 0, transform);
|
|
119
|
+
parts.push(`C ${p1.x} ${p1.y} ${p2.x} ${p2.y} ${p3.x} ${p3.y}`);
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return parts.join(" ");
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=render-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-utils.js","sourceRoot":"","sources":["../../src/experimental/render-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ScreenshotOptions {
|
|
2
|
+
maxWidth?: number;
|
|
3
|
+
maxHeight?: number;
|
|
4
|
+
}
|
|
5
|
+
export declare function generateScreenshot(svgString: string, options?: ScreenshotOptions): Promise<{
|
|
6
|
+
base64: string;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
mimeType: string;
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=screenshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../src/experimental/screenshot.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA4B9E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Resvg } from '@resvg/resvg-js';
|
|
2
|
+
export async function generateScreenshot(svgString, options = {}) {
|
|
3
|
+
const { maxWidth = 800, maxHeight = 600 } = options;
|
|
4
|
+
// Parse SVG dimensions from the string
|
|
5
|
+
const widthMatch = svgString.match(/width="(\d+)"/);
|
|
6
|
+
const heightMatch = svgString.match(/height="(\d+)"/);
|
|
7
|
+
const svgWidth = widthMatch ? parseInt(widthMatch[1]) : 800;
|
|
8
|
+
const svgHeight = heightMatch ? parseInt(heightMatch[1]) : 600;
|
|
9
|
+
// Calculate scale to fit within max dimensions
|
|
10
|
+
const scale = Math.min(maxWidth / svgWidth, maxHeight / svgHeight, 1);
|
|
11
|
+
const resvg = new Resvg(svgString, {
|
|
12
|
+
fitTo: {
|
|
13
|
+
mode: 'width',
|
|
14
|
+
value: Math.round(svgWidth * scale),
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
const pngData = resvg.render();
|
|
18
|
+
const pngBuffer = pngData.asPng();
|
|
19
|
+
return {
|
|
20
|
+
base64: pngBuffer.toString('base64'),
|
|
21
|
+
width: pngData.width,
|
|
22
|
+
height: pngData.height,
|
|
23
|
+
mimeType: 'image/png'
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=screenshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/experimental/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAOxC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAAiB,EACjB,UAA6B,EAAE;IAE/B,MAAM,EAAE,QAAQ,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IAEpD,uCAAuC;IACvC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5D,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAE/D,+CAA+C;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;IAEtE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE;QACjC,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;SACpC;KACF,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAElC,OAAO;QACL,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACpC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,WAAW;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vector Renderer - Handles rendering of vector nodes to SVG
|
|
3
|
+
*
|
|
4
|
+
* This module contains all vector-related rendering logic including:
|
|
5
|
+
* - Vector network decoding (blob and structured formats)
|
|
6
|
+
* - Path command parsing and building
|
|
7
|
+
* - Stroked and filled vector rendering
|
|
8
|
+
*/
|
|
9
|
+
import type { SceneNode } from "../parser/types.js";
|
|
10
|
+
import type { TransformMatrix, BlobEntry, RenderContext, PathCommand } from "./render-types.js";
|
|
11
|
+
/**
|
|
12
|
+
* Decode path commands from a binary blob.
|
|
13
|
+
*/
|
|
14
|
+
export declare function decodePathCommands(blobIndex: number | undefined, blobs: BlobEntry[] | undefined, ctx: RenderContext): PathCommand[] | null;
|
|
15
|
+
/**
|
|
16
|
+
* Decode path commands from an array format (alternative to blob).
|
|
17
|
+
*/
|
|
18
|
+
export declare function decodePathCommandsFromArray(commands: unknown[] | undefined): PathCommand[] | null;
|
|
19
|
+
/**
|
|
20
|
+
* Check if a vector node is stroked (has stroke paint, no fill paint).
|
|
21
|
+
*/
|
|
22
|
+
export declare function isStrokedVector(node: SceneNode): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Render a stroked vector using its centerline.
|
|
25
|
+
*/
|
|
26
|
+
export declare function renderStrokedVector(node: SceneNode, transform: TransformMatrix, blobs: BlobEntry[] | undefined, ctx: RenderContext, output: string[]): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Render a filled vector using its fillGeometry.
|
|
29
|
+
*/
|
|
30
|
+
export declare function renderFilledVector(node: SceneNode, transform: TransformMatrix, blobs: BlobEntry[] | undefined, ctx: RenderContext, output: string[]): boolean;
|
|
31
|
+
//# sourceMappingURL=vector-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector-renderer.d.ts","sourceRoot":"","sources":["../../src/experimental/vector-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAW,SAAS,EAAiC,MAAM,oBAAoB,CAAC;AAC5F,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAiJhG;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAC9B,GAAG,EAAE,aAAa,GACjB,WAAW,EAAE,GAAG,IAAI,CAwBtB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,WAAW,EAAE,GAAG,IAAI,CA+BjG;AA6ID;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAQxD;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAC9B,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAiFT;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAC9B,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAkET"}
|