@bilalba/fig-mcp 1.0.1 → 1.1.3
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/LICENSE +21 -0
- package/README.md +110 -55
- package/dist/index.js +55 -2
- package/dist/index.js.map +1 -1
- package/dist/inspect-fig.d.ts +1 -1
- package/dist/inspect-fig.d.ts.map +1 -1
- package/dist/inspect-fig.js +7 -3
- package/dist/inspect-fig.js.map +1 -1
- package/dist/web-viewer/build-client.d.ts +1 -0
- package/dist/web-viewer/build-client.d.ts.map +1 -1
- package/dist/web-viewer/build-client.js +32 -5
- package/dist/web-viewer/build-client.js.map +1 -1
- package/dist/web-viewer/client/dist/viewer.js +10 -0
- package/dist/web-viewer/client/index.html +138 -0
- package/dist/web-viewer/client/styles.css +561 -0
- package/package.json +6 -3
- package/dist/debug/debug-stroke-geom.d.ts +0 -2
- package/dist/debug/debug-stroke-geom.d.ts.map +0 -1
- package/dist/debug/debug-stroke-geom.js +0 -67
- package/dist/debug/debug-stroke-geom.js.map +0 -1
- package/dist/debug/debug-transforms.d.ts +0 -2
- package/dist/debug/debug-transforms.d.ts.map +0 -1
- package/dist/debug/debug-transforms.js +0 -97
- package/dist/debug/debug-transforms.js.map +0 -1
- package/dist/debug/debug-vertex.d.ts +0 -2
- package/dist/debug/debug-vertex.d.ts.map +0 -1
- package/dist/debug/debug-vertex.js +0 -72
- package/dist/debug/debug-vertex.js.map +0 -1
- package/dist/debug-group.d.ts +0 -5
- package/dist/debug-group.d.ts.map +0 -1
- package/dist/debug-group.js +0 -44
- package/dist/debug-group.js.map +0 -1
- package/dist/debug-stroke-geom.d.ts +0 -2
- package/dist/debug-stroke-geom.d.ts.map +0 -1
- package/dist/debug-stroke-geom.js +0 -67
- package/dist/debug-stroke-geom.js.map +0 -1
- package/dist/debug-transforms.d.ts +0 -2
- package/dist/debug-transforms.d.ts.map +0 -1
- package/dist/debug-transforms.js +0 -97
- package/dist/debug-transforms.js.map +0 -1
- package/dist/debug-vertex.d.ts +0 -2
- package/dist/debug-vertex.d.ts.map +0 -1
- package/dist/debug-vertex.js +0 -72
- package/dist/debug-vertex.js.map +0 -1
- package/dist/experimental/paint-utils.d.ts +0 -35
- package/dist/experimental/paint-utils.d.ts.map +0 -1
- package/dist/experimental/paint-utils.js +0 -105
- package/dist/experimental/paint-utils.js.map +0 -1
- package/dist/experimental/render-screen-v2.d.ts +0 -32
- package/dist/experimental/render-screen-v2.d.ts.map +0 -1
- package/dist/experimental/render-screen-v2.js +0 -366
- package/dist/experimental/render-screen-v2.js.map +0 -1
- package/dist/experimental/render-screen.d.ts +0 -26
- package/dist/experimental/render-screen.d.ts.map +0 -1
- package/dist/experimental/render-screen.js +0 -547
- package/dist/experimental/render-screen.js.map +0 -1
- package/dist/experimental/render-types.d.ts +0 -43
- package/dist/experimental/render-types.d.ts.map +0 -1
- package/dist/experimental/render-types.js +0 -22
- package/dist/experimental/render-types.js.map +0 -1
- package/dist/experimental/render-utils.d.ts +0 -38
- package/dist/experimental/render-utils.d.ts.map +0 -1
- package/dist/experimental/render-utils.js +0 -126
- package/dist/experimental/render-utils.js.map +0 -1
- package/dist/experimental/screenshot.d.ts +0 -11
- package/dist/experimental/screenshot.d.ts.map +0 -1
- package/dist/experimental/screenshot.js +0 -26
- package/dist/experimental/screenshot.js.map +0 -1
- package/dist/experimental/vector-renderer.d.ts +0 -31
- package/dist/experimental/vector-renderer.d.ts.map +0 -1
- package/dist/experimental/vector-renderer.js +0 -427
- package/dist/experimental/vector-renderer.js.map +0 -1
- package/dist/test-render-v2.d.ts +0 -5
- package/dist/test-render-v2.d.ts.map +0 -1
- package/dist/test-render-v2.js +0 -76
- package/dist/test-render-v2.js.map +0 -1
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Debug transforms - show what transform data exists on nodes
|
|
3
|
-
*/
|
|
4
|
-
import { readFigFile } from "../parser/index.js";
|
|
5
|
-
import { parseCanvasFig, extractDocumentTree, formatGUID } from "../parser/kiwi-parser.js";
|
|
6
|
-
const FILE_PATH = "/Users/billy/Downloads/AutoDevice (Copy).fig";
|
|
7
|
-
const NODE_ID = process.argv[2] || "457:1681";
|
|
8
|
-
function normalizeNodeId(nodeId) {
|
|
9
|
-
let normalized = nodeId.trim();
|
|
10
|
-
if (/^\d+-\d+$/.test(normalized)) {
|
|
11
|
-
normalized = normalized.replace('-', ':');
|
|
12
|
-
}
|
|
13
|
-
return normalized;
|
|
14
|
-
}
|
|
15
|
-
async function debug() {
|
|
16
|
-
const normalizedId = normalizeNodeId(NODE_ID);
|
|
17
|
-
console.log("Node ID:", normalizedId);
|
|
18
|
-
const archive = await readFigFile(FILE_PATH);
|
|
19
|
-
const parsed = parseCanvasFig(archive.canvasFig);
|
|
20
|
-
const doc = extractDocumentTree(parsed.message);
|
|
21
|
-
if (!doc) {
|
|
22
|
-
console.log("Failed to extract document");
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
const nodeIndex = new Map();
|
|
26
|
-
function indexNode(node) {
|
|
27
|
-
nodeIndex.set(formatGUID(node.guid), node);
|
|
28
|
-
if (node.children) {
|
|
29
|
-
for (const child of node.children) {
|
|
30
|
-
indexNode(child);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
indexNode(doc);
|
|
35
|
-
const node = nodeIndex.get(normalizedId);
|
|
36
|
-
if (!node) {
|
|
37
|
-
console.log("Node not found:", normalizedId);
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
const sceneNode = node;
|
|
41
|
-
console.log("\n=== ROOT NODE ===");
|
|
42
|
-
console.log("Name:", node.name);
|
|
43
|
-
console.log("Type:", node.type);
|
|
44
|
-
console.log("x:", sceneNode.x);
|
|
45
|
-
console.log("y:", sceneNode.y);
|
|
46
|
-
console.log("width:", sceneNode.width);
|
|
47
|
-
console.log("height:", sceneNode.height);
|
|
48
|
-
console.log("transform:", sceneNode.transform);
|
|
49
|
-
if (node.children) {
|
|
50
|
-
console.log("\n=== CHILDREN ===");
|
|
51
|
-
for (const child of node.children) {
|
|
52
|
-
const childScene = child;
|
|
53
|
-
console.log("\n--- Child:", child.name, "(", child.type, ") ---");
|
|
54
|
-
console.log("x:", childScene.x);
|
|
55
|
-
console.log("y:", childScene.y);
|
|
56
|
-
console.log("width:", childScene.width);
|
|
57
|
-
console.log("height:", childScene.height);
|
|
58
|
-
console.log("transform:", childScene.transform);
|
|
59
|
-
console.log("size:", childScene.size);
|
|
60
|
-
console.log("vectorData?.normalizedSize:", childScene.vectorData?.normalizedSize);
|
|
61
|
-
console.log("fillGeometry count:", childScene.fillGeometry?.length || 0);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
// Show what renderScreen uses vs what nodeToSvg uses
|
|
65
|
-
console.log("\n=== TRANSFORM USAGE COMPARISON ===");
|
|
66
|
-
console.log("\nrenderScreen (vector-renderer.ts):");
|
|
67
|
-
console.log(" - Uses getLocalTransform() which reads node.transform matrix");
|
|
68
|
-
console.log(" - Composes transforms: multiplyTransforms(parentTransform, localTransform)");
|
|
69
|
-
console.log(" - Handles rotation properly");
|
|
70
|
-
console.log("\nnodeToSvg (vector-export.ts):");
|
|
71
|
-
console.log(" - Uses offset-based positioning only (x/y accumulation)");
|
|
72
|
-
console.log(" - Creates identity-like transform with just scale");
|
|
73
|
-
console.log(" - IGNORES node.transform matrix entirely!");
|
|
74
|
-
// Check if children have transforms
|
|
75
|
-
console.log("\n=== DO CHILDREN HAVE TRANSFORMS? ===");
|
|
76
|
-
if (node.children) {
|
|
77
|
-
for (const child of node.children) {
|
|
78
|
-
const childScene = child;
|
|
79
|
-
const hasTransform = childScene.transform != null;
|
|
80
|
-
const isIdentity = childScene.transform &&
|
|
81
|
-
Math.abs(childScene.transform.m00 - 1) < 0.001 &&
|
|
82
|
-
Math.abs(childScene.transform.m01) < 0.001 &&
|
|
83
|
-
Math.abs(childScene.transform.m10) < 0.001 &&
|
|
84
|
-
Math.abs(childScene.transform.m11 - 1) < 0.001;
|
|
85
|
-
console.log(`${child.name}:`);
|
|
86
|
-
console.log(` hasTransform: ${hasTransform}`);
|
|
87
|
-
if (hasTransform) {
|
|
88
|
-
console.log(` isIdentity: ${isIdentity}`);
|
|
89
|
-
console.log(` m00=${childScene.transform.m00}, m01=${childScene.transform.m01}`);
|
|
90
|
-
console.log(` m10=${childScene.transform.m10}, m11=${childScene.transform.m11}`);
|
|
91
|
-
console.log(` m02=${childScene.transform.m02}, m12=${childScene.transform.m12}`);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
debug().catch(console.error);
|
|
97
|
-
//# sourceMappingURL=debug-transforms.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-transforms.js","sourceRoot":"","sources":["../../src/debug/debug-transforms.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-vertex.d.ts","sourceRoot":"","sources":["../../src/debug/debug-vertex.ts"],"names":[],"mappings":""}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Debug vertex parsing for complex vector 457:1697
|
|
3
|
-
*/
|
|
4
|
-
import { readFigFile } from "../parser/index.js";
|
|
5
|
-
import { parseCanvasFig, formatGUID, extractDocumentTree } from "../parser/kiwi-parser.js";
|
|
6
|
-
async function debug() {
|
|
7
|
-
const archive = await readFigFile("/Users/billy/Downloads/AutoDevice (Copy).fig");
|
|
8
|
-
const parsed = parseCanvasFig(archive.canvasFig);
|
|
9
|
-
const doc = extractDocumentTree(parsed.message);
|
|
10
|
-
if (!doc)
|
|
11
|
-
return;
|
|
12
|
-
const nodeIndex = new Map();
|
|
13
|
-
function indexNode(node) {
|
|
14
|
-
nodeIndex.set(formatGUID(node.guid), node);
|
|
15
|
-
if (node.children) {
|
|
16
|
-
for (const child of node.children) {
|
|
17
|
-
indexNode(child);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
indexNode(doc);
|
|
22
|
-
const blobs = parsed.message["blobs"];
|
|
23
|
-
const rawNode = nodeIndex.get("457:1697");
|
|
24
|
-
if (!rawNode) {
|
|
25
|
-
console.log("Node 457:1697 not found");
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const node = rawNode;
|
|
29
|
-
const vectorData = node.vectorData;
|
|
30
|
-
if (!vectorData) {
|
|
31
|
-
console.log("Node has no vectorData");
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
const blobIndex = vectorData.vectorNetworkBlob;
|
|
35
|
-
const bytes = blobs[blobIndex].bytes;
|
|
36
|
-
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.length);
|
|
37
|
-
console.log("Complex vector 457:1697");
|
|
38
|
-
console.log("normalizedSize:", vectorData.normalizedSize);
|
|
39
|
-
console.log("\nHeader:");
|
|
40
|
-
console.log(" vertices:", view.getUint32(0, true));
|
|
41
|
-
console.log(" segments:", view.getUint32(4, true));
|
|
42
|
-
console.log(" regions:", view.getUint32(8, true));
|
|
43
|
-
console.log("\nVertex raw bytes (16 bytes each):");
|
|
44
|
-
for (let i = 0; i < 8; i++) {
|
|
45
|
-
const offset = 12 + i * 16;
|
|
46
|
-
const hexBytes = Buffer.from(bytes.slice(offset, offset + 16)).toString("hex");
|
|
47
|
-
const x = view.getFloat32(offset, true);
|
|
48
|
-
const y = view.getFloat32(offset + 4, true);
|
|
49
|
-
const auxA = view.getFloat32(offset + 8, true);
|
|
50
|
-
const auxB = view.getFloat32(offset + 12, true);
|
|
51
|
-
console.log(` [${i}] hex: ${hexBytes}`);
|
|
52
|
-
console.log(` x=${x.toFixed(2)}, y=${y.toFixed(2)}, auxA=${auxA.toFixed(2)}, auxB=${auxB.toFixed(2)}`);
|
|
53
|
-
}
|
|
54
|
-
console.log("\nSegment raw bytes (from offset 140):");
|
|
55
|
-
const segmentStart = 12 + 8 * 16; // 140
|
|
56
|
-
for (let i = 0; i < 8; i++) {
|
|
57
|
-
const offset = segmentStart + i * 24;
|
|
58
|
-
if (offset + 24 > bytes.length)
|
|
59
|
-
break;
|
|
60
|
-
const hexBytes = Buffer.from(bytes.slice(offset, offset + 24)).toString("hex");
|
|
61
|
-
const s0 = view.getUint32(offset, true);
|
|
62
|
-
const f1 = view.getFloat32(offset + 4, true);
|
|
63
|
-
const f2 = view.getFloat32(offset + 8, true);
|
|
64
|
-
const s1 = view.getUint32(offset + 12, true);
|
|
65
|
-
const f3 = view.getFloat32(offset + 16, true);
|
|
66
|
-
const f4 = view.getFloat32(offset + 20, true);
|
|
67
|
-
console.log(` [${i}] hex: ${hexBytes}`);
|
|
68
|
-
console.log(` ${s0} -> ${s1}, (${f1.toFixed(3)}, ${f2.toFixed(3)}), (${f3.toFixed(3)}, ${f4.toFixed(3)})`);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
debug().catch(console.error);
|
|
72
|
-
//# sourceMappingURL=debug-vertex.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-vertex.js","sourceRoot":"","sources":["../../src/debug/debug-vertex.ts"],"names":[],"mappings":"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"}
|
package/dist/debug-group.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-group.d.ts","sourceRoot":"","sources":["../src/debug-group.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/dist/debug-group.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Debug script to investigate node 457:1682 and its parent structure
|
|
3
|
-
*/
|
|
4
|
-
import { parseFigFile, buildNodeIdIndex, formatGUID } from "./parser/index.js";
|
|
5
|
-
import { nodeToSvg } from "./vector-export.js";
|
|
6
|
-
async function main() {
|
|
7
|
-
const filePath = "/Users/billy/Downloads/AutoDevice (Copy).fig";
|
|
8
|
-
console.log("Parsing fig file...");
|
|
9
|
-
const parsed = await parseFigFile(filePath);
|
|
10
|
-
const nodeIdIndex = buildNodeIdIndex(parsed.document);
|
|
11
|
-
// Check parent node 457:1681
|
|
12
|
-
const parent = nodeIdIndex.get("457:1681");
|
|
13
|
-
if (parent) {
|
|
14
|
-
const parentScene = parent;
|
|
15
|
-
console.log("\n=== Parent Node 457:1681 ===");
|
|
16
|
-
console.log("Type:", parent.type);
|
|
17
|
-
console.log("Name:", parent.name);
|
|
18
|
-
console.log("x:", parentScene.x);
|
|
19
|
-
console.log("y:", parentScene.y);
|
|
20
|
-
console.log("width:", parentScene.width ?? parentScene.size?.x);
|
|
21
|
-
console.log("height:", parentScene.height ?? parentScene.size?.y);
|
|
22
|
-
if (parent.children?.length) {
|
|
23
|
-
console.log("\nChildren positions:");
|
|
24
|
-
for (const child of parent.children) {
|
|
25
|
-
const childScene = child;
|
|
26
|
-
console.log(` ${formatGUID(child.guid)} ${child.name}:`);
|
|
27
|
-
console.log(` x: ${childScene.x}, y: ${childScene.y}`);
|
|
28
|
-
console.log(` width: ${childScene.width ?? childScene.size?.x}, height: ${childScene.height ?? childScene.size?.y}`);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
// Test nodeToSvg on parent
|
|
32
|
-
try {
|
|
33
|
-
const svg2 = nodeToSvg(parent, parsed.blobs);
|
|
34
|
-
console.log("\nParent nodeToSvg result:");
|
|
35
|
-
console.log(" SVG paths count:", (svg2.svgString.match(/<path/g) || []).length);
|
|
36
|
-
console.log(" SVG:\n", svg2.svgString);
|
|
37
|
-
}
|
|
38
|
-
catch (err) {
|
|
39
|
-
console.log("Error generating SVG for parent:", err);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
main().catch(console.error);
|
|
44
|
-
//# sourceMappingURL=debug-group.js.map
|
package/dist/debug-group.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-group.js","sourceRoot":"","sources":["../src/debug-group.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAgB,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG7D,KAAK,UAAU,IAAI;IACjB,MAAM,QAAQ,GAAG,8CAA8C,CAAC;IAEhE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEtD,6BAA6B;IAC7B,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,WAAW,GAAG,MAA8B,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAElE,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpC,MAAM,UAAU,GAAG,KAA6B,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,UAAU,UAAU,CAAC,CAAC,QAAQ,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,aAAa,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1H,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-stroke-geom.d.ts","sourceRoot":"","sources":["../src/debug-stroke-geom.ts"],"names":[],"mappings":""}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Debug strokeGeometry for complex vector 457:1697
|
|
3
|
-
*/
|
|
4
|
-
import { readFigFile } from "./parser/index.js";
|
|
5
|
-
import { parseCanvasFig, formatGUID, extractDocumentTree } from "./parser/kiwi-parser.js";
|
|
6
|
-
async function debug() {
|
|
7
|
-
const archive = await readFigFile("/Users/billy/Downloads/AutoDevice (Copy).fig");
|
|
8
|
-
const parsed = parseCanvasFig(archive.canvasFig);
|
|
9
|
-
const doc = extractDocumentTree(parsed.message);
|
|
10
|
-
if (!doc)
|
|
11
|
-
return;
|
|
12
|
-
const nodeIndex = new Map();
|
|
13
|
-
function indexNode(node) {
|
|
14
|
-
nodeIndex.set(formatGUID(node.guid), node);
|
|
15
|
-
if (node.children) {
|
|
16
|
-
for (const child of node.children) {
|
|
17
|
-
indexNode(child);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
indexNode(doc);
|
|
22
|
-
const blobs = parsed.message["blobs"];
|
|
23
|
-
// Check all 3 vectors in frame 457:1694
|
|
24
|
-
for (const id of ["457:1695", "457:1696", "457:1697"]) {
|
|
25
|
-
const rawNode = nodeIndex.get(id);
|
|
26
|
-
if (!rawNode) {
|
|
27
|
-
console.log(`Node ${id} not found`);
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
const node = rawNode;
|
|
31
|
-
console.log(`\n${"=".repeat(60)}`);
|
|
32
|
-
console.log(`Node ${id}: ${node.name}`);
|
|
33
|
-
console.log("fillGeometry:", JSON.stringify(node.fillGeometry, null, 2));
|
|
34
|
-
console.log("strokeGeometry:", JSON.stringify(node.strokeGeometry, null, 2));
|
|
35
|
-
// If strokeGeometry has commandsBlob, decode it
|
|
36
|
-
const strokeGeom = node.strokeGeometry;
|
|
37
|
-
if (strokeGeom?.[0]?.commandsBlob !== undefined && blobs) {
|
|
38
|
-
const blobIdx = strokeGeom[0].commandsBlob;
|
|
39
|
-
const bytes = blobs[blobIdx].bytes;
|
|
40
|
-
console.log(`\nstrokeGeometry[0].commandsBlob (${bytes.length} bytes):`);
|
|
41
|
-
// Decode path commands
|
|
42
|
-
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.length);
|
|
43
|
-
const cmdNames = { 0: "Z", 1: "M", 2: "L", 3: "Q", 4: "C", 5: "Q2" };
|
|
44
|
-
const argCounts = { 0: 0, 1: 2, 2: 2, 3: 4, 4: 6, 5: 4 };
|
|
45
|
-
let offset = 0;
|
|
46
|
-
const cmds = [];
|
|
47
|
-
while (offset < bytes.length) {
|
|
48
|
-
const cmd = bytes[offset++];
|
|
49
|
-
const name = cmdNames[cmd] ?? `?${cmd}`;
|
|
50
|
-
const argCount = argCounts[cmd];
|
|
51
|
-
if (argCount === undefined) {
|
|
52
|
-
cmds.push(`${name}(unknown)`);
|
|
53
|
-
break;
|
|
54
|
-
}
|
|
55
|
-
const args = [];
|
|
56
|
-
for (let i = 0; i < argCount && offset + 4 <= bytes.length; i++) {
|
|
57
|
-
args.push(view.getFloat32(offset, true));
|
|
58
|
-
offset += 4;
|
|
59
|
-
}
|
|
60
|
-
cmds.push(`${name}(${args.map(a => a.toFixed(2)).join(", ")})`);
|
|
61
|
-
}
|
|
62
|
-
console.log(cmds.join(" → "));
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
debug().catch(console.error);
|
|
67
|
-
//# sourceMappingURL=debug-stroke-geom.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-stroke-geom.js","sourceRoot":"","sources":["../src/debug-stroke-geom.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-transforms.d.ts","sourceRoot":"","sources":["../src/debug-transforms.ts"],"names":[],"mappings":""}
|
package/dist/debug-transforms.js
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Debug transforms - show what transform data exists on nodes
|
|
3
|
-
*/
|
|
4
|
-
import { readFigFile } from "./parser/index.js";
|
|
5
|
-
import { parseCanvasFig, extractDocumentTree, formatGUID } from "./parser/kiwi-parser.js";
|
|
6
|
-
const FILE_PATH = "/Users/billy/Downloads/AutoDevice (Copy).fig";
|
|
7
|
-
const NODE_ID = process.argv[2] || "457:1681";
|
|
8
|
-
function normalizeNodeId(nodeId) {
|
|
9
|
-
let normalized = nodeId.trim();
|
|
10
|
-
if (/^\d+-\d+$/.test(normalized)) {
|
|
11
|
-
normalized = normalized.replace('-', ':');
|
|
12
|
-
}
|
|
13
|
-
return normalized;
|
|
14
|
-
}
|
|
15
|
-
async function debug() {
|
|
16
|
-
const normalizedId = normalizeNodeId(NODE_ID);
|
|
17
|
-
console.log("Node ID:", normalizedId);
|
|
18
|
-
const archive = await readFigFile(FILE_PATH);
|
|
19
|
-
const parsed = parseCanvasFig(archive.canvasFig);
|
|
20
|
-
const doc = extractDocumentTree(parsed.message);
|
|
21
|
-
if (!doc) {
|
|
22
|
-
console.log("Failed to extract document");
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
const nodeIndex = new Map();
|
|
26
|
-
function indexNode(node) {
|
|
27
|
-
nodeIndex.set(formatGUID(node.guid), node);
|
|
28
|
-
if (node.children) {
|
|
29
|
-
for (const child of node.children) {
|
|
30
|
-
indexNode(child);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
indexNode(doc);
|
|
35
|
-
const node = nodeIndex.get(normalizedId);
|
|
36
|
-
if (!node) {
|
|
37
|
-
console.log("Node not found:", normalizedId);
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
const sceneNode = node;
|
|
41
|
-
console.log("\n=== ROOT NODE ===");
|
|
42
|
-
console.log("Name:", node.name);
|
|
43
|
-
console.log("Type:", node.type);
|
|
44
|
-
console.log("x:", sceneNode.x);
|
|
45
|
-
console.log("y:", sceneNode.y);
|
|
46
|
-
console.log("width:", sceneNode.width);
|
|
47
|
-
console.log("height:", sceneNode.height);
|
|
48
|
-
console.log("transform:", sceneNode.transform);
|
|
49
|
-
if (node.children) {
|
|
50
|
-
console.log("\n=== CHILDREN ===");
|
|
51
|
-
for (const child of node.children) {
|
|
52
|
-
const childScene = child;
|
|
53
|
-
console.log("\n--- Child:", child.name, "(", child.type, ") ---");
|
|
54
|
-
console.log("x:", childScene.x);
|
|
55
|
-
console.log("y:", childScene.y);
|
|
56
|
-
console.log("width:", childScene.width);
|
|
57
|
-
console.log("height:", childScene.height);
|
|
58
|
-
console.log("transform:", childScene.transform);
|
|
59
|
-
console.log("size:", childScene.size);
|
|
60
|
-
console.log("vectorData?.normalizedSize:", childScene.vectorData?.normalizedSize);
|
|
61
|
-
console.log("fillGeometry count:", childScene.fillGeometry?.length || 0);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
// Show what renderScreenV2 uses vs what nodeToSvg uses
|
|
65
|
-
console.log("\n=== TRANSFORM USAGE COMPARISON ===");
|
|
66
|
-
console.log("\nrenderScreenV2 (vector-renderer.ts):");
|
|
67
|
-
console.log(" - Uses getLocalTransform() which reads node.transform matrix");
|
|
68
|
-
console.log(" - Composes transforms: multiplyTransforms(parentTransform, localTransform)");
|
|
69
|
-
console.log(" - Handles rotation properly");
|
|
70
|
-
console.log("\nnodeToSvg (vector-export.ts):");
|
|
71
|
-
console.log(" - Uses offset-based positioning only (x/y accumulation)");
|
|
72
|
-
console.log(" - Creates identity-like transform with just scale");
|
|
73
|
-
console.log(" - IGNORES node.transform matrix entirely!");
|
|
74
|
-
// Check if children have transforms
|
|
75
|
-
console.log("\n=== DO CHILDREN HAVE TRANSFORMS? ===");
|
|
76
|
-
if (node.children) {
|
|
77
|
-
for (const child of node.children) {
|
|
78
|
-
const childScene = child;
|
|
79
|
-
const hasTransform = childScene.transform != null;
|
|
80
|
-
const isIdentity = childScene.transform &&
|
|
81
|
-
Math.abs(childScene.transform.m00 - 1) < 0.001 &&
|
|
82
|
-
Math.abs(childScene.transform.m01) < 0.001 &&
|
|
83
|
-
Math.abs(childScene.transform.m10) < 0.001 &&
|
|
84
|
-
Math.abs(childScene.transform.m11 - 1) < 0.001;
|
|
85
|
-
console.log(`${child.name}:`);
|
|
86
|
-
console.log(` hasTransform: ${hasTransform}`);
|
|
87
|
-
if (hasTransform) {
|
|
88
|
-
console.log(` isIdentity: ${isIdentity}`);
|
|
89
|
-
console.log(` m00=${childScene.transform.m00}, m01=${childScene.transform.m01}`);
|
|
90
|
-
console.log(` m10=${childScene.transform.m10}, m11=${childScene.transform.m11}`);
|
|
91
|
-
console.log(` m02=${childScene.transform.m02}, m12=${childScene.transform.m12}`);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
debug().catch(console.error);
|
|
97
|
-
//# sourceMappingURL=debug-transforms.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-transforms.js","sourceRoot":"","sources":["../src/debug-transforms.ts"],"names":[],"mappings":"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"}
|
package/dist/debug-vertex.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-vertex.d.ts","sourceRoot":"","sources":["../src/debug-vertex.ts"],"names":[],"mappings":""}
|
package/dist/debug-vertex.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Debug vertex parsing for complex vector 457:1697
|
|
3
|
-
*/
|
|
4
|
-
import { readFigFile } from "./parser/index.js";
|
|
5
|
-
import { parseCanvasFig, formatGUID, extractDocumentTree } from "./parser/kiwi-parser.js";
|
|
6
|
-
async function debug() {
|
|
7
|
-
const archive = await readFigFile("/Users/billy/Downloads/AutoDevice (Copy).fig");
|
|
8
|
-
const parsed = parseCanvasFig(archive.canvasFig);
|
|
9
|
-
const doc = extractDocumentTree(parsed.message);
|
|
10
|
-
if (!doc)
|
|
11
|
-
return;
|
|
12
|
-
const nodeIndex = new Map();
|
|
13
|
-
function indexNode(node) {
|
|
14
|
-
nodeIndex.set(formatGUID(node.guid), node);
|
|
15
|
-
if (node.children) {
|
|
16
|
-
for (const child of node.children) {
|
|
17
|
-
indexNode(child);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
indexNode(doc);
|
|
22
|
-
const blobs = parsed.message["blobs"];
|
|
23
|
-
const rawNode = nodeIndex.get("457:1697");
|
|
24
|
-
if (!rawNode) {
|
|
25
|
-
console.log("Node 457:1697 not found");
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const node = rawNode;
|
|
29
|
-
const vectorData = node.vectorData;
|
|
30
|
-
if (!vectorData) {
|
|
31
|
-
console.log("Node has no vectorData");
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
const blobIndex = vectorData.vectorNetworkBlob;
|
|
35
|
-
const bytes = blobs[blobIndex].bytes;
|
|
36
|
-
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.length);
|
|
37
|
-
console.log("Complex vector 457:1697");
|
|
38
|
-
console.log("normalizedSize:", vectorData.normalizedSize);
|
|
39
|
-
console.log("\nHeader:");
|
|
40
|
-
console.log(" vertices:", view.getUint32(0, true));
|
|
41
|
-
console.log(" segments:", view.getUint32(4, true));
|
|
42
|
-
console.log(" regions:", view.getUint32(8, true));
|
|
43
|
-
console.log("\nVertex raw bytes (16 bytes each):");
|
|
44
|
-
for (let i = 0; i < 8; i++) {
|
|
45
|
-
const offset = 12 + i * 16;
|
|
46
|
-
const hexBytes = Buffer.from(bytes.slice(offset, offset + 16)).toString("hex");
|
|
47
|
-
const x = view.getFloat32(offset, true);
|
|
48
|
-
const y = view.getFloat32(offset + 4, true);
|
|
49
|
-
const v2 = view.getFloat32(offset + 8, true);
|
|
50
|
-
const v3 = view.getFloat32(offset + 12, true);
|
|
51
|
-
console.log(` [${i}] hex: ${hexBytes}`);
|
|
52
|
-
console.log(` x=${x.toFixed(2)}, y=${y.toFixed(2)}, v2=${v2.toFixed(2)}, v3=${v3.toFixed(2)}`);
|
|
53
|
-
}
|
|
54
|
-
console.log("\nSegment raw bytes (from offset 140):");
|
|
55
|
-
const segmentStart = 12 + 8 * 16; // 140
|
|
56
|
-
for (let i = 0; i < 8; i++) {
|
|
57
|
-
const offset = segmentStart + i * 24;
|
|
58
|
-
if (offset + 24 > bytes.length)
|
|
59
|
-
break;
|
|
60
|
-
const hexBytes = Buffer.from(bytes.slice(offset, offset + 24)).toString("hex");
|
|
61
|
-
const s0 = view.getUint32(offset, true);
|
|
62
|
-
const f1 = view.getFloat32(offset + 4, true);
|
|
63
|
-
const f2 = view.getFloat32(offset + 8, true);
|
|
64
|
-
const s1 = view.getUint32(offset + 12, true);
|
|
65
|
-
const f3 = view.getFloat32(offset + 16, true);
|
|
66
|
-
const f4 = view.getFloat32(offset + 20, true);
|
|
67
|
-
console.log(` [${i}] hex: ${hexBytes}`);
|
|
68
|
-
console.log(` ${s0} -> ${s1}, (${f1.toFixed(3)}, ${f2.toFixed(3)}), (${f3.toFixed(3)}, ${f4.toFixed(3)})`);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
debug().catch(console.error);
|
|
72
|
-
//# sourceMappingURL=debug-vertex.js.map
|
package/dist/debug-vertex.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug-vertex.js","sourceRoot":"","sources":["../src/debug-vertex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Paint handling utilities for SVG rendering
|
|
3
|
-
*/
|
|
4
|
-
import type { FigNode, Paint } from "../parser/types.js";
|
|
5
|
-
/**
|
|
6
|
-
* Get paints array from a node (handles both 'fills'/'strokes' and 'fillPaints'/'strokePaints').
|
|
7
|
-
*/
|
|
8
|
-
export declare function getPaints(node: FigNode, key: "fills" | "strokes"): Paint[] | undefined;
|
|
9
|
-
/**
|
|
10
|
-
* Get the first visible paint from an array.
|
|
11
|
-
*/
|
|
12
|
-
export declare function getVisiblePaint(paints: Paint[] | undefined): Paint | undefined;
|
|
13
|
-
/**
|
|
14
|
-
* Convert a paint to a CSS color string.
|
|
15
|
-
* Returns undefined if the paint is not visible or not a solid color.
|
|
16
|
-
*/
|
|
17
|
-
export declare function paintToColor(paint: Paint | undefined): string | undefined;
|
|
18
|
-
/**
|
|
19
|
-
* Normalize an image hash from various formats to a hex string.
|
|
20
|
-
* Handles: string, array of bytes, object with hash property, or object with numeric keys.
|
|
21
|
-
*/
|
|
22
|
-
export declare function normalizeImageHash(value: unknown): string | null;
|
|
23
|
-
/**
|
|
24
|
-
* Extract image hash from a paint object.
|
|
25
|
-
*/
|
|
26
|
-
export declare function paintToImageHash(paint: Paint | undefined): string | null;
|
|
27
|
-
/**
|
|
28
|
-
* Detect image format from binary data.
|
|
29
|
-
*/
|
|
30
|
-
export declare function detectImageFormat(data: Uint8Array): string;
|
|
31
|
-
/**
|
|
32
|
-
* Get MIME type for image format.
|
|
33
|
-
*/
|
|
34
|
-
export declare function getMimeType(format: string): string;
|
|
35
|
-
//# sourceMappingURL=paint-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paint-utils.d.ts","sourceRoot":"","sources":["../../src/experimental/paint-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGzD;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,KAAK,EAAE,GAAG,SAAS,CAItF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAG9E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOzE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAkChE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAM1D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQlD"}
|