@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.
Files changed (186) hide show
  1. package/README.md +112 -0
  2. package/dist/compare-get-vector.d.ts +2 -0
  3. package/dist/compare-get-vector.d.ts.map +1 -0
  4. package/dist/compare-get-vector.js +124 -0
  5. package/dist/compare-get-vector.js.map +1 -0
  6. package/dist/compare-mcp-vs-direct.d.ts +2 -0
  7. package/dist/compare-mcp-vs-direct.d.ts.map +1 -0
  8. package/dist/compare-mcp-vs-direct.js +173 -0
  9. package/dist/compare-mcp-vs-direct.js.map +1 -0
  10. package/dist/compare-renderers.d.ts +2 -0
  11. package/dist/compare-renderers.d.ts.map +1 -0
  12. package/dist/compare-renderers.js +110 -0
  13. package/dist/compare-renderers.js.map +1 -0
  14. package/dist/debug/debug-stroke-geom.d.ts +2 -0
  15. package/dist/debug/debug-stroke-geom.d.ts.map +1 -0
  16. package/dist/debug/debug-stroke-geom.js +67 -0
  17. package/dist/debug/debug-stroke-geom.js.map +1 -0
  18. package/dist/debug/debug-transforms.d.ts +2 -0
  19. package/dist/debug/debug-transforms.d.ts.map +1 -0
  20. package/dist/debug/debug-transforms.js +97 -0
  21. package/dist/debug/debug-transforms.js.map +1 -0
  22. package/dist/debug/debug-vertex.d.ts +2 -0
  23. package/dist/debug/debug-vertex.d.ts.map +1 -0
  24. package/dist/debug/debug-vertex.js +72 -0
  25. package/dist/debug/debug-vertex.js.map +1 -0
  26. package/dist/debug-group.d.ts +5 -0
  27. package/dist/debug-group.d.ts.map +1 -0
  28. package/dist/debug-group.js +44 -0
  29. package/dist/debug-group.js.map +1 -0
  30. package/dist/debug-stroke-geom.d.ts +2 -0
  31. package/dist/debug-stroke-geom.d.ts.map +1 -0
  32. package/dist/debug-stroke-geom.js +67 -0
  33. package/dist/debug-stroke-geom.js.map +1 -0
  34. package/dist/debug-transforms.d.ts +2 -0
  35. package/dist/debug-transforms.d.ts.map +1 -0
  36. package/dist/debug-transforms.js +97 -0
  37. package/dist/debug-transforms.js.map +1 -0
  38. package/dist/debug-vertex.d.ts +2 -0
  39. package/dist/debug-vertex.d.ts.map +1 -0
  40. package/dist/debug-vertex.js +72 -0
  41. package/dist/debug-vertex.js.map +1 -0
  42. package/dist/decode-vector-network.d.ts +5 -0
  43. package/dist/decode-vector-network.d.ts.map +1 -0
  44. package/dist/decode-vector-network.js +160 -0
  45. package/dist/decode-vector-network.js.map +1 -0
  46. package/dist/experimental/paint-utils.d.ts +35 -0
  47. package/dist/experimental/paint-utils.d.ts.map +1 -0
  48. package/dist/experimental/paint-utils.js +105 -0
  49. package/dist/experimental/paint-utils.js.map +1 -0
  50. package/dist/experimental/render-screen-v2.d.ts +32 -0
  51. package/dist/experimental/render-screen-v2.d.ts.map +1 -0
  52. package/dist/experimental/render-screen-v2.js +366 -0
  53. package/dist/experimental/render-screen-v2.js.map +1 -0
  54. package/dist/experimental/render-screen.d.ts +26 -0
  55. package/dist/experimental/render-screen.d.ts.map +1 -0
  56. package/dist/experimental/render-screen.js +547 -0
  57. package/dist/experimental/render-screen.js.map +1 -0
  58. package/dist/experimental/render-types.d.ts +43 -0
  59. package/dist/experimental/render-types.d.ts.map +1 -0
  60. package/dist/experimental/render-types.js +22 -0
  61. package/dist/experimental/render-types.js.map +1 -0
  62. package/dist/experimental/render-utils.d.ts +38 -0
  63. package/dist/experimental/render-utils.d.ts.map +1 -0
  64. package/dist/experimental/render-utils.js +126 -0
  65. package/dist/experimental/render-utils.js.map +1 -0
  66. package/dist/experimental/screenshot.d.ts +11 -0
  67. package/dist/experimental/screenshot.d.ts.map +1 -0
  68. package/dist/experimental/screenshot.js +26 -0
  69. package/dist/experimental/screenshot.js.map +1 -0
  70. package/dist/experimental/vector-renderer.d.ts +31 -0
  71. package/dist/experimental/vector-renderer.d.ts.map +1 -0
  72. package/dist/experimental/vector-renderer.js +427 -0
  73. package/dist/experimental/vector-renderer.js.map +1 -0
  74. package/dist/explore-images.d.ts +9 -0
  75. package/dist/explore-images.d.ts.map +1 -0
  76. package/dist/explore-images.js +307 -0
  77. package/dist/explore-images.js.map +1 -0
  78. package/dist/http-server.d.ts +8 -0
  79. package/dist/http-server.d.ts.map +1 -0
  80. package/dist/http-server.js +95 -0
  81. package/dist/http-server.js.map +1 -0
  82. package/dist/index.d.ts +9 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +34 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/inspect-fig.d.ts +16 -0
  87. package/dist/inspect-fig.d.ts.map +1 -0
  88. package/dist/inspect-fig.js +134 -0
  89. package/dist/inspect-fig.js.map +1 -0
  90. package/dist/inspect-frame.d.ts +2 -0
  91. package/dist/inspect-frame.d.ts.map +1 -0
  92. package/dist/inspect-frame.js +90 -0
  93. package/dist/inspect-frame.js.map +1 -0
  94. package/dist/inspect-nodes.d.ts +5 -0
  95. package/dist/inspect-nodes.d.ts.map +1 -0
  96. package/dist/inspect-nodes.js +193 -0
  97. package/dist/inspect-nodes.js.map +1 -0
  98. package/dist/mcp/server.d.ts +38 -0
  99. package/dist/mcp/server.d.ts.map +1 -0
  100. package/dist/mcp/server.js +1524 -0
  101. package/dist/mcp/server.js.map +1 -0
  102. package/dist/parser/fig-reader.d.ts +29 -0
  103. package/dist/parser/fig-reader.d.ts.map +1 -0
  104. package/dist/parser/fig-reader.js +182 -0
  105. package/dist/parser/fig-reader.js.map +1 -0
  106. package/dist/parser/index.d.ts +48 -0
  107. package/dist/parser/index.d.ts.map +1 -0
  108. package/dist/parser/index.js +106 -0
  109. package/dist/parser/index.js.map +1 -0
  110. package/dist/parser/kiwi-parser.d.ts +66 -0
  111. package/dist/parser/kiwi-parser.d.ts.map +1 -0
  112. package/dist/parser/kiwi-parser.js +491 -0
  113. package/dist/parser/kiwi-parser.js.map +1 -0
  114. package/dist/parser/layout-inference.d.ts +63 -0
  115. package/dist/parser/layout-inference.d.ts.map +1 -0
  116. package/dist/parser/layout-inference.js +446 -0
  117. package/dist/parser/layout-inference.js.map +1 -0
  118. package/dist/parser/types.d.ts +286 -0
  119. package/dist/parser/types.d.ts.map +1 -0
  120. package/dist/parser/types.js +6 -0
  121. package/dist/parser/types.js.map +1 -0
  122. package/dist/render-single.d.ts +2 -0
  123. package/dist/render-single.d.ts.map +1 -0
  124. package/dist/render-single.js +53 -0
  125. package/dist/render-single.js.map +1 -0
  126. package/dist/renderer/index.d.ts +16 -0
  127. package/dist/renderer/index.d.ts.map +1 -0
  128. package/dist/renderer/index.js +18 -0
  129. package/dist/renderer/index.js.map +1 -0
  130. package/dist/renderer/paint-utils.d.ts +35 -0
  131. package/dist/renderer/paint-utils.d.ts.map +1 -0
  132. package/dist/renderer/paint-utils.js +105 -0
  133. package/dist/renderer/paint-utils.js.map +1 -0
  134. package/dist/renderer/render-screen.d.ts +26 -0
  135. package/dist/renderer/render-screen.d.ts.map +1 -0
  136. package/dist/renderer/render-screen.js +547 -0
  137. package/dist/renderer/render-screen.js.map +1 -0
  138. package/dist/renderer/render-types.d.ts +43 -0
  139. package/dist/renderer/render-types.d.ts.map +1 -0
  140. package/dist/renderer/render-types.js +22 -0
  141. package/dist/renderer/render-types.js.map +1 -0
  142. package/dist/renderer/render-utils.d.ts +38 -0
  143. package/dist/renderer/render-utils.d.ts.map +1 -0
  144. package/dist/renderer/render-utils.js +126 -0
  145. package/dist/renderer/render-utils.js.map +1 -0
  146. package/dist/renderer/screenshot.d.ts +11 -0
  147. package/dist/renderer/screenshot.d.ts.map +1 -0
  148. package/dist/renderer/screenshot.js +26 -0
  149. package/dist/renderer/screenshot.js.map +1 -0
  150. package/dist/renderer/vector-renderer.d.ts +31 -0
  151. package/dist/renderer/vector-renderer.d.ts.map +1 -0
  152. package/dist/renderer/vector-renderer.js +427 -0
  153. package/dist/renderer/vector-renderer.js.map +1 -0
  154. package/dist/shared-config.d.ts +9 -0
  155. package/dist/shared-config.d.ts.map +1 -0
  156. package/dist/shared-config.js +9 -0
  157. package/dist/shared-config.js.map +1 -0
  158. package/dist/test-parser.d.ts +3 -0
  159. package/dist/test-parser.d.ts.map +1 -0
  160. package/dist/test-parser.js +74 -0
  161. package/dist/test-parser.js.map +1 -0
  162. package/dist/test-render-v2.d.ts +5 -0
  163. package/dist/test-render-v2.d.ts.map +1 -0
  164. package/dist/test-render-v2.js +76 -0
  165. package/dist/test-render-v2.js.map +1 -0
  166. package/dist/test-render.d.ts +5 -0
  167. package/dist/test-render.d.ts.map +1 -0
  168. package/dist/test-render.js +76 -0
  169. package/dist/test-render.js.map +1 -0
  170. package/dist/vector-export.d.ts +52 -0
  171. package/dist/vector-export.d.ts.map +1 -0
  172. package/dist/vector-export.js +628 -0
  173. package/dist/vector-export.js.map +1 -0
  174. package/dist/web-viewer/build-client.d.ts +6 -0
  175. package/dist/web-viewer/build-client.d.ts.map +1 -0
  176. package/dist/web-viewer/build-client.js +36 -0
  177. package/dist/web-viewer/build-client.js.map +1 -0
  178. package/dist/web-viewer/client/viewer.d.ts +7 -0
  179. package/dist/web-viewer/client/viewer.d.ts.map +1 -0
  180. package/dist/web-viewer/client/viewer.js +873 -0
  181. package/dist/web-viewer/client/viewer.js.map +1 -0
  182. package/dist/web-viewer/server.d.ts +16 -0
  183. package/dist/web-viewer/server.d.ts.map +1 -0
  184. package/dist/web-viewer/server.js +420 -0
  185. package/dist/web-viewer/server.js.map +1 -0
  186. 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, "&lt;")
11
+ .replace(/>/g, "&gt;")
12
+ .replace(/"/g, "&quot;");
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"}