@tldraw/editor 3.15.0-canary.c4b9179d0b38 → 3.15.0-canary.c59a4cbb7d60

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 (109) hide show
  1. package/dist-cjs/index.d.ts +13 -3
  2. package/dist-cjs/index.js +3 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/components/SVGContainer.js +1 -1
  5. package/dist-cjs/lib/components/SVGContainer.js.map +2 -2
  6. package/dist-cjs/lib/components/default-components/DefaultBrush.js +1 -1
  7. package/dist-cjs/lib/components/default-components/DefaultBrush.js.map +2 -2
  8. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +1 -1
  9. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
  10. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js +1 -1
  11. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js.map +2 -2
  12. package/dist-cjs/lib/components/default-components/DefaultCursor.js +1 -1
  13. package/dist-cjs/lib/components/default-components/DefaultCursor.js.map +2 -2
  14. package/dist-cjs/lib/components/default-components/DefaultGrid.js +1 -1
  15. package/dist-cjs/lib/components/default-components/DefaultGrid.js.map +2 -2
  16. package/dist-cjs/lib/components/default-components/DefaultHandles.js +1 -1
  17. package/dist-cjs/lib/components/default-components/DefaultHandles.js.map +2 -2
  18. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js +1 -1
  19. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +2 -2
  20. package/dist-cjs/lib/components/default-components/DefaultSnapIndictor.js +1 -1
  21. package/dist-cjs/lib/components/default-components/DefaultSnapIndictor.js.map +2 -2
  22. package/dist-cjs/lib/components/default-components/DefaultSpinner.js +27 -15
  23. package/dist-cjs/lib/components/default-components/DefaultSpinner.js.map +3 -3
  24. package/dist-cjs/lib/editor/Editor.js +4 -6
  25. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  26. package/dist-cjs/lib/editor/tools/StateNode.js +20 -1
  27. package/dist-cjs/lib/editor/tools/StateNode.js.map +2 -2
  28. package/dist-cjs/lib/hooks/useEditorComponents.js.map +1 -1
  29. package/dist-cjs/lib/license/Watermark.js +2 -2
  30. package/dist-cjs/lib/license/Watermark.js.map +2 -2
  31. package/dist-cjs/lib/primitives/geometry/Arc2d.js +1 -1
  32. package/dist-cjs/lib/primitives/geometry/Arc2d.js.map +2 -2
  33. package/dist-cjs/lib/primitives/geometry/Circle2d.js +1 -1
  34. package/dist-cjs/lib/primitives/geometry/Circle2d.js.map +2 -2
  35. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js +3 -1
  36. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js.map +2 -2
  37. package/dist-cjs/lib/primitives/geometry/Ellipse2d.js +1 -1
  38. package/dist-cjs/lib/primitives/geometry/Ellipse2d.js.map +2 -2
  39. package/dist-cjs/lib/primitives/geometry/geometry-constants.js +2 -2
  40. package/dist-cjs/lib/primitives/geometry/geometry-constants.js.map +2 -2
  41. package/dist-cjs/version.js +3 -3
  42. package/dist-cjs/version.js.map +1 -1
  43. package/dist-esm/index.d.mts +13 -3
  44. package/dist-esm/index.mjs +3 -1
  45. package/dist-esm/index.mjs.map +2 -2
  46. package/dist-esm/lib/components/SVGContainer.mjs +1 -1
  47. package/dist-esm/lib/components/SVGContainer.mjs.map +2 -2
  48. package/dist-esm/lib/components/default-components/DefaultBrush.mjs +1 -1
  49. package/dist-esm/lib/components/default-components/DefaultBrush.mjs.map +2 -2
  50. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +1 -1
  51. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  52. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs +1 -1
  53. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +2 -2
  54. package/dist-esm/lib/components/default-components/DefaultCursor.mjs +1 -1
  55. package/dist-esm/lib/components/default-components/DefaultCursor.mjs.map +2 -2
  56. package/dist-esm/lib/components/default-components/DefaultGrid.mjs +1 -1
  57. package/dist-esm/lib/components/default-components/DefaultGrid.mjs.map +2 -2
  58. package/dist-esm/lib/components/default-components/DefaultHandles.mjs +1 -1
  59. package/dist-esm/lib/components/default-components/DefaultHandles.mjs.map +2 -2
  60. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +1 -1
  61. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
  62. package/dist-esm/lib/components/default-components/DefaultSnapIndictor.mjs +1 -1
  63. package/dist-esm/lib/components/default-components/DefaultSnapIndictor.mjs.map +2 -2
  64. package/dist-esm/lib/components/default-components/DefaultSpinner.mjs +17 -15
  65. package/dist-esm/lib/components/default-components/DefaultSpinner.mjs.map +2 -2
  66. package/dist-esm/lib/editor/Editor.mjs +4 -6
  67. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  68. package/dist-esm/lib/editor/tools/StateNode.mjs +20 -1
  69. package/dist-esm/lib/editor/tools/StateNode.mjs.map +2 -2
  70. package/dist-esm/lib/hooks/useEditorComponents.mjs.map +1 -1
  71. package/dist-esm/lib/license/Watermark.mjs +2 -2
  72. package/dist-esm/lib/license/Watermark.mjs.map +2 -2
  73. package/dist-esm/lib/primitives/geometry/Arc2d.mjs +2 -2
  74. package/dist-esm/lib/primitives/geometry/Arc2d.mjs.map +2 -2
  75. package/dist-esm/lib/primitives/geometry/Circle2d.mjs +2 -2
  76. package/dist-esm/lib/primitives/geometry/Circle2d.mjs.map +2 -2
  77. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs +3 -1
  78. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs.map +2 -2
  79. package/dist-esm/lib/primitives/geometry/Ellipse2d.mjs +2 -2
  80. package/dist-esm/lib/primitives/geometry/Ellipse2d.mjs.map +2 -2
  81. package/dist-esm/lib/primitives/geometry/geometry-constants.mjs +2 -2
  82. package/dist-esm/lib/primitives/geometry/geometry-constants.mjs.map +2 -2
  83. package/dist-esm/version.mjs +3 -3
  84. package/dist-esm/version.mjs.map +1 -1
  85. package/editor.css +17 -4
  86. package/package.json +9 -8
  87. package/src/index.ts +1 -0
  88. package/src/lib/components/SVGContainer.tsx +1 -1
  89. package/src/lib/components/default-components/DefaultBrush.tsx +1 -1
  90. package/src/lib/components/default-components/DefaultCanvas.tsx +1 -1
  91. package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +1 -1
  92. package/src/lib/components/default-components/DefaultCursor.tsx +1 -1
  93. package/src/lib/components/default-components/DefaultGrid.tsx +1 -1
  94. package/src/lib/components/default-components/DefaultHandles.tsx +5 -1
  95. package/src/lib/components/default-components/DefaultShapeIndicator.tsx +1 -1
  96. package/src/lib/components/default-components/DefaultSnapIndictor.tsx +1 -1
  97. package/src/lib/components/default-components/DefaultSpinner.tsx +12 -12
  98. package/src/lib/editor/Editor.ts +6 -5
  99. package/src/lib/editor/tools/StateNode.test.ts +285 -0
  100. package/src/lib/editor/tools/StateNode.ts +27 -1
  101. package/src/lib/hooks/useEditorComponents.tsx +1 -1
  102. package/src/lib/license/Watermark.tsx +2 -2
  103. package/src/lib/primitives/geometry/Arc2d.ts +2 -2
  104. package/src/lib/primitives/geometry/Circle2d.ts +2 -2
  105. package/src/lib/primitives/geometry/CubicBezier2d.ts +4 -1
  106. package/src/lib/primitives/geometry/Ellipse2d.ts +2 -2
  107. package/src/lib/primitives/geometry/geometry-constants.ts +2 -1
  108. package/src/version.ts +3 -3
  109. package/src/lib/test/currentToolIdMask.test.ts +0 -49
@@ -1,19 +1,21 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- function DefaultSpinner() {
3
- return /* @__PURE__ */ jsx("svg", { width: 16, height: 16, viewBox: "0 0 16 16", "aria-hidden": "false", children: /* @__PURE__ */ jsxs("g", { strokeWidth: 2, fill: "none", fillRule: "evenodd", children: [
4
- /* @__PURE__ */ jsx("circle", { strokeOpacity: 0.25, cx: 8, cy: 8, r: 7, stroke: "currentColor" }),
5
- /* @__PURE__ */ jsx("path", { strokeLinecap: "round", d: "M15 8c0-4.5-4.5-7-7-7", stroke: "currentColor", children: /* @__PURE__ */ jsx(
6
- "animateTransform",
7
- {
8
- attributeName: "transform",
9
- type: "rotate",
10
- from: "0 8 8",
11
- to: "360 8 8",
12
- dur: "1s",
13
- repeatCount: "indefinite"
14
- }
15
- ) })
16
- ] }) });
2
+ import classNames from "classnames";
3
+ function DefaultSpinner(props) {
4
+ return /* @__PURE__ */ jsx(
5
+ "svg",
6
+ {
7
+ width: 16,
8
+ height: 16,
9
+ viewBox: "0 0 16 16",
10
+ "aria-hidden": "false",
11
+ ...props,
12
+ className: classNames("tl-spinner", props.className),
13
+ children: /* @__PURE__ */ jsxs("g", { strokeWidth: 2, fill: "none", fillRule: "evenodd", children: [
14
+ /* @__PURE__ */ jsx("circle", { strokeOpacity: 0.25, cx: 8, cy: 8, r: 7, stroke: "currentColor" }),
15
+ /* @__PURE__ */ jsx("path", { strokeLinecap: "round", d: "M15 8c0-4.5-4.5-7-7-7", stroke: "currentColor" })
16
+ ] })
17
+ }
18
+ );
17
19
  }
18
20
  export {
19
21
  DefaultSpinner
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/components/default-components/DefaultSpinner.tsx"],
4
- "sourcesContent": ["/** @public @react */\nexport function DefaultSpinner() {\n\treturn (\n\t\t<svg width={16} height={16} viewBox=\"0 0 16 16\" aria-hidden=\"false\">\n\t\t\t<g strokeWidth={2} fill=\"none\" fillRule=\"evenodd\">\n\t\t\t\t<circle strokeOpacity={0.25} cx={8} cy={8} r={7} stroke=\"currentColor\" />\n\t\t\t\t<path strokeLinecap=\"round\" d=\"M15 8c0-4.5-4.5-7-7-7\" stroke=\"currentColor\">\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\ttype=\"rotate\"\n\t\t\t\t\t\tfrom=\"0 8 8\"\n\t\t\t\t\t\tto=\"360 8 8\"\n\t\t\t\t\t\tdur=\"1s\"\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t/>\n\t\t\t\t</path>\n\t\t\t</g>\n\t\t</svg>\n\t)\n}\n"],
5
- "mappings": "AAIG,SACC,KADD;AAHI,SAAS,iBAAiB;AAChC,SACC,oBAAC,SAAI,OAAO,IAAI,QAAQ,IAAI,SAAQ,aAAY,eAAY,SAC3D,+BAAC,OAAE,aAAa,GAAG,MAAK,QAAO,UAAS,WACvC;AAAA,wBAAC,YAAO,eAAe,MAAM,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,QAAO,gBAAe;AAAA,IACvE,oBAAC,UAAK,eAAc,SAAQ,GAAE,yBAAwB,QAAO,gBAC5D;AAAA,MAAC;AAAA;AAAA,QACA,eAAc;AAAA,QACd,MAAK;AAAA,QACL,MAAK;AAAA,QACL,IAAG;AAAA,QACH,KAAI;AAAA,QACJ,aAAY;AAAA;AAAA,IACb,GACD;AAAA,KACD,GACD;AAEF;",
4
+ "sourcesContent": ["import classNames from 'classnames'\n\n/** @public @react */\nexport function DefaultSpinner(props: React.SVGProps<SVGSVGElement>) {\n\treturn (\n\t\t<svg\n\t\t\twidth={16}\n\t\t\theight={16}\n\t\t\tviewBox=\"0 0 16 16\"\n\t\t\taria-hidden=\"false\"\n\t\t\t{...props}\n\t\t\tclassName={classNames('tl-spinner', props.className)}\n\t\t>\n\t\t\t<g strokeWidth={2} fill=\"none\" fillRule=\"evenodd\">\n\t\t\t\t<circle strokeOpacity={0.25} cx={8} cy={8} r={7} stroke=\"currentColor\" />\n\t\t\t\t<path strokeLinecap=\"round\" d=\"M15 8c0-4.5-4.5-7-7-7\" stroke=\"currentColor\" />\n\t\t\t</g>\n\t\t</svg>\n\t)\n}\n"],
5
+ "mappings": "AAaG,SACC,KADD;AAbH,OAAO,gBAAgB;AAGhB,SAAS,eAAe,OAAsC;AACpE,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAQ;AAAA,MACR,eAAY;AAAA,MACX,GAAG;AAAA,MACJ,WAAW,WAAW,cAAc,MAAM,SAAS;AAAA,MAEnD,+BAAC,OAAE,aAAa,GAAG,MAAK,QAAO,UAAS,WACvC;AAAA,4BAAC,YAAO,eAAe,MAAM,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,QAAO,gBAAe;AAAA,QACvE,oBAAC,UAAK,eAAc,SAAQ,GAAE,yBAAwB,QAAO,gBAAe;AAAA,SAC7E;AAAA;AAAA,EACD;AAEF;",
6
6
  "names": []
7
7
  }
@@ -1513,9 +1513,8 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
1513
1513
  const selectedShapeIds = this.getSelectedShapeIds();
1514
1514
  const firstParentId = selectedShapeIds[0] ? this.getShape(selectedShapeIds[0])?.parentId : null;
1515
1515
  const isSelectedWithinContainer = firstParentId && selectedShapeIds.every((shapeId) => this.getShape(shapeId)?.parentId === firstParentId) && !isPageId(firstParentId);
1516
- const readingOrderShapes = isSelectedWithinContainer ? this._getShapesInReadingOrder(
1517
- this.getCurrentPageShapes().filter((shape2) => shape2.parentId === firstParentId)
1518
- ) : this.getCurrentPageShapesInReadingOrder();
1516
+ const filteredShapes = isSelectedWithinContainer ? this.getCurrentPageShapes().filter((shape2) => shape2.parentId === firstParentId) : this.getCurrentPageShapes().filter((shape2) => isPageId(shape2.parentId));
1517
+ const readingOrderShapes = isSelectedWithinContainer ? this._getShapesInReadingOrder(filteredShapes) : this.getCurrentPageShapesInReadingOrder();
1519
1518
  const currentShapeId = selectedShapeIds.length === 1 ? selectedShapeIds[0] : readingOrderShapes.find((shape2) => selectedShapeIds.includes(shape2.id))?.id;
1520
1519
  let adjacentShapeId;
1521
1520
  if (direction === "next" || direction === "prev") {
@@ -1525,7 +1524,7 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
1525
1524
  adjacentShapeId = shapeIds[adjacentIndex];
1526
1525
  } else {
1527
1526
  if (!currentShapeId) return;
1528
- adjacentShapeId = this.getNearestAdjacentShape(currentShapeId, direction);
1527
+ adjacentShapeId = this.getNearestAdjacentShape(filteredShapes, currentShapeId, direction);
1529
1528
  }
1530
1529
  const shape = this.getShape(adjacentShapeId);
1531
1530
  if (!shape) return;
@@ -1591,11 +1590,10 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
1591
1590
  *
1592
1591
  * @public
1593
1592
  */
1594
- getNearestAdjacentShape(currentShapeId, direction) {
1593
+ getNearestAdjacentShape(shapes, currentShapeId, direction) {
1595
1594
  const directionToAngle = { right: 0, left: 180, down: 90, up: 270 };
1596
1595
  const currentShape = this.getShape(currentShapeId);
1597
1596
  if (!currentShape) return currentShapeId;
1598
- const shapes = this.getCurrentPageShapes();
1599
1597
  const tabbableShapes = shapes.filter(
1600
1598
  (shape) => this.getShapeUtil(shape).canTabTo(shape) && shape.id !== currentShapeId
1601
1599
  );