@pixerate/editor-react 0.15.0 → 0.17.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 (54) hide show
  1. package/README.md +6 -2
  2. package/dist/canvas/index.cjs +484 -119
  3. package/dist/canvas/index.cjs.map +1 -1
  4. package/dist/canvas/index.d.cts +122 -3
  5. package/dist/canvas/index.d.ts +122 -3
  6. package/dist/canvas/index.js +380 -0
  7. package/dist/canvas/index.js.map +1 -1
  8. package/dist/chunk-I3E4KSA2.js +515 -0
  9. package/dist/chunk-I3E4KSA2.js.map +1 -0
  10. package/dist/chunk-JR5ZBDR7.js +2012 -0
  11. package/dist/chunk-JR5ZBDR7.js.map +1 -0
  12. package/dist/chunk-XWFU2CSG.js +167 -0
  13. package/dist/chunk-XWFU2CSG.js.map +1 -0
  14. package/dist/chunk-ZU54BMDC.js +2128 -0
  15. package/dist/chunk-ZU54BMDC.js.map +1 -0
  16. package/dist/generation/index.cjs +525 -0
  17. package/dist/generation/index.cjs.map +1 -0
  18. package/dist/generation/index.d.cts +124 -0
  19. package/dist/generation/index.d.ts +124 -0
  20. package/dist/generation/index.js +19 -0
  21. package/dist/generation/index.js.map +1 -0
  22. package/dist/image-editor/index.cjs +988 -337
  23. package/dist/image-editor/index.cjs.map +1 -1
  24. package/dist/image-editor/index.d.cts +92 -2
  25. package/dist/image-editor/index.d.ts +92 -2
  26. package/dist/image-editor/index.js +17 -3
  27. package/dist/index.cjs +3628 -754
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.d.cts +226 -5
  30. package/dist/index.d.ts +226 -5
  31. package/dist/index.js +868 -77
  32. package/dist/index.js.map +1 -1
  33. package/dist/persistence/index.cjs +191 -0
  34. package/dist/persistence/index.cjs.map +1 -0
  35. package/dist/persistence/index.d.cts +77 -0
  36. package/dist/persistence/index.d.ts +77 -0
  37. package/dist/persistence/index.js +9 -0
  38. package/dist/persistence/index.js.map +1 -0
  39. package/dist/spreadsheet/index.cjs +949 -111
  40. package/dist/spreadsheet/index.cjs.map +1 -1
  41. package/dist/spreadsheet/index.d.cts +121 -7
  42. package/dist/spreadsheet/index.d.ts +121 -7
  43. package/dist/spreadsheet/index.js +11 -1
  44. package/dist/tokens/index.cjs +395 -0
  45. package/dist/tokens/index.cjs.map +1 -0
  46. package/dist/tokens/index.d.cts +54 -0
  47. package/dist/tokens/index.d.ts +54 -0
  48. package/dist/tokens/index.js +375 -0
  49. package/dist/tokens/index.js.map +1 -0
  50. package/package.json +26 -2
  51. package/dist/chunk-LPFZMZ3L.js +0 -1461
  52. package/dist/chunk-LPFZMZ3L.js.map +0 -1
  53. package/dist/chunk-QVQYYHJ5.js +0 -1161
  54. package/dist/chunk-QVQYYHJ5.js.map +0 -1
@@ -791,6 +791,9 @@ function useCanvasArrange(options) {
791
791
  get rectOptions() {
792
792
  return optionsRef.current.rectOptions;
793
793
  },
794
+ get autoLayout() {
795
+ return optionsRef.current.autoLayout;
796
+ },
794
797
  onGuidesChange: setGuides
795
798
  }),
796
799
  []
@@ -1168,6 +1171,38 @@ import {
1168
1171
  pointInRings,
1169
1172
  pointInMultiPolygon
1170
1173
  } from "@pixerate/editor/canvas";
1174
+ import {
1175
+ offsetShapeNodes,
1176
+ outlineShapeNodeStrokes,
1177
+ canOffsetShapeNodes,
1178
+ canOutlineShapeNodeStrokes,
1179
+ applyShapeReplacement,
1180
+ hasVisibleStroke,
1181
+ shapeToBezierPath,
1182
+ shapeNodeToBezierPath,
1183
+ pathBoolean,
1184
+ unitePaths,
1185
+ intersectPaths,
1186
+ subtractPaths,
1187
+ excludePaths,
1188
+ dividePaths,
1189
+ normalizeBezierPath,
1190
+ bezierPathArea,
1191
+ offsetPath,
1192
+ outlineStroke,
1193
+ strokeOutlineRings,
1194
+ dashContours,
1195
+ toBezierPath,
1196
+ bezierPathToSvg,
1197
+ transformBezierPath,
1198
+ bezierPathBounds,
1199
+ bezierPathSignedArea,
1200
+ bezierPathLength,
1201
+ bezierPathPointAtLength,
1202
+ pointInBezierPath,
1203
+ distanceToBezierPath,
1204
+ countPathSegments
1205
+ } from "@pixerate/editor/canvas";
1171
1206
  import {
1172
1207
  getLayoutedNodes as getLayoutedNodes2,
1173
1208
  ensureLayout as ensureLayout2,
@@ -1203,8 +1238,282 @@ import {
1203
1238
  blendLayout,
1204
1239
  connectedOnly
1205
1240
  } from "@pixerate/editor/canvas";
1241
+ import {
1242
+ layoutFrame,
1243
+ layoutAll,
1244
+ layoutUp,
1245
+ layoutUpMany,
1246
+ applyConstraints,
1247
+ getAutoLayout,
1248
+ getChildLayout,
1249
+ getLayoutSizing,
1250
+ getAutoLayoutGrid,
1251
+ getAutoLayoutInsertTarget,
1252
+ getFlowChildren,
1253
+ getLayoutParent,
1254
+ isAutoLayoutFrame,
1255
+ makeSizingCoherent,
1256
+ moveLayoutChild,
1257
+ mergeNodeUpdates,
1258
+ relayoutUpdates,
1259
+ resolvePadding,
1260
+ clampLayoutSize,
1261
+ createCanvasAutoLayoutController as createCanvasAutoLayoutController2,
1262
+ AUTO_LAYOUT_DATA_KEY,
1263
+ CHILD_LAYOUT_DATA_KEY
1264
+ } from "@pixerate/editor/canvas";
1265
+
1266
+ // src/canvas/useCanvasAutoLayout.ts
1267
+ import { useLayoutEffect, useMemo as useMemo4, useRef as useRef8, useState as useState4 } from "react";
1268
+ import {
1269
+ createCanvasAutoLayoutController
1270
+ } from "@pixerate/editor/canvas";
1271
+ function useCanvasAutoLayout(options) {
1272
+ const [guides, setGuides] = useState4([]);
1273
+ const nodesRef = useRef8(options.nodes);
1274
+ nodesRef.current = options.nodes;
1275
+ const optionsRef = useRef8(options);
1276
+ optionsRef.current = options;
1277
+ const controller = useMemo4(
1278
+ () => createCanvasAutoLayoutController({
1279
+ getNodes: () => nodesRef.current,
1280
+ setNodes: (next) => {
1281
+ nodesRef.current = next;
1282
+ optionsRef.current.setNodes(next);
1283
+ },
1284
+ get history() {
1285
+ return optionsRef.current.history;
1286
+ },
1287
+ get enabled() {
1288
+ return optionsRef.current.enabled;
1289
+ },
1290
+ get dragReorder() {
1291
+ return optionsRef.current.dragReorder;
1292
+ },
1293
+ get measure() {
1294
+ return optionsRef.current.measure;
1295
+ },
1296
+ get rectOptions() {
1297
+ return optionsRef.current.rectOptions;
1298
+ },
1299
+ onGuidesChange: setGuides
1300
+ }),
1301
+ []
1302
+ );
1303
+ useLayoutEffect(() => {
1304
+ if (controller.hasPending) controller.flush();
1305
+ }, [options.nodes, controller]);
1306
+ return useMemo4(
1307
+ () => ({
1308
+ ...controller,
1309
+ /** Drop marker of the active reorder drag (flow coordinates). */
1310
+ guides,
1311
+ get hasPending() {
1312
+ return controller.hasPending;
1313
+ }
1314
+ }),
1315
+ [controller, guides]
1316
+ );
1317
+ }
1318
+
1319
+ // src/canvas/useCanvasTokens.ts
1320
+ import { useCallback as useCallback8, useEffect as useEffect5, useRef as useRef9, useSyncExternalStore as useSyncExternalStore2 } from "react";
1321
+ import {
1322
+ bindCanvasToken,
1323
+ detachTokenBindings,
1324
+ getEffectiveTokenModes,
1325
+ resolveCanvasTokens,
1326
+ setCanvasTokenMode
1327
+ } from "@pixerate/editor/canvas";
1328
+ function useCanvasTokens(options) {
1329
+ const { store, nodes, setNodes, modes, properties } = options;
1330
+ const state = useSyncExternalStore2(store.subscribe, store.getState, store.getState);
1331
+ const latest = useRef9({ nodes, setNodes, modes, properties });
1332
+ latest.current = { nodes, setNodes, modes, properties };
1333
+ const opts = () => ({ modes: latest.current.modes, properties: latest.current.properties });
1334
+ useEffect5(
1335
+ () => store.subscribe((event) => {
1336
+ if (event.deletedVariableIds.length === 0) return;
1337
+ latest.current.setNodes((prev) => detachTokenBindings(prev, event.previous, event.deletedVariableIds, opts()));
1338
+ }),
1339
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1340
+ [store]
1341
+ );
1342
+ const modesKey = JSON.stringify(modes ?? {});
1343
+ useEffect5(() => {
1344
+ const next = resolveCanvasTokens(nodes, state, opts());
1345
+ if (next !== nodes) setNodes(next);
1346
+ }, [nodes, state, modesKey, properties]);
1347
+ const bind = useCallback8(
1348
+ (ids, propertyKey, variableId) => {
1349
+ const next = bindCanvasToken(latest.current.nodes, ids, propertyKey, variableId, store.getState(), opts());
1350
+ if (next !== latest.current.nodes) latest.current.setNodes(next);
1351
+ },
1352
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1353
+ [store]
1354
+ );
1355
+ const setMode = useCallback8(
1356
+ (ids, collectionId, modeId) => {
1357
+ const next = setCanvasTokenMode(latest.current.nodes, ids, collectionId, modeId, store.getState(), opts());
1358
+ if (next !== latest.current.nodes) latest.current.setNodes(next);
1359
+ },
1360
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1361
+ [store]
1362
+ );
1363
+ const modesOf = useCallback8(
1364
+ (nodeId) => {
1365
+ const node = latest.current.nodes.find((n) => n.id === nodeId);
1366
+ return node ? getEffectiveTokenModes(node, latest.current.nodes, store.getState(), opts()) : {};
1367
+ },
1368
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1369
+ [store]
1370
+ );
1371
+ return { state, bind, setMode, modesOf };
1372
+ }
1373
+
1374
+ // src/canvas/TokenBindingPicker.tsx
1375
+ import {
1376
+ bindCanvasToken as bindCanvasToken2,
1377
+ getBindableTokenProperties,
1378
+ getEffectiveTokenModes as getEffectiveTokenModes2,
1379
+ getNodeTokenBindings,
1380
+ getNodeTokenModes,
1381
+ setCanvasTokenMode as setCanvasTokenMode2,
1382
+ getTokensForProperty
1383
+ } from "@pixerate/editor/canvas";
1384
+ import { getCurrentMode, resolveToken } from "@pixerate/editor/tokens";
1385
+ import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
1386
+ function TokenBindingPicker({
1387
+ state,
1388
+ nodes,
1389
+ selectedIds,
1390
+ onChange,
1391
+ options = {},
1392
+ properties,
1393
+ onError,
1394
+ className = ""
1395
+ }) {
1396
+ const selected = nodes.filter((n) => selectedIds.includes(n.id));
1397
+ const first = selected[0];
1398
+ if (!first) return null;
1399
+ let rows = getBindableTokenProperties(first, options);
1400
+ if (properties) rows = properties.map((key) => rows.find((p) => p.key === key)).filter((p) => !!p);
1401
+ const modes = getEffectiveTokenModes2(first, nodes, state, options);
1402
+ return /* @__PURE__ */ jsxs4("div", { "data-token-binding-picker": "", className: `flex flex-col gap-1 text-xs text-foreground ${className}`, children: [
1403
+ rows.map((property) => {
1404
+ const ids = new Set(selected.map((n) => getNodeTokenBindings(n)[property.key] ?? ""));
1405
+ const value = ids.size === 1 ? [...ids][0] : "__mixed";
1406
+ const candidates = getTokensForProperty(state, property, first);
1407
+ const resolved = value && value !== "__mixed" ? resolveToken(state, value, modes) : null;
1408
+ return /* @__PURE__ */ jsxs4("label", { className: "flex items-center gap-2", "data-token-property": property.key, children: [
1409
+ /* @__PURE__ */ jsx4("span", { className: "w-28 shrink-0 text-muted-foreground", children: property.label }),
1410
+ /* @__PURE__ */ jsxs4(
1411
+ "select",
1412
+ {
1413
+ "aria-label": `${property.label} variable`,
1414
+ className: "min-w-0 flex-1 rounded border border-border bg-background px-1 py-0.5 text-xs",
1415
+ value,
1416
+ onChange: (e) => {
1417
+ const id = e.currentTarget.value || null;
1418
+ try {
1419
+ onChange(bindCanvasToken2(nodes, selectedIds, property.key, id, state, options));
1420
+ } catch (error) {
1421
+ onError?.(error);
1422
+ }
1423
+ },
1424
+ children: [
1425
+ value === "__mixed" ? /* @__PURE__ */ jsx4("option", { value: "__mixed", children: "Mixed" }) : null,
1426
+ /* @__PURE__ */ jsx4("option", { value: "", children: "None" }),
1427
+ candidates.map((v) => {
1428
+ const collection = state.collections.find((c) => c.id === v.collectionId);
1429
+ return /* @__PURE__ */ jsxs4("option", { value: v.id, children: [
1430
+ v.name,
1431
+ collection && state.collections.length > 1 ? ` (${collection.name})` : ""
1432
+ ] }, v.id);
1433
+ })
1434
+ ]
1435
+ }
1436
+ ),
1437
+ /* @__PURE__ */ jsx4("span", { className: "w-16 shrink-0 truncate text-right text-muted-foreground", "data-token-resolved": "", children: resolved?.ok ? property.type === "color" ? /* @__PURE__ */ jsx4(
1438
+ "span",
1439
+ {
1440
+ className: "inline-block h-3 w-3 rounded border border-border align-middle",
1441
+ style: { background: String(resolved.value) },
1442
+ title: String(resolved.value)
1443
+ }
1444
+ ) : String(resolved.value) : resolved ? /* @__PURE__ */ jsx4("span", { title: resolved.message, children: "\u26A0" }) : null })
1445
+ ] }, property.key);
1446
+ }),
1447
+ state.collections.length === 0 ? /* @__PURE__ */ jsx4("p", { className: "text-muted-foreground", children: "No variables yet." }) : null
1448
+ ] });
1449
+ }
1450
+ function TokenModeSwitcher({
1451
+ state,
1452
+ nodes,
1453
+ nodeIds,
1454
+ onChange,
1455
+ options = {},
1456
+ showSingleMode = false,
1457
+ className = ""
1458
+ }) {
1459
+ const first = nodes.find((n) => nodeIds.includes(n.id));
1460
+ if (!first) return null;
1461
+ const own = getNodeTokenModes(first);
1462
+ const parent = first.parentId ? nodes.find((n) => n.id === first.parentId) : void 0;
1463
+ const inherited = parent ? getEffectiveTokenModes2(parent, nodes, state, options) : { ...options.modes };
1464
+ const collections = state.collections.filter((c) => showSingleMode || c.modes.length > 1);
1465
+ return /* @__PURE__ */ jsx4("div", { "data-token-mode-switcher": "", className: `flex flex-col gap-1 text-xs text-foreground ${className}`, children: collections.map((collection) => {
1466
+ const auto = getCurrentMode(collection, inherited);
1467
+ const explicit = collection.modes.some((m) => m.id === own[collection.id]) ? own[collection.id] : "";
1468
+ return /* @__PURE__ */ jsxs4("label", { className: "flex items-center gap-2", "data-token-collection": collection.id, children: [
1469
+ /* @__PURE__ */ jsx4("span", { className: "w-28 shrink-0 truncate text-muted-foreground", children: collection.name }),
1470
+ /* @__PURE__ */ jsxs4(
1471
+ "select",
1472
+ {
1473
+ "aria-label": `${collection.name} mode`,
1474
+ className: "min-w-0 flex-1 rounded border border-border bg-background px-1 py-0.5 text-xs",
1475
+ value: explicit,
1476
+ onChange: (e) => onChange(setCanvasTokenMode2(nodes, nodeIds, collection.id, e.currentTarget.value || null, state, options)),
1477
+ children: [
1478
+ /* @__PURE__ */ jsxs4("option", { value: "", children: [
1479
+ "Auto (",
1480
+ auto.name,
1481
+ ")"
1482
+ ] }),
1483
+ collection.modes.map((m) => /* @__PURE__ */ jsx4("option", { value: m.id, children: m.name }, m.id))
1484
+ ]
1485
+ }
1486
+ )
1487
+ ] }, collection.id);
1488
+ }) });
1489
+ }
1490
+
1491
+ // src/canvas/index.ts
1492
+ import {
1493
+ bindCanvasToken as bindCanvasToken3,
1494
+ setCanvasTokenMode as setCanvasTokenMode3,
1495
+ resolveCanvasTokens as resolveCanvasTokens2,
1496
+ detachTokenBindings as detachTokenBindings2,
1497
+ pruneCanvasTokenModes,
1498
+ inspectNodeTokens,
1499
+ getNodeTokenBindings as getNodeTokenBindings2,
1500
+ getNodeTokenModes as getNodeTokenModes2,
1501
+ getEffectiveTokenModes as getEffectiveTokenModes3,
1502
+ getBindableTokenProperties as getBindableTokenProperties2,
1503
+ getCanvasTokenProperty,
1504
+ getTokenPropertyScope,
1505
+ getTokensForProperty as getTokensForProperty2,
1506
+ readNodeStyleProperty,
1507
+ writeNodeStyleProperty,
1508
+ CANVAS_TOKEN_PROPERTIES,
1509
+ TOKEN_BINDINGS_DATA_KEY,
1510
+ TOKEN_MODES_DATA_KEY
1511
+ } from "@pixerate/editor/canvas";
1206
1512
  export {
1513
+ AUTO_LAYOUT_DATA_KEY,
1207
1514
  AgentPresenceLayer,
1515
+ CANVAS_TOKEN_PROPERTIES,
1516
+ CHILD_LAYOUT_DATA_KEY,
1208
1517
  CONNECTION_LINE_TYPES,
1209
1518
  CanvasGuidesLayer,
1210
1519
  CanvasScenesStore2 as CanvasScenesStore,
@@ -1216,34 +1525,57 @@ export {
1216
1525
  SHAPE_NODE_TYPE,
1217
1526
  SHAPE_OPERATIONS,
1218
1527
  ShapeNode,
1528
+ TOKEN_BINDINGS_DATA_KEY,
1529
+ TOKEN_MODES_DATA_KEY,
1530
+ TokenBindingPicker,
1531
+ TokenModeSwitcher,
1219
1532
  alignNodes,
1533
+ applyConstraints,
1220
1534
  applyNodeUpdates,
1221
1535
  applyShapeCombination,
1536
+ applyShapeReplacement,
1537
+ bezierPathArea,
1538
+ bezierPathBounds,
1539
+ bezierPathLength,
1540
+ bezierPathPointAtLength,
1541
+ bezierPathSignedArea,
1542
+ bezierPathToSvg,
1543
+ bindCanvasToken3 as bindCanvasToken,
1222
1544
  blendLayout,
1223
1545
  boundsOf,
1224
1546
  calculateDagreReflowDisplacement,
1225
1547
  calculateDirectionalDisplacement2 as calculateDirectionalDisplacement,
1226
1548
  canCombineShapeNodes,
1549
+ canOffsetShapeNodes,
1550
+ canOutlineShapeNodeStrokes,
1227
1551
  canvasHeight,
1228
1552
  centerNodes2 as centerNodes,
1229
1553
  centre,
1554
+ clampLayoutSize,
1230
1555
  combineShapeNodes,
1231
1556
  computeNodesBoundingBox,
1232
1557
  computeSnapGuides,
1233
1558
  connectedOnly,
1559
+ countPathSegments,
1234
1560
  createBezierTrajectory,
1561
+ createCanvasAutoLayoutController2 as createCanvasAutoLayoutController,
1235
1562
  createCanvasScenesStore,
1236
1563
  createFanOutTrajectory2 as createFanOutTrajectory,
1237
1564
  createGuideIndex,
1238
1565
  createNodeGuideIndex,
1239
1566
  cubicPointAt,
1240
1567
  cubicsToPathData,
1568
+ dashContours,
1241
1569
  defaultEasing,
1570
+ detachTokenBindings2 as detachTokenBindings,
1571
+ distanceToBezierPath,
1242
1572
  distributeNodes,
1573
+ dividePaths,
1243
1574
  dividePolygons,
1244
1575
  ensureLayout2 as ensureLayout,
1245
1576
  estimateCanvasHeight,
1246
1577
  estimateNodeSize,
1578
+ excludePaths,
1247
1579
  findConnectorSnap,
1248
1580
  fitCubicRun,
1249
1581
  fitCubics,
@@ -1254,18 +1586,36 @@ export {
1254
1586
  flattenSvgPath,
1255
1587
  flowSide,
1256
1588
  getAbsolutePosition,
1589
+ getAutoLayout,
1590
+ getAutoLayoutGrid,
1591
+ getAutoLayoutInsertTarget,
1592
+ getBindableTokenProperties2 as getBindableTokenProperties,
1593
+ getCanvasTokenProperty,
1257
1594
  getCenteredNodePosition2 as getCenteredNodePosition,
1595
+ getChildLayout,
1596
+ getEffectiveTokenModes3 as getEffectiveTokenModes,
1597
+ getFlowChildren,
1598
+ getLayoutParent,
1599
+ getLayoutSizing,
1258
1600
  getLayoutedNodes2 as getLayoutedNodes,
1259
1601
  getNodeRect,
1260
1602
  getNodeShape,
1261
1603
  getNodeSize,
1604
+ getNodeTokenBindings2 as getNodeTokenBindings,
1605
+ getNodeTokenModes2 as getNodeTokenModes,
1262
1606
  getResizingNodeRect,
1263
1607
  getShapeRenderData2 as getShapeRenderData,
1264
1608
  getShapeSvg,
1609
+ getTokenPropertyScope,
1610
+ getTokensForProperty2 as getTokensForProperty,
1265
1611
  handlePoint,
1612
+ hasVisibleStroke,
1266
1613
  inferResizeHandle,
1614
+ inspectNodeTokens,
1615
+ intersectPaths,
1267
1616
  intersectPolygons,
1268
1617
  invertNodeUpdates,
1618
+ isAutoLayoutFrame,
1269
1619
  isEventFromTextInput3 as isEventFromTextInput,
1270
1620
  isLocked,
1271
1621
  isMeasureModifierHeld2 as isMeasureModifierHeld,
@@ -1274,42 +1624,64 @@ export {
1274
1624
  isStraightCubic,
1275
1625
  isValidCanvasNode,
1276
1626
  isValidUrl2 as isValidUrl,
1627
+ layoutAll,
1277
1628
  layoutBounds,
1629
+ layoutFrame,
1630
+ layoutUp,
1631
+ layoutUpMany,
1278
1632
  linearPositionTrajectory2 as linearPositionTrajectory,
1279
1633
  linearTrajectory,
1280
1634
  lockNodes,
1635
+ makeSizingCoherent,
1281
1636
  matchArrangeShortcut2 as matchArrangeShortcut,
1282
1637
  matchSize,
1283
1638
  measureBetween,
1284
1639
  measureLabel,
1285
1640
  measureSelection2 as measureSelection,
1286
1641
  measureToLine,
1642
+ mergeNodeUpdates,
1643
+ moveLayoutChild,
1287
1644
  multiPolygonArea,
1288
1645
  multiPolygonBounds,
1289
1646
  nearestHandlePositions,
1647
+ normalizeBezierPath,
1648
+ offsetPath,
1649
+ offsetShapeNodes,
1290
1650
  oppositePosition,
1651
+ outlineShapeNodeStrokes,
1652
+ outlineStroke,
1291
1653
  overlaps,
1292
1654
  parseCanvasClipboardData2 as parseCanvasClipboardData,
1293
1655
  parseCanvasScenes,
1294
1656
  parseSvgPath,
1657
+ pathBoolean,
1295
1658
  placeBeside2 as placeBeside,
1659
+ pointInBezierPath,
1296
1660
  pointInMultiPolygon,
1297
1661
  pointInRings,
1298
1662
  polygonArea,
1299
1663
  polygonBoolean,
1300
1664
  polygonToSvgPath,
1301
1665
  positionToSide,
1666
+ pruneCanvasTokenModes,
1667
+ readNodeStyleProperty,
1302
1668
  readStyleSize,
1303
1669
  realClock,
1670
+ relayoutUpdates,
1304
1671
  remapPastedNodes2 as remapPastedNodes,
1305
1672
  reorderNodes,
1306
1673
  repositionNodesTo,
1307
1674
  resizeHandleAxes,
1675
+ resolveCanvasTokens2 as resolveCanvasTokens,
1676
+ resolvePadding,
1308
1677
  revertShapeCombination,
1309
1678
  ringSignedArea,
1310
1679
  runMultiNodeTransition2 as runMultiNodeTransition,
1311
1680
  serializeCanvasNodes2 as serializeCanvasNodes,
1681
+ setCanvasTokenMode3 as setCanvasTokenMode,
1682
+ shapeNodeToBezierPath,
1312
1683
  shapeNodeToPolygon,
1684
+ shapeToBezierPath,
1313
1685
  shapeToPolygon,
1314
1686
  sideToPosition,
1315
1687
  simplifyRing,
@@ -1317,12 +1689,18 @@ export {
1317
1689
  snapNodeResize,
1318
1690
  snapResize,
1319
1691
  snapToGrid,
1692
+ strokeOutlineRings,
1693
+ subtractPaths,
1320
1694
  subtractPolygons,
1695
+ toBezierPath,
1321
1696
  toggleLockNodes,
1697
+ transformBezierPath,
1322
1698
  unionPolygons,
1699
+ unitePaths,
1323
1700
  unlockNodes,
1324
1701
  useCanvasArrange,
1325
1702
  useCanvasArrangeShortcuts,
1703
+ useCanvasAutoLayout,
1326
1704
  useCanvasClipboard,
1327
1705
  useCanvasDocking,
1328
1706
  useCanvasExplosion,
@@ -1331,8 +1709,10 @@ export {
1331
1709
  useCanvasMeasure,
1332
1710
  useCanvasScenes,
1333
1711
  useCanvasShortcuts,
1712
+ useCanvasTokens,
1334
1713
  useStreamingCanvas,
1335
1714
  withStyleSize,
1715
+ writeNodeStyleProperty,
1336
1716
  xorPolygons
1337
1717
  };
1338
1718
  //# sourceMappingURL=index.js.map