@tldraw/editor 4.5.3 → 4.6.0-canary.00a8c03b5687

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 (279) hide show
  1. package/dist-cjs/index.d.ts +37 -6
  2. package/dist-cjs/index.js +6 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/TldrawEditor.js +7 -5
  5. package/dist-cjs/lib/TldrawEditor.js.map +3 -3
  6. package/dist-cjs/lib/components/default-components/CanvasShapeIndicators.js +3 -2
  7. package/dist-cjs/lib/components/default-components/CanvasShapeIndicators.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/DefaultErrorFallback.js +8 -5
  11. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js.map +2 -2
  12. package/dist-cjs/lib/config/TLSessionStateSnapshot.js +8 -5
  13. package/dist-cjs/lib/config/TLSessionStateSnapshot.js.map +2 -2
  14. package/dist-cjs/lib/config/TLUserPreferences.js +3 -2
  15. package/dist-cjs/lib/config/TLUserPreferences.js.map +2 -2
  16. package/dist-cjs/lib/config/createTLStore.js +1 -0
  17. package/dist-cjs/lib/config/createTLStore.js.map +2 -2
  18. package/dist-cjs/lib/config/createTLUser.js.map +1 -1
  19. package/dist-cjs/lib/editor/Editor.js +511 -366
  20. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  21. package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js +25 -64
  22. package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js.map +2 -2
  23. package/dist-cjs/lib/editor/managers/FocusManager/FocusManager.js +22 -5
  24. package/dist-cjs/lib/editor/managers/FocusManager/FocusManager.js.map +2 -2
  25. package/dist-cjs/lib/editor/managers/FontManager/FontManager.js +4 -3
  26. package/dist-cjs/lib/editor/managers/FontManager/FontManager.js.map +2 -2
  27. package/dist-cjs/lib/editor/managers/HistoryManager/HistoryManager.js +5 -0
  28. package/dist-cjs/lib/editor/managers/HistoryManager/HistoryManager.js.map +2 -2
  29. package/dist-cjs/lib/editor/managers/InputsManager/InputsManager.js +71 -112
  30. package/dist-cjs/lib/editor/managers/InputsManager/InputsManager.js.map +2 -2
  31. package/dist-cjs/lib/editor/managers/SnapManager/BoundsSnaps.js +20 -55
  32. package/dist-cjs/lib/editor/managers/SnapManager/BoundsSnaps.js.map +1 -1
  33. package/dist-cjs/lib/editor/managers/SnapManager/HandleSnaps.js +11 -52
  34. package/dist-cjs/lib/editor/managers/SnapManager/HandleSnaps.js.map +1 -1
  35. package/dist-cjs/lib/editor/managers/SnapManager/SnapManager.js +19 -56
  36. package/dist-cjs/lib/editor/managers/SnapManager/SnapManager.js.map +1 -1
  37. package/dist-cjs/lib/editor/managers/TextManager/TextManager.js +2 -2
  38. package/dist-cjs/lib/editor/managers/TextManager/TextManager.js.map +2 -2
  39. package/dist-cjs/lib/editor/managers/TickManager/TickManager.js +16 -55
  40. package/dist-cjs/lib/editor/managers/TickManager/TickManager.js.map +1 -1
  41. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js +60 -70
  42. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js.map +2 -2
  43. package/dist-cjs/lib/editor/types/misc-types.js.map +1 -1
  44. package/dist-cjs/lib/exports/ExportDelay.js +12 -53
  45. package/dist-cjs/lib/exports/ExportDelay.js.map +1 -1
  46. package/dist-cjs/lib/exports/FontEmbedder.js +23 -65
  47. package/dist-cjs/lib/exports/FontEmbedder.js.map +2 -2
  48. package/dist-cjs/lib/exports/StyleEmbedder.js +27 -15
  49. package/dist-cjs/lib/exports/StyleEmbedder.js.map +3 -3
  50. package/dist-cjs/lib/exports/domUtils.js +15 -0
  51. package/dist-cjs/lib/exports/domUtils.js.map +2 -2
  52. package/dist-cjs/lib/exports/embedMedia.js +15 -12
  53. package/dist-cjs/lib/exports/embedMedia.js.map +2 -2
  54. package/dist-cjs/lib/exports/exportToSvg.js +8 -7
  55. package/dist-cjs/lib/exports/exportToSvg.js.map +2 -2
  56. package/dist-cjs/lib/exports/getSvgAsImage.js +181 -29
  57. package/dist-cjs/lib/exports/getSvgAsImage.js.map +3 -3
  58. package/dist-cjs/lib/exports/getSvgJsx.js +21 -9
  59. package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
  60. package/dist-cjs/lib/globals/environment.js +4 -3
  61. package/dist-cjs/lib/globals/environment.js.map +2 -2
  62. package/dist-cjs/lib/hooks/useCanvasEvents.js +2 -2
  63. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  64. package/dist-cjs/lib/hooks/useDocumentEvents.js +13 -11
  65. package/dist-cjs/lib/hooks/useDocumentEvents.js.map +2 -2
  66. package/dist-cjs/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.js +3 -2
  67. package/dist-cjs/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.js.map +2 -2
  68. package/dist-cjs/lib/hooks/useScreenBounds.js +10 -6
  69. package/dist-cjs/lib/hooks/useScreenBounds.js.map +2 -2
  70. package/dist-cjs/lib/hooks/useViewportHeight.js +13 -11
  71. package/dist-cjs/lib/hooks/useViewportHeight.js.map +3 -3
  72. package/dist-cjs/lib/license/Watermark.js +10 -0
  73. package/dist-cjs/lib/license/Watermark.js.map +2 -2
  74. package/dist-cjs/lib/primitives/Box.js +25 -25
  75. package/dist-cjs/lib/primitives/Box.js.map +1 -1
  76. package/dist-cjs/lib/primitives/Vec.js +36 -23
  77. package/dist-cjs/lib/primitives/Vec.js.map +2 -2
  78. package/dist-cjs/lib/primitives/geometry/Arc2d.js +6 -13
  79. package/dist-cjs/lib/primitives/geometry/Arc2d.js.map +2 -2
  80. package/dist-cjs/lib/primitives/geometry/Circle2d.js +31 -2
  81. package/dist-cjs/lib/primitives/geometry/Circle2d.js.map +2 -2
  82. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js +9 -0
  83. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js.map +2 -2
  84. package/dist-cjs/lib/primitives/geometry/CubicSpline2d.js +10 -1
  85. package/dist-cjs/lib/primitives/geometry/CubicSpline2d.js.map +2 -2
  86. package/dist-cjs/lib/primitives/geometry/Edge2d.js +32 -18
  87. package/dist-cjs/lib/primitives/geometry/Edge2d.js.map +2 -2
  88. package/dist-cjs/lib/primitives/geometry/Ellipse2d.js +13 -1
  89. package/dist-cjs/lib/primitives/geometry/Ellipse2d.js.map +2 -2
  90. package/dist-cjs/lib/primitives/geometry/Geometry2d.js +6 -6
  91. package/dist-cjs/lib/primitives/geometry/Geometry2d.js.map +1 -1
  92. package/dist-cjs/lib/primitives/geometry/Polyline2d.js +52 -13
  93. package/dist-cjs/lib/primitives/geometry/Polyline2d.js.map +2 -2
  94. package/dist-cjs/lib/primitives/geometry/Stadium2d.js +12 -0
  95. package/dist-cjs/lib/primitives/geometry/Stadium2d.js.map +2 -2
  96. package/dist-cjs/lib/primitives/geometry/geometry.bench.js +133 -0
  97. package/dist-cjs/lib/primitives/geometry/geometry.bench.js.map +7 -0
  98. package/dist-cjs/lib/primitives/intersect.js +16 -15
  99. package/dist-cjs/lib/primitives/intersect.js.map +2 -2
  100. package/dist-cjs/lib/primitives/utils.js +0 -1
  101. package/dist-cjs/lib/primitives/utils.js.map +2 -2
  102. package/dist-cjs/lib/utils/SharedStylesMap.js +1 -1
  103. package/dist-cjs/lib/utils/SharedStylesMap.js.map +1 -1
  104. package/dist-cjs/lib/utils/browserCanvasMaxSize.js +3 -2
  105. package/dist-cjs/lib/utils/browserCanvasMaxSize.js.map +2 -2
  106. package/dist-cjs/lib/utils/dom.js +15 -2
  107. package/dist-cjs/lib/utils/dom.js.map +2 -2
  108. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js +2 -1
  109. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js.map +2 -2
  110. package/dist-cjs/version.js +3 -3
  111. package/dist-cjs/version.js.map +1 -1
  112. package/dist-esm/index.d.mts +37 -6
  113. package/dist-esm/index.mjs +8 -1
  114. package/dist-esm/index.mjs.map +2 -2
  115. package/dist-esm/lib/TldrawEditor.mjs +7 -5
  116. package/dist-esm/lib/TldrawEditor.mjs.map +3 -3
  117. package/dist-esm/lib/components/default-components/CanvasShapeIndicators.mjs +2 -1
  118. package/dist-esm/lib/components/default-components/CanvasShapeIndicators.mjs.map +2 -2
  119. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +1 -1
  120. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  121. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs +8 -5
  122. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs.map +2 -2
  123. package/dist-esm/lib/config/TLSessionStateSnapshot.mjs +8 -5
  124. package/dist-esm/lib/config/TLSessionStateSnapshot.mjs.map +2 -2
  125. package/dist-esm/lib/config/TLUserPreferences.mjs +3 -2
  126. package/dist-esm/lib/config/TLUserPreferences.mjs.map +2 -2
  127. package/dist-esm/lib/config/createTLStore.mjs +1 -0
  128. package/dist-esm/lib/config/createTLStore.mjs.map +2 -2
  129. package/dist-esm/lib/config/createTLUser.mjs.map +1 -1
  130. package/dist-esm/lib/editor/Editor.mjs +512 -368
  131. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  132. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs +25 -64
  133. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs.map +2 -2
  134. package/dist-esm/lib/editor/managers/FocusManager/FocusManager.mjs +24 -5
  135. package/dist-esm/lib/editor/managers/FocusManager/FocusManager.mjs.map +2 -2
  136. package/dist-esm/lib/editor/managers/FontManager/FontManager.mjs +4 -3
  137. package/dist-esm/lib/editor/managers/FontManager/FontManager.mjs.map +2 -2
  138. package/dist-esm/lib/editor/managers/HistoryManager/HistoryManager.mjs +5 -0
  139. package/dist-esm/lib/editor/managers/HistoryManager/HistoryManager.mjs.map +2 -2
  140. package/dist-esm/lib/editor/managers/InputsManager/InputsManager.mjs +71 -112
  141. package/dist-esm/lib/editor/managers/InputsManager/InputsManager.mjs.map +2 -2
  142. package/dist-esm/lib/editor/managers/SnapManager/BoundsSnaps.mjs +20 -55
  143. package/dist-esm/lib/editor/managers/SnapManager/BoundsSnaps.mjs.map +1 -1
  144. package/dist-esm/lib/editor/managers/SnapManager/HandleSnaps.mjs +11 -52
  145. package/dist-esm/lib/editor/managers/SnapManager/HandleSnaps.mjs.map +1 -1
  146. package/dist-esm/lib/editor/managers/SnapManager/SnapManager.mjs +19 -56
  147. package/dist-esm/lib/editor/managers/SnapManager/SnapManager.mjs.map +1 -1
  148. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs +2 -2
  149. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs.map +2 -2
  150. package/dist-esm/lib/editor/managers/TickManager/TickManager.mjs +16 -55
  151. package/dist-esm/lib/editor/managers/TickManager/TickManager.mjs.map +1 -1
  152. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs +60 -70
  153. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +2 -2
  154. package/dist-esm/lib/exports/ExportDelay.mjs +12 -53
  155. package/dist-esm/lib/exports/ExportDelay.mjs.map +1 -1
  156. package/dist-esm/lib/exports/FontEmbedder.mjs +23 -65
  157. package/dist-esm/lib/exports/FontEmbedder.mjs.map +2 -2
  158. package/dist-esm/lib/exports/StyleEmbedder.mjs +29 -16
  159. package/dist-esm/lib/exports/StyleEmbedder.mjs.map +3 -3
  160. package/dist-esm/lib/exports/domUtils.mjs +15 -0
  161. package/dist-esm/lib/exports/domUtils.mjs.map +2 -2
  162. package/dist-esm/lib/exports/embedMedia.mjs +16 -13
  163. package/dist-esm/lib/exports/embedMedia.mjs.map +2 -2
  164. package/dist-esm/lib/exports/exportToSvg.mjs +8 -7
  165. package/dist-esm/lib/exports/exportToSvg.mjs.map +2 -2
  166. package/dist-esm/lib/exports/getSvgAsImage.mjs +181 -29
  167. package/dist-esm/lib/exports/getSvgAsImage.mjs.map +3 -3
  168. package/dist-esm/lib/exports/getSvgJsx.mjs +21 -9
  169. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  170. package/dist-esm/lib/globals/environment.mjs +4 -3
  171. package/dist-esm/lib/globals/environment.mjs.map +2 -2
  172. package/dist-esm/lib/hooks/useCanvasEvents.mjs +2 -2
  173. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  174. package/dist-esm/lib/hooks/useDocumentEvents.mjs +13 -11
  175. package/dist-esm/lib/hooks/useDocumentEvents.mjs.map +2 -2
  176. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs +3 -2
  177. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs.map +2 -2
  178. package/dist-esm/lib/hooks/useScreenBounds.mjs +10 -6
  179. package/dist-esm/lib/hooks/useScreenBounds.mjs.map +2 -2
  180. package/dist-esm/lib/hooks/useViewportHeight.mjs +13 -11
  181. package/dist-esm/lib/hooks/useViewportHeight.mjs.map +3 -3
  182. package/dist-esm/lib/license/Watermark.mjs +10 -0
  183. package/dist-esm/lib/license/Watermark.mjs.map +2 -2
  184. package/dist-esm/lib/primitives/Box.mjs +25 -25
  185. package/dist-esm/lib/primitives/Box.mjs.map +1 -1
  186. package/dist-esm/lib/primitives/Vec.mjs +36 -23
  187. package/dist-esm/lib/primitives/Vec.mjs.map +2 -2
  188. package/dist-esm/lib/primitives/geometry/Arc2d.mjs +6 -13
  189. package/dist-esm/lib/primitives/geometry/Arc2d.mjs.map +2 -2
  190. package/dist-esm/lib/primitives/geometry/Circle2d.mjs +31 -2
  191. package/dist-esm/lib/primitives/geometry/Circle2d.mjs.map +2 -2
  192. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs +9 -0
  193. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs.map +2 -2
  194. package/dist-esm/lib/primitives/geometry/CubicSpline2d.mjs +10 -1
  195. package/dist-esm/lib/primitives/geometry/CubicSpline2d.mjs.map +2 -2
  196. package/dist-esm/lib/primitives/geometry/Edge2d.mjs +32 -18
  197. package/dist-esm/lib/primitives/geometry/Edge2d.mjs.map +2 -2
  198. package/dist-esm/lib/primitives/geometry/Ellipse2d.mjs +14 -2
  199. package/dist-esm/lib/primitives/geometry/Ellipse2d.mjs.map +2 -2
  200. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs +6 -6
  201. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs.map +1 -1
  202. package/dist-esm/lib/primitives/geometry/Polyline2d.mjs +52 -13
  203. package/dist-esm/lib/primitives/geometry/Polyline2d.mjs.map +2 -2
  204. package/dist-esm/lib/primitives/geometry/Stadium2d.mjs +13 -1
  205. package/dist-esm/lib/primitives/geometry/Stadium2d.mjs.map +2 -2
  206. package/dist-esm/lib/primitives/geometry/geometry.bench.mjs +132 -0
  207. package/dist-esm/lib/primitives/geometry/geometry.bench.mjs.map +7 -0
  208. package/dist-esm/lib/primitives/intersect.mjs +17 -16
  209. package/dist-esm/lib/primitives/intersect.mjs.map +2 -2
  210. package/dist-esm/lib/primitives/utils.mjs +0 -1
  211. package/dist-esm/lib/primitives/utils.mjs.map +2 -2
  212. package/dist-esm/lib/utils/SharedStylesMap.mjs +1 -1
  213. package/dist-esm/lib/utils/SharedStylesMap.mjs.map +1 -1
  214. package/dist-esm/lib/utils/browserCanvasMaxSize.mjs +3 -2
  215. package/dist-esm/lib/utils/browserCanvasMaxSize.mjs.map +2 -2
  216. package/dist-esm/lib/utils/dom.mjs +15 -2
  217. package/dist-esm/lib/utils/dom.mjs.map +2 -2
  218. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs +2 -1
  219. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs.map +2 -2
  220. package/dist-esm/version.mjs +3 -3
  221. package/dist-esm/version.mjs.map +1 -1
  222. package/package.json +8 -8
  223. package/src/index.ts +10 -6
  224. package/src/lib/TldrawEditor.tsx +7 -5
  225. package/src/lib/components/default-components/CanvasShapeIndicators.tsx +2 -1
  226. package/src/lib/components/default-components/DefaultCanvas.tsx +1 -1
  227. package/src/lib/components/default-components/DefaultErrorFallback.tsx +9 -5
  228. package/src/lib/config/TLSessionStateSnapshot.ts +8 -5
  229. package/src/lib/config/TLUserPreferences.ts +3 -2
  230. package/src/lib/config/createTLStore.ts +3 -0
  231. package/src/lib/config/createTLUser.ts +3 -3
  232. package/src/lib/editor/Editor.ts +53 -15
  233. package/src/lib/editor/managers/ClickManager/ClickManager.ts +1 -1
  234. package/src/lib/editor/managers/FocusManager/FocusManager.test.ts +7 -6
  235. package/src/lib/editor/managers/FocusManager/FocusManager.ts +10 -7
  236. package/src/lib/editor/managers/FontManager/FontManager.test.ts +1 -0
  237. package/src/lib/editor/managers/FontManager/FontManager.ts +4 -3
  238. package/src/lib/editor/managers/HistoryManager/HistoryManager.test.ts +16 -0
  239. package/src/lib/editor/managers/HistoryManager/HistoryManager.ts +7 -2
  240. package/src/lib/editor/managers/InputsManager/InputsManager.ts +30 -30
  241. package/src/lib/editor/managers/TextManager/TextManager.test.ts +4 -5
  242. package/src/lib/editor/managers/TextManager/TextManager.ts +2 -2
  243. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.ts +3 -2
  244. package/src/lib/editor/types/misc-types.ts +8 -2
  245. package/src/lib/exports/FontEmbedder.ts +10 -9
  246. package/src/lib/exports/StyleEmbedder.ts +33 -15
  247. package/src/lib/exports/domUtils.ts +20 -0
  248. package/src/lib/exports/embedMedia.ts +23 -17
  249. package/src/lib/exports/exportToSvg.tsx +8 -7
  250. package/src/lib/exports/getSvgAsImage.ts +292 -32
  251. package/src/lib/exports/getSvgJsx.test.ts +103 -101
  252. package/src/lib/exports/getSvgJsx.tsx +33 -10
  253. package/src/lib/globals/environment.ts +4 -3
  254. package/src/lib/hooks/useCanvasEvents.ts +2 -3
  255. package/src/lib/hooks/useDocumentEvents.ts +16 -11
  256. package/src/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.ts +3 -3
  257. package/src/lib/hooks/useScreenBounds.ts +10 -6
  258. package/src/lib/hooks/useViewportHeight.ts +13 -11
  259. package/src/lib/license/Watermark.tsx +10 -0
  260. package/src/lib/primitives/Box.ts +25 -25
  261. package/src/lib/primitives/Vec.ts +52 -25
  262. package/src/lib/primitives/geometry/Arc2d.ts +10 -15
  263. package/src/lib/primitives/geometry/Circle2d.ts +40 -2
  264. package/src/lib/primitives/geometry/CubicBezier2d.ts +10 -0
  265. package/src/lib/primitives/geometry/CubicSpline2d.ts +11 -1
  266. package/src/lib/primitives/geometry/Edge2d.ts +41 -18
  267. package/src/lib/primitives/geometry/Ellipse2d.ts +15 -2
  268. package/src/lib/primitives/geometry/Geometry2d.ts +6 -6
  269. package/src/lib/primitives/geometry/Polyline2d.ts +61 -13
  270. package/src/lib/primitives/geometry/Stadium2d.ts +14 -1
  271. package/src/lib/primitives/geometry/geometry.bench.ts +179 -0
  272. package/src/lib/primitives/intersect.ts +27 -27
  273. package/src/lib/primitives/utils.ts +4 -4
  274. package/src/lib/test/TestEditor.ts +1 -0
  275. package/src/lib/utils/SharedStylesMap.ts +1 -1
  276. package/src/lib/utils/browserCanvasMaxSize.ts +4 -2
  277. package/src/lib/utils/dom.ts +34 -2
  278. package/src/lib/utils/sync/TLLocalSyncClient.ts +1 -0
  279. package/src/version.ts +3 -3
@@ -1,15 +1,8 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
8
- var __typeError = (msg) => {
9
- throw TypeError(msg);
10
- };
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
13
6
  var __export = (target, all) => {
14
7
  for (var name in all)
15
8
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -23,45 +16,14 @@ var __copyProps = (to, from, except, desc) => {
23
16
  return to;
24
17
  };
25
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
- var __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol("metadata")] ?? null)];
27
- var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
28
- var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
29
- var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
30
- var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
31
- var __runInitializers = (array, flags, self, value) => {
32
- for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
33
- return value;
34
- };
35
- var __decorateElement = (array, flags, name, decorators, target, extra) => {
36
- var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
37
- var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
38
- var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
39
- var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
40
- return __privateGet(this, extra);
41
- }, set [name](x) {
42
- return __privateSet(this, extra, x);
43
- } }, name));
44
- k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
45
- for (var i = decorators.length - 1; i >= 0; i--) {
46
- ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
47
- if (k) {
48
- ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
49
- if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
50
- if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
51
- }
52
- it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
53
- if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
54
- else if (typeof it !== "object" || it === null) __typeError("Object expected");
55
- else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
56
- }
57
- return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
19
+ var __decorateClass = (decorators, target, key, kind) => {
20
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
21
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
22
+ if (decorator = decorators[i])
23
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
24
+ if (kind && result) __defProp(target, key, result);
25
+ return result;
58
26
  };
59
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
60
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
61
- var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
62
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
63
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
64
- var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
65
27
  var InputsManager_exports = {};
66
28
  __export(InputsManager_exports, {
67
29
  InputsManager: () => InputsManager
@@ -73,44 +35,11 @@ var import_tlschema = require("@tldraw/tlschema");
73
35
  var import_constants = require("../../../constants");
74
36
  var import_Vec = require("../../../primitives/Vec");
75
37
  var import_keyboard = require("../../../utils/keyboard");
76
- var __getHasCollaborators_dec, _init;
77
- __getHasCollaborators_dec = [import_state.computed];
78
38
  class InputsManager {
79
39
  constructor(editor) {
80
40
  this.editor = editor;
81
- __runInitializers(_init, 5, this);
82
- __publicField(this, "_originPagePoint", (0, import_state.atom)("originPagePoint", new import_Vec.Vec()));
83
- __publicField(this, "_originScreenPoint", (0, import_state.atom)("originScreenPoint", new import_Vec.Vec()));
84
- __publicField(this, "_previousPagePoint", (0, import_state.atom)("previousPagePoint", new import_Vec.Vec()));
85
- __publicField(this, "_previousScreenPoint", (0, import_state.atom)("previousScreenPoint", new import_Vec.Vec()));
86
- __publicField(this, "_currentPagePoint", (0, import_state.atom)("currentPagePoint", new import_Vec.Vec()));
87
- __publicField(this, "_currentScreenPoint", (0, import_state.atom)("currentScreenPoint", new import_Vec.Vec()));
88
- __publicField(this, "_pointerVelocity", (0, import_state.atom)("pointerVelocity", new import_Vec.Vec()));
89
- /**
90
- * A set containing the currently pressed keys.
91
- */
92
- __publicField(this, "keys", new import_store.AtomSet("keys"));
93
- /**
94
- * A set containing the currently pressed buttons.
95
- */
96
- __publicField(this, "buttons", new import_store.AtomSet("buttons"));
97
- __publicField(this, "_isPen", (0, import_state.atom)("isPen", false));
98
- __publicField(this, "_shiftKey", (0, import_state.atom)("shiftKey", false));
99
- __publicField(this, "_metaKey", (0, import_state.atom)("metaKey", false));
100
- __publicField(this, "_ctrlKey", (0, import_state.atom)("ctrlKey", false));
101
- __publicField(this, "_altKey", (0, import_state.atom)("altKey", false));
102
- __publicField(this, "_isDragging", (0, import_state.atom)("isDragging", false));
103
- __publicField(this, "_isPointing", (0, import_state.atom)("isPointing", false));
104
- __publicField(this, "_isPinching", (0, import_state.atom)("isPinching", false));
105
- __publicField(this, "_isEditing", (0, import_state.atom)("isEditing", false));
106
- __publicField(this, "_isPanning", (0, import_state.atom)("isPanning", false));
107
- __publicField(this, "_isSpacebarPanning", (0, import_state.atom)("isSpacebarPanning", false));
108
- /**
109
- * The previous point used for velocity calculation (updated each tick, not each pointer event).
110
- * @internal
111
- */
112
- __publicField(this, "_velocityPrevPoint", new import_Vec.Vec());
113
41
  }
42
+ _originPagePoint = (0, import_state.atom)("originPagePoint", new import_Vec.Vec());
114
43
  /**
115
44
  * The most recent pointer down's position in the current page space.
116
45
  */
@@ -120,10 +49,11 @@ class InputsManager {
120
49
  /**
121
50
  * @deprecated Use `getOriginPagePoint()` instead.
122
51
  */
123
- // eslint-disable-next-line no-restricted-syntax
52
+ // eslint-disable-next-line tldraw/no-setter-getter
124
53
  get originPagePoint() {
125
54
  return this.getOriginPagePoint();
126
55
  }
56
+ _originScreenPoint = (0, import_state.atom)("originScreenPoint", new import_Vec.Vec());
127
57
  /**
128
58
  * The most recent pointer down's position in screen space.
129
59
  */
@@ -133,10 +63,11 @@ class InputsManager {
133
63
  /**
134
64
  * @deprecated Use `getOriginScreenPoint()` instead.
135
65
  */
136
- // eslint-disable-next-line no-restricted-syntax
66
+ // eslint-disable-next-line tldraw/no-setter-getter
137
67
  get originScreenPoint() {
138
68
  return this.getOriginScreenPoint();
139
69
  }
70
+ _previousPagePoint = (0, import_state.atom)("previousPagePoint", new import_Vec.Vec());
140
71
  /**
141
72
  * The previous pointer position in the current page space.
142
73
  */
@@ -146,10 +77,11 @@ class InputsManager {
146
77
  /**
147
78
  * @deprecated Use `getPreviousPagePoint()` instead.
148
79
  */
149
- // eslint-disable-next-line no-restricted-syntax
80
+ // eslint-disable-next-line tldraw/no-setter-getter
150
81
  get previousPagePoint() {
151
82
  return this.getPreviousPagePoint();
152
83
  }
84
+ _previousScreenPoint = (0, import_state.atom)("previousScreenPoint", new import_Vec.Vec());
153
85
  /**
154
86
  * The previous pointer position in screen space.
155
87
  */
@@ -159,10 +91,11 @@ class InputsManager {
159
91
  /**
160
92
  * @deprecated Use `getPreviousScreenPoint()` instead.
161
93
  */
162
- // eslint-disable-next-line no-restricted-syntax
94
+ // eslint-disable-next-line tldraw/no-setter-getter
163
95
  get previousScreenPoint() {
164
96
  return this.getPreviousScreenPoint();
165
97
  }
98
+ _currentPagePoint = (0, import_state.atom)("currentPagePoint", new import_Vec.Vec());
166
99
  /**
167
100
  * The most recent pointer position in the current page space.
168
101
  */
@@ -172,10 +105,11 @@ class InputsManager {
172
105
  /**
173
106
  * @deprecated Use `getCurrentPagePoint()` instead.
174
107
  */
175
- // eslint-disable-next-line no-restricted-syntax
108
+ // eslint-disable-next-line tldraw/no-setter-getter
176
109
  get currentPagePoint() {
177
110
  return this.getCurrentPagePoint();
178
111
  }
112
+ _currentScreenPoint = (0, import_state.atom)("currentScreenPoint", new import_Vec.Vec());
179
113
  /**
180
114
  * The most recent pointer position in screen space.
181
115
  */
@@ -185,10 +119,11 @@ class InputsManager {
185
119
  /**
186
120
  * @deprecated Use `getCurrentScreenPoint()` instead.
187
121
  */
188
- // eslint-disable-next-line no-restricted-syntax
122
+ // eslint-disable-next-line tldraw/no-setter-getter
189
123
  get currentScreenPoint() {
190
124
  return this.getCurrentScreenPoint();
191
125
  }
126
+ _pointerVelocity = (0, import_state.atom)("pointerVelocity", new import_Vec.Vec());
192
127
  /**
193
128
  * Velocity of mouse pointer, in pixels per millisecond.
194
129
  */
@@ -198,7 +133,7 @@ class InputsManager {
198
133
  /**
199
134
  * @deprecated Use `getPointerVelocity()` instead.
200
135
  */
201
- // eslint-disable-next-line no-restricted-syntax
136
+ // eslint-disable-next-line tldraw/no-setter-getter
202
137
  get pointerVelocity() {
203
138
  return this.getPointerVelocity();
204
139
  }
@@ -211,6 +146,15 @@ class InputsManager {
211
146
  setPointerVelocity(pointerVelocity) {
212
147
  this._pointerVelocity.set(pointerVelocity);
213
148
  }
149
+ /**
150
+ * A set containing the currently pressed keys.
151
+ */
152
+ keys = new import_store.AtomSet("keys");
153
+ /**
154
+ * A set containing the currently pressed buttons.
155
+ */
156
+ buttons = new import_store.AtomSet("buttons");
157
+ _isPen = (0, import_state.atom)("isPen", false);
214
158
  /**
215
159
  * Whether the input is from a pen.
216
160
  */
@@ -220,11 +164,11 @@ class InputsManager {
220
164
  /**
221
165
  * @deprecated Use `getIsPen()` instead.
222
166
  */
223
- // eslint-disable-next-line no-restricted-syntax
167
+ // eslint-disable-next-line tldraw/no-setter-getter
224
168
  get isPen() {
225
169
  return this.getIsPen();
226
170
  }
227
- // eslint-disable-next-line no-restricted-syntax
171
+ // eslint-disable-next-line tldraw/no-setter-getter
228
172
  set isPen(isPen) {
229
173
  this.setIsPen(isPen);
230
174
  }
@@ -234,6 +178,7 @@ class InputsManager {
234
178
  setIsPen(isPen) {
235
179
  this._isPen.set(isPen);
236
180
  }
181
+ _shiftKey = (0, import_state.atom)("shiftKey", false);
237
182
  /**
238
183
  * Whether the shift key is currently pressed.
239
184
  */
@@ -243,11 +188,11 @@ class InputsManager {
243
188
  /**
244
189
  * @deprecated Use `getShiftKey()` instead.
245
190
  */
246
- // eslint-disable-next-line no-restricted-syntax
191
+ // eslint-disable-next-line tldraw/no-setter-getter
247
192
  get shiftKey() {
248
193
  return this.getShiftKey();
249
194
  }
250
- // eslint-disable-next-line no-restricted-syntax
195
+ // eslint-disable-next-line tldraw/no-setter-getter
251
196
  set shiftKey(shiftKey) {
252
197
  this.setShiftKey(shiftKey);
253
198
  }
@@ -258,6 +203,7 @@ class InputsManager {
258
203
  setShiftKey(shiftKey) {
259
204
  this._shiftKey.set(shiftKey);
260
205
  }
206
+ _metaKey = (0, import_state.atom)("metaKey", false);
261
207
  /**
262
208
  * Whether the meta key is currently pressed.
263
209
  */
@@ -267,11 +213,11 @@ class InputsManager {
267
213
  /**
268
214
  * @deprecated Use `getMetaKey()` instead.
269
215
  */
270
- // eslint-disable-next-line no-restricted-syntax
216
+ // eslint-disable-next-line tldraw/no-setter-getter
271
217
  get metaKey() {
272
218
  return this.getMetaKey();
273
219
  }
274
- // eslint-disable-next-line no-restricted-syntax
220
+ // eslint-disable-next-line tldraw/no-setter-getter
275
221
  set metaKey(metaKey) {
276
222
  this.setMetaKey(metaKey);
277
223
  }
@@ -282,6 +228,7 @@ class InputsManager {
282
228
  setMetaKey(metaKey) {
283
229
  this._metaKey.set(metaKey);
284
230
  }
231
+ _ctrlKey = (0, import_state.atom)("ctrlKey", false);
285
232
  /**
286
233
  * Whether the ctrl or command key is currently pressed.
287
234
  */
@@ -291,11 +238,11 @@ class InputsManager {
291
238
  /**
292
239
  * @deprecated Use `getCtrlKey()` instead.
293
240
  */
294
- // eslint-disable-next-line no-restricted-syntax
241
+ // eslint-disable-next-line tldraw/no-setter-getter
295
242
  get ctrlKey() {
296
243
  return this.getCtrlKey();
297
244
  }
298
- // eslint-disable-next-line no-restricted-syntax
245
+ // eslint-disable-next-line tldraw/no-setter-getter
299
246
  set ctrlKey(ctrlKey) {
300
247
  this.setCtrlKey(ctrlKey);
301
248
  }
@@ -306,6 +253,7 @@ class InputsManager {
306
253
  setCtrlKey(ctrlKey) {
307
254
  this._ctrlKey.set(ctrlKey);
308
255
  }
256
+ _altKey = (0, import_state.atom)("altKey", false);
309
257
  /**
310
258
  * Whether the alt or option key is currently pressed.
311
259
  */
@@ -315,11 +263,11 @@ class InputsManager {
315
263
  /**
316
264
  * @deprecated Use `getAltKey()` instead.
317
265
  */
318
- // eslint-disable-next-line no-restricted-syntax
266
+ // eslint-disable-next-line tldraw/no-setter-getter
319
267
  get altKey() {
320
268
  return this.getAltKey();
321
269
  }
322
- // eslint-disable-next-line no-restricted-syntax
270
+ // eslint-disable-next-line tldraw/no-setter-getter
323
271
  set altKey(altKey) {
324
272
  this.setAltKey(altKey);
325
273
  }
@@ -339,10 +287,11 @@ class InputsManager {
339
287
  /**
340
288
  * @deprecated Use `getAccelKey()` instead.
341
289
  */
342
- // eslint-disable-next-line no-restricted-syntax
290
+ // eslint-disable-next-line tldraw/no-setter-getter
343
291
  get accelKey() {
344
292
  return this.getAccelKey();
345
293
  }
294
+ _isDragging = (0, import_state.atom)("isDragging", false);
346
295
  /**
347
296
  * Whether the user is dragging.
348
297
  */
@@ -352,11 +301,11 @@ class InputsManager {
352
301
  /**
353
302
  * Soon to be deprecated, use `getIsDragging()` instead.
354
303
  */
355
- // eslint-disable-next-line no-restricted-syntax
304
+ // eslint-disable-next-line tldraw/no-setter-getter
356
305
  get isDragging() {
357
306
  return this.getIsDragging();
358
307
  }
359
- // eslint-disable-next-line no-restricted-syntax
308
+ // eslint-disable-next-line tldraw/no-setter-getter
360
309
  set isDragging(isDragging) {
361
310
  this.setIsDragging(isDragging);
362
311
  }
@@ -366,6 +315,7 @@ class InputsManager {
366
315
  setIsDragging(isDragging) {
367
316
  this._isDragging.set(isDragging);
368
317
  }
318
+ _isPointing = (0, import_state.atom)("isPointing", false);
369
319
  /**
370
320
  * Whether the user is pointing.
371
321
  */
@@ -375,11 +325,11 @@ class InputsManager {
375
325
  /**
376
326
  * @deprecated Use `getIsPointing()` instead.
377
327
  */
378
- // eslint-disable-next-line no-restricted-syntax
328
+ // eslint-disable-next-line tldraw/no-setter-getter
379
329
  get isPointing() {
380
330
  return this.getIsPointing();
381
331
  }
382
- // eslint-disable-next-line no-restricted-syntax
332
+ // eslint-disable-next-line tldraw/no-setter-getter
383
333
  set isPointing(isPointing) {
384
334
  this.setIsPointing(isPointing);
385
335
  }
@@ -390,6 +340,7 @@ class InputsManager {
390
340
  setIsPointing(isPointing) {
391
341
  this._isPointing.set(isPointing);
392
342
  }
343
+ _isPinching = (0, import_state.atom)("isPinching", false);
393
344
  /**
394
345
  * Whether the user is pinching.
395
346
  */
@@ -399,11 +350,11 @@ class InputsManager {
399
350
  /**
400
351
  * @deprecated Use `getIsPinching()` instead.
401
352
  */
402
- // eslint-disable-next-line no-restricted-syntax
353
+ // eslint-disable-next-line tldraw/no-setter-getter
403
354
  get isPinching() {
404
355
  return this.getIsPinching();
405
356
  }
406
- // eslint-disable-next-line no-restricted-syntax
357
+ // eslint-disable-next-line tldraw/no-setter-getter
407
358
  set isPinching(isPinching) {
408
359
  this.setIsPinching(isPinching);
409
360
  }
@@ -414,6 +365,7 @@ class InputsManager {
414
365
  setIsPinching(isPinching) {
415
366
  this._isPinching.set(isPinching);
416
367
  }
368
+ _isEditing = (0, import_state.atom)("isEditing", false);
417
369
  /**
418
370
  * Whether the user is editing.
419
371
  */
@@ -423,11 +375,11 @@ class InputsManager {
423
375
  /**
424
376
  * @deprecated Use `getIsEditing()` instead.
425
377
  */
426
- // eslint-disable-next-line no-restricted-syntax
378
+ // eslint-disable-next-line tldraw/no-setter-getter
427
379
  get isEditing() {
428
380
  return this.getIsEditing();
429
381
  }
430
- // eslint-disable-next-line no-restricted-syntax
382
+ // eslint-disable-next-line tldraw/no-setter-getter
431
383
  set isEditing(isEditing) {
432
384
  this.setIsEditing(isEditing);
433
385
  }
@@ -437,6 +389,7 @@ class InputsManager {
437
389
  setIsEditing(isEditing) {
438
390
  this._isEditing.set(isEditing);
439
391
  }
392
+ _isPanning = (0, import_state.atom)("isPanning", false);
440
393
  /**
441
394
  * Whether the user is panning.
442
395
  */
@@ -446,11 +399,11 @@ class InputsManager {
446
399
  /**
447
400
  * @deprecated Use `getIsPanning()` instead.
448
401
  */
449
- // eslint-disable-next-line no-restricted-syntax
402
+ // eslint-disable-next-line tldraw/no-setter-getter
450
403
  get isPanning() {
451
404
  return this.getIsPanning();
452
405
  }
453
- // eslint-disable-next-line no-restricted-syntax
406
+ // eslint-disable-next-line tldraw/no-setter-getter
454
407
  set isPanning(isPanning) {
455
408
  this.setIsPanning(isPanning);
456
409
  }
@@ -461,6 +414,7 @@ class InputsManager {
461
414
  setIsPanning(isPanning) {
462
415
  this._isPanning.set(isPanning);
463
416
  }
417
+ _isSpacebarPanning = (0, import_state.atom)("isSpacebarPanning", false);
464
418
  /**
465
419
  * Whether the user is spacebar panning.
466
420
  */
@@ -470,11 +424,11 @@ class InputsManager {
470
424
  /**
471
425
  * @deprecated Use `getIsSpacebarPanning()` instead.
472
426
  */
473
- // eslint-disable-next-line no-restricted-syntax
427
+ // eslint-disable-next-line tldraw/no-setter-getter
474
428
  get isSpacebarPanning() {
475
429
  return this.getIsSpacebarPanning();
476
430
  }
477
- // eslint-disable-next-line no-restricted-syntax
431
+ // eslint-disable-next-line tldraw/no-setter-getter
478
432
  set isSpacebarPanning(isSpacebarPanning) {
479
433
  this.setIsSpacebarPanning(isSpacebarPanning);
480
434
  }
@@ -488,6 +442,11 @@ class InputsManager {
488
442
  _getHasCollaborators() {
489
443
  return this.editor.getCollaborators().length > 0;
490
444
  }
445
+ /**
446
+ * The previous point used for velocity calculation (updated each tick, not each pointer event).
447
+ * @internal
448
+ */
449
+ _velocityPrevPoint = new import_Vec.Vec();
491
450
  /**
492
451
  * Update the pointer velocity based on elapsed time. Called by the tick manager.
493
452
  * @param elapsed - The time elapsed since the last tick in milliseconds.
@@ -585,7 +544,7 @@ class InputsManager {
585
544
  };
586
545
  }
587
546
  }
588
- _init = __decoratorStart(null);
589
- __decorateElement(_init, 1, "_getHasCollaborators", __getHasCollaborators_dec, InputsManager);
590
- __decoratorMetadata(_init, InputsManager);
547
+ __decorateClass([
548
+ import_state.computed
549
+ ], InputsManager.prototype, "_getHasCollaborators", 1);
591
550
  //# sourceMappingURL=InputsManager.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/editor/managers/InputsManager/InputsManager.ts"],
4
- "sourcesContent": ["import { atom, computed, unsafe__withoutCapture } from '@tldraw/state'\nimport { AtomSet } from '@tldraw/store'\nimport { TLINSTANCE_ID, TLPOINTER_ID } from '@tldraw/tlschema'\nimport { INTERNAL_POINTER_IDS } from '../../../constants'\nimport { Vec } from '../../../primitives/Vec'\nimport { isAccelKey } from '../../../utils/keyboard'\nimport type { Editor } from '../../Editor'\nimport { TLPinchEventInfo, TLPointerEventInfo, TLWheelEventInfo } from '../../types/event-types'\n\n/** @public */\nexport class InputsManager {\n\tconstructor(private readonly editor: Editor) {}\n\n\tprivate _originPagePoint = atom<Vec>('originPagePoint', new Vec())\n\t/**\n\t * The most recent pointer down's position in the current page space.\n\t */\n\tgetOriginPagePoint() {\n\t\treturn this._originPagePoint.get()\n\t}\n\t/**\n\t * @deprecated Use `getOriginPagePoint()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget originPagePoint() {\n\t\treturn this.getOriginPagePoint()\n\t}\n\n\tprivate _originScreenPoint = atom<Vec>('originScreenPoint', new Vec())\n\t/**\n\t * The most recent pointer down's position in screen space.\n\t */\n\tgetOriginScreenPoint() {\n\t\treturn this._originScreenPoint.get()\n\t}\n\t/**\n\t * @deprecated Use `getOriginScreenPoint()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget originScreenPoint() {\n\t\treturn this.getOriginScreenPoint()\n\t}\n\n\tprivate _previousPagePoint = atom<Vec>('previousPagePoint', new Vec())\n\t/**\n\t * The previous pointer position in the current page space.\n\t */\n\tgetPreviousPagePoint() {\n\t\treturn this._previousPagePoint.get()\n\t}\n\t/**\n\t * @deprecated Use `getPreviousPagePoint()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget previousPagePoint() {\n\t\treturn this.getPreviousPagePoint()\n\t}\n\n\tprivate _previousScreenPoint = atom<Vec>('previousScreenPoint', new Vec())\n\t/**\n\t * The previous pointer position in screen space.\n\t */\n\tgetPreviousScreenPoint() {\n\t\treturn this._previousScreenPoint.get()\n\t}\n\t/**\n\t * @deprecated Use `getPreviousScreenPoint()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget previousScreenPoint() {\n\t\treturn this.getPreviousScreenPoint()\n\t}\n\n\tprivate _currentPagePoint = atom<Vec>('currentPagePoint', new Vec())\n\t/**\n\t * The most recent pointer position in the current page space.\n\t */\n\tgetCurrentPagePoint() {\n\t\treturn this._currentPagePoint.get()\n\t}\n\t/**\n\t * @deprecated Use `getCurrentPagePoint()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget currentPagePoint() {\n\t\treturn this.getCurrentPagePoint()\n\t}\n\n\tprivate _currentScreenPoint = atom<Vec>('currentScreenPoint', new Vec())\n\t/**\n\t * The most recent pointer position in screen space.\n\t */\n\tgetCurrentScreenPoint() {\n\t\treturn this._currentScreenPoint.get()\n\t}\n\t/**\n\t * @deprecated Use `getCurrentScreenPoint()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget currentScreenPoint() {\n\t\treturn this.getCurrentScreenPoint()\n\t}\n\n\tprivate _pointerVelocity = atom<Vec>('pointerVelocity', new Vec())\n\t/**\n\t * Velocity of mouse pointer, in pixels per millisecond.\n\t */\n\tgetPointerVelocity() {\n\t\treturn this._pointerVelocity.get()\n\t}\n\t/**\n\t * @deprecated Use `getPointerVelocity()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget pointerVelocity() {\n\t\treturn this.getPointerVelocity()\n\t}\n\n\t/**\n\t * Normally you shouldn't need to set the pointer velocity directly, this is set by the tick manager.\n\t * However, this is currently used in tests to fake pointer velocity.\n\t * @param pointerVelocity - The pointer velocity.\n\t * @internal\n\t */\n\tsetPointerVelocity(pointerVelocity: Vec) {\n\t\tthis._pointerVelocity.set(pointerVelocity)\n\t}\n\n\t/**\n\t * A set containing the currently pressed keys.\n\t */\n\treadonly keys = new AtomSet<string>('keys')\n\n\t/**\n\t * A set containing the currently pressed buttons.\n\t */\n\treadonly buttons = new AtomSet<number>('buttons')\n\n\tprivate _isPen = atom<boolean>('isPen', false)\n\n\t/**\n\t * Whether the input is from a pen.\n\t */\n\tgetIsPen() {\n\t\treturn this._isPen.get()\n\t}\n\t/**\n\t * @deprecated Use `getIsPen()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget isPen() {\n\t\treturn this.getIsPen()\n\t}\n\t// eslint-disable-next-line no-restricted-syntax\n\tset isPen(isPen: boolean) {\n\t\tthis.setIsPen(isPen)\n\t}\n\t/**\n\t * @param isPen - Whether the input is from a pen.\n\t */\n\tsetIsPen(isPen: boolean) {\n\t\tthis._isPen.set(isPen)\n\t}\n\n\tprivate _shiftKey = atom<boolean>('shiftKey', false)\n\t/**\n\t * Whether the shift key is currently pressed.\n\t */\n\tgetShiftKey() {\n\t\treturn this._shiftKey.get()\n\t}\n\t/**\n\t * @deprecated Use `getShiftKey()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget shiftKey() {\n\t\treturn this.getShiftKey()\n\t}\n\t// eslint-disable-next-line no-restricted-syntax\n\tset shiftKey(shiftKey: boolean) {\n\t\tthis.setShiftKey(shiftKey)\n\t}\n\t/**\n\t * @param shiftKey - Whether the shift key is pressed.\n\t * @internal\n\t */\n\tsetShiftKey(shiftKey: boolean) {\n\t\tthis._shiftKey.set(shiftKey)\n\t}\n\n\tprivate _metaKey = atom<boolean>('metaKey', false)\n\t/**\n\t * Whether the meta key is currently pressed.\n\t */\n\tgetMetaKey() {\n\t\treturn this._metaKey.get()\n\t}\n\t/**\n\t * @deprecated Use `getMetaKey()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget metaKey() {\n\t\treturn this.getMetaKey()\n\t}\n\t// eslint-disable-next-line no-restricted-syntax\n\tset metaKey(metaKey: boolean) {\n\t\tthis.setMetaKey(metaKey)\n\t}\n\t/**\n\t * @param metaKey - Whether the meta key is pressed.\n\t * @internal\n\t */\n\tsetMetaKey(metaKey: boolean) {\n\t\tthis._metaKey.set(metaKey)\n\t}\n\n\tprivate _ctrlKey = atom<boolean>('ctrlKey', false)\n\t/**\n\t * Whether the ctrl or command key is currently pressed.\n\t */\n\tgetCtrlKey() {\n\t\treturn this._ctrlKey.get()\n\t}\n\t/**\n\t * @deprecated Use `getCtrlKey()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget ctrlKey() {\n\t\treturn this.getCtrlKey()\n\t}\n\t// eslint-disable-next-line no-restricted-syntax\n\tset ctrlKey(ctrlKey: boolean) {\n\t\tthis.setCtrlKey(ctrlKey)\n\t}\n\t/**\n\t * @param ctrlKey - Whether the ctrl key is pressed.\n\t * @internal\n\t */\n\tsetCtrlKey(ctrlKey: boolean) {\n\t\tthis._ctrlKey.set(ctrlKey)\n\t}\n\n\tprivate _altKey = atom<boolean>('altKey', false)\n\t/**\n\t * Whether the alt or option key is currently pressed.\n\t */\n\tgetAltKey() {\n\t\treturn this._altKey.get()\n\t}\n\t/**\n\t * @deprecated Use `getAltKey()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget altKey() {\n\t\treturn this.getAltKey()\n\t}\n\t// eslint-disable-next-line no-restricted-syntax\n\tset altKey(altKey: boolean) {\n\t\tthis.setAltKey(altKey)\n\t}\n\t/**\n\t * @param altKey - Whether the alt key is pressed.\n\t * @internal\n\t */\n\tsetAltKey(altKey: boolean) {\n\t\tthis._altKey.set(altKey)\n\t}\n\n\t/**\n\t * Is the accelerator key (cmd on mac, ctrl elsewhere) currently pressed.\n\t */\n\tgetAccelKey() {\n\t\treturn isAccelKey({ metaKey: this.getMetaKey(), ctrlKey: this.getCtrlKey() })\n\t}\n\t/**\n\t * @deprecated Use `getAccelKey()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget accelKey() {\n\t\treturn this.getAccelKey()\n\t}\n\n\tprivate _isDragging = atom<boolean>('isDragging', false)\n\t/**\n\t * Whether the user is dragging.\n\t */\n\tgetIsDragging() {\n\t\treturn this._isDragging.get()\n\t}\n\t/**\n\t * Soon to be deprecated, use `getIsDragging()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget isDragging() {\n\t\treturn this.getIsDragging()\n\t}\n\t// eslint-disable-next-line no-restricted-syntax\n\tset isDragging(isDragging: boolean) {\n\t\tthis.setIsDragging(isDragging)\n\t}\n\t/**\n\t * @param isDragging - Whether the user is dragging.\n\t */\n\tsetIsDragging(isDragging: boolean) {\n\t\tthis._isDragging.set(isDragging)\n\t}\n\n\tprivate _isPointing = atom<boolean>('isPointing', false)\n\t/**\n\t * Whether the user is pointing.\n\t */\n\tgetIsPointing() {\n\t\treturn this._isPointing.get()\n\t}\n\t/**\n\t * @deprecated Use `getIsPointing()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget isPointing() {\n\t\treturn this.getIsPointing()\n\t}\n\t// eslint-disable-next-line no-restricted-syntax\n\tset isPointing(isPointing: boolean) {\n\t\tthis.setIsPointing(isPointing)\n\t}\n\t/**\n\t * @param isPointing - Whether the user is pointing.\n\t * @internal\n\t */\n\tsetIsPointing(isPointing: boolean) {\n\t\tthis._isPointing.set(isPointing)\n\t}\n\n\tprivate _isPinching = atom<boolean>('isPinching', false)\n\t/**\n\t * Whether the user is pinching.\n\t */\n\tgetIsPinching() {\n\t\treturn this._isPinching.get()\n\t}\n\t/**\n\t * @deprecated Use `getIsPinching()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget isPinching() {\n\t\treturn this.getIsPinching()\n\t}\n\t// eslint-disable-next-line no-restricted-syntax\n\tset isPinching(isPinching: boolean) {\n\t\tthis.setIsPinching(isPinching)\n\t}\n\t/**\n\t * @param isPinching - Whether the user is pinching.\n\t * @internal\n\t */\n\tsetIsPinching(isPinching: boolean) {\n\t\tthis._isPinching.set(isPinching)\n\t}\n\n\tprivate _isEditing = atom<boolean>('isEditing', false)\n\t/**\n\t * Whether the user is editing.\n\t */\n\tgetIsEditing() {\n\t\treturn this._isEditing.get()\n\t}\n\t/**\n\t * @deprecated Use `getIsEditing()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget isEditing() {\n\t\treturn this.getIsEditing()\n\t}\n\t// eslint-disable-next-line no-restricted-syntax\n\tset isEditing(isEditing: boolean) {\n\t\tthis.setIsEditing(isEditing)\n\t}\n\t/**\n\t * @param isEditing - Whether the user is editing.\n\t */\n\tsetIsEditing(isEditing: boolean) {\n\t\tthis._isEditing.set(isEditing)\n\t}\n\n\tprivate _isPanning = atom<boolean>('isPanning', false)\n\t/**\n\t * Whether the user is panning.\n\t */\n\tgetIsPanning() {\n\t\treturn this._isPanning.get()\n\t}\n\t/**\n\t * @deprecated Use `getIsPanning()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget isPanning() {\n\t\treturn this.getIsPanning()\n\t}\n\t// eslint-disable-next-line no-restricted-syntax\n\tset isPanning(isPanning: boolean) {\n\t\tthis.setIsPanning(isPanning)\n\t}\n\t/**\n\t * @param isPanning - Whether the user is panning.\n\t * @internal\n\t */\n\tsetIsPanning(isPanning: boolean) {\n\t\tthis._isPanning.set(isPanning)\n\t}\n\n\tprivate _isSpacebarPanning = atom<boolean>('isSpacebarPanning', false)\n\t/**\n\t * Whether the user is spacebar panning.\n\t */\n\tgetIsSpacebarPanning() {\n\t\treturn this._isSpacebarPanning.get()\n\t}\n\t/**\n\t * @deprecated Use `getIsSpacebarPanning()` instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget isSpacebarPanning() {\n\t\treturn this.getIsSpacebarPanning()\n\t}\n\t// eslint-disable-next-line no-restricted-syntax\n\tset isSpacebarPanning(isSpacebarPanning: boolean) {\n\t\tthis.setIsSpacebarPanning(isSpacebarPanning)\n\t}\n\t/**\n\t * @param isSpacebarPanning - Whether the user is spacebar panning.\n\t * @internal\n\t */\n\tsetIsSpacebarPanning(isSpacebarPanning: boolean) {\n\t\tthis._isSpacebarPanning.set(isSpacebarPanning)\n\t}\n\n\t@computed private _getHasCollaborators() {\n\t\treturn this.editor.getCollaborators().length > 0 // could we do this more efficiently?\n\t}\n\n\t/**\n\t * The previous point used for velocity calculation (updated each tick, not each pointer event).\n\t * @internal\n\t */\n\tprivate _velocityPrevPoint = new Vec()\n\n\t/**\n\t * Update the pointer velocity based on elapsed time. Called by the tick manager.\n\t * @param elapsed - The time elapsed since the last tick in milliseconds.\n\t * @internal\n\t */\n\tupdatePointerVelocity(elapsed: number) {\n\t\tconst currentScreenPoint = this.getCurrentScreenPoint()\n\t\tconst pointerVelocity = this.getPointerVelocity()\n\n\t\tif (elapsed === 0) return\n\n\t\tconst delta = Vec.Sub(currentScreenPoint, this._velocityPrevPoint)\n\t\tthis._velocityPrevPoint = currentScreenPoint.clone()\n\n\t\tconst length = delta.len()\n\t\tconst direction = length ? delta.div(length) : new Vec(0, 0)\n\n\t\t// consider adjusting this with an easing rather than a linear interpolation\n\t\tconst next = pointerVelocity.clone().lrp(direction.mul(length / elapsed), 0.5)\n\n\t\t// if the velocity is very small, just set it to 0\n\t\tif (Math.abs(next.x) < 0.01) next.x = 0\n\t\tif (Math.abs(next.y) < 0.01) next.y = 0\n\n\t\tif (!pointerVelocity.equals(next)) {\n\t\t\tthis._pointerVelocity.set(next)\n\t\t}\n\t}\n\n\t/**\n\t * Update the input points from a pointer, pinch, or wheel event.\n\t *\n\t * @param info - The event info.\n\t * @internal\n\t */\n\tupdateFromEvent(info: TLPointerEventInfo | TLPinchEventInfo | TLWheelEventInfo): void {\n\t\tconst currentScreenPoint = this._currentScreenPoint.__unsafe__getWithoutCapture()\n\t\tconst currentPagePoint = this._currentPagePoint.__unsafe__getWithoutCapture()\n\t\tconst isPinching = this._isPinching.__unsafe__getWithoutCapture()\n\t\tconst { screenBounds } = this.editor.store.unsafeGetWithoutCapture(TLINSTANCE_ID)!\n\t\tconst { x: cx, y: cy, z: cz } = unsafe__withoutCapture(() => this.editor.getCamera())\n\n\t\tconst sx = info.point.x - screenBounds.x\n\t\tconst sy = info.point.y - screenBounds.y\n\t\tconst sz = info.point.z ?? 0.5\n\n\t\tthis._previousScreenPoint.set(currentScreenPoint)\n\t\tthis._previousPagePoint.set(currentPagePoint)\n\n\t\t// The \"screen bounds\" is relative to the user's actual screen.\n\t\t// The \"screen point\" is relative to the \"screen bounds\";\n\t\t// it will be 0,0 when its actual screen position is equal\n\t\t// to screenBounds.point. This is confusing!\n\t\tthis._currentScreenPoint.set(new Vec(sx, sy))\n\t\tconst nx = sx / cz - cx\n\t\tconst ny = sy / cz - cy\n\t\tif (isFinite(nx) && isFinite(ny)) {\n\t\t\tthis._currentPagePoint.set(new Vec(nx, ny, sz))\n\t\t}\n\n\t\tthis._isPen.set(info.type === 'pointer' && info.isPen)\n\n\t\t// Reset velocity on pointer down, or when a pinch starts or ends\n\t\tif (info.name === 'pointer_down' || isPinching) {\n\t\t\tthis._pointerVelocity.set(new Vec())\n\t\t\tthis._originScreenPoint.set(this._currentScreenPoint.__unsafe__getWithoutCapture())\n\t\t\tthis._originPagePoint.set(this._currentPagePoint.__unsafe__getWithoutCapture())\n\t\t}\n\n\t\tif (this._getHasCollaborators()) {\n\t\t\tthis.editor.run(\n\t\t\t\t() => {\n\t\t\t\t\tconst pagePoint = this._currentPagePoint.__unsafe__getWithoutCapture()\n\t\t\t\t\tthis.editor.store.put([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: TLPOINTER_ID,\n\t\t\t\t\t\t\ttypeName: 'pointer',\n\t\t\t\t\t\t\tx: pagePoint.x,\n\t\t\t\t\t\t\ty: pagePoint.y,\n\t\t\t\t\t\t\tlastActivityTimestamp:\n\t\t\t\t\t\t\t\t// If our pointer moved only because we're following some other user, then don't\n\t\t\t\t\t\t\t\t// update our last activity timestamp; otherwise, update it to the current timestamp.\n\t\t\t\t\t\t\t\tinfo.type === 'pointer' && info.pointerId === INTERNAL_POINTER_IDS.CAMERA_MOVE\n\t\t\t\t\t\t\t\t\t? (this.editor.store.unsafeGetWithoutCapture(TLPOINTER_ID)\n\t\t\t\t\t\t\t\t\t\t\t?.lastActivityTimestamp ?? Date.now())\n\t\t\t\t\t\t\t\t\t: Date.now(),\n\t\t\t\t\t\t\tmeta: {},\n\t\t\t\t\t\t},\n\t\t\t\t\t])\n\t\t\t\t},\n\t\t\t\t{ history: 'ignore' }\n\t\t\t)\n\t\t}\n\t}\n\n\ttoJson() {\n\t\treturn {\n\t\t\toriginPagePoint: this._originPagePoint.get().toJson(),\n\t\t\toriginScreenPoint: this._originScreenPoint.get().toJson(),\n\t\t\tpreviousPagePoint: this._previousPagePoint.get().toJson(),\n\t\t\tpreviousScreenPoint: this._previousScreenPoint.get().toJson(),\n\t\t\tcurrentPagePoint: this._currentPagePoint.get().toJson(),\n\t\t\tcurrentScreenPoint: this._currentScreenPoint.get().toJson(),\n\t\t\tpointerVelocity: this._pointerVelocity.get().toJson(),\n\t\t\tshiftKey: this._shiftKey.get(),\n\t\t\tmetaKey: this._metaKey.get(),\n\t\t\tctrlKey: this._ctrlKey.get(),\n\t\t\taltKey: this._altKey.get(),\n\t\t\tisPen: this._isPen.get(),\n\t\t\tisDragging: this._isDragging.get(),\n\t\t\tisPointing: this._isPointing.get(),\n\t\t\tisPinching: this._isPinching.get(),\n\t\t\tisEditing: this._isEditing.get(),\n\t\t\tisPanning: this._isPanning.get(),\n\t\t\tisSpacebarPanning: this._isSpacebarPanning.get(),\n\t\t\tkeys: Array.from(this.keys.keys()),\n\t\t\tbuttons: Array.from(this.buttons.keys()),\n\t\t}\n\t}\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { atom, computed, unsafe__withoutCapture } from '@tldraw/state'\nimport { AtomSet } from '@tldraw/store'\nimport { TLINSTANCE_ID, TLPOINTER_ID } from '@tldraw/tlschema'\nimport { INTERNAL_POINTER_IDS } from '../../../constants'\nimport { Vec } from '../../../primitives/Vec'\nimport { isAccelKey } from '../../../utils/keyboard'\nimport type { Editor } from '../../Editor'\nimport { TLPinchEventInfo, TLPointerEventInfo, TLWheelEventInfo } from '../../types/event-types'\n\n/** @public */\nexport class InputsManager {\n\tconstructor(private readonly editor: Editor) {}\n\n\tprivate _originPagePoint = atom<Vec>('originPagePoint', new Vec())\n\t/**\n\t * The most recent pointer down's position in the current page space.\n\t */\n\tgetOriginPagePoint() {\n\t\treturn this._originPagePoint.get()\n\t}\n\t/**\n\t * @deprecated Use `getOriginPagePoint()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget originPagePoint() {\n\t\treturn this.getOriginPagePoint()\n\t}\n\n\tprivate _originScreenPoint = atom<Vec>('originScreenPoint', new Vec())\n\t/**\n\t * The most recent pointer down's position in screen space.\n\t */\n\tgetOriginScreenPoint() {\n\t\treturn this._originScreenPoint.get()\n\t}\n\t/**\n\t * @deprecated Use `getOriginScreenPoint()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget originScreenPoint() {\n\t\treturn this.getOriginScreenPoint()\n\t}\n\n\tprivate _previousPagePoint = atom<Vec>('previousPagePoint', new Vec())\n\t/**\n\t * The previous pointer position in the current page space.\n\t */\n\tgetPreviousPagePoint() {\n\t\treturn this._previousPagePoint.get()\n\t}\n\t/**\n\t * @deprecated Use `getPreviousPagePoint()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget previousPagePoint() {\n\t\treturn this.getPreviousPagePoint()\n\t}\n\n\tprivate _previousScreenPoint = atom<Vec>('previousScreenPoint', new Vec())\n\t/**\n\t * The previous pointer position in screen space.\n\t */\n\tgetPreviousScreenPoint() {\n\t\treturn this._previousScreenPoint.get()\n\t}\n\t/**\n\t * @deprecated Use `getPreviousScreenPoint()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget previousScreenPoint() {\n\t\treturn this.getPreviousScreenPoint()\n\t}\n\n\tprivate _currentPagePoint = atom<Vec>('currentPagePoint', new Vec())\n\t/**\n\t * The most recent pointer position in the current page space.\n\t */\n\tgetCurrentPagePoint() {\n\t\treturn this._currentPagePoint.get()\n\t}\n\t/**\n\t * @deprecated Use `getCurrentPagePoint()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget currentPagePoint() {\n\t\treturn this.getCurrentPagePoint()\n\t}\n\n\tprivate _currentScreenPoint = atom<Vec>('currentScreenPoint', new Vec())\n\t/**\n\t * The most recent pointer position in screen space.\n\t */\n\tgetCurrentScreenPoint() {\n\t\treturn this._currentScreenPoint.get()\n\t}\n\t/**\n\t * @deprecated Use `getCurrentScreenPoint()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget currentScreenPoint() {\n\t\treturn this.getCurrentScreenPoint()\n\t}\n\n\tprivate _pointerVelocity = atom<Vec>('pointerVelocity', new Vec())\n\t/**\n\t * Velocity of mouse pointer, in pixels per millisecond.\n\t */\n\tgetPointerVelocity() {\n\t\treturn this._pointerVelocity.get()\n\t}\n\t/**\n\t * @deprecated Use `getPointerVelocity()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget pointerVelocity() {\n\t\treturn this.getPointerVelocity()\n\t}\n\n\t/**\n\t * Normally you shouldn't need to set the pointer velocity directly, this is set by the tick manager.\n\t * However, this is currently used in tests to fake pointer velocity.\n\t * @param pointerVelocity - The pointer velocity.\n\t * @internal\n\t */\n\tsetPointerVelocity(pointerVelocity: Vec) {\n\t\tthis._pointerVelocity.set(pointerVelocity)\n\t}\n\n\t/**\n\t * A set containing the currently pressed keys.\n\t */\n\treadonly keys = new AtomSet<string>('keys')\n\n\t/**\n\t * A set containing the currently pressed buttons.\n\t */\n\treadonly buttons = new AtomSet<number>('buttons')\n\n\tprivate _isPen = atom<boolean>('isPen', false)\n\n\t/**\n\t * Whether the input is from a pen.\n\t */\n\tgetIsPen() {\n\t\treturn this._isPen.get()\n\t}\n\t/**\n\t * @deprecated Use `getIsPen()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget isPen() {\n\t\treturn this.getIsPen()\n\t}\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tset isPen(isPen: boolean) {\n\t\tthis.setIsPen(isPen)\n\t}\n\t/**\n\t * @param isPen - Whether the input is from a pen.\n\t */\n\tsetIsPen(isPen: boolean) {\n\t\tthis._isPen.set(isPen)\n\t}\n\n\tprivate _shiftKey = atom<boolean>('shiftKey', false)\n\t/**\n\t * Whether the shift key is currently pressed.\n\t */\n\tgetShiftKey() {\n\t\treturn this._shiftKey.get()\n\t}\n\t/**\n\t * @deprecated Use `getShiftKey()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget shiftKey() {\n\t\treturn this.getShiftKey()\n\t}\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tset shiftKey(shiftKey: boolean) {\n\t\tthis.setShiftKey(shiftKey)\n\t}\n\t/**\n\t * @param shiftKey - Whether the shift key is pressed.\n\t * @internal\n\t */\n\tsetShiftKey(shiftKey: boolean) {\n\t\tthis._shiftKey.set(shiftKey)\n\t}\n\n\tprivate _metaKey = atom<boolean>('metaKey', false)\n\t/**\n\t * Whether the meta key is currently pressed.\n\t */\n\tgetMetaKey() {\n\t\treturn this._metaKey.get()\n\t}\n\t/**\n\t * @deprecated Use `getMetaKey()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget metaKey() {\n\t\treturn this.getMetaKey()\n\t}\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tset metaKey(metaKey: boolean) {\n\t\tthis.setMetaKey(metaKey)\n\t}\n\t/**\n\t * @param metaKey - Whether the meta key is pressed.\n\t * @internal\n\t */\n\tsetMetaKey(metaKey: boolean) {\n\t\tthis._metaKey.set(metaKey)\n\t}\n\n\tprivate _ctrlKey = atom<boolean>('ctrlKey', false)\n\t/**\n\t * Whether the ctrl or command key is currently pressed.\n\t */\n\tgetCtrlKey() {\n\t\treturn this._ctrlKey.get()\n\t}\n\t/**\n\t * @deprecated Use `getCtrlKey()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget ctrlKey() {\n\t\treturn this.getCtrlKey()\n\t}\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tset ctrlKey(ctrlKey: boolean) {\n\t\tthis.setCtrlKey(ctrlKey)\n\t}\n\t/**\n\t * @param ctrlKey - Whether the ctrl key is pressed.\n\t * @internal\n\t */\n\tsetCtrlKey(ctrlKey: boolean) {\n\t\tthis._ctrlKey.set(ctrlKey)\n\t}\n\n\tprivate _altKey = atom<boolean>('altKey', false)\n\t/**\n\t * Whether the alt or option key is currently pressed.\n\t */\n\tgetAltKey() {\n\t\treturn this._altKey.get()\n\t}\n\t/**\n\t * @deprecated Use `getAltKey()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget altKey() {\n\t\treturn this.getAltKey()\n\t}\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tset altKey(altKey: boolean) {\n\t\tthis.setAltKey(altKey)\n\t}\n\t/**\n\t * @param altKey - Whether the alt key is pressed.\n\t * @internal\n\t */\n\tsetAltKey(altKey: boolean) {\n\t\tthis._altKey.set(altKey)\n\t}\n\n\t/**\n\t * Is the accelerator key (cmd on mac, ctrl elsewhere) currently pressed.\n\t */\n\tgetAccelKey() {\n\t\treturn isAccelKey({ metaKey: this.getMetaKey(), ctrlKey: this.getCtrlKey() })\n\t}\n\t/**\n\t * @deprecated Use `getAccelKey()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget accelKey() {\n\t\treturn this.getAccelKey()\n\t}\n\n\tprivate _isDragging = atom<boolean>('isDragging', false)\n\t/**\n\t * Whether the user is dragging.\n\t */\n\tgetIsDragging() {\n\t\treturn this._isDragging.get()\n\t}\n\t/**\n\t * Soon to be deprecated, use `getIsDragging()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget isDragging() {\n\t\treturn this.getIsDragging()\n\t}\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tset isDragging(isDragging: boolean) {\n\t\tthis.setIsDragging(isDragging)\n\t}\n\t/**\n\t * @param isDragging - Whether the user is dragging.\n\t */\n\tsetIsDragging(isDragging: boolean) {\n\t\tthis._isDragging.set(isDragging)\n\t}\n\n\tprivate _isPointing = atom<boolean>('isPointing', false)\n\t/**\n\t * Whether the user is pointing.\n\t */\n\tgetIsPointing() {\n\t\treturn this._isPointing.get()\n\t}\n\t/**\n\t * @deprecated Use `getIsPointing()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget isPointing() {\n\t\treturn this.getIsPointing()\n\t}\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tset isPointing(isPointing: boolean) {\n\t\tthis.setIsPointing(isPointing)\n\t}\n\t/**\n\t * @param isPointing - Whether the user is pointing.\n\t * @internal\n\t */\n\tsetIsPointing(isPointing: boolean) {\n\t\tthis._isPointing.set(isPointing)\n\t}\n\n\tprivate _isPinching = atom<boolean>('isPinching', false)\n\t/**\n\t * Whether the user is pinching.\n\t */\n\tgetIsPinching() {\n\t\treturn this._isPinching.get()\n\t}\n\t/**\n\t * @deprecated Use `getIsPinching()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget isPinching() {\n\t\treturn this.getIsPinching()\n\t}\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tset isPinching(isPinching: boolean) {\n\t\tthis.setIsPinching(isPinching)\n\t}\n\t/**\n\t * @param isPinching - Whether the user is pinching.\n\t * @internal\n\t */\n\tsetIsPinching(isPinching: boolean) {\n\t\tthis._isPinching.set(isPinching)\n\t}\n\n\tprivate _isEditing = atom<boolean>('isEditing', false)\n\t/**\n\t * Whether the user is editing.\n\t */\n\tgetIsEditing() {\n\t\treturn this._isEditing.get()\n\t}\n\t/**\n\t * @deprecated Use `getIsEditing()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget isEditing() {\n\t\treturn this.getIsEditing()\n\t}\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tset isEditing(isEditing: boolean) {\n\t\tthis.setIsEditing(isEditing)\n\t}\n\t/**\n\t * @param isEditing - Whether the user is editing.\n\t */\n\tsetIsEditing(isEditing: boolean) {\n\t\tthis._isEditing.set(isEditing)\n\t}\n\n\tprivate _isPanning = atom<boolean>('isPanning', false)\n\t/**\n\t * Whether the user is panning.\n\t */\n\tgetIsPanning() {\n\t\treturn this._isPanning.get()\n\t}\n\t/**\n\t * @deprecated Use `getIsPanning()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget isPanning() {\n\t\treturn this.getIsPanning()\n\t}\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tset isPanning(isPanning: boolean) {\n\t\tthis.setIsPanning(isPanning)\n\t}\n\t/**\n\t * @param isPanning - Whether the user is panning.\n\t * @internal\n\t */\n\tsetIsPanning(isPanning: boolean) {\n\t\tthis._isPanning.set(isPanning)\n\t}\n\n\tprivate _isSpacebarPanning = atom<boolean>('isSpacebarPanning', false)\n\t/**\n\t * Whether the user is spacebar panning.\n\t */\n\tgetIsSpacebarPanning() {\n\t\treturn this._isSpacebarPanning.get()\n\t}\n\t/**\n\t * @deprecated Use `getIsSpacebarPanning()` instead.\n\t */\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tget isSpacebarPanning() {\n\t\treturn this.getIsSpacebarPanning()\n\t}\n\t// eslint-disable-next-line tldraw/no-setter-getter\n\tset isSpacebarPanning(isSpacebarPanning: boolean) {\n\t\tthis.setIsSpacebarPanning(isSpacebarPanning)\n\t}\n\t/**\n\t * @param isSpacebarPanning - Whether the user is spacebar panning.\n\t * @internal\n\t */\n\tsetIsSpacebarPanning(isSpacebarPanning: boolean) {\n\t\tthis._isSpacebarPanning.set(isSpacebarPanning)\n\t}\n\n\t@computed private _getHasCollaborators() {\n\t\treturn this.editor.getCollaborators().length > 0 // could we do this more efficiently?\n\t}\n\n\t/**\n\t * The previous point used for velocity calculation (updated each tick, not each pointer event).\n\t * @internal\n\t */\n\tprivate _velocityPrevPoint = new Vec()\n\n\t/**\n\t * Update the pointer velocity based on elapsed time. Called by the tick manager.\n\t * @param elapsed - The time elapsed since the last tick in milliseconds.\n\t * @internal\n\t */\n\tupdatePointerVelocity(elapsed: number) {\n\t\tconst currentScreenPoint = this.getCurrentScreenPoint()\n\t\tconst pointerVelocity = this.getPointerVelocity()\n\n\t\tif (elapsed === 0) return\n\n\t\tconst delta = Vec.Sub(currentScreenPoint, this._velocityPrevPoint)\n\t\tthis._velocityPrevPoint = currentScreenPoint.clone()\n\n\t\tconst length = delta.len()\n\t\tconst direction = length ? delta.div(length) : new Vec(0, 0)\n\n\t\t// consider adjusting this with an easing rather than a linear interpolation\n\t\tconst next = pointerVelocity.clone().lrp(direction.mul(length / elapsed), 0.5)\n\n\t\t// if the velocity is very small, just set it to 0\n\t\tif (Math.abs(next.x) < 0.01) next.x = 0\n\t\tif (Math.abs(next.y) < 0.01) next.y = 0\n\n\t\tif (!pointerVelocity.equals(next)) {\n\t\t\tthis._pointerVelocity.set(next)\n\t\t}\n\t}\n\n\t/**\n\t * Update the input points from a pointer, pinch, or wheel event.\n\t *\n\t * @param info - The event info.\n\t * @internal\n\t */\n\tupdateFromEvent(info: TLPointerEventInfo | TLPinchEventInfo | TLWheelEventInfo): void {\n\t\tconst currentScreenPoint = this._currentScreenPoint.__unsafe__getWithoutCapture()\n\t\tconst currentPagePoint = this._currentPagePoint.__unsafe__getWithoutCapture()\n\t\tconst isPinching = this._isPinching.__unsafe__getWithoutCapture()\n\t\tconst { screenBounds } = this.editor.store.unsafeGetWithoutCapture(TLINSTANCE_ID)!\n\t\tconst { x: cx, y: cy, z: cz } = unsafe__withoutCapture(() => this.editor.getCamera())\n\n\t\tconst sx = info.point.x - screenBounds.x\n\t\tconst sy = info.point.y - screenBounds.y\n\t\tconst sz = info.point.z ?? 0.5\n\n\t\tthis._previousScreenPoint.set(currentScreenPoint)\n\t\tthis._previousPagePoint.set(currentPagePoint)\n\n\t\t// The \"screen bounds\" is relative to the user's actual screen.\n\t\t// The \"screen point\" is relative to the \"screen bounds\";\n\t\t// it will be 0,0 when its actual screen position is equal\n\t\t// to screenBounds.point. This is confusing!\n\t\tthis._currentScreenPoint.set(new Vec(sx, sy))\n\t\tconst nx = sx / cz - cx\n\t\tconst ny = sy / cz - cy\n\t\tif (isFinite(nx) && isFinite(ny)) {\n\t\t\tthis._currentPagePoint.set(new Vec(nx, ny, sz))\n\t\t}\n\n\t\tthis._isPen.set(info.type === 'pointer' && info.isPen)\n\n\t\t// Reset velocity on pointer down, or when a pinch starts or ends\n\t\tif (info.name === 'pointer_down' || isPinching) {\n\t\t\tthis._pointerVelocity.set(new Vec())\n\t\t\tthis._originScreenPoint.set(this._currentScreenPoint.__unsafe__getWithoutCapture())\n\t\t\tthis._originPagePoint.set(this._currentPagePoint.__unsafe__getWithoutCapture())\n\t\t}\n\n\t\tif (this._getHasCollaborators()) {\n\t\t\tthis.editor.run(\n\t\t\t\t() => {\n\t\t\t\t\tconst pagePoint = this._currentPagePoint.__unsafe__getWithoutCapture()\n\t\t\t\t\tthis.editor.store.put([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: TLPOINTER_ID,\n\t\t\t\t\t\t\ttypeName: 'pointer',\n\t\t\t\t\t\t\tx: pagePoint.x,\n\t\t\t\t\t\t\ty: pagePoint.y,\n\t\t\t\t\t\t\tlastActivityTimestamp:\n\t\t\t\t\t\t\t\t// If our pointer moved only because we're following some other user, then don't\n\t\t\t\t\t\t\t\t// update our last activity timestamp; otherwise, update it to the current timestamp.\n\t\t\t\t\t\t\t\tinfo.type === 'pointer' && info.pointerId === INTERNAL_POINTER_IDS.CAMERA_MOVE\n\t\t\t\t\t\t\t\t\t? (this.editor.store.unsafeGetWithoutCapture(TLPOINTER_ID)\n\t\t\t\t\t\t\t\t\t\t\t?.lastActivityTimestamp ?? Date.now())\n\t\t\t\t\t\t\t\t\t: Date.now(),\n\t\t\t\t\t\t\tmeta: {},\n\t\t\t\t\t\t},\n\t\t\t\t\t])\n\t\t\t\t},\n\t\t\t\t{ history: 'ignore' }\n\t\t\t)\n\t\t}\n\t}\n\n\ttoJson() {\n\t\treturn {\n\t\t\toriginPagePoint: this._originPagePoint.get().toJson(),\n\t\t\toriginScreenPoint: this._originScreenPoint.get().toJson(),\n\t\t\tpreviousPagePoint: this._previousPagePoint.get().toJson(),\n\t\t\tpreviousScreenPoint: this._previousScreenPoint.get().toJson(),\n\t\t\tcurrentPagePoint: this._currentPagePoint.get().toJson(),\n\t\t\tcurrentScreenPoint: this._currentScreenPoint.get().toJson(),\n\t\t\tpointerVelocity: this._pointerVelocity.get().toJson(),\n\t\t\tshiftKey: this._shiftKey.get(),\n\t\t\tmetaKey: this._metaKey.get(),\n\t\t\tctrlKey: this._ctrlKey.get(),\n\t\t\taltKey: this._altKey.get(),\n\t\t\tisPen: this._isPen.get(),\n\t\t\tisDragging: this._isDragging.get(),\n\t\t\tisPointing: this._isPointing.get(),\n\t\t\tisPinching: this._isPinching.get(),\n\t\t\tisEditing: this._isEditing.get(),\n\t\t\tisPanning: this._isPanning.get(),\n\t\t\tisSpacebarPanning: this._isSpacebarPanning.get(),\n\t\t\tkeys: Array.from(this.keys.keys()),\n\t\t\tbuttons: Array.from(this.buttons.keys()),\n\t\t}\n\t}\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }