@tldraw/editor 5.4.0 → 5.5.0-next.6d9e51e9f3f7

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 (62) hide show
  1. package/dist-cjs/index.d.ts +5 -2
  2. package/dist-cjs/index.js +1 -1
  3. package/dist-cjs/lib/constants.js +2 -0
  4. package/dist-cjs/lib/constants.js.map +2 -2
  5. package/dist-cjs/lib/editor/Editor.js +3 -2
  6. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  7. package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js +10 -6
  8. package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js.map +2 -2
  9. package/dist-cjs/lib/editor/managers/ThemeManager/ThemeManager.js +7 -3
  10. package/dist-cjs/lib/editor/managers/ThemeManager/ThemeManager.js.map +2 -2
  11. package/dist-cjs/lib/primitives/geometry/Arc2d.js +1 -1
  12. package/dist-cjs/lib/primitives/geometry/Arc2d.js.map +2 -2
  13. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js +1 -1
  14. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js.map +2 -2
  15. package/dist-cjs/lib/primitives/geometry/Edge2d.js +1 -1
  16. package/dist-cjs/lib/primitives/geometry/Edge2d.js.map +2 -2
  17. package/dist-cjs/lib/primitives/geometry/Group2d.js +8 -5
  18. package/dist-cjs/lib/primitives/geometry/Group2d.js.map +2 -2
  19. package/dist-cjs/lib/primitives/geometry/Point2d.js +1 -1
  20. package/dist-cjs/lib/primitives/geometry/Point2d.js.map +2 -2
  21. package/dist-cjs/version.js +3 -3
  22. package/dist-cjs/version.js.map +1 -1
  23. package/dist-esm/index.d.mts +5 -2
  24. package/dist-esm/index.mjs +1 -1
  25. package/dist-esm/lib/constants.mjs +2 -0
  26. package/dist-esm/lib/constants.mjs.map +2 -2
  27. package/dist-esm/lib/editor/Editor.mjs +4 -2
  28. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  29. package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs +10 -6
  30. package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs.map +2 -2
  31. package/dist-esm/lib/editor/managers/ThemeManager/ThemeManager.mjs +7 -3
  32. package/dist-esm/lib/editor/managers/ThemeManager/ThemeManager.mjs.map +2 -2
  33. package/dist-esm/lib/primitives/geometry/Arc2d.mjs +1 -1
  34. package/dist-esm/lib/primitives/geometry/Arc2d.mjs.map +2 -2
  35. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs +1 -1
  36. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs.map +2 -2
  37. package/dist-esm/lib/primitives/geometry/Edge2d.mjs +1 -1
  38. package/dist-esm/lib/primitives/geometry/Edge2d.mjs.map +2 -2
  39. package/dist-esm/lib/primitives/geometry/Group2d.mjs +12 -6
  40. package/dist-esm/lib/primitives/geometry/Group2d.mjs.map +2 -2
  41. package/dist-esm/lib/primitives/geometry/Point2d.mjs +1 -1
  42. package/dist-esm/lib/primitives/geometry/Point2d.mjs.map +2 -2
  43. package/dist-esm/version.mjs +3 -3
  44. package/dist-esm/version.mjs.map +1 -1
  45. package/package.json +7 -7
  46. package/src/lib/constants.ts +8 -0
  47. package/src/lib/editor/Editor.ts +7 -3
  48. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +35 -4
  49. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.ts +13 -7
  50. package/src/lib/editor/managers/ThemeManager/ThemeManager.test.ts +53 -0
  51. package/src/lib/editor/managers/ThemeManager/ThemeManager.ts +9 -3
  52. package/src/lib/primitives/geometry/Arc2d.test.ts +9 -0
  53. package/src/lib/primitives/geometry/Arc2d.ts +1 -1
  54. package/src/lib/primitives/geometry/CubicBezier2d.test.ts +13 -0
  55. package/src/lib/primitives/geometry/CubicBezier2d.ts +1 -1
  56. package/src/lib/primitives/geometry/Edge2d.test.ts +21 -3
  57. package/src/lib/primitives/geometry/Edge2d.ts +1 -1
  58. package/src/lib/primitives/geometry/Group2d.test.ts +26 -5
  59. package/src/lib/primitives/geometry/Group2d.ts +18 -7
  60. package/src/lib/primitives/geometry/Point2d.test.ts +14 -3
  61. package/src/lib/primitives/geometry/Point2d.ts +1 -1
  62. package/src/version.ts +3 -3
@@ -5033,7 +5033,7 @@ export declare class Group2d extends Geometry2d {
5033
5033
  intersectPolyline(polyline: VecLike[], filters?: Geometry2dFilters): VecLike[];
5034
5034
  interpolateAlongEdge(t: number, filters?: Geometry2dFilters): Vec;
5035
5035
  uninterpolateAlongEdge(point: VecLike, filters?: Geometry2dFilters): number;
5036
- transform(transform: Mat): Geometry2d;
5036
+ transform(transform: MatModel, opts?: TransformedGeometry2dOptions): Geometry2d;
5037
5037
  getArea(): number;
5038
5038
  toSimpleSvgPath(): string;
5039
5039
  getLength(filters?: Geometry2dFilters): number;
@@ -7592,7 +7592,10 @@ export declare class ThemeManager {
7592
7592
  /** Get the id of the current theme. */
7593
7593
  getCurrentThemeId(): TLThemeId;
7594
7594
  getCurrentTheme(): TLTheme;
7595
- /** Set the current theme by id. The theme must have been previously registered. */
7595
+ /**
7596
+ * Set the current theme by id. The theme must have been previously registered; an
7597
+ * unregistered id is ignored and the current theme is kept.
7598
+ */
7596
7599
  setCurrentTheme(id: TLThemeId): void;
7597
7600
  /** Replace all theme definitions, or update them via a callback that receives a deep copy. */
7598
7601
  updateThemes(themes: ((themes: TLThemes) => TLThemes) | TLThemes): void;
package/dist-cjs/index.js CHANGED
@@ -392,7 +392,7 @@ var import_uniq = require("./lib/utils/uniq");
392
392
  var import_defaultThemes2 = require("./lib/editor/managers/ThemeManager/defaultThemes");
393
393
  (0, import_utils.registerTldrawLibraryVersion)(
394
394
  "@tldraw/editor",
395
- "5.4.0",
395
+ "5.5.0-next.6d9e51e9f3f7",
396
396
  "cjs"
397
397
  );
398
398
  //# sourceMappingURL=index.js.map
@@ -20,6 +20,7 @@ var constants_exports = {};
20
20
  __export(constants_exports, {
21
21
  DEFAULT_ANIMATION_OPTIONS: () => DEFAULT_ANIMATION_OPTIONS,
22
22
  DEFAULT_CAMERA_OPTIONS: () => DEFAULT_CAMERA_OPTIONS,
23
+ FRAME_MS_60HZ: () => FRAME_MS_60HZ,
23
24
  INTERNAL_POINTER_IDS: () => INTERNAL_POINTER_IDS,
24
25
  LEFT_MOUSE_BUTTON: () => LEFT_MOUSE_BUTTON,
25
26
  MIDDLE_MOUSE_BUTTON: () => MIDDLE_MOUSE_BUTTON,
@@ -43,6 +44,7 @@ const DEFAULT_ANIMATION_OPTIONS = {
43
44
  const INTERNAL_POINTER_IDS = {
44
45
  CAMERA_MOVE: -10
45
46
  };
47
+ const FRAME_MS_60HZ = 1e3 / 60;
46
48
  const SIDES = ["top", "right", "bottom", "left"];
47
49
  const LEFT_MOUSE_BUTTON = 0;
48
50
  const RIGHT_MOUSE_BUTTON = 2;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/lib/constants.ts"],
4
- "sourcesContent": ["import { TLCameraOptions } from './editor/types/misc-types'\nimport { EASINGS } from './primitives/easings'\n\n/** @internal */\nexport const DEFAULT_CAMERA_OPTIONS: TLCameraOptions = {\n\tisLocked: false,\n\twheelBehavior: 'pan',\n\tpanSpeed: 1,\n\tzoomSpeed: 1,\n\tzoomSteps: [0.05, 0.1, 0.25, 0.5, 1, 2, 4, 8],\n}\n\n/** @internal */\nexport const DEFAULT_ANIMATION_OPTIONS = {\n\tduration: 0,\n\teasing: EASINGS.easeInOutCubic,\n}\n\n/**\n * Negative pointer ids are reserved for internal use.\n *\n * @internal */\nexport const INTERNAL_POINTER_IDS = {\n\tCAMERA_MOVE: -10,\n} as const\n\n/** @public */\nexport const SIDES = ['top', 'right', 'bottom', 'left'] as const\n\nexport const LEFT_MOUSE_BUTTON = 0\nexport const RIGHT_MOUSE_BUTTON = 2\nexport const MIDDLE_MOUSE_BUTTON = 1\nexport const STYLUS_ERASER_BUTTON = 5\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAwB;AAGjB,MAAM,yBAA0C;AAAA,EACtD,UAAU;AAAA,EACV,eAAe;AAAA,EACf,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW,CAAC,MAAM,KAAK,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC;AAC7C;AAGO,MAAM,4BAA4B;AAAA,EACxC,UAAU;AAAA,EACV,QAAQ,uBAAQ;AACjB;AAMO,MAAM,uBAAuB;AAAA,EACnC,aAAa;AACd;AAGO,MAAM,QAAQ,CAAC,OAAO,SAAS,UAAU,MAAM;AAE/C,MAAM,oBAAoB;AAC1B,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAC5B,MAAM,uBAAuB;",
4
+ "sourcesContent": ["import { TLCameraOptions } from './editor/types/misc-types'\nimport { EASINGS } from './primitives/easings'\n\n/** @internal */\nexport const DEFAULT_CAMERA_OPTIONS: TLCameraOptions = {\n\tisLocked: false,\n\twheelBehavior: 'pan',\n\tpanSpeed: 1,\n\tzoomSpeed: 1,\n\tzoomSteps: [0.05, 0.1, 0.25, 0.5, 1, 2, 4, 8],\n}\n\n/** @internal */\nexport const DEFAULT_ANIMATION_OPTIONS = {\n\tduration: 0,\n\teasing: EASINGS.easeInOutCubic,\n}\n\n/**\n * Negative pointer ids are reserved for internal use.\n *\n * @internal */\nexport const INTERNAL_POINTER_IDS = {\n\tCAMERA_MOVE: -10,\n} as const\n\n/**\n * Per-tick tuning constants (`cameraSlideFriction`, `edgeScrollSpeed`) assume a 60 Hz tick. Scaling\n * motion by `elapsed / FRAME_MS_60HZ` keeps that feel on displays with other refresh rates.\n *\n * @internal\n */\nexport const FRAME_MS_60HZ = 1000 / 60\n\n/** @public */\nexport const SIDES = ['top', 'right', 'bottom', 'left'] as const\n\nexport const LEFT_MOUSE_BUTTON = 0\nexport const RIGHT_MOUSE_BUTTON = 2\nexport const MIDDLE_MOUSE_BUTTON = 1\nexport const STYLUS_ERASER_BUTTON = 5\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAwB;AAGjB,MAAM,yBAA0C;AAAA,EACtD,UAAU;AAAA,EACV,eAAe;AAAA,EACf,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW,CAAC,MAAM,KAAK,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC;AAC7C;AAGO,MAAM,4BAA4B;AAAA,EACxC,UAAU;AAAA,EACV,QAAQ,uBAAQ;AACjB;AAMO,MAAM,uBAAuB;AAAA,EACnC,aAAa;AACd;AAQO,MAAM,gBAAgB,MAAO;AAG7B,MAAM,QAAQ,CAAC,OAAO,SAAS,UAAU,MAAM;AAE/C,MAAM,oBAAoB;AAC1B,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAC5B,MAAM,uBAAuB;",
6
6
  "names": []
7
7
  }
@@ -1617,7 +1617,8 @@ class Editor extends import_eventemitter3.default {
1617
1617
  if (direction === "next" || direction === "prev") {
1618
1618
  const shapeIds = readingOrderShapes.map((shape2) => shape2.id);
1619
1619
  const currentIndex = currentShapeId ? shapeIds.indexOf(currentShapeId) : -1;
1620
- const adjacentIndex = (currentIndex + (direction === "next" ? 1 : -1) + shapeIds.length) % shapeIds.length;
1620
+ const startIndex = currentIndex === -1 && direction === "prev" ? 0 : currentIndex;
1621
+ const adjacentIndex = (startIndex + (direction === "next" ? 1 : -1) + shapeIds.length) % shapeIds.length;
1621
1622
  adjacentShapeId = shapeIds[adjacentIndex];
1622
1623
  } else {
1623
1624
  if (!currentShapeId) return;
@@ -2883,7 +2884,7 @@ class Editor extends import_eventemitter3.default {
2883
2884
  newCx += center.x / newCz - center.x / cz;
2884
2885
  newCy += center.y / newCz - center.y / cz;
2885
2886
  }
2886
- currentSpeed *= 1 - friction;
2887
+ currentSpeed *= (1 - friction) ** (elapsed / import_constants.FRAME_MS_60HZ);
2887
2888
  if (currentSpeed < speedThreshold) {
2888
2889
  cancel();
2889
2890
  } else {