@llc3233149/core 0.9.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 (457) hide show
  1. package/dist/canvaskit.d.ts +9 -0
  2. package/dist/canvaskit.d.ts.map +1 -0
  3. package/dist/canvaskit.js +55 -0
  4. package/dist/canvaskit.js.map +1 -0
  5. package/dist/clipboard.d.ts +32 -0
  6. package/dist/clipboard.d.ts.map +1 -0
  7. package/dist/clipboard.js +345 -0
  8. package/dist/clipboard.js.map +1 -0
  9. package/dist/color.d.ts +28 -0
  10. package/dist/color.d.ts.map +1 -0
  11. package/dist/color.js +67 -0
  12. package/dist/color.js.map +1 -0
  13. package/dist/constants.d.ts +159 -0
  14. package/dist/constants.d.ts.map +1 -0
  15. package/dist/constants.js +224 -0
  16. package/dist/constants.js.map +1 -0
  17. package/dist/copy.d.ts +20 -0
  18. package/dist/copy.d.ts.map +1 -0
  19. package/dist/copy.js +64 -0
  20. package/dist/copy.js.map +1 -0
  21. package/dist/fig-export-worker.d.ts +2 -0
  22. package/dist/fig-export-worker.d.ts.map +1 -0
  23. package/dist/fig-export-worker.js +17 -0
  24. package/dist/fig-export-worker.js.map +1 -0
  25. package/dist/fig-export.d.ts +13 -0
  26. package/dist/fig-export.d.ts.map +1 -0
  27. package/dist/fig-export.js +243 -0
  28. package/dist/fig-export.js.map +1 -0
  29. package/dist/figma-api.d.ts +268 -0
  30. package/dist/figma-api.d.ts.map +1 -0
  31. package/dist/figma-api.js +1074 -0
  32. package/dist/figma-api.js.map +1 -0
  33. package/dist/figma-rest-import.d.ts +122 -0
  34. package/dist/figma-rest-import.d.ts.map +1 -0
  35. package/dist/figma-rest-import.js +319 -0
  36. package/dist/figma-rest-import.js.map +1 -0
  37. package/dist/fonts.d.ts +24 -0
  38. package/dist/fonts.d.ts.map +1 -0
  39. package/dist/fonts.js +356 -0
  40. package/dist/fonts.js.map +1 -0
  41. package/dist/geometry.d.ts +14 -0
  42. package/dist/geometry.d.ts.map +1 -0
  43. package/dist/geometry.js +47 -0
  44. package/dist/geometry.js.map +1 -0
  45. package/dist/index.d.ts +38 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +32 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/kiwi/codec.d.ts +292 -0
  50. package/dist/kiwi/codec.d.ts.map +1 -0
  51. package/dist/kiwi/codec.js +340 -0
  52. package/dist/kiwi/codec.js.map +1 -0
  53. package/dist/kiwi/fig-file.d.ts +4 -0
  54. package/dist/kiwi/fig-file.d.ts.map +1 -0
  55. package/dist/kiwi/fig-file.js +236 -0
  56. package/dist/kiwi/fig-file.js.map +1 -0
  57. package/dist/kiwi/fig-import.d.ts +4 -0
  58. package/dist/kiwi/fig-import.d.ts.map +1 -0
  59. package/dist/kiwi/fig-import.js +248 -0
  60. package/dist/kiwi/fig-import.js.map +1 -0
  61. package/dist/kiwi/fig-parse-worker.d.ts +7 -0
  62. package/dist/kiwi/fig-parse-worker.d.ts.map +1 -0
  63. package/dist/kiwi/fig-parse-worker.js +184 -0
  64. package/dist/kiwi/fig-parse-worker.js.map +1 -0
  65. package/dist/kiwi/instance-overrides.d.ts +66 -0
  66. package/dist/kiwi/instance-overrides.d.ts.map +1 -0
  67. package/dist/kiwi/instance-overrides.js +644 -0
  68. package/dist/kiwi/instance-overrides.js.map +1 -0
  69. package/dist/kiwi/kiwi-convert.d.ts +19 -0
  70. package/dist/kiwi/kiwi-convert.d.ts.map +1 -0
  71. package/dist/kiwi/kiwi-convert.js +678 -0
  72. package/dist/kiwi/kiwi-convert.js.map +1 -0
  73. package/dist/kiwi/kiwi-schema/bb.d.ts +25 -0
  74. package/dist/kiwi/kiwi-schema/bb.d.ts.map +1 -0
  75. package/dist/kiwi/kiwi-schema/bb.js +225 -0
  76. package/dist/kiwi/kiwi-schema/bb.js.map +1 -0
  77. package/dist/kiwi/kiwi-schema/binary.d.ts +5 -0
  78. package/dist/kiwi/kiwi-schema/binary.d.ts.map +1 -0
  79. package/dist/kiwi/kiwi-schema/binary.js +86 -0
  80. package/dist/kiwi/kiwi-schema/binary.js.map +1 -0
  81. package/dist/kiwi/kiwi-schema/index.d.ts +6 -0
  82. package/dist/kiwi/kiwi-schema/index.d.ts.map +1 -0
  83. package/dist/kiwi/kiwi-schema/index.js +5 -0
  84. package/dist/kiwi/kiwi-schema/index.js.map +1 -0
  85. package/dist/kiwi/kiwi-schema/js.d.ts +4 -0
  86. package/dist/kiwi/kiwi-schema/js.d.ts.map +1 -0
  87. package/dist/kiwi/kiwi-schema/js.js +282 -0
  88. package/dist/kiwi/kiwi-schema/js.js.map +1 -0
  89. package/dist/kiwi/kiwi-schema/parser.d.ts +5 -0
  90. package/dist/kiwi/kiwi-schema/parser.d.ts.map +1 -0
  91. package/dist/kiwi/kiwi-schema/parser.js +228 -0
  92. package/dist/kiwi/kiwi-schema/parser.js.map +1 -0
  93. package/dist/kiwi/kiwi-schema/schema.d.ts +22 -0
  94. package/dist/kiwi/kiwi-schema/schema.d.ts.map +1 -0
  95. package/dist/kiwi/kiwi-schema/schema.js +2 -0
  96. package/dist/kiwi/kiwi-schema/schema.js.map +1 -0
  97. package/dist/kiwi/kiwi-schema/util.d.ts +3 -0
  98. package/dist/kiwi/kiwi-schema/util.d.ts.map +1 -0
  99. package/dist/kiwi/kiwi-schema/util.js +10 -0
  100. package/dist/kiwi/kiwi-schema/util.js.map +1 -0
  101. package/dist/kiwi/protocol.d.ts +172 -0
  102. package/dist/kiwi/protocol.d.ts.map +1 -0
  103. package/dist/kiwi/protocol.js +214 -0
  104. package/dist/kiwi/protocol.js.map +1 -0
  105. package/dist/kiwi/schema.d.ts +3 -0
  106. package/dist/kiwi/schema.d.ts.map +1 -0
  107. package/dist/kiwi/schema.js +2285 -0
  108. package/dist/kiwi/schema.js.map +1 -0
  109. package/dist/kiwi-serialize.d.ts +17 -0
  110. package/dist/kiwi-serialize.d.ts.map +1 -0
  111. package/dist/kiwi-serialize.js +419 -0
  112. package/dist/kiwi-serialize.js.map +1 -0
  113. package/dist/layout.d.ts +9 -0
  114. package/dist/layout.d.ts.map +1 -0
  115. package/dist/layout.js +533 -0
  116. package/dist/layout.js.map +1 -0
  117. package/dist/profiler/draw-call-counter.d.ts +9 -0
  118. package/dist/profiler/draw-call-counter.d.ts.map +1 -0
  119. package/dist/profiler/draw-call-counter.js +37 -0
  120. package/dist/profiler/draw-call-counter.js.map +1 -0
  121. package/dist/profiler/frame-capture.d.ts +34 -0
  122. package/dist/profiler/frame-capture.d.ts.map +1 -0
  123. package/dist/profiler/frame-capture.js +90 -0
  124. package/dist/profiler/frame-capture.js.map +1 -0
  125. package/dist/profiler/frame-stats.d.ts +33 -0
  126. package/dist/profiler/frame-stats.d.ts.map +1 -0
  127. package/dist/profiler/frame-stats.js +103 -0
  128. package/dist/profiler/frame-stats.js.map +1 -0
  129. package/dist/profiler/gpu-timer.d.ts +15 -0
  130. package/dist/profiler/gpu-timer.d.ts.map +1 -0
  131. package/dist/profiler/gpu-timer.js +77 -0
  132. package/dist/profiler/gpu-timer.js.map +1 -0
  133. package/dist/profiler/hud-renderer.d.ts +22 -0
  134. package/dist/profiler/hud-renderer.d.ts.map +1 -0
  135. package/dist/profiler/hud-renderer.js +200 -0
  136. package/dist/profiler/hud-renderer.js.map +1 -0
  137. package/dist/profiler/index.d.ts +9 -0
  138. package/dist/profiler/index.d.ts.map +1 -0
  139. package/dist/profiler/index.js +8 -0
  140. package/dist/profiler/index.js.map +1 -0
  141. package/dist/profiler/phase-timer.d.ts +9 -0
  142. package/dist/profiler/phase-timer.d.ts.map +1 -0
  143. package/dist/profiler/phase-timer.js +51 -0
  144. package/dist/profiler/phase-timer.js.map +1 -0
  145. package/dist/profiler/render-profiler.d.ts +41 -0
  146. package/dist/profiler/render-profiler.d.ts.map +1 -0
  147. package/dist/profiler/render-profiler.js +142 -0
  148. package/dist/profiler/render-profiler.js.map +1 -0
  149. package/dist/render/components.d.ts +25 -0
  150. package/dist/render/components.d.ts.map +1 -0
  151. package/dist/render/components.js +55 -0
  152. package/dist/render/components.js.map +1 -0
  153. package/dist/render/emoji-icons.d.ts +5 -0
  154. package/dist/render/emoji-icons.d.ts.map +1 -0
  155. package/dist/render/emoji-icons.js +55 -0
  156. package/dist/render/emoji-icons.js.map +1 -0
  157. package/dist/render/export-code.d.ts +9 -0
  158. package/dist/render/export-code.d.ts.map +1 -0
  159. package/dist/render/export-code.js +335 -0
  160. package/dist/render/export-code.js.map +1 -0
  161. package/dist/render/export-jsx.d.ts +5 -0
  162. package/dist/render/export-jsx.d.ts.map +1 -0
  163. package/dist/render/export-jsx.js +621 -0
  164. package/dist/render/export-jsx.js.map +1 -0
  165. package/dist/render/index.d.ts +8 -0
  166. package/dist/render/index.d.ts.map +1 -0
  167. package/dist/render/index.js +8 -0
  168. package/dist/render/index.js.map +1 -0
  169. package/dist/render/jsx-runtime.d.ts +31 -0
  170. package/dist/render/jsx-runtime.d.ts.map +1 -0
  171. package/dist/render/jsx-runtime.js +13 -0
  172. package/dist/render/jsx-runtime.js.map +1 -0
  173. package/dist/render/mini-react.d.ts +14 -0
  174. package/dist/render/mini-react.d.ts.map +1 -0
  175. package/dist/render/mini-react.js +16 -0
  176. package/dist/render/mini-react.js.map +1 -0
  177. package/dist/render/render-jsx.d.ts +24 -0
  178. package/dist/render/render-jsx.d.ts.map +1 -0
  179. package/dist/render/render-jsx.js +51 -0
  180. package/dist/render/render-jsx.js.map +1 -0
  181. package/dist/render/renderer.d.ts +16 -0
  182. package/dist/render/renderer.d.ts.map +1 -0
  183. package/dist/render/renderer.js +437 -0
  184. package/dist/render/renderer.js.map +1 -0
  185. package/dist/render/tailwind.d.ts +20 -0
  186. package/dist/render/tailwind.d.ts.map +1 -0
  187. package/dist/render/tailwind.js +115 -0
  188. package/dist/render/tailwind.js.map +1 -0
  189. package/dist/render/tree.d.ts +72 -0
  190. package/dist/render/tree.d.ts.map +1 -0
  191. package/dist/render/tree.js +63 -0
  192. package/dist/render/tree.js.map +1 -0
  193. package/dist/render-image.d.ts +19 -0
  194. package/dist/render-image.d.ts.map +1 -0
  195. package/dist/render-image.js +84 -0
  196. package/dist/render-image.js.map +1 -0
  197. package/dist/renderer/effects.d.ts +9 -0
  198. package/dist/renderer/effects.d.ts.map +1 -0
  199. package/dist/renderer/effects.js +44 -0
  200. package/dist/renderer/effects.js.map +1 -0
  201. package/dist/renderer/fills.d.ts +9 -0
  202. package/dist/renderer/fills.d.ts.map +1 -0
  203. package/dist/renderer/fills.js +189 -0
  204. package/dist/renderer/fills.js.map +1 -0
  205. package/dist/renderer/index.d.ts +2 -0
  206. package/dist/renderer/index.d.ts.map +1 -0
  207. package/dist/renderer/index.js +2 -0
  208. package/dist/renderer/index.js.map +1 -0
  209. package/dist/renderer/label-cache.d.ts +43 -0
  210. package/dist/renderer/label-cache.d.ts.map +1 -0
  211. package/dist/renderer/label-cache.js +85 -0
  212. package/dist/renderer/label-cache.js.map +1 -0
  213. package/dist/renderer/labels.d.ts +6 -0
  214. package/dist/renderer/labels.d.ts.map +1 -0
  215. package/dist/renderer/labels.js +126 -0
  216. package/dist/renderer/labels.js.map +1 -0
  217. package/dist/renderer/lru-cache.d.ts +20 -0
  218. package/dist/renderer/lru-cache.d.ts.map +1 -0
  219. package/dist/renderer/lru-cache.js +65 -0
  220. package/dist/renderer/lru-cache.js.map +1 -0
  221. package/dist/renderer/overlays.d.ts +25 -0
  222. package/dist/renderer/overlays.d.ts.map +1 -0
  223. package/dist/renderer/overlays.js +783 -0
  224. package/dist/renderer/overlays.js.map +1 -0
  225. package/dist/renderer/renderer.d.ts +229 -0
  226. package/dist/renderer/renderer.d.ts.map +1 -0
  227. package/dist/renderer/renderer.js +909 -0
  228. package/dist/renderer/renderer.js.map +1 -0
  229. package/dist/renderer/rulers.d.ts +8 -0
  230. package/dist/renderer/rulers.d.ts.map +1 -0
  231. package/dist/renderer/rulers.js +147 -0
  232. package/dist/renderer/rulers.js.map +1 -0
  233. package/dist/renderer/scene.d.ts +11 -0
  234. package/dist/renderer/scene.d.ts.map +1 -0
  235. package/dist/renderer/scene.js +392 -0
  236. package/dist/renderer/scene.js.map +1 -0
  237. package/dist/renderer/shapes.d.ts +13 -0
  238. package/dist/renderer/shapes.d.ts.map +1 -0
  239. package/dist/renderer/shapes.js +160 -0
  240. package/dist/renderer/shapes.js.map +1 -0
  241. package/dist/renderer/strokes.d.ts +9 -0
  242. package/dist/renderer/strokes.d.ts.map +1 -0
  243. package/dist/renderer/strokes.js +180 -0
  244. package/dist/renderer/strokes.js.map +1 -0
  245. package/dist/rpc/commands.d.ts +202 -0
  246. package/dist/rpc/commands.d.ts.map +1 -0
  247. package/dist/rpc/commands.js +429 -0
  248. package/dist/rpc/commands.js.map +1 -0
  249. package/dist/rpc/index.d.ts +3 -0
  250. package/dist/rpc/index.d.ts.map +1 -0
  251. package/dist/rpc/index.js +2 -0
  252. package/dist/rpc/index.js.map +1 -0
  253. package/dist/scene-graph.d.ts +318 -0
  254. package/dist/scene-graph.d.ts.map +1 -0
  255. package/dist/scene-graph.js +803 -0
  256. package/dist/scene-graph.js.map +1 -0
  257. package/dist/snap.d.ts +16 -0
  258. package/dist/snap.d.ts.map +1 -0
  259. package/dist/snap.js +97 -0
  260. package/dist/snap.js.map +1 -0
  261. package/dist/style-runs.d.ts +20 -0
  262. package/dist/style-runs.d.ts.map +1 -0
  263. package/dist/style-runs.js +168 -0
  264. package/dist/style-runs.js.map +1 -0
  265. package/dist/svg-export/defs.d.ts +19 -0
  266. package/dist/svg-export/defs.d.ts.map +1 -0
  267. package/dist/svg-export/defs.js +191 -0
  268. package/dist/svg-export/defs.js.map +1 -0
  269. package/dist/svg-export/index.d.ts +8 -0
  270. package/dist/svg-export/index.d.ts.map +1 -0
  271. package/dist/svg-export/index.js +318 -0
  272. package/dist/svg-export/index.js.map +1 -0
  273. package/dist/svg-export/paths.d.ts +9 -0
  274. package/dist/svg-export/paths.d.ts.map +1 -0
  275. package/dist/svg-export/paths.js +189 -0
  276. package/dist/svg-export/paths.js.map +1 -0
  277. package/dist/svg-node.d.ts +8 -0
  278. package/dist/svg-node.d.ts.map +1 -0
  279. package/dist/svg-node.js +48 -0
  280. package/dist/svg-node.js.map +1 -0
  281. package/dist/text-editor.d.ts +57 -0
  282. package/dist/text-editor.d.ts.map +1 -0
  283. package/dist/text-editor.js +337 -0
  284. package/dist/text-editor.js.map +1 -0
  285. package/dist/tools/ai-adapter.d.ts +22 -0
  286. package/dist/tools/ai-adapter.d.ts.map +1 -0
  287. package/dist/tools/ai-adapter.js +121 -0
  288. package/dist/tools/ai-adapter.js.map +1 -0
  289. package/dist/tools/analyze.d.ts +22 -0
  290. package/dist/tools/analyze.d.ts.map +1 -0
  291. package/dist/tools/analyze.js +677 -0
  292. package/dist/tools/analyze.js.map +1 -0
  293. package/dist/tools/create.d.ts +8 -0
  294. package/dist/tools/create.d.ts.map +1 -0
  295. package/dist/tools/create.js +204 -0
  296. package/dist/tools/create.js.map +1 -0
  297. package/dist/tools/describe.d.ts +9 -0
  298. package/dist/tools/describe.d.ts.map +1 -0
  299. package/dist/tools/describe.js +295 -0
  300. package/dist/tools/describe.js.map +1 -0
  301. package/dist/tools/export-code.d.ts +2 -0
  302. package/dist/tools/export-code.d.ts.map +1 -0
  303. package/dist/tools/export-code.js +34 -0
  304. package/dist/tools/export-code.js.map +1 -0
  305. package/dist/tools/export-tailwind-config.d.ts +27 -0
  306. package/dist/tools/export-tailwind-config.d.ts.map +1 -0
  307. package/dist/tools/export-tailwind-config.js +215 -0
  308. package/dist/tools/export-tailwind-config.js.map +1 -0
  309. package/dist/tools/icons.d.ts +5 -0
  310. package/dist/tools/icons.d.ts.map +1 -0
  311. package/dist/tools/icons.js +192 -0
  312. package/dist/tools/icons.js.map +1 -0
  313. package/dist/tools/index.d.ts +7 -0
  314. package/dist/tools/index.d.ts.map +1 -0
  315. package/dist/tools/index.js +6 -0
  316. package/dist/tools/index.js.map +1 -0
  317. package/dist/tools/modify.d.ts +22 -0
  318. package/dist/tools/modify.d.ts.map +1 -0
  319. package/dist/tools/modify.js +653 -0
  320. package/dist/tools/modify.js.map +1 -0
  321. package/dist/tools/patterns.d.ts +2 -0
  322. package/dist/tools/patterns.d.ts.map +1 -0
  323. package/dist/tools/patterns.js +173 -0
  324. package/dist/tools/patterns.js.map +1 -0
  325. package/dist/tools/read.d.ts +17 -0
  326. package/dist/tools/read.d.ts.map +1 -0
  327. package/dist/tools/read.js +379 -0
  328. package/dist/tools/read.js.map +1 -0
  329. package/dist/tools/registry.d.ts +3 -0
  330. package/dist/tools/registry.d.ts.map +1 -0
  331. package/dist/tools/registry.js +124 -0
  332. package/dist/tools/registry.js.map +1 -0
  333. package/dist/tools/schema.d.ts +46 -0
  334. package/dist/tools/schema.d.ts.map +1 -0
  335. package/dist/tools/schema.js +17 -0
  336. package/dist/tools/schema.js.map +1 -0
  337. package/dist/tools/structure.d.ts +18 -0
  338. package/dist/tools/structure.d.ts.map +1 -0
  339. package/dist/tools/structure.js +345 -0
  340. package/dist/tools/structure.js.map +1 -0
  341. package/dist/tools/variables.d.ts +12 -0
  342. package/dist/tools/variables.d.ts.map +1 -0
  343. package/dist/tools/variables.js +190 -0
  344. package/dist/tools/variables.js.map +1 -0
  345. package/dist/tools/vector.d.ts +15 -0
  346. package/dist/tools/vector.d.ts.map +1 -0
  347. package/dist/tools/vector.js +312 -0
  348. package/dist/tools/vector.js.map +1 -0
  349. package/dist/types.d.ts +29 -0
  350. package/dist/types.d.ts.map +1 -0
  351. package/dist/types.js +2 -0
  352. package/dist/types.js.map +1 -0
  353. package/dist/undo.d.ts +33 -0
  354. package/dist/undo.d.ts.map +1 -0
  355. package/dist/undo.js +98 -0
  356. package/dist/undo.js.map +1 -0
  357. package/dist/vector.d.ts +14 -0
  358. package/dist/vector.d.ts.map +1 -0
  359. package/dist/vector.js +334 -0
  360. package/dist/vector.js.map +1 -0
  361. package/dist/xpath.d.ts +8 -0
  362. package/dist/xpath.d.ts.map +1 -0
  363. package/dist/xpath.js +199 -0
  364. package/dist/xpath.js.map +1 -0
  365. package/package.json +54 -0
  366. package/src/canvaskit.ts +66 -0
  367. package/src/clipboard.ts +444 -0
  368. package/src/color.ts +83 -0
  369. package/src/constants.ts +277 -0
  370. package/src/copy.ts +75 -0
  371. package/src/fig-export-worker.ts +28 -0
  372. package/src/fig-export.ts +321 -0
  373. package/src/figma-api.ts +1297 -0
  374. package/src/figma-rest-import.ts +443 -0
  375. package/src/fonts.ts +369 -0
  376. package/src/geometry.ts +73 -0
  377. package/src/global.d.ts +20 -0
  378. package/src/index.ts +247 -0
  379. package/src/kiwi/codec.ts +614 -0
  380. package/src/kiwi/fig-file.ts +248 -0
  381. package/src/kiwi/fig-import.ts +300 -0
  382. package/src/kiwi/fig-parse-worker.ts +213 -0
  383. package/src/kiwi/instance-overrides.ts +682 -0
  384. package/src/kiwi/kiwi-convert.ts +771 -0
  385. package/src/kiwi/kiwi-schema/bb.ts +244 -0
  386. package/src/kiwi/kiwi-schema/binary.ts +102 -0
  387. package/src/kiwi/kiwi-schema/index.ts +5 -0
  388. package/src/kiwi/kiwi-schema/js.ts +339 -0
  389. package/src/kiwi/kiwi-schema/parser.ts +287 -0
  390. package/src/kiwi/kiwi-schema/schema.ts +24 -0
  391. package/src/kiwi/kiwi-schema/util.ts +10 -0
  392. package/src/kiwi/protocol.ts +237 -0
  393. package/src/kiwi/schema.ts +2286 -0
  394. package/src/kiwi-serialize.ts +467 -0
  395. package/src/layout.ts +608 -0
  396. package/src/profiler/draw-call-counter.ts +43 -0
  397. package/src/profiler/frame-capture.ts +139 -0
  398. package/src/profiler/frame-stats.ts +122 -0
  399. package/src/profiler/gpu-timer.ts +93 -0
  400. package/src/profiler/hud-renderer.ts +242 -0
  401. package/src/profiler/index.ts +8 -0
  402. package/src/profiler/phase-timer.ts +62 -0
  403. package/src/profiler/render-profiler.ts +163 -0
  404. package/src/render/components.ts +69 -0
  405. package/src/render/emoji-icons.ts +60 -0
  406. package/src/render/export-code.ts +366 -0
  407. package/src/render/export-jsx.ts +633 -0
  408. package/src/render/index.ts +38 -0
  409. package/src/render/jsx-runtime.ts +36 -0
  410. package/src/render/mini-react.ts +30 -0
  411. package/src/render/render-jsx.ts +74 -0
  412. package/src/render/renderer.ts +508 -0
  413. package/src/render/tailwind.ts +114 -0
  414. package/src/render/tree.ts +137 -0
  415. package/src/render-image.ts +139 -0
  416. package/src/renderer/effects.ts +64 -0
  417. package/src/renderer/fills.ts +248 -0
  418. package/src/renderer/index.ts +1 -0
  419. package/src/renderer/label-cache.ts +114 -0
  420. package/src/renderer/labels.ts +168 -0
  421. package/src/renderer/lru-cache.ts +71 -0
  422. package/src/renderer/overlays.ts +1089 -0
  423. package/src/renderer/renderer.ts +1226 -0
  424. package/src/renderer/rulers.ts +230 -0
  425. package/src/renderer/scene.ts +554 -0
  426. package/src/renderer/shapes.ts +193 -0
  427. package/src/renderer/strokes.ts +221 -0
  428. package/src/rpc/commands.ts +667 -0
  429. package/src/rpc/index.ts +25 -0
  430. package/src/scene-graph.ts +1254 -0
  431. package/src/snap.ts +122 -0
  432. package/src/style-runs.ts +234 -0
  433. package/src/svg-export/defs.ts +255 -0
  434. package/src/svg-export/index.ts +427 -0
  435. package/src/svg-export/paths.ts +212 -0
  436. package/src/svg-node.ts +62 -0
  437. package/src/text-editor.ts +349 -0
  438. package/src/tools/ai-adapter.ts +144 -0
  439. package/src/tools/analyze.ts +786 -0
  440. package/src/tools/create.ts +206 -0
  441. package/src/tools/describe.ts +280 -0
  442. package/src/tools/export-code.ts +41 -0
  443. package/src/tools/export-tailwind-config.ts +266 -0
  444. package/src/tools/icons.ts +213 -0
  445. package/src/tools/index.ts +6 -0
  446. package/src/tools/modify.ts +651 -0
  447. package/src/tools/patterns.ts +189 -0
  448. package/src/tools/read.ts +401 -0
  449. package/src/tools/registry.ts +155 -0
  450. package/src/tools/schema.ts +65 -0
  451. package/src/tools/structure.ts +348 -0
  452. package/src/tools/variables.ts +193 -0
  453. package/src/tools/vector.ts +311 -0
  454. package/src/types.ts +32 -0
  455. package/src/undo.ts +126 -0
  456. package/src/vector.ts +413 -0
  457. package/src/xpath.ts +259 -0
@@ -0,0 +1,292 @@
1
+ /**
2
+ * Message Encoding/Decoding for Figma Multiplayer
3
+ *
4
+ * Uses:
5
+ * - kiwi-schema: Binary serialization (by Evan Wallace, Figma co-founder)
6
+ * - fzstd: Browser-compatible Zstd decompression
7
+ */
8
+ interface CompiledSchema {
9
+ encodeMessage(message: unknown): Uint8Array;
10
+ decodeMessage(data: Uint8Array): unknown;
11
+ encodePaint(paint: unknown): Uint8Array;
12
+ encodeNodeChange(nodeChange: unknown): Uint8Array;
13
+ }
14
+ /**
15
+ * Initialize the codec (compiles Kiwi schema)
16
+ */
17
+ export declare function initCodec(): Promise<void>;
18
+ export declare function getCompiledSchema(): CompiledSchema;
19
+ export declare function getSchemaBytes(): Uint8Array;
20
+ /**
21
+ * Check if codec is initialized
22
+ */
23
+ export declare function isCodecReady(): boolean;
24
+ /**
25
+ * Compress data using Zstd (Bun native)
26
+ */
27
+ export declare function compress(data: Uint8Array): Uint8Array;
28
+ /**
29
+ * Decompress Zstd data (Bun native)
30
+ */
31
+ export declare function decompress(data: Uint8Array): Uint8Array;
32
+ /**
33
+ * Encode a message for sending to Figma
34
+ * Handles variable bindings in fillPaints which require custom encoding
35
+ */
36
+ export declare function encodeMessage(message: FigmaMessage): Uint8Array;
37
+ /**
38
+ * Decode a message received from Figma
39
+ */
40
+ export declare function decodeMessage(data: Uint8Array): FigmaMessage;
41
+ /**
42
+ * Quick peek at message type without full decoding
43
+ */
44
+ export declare function peekMessageType(data: Uint8Array): number | null;
45
+ export type { GUID, Color } from '../types.js';
46
+ import type { Color, GUID, Matrix, Vector } from '../types.js';
47
+ export type { Matrix, Vector };
48
+ export interface ParentIndex {
49
+ guid: GUID;
50
+ position: string;
51
+ }
52
+ export interface VariableBinding {
53
+ variableID: GUID;
54
+ }
55
+ export interface Paint {
56
+ type: 'SOLID' | 'GRADIENT_LINEAR' | 'GRADIENT_RADIAL' | 'GRADIENT_ANGULAR' | 'GRADIENT_DIAMOND' | 'IMAGE';
57
+ color?: Color;
58
+ opacity?: number;
59
+ visible?: boolean;
60
+ blendMode?: string;
61
+ stops?: {
62
+ color: Color;
63
+ position: number;
64
+ }[];
65
+ transform?: Matrix;
66
+ image?: {
67
+ hash: string;
68
+ };
69
+ imageScaleMode?: string;
70
+ colorVariableBinding?: VariableBinding;
71
+ }
72
+ export interface Effect {
73
+ type: 'DROP_SHADOW' | 'INNER_SHADOW' | 'LAYER_BLUR' | 'BACKGROUND_BLUR' | 'FOREGROUND_BLUR';
74
+ color?: Color;
75
+ offset?: Vector;
76
+ radius?: number;
77
+ visible?: boolean;
78
+ spread?: number;
79
+ blendMode?: string;
80
+ }
81
+ export interface VariableAnyValue {
82
+ boolValue?: boolean;
83
+ textValue?: string;
84
+ floatValue?: number;
85
+ colorValue?: Color;
86
+ alias?: {
87
+ guid: GUID;
88
+ };
89
+ }
90
+ export interface VariableDataEntry {
91
+ value?: VariableAnyValue;
92
+ dataType?: string;
93
+ resolvedDataType?: string;
94
+ }
95
+ export interface VariableConsumptionEntry {
96
+ nodeField?: number;
97
+ variableData?: VariableDataEntry;
98
+ variableField?: string;
99
+ }
100
+ export interface VariableDataValuesEntry {
101
+ modeID: GUID;
102
+ variableData: VariableDataEntry;
103
+ }
104
+ export interface NodeChange {
105
+ [key: string]: unknown;
106
+ guid?: GUID;
107
+ phase?: 'CREATED' | 'REMOVED';
108
+ parentIndex?: ParentIndex;
109
+ type?: string;
110
+ name?: string;
111
+ visible?: boolean;
112
+ locked?: boolean;
113
+ opacity?: number;
114
+ blendMode?: string;
115
+ size?: Vector;
116
+ transform?: Matrix;
117
+ cornerRadius?: number;
118
+ fillPaints?: Paint[];
119
+ strokePaints?: Paint[];
120
+ strokeWeight?: number;
121
+ strokeAlign?: string;
122
+ strokeCap?: string;
123
+ strokeJoin?: string;
124
+ dashPattern?: number[];
125
+ effects?: Effect[];
126
+ stackMode?: 'NONE' | 'HORIZONTAL' | 'VERTICAL';
127
+ stackSpacing?: number;
128
+ stackPadding?: number;
129
+ stackPaddingRight?: number;
130
+ stackPaddingBottom?: number;
131
+ stackCounterAlign?: string;
132
+ stackJustify?: string;
133
+ stackCounterAlignItems?: string;
134
+ stackPrimaryAlignItems?: string;
135
+ stackPrimarySizing?: 'FIXED' | 'RESIZE_TO_FIT' | 'RESIZE_TO_FIT_WITH_IMPLICIT_SIZE';
136
+ stackCounterSizing?: 'FIXED' | 'RESIZE_TO_FIT' | 'RESIZE_TO_FIT_WITH_IMPLICIT_SIZE';
137
+ stackVerticalPadding?: number;
138
+ stackHorizontalPadding?: number;
139
+ stackWrap?: string;
140
+ stackPositioning?: string;
141
+ stackChildPrimaryGrow?: number;
142
+ stackChildAlignSelf?: string;
143
+ stackCounterSpacing?: number;
144
+ clipsContent?: boolean;
145
+ frameMaskDisabled?: boolean;
146
+ vectorData?: unknown;
147
+ fillGeometry?: Array<{
148
+ windingRule?: string;
149
+ commandsBlob?: number;
150
+ }>;
151
+ strokeGeometry?: Array<{
152
+ windingRule?: string;
153
+ commandsBlob?: number;
154
+ }>;
155
+ fontSize?: number;
156
+ fontWeight?: number;
157
+ fontName?: {
158
+ family: string;
159
+ style: string;
160
+ postscript?: string;
161
+ };
162
+ textAlignHorizontal?: string;
163
+ textAlignVertical?: string;
164
+ textAutoResize?: string;
165
+ textData?: {
166
+ characters: string;
167
+ lines?: Array<{
168
+ lineType?: string;
169
+ styleId?: number;
170
+ indentationLevel?: number;
171
+ }>;
172
+ characterStyleIDs?: number[];
173
+ styleOverrideTable?: NodeChange[];
174
+ };
175
+ derivedTextData?: {
176
+ layoutSize?: Vector;
177
+ fontMetaData?: Array<{
178
+ key: {
179
+ family: string;
180
+ style: string;
181
+ postscript?: string;
182
+ };
183
+ fontLineHeight: number;
184
+ fontDigest?: Uint8Array | Record<string, number>;
185
+ fontStyle?: string;
186
+ fontWeight?: number;
187
+ }>;
188
+ truncationStartIndex?: number;
189
+ truncatedHeight?: number;
190
+ };
191
+ textUserLayoutVersion?: number;
192
+ textDecoration?: string;
193
+ lineHeight?: {
194
+ value: number;
195
+ units: string;
196
+ };
197
+ letterSpacing?: {
198
+ value: number;
199
+ units: string;
200
+ };
201
+ symbolData?: {
202
+ symbolID: GUID;
203
+ };
204
+ isStateGroup?: boolean;
205
+ stateGroupPropertyValueOrders?: Array<{
206
+ property: string;
207
+ values: string[];
208
+ }>;
209
+ internalOnly?: boolean;
210
+ rectangleTopLeftCornerRadius?: number;
211
+ rectangleTopRightCornerRadius?: number;
212
+ rectangleBottomLeftCornerRadius?: number;
213
+ rectangleBottomRightCornerRadius?: number;
214
+ rectangleCornerRadiiIndependent?: boolean;
215
+ cornerSmoothing?: number;
216
+ horizontalConstraint?: string;
217
+ verticalConstraint?: string;
218
+ variableData?: VariableDataEntry;
219
+ variableConsumptionMap?: {
220
+ entries?: VariableConsumptionEntry[];
221
+ };
222
+ variableSetModes?: Array<{
223
+ id: GUID;
224
+ name: string;
225
+ sortPosition?: string;
226
+ }>;
227
+ variableSetID?: {
228
+ guid: GUID;
229
+ };
230
+ variableResolvedType?: string;
231
+ variableDataValues?: {
232
+ entries?: VariableDataValuesEntry[];
233
+ };
234
+ variableScopes?: string[];
235
+ }
236
+ export interface FigmaMessage {
237
+ type: string;
238
+ sessionID?: number;
239
+ ackID?: number;
240
+ reconnectSequenceNumber?: number;
241
+ nodeChanges?: NodeChange[];
242
+ blobs?: Array<{
243
+ bytes: Uint8Array;
244
+ }>;
245
+ }
246
+ /**
247
+ * Create a NODE_CHANGES message
248
+ */
249
+ export declare function createNodeChangesMessage(sessionID: number, reconnectSequenceNumber: number, nodeChanges: NodeChange[], ackID?: number): FigmaMessage;
250
+ /**
251
+ * Create a node change for a new shape
252
+ */
253
+ export declare function createNodeChange(opts: {
254
+ sessionID: number;
255
+ localID: number;
256
+ parentSessionID: number;
257
+ parentLocalID: number;
258
+ position?: string;
259
+ type: string;
260
+ name: string;
261
+ x: number;
262
+ y: number;
263
+ width: number;
264
+ height: number;
265
+ fill?: Color | string;
266
+ stroke?: Color | string;
267
+ strokeWeight?: number;
268
+ cornerRadius?: number;
269
+ opacity?: number;
270
+ }): NodeChange;
271
+ /**
272
+ * Encode a Paint with optional variable binding
273
+ *
274
+ * Figma's variable binding format (discovered via WS traffic analysis):
275
+ * - Field 21 = 1 (binding type)
276
+ * - Field 4 = 1 (flag)
277
+ * - Raw sessionID varint (no field number)
278
+ * - Raw localID varint (no field number)
279
+ * - Terminators: 00 00 02 03 03 04 00 00
280
+ */
281
+ export declare function encodePaintWithVariableBinding(paint: Paint, variableSessionID: number, variableLocalID: number): Uint8Array;
282
+ /**
283
+ * Parse a variable ID string (e.g., "VariableID:38448:122296")
284
+ * Returns sessionID and localID
285
+ */
286
+ export declare function parseVariableId(variableId: string): GUID | null;
287
+ /**
288
+ * Encode a NodeChange with variable bindings in fillPaints and/or strokePaints
289
+ * This is needed because kiwi-schema cannot produce Figma's exact variable binding format
290
+ */
291
+ export declare function encodeNodeChangeWithVariables(nodeChange: NodeChange): Uint8Array;
292
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/kiwi/codec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,340 @@
1
+ /**
2
+ * Message Encoding/Decoding for Figma Multiplayer
3
+ *
4
+ * Uses:
5
+ * - kiwi-schema: Binary serialization (by Evan Wallace, Figma co-founder)
6
+ * - fzstd: Browser-compatible Zstd decompression
7
+ */
8
+ import { decompress as zstdDecompress } from 'fzstd';
9
+ import { parseColor } from '../color.js';
10
+ import { compileSchema, encodeBinarySchema } from './kiwi-schema.js';
11
+ import { isZstdCompressed, getKiwiMessageType } from './protocol.js';
12
+ import figmaSchema from './schema.js';
13
+ let compiledSchema = null;
14
+ /**
15
+ * Initialize the codec (compiles Kiwi schema)
16
+ */
17
+ export async function initCodec() {
18
+ if (compiledSchema)
19
+ return;
20
+ compiledSchema = compileSchema(figmaSchema);
21
+ }
22
+ export function getCompiledSchema() {
23
+ if (!compiledSchema)
24
+ throw new Error('Codec not initialized');
25
+ return compiledSchema;
26
+ }
27
+ export function getSchemaBytes() {
28
+ return encodeBinarySchema(figmaSchema);
29
+ }
30
+ /**
31
+ * Check if codec is initialized
32
+ */
33
+ export function isCodecReady() {
34
+ return compiledSchema !== null;
35
+ }
36
+ /**
37
+ * Compress data using Zstd (Bun native)
38
+ */
39
+ export function compress(data) {
40
+ return data;
41
+ }
42
+ /**
43
+ * Decompress Zstd data (Bun native)
44
+ */
45
+ export function decompress(data) {
46
+ if (!isZstdCompressed(data))
47
+ return data;
48
+ return zstdDecompress(data);
49
+ }
50
+ /**
51
+ * Encode a message for sending to Figma
52
+ * Handles variable bindings in fillPaints which require custom encoding
53
+ */
54
+ export function encodeMessage(message) {
55
+ if (!compiledSchema) {
56
+ throw new Error('Codec not initialized. Call initCodec() first.');
57
+ }
58
+ // Check if any nodeChange has variable bindings (fill or stroke)
59
+ const hasVariables = message.nodeChanges?.some((nc) => nc.fillPaints?.some((p) => p.colorVariableBinding) ||
60
+ nc.strokePaints?.some((p) => p.colorVariableBinding));
61
+ if (!hasVariables) {
62
+ // Standard encoding
63
+ const encoded = compiledSchema.encodeMessage(message);
64
+ return compress(encoded);
65
+ }
66
+ // Need custom encoding for variable bindings
67
+ // Strategy: encode each nodeChange separately, then combine
68
+ const messageWithoutNodes = { ...message, nodeChanges: [] };
69
+ const baseEncoded = compiledSchema.encodeMessage(messageWithoutNodes);
70
+ const baseHex = Buffer.from(baseEncoded).toString('hex');
71
+ // Encode nodeChanges with variable support
72
+ const nodeChangeBytes = [];
73
+ for (const nc of message.nodeChanges || []) {
74
+ const encoded = encodeNodeChangeWithVariables(nc);
75
+ nodeChangeBytes.push(encoded);
76
+ }
77
+ // Combine: base message + nodeChanges
78
+ // Message structure: type, sessionID, ackID, reconnectSeqNum, nodeChanges[]
79
+ // nodeChanges is field 5
80
+ // Message structure in kiwi:
81
+ // - Field 1 (type): enum MessageType
82
+ // - Field 2 (sessionID): uint
83
+ // - Field 3 (ackID): uint
84
+ // - Field 4 (nodeChanges): NodeChange[] - this is what we need to replace
85
+ // - Field 25 (reconnectSequenceNumber): uint
86
+ //
87
+ // Empty array: "04 00" (field 4, length 0)
88
+ // We need to replace "04 00" with "04 <count> <nodes>"
89
+ const emptyArrayPattern = '0400'; // field 4, length 0
90
+ const emptyArrayIdx = baseHex.indexOf(emptyArrayPattern);
91
+ if (emptyArrayIdx === -1) {
92
+ // Fallback to standard encoding
93
+ const encoded = compiledSchema.encodeMessage(message);
94
+ return compress(encoded);
95
+ }
96
+ // Build nodeChanges array with our encoded nodes
97
+ const ncBytes = [0x04]; // field 4
98
+ ncBytes.push(...encodeVarint(nodeChangeBytes.length)); // array length
99
+ for (const ncArr of nodeChangeBytes) {
100
+ ncBytes.push(...Array.from(ncArr));
101
+ }
102
+ // Replace "0400" with our nodeChanges
103
+ const beforeArray = baseHex.slice(0, emptyArrayIdx);
104
+ const afterArray = baseHex.slice(emptyArrayIdx + 4); // skip "0400"
105
+ const ncHex = Buffer.from(ncBytes).toString('hex');
106
+ const finalHex = beforeArray + ncHex + afterArray;
107
+ const finalBytes = new Uint8Array(finalHex.match(/.{2}/g)?.map((b) => parseInt(b, 16)) ?? []);
108
+ return compress(finalBytes);
109
+ }
110
+ /**
111
+ * Decode a message received from Figma
112
+ */
113
+ export function decodeMessage(data) {
114
+ if (!compiledSchema) {
115
+ throw new Error('Codec not initialized. Call initCodec() first.');
116
+ }
117
+ const decompressed = decompress(data);
118
+ return compiledSchema.decodeMessage(decompressed);
119
+ }
120
+ /**
121
+ * Quick peek at message type without full decoding
122
+ */
123
+ export function peekMessageType(data) {
124
+ try {
125
+ const decompressed = decompress(data);
126
+ return getKiwiMessageType(decompressed);
127
+ }
128
+ catch {
129
+ return null;
130
+ }
131
+ }
132
+ /**
133
+ * Create a NODE_CHANGES message
134
+ */
135
+ export function createNodeChangesMessage(sessionID, reconnectSequenceNumber, nodeChanges, ackID = 1) {
136
+ return {
137
+ type: 'NODE_CHANGES',
138
+ sessionID,
139
+ ackID,
140
+ reconnectSequenceNumber,
141
+ nodeChanges
142
+ };
143
+ }
144
+ /**
145
+ * Create a node change for a new shape
146
+ */
147
+ export function createNodeChange(opts) {
148
+ const change = {
149
+ guid: { sessionID: opts.sessionID, localID: opts.localID },
150
+ phase: 'CREATED',
151
+ parentIndex: {
152
+ guid: { sessionID: opts.parentSessionID, localID: opts.parentLocalID },
153
+ position: opts.position || '!'
154
+ },
155
+ type: opts.type,
156
+ name: opts.name,
157
+ visible: true,
158
+ opacity: opts.opacity ?? 1.0,
159
+ size: { x: opts.width, y: opts.height },
160
+ transform: {
161
+ m00: 1,
162
+ m01: 0,
163
+ m02: opts.x,
164
+ m10: 0,
165
+ m11: 1,
166
+ m12: opts.y
167
+ }
168
+ };
169
+ if (opts.fill) {
170
+ const color = typeof opts.fill === 'string' ? parseColor(opts.fill) : opts.fill;
171
+ change.fillPaints = [
172
+ {
173
+ type: 'SOLID',
174
+ color,
175
+ opacity: 1.0,
176
+ visible: true,
177
+ blendMode: 'NORMAL'
178
+ }
179
+ ];
180
+ }
181
+ if (opts.stroke) {
182
+ const color = typeof opts.stroke === 'string' ? parseColor(opts.stroke) : opts.stroke;
183
+ change.strokePaints = [
184
+ {
185
+ type: 'SOLID',
186
+ color,
187
+ opacity: 1.0,
188
+ visible: true,
189
+ blendMode: 'NORMAL'
190
+ }
191
+ ];
192
+ change.strokeWeight = opts.strokeWeight ?? 1;
193
+ }
194
+ if (opts.cornerRadius !== undefined) {
195
+ change.cornerRadius = opts.cornerRadius;
196
+ }
197
+ return change;
198
+ }
199
+ /**
200
+ * Encode a varint (variable-length integer)
201
+ */
202
+ function encodeVarint(value) {
203
+ const bytes = [];
204
+ while (value > 0x7f) {
205
+ bytes.push((value & 0x7f) | 0x80);
206
+ value >>>= 7;
207
+ }
208
+ bytes.push(value);
209
+ return bytes;
210
+ }
211
+ /**
212
+ * Encode a Paint with optional variable binding
213
+ *
214
+ * Figma's variable binding format (discovered via WS traffic analysis):
215
+ * - Field 21 = 1 (binding type)
216
+ * - Field 4 = 1 (flag)
217
+ * - Raw sessionID varint (no field number)
218
+ * - Raw localID varint (no field number)
219
+ * - Terminators: 00 00 02 03 03 04 00 00
220
+ */
221
+ export function encodePaintWithVariableBinding(paint, variableSessionID, variableLocalID) {
222
+ if (!compiledSchema) {
223
+ throw new Error('Codec not initialized. Call initCodec() first.');
224
+ }
225
+ const { colorVariableBinding: _, ...basePaint } = paint;
226
+ const baseBytes = compiledSchema.encodePaint(basePaint);
227
+ const baseArray = Array.from(baseBytes);
228
+ // Remove trailing 00
229
+ if (baseArray[baseArray.length - 1] === 0) {
230
+ baseArray.pop();
231
+ }
232
+ // Add variable binding in Figma's exact format:
233
+ // Field 21 (0x15) = 1 (binding type)
234
+ baseArray.push(0x15, 0x01);
235
+ // Field 4 = 1 (flag)
236
+ baseArray.push(0x04, 0x01);
237
+ // Raw varints: sessionID, localID (no field numbers!)
238
+ baseArray.push(...encodeVarint(variableSessionID));
239
+ baseArray.push(...encodeVarint(variableLocalID));
240
+ // Terminators observed in Figma traffic
241
+ baseArray.push(0x00, 0x00, 0x02, 0x03, 0x03, 0x04);
242
+ // Final terminators
243
+ baseArray.push(0x00, 0x00);
244
+ return new Uint8Array(baseArray);
245
+ }
246
+ /**
247
+ * Parse a variable ID string (e.g., "VariableID:38448:122296")
248
+ * Returns sessionID and localID
249
+ */
250
+ export function parseVariableId(variableId) {
251
+ const match = variableId.match(/VariableID:(\d+):(\d+)/);
252
+ if (!match)
253
+ return null;
254
+ return {
255
+ sessionID: parseInt(match[1] ?? '0', 10),
256
+ localID: parseInt(match[2] ?? '0', 10)
257
+ };
258
+ }
259
+ /**
260
+ * Encode a NodeChange with variable bindings in fillPaints and/or strokePaints
261
+ * This is needed because kiwi-schema cannot produce Figma's exact variable binding format
262
+ */
263
+ export function encodeNodeChangeWithVariables(nodeChange) {
264
+ if (!compiledSchema) {
265
+ throw new Error('Codec not initialized. Call initCodec() first.');
266
+ }
267
+ const hasFillBinding = nodeChange.fillPaints?.some((p) => p.colorVariableBinding);
268
+ const hasStrokeBinding = nodeChange.strokePaints?.some((p) => p.colorVariableBinding);
269
+ if (!hasFillBinding && !hasStrokeBinding) {
270
+ return compiledSchema.encodeNodeChange(nodeChange);
271
+ }
272
+ // Create a copy without variable bindings for base encoding
273
+ const cleanNodeChange = { ...nodeChange };
274
+ if (cleanNodeChange.fillPaints) {
275
+ cleanNodeChange.fillPaints = cleanNodeChange.fillPaints.map(({ colorVariableBinding: _, ...rest }) => rest);
276
+ }
277
+ if (cleanNodeChange.strokePaints) {
278
+ cleanNodeChange.strokePaints = cleanNodeChange.strokePaints.map(({ colorVariableBinding: _, ...rest }) => rest);
279
+ }
280
+ // Encode clean version
281
+ const baseBytes = compiledSchema.encodeNodeChange(cleanNodeChange);
282
+ let hex = Buffer.from(baseBytes).toString('hex');
283
+ // Inject fill variable binding (field 38 = 0x26)
284
+ const fillBinding = nodeChange.fillPaints?.[0]?.colorVariableBinding;
285
+ if (hasFillBinding && fillBinding) {
286
+ hex = injectVariableBinding(hex, '2601', fillBinding);
287
+ }
288
+ // Inject stroke variable binding (field 39 = 0x27)
289
+ const strokeBinding = nodeChange.strokePaints?.[0]?.colorVariableBinding;
290
+ if (hasStrokeBinding && strokeBinding) {
291
+ hex = injectVariableBinding(hex, '2701', strokeBinding);
292
+ }
293
+ return new Uint8Array(hex.match(/.{2}/g)?.map((b) => parseInt(b, 16)) ?? []);
294
+ }
295
+ /**
296
+ * Inject variable binding into a paint at the specified marker
297
+ */
298
+ function injectVariableBinding(hex, marker, binding) {
299
+ const markerIdx = hex.indexOf(marker);
300
+ if (markerIdx === -1)
301
+ return hex;
302
+ // Find visible=true pattern (04 01) after the marker
303
+ const visiblePattern = '0401';
304
+ let patternIdx = hex.indexOf(visiblePattern, markerIdx);
305
+ if (patternIdx === -1)
306
+ return hex;
307
+ // Move past 0401 to find where to insert
308
+ let insertPoint = patternIdx + visiblePattern.length;
309
+ // Check if blendMode follows (05 01)
310
+ if (hex.slice(insertPoint, insertPoint + 4) === '0501') {
311
+ insertPoint += 4;
312
+ }
313
+ // Build variable binding bytes
314
+ const varBytes = [
315
+ 0x15,
316
+ 0x01, // Field 21 (variableBinding) = 1
317
+ 0x04,
318
+ 0x01, // Nested field 4 = 1
319
+ ...encodeVarint(binding.variableID.sessionID),
320
+ ...encodeVarint(binding.variableID.localID),
321
+ 0x00,
322
+ 0x00,
323
+ 0x02,
324
+ 0x03,
325
+ 0x03,
326
+ 0x04,
327
+ 0x00,
328
+ 0x00 // Terminators
329
+ ];
330
+ const varHex = Buffer.from(varBytes).toString('hex');
331
+ const beforeVar = hex.slice(0, insertPoint);
332
+ // Skip original paint terminator (00) - our varHex includes terminators
333
+ let afterIdx = insertPoint;
334
+ if (hex.slice(afterIdx, afterIdx + 2) === '00') {
335
+ afterIdx += 2;
336
+ }
337
+ const afterVar = hex.slice(afterIdx);
338
+ return beforeVar + varHex + afterVar;
339
+ }
340
+ //# sourceMappingURL=codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/kiwi/codec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { SceneGraph } from '../scene-graph.js';
2
+ export declare function parseFigFile(buffer: ArrayBuffer): Promise<SceneGraph>;
3
+ export declare function readFigFile(file: File): Promise<SceneGraph>;
4
+ //# sourceMappingURL=fig-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fig-file.d.ts","sourceRoot":"","sources":["../../src/kiwi/fig-file.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AA2NhD,wBAAsB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAM3E;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAajE"}