@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.
Files changed (76) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +110 -55
  3. package/dist/index.js +55 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/inspect-fig.d.ts +1 -1
  6. package/dist/inspect-fig.d.ts.map +1 -1
  7. package/dist/inspect-fig.js +7 -3
  8. package/dist/inspect-fig.js.map +1 -1
  9. package/dist/web-viewer/build-client.d.ts +1 -0
  10. package/dist/web-viewer/build-client.d.ts.map +1 -1
  11. package/dist/web-viewer/build-client.js +32 -5
  12. package/dist/web-viewer/build-client.js.map +1 -1
  13. package/dist/web-viewer/client/dist/viewer.js +10 -0
  14. package/dist/web-viewer/client/index.html +138 -0
  15. package/dist/web-viewer/client/styles.css +561 -0
  16. package/package.json +6 -3
  17. package/dist/debug/debug-stroke-geom.d.ts +0 -2
  18. package/dist/debug/debug-stroke-geom.d.ts.map +0 -1
  19. package/dist/debug/debug-stroke-geom.js +0 -67
  20. package/dist/debug/debug-stroke-geom.js.map +0 -1
  21. package/dist/debug/debug-transforms.d.ts +0 -2
  22. package/dist/debug/debug-transforms.d.ts.map +0 -1
  23. package/dist/debug/debug-transforms.js +0 -97
  24. package/dist/debug/debug-transforms.js.map +0 -1
  25. package/dist/debug/debug-vertex.d.ts +0 -2
  26. package/dist/debug/debug-vertex.d.ts.map +0 -1
  27. package/dist/debug/debug-vertex.js +0 -72
  28. package/dist/debug/debug-vertex.js.map +0 -1
  29. package/dist/debug-group.d.ts +0 -5
  30. package/dist/debug-group.d.ts.map +0 -1
  31. package/dist/debug-group.js +0 -44
  32. package/dist/debug-group.js.map +0 -1
  33. package/dist/debug-stroke-geom.d.ts +0 -2
  34. package/dist/debug-stroke-geom.d.ts.map +0 -1
  35. package/dist/debug-stroke-geom.js +0 -67
  36. package/dist/debug-stroke-geom.js.map +0 -1
  37. package/dist/debug-transforms.d.ts +0 -2
  38. package/dist/debug-transforms.d.ts.map +0 -1
  39. package/dist/debug-transforms.js +0 -97
  40. package/dist/debug-transforms.js.map +0 -1
  41. package/dist/debug-vertex.d.ts +0 -2
  42. package/dist/debug-vertex.d.ts.map +0 -1
  43. package/dist/debug-vertex.js +0 -72
  44. package/dist/debug-vertex.js.map +0 -1
  45. package/dist/experimental/paint-utils.d.ts +0 -35
  46. package/dist/experimental/paint-utils.d.ts.map +0 -1
  47. package/dist/experimental/paint-utils.js +0 -105
  48. package/dist/experimental/paint-utils.js.map +0 -1
  49. package/dist/experimental/render-screen-v2.d.ts +0 -32
  50. package/dist/experimental/render-screen-v2.d.ts.map +0 -1
  51. package/dist/experimental/render-screen-v2.js +0 -366
  52. package/dist/experimental/render-screen-v2.js.map +0 -1
  53. package/dist/experimental/render-screen.d.ts +0 -26
  54. package/dist/experimental/render-screen.d.ts.map +0 -1
  55. package/dist/experimental/render-screen.js +0 -547
  56. package/dist/experimental/render-screen.js.map +0 -1
  57. package/dist/experimental/render-types.d.ts +0 -43
  58. package/dist/experimental/render-types.d.ts.map +0 -1
  59. package/dist/experimental/render-types.js +0 -22
  60. package/dist/experimental/render-types.js.map +0 -1
  61. package/dist/experimental/render-utils.d.ts +0 -38
  62. package/dist/experimental/render-utils.d.ts.map +0 -1
  63. package/dist/experimental/render-utils.js +0 -126
  64. package/dist/experimental/render-utils.js.map +0 -1
  65. package/dist/experimental/screenshot.d.ts +0 -11
  66. package/dist/experimental/screenshot.d.ts.map +0 -1
  67. package/dist/experimental/screenshot.js +0 -26
  68. package/dist/experimental/screenshot.js.map +0 -1
  69. package/dist/experimental/vector-renderer.d.ts +0 -31
  70. package/dist/experimental/vector-renderer.d.ts.map +0 -1
  71. package/dist/experimental/vector-renderer.js +0 -427
  72. package/dist/experimental/vector-renderer.js.map +0 -1
  73. package/dist/test-render-v2.d.ts +0 -5
  74. package/dist/test-render-v2.d.ts.map +0 -1
  75. package/dist/test-render-v2.js +0 -76
  76. package/dist/test-render-v2.js.map +0 -1
@@ -0,0 +1,561 @@
1
+ /* Fig Viewer Styles */
2
+
3
+ * {
4
+ box-sizing: border-box;
5
+ margin: 0;
6
+ padding: 0;
7
+ }
8
+
9
+ :root {
10
+ --bg-primary: #1e1e1e;
11
+ --bg-secondary: #252526;
12
+ --bg-tertiary: #2d2d2d;
13
+ --bg-hover: #3c3c3c;
14
+ --bg-selected: #094771;
15
+ --text-primary: #cccccc;
16
+ --text-secondary: #9d9d9d;
17
+ --text-muted: #6d6d6d;
18
+ --border-color: #3c3c3c;
19
+ --accent: #0078d4;
20
+ --accent-hover: #1a8cff;
21
+ --success: #4caf50;
22
+ --warning: #ff9800;
23
+ --error: #f44336;
24
+ --font-mono: 'SF Mono', 'Consolas', 'Monaco', monospace;
25
+ --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
26
+ }
27
+
28
+ html, body {
29
+ height: 100%;
30
+ font-family: var(--font-sans);
31
+ font-size: 13px;
32
+ background: var(--bg-primary);
33
+ color: var(--text-primary);
34
+ }
35
+
36
+ #app {
37
+ display: flex;
38
+ flex-direction: column;
39
+ height: 100%;
40
+ }
41
+
42
+ /* Header */
43
+ #header {
44
+ display: flex;
45
+ align-items: center;
46
+ justify-content: space-between;
47
+ padding: 8px 16px;
48
+ background: var(--bg-secondary);
49
+ border-bottom: 1px solid var(--border-color);
50
+ }
51
+
52
+ #header h1 {
53
+ font-size: 14px;
54
+ font-weight: 600;
55
+ color: var(--text-primary);
56
+ }
57
+
58
+ #file-info {
59
+ display: flex;
60
+ align-items: center;
61
+ gap: 12px;
62
+ }
63
+
64
+ #file-name {
65
+ color: var(--text-secondary);
66
+ font-size: 12px;
67
+ }
68
+
69
+ button {
70
+ background: var(--bg-tertiary);
71
+ border: 1px solid var(--border-color);
72
+ color: var(--text-primary);
73
+ padding: 4px 12px;
74
+ border-radius: 4px;
75
+ cursor: pointer;
76
+ font-size: 12px;
77
+ transition: background 0.15s;
78
+ }
79
+
80
+ button:hover {
81
+ background: var(--bg-hover);
82
+ }
83
+
84
+ button.primary {
85
+ background: var(--accent);
86
+ border-color: var(--accent);
87
+ }
88
+
89
+ button.primary:hover {
90
+ background: var(--accent-hover);
91
+ }
92
+
93
+ /* Main layout */
94
+ #main {
95
+ display: flex;
96
+ flex: 1;
97
+ overflow: hidden;
98
+ }
99
+
100
+ /* Tree panel */
101
+ #tree-panel {
102
+ width: 280px;
103
+ min-width: 200px;
104
+ display: flex;
105
+ flex-direction: column;
106
+ background: var(--bg-secondary);
107
+ border-right: 1px solid var(--border-color);
108
+ }
109
+
110
+ /* Pages section */
111
+ #pages-section {
112
+ border-bottom: 1px solid var(--border-color);
113
+ }
114
+
115
+ #pages-header {
116
+ padding: 8px 12px;
117
+ font-size: 11px;
118
+ font-weight: 600;
119
+ color: var(--text-secondary);
120
+ text-transform: uppercase;
121
+ background: var(--bg-tertiary);
122
+ }
123
+
124
+ #pages-list {
125
+ max-height: 150px;
126
+ overflow-y: auto;
127
+ }
128
+
129
+ .page-item {
130
+ display: flex;
131
+ align-items: center;
132
+ padding: 6px 12px;
133
+ cursor: pointer;
134
+ font-size: 12px;
135
+ border-left: 3px solid transparent;
136
+ }
137
+
138
+ .page-item:hover {
139
+ background: var(--bg-hover);
140
+ }
141
+
142
+ .page-item.selected {
143
+ background: var(--bg-selected);
144
+ border-left-color: var(--accent);
145
+ }
146
+
147
+ .page-item .page-icon {
148
+ width: 16px;
149
+ height: 16px;
150
+ margin-right: 8px;
151
+ display: flex;
152
+ align-items: center;
153
+ justify-content: center;
154
+ font-size: 10px;
155
+ color: #94a3b8;
156
+ }
157
+
158
+ .page-item .page-name {
159
+ flex: 1;
160
+ overflow: hidden;
161
+ text-overflow: ellipsis;
162
+ white-space: nowrap;
163
+ }
164
+
165
+ /* Tree section */
166
+ #tree-section {
167
+ flex: 1;
168
+ display: flex;
169
+ flex-direction: column;
170
+ overflow: hidden;
171
+ }
172
+
173
+ #tree-header {
174
+ padding: 8px;
175
+ border-bottom: 1px solid var(--border-color);
176
+ }
177
+
178
+ #search {
179
+ width: 100%;
180
+ background: var(--bg-tertiary);
181
+ border: 1px solid var(--border-color);
182
+ color: var(--text-primary);
183
+ padding: 6px 10px;
184
+ border-radius: 4px;
185
+ font-size: 12px;
186
+ }
187
+
188
+ #search::placeholder {
189
+ color: var(--text-muted);
190
+ }
191
+
192
+ #tree-container {
193
+ flex: 1;
194
+ overflow: auto;
195
+ }
196
+
197
+ #tree {
198
+ padding: 4px 0;
199
+ }
200
+
201
+ .tree-node {
202
+ user-select: none;
203
+ }
204
+
205
+ .tree-node-row {
206
+ display: flex;
207
+ align-items: center;
208
+ padding: 2px 8px;
209
+ cursor: pointer;
210
+ white-space: nowrap;
211
+ }
212
+
213
+ .tree-node-row:hover {
214
+ background: var(--bg-hover);
215
+ }
216
+
217
+ .tree-node-row.selected {
218
+ background: var(--bg-selected);
219
+ }
220
+
221
+ .tree-toggle {
222
+ width: 16px;
223
+ height: 16px;
224
+ display: flex;
225
+ align-items: center;
226
+ justify-content: center;
227
+ color: var(--text-secondary);
228
+ flex-shrink: 0;
229
+ }
230
+
231
+ .tree-toggle.collapsed::before {
232
+ content: '▶';
233
+ font-size: 8px;
234
+ }
235
+
236
+ .tree-toggle.expanded::before {
237
+ content: '▼';
238
+ font-size: 8px;
239
+ }
240
+
241
+ .tree-icon {
242
+ width: 16px;
243
+ height: 16px;
244
+ margin-right: 6px;
245
+ display: flex;
246
+ align-items: center;
247
+ justify-content: center;
248
+ font-size: 10px;
249
+ color: var(--text-secondary);
250
+ flex-shrink: 0;
251
+ }
252
+
253
+ .tree-icon.type-FRAME { color: #a78bfa; }
254
+ .tree-icon.type-GROUP { color: #60a5fa; }
255
+ .tree-icon.type-TEXT { color: #34d399; }
256
+ .tree-icon.type-RECTANGLE { color: #fbbf24; }
257
+ .tree-icon.type-ELLIPSE { color: #f472b6; }
258
+ .tree-icon.type-VECTOR { color: #fb923c; }
259
+ .tree-icon.type-COMPONENT { color: #22d3ee; }
260
+ .tree-icon.type-INSTANCE { color: #a78bfa; }
261
+ .tree-icon.type-CANVAS { color: #94a3b8; }
262
+
263
+ .tree-name {
264
+ flex: 1;
265
+ overflow: hidden;
266
+ text-overflow: ellipsis;
267
+ font-size: 12px;
268
+ }
269
+
270
+ .tree-type {
271
+ font-size: 10px;
272
+ color: var(--text-muted);
273
+ margin-left: 8px;
274
+ }
275
+
276
+ .tree-children {
277
+ display: none;
278
+ }
279
+
280
+ .tree-node.expanded > .tree-children {
281
+ display: block;
282
+ }
283
+
284
+ /* Canvas panel */
285
+ #canvas-panel {
286
+ flex: 1;
287
+ display: flex;
288
+ flex-direction: column;
289
+ background: var(--bg-primary);
290
+ overflow: hidden;
291
+ }
292
+
293
+ #canvas-toolbar {
294
+ display: flex;
295
+ align-items: center;
296
+ gap: 8px;
297
+ padding: 8px 16px;
298
+ background: var(--bg-secondary);
299
+ border-bottom: 1px solid var(--border-color);
300
+ }
301
+
302
+ #zoom-level {
303
+ min-width: 50px;
304
+ text-align: center;
305
+ font-size: 12px;
306
+ color: var(--text-secondary);
307
+ }
308
+
309
+ #canvas-container {
310
+ flex: 1;
311
+ overflow: auto;
312
+ background:
313
+ linear-gradient(45deg, #2a2a2a 25%, transparent 25%),
314
+ linear-gradient(-45deg, #2a2a2a 25%, transparent 25%),
315
+ linear-gradient(45deg, transparent 75%, #2a2a2a 75%),
316
+ linear-gradient(-45deg, transparent 75%, #2a2a2a 75%);
317
+ background-size: 20px 20px;
318
+ background-position: 0 0, 0 10px, 10px -10px, -10px 0px;
319
+ }
320
+
321
+ #canvas {
322
+ min-width: 100%;
323
+ min-height: 100%;
324
+ display: flex;
325
+ align-items: center;
326
+ justify-content: center;
327
+ padding: 40px;
328
+ box-sizing: border-box;
329
+ position: relative;
330
+ cursor: pointer;
331
+ }
332
+
333
+ /* Hover overlay for node selection */
334
+ #hover-overlay {
335
+ position: absolute;
336
+ top: 0;
337
+ left: 0;
338
+ pointer-events: none;
339
+ z-index: 10;
340
+ }
341
+
342
+ #canvas-placeholder {
343
+ color: var(--text-muted);
344
+ font-size: 14px;
345
+ padding: 40px;
346
+ }
347
+
348
+ #canvas svg {
349
+ display: block;
350
+ max-width: none;
351
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
352
+ }
353
+
354
+ /* Details panel */
355
+ #details-panel {
356
+ width: 300px;
357
+ min-width: 200px;
358
+ display: flex;
359
+ flex-direction: column;
360
+ background: var(--bg-secondary);
361
+ border-left: 1px solid var(--border-color);
362
+ }
363
+
364
+ #details-header {
365
+ padding: 12px 16px;
366
+ border-bottom: 1px solid var(--border-color);
367
+ }
368
+
369
+ #details-header h2 {
370
+ font-size: 13px;
371
+ font-weight: 600;
372
+ }
373
+
374
+ #details-content {
375
+ flex: 1;
376
+ overflow: auto;
377
+ padding: 12px;
378
+ }
379
+
380
+ #no-selection {
381
+ color: var(--text-muted);
382
+ text-align: center;
383
+ padding: 40px 20px;
384
+ }
385
+
386
+ .hidden {
387
+ display: none !important;
388
+ }
389
+
390
+ .detail-section {
391
+ margin-bottom: 16px;
392
+ }
393
+
394
+ .detail-section h3 {
395
+ font-size: 11px;
396
+ font-weight: 600;
397
+ color: var(--text-secondary);
398
+ text-transform: uppercase;
399
+ margin-bottom: 8px;
400
+ }
401
+
402
+ .detail-row {
403
+ display: flex;
404
+ align-items: center;
405
+ margin-bottom: 8px;
406
+ }
407
+
408
+ .detail-row label {
409
+ width: 50px;
410
+ font-size: 11px;
411
+ color: var(--text-secondary);
412
+ flex-shrink: 0;
413
+ }
414
+
415
+ .detail-value {
416
+ display: flex;
417
+ align-items: center;
418
+ gap: 8px;
419
+ flex: 1;
420
+ min-width: 0;
421
+ }
422
+
423
+ .detail-value code {
424
+ font-family: var(--font-mono);
425
+ font-size: 11px;
426
+ background: var(--bg-tertiary);
427
+ padding: 2px 6px;
428
+ border-radius: 3px;
429
+ overflow: hidden;
430
+ text-overflow: ellipsis;
431
+ white-space: nowrap;
432
+ }
433
+
434
+ #copy-id {
435
+ padding: 2px 6px;
436
+ font-size: 10px;
437
+ }
438
+
439
+ .detail-grid {
440
+ display: grid;
441
+ grid-template-columns: repeat(4, 1fr);
442
+ gap: 8px;
443
+ }
444
+
445
+ .detail-cell {
446
+ background: var(--bg-tertiary);
447
+ padding: 6px 8px;
448
+ border-radius: 4px;
449
+ }
450
+
451
+ .detail-cell label {
452
+ display: block;
453
+ font-size: 10px;
454
+ color: var(--text-muted);
455
+ margin-bottom: 2px;
456
+ width: auto;
457
+ }
458
+
459
+ .detail-cell span {
460
+ font-family: var(--font-mono);
461
+ font-size: 11px;
462
+ }
463
+
464
+ #node-text {
465
+ background: var(--bg-tertiary);
466
+ padding: 8px;
467
+ border-radius: 4px;
468
+ font-size: 12px;
469
+ white-space: pre-wrap;
470
+ word-break: break-word;
471
+ max-height: 100px;
472
+ overflow: auto;
473
+ }
474
+
475
+ #node-json {
476
+ background: var(--bg-tertiary);
477
+ padding: 8px;
478
+ border-radius: 4px;
479
+ font-family: var(--font-mono);
480
+ font-size: 10px;
481
+ overflow: auto;
482
+ max-height: 300px;
483
+ white-space: pre-wrap;
484
+ word-break: break-word;
485
+ }
486
+
487
+ /* Dialog */
488
+ .dialog {
489
+ position: fixed;
490
+ top: 0;
491
+ left: 0;
492
+ right: 0;
493
+ bottom: 0;
494
+ background: rgba(0, 0, 0, 0.5);
495
+ display: flex;
496
+ align-items: center;
497
+ justify-content: center;
498
+ z-index: 1000;
499
+ }
500
+
501
+ .dialog-content {
502
+ background: var(--bg-secondary);
503
+ border: 1px solid var(--border-color);
504
+ border-radius: 8px;
505
+ padding: 24px;
506
+ width: 400px;
507
+ max-width: 90%;
508
+ }
509
+
510
+ .dialog-content h2 {
511
+ font-size: 16px;
512
+ margin-bottom: 12px;
513
+ }
514
+
515
+ .dialog-content p {
516
+ color: var(--text-secondary);
517
+ margin-bottom: 16px;
518
+ }
519
+
520
+ .dialog-content input {
521
+ width: 100%;
522
+ background: var(--bg-tertiary);
523
+ border: 1px solid var(--border-color);
524
+ color: var(--text-primary);
525
+ padding: 8px 12px;
526
+ border-radius: 4px;
527
+ font-size: 13px;
528
+ font-family: var(--font-mono);
529
+ margin-bottom: 16px;
530
+ }
531
+
532
+ .dialog-buttons {
533
+ display: flex;
534
+ justify-content: flex-end;
535
+ gap: 8px;
536
+ }
537
+
538
+ /* Loading state */
539
+ .loading {
540
+ opacity: 0.5;
541
+ pointer-events: none;
542
+ }
543
+
544
+ /* Scrollbar styling */
545
+ ::-webkit-scrollbar {
546
+ width: 10px;
547
+ height: 10px;
548
+ }
549
+
550
+ ::-webkit-scrollbar-track {
551
+ background: var(--bg-secondary);
552
+ }
553
+
554
+ ::-webkit-scrollbar-thumb {
555
+ background: var(--bg-hover);
556
+ border-radius: 5px;
557
+ }
558
+
559
+ ::-webkit-scrollbar-thumb:hover {
560
+ background: var(--text-muted);
561
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bilalba/fig-mcp",
3
- "version": "1.0.1",
3
+ "version": "1.1.3",
4
4
  "description": "MCP server for parsing .fig files",
5
5
  "keywords": [
6
6
  "fig",
@@ -26,15 +26,18 @@
26
26
  },
27
27
  "files": [
28
28
  "dist",
29
- "package.json",
30
29
  "README.md",
31
30
  "LICENSE"
32
31
  ],
32
+ "engines": {
33
+ "node": ">=18"
34
+ },
33
35
  "directories": {
34
36
  "test": "tests"
35
37
  },
36
38
  "scripts": {
37
- "build": "tsc",
39
+ "build": "tsc && tsx src/web-viewer/build-client.ts",
40
+ "prepublishOnly": "npm run build",
38
41
  "dev": "tsx watch src/index.ts",
39
42
  "start": "node dist/index.js",
40
43
  "test": "tsx src/test-parser.ts",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=debug-stroke-geom.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug-stroke-geom.d.ts","sourceRoot":"","sources":["../../src/debug/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/debug-stroke-geom.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=debug-transforms.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug-transforms.d.ts","sourceRoot":"","sources":["../../src/debug/debug-transforms.ts"],"names":[],"mappings":""}