@tldraw/editor 4.6.0-next.fecc64eee134 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/dist-cjs/index.d.ts +493 -170
  2. package/dist-cjs/index.js +14 -23
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/TldrawEditor.js +3 -0
  5. package/dist-cjs/lib/TldrawEditor.js.map +2 -2
  6. package/dist-cjs/lib/components/MenuClickCapture.js +93 -47
  7. package/dist-cjs/lib/components/MenuClickCapture.js.map +2 -2
  8. package/dist-cjs/lib/components/default-components/CanvasOverlays.js +180 -0
  9. package/dist-cjs/lib/components/default-components/CanvasOverlays.js.map +7 -0
  10. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +46 -248
  11. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +3 -3
  12. package/dist-cjs/lib/editor/Editor.js +142 -33
  13. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  14. package/dist-cjs/lib/editor/assets/AssetUtil.js +1 -0
  15. package/dist-cjs/lib/editor/assets/AssetUtil.js.map +1 -1
  16. package/dist-cjs/lib/editor/bindings/BindingUtil.js +1 -0
  17. package/dist-cjs/lib/editor/bindings/BindingUtil.js.map +1 -1
  18. package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js +1 -0
  19. package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js.map +1 -1
  20. package/dist-cjs/lib/editor/managers/CollaboratorsManager/CollaboratorsManager.js +98 -0
  21. package/dist-cjs/lib/editor/managers/CollaboratorsManager/CollaboratorsManager.js.map +7 -0
  22. package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js +1 -0
  23. package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js.map +1 -1
  24. package/dist-cjs/lib/editor/managers/FocusManager/FocusManager.js +1 -0
  25. package/dist-cjs/lib/editor/managers/FocusManager/FocusManager.js.map +1 -1
  26. package/dist-cjs/lib/editor/managers/FontManager/FontManager.js +2 -0
  27. package/dist-cjs/lib/editor/managers/FontManager/FontManager.js.map +1 -1
  28. package/dist-cjs/lib/editor/managers/HistoryManager/HistoryManager.js +2 -0
  29. package/dist-cjs/lib/editor/managers/HistoryManager/HistoryManager.js.map +1 -1
  30. package/dist-cjs/lib/editor/managers/InputsManager/InputsManager.js +12 -0
  31. package/dist-cjs/lib/editor/managers/InputsManager/InputsManager.js.map +2 -2
  32. package/dist-cjs/lib/editor/managers/ScribbleManager/ScribbleManager.js +1 -0
  33. package/dist-cjs/lib/editor/managers/ScribbleManager/ScribbleManager.js.map +1 -1
  34. package/dist-cjs/lib/editor/managers/SnapManager/BoundsSnaps.js +1 -0
  35. package/dist-cjs/lib/editor/managers/SnapManager/BoundsSnaps.js.map +1 -1
  36. package/dist-cjs/lib/editor/managers/SnapManager/HandleSnaps.js +1 -0
  37. package/dist-cjs/lib/editor/managers/SnapManager/HandleSnaps.js.map +1 -1
  38. package/dist-cjs/lib/editor/managers/SnapManager/SnapManager.js +2 -1
  39. package/dist-cjs/lib/editor/managers/SnapManager/SnapManager.js.map +2 -2
  40. package/dist-cjs/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.js +1 -0
  41. package/dist-cjs/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.js.map +1 -1
  42. package/dist-cjs/lib/editor/managers/TextManager/TextManager.js +1 -0
  43. package/dist-cjs/lib/editor/managers/TextManager/TextManager.js.map +1 -1
  44. package/dist-cjs/lib/editor/managers/ThemeManager/ThemeManager.js +1 -0
  45. package/dist-cjs/lib/editor/managers/ThemeManager/ThemeManager.js.map +1 -1
  46. package/dist-cjs/lib/editor/managers/ThemeManager/defaultThemes.js +14 -0
  47. package/dist-cjs/lib/editor/managers/ThemeManager/defaultThemes.js.map +2 -2
  48. package/dist-cjs/lib/editor/managers/TickManager/TickManager.js +1 -0
  49. package/dist-cjs/lib/editor/managers/TickManager/TickManager.js.map +1 -1
  50. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js +2 -0
  51. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js.map +1 -1
  52. package/dist-cjs/lib/editor/overlays/OverlayManager.js +154 -0
  53. package/dist-cjs/lib/editor/overlays/OverlayManager.js.map +7 -0
  54. package/dist-cjs/lib/editor/overlays/OverlayUtil.js +92 -0
  55. package/dist-cjs/lib/editor/overlays/OverlayUtil.js.map +7 -0
  56. package/dist-cjs/lib/editor/overlays/ShapeIndicatorOverlayUtil.js +161 -0
  57. package/dist-cjs/lib/editor/overlays/ShapeIndicatorOverlayUtil.js.map +7 -0
  58. package/dist-cjs/lib/editor/overlays/getOverlayDisplayValues.js +39 -0
  59. package/dist-cjs/lib/editor/overlays/getOverlayDisplayValues.js.map +7 -0
  60. package/dist-cjs/lib/editor/shapes/BaseFrameLikeShapeUtil.js +79 -0
  61. package/dist-cjs/lib/editor/shapes/BaseFrameLikeShapeUtil.js.map +7 -0
  62. package/dist-cjs/lib/editor/shapes/ShapeUtil.js +36 -23
  63. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
  64. package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js +32 -2
  65. package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js.map +2 -2
  66. package/dist-cjs/lib/editor/tools/StateNode.js +1 -0
  67. package/dist-cjs/lib/editor/tools/StateNode.js.map +1 -1
  68. package/dist-cjs/lib/editor/types/event-types.js.map +2 -2
  69. package/dist-cjs/lib/exports/ExportDelay.js +1 -0
  70. package/dist-cjs/lib/exports/ExportDelay.js.map +1 -1
  71. package/dist-cjs/lib/exports/StyleEmbedder.js +1 -0
  72. package/dist-cjs/lib/exports/StyleEmbedder.js.map +1 -1
  73. package/dist-cjs/lib/exports/fetchCache.js +1 -1
  74. package/dist-cjs/lib/exports/fetchCache.js.map +2 -2
  75. package/dist-cjs/lib/exports/getSvgJsx.js +2 -1
  76. package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
  77. package/dist-cjs/lib/hooks/EditorComponentsContext.js.map +2 -2
  78. package/dist-cjs/lib/hooks/useCanvasEvents.js +25 -4
  79. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  80. package/dist-cjs/lib/hooks/useEditorComponents.js +0 -28
  81. package/dist-cjs/lib/hooks/useEditorComponents.js.map +2 -2
  82. package/dist-cjs/lib/hooks/usePeerIds.js +1 -36
  83. package/dist-cjs/lib/hooks/usePeerIds.js.map +2 -2
  84. package/dist-cjs/lib/hooks/useShapeCulling.js +2 -1
  85. package/dist-cjs/lib/hooks/useShapeCulling.js.map +2 -2
  86. package/dist-cjs/lib/options.js +1 -0
  87. package/dist-cjs/lib/options.js.map +2 -2
  88. package/dist-cjs/lib/primitives/Vec.js +3 -0
  89. package/dist-cjs/lib/primitives/Vec.js.map +1 -1
  90. package/dist-cjs/lib/primitives/geometry/Circle2d.js +1 -0
  91. package/dist-cjs/lib/primitives/geometry/Circle2d.js.map +1 -1
  92. package/dist-cjs/lib/primitives/geometry/Ellipse2d.js +1 -0
  93. package/dist-cjs/lib/primitives/geometry/Ellipse2d.js.map +1 -1
  94. package/dist-cjs/lib/primitives/geometry/Geometry2d.js +2 -0
  95. package/dist-cjs/lib/primitives/geometry/Geometry2d.js.map +1 -1
  96. package/dist-cjs/lib/primitives/geometry/Stadium2d.js +1 -0
  97. package/dist-cjs/lib/primitives/geometry/Stadium2d.js.map +1 -1
  98. package/dist-cjs/lib/utils/EditorAtom.js +2 -0
  99. package/dist-cjs/lib/utils/EditorAtom.js.map +1 -1
  100. package/dist-cjs/lib/utils/reparenting.js +20 -7
  101. package/dist-cjs/lib/utils/reparenting.js.map +2 -2
  102. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js +5 -0
  103. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js.map +2 -2
  104. package/dist-cjs/version.js +4 -4
  105. package/dist-cjs/version.js.map +1 -1
  106. package/dist-esm/index.d.mts +493 -170
  107. package/dist-esm/index.mjs +21 -41
  108. package/dist-esm/index.mjs.map +2 -2
  109. package/dist-esm/lib/TldrawEditor.mjs +3 -0
  110. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  111. package/dist-esm/lib/components/MenuClickCapture.mjs +94 -48
  112. package/dist-esm/lib/components/MenuClickCapture.mjs.map +2 -2
  113. package/dist-esm/lib/components/default-components/CanvasOverlays.mjs +160 -0
  114. package/dist-esm/lib/components/default-components/CanvasOverlays.mjs.map +7 -0
  115. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +47 -249
  116. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +3 -3
  117. package/dist-esm/lib/editor/Editor.mjs +143 -35
  118. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  119. package/dist-esm/lib/editor/assets/AssetUtil.mjs +1 -0
  120. package/dist-esm/lib/editor/assets/AssetUtil.mjs.map +1 -1
  121. package/dist-esm/lib/editor/bindings/BindingUtil.mjs +1 -0
  122. package/dist-esm/lib/editor/bindings/BindingUtil.mjs.map +1 -1
  123. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs +1 -0
  124. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs.map +1 -1
  125. package/dist-esm/lib/editor/managers/CollaboratorsManager/CollaboratorsManager.mjs +83 -0
  126. package/dist-esm/lib/editor/managers/CollaboratorsManager/CollaboratorsManager.mjs.map +7 -0
  127. package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs +1 -0
  128. package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs.map +1 -1
  129. package/dist-esm/lib/editor/managers/FocusManager/FocusManager.mjs +1 -0
  130. package/dist-esm/lib/editor/managers/FocusManager/FocusManager.mjs.map +1 -1
  131. package/dist-esm/lib/editor/managers/FontManager/FontManager.mjs +2 -0
  132. package/dist-esm/lib/editor/managers/FontManager/FontManager.mjs.map +1 -1
  133. package/dist-esm/lib/editor/managers/HistoryManager/HistoryManager.mjs +2 -0
  134. package/dist-esm/lib/editor/managers/HistoryManager/HistoryManager.mjs.map +1 -1
  135. package/dist-esm/lib/editor/managers/InputsManager/InputsManager.mjs +12 -0
  136. package/dist-esm/lib/editor/managers/InputsManager/InputsManager.mjs.map +2 -2
  137. package/dist-esm/lib/editor/managers/ScribbleManager/ScribbleManager.mjs +1 -0
  138. package/dist-esm/lib/editor/managers/ScribbleManager/ScribbleManager.mjs.map +1 -1
  139. package/dist-esm/lib/editor/managers/SnapManager/BoundsSnaps.mjs +1 -0
  140. package/dist-esm/lib/editor/managers/SnapManager/BoundsSnaps.mjs.map +1 -1
  141. package/dist-esm/lib/editor/managers/SnapManager/HandleSnaps.mjs +1 -0
  142. package/dist-esm/lib/editor/managers/SnapManager/HandleSnaps.mjs.map +1 -1
  143. package/dist-esm/lib/editor/managers/SnapManager/SnapManager.mjs +2 -1
  144. package/dist-esm/lib/editor/managers/SnapManager/SnapManager.mjs.map +2 -2
  145. package/dist-esm/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.mjs +1 -0
  146. package/dist-esm/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.mjs.map +1 -1
  147. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs +1 -0
  148. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs.map +1 -1
  149. package/dist-esm/lib/editor/managers/ThemeManager/ThemeManager.mjs +1 -0
  150. package/dist-esm/lib/editor/managers/ThemeManager/ThemeManager.mjs.map +1 -1
  151. package/dist-esm/lib/editor/managers/ThemeManager/defaultThemes.mjs +14 -0
  152. package/dist-esm/lib/editor/managers/ThemeManager/defaultThemes.mjs.map +2 -2
  153. package/dist-esm/lib/editor/managers/TickManager/TickManager.mjs +1 -0
  154. package/dist-esm/lib/editor/managers/TickManager/TickManager.mjs.map +1 -1
  155. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs +2 -0
  156. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +1 -1
  157. package/dist-esm/lib/editor/overlays/OverlayManager.mjs +136 -0
  158. package/dist-esm/lib/editor/overlays/OverlayManager.mjs.map +7 -0
  159. package/dist-esm/lib/editor/overlays/OverlayUtil.mjs +72 -0
  160. package/dist-esm/lib/editor/overlays/OverlayUtil.mjs.map +7 -0
  161. package/dist-esm/lib/editor/overlays/ShapeIndicatorOverlayUtil.mjs +141 -0
  162. package/dist-esm/lib/editor/overlays/ShapeIndicatorOverlayUtil.mjs.map +7 -0
  163. package/dist-esm/lib/editor/overlays/getOverlayDisplayValues.mjs +19 -0
  164. package/dist-esm/lib/editor/overlays/getOverlayDisplayValues.mjs.map +7 -0
  165. package/dist-esm/lib/editor/shapes/BaseFrameLikeShapeUtil.mjs +59 -0
  166. package/dist-esm/lib/editor/shapes/BaseFrameLikeShapeUtil.mjs.map +7 -0
  167. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +36 -23
  168. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  169. package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs +32 -2
  170. package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs.map +2 -2
  171. package/dist-esm/lib/editor/tools/StateNode.mjs +1 -0
  172. package/dist-esm/lib/editor/tools/StateNode.mjs.map +1 -1
  173. package/dist-esm/lib/editor/types/event-types.mjs.map +2 -2
  174. package/dist-esm/lib/exports/ExportDelay.mjs +1 -0
  175. package/dist-esm/lib/exports/ExportDelay.mjs.map +1 -1
  176. package/dist-esm/lib/exports/StyleEmbedder.mjs +1 -0
  177. package/dist-esm/lib/exports/StyleEmbedder.mjs.map +1 -1
  178. package/dist-esm/lib/exports/fetchCache.mjs +2 -2
  179. package/dist-esm/lib/exports/fetchCache.mjs.map +2 -2
  180. package/dist-esm/lib/exports/getSvgJsx.mjs +2 -1
  181. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  182. package/dist-esm/lib/hooks/EditorComponentsContext.mjs.map +2 -2
  183. package/dist-esm/lib/hooks/useCanvasEvents.mjs +25 -4
  184. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  185. package/dist-esm/lib/hooks/useEditorComponents.mjs +0 -28
  186. package/dist-esm/lib/hooks/useEditorComponents.mjs.map +2 -2
  187. package/dist-esm/lib/hooks/usePeerIds.mjs +2 -40
  188. package/dist-esm/lib/hooks/usePeerIds.mjs.map +2 -2
  189. package/dist-esm/lib/hooks/useShapeCulling.mjs +2 -1
  190. package/dist-esm/lib/hooks/useShapeCulling.mjs.map +2 -2
  191. package/dist-esm/lib/options.mjs +1 -0
  192. package/dist-esm/lib/options.mjs.map +2 -2
  193. package/dist-esm/lib/primitives/Vec.mjs +3 -0
  194. package/dist-esm/lib/primitives/Vec.mjs.map +1 -1
  195. package/dist-esm/lib/primitives/geometry/Circle2d.mjs +1 -0
  196. package/dist-esm/lib/primitives/geometry/Circle2d.mjs.map +1 -1
  197. package/dist-esm/lib/primitives/geometry/Ellipse2d.mjs +1 -0
  198. package/dist-esm/lib/primitives/geometry/Ellipse2d.mjs.map +1 -1
  199. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs +2 -0
  200. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs.map +1 -1
  201. package/dist-esm/lib/primitives/geometry/Stadium2d.mjs +1 -0
  202. package/dist-esm/lib/primitives/geometry/Stadium2d.mjs.map +1 -1
  203. package/dist-esm/lib/utils/EditorAtom.mjs +2 -0
  204. package/dist-esm/lib/utils/EditorAtom.mjs.map +1 -1
  205. package/dist-esm/lib/utils/reparenting.mjs +20 -7
  206. package/dist-esm/lib/utils/reparenting.mjs.map +2 -2
  207. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs +5 -0
  208. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs.map +2 -2
  209. package/dist-esm/version.mjs +4 -4
  210. package/dist-esm/version.mjs.map +1 -1
  211. package/editor.css +4 -243
  212. package/package.json +7 -7
  213. package/src/index.ts +18 -39
  214. package/src/lib/TldrawEditor.tsx +9 -0
  215. package/src/lib/components/MenuClickCapture.tsx +124 -64
  216. package/src/lib/components/default-components/CanvasOverlays.tsx +208 -0
  217. package/src/lib/components/default-components/DefaultCanvas.tsx +51 -322
  218. package/src/lib/editor/Editor.test.ts +3 -1
  219. package/src/lib/editor/Editor.ts +167 -38
  220. package/src/lib/editor/managers/CollaboratorsManager/CollaboratorsManager.ts +98 -0
  221. package/src/lib/editor/managers/InputsManager/InputsManager.ts +12 -0
  222. package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +13 -2
  223. package/src/lib/editor/managers/SnapManager/SnapManager.ts +1 -1
  224. package/src/lib/editor/managers/ThemeManager/defaultThemes.ts +14 -0
  225. package/src/lib/editor/overlays/OverlayManager.ts +183 -0
  226. package/src/lib/editor/overlays/OverlayUtil.ts +143 -0
  227. package/src/lib/editor/overlays/ShapeIndicatorOverlayUtil.ts +216 -0
  228. package/src/lib/editor/overlays/getOverlayDisplayValues.ts +51 -0
  229. package/src/lib/editor/shapes/BaseFrameLikeShapeUtil.tsx +128 -0
  230. package/src/lib/editor/shapes/ShapeUtil.ts +45 -26
  231. package/src/lib/editor/shapes/group/GroupShapeUtil.tsx +40 -3
  232. package/src/lib/editor/types/event-types.ts +2 -0
  233. package/src/lib/exports/fetchCache.ts +2 -4
  234. package/src/lib/exports/getSvgJsx.test.ts +3 -1
  235. package/src/lib/exports/getSvgJsx.tsx +2 -1
  236. package/src/lib/hooks/EditorComponentsContext.tsx +0 -27
  237. package/src/lib/hooks/useCanvasEvents.ts +45 -3
  238. package/src/lib/hooks/useEditorComponents.tsx +0 -28
  239. package/src/lib/hooks/usePeerIds.ts +6 -55
  240. package/src/lib/hooks/useShapeCulling.tsx +3 -1
  241. package/src/lib/options.ts +7 -0
  242. package/src/lib/utils/reparenting.ts +22 -9
  243. package/src/lib/utils/sync/TLLocalSyncClient.ts +3 -0
  244. package/src/version.ts +4 -4
  245. package/dist-cjs/lib/components/GeometryDebuggingView.js +0 -115
  246. package/dist-cjs/lib/components/GeometryDebuggingView.js.map +0 -7
  247. package/dist-cjs/lib/components/LiveCollaborators.js +0 -151
  248. package/dist-cjs/lib/components/LiveCollaborators.js.map +0 -7
  249. package/dist-cjs/lib/components/default-components/CanvasShapeIndicators.js +0 -227
  250. package/dist-cjs/lib/components/default-components/CanvasShapeIndicators.js.map +0 -7
  251. package/dist-cjs/lib/components/default-components/DefaultBrush.js +0 -38
  252. package/dist-cjs/lib/components/default-components/DefaultBrush.js.map +0 -7
  253. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js +0 -71
  254. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js.map +0 -7
  255. package/dist-cjs/lib/components/default-components/DefaultCursor.js +0 -59
  256. package/dist-cjs/lib/components/default-components/DefaultCursor.js.map +0 -7
  257. package/dist-cjs/lib/components/default-components/DefaultHandle.js +0 -56
  258. package/dist-cjs/lib/components/default-components/DefaultHandle.js.map +0 -7
  259. package/dist-cjs/lib/components/default-components/DefaultHandles.js +0 -28
  260. package/dist-cjs/lib/components/default-components/DefaultHandles.js.map +0 -7
  261. package/dist-cjs/lib/components/default-components/DefaultScribble.js +0 -51
  262. package/dist-cjs/lib/components/default-components/DefaultScribble.js.map +0 -7
  263. package/dist-cjs/lib/components/default-components/DefaultSelectionForeground.js +0 -69
  264. package/dist-cjs/lib/components/default-components/DefaultSelectionForeground.js.map +0 -7
  265. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js +0 -107
  266. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +0 -7
  267. package/dist-cjs/lib/components/default-components/DefaultShapeIndicatorErrorFallback.js +0 -28
  268. package/dist-cjs/lib/components/default-components/DefaultShapeIndicatorErrorFallback.js.map +0 -7
  269. package/dist-cjs/lib/components/default-components/DefaultShapeIndicators.js +0 -101
  270. package/dist-cjs/lib/components/default-components/DefaultShapeIndicators.js.map +0 -7
  271. package/dist-cjs/lib/components/default-components/DefaultSnapIndictor.js +0 -170
  272. package/dist-cjs/lib/components/default-components/DefaultSnapIndictor.js.map +0 -7
  273. package/dist-cjs/lib/hooks/useHandleEvents.js +0 -100
  274. package/dist-cjs/lib/hooks/useHandleEvents.js.map +0 -7
  275. package/dist-cjs/lib/hooks/useSelectionEvents.js +0 -98
  276. package/dist-cjs/lib/hooks/useSelectionEvents.js.map +0 -7
  277. package/dist-esm/lib/components/GeometryDebuggingView.mjs +0 -95
  278. package/dist-esm/lib/components/GeometryDebuggingView.mjs.map +0 -7
  279. package/dist-esm/lib/components/LiveCollaborators.mjs +0 -134
  280. package/dist-esm/lib/components/LiveCollaborators.mjs.map +0 -7
  281. package/dist-esm/lib/components/default-components/CanvasShapeIndicators.mjs +0 -207
  282. package/dist-esm/lib/components/default-components/CanvasShapeIndicators.mjs.map +0 -7
  283. package/dist-esm/lib/components/default-components/DefaultBrush.mjs +0 -18
  284. package/dist-esm/lib/components/default-components/DefaultBrush.mjs.map +0 -7
  285. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs +0 -41
  286. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +0 -7
  287. package/dist-esm/lib/components/default-components/DefaultCursor.mjs +0 -29
  288. package/dist-esm/lib/components/default-components/DefaultCursor.mjs.map +0 -7
  289. package/dist-esm/lib/components/default-components/DefaultHandle.mjs +0 -26
  290. package/dist-esm/lib/components/default-components/DefaultHandle.mjs.map +0 -7
  291. package/dist-esm/lib/components/default-components/DefaultHandles.mjs +0 -8
  292. package/dist-esm/lib/components/default-components/DefaultHandles.mjs.map +0 -7
  293. package/dist-esm/lib/components/default-components/DefaultScribble.mjs +0 -21
  294. package/dist-esm/lib/components/default-components/DefaultScribble.mjs.map +0 -7
  295. package/dist-esm/lib/components/default-components/DefaultSelectionForeground.mjs +0 -39
  296. package/dist-esm/lib/components/default-components/DefaultSelectionForeground.mjs.map +0 -7
  297. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +0 -77
  298. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +0 -7
  299. package/dist-esm/lib/components/default-components/DefaultShapeIndicatorErrorFallback.mjs +0 -8
  300. package/dist-esm/lib/components/default-components/DefaultShapeIndicatorErrorFallback.mjs.map +0 -7
  301. package/dist-esm/lib/components/default-components/DefaultShapeIndicators.mjs +0 -81
  302. package/dist-esm/lib/components/default-components/DefaultShapeIndicators.mjs.map +0 -7
  303. package/dist-esm/lib/components/default-components/DefaultSnapIndictor.mjs +0 -142
  304. package/dist-esm/lib/components/default-components/DefaultSnapIndictor.mjs.map +0 -7
  305. package/dist-esm/lib/hooks/useHandleEvents.mjs +0 -70
  306. package/dist-esm/lib/hooks/useHandleEvents.mjs.map +0 -7
  307. package/dist-esm/lib/hooks/useSelectionEvents.mjs +0 -78
  308. package/dist-esm/lib/hooks/useSelectionEvents.mjs.map +0 -7
  309. package/src/lib/components/GeometryDebuggingView.tsx +0 -108
  310. package/src/lib/components/LiveCollaborators.tsx +0 -174
  311. package/src/lib/components/default-components/CanvasShapeIndicators.tsx +0 -289
  312. package/src/lib/components/default-components/DefaultBrush.tsx +0 -35
  313. package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +0 -52
  314. package/src/lib/components/default-components/DefaultCursor.tsx +0 -59
  315. package/src/lib/components/default-components/DefaultHandle.tsx +0 -42
  316. package/src/lib/components/default-components/DefaultHandles.tsx +0 -15
  317. package/src/lib/components/default-components/DefaultScribble.tsx +0 -31
  318. package/src/lib/components/default-components/DefaultSelectionForeground.tsx +0 -50
  319. package/src/lib/components/default-components/DefaultShapeIndicator.tsx +0 -104
  320. package/src/lib/components/default-components/DefaultShapeIndicatorErrorFallback.tsx +0 -9
  321. package/src/lib/components/default-components/DefaultShapeIndicators.tsx +0 -116
  322. package/src/lib/components/default-components/DefaultSnapIndictor.tsx +0 -174
  323. package/src/lib/hooks/useHandleEvents.ts +0 -88
  324. package/src/lib/hooks/useSelectionEvents.ts +0 -97
@@ -126,6 +126,13 @@ const DEFAULT_THEME = {
126
126
  solid: "#fcfffe",
127
127
  cursor: "black",
128
128
  noteBorder: "rgb(144, 144, 144)",
129
+ snap: "hsl(0, 76%, 60%)",
130
+ selectionStroke: "hsl(214, 84%, 56%)",
131
+ selectionFill: "hsl(210, 100%, 56%, 24%)",
132
+ brushFill: "hsl(0, 0%, 56%, 10.2%)",
133
+ brushStroke: "hsl(0, 0%, 56%, 25.1%)",
134
+ selectedContrast: "#ffffff",
135
+ laser: "hsl(0, 100%, 50%)",
129
136
  black: {
130
137
  solid: "#1d1d1d",
131
138
  fill: "#1d1d1d",
@@ -341,6 +348,13 @@ const DEFAULT_THEME = {
341
348
  negativeSpace: "hsl(240, 5%, 6.5%)",
342
349
  solid: "#010403",
343
350
  cursor: "white",
351
+ snap: "hsl(0, 76%, 60%)",
352
+ selectionStroke: "hsl(214, 84%, 56%)",
353
+ selectionFill: "hsl(209, 100%, 57%, 20%)",
354
+ brushFill: "hsl(0, 0%, 56%, 10.2%)",
355
+ brushStroke: "hsl(0, 0%, 56%, 25.1%)",
356
+ selectedContrast: "#ffffff",
357
+ laser: "hsl(0, 100%, 50%)",
344
358
  noteBorder: "rgb(20, 20, 20)",
345
359
  black: {
346
360
  solid: "#f2f2f2",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/editor/managers/ThemeManager/defaultThemes.ts"],
4
- "sourcesContent": ["import {\n\tDefaultFontFamilies,\n\tTLDefaultColor,\n\tTLDefaultColorStyle,\n\tTLTheme,\n\tTLThemeColors,\n} from '@tldraw/tlschema'\n\n/**\n * The default theme definition containing color palettes for both light and dark modes.\n *\n * @public\n */\nexport const DEFAULT_THEME: TLTheme = {\n\tid: 'default',\n\tfontSize: 16,\n\tlineHeight: 1.35,\n\tstrokeWidth: 2,\n\tfonts: {\n\t\tdraw: {\n\t\t\tfontFamily: DefaultFontFamilies.draw,\n\t\t\tfaces: [\n\t\t\t\t{ family: 'tldraw_draw', src: { url: 'tldraw_draw', format: 'woff2' }, weight: 'normal' },\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_draw',\n\t\t\t\t\tsrc: { url: 'tldraw_draw_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_draw',\n\t\t\t\t\tsrc: { url: 'tldraw_draw_italic', format: 'woff2' },\n\t\t\t\t\tweight: 'normal',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_draw',\n\t\t\t\t\tsrc: { url: 'tldraw_draw_italic_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tsans: {\n\t\t\tfontFamily: DefaultFontFamilies.sans,\n\t\t\tfaces: [\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_sans',\n\t\t\t\t\tsrc: { url: 'tldraw_sans', format: 'woff2' },\n\t\t\t\t\tweight: 'normal',\n\t\t\t\t\tstyle: 'normal',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_sans',\n\t\t\t\t\tsrc: { url: 'tldraw_sans_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t\tstyle: 'normal',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_sans',\n\t\t\t\t\tsrc: { url: 'tldraw_sans_italic', format: 'woff2' },\n\t\t\t\t\tweight: 'normal',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_sans',\n\t\t\t\t\tsrc: { url: 'tldraw_sans_italic_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tserif: {\n\t\t\tfontFamily: DefaultFontFamilies.serif,\n\t\t\tfaces: [\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_serif',\n\t\t\t\t\tsrc: { url: 'tldraw_serif', format: 'woff2' },\n\t\t\t\t\tweight: 'normal',\n\t\t\t\t\tstyle: 'normal',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_serif',\n\t\t\t\t\tsrc: { url: 'tldraw_serif_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t\tstyle: 'normal',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_serif',\n\t\t\t\t\tsrc: { url: 'tldraw_serif_italic', format: 'woff2' },\n\t\t\t\t\tweight: 'normal',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_serif',\n\t\t\t\t\tsrc: { url: 'tldraw_serif_italic_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tmono: {\n\t\t\tfontFamily: DefaultFontFamilies.mono,\n\t\t\tfaces: [\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_mono',\n\t\t\t\t\tsrc: { url: 'tldraw_mono', format: 'woff2' },\n\t\t\t\t\tweight: 'normal',\n\t\t\t\t\tstyle: 'normal',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_mono',\n\t\t\t\t\tsrc: { url: 'tldraw_mono_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t\tstyle: 'normal',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_mono',\n\t\t\t\t\tsrc: { url: 'tldraw_mono_italic', format: 'woff2' },\n\t\t\t\t\tweight: 'normal',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_mono',\n\t\t\t\t\tsrc: { url: 'tldraw_mono_italic_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n\tcolors: {\n\t\tlight: {\n\t\t\ttext: '#000000',\n\t\t\tbackground: '#f9fafb',\n\t\t\tnegativeSpace: '#f9fafb',\n\t\t\tsolid: '#fcfffe',\n\t\t\tcursor: 'black',\n\t\t\tnoteBorder: 'rgb(144, 144, 144)',\n\t\t\tblack: {\n\t\t\t\tsolid: '#1d1d1d',\n\t\t\t\tfill: '#1d1d1d',\n\t\t\t\tlinedFill: '#363636',\n\t\t\t\tframeHeadingStroke: '#717171',\n\t\t\t\tframeHeadingFill: '#ffffff',\n\t\t\t\tframeStroke: '#717171',\n\t\t\t\tframeFill: '#ffffff',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#FCE19C',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#e8e8e8',\n\t\t\t\tpattern: '#494949',\n\t\t\t\thighlightSrgb: '#fddd00',\n\t\t\t\thighlightP3: 'color(display-p3 0.972 0.8205 0.05)',\n\t\t\t},\n\t\t\tblue: {\n\t\t\t\tsolid: '#4465e9',\n\t\t\t\tfill: '#4465e9',\n\t\t\t\tlinedFill: '#6580ec',\n\t\t\t\tframeHeadingStroke: '#6681ec',\n\t\t\t\tframeHeadingFill: '#f9fafe',\n\t\t\t\tframeStroke: '#6681ec',\n\t\t\t\tframeFill: '#f9fafe',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#8AA3FF',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#dce1f8',\n\t\t\t\tpattern: '#6681ee',\n\t\t\t\thighlightSrgb: '#10acff',\n\t\t\t\thighlightP3: 'color(display-p3 0.308 0.6632 0.9996)',\n\t\t\t},\n\t\t\tgreen: {\n\t\t\t\tsolid: '#099268',\n\t\t\t\tfill: '#099268',\n\t\t\t\tlinedFill: '#0bad7c',\n\t\t\t\tframeHeadingStroke: '#37a684',\n\t\t\t\tframeHeadingFill: '#f8fcfa',\n\t\t\t\tframeStroke: '#37a684',\n\t\t\t\tframeFill: '#f8fcfa',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#6FC896',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#d3e9e3',\n\t\t\t\tpattern: '#39a785',\n\t\t\t\thighlightSrgb: '#00ffc8',\n\t\t\t\thighlightP3: 'color(display-p3 0.2536 0.984 0.7981)',\n\t\t\t},\n\t\t\tgrey: {\n\t\t\t\tsolid: '#9fa8b2',\n\t\t\t\tfill: '#9fa8b2',\n\t\t\t\tlinedFill: '#bbc1c9',\n\t\t\t\tframeHeadingStroke: '#aaaaab',\n\t\t\t\tframeHeadingFill: '#fbfcfc',\n\t\t\t\tframeStroke: '#aaaaab',\n\t\t\t\tframeFill: '#fcfcfd',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#C0CAD3',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#eceef0',\n\t\t\t\tpattern: '#bcc3c9',\n\t\t\t\thighlightSrgb: '#cbe7f1',\n\t\t\t\thighlightP3: 'color(display-p3 0.8163 0.9023 0.9416)',\n\t\t\t},\n\t\t\t'light-blue': {\n\t\t\t\tsolid: '#4ba1f1',\n\t\t\t\tfill: '#4ba1f1',\n\t\t\t\tlinedFill: '#7abaf5',\n\t\t\t\tframeHeadingStroke: '#6cb2f3',\n\t\t\t\tframeHeadingFill: '#f8fbfe',\n\t\t\t\tframeStroke: '#6cb2f3',\n\t\t\t\tframeFill: '#fafcff',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#9BC4FD',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#ddedfa',\n\t\t\t\tpattern: '#6fbbf8',\n\t\t\t\thighlightSrgb: '#00f4ff',\n\t\t\t\thighlightP3: 'color(display-p3 0.1512 0.9414 0.9996)',\n\t\t\t},\n\t\t\t'light-green': {\n\t\t\t\tsolid: '#4cb05e',\n\t\t\t\tfill: '#4cb05e',\n\t\t\t\tlinedFill: '#7ec88c',\n\t\t\t\tframeHeadingStroke: '#6dbe7c',\n\t\t\t\tframeHeadingFill: '#f8fcf9',\n\t\t\t\tframeStroke: '#6dbe7c',\n\t\t\t\tframeFill: '#fafdfa',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#98D08A',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#dbf0e0',\n\t\t\t\tpattern: '#65cb78',\n\t\t\t\thighlightSrgb: '#65f641',\n\t\t\t\thighlightP3: 'color(display-p3 0.563 0.9495 0.3857)',\n\t\t\t},\n\t\t\t'light-red': {\n\t\t\t\tsolid: '#f87777',\n\t\t\t\tfill: '#f87777',\n\t\t\t\tlinedFill: '#f99a9a',\n\t\t\t\tframeHeadingStroke: '#f89090',\n\t\t\t\tframeHeadingFill: '#fffafa',\n\t\t\t\tframeStroke: '#f89090',\n\t\t\t\tframeFill: '#fffbfb',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#F7A5A1',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#f4dadb',\n\t\t\t\tpattern: '#fe9e9e',\n\t\t\t\thighlightSrgb: '#ff7fa3',\n\t\t\t\thighlightP3: 'color(display-p3 0.9988 0.5301 0.6397)',\n\t\t\t},\n\t\t\t'light-violet': {\n\t\t\t\tsolid: '#e085f4',\n\t\t\t\tfill: '#e085f4',\n\t\t\t\tlinedFill: '#e9abf7',\n\t\t\t\tframeHeadingStroke: '#e59bf5',\n\t\t\t\tframeHeadingFill: '#fefaff',\n\t\t\t\tframeStroke: '#e59bf5',\n\t\t\t\tframeFill: '#fefbff',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#DFB0F9',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#f5eafa',\n\t\t\t\tpattern: '#e9acf8',\n\t\t\t\thighlightSrgb: '#ff88ff',\n\t\t\t\thighlightP3: 'color(display-p3 0.9676 0.5652 0.9999)',\n\t\t\t},\n\t\t\torange: {\n\t\t\t\tsolid: '#e16919',\n\t\t\t\tfill: '#e16919',\n\t\t\t\tlinedFill: '#ea8643',\n\t\t\t\tframeHeadingStroke: '#e68544',\n\t\t\t\tframeHeadingFill: '#fef9f6',\n\t\t\t\tframeStroke: '#e68544',\n\t\t\t\tframeFill: '#fef9f6',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#FAA475',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#f8e2d4',\n\t\t\t\tpattern: '#f78438',\n\t\t\t\thighlightSrgb: '#ffa500',\n\t\t\t\thighlightP3: 'color(display-p3 0.9988 0.6905 0.266)',\n\t\t\t},\n\t\t\tred: {\n\t\t\t\tsolid: '#e03131',\n\t\t\t\tfill: '#e03131',\n\t\t\t\tlinedFill: '#e75f5f',\n\t\t\t\tframeHeadingStroke: '#e55757',\n\t\t\t\tframeHeadingFill: '#fef7f7',\n\t\t\t\tframeStroke: '#e55757',\n\t\t\t\tframeFill: '#fef9f9',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#FC8282',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#f4dadb',\n\t\t\t\tpattern: '#e55959',\n\t\t\t\thighlightSrgb: '#ff636e',\n\t\t\t\thighlightP3: 'color(display-p3 0.9992 0.4376 0.45)',\n\t\t\t},\n\t\t\tviolet: {\n\t\t\t\tsolid: '#ae3ec9',\n\t\t\t\tfill: '#ae3ec9',\n\t\t\t\tlinedFill: '#be68d4',\n\t\t\t\tframeHeadingStroke: '#bc62d3',\n\t\t\t\tframeHeadingFill: '#fcf7fd',\n\t\t\t\tframeStroke: '#bc62d3',\n\t\t\t\tframeFill: '#fdf9fd',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#DB91FD',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#ecdcf2',\n\t\t\t\tpattern: '#bd63d3',\n\t\t\t\thighlightSrgb: '#c77cff',\n\t\t\t\thighlightP3: 'color(display-p3 0.7469 0.5089 0.9995)',\n\t\t\t},\n\t\t\tyellow: {\n\t\t\t\tsolid: '#f1ac4b',\n\t\t\t\tfill: '#f1ac4b',\n\t\t\t\tlinedFill: '#f5c27a',\n\t\t\t\tframeHeadingStroke: '#f3bb6c',\n\t\t\t\tframeHeadingFill: '#fefcf8',\n\t\t\t\tframeStroke: '#f3bb6c',\n\t\t\t\tframeFill: '#fffdfa',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#FED49A',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#f9f0e6',\n\t\t\t\tpattern: '#fecb92',\n\t\t\t\thighlightSrgb: '#fddd00',\n\t\t\t\thighlightP3: 'color(display-p3 0.972 0.8705 0.05)',\n\t\t\t},\n\t\t\twhite: {\n\t\t\t\tsolid: '#FFFFFF',\n\t\t\t\tfill: '#FFFFFF',\n\t\t\t\tlinedFill: '#ffffff',\n\t\t\t\tsemi: '#f5f5f5',\n\t\t\t\tpattern: '#f9f9f9',\n\t\t\t\tframeHeadingStroke: '#7d7d7d',\n\t\t\t\tframeHeadingFill: '#ffffff',\n\t\t\t\tframeStroke: '#7d7d7d',\n\t\t\t\tframeFill: '#ffffff',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#FFFFFF',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\thighlightSrgb: '#ffffff',\n\t\t\t\thighlightP3: 'color(display-p3 1 1 1)',\n\t\t\t},\n\t\t},\n\t\tdark: {\n\t\t\ttext: 'hsl(210, 17%, 98%)',\n\t\t\tbackground: 'hsl(240, 5%, 6.5%)',\n\t\t\tnegativeSpace: 'hsl(240, 5%, 6.5%)',\n\t\t\tsolid: '#010403',\n\t\t\tcursor: 'white',\n\t\t\tnoteBorder: 'rgb(20, 20, 20)',\n\n\t\t\tblack: {\n\t\t\t\tsolid: '#f2f2f2',\n\t\t\t\tfill: '#f2f2f2',\n\t\t\t\tlinedFill: '#ffffff',\n\t\t\t\tframeHeadingStroke: '#5c5c5c',\n\t\t\t\tframeHeadingFill: '#252525',\n\t\t\t\tframeStroke: '#5c5c5c',\n\t\t\t\tframeFill: '#0c0c0c',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#2c2c2c',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#2c3036',\n\t\t\t\tpattern: '#989898',\n\t\t\t\thighlightSrgb: '#d2b700',\n\t\t\t\thighlightP3: 'color(display-p3 0.8078 0.6225 0.0312)',\n\t\t\t},\n\t\t\tblue: {\n\t\t\t\tsolid: '#4f72fc', // 3c60f0\n\t\t\t\tfill: '#4f72fc',\n\t\t\t\tlinedFill: '#3c5cdd',\n\t\t\t\tframeHeadingStroke: '#384994',\n\t\t\t\tframeHeadingFill: '#1C2036',\n\t\t\t\tframeStroke: '#384994',\n\t\t\t\tframeFill: '#11141f',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#2A3F98',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#262d40',\n\t\t\t\tpattern: '#3a4b9e',\n\t\t\t\thighlightSrgb: '#0079d2',\n\t\t\t\thighlightP3: 'color(display-p3 0.0032 0.4655 0.7991)',\n\t\t\t},\n\t\t\tgreen: {\n\t\t\t\tsolid: '#099268',\n\t\t\t\tfill: '#099268',\n\t\t\t\tlinedFill: '#087856',\n\t\t\t\tframeHeadingStroke: '#10513C',\n\t\t\t\tframeHeadingFill: '#14241f',\n\t\t\t\tframeStroke: '#10513C',\n\t\t\t\tframeFill: '#0E1614',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#014429',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#253231',\n\t\t\t\tpattern: '#366a53',\n\t\t\t\thighlightSrgb: '#009774',\n\t\t\t\thighlightP3: 'color(display-p3 0.0085 0.582 0.4604)',\n\t\t\t},\n\t\t\tgrey: {\n\t\t\t\tsolid: '#9398b0',\n\t\t\t\tfill: '#9398b0',\n\t\t\t\tlinedFill: '#8388a5',\n\t\t\t\tframeHeadingStroke: '#42474D',\n\t\t\t\tframeHeadingFill: '#23262A',\n\t\t\t\tframeStroke: '#42474D',\n\t\t\t\tframeFill: '#151719',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#56595F',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#33373c',\n\t\t\t\tpattern: '#7c8187',\n\t\t\t\thighlightSrgb: '#9cb4cb',\n\t\t\t\thighlightP3: 'color(display-p3 0.6299 0.7012 0.7856)',\n\t\t\t},\n\t\t\t'light-blue': {\n\t\t\t\tsolid: '#4dabf7',\n\t\t\t\tfill: '#4dabf7',\n\t\t\t\tlinedFill: '#2793ec',\n\t\t\t\tframeHeadingStroke: '#075797',\n\t\t\t\tframeHeadingFill: '#142839',\n\t\t\t\tframeStroke: '#075797',\n\t\t\t\tframeFill: '#0B1823',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#1F5495',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#2a3642',\n\t\t\t\tpattern: '#4d7aa9',\n\t\t\t\thighlightSrgb: '#00bdc8',\n\t\t\t\thighlightP3: 'color(display-p3 0.0023 0.7259 0.7735)',\n\t\t\t},\n\t\t\t'light-green': {\n\t\t\t\tsolid: '#40c057',\n\t\t\t\tfill: '#40c057',\n\t\t\t\tlinedFill: '#37a44b',\n\t\t\t\tframeHeadingStroke: '#1C5427',\n\t\t\t\tframeHeadingFill: '#18251A',\n\t\t\t\tframeStroke: '#1C5427',\n\t\t\t\tframeFill: '#0F1911',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#21581D',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#2a3830',\n\t\t\t\tpattern: '#4e874e',\n\t\t\t\thighlightSrgb: '#00a000',\n\t\t\t\thighlightP3: 'color(display-p3 0.2711 0.6172 0.0195)',\n\t\t\t},\n\t\t\t'light-red': {\n\t\t\t\tsolid: '#ff8787',\n\t\t\t\tfill: '#ff8787',\n\t\t\t\tlinedFill: '#ff6666',\n\t\t\t\tframeHeadingStroke: '#6f3232',\n\t\t\t\tframeHeadingFill: '#341818',\n\t\t\t\tframeStroke: '#6f3232',\n\t\t\t\tframeFill: '#181212',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#7a3333',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#3c2b2b',\n\t\t\t\tpattern: '#a56767',\n\t\t\t\thighlightSrgb: '#db005b',\n\t\t\t\thighlightP3: 'color(display-p3 0.7849 0.0585 0.3589)',\n\t\t\t},\n\t\t\t'light-violet': {\n\t\t\t\tsolid: '#e599f7',\n\t\t\t\tfill: '#e599f7',\n\t\t\t\tlinedFill: '#dc71f4',\n\t\t\t\tframeHeadingStroke: '#6c367a',\n\t\t\t\tframeHeadingFill: '#2D2230',\n\t\t\t\tframeStroke: '#6c367a',\n\t\t\t\tframeFill: '#1C151E',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#762F8E',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#383442',\n\t\t\t\tpattern: '#9770a9',\n\t\t\t\thighlightSrgb: '#c400c7',\n\t\t\t\thighlightP3: 'color(display-p3 0.7024 0.0403 0.753)',\n\t\t\t},\n\t\t\torange: {\n\t\t\t\tsolid: '#f76707',\n\t\t\t\tfill: '#f76707',\n\t\t\t\tlinedFill: '#f54900',\n\t\t\t\tframeHeadingStroke: '#773a0e',\n\t\t\t\tframeHeadingFill: '#2f1d13',\n\t\t\t\tframeStroke: '#773a0e',\n\t\t\t\tframeFill: '#1c1512',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#7c3905',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#3b2e27',\n\t\t\t\tpattern: '#9f552d',\n\t\t\t\thighlightSrgb: '#d07a00',\n\t\t\t\thighlightP3: 'color(display-p3 0.7699 0.4937 0.0085)',\n\t\t\t},\n\t\t\tred: {\n\t\t\t\tsolid: '#e03131',\n\t\t\t\tfill: '#e03131',\n\t\t\t\tlinedFill: '#c31d1d',\n\t\t\t\tframeHeadingStroke: '#701e1e',\n\t\t\t\tframeHeadingFill: '#301616',\n\t\t\t\tframeStroke: '#701e1e',\n\t\t\t\tframeFill: '#1b1313',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#7e201f',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#382726',\n\t\t\t\tpattern: '#8f3734',\n\t\t\t\thighlightSrgb: '#de002c',\n\t\t\t\thighlightP3: 'color(display-p3 0.7978 0.0509 0.2035)',\n\t\t\t},\n\t\t\tviolet: {\n\t\t\t\tsolid: '#ae3ec9',\n\t\t\t\tfill: '#ae3ec9',\n\t\t\t\tlinedFill: '#8f2fa7',\n\t\t\t\tframeHeadingStroke: '#6d1583',\n\t\t\t\tframeHeadingFill: '#27152e',\n\t\t\t\tframeStroke: '#6d1583',\n\t\t\t\tframeFill: '#1b0f21',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#5f1c70',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#342938',\n\t\t\t\tpattern: '#763a8b',\n\t\t\t\thighlightSrgb: '#9e00ee',\n\t\t\t\thighlightP3: 'color(display-p3 0.5651 0.0079 0.8986)',\n\t\t\t},\n\t\t\tyellow: {\n\t\t\t\tsolid: '#ffc034',\n\t\t\t\tfill: '#ffc034',\n\t\t\t\tlinedFill: '#ffae00',\n\t\t\t\tframeHeadingStroke: '#684e12',\n\t\t\t\tframeHeadingFill: '#2a2113',\n\t\t\t\tframeStroke: '#684e12',\n\t\t\t\tframeFill: '#1e1911',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#8a5e1c',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#3b352b',\n\t\t\t\tpattern: '#fecb92',\n\t\t\t\thighlightSrgb: '#d2b700',\n\t\t\t\thighlightP3: 'color(display-p3 0.8078 0.7225 0.0312)',\n\t\t\t},\n\t\t\twhite: {\n\t\t\t\tsolid: '#f3f3f3',\n\t\t\t\tfill: '#f3f3f3',\n\t\t\t\tlinedFill: '#f3f3f3',\n\t\t\t\tsemi: '#f5f5f5',\n\t\t\t\tpattern: '#f9f9f9',\n\t\t\t\tframeHeadingStroke: '#ffffff',\n\t\t\t\tframeHeadingFill: '#ffffff',\n\t\t\t\tframeStroke: '#ffffff',\n\t\t\t\tframeFill: '#ffffff',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#eaeaea',\n\t\t\t\tnoteText: '#1d1d1d',\n\t\t\t\thighlightSrgb: '#ffffff',\n\t\t\t\thighlightP3: 'color(display-p3 1 1 1)',\n\t\t\t},\n\t\t},\n\t},\n}\n\n/**\n * Resolves a color style value to its actual CSS color string for a given theme and variant.\n * If the color is not a default theme color, returns the color value as-is.\n *\n * @param colors - The color palette for the current color mode (e.g. `theme.colors[colorMode]`)\n * @param color - The color style value to resolve\n * @param variant - Which variant of the color to return (solid, fill, pattern, etc.)\n * @returns The CSS color string for the specified color and variant\n *\n * @example\n * ```ts\n * import { getColorValue } from 'tldraw'\n *\n * const colors = editor.getCurrentTheme().colors[editor.getColorMode()]\n *\n * // Get the solid variant of red\n * const redSolid = getColorValue(colors, 'red', 'solid') // '#e03131'\n *\n * // Get the fill variant of blue\n * const blueFill = getColorValue(colors, 'blue', 'fill') // '#4465e9'\n *\n * // Custom color passes through unchanged\n * const customColor = getColorValue(colors, '#ff0000', 'solid') // '#ff0000'\n * ```\n *\n * @public\n */\nexport function getColorValue(\n\tcolors: TLThemeColors,\n\tcolor: TLDefaultColorStyle | string,\n\tvariant: keyof TLDefaultColor\n): string {\n\tconst colorEntry = colors[color as TLDefaultColorStyle]\n\tif (!colorEntry || typeof colorEntry === 'string') {\n\t\treturn color\n\t}\n\treturn colorEntry[variant]\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n\tDefaultFontFamilies,\n\tTLDefaultColor,\n\tTLDefaultColorStyle,\n\tTLTheme,\n\tTLThemeColors,\n} from '@tldraw/tlschema'\n\n/**\n * The default theme definition containing color palettes for both light and dark modes.\n *\n * @public\n */\nexport const DEFAULT_THEME: TLTheme = {\n\tid: 'default',\n\tfontSize: 16,\n\tlineHeight: 1.35,\n\tstrokeWidth: 2,\n\tfonts: {\n\t\tdraw: {\n\t\t\tfontFamily: DefaultFontFamilies.draw,\n\t\t\tfaces: [\n\t\t\t\t{ family: 'tldraw_draw', src: { url: 'tldraw_draw', format: 'woff2' }, weight: 'normal' },\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_draw',\n\t\t\t\t\tsrc: { url: 'tldraw_draw_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_draw',\n\t\t\t\t\tsrc: { url: 'tldraw_draw_italic', format: 'woff2' },\n\t\t\t\t\tweight: 'normal',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_draw',\n\t\t\t\t\tsrc: { url: 'tldraw_draw_italic_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tsans: {\n\t\t\tfontFamily: DefaultFontFamilies.sans,\n\t\t\tfaces: [\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_sans',\n\t\t\t\t\tsrc: { url: 'tldraw_sans', format: 'woff2' },\n\t\t\t\t\tweight: 'normal',\n\t\t\t\t\tstyle: 'normal',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_sans',\n\t\t\t\t\tsrc: { url: 'tldraw_sans_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t\tstyle: 'normal',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_sans',\n\t\t\t\t\tsrc: { url: 'tldraw_sans_italic', format: 'woff2' },\n\t\t\t\t\tweight: 'normal',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_sans',\n\t\t\t\t\tsrc: { url: 'tldraw_sans_italic_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tserif: {\n\t\t\tfontFamily: DefaultFontFamilies.serif,\n\t\t\tfaces: [\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_serif',\n\t\t\t\t\tsrc: { url: 'tldraw_serif', format: 'woff2' },\n\t\t\t\t\tweight: 'normal',\n\t\t\t\t\tstyle: 'normal',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_serif',\n\t\t\t\t\tsrc: { url: 'tldraw_serif_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t\tstyle: 'normal',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_serif',\n\t\t\t\t\tsrc: { url: 'tldraw_serif_italic', format: 'woff2' },\n\t\t\t\t\tweight: 'normal',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_serif',\n\t\t\t\t\tsrc: { url: 'tldraw_serif_italic_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tmono: {\n\t\t\tfontFamily: DefaultFontFamilies.mono,\n\t\t\tfaces: [\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_mono',\n\t\t\t\t\tsrc: { url: 'tldraw_mono', format: 'woff2' },\n\t\t\t\t\tweight: 'normal',\n\t\t\t\t\tstyle: 'normal',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_mono',\n\t\t\t\t\tsrc: { url: 'tldraw_mono_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t\tstyle: 'normal',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_mono',\n\t\t\t\t\tsrc: { url: 'tldraw_mono_italic', format: 'woff2' },\n\t\t\t\t\tweight: 'normal',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfamily: 'tldraw_mono',\n\t\t\t\t\tsrc: { url: 'tldraw_mono_italic_bold', format: 'woff2' },\n\t\t\t\t\tweight: 'bold',\n\t\t\t\t\tstyle: 'italic',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n\tcolors: {\n\t\tlight: {\n\t\t\ttext: '#000000',\n\t\t\tbackground: '#f9fafb',\n\t\t\tnegativeSpace: '#f9fafb',\n\t\t\tsolid: '#fcfffe',\n\t\t\tcursor: 'black',\n\t\t\tnoteBorder: 'rgb(144, 144, 144)',\n\t\t\tsnap: 'hsl(0, 76%, 60%)',\n\t\t\tselectionStroke: 'hsl(214, 84%, 56%)',\n\t\t\tselectionFill: 'hsl(210, 100%, 56%, 24%)',\n\t\t\tbrushFill: 'hsl(0, 0%, 56%, 10.2%)',\n\t\t\tbrushStroke: 'hsl(0, 0%, 56%, 25.1%)',\n\t\t\tselectedContrast: '#ffffff',\n\t\t\tlaser: 'hsl(0, 100%, 50%)',\n\t\t\tblack: {\n\t\t\t\tsolid: '#1d1d1d',\n\t\t\t\tfill: '#1d1d1d',\n\t\t\t\tlinedFill: '#363636',\n\t\t\t\tframeHeadingStroke: '#717171',\n\t\t\t\tframeHeadingFill: '#ffffff',\n\t\t\t\tframeStroke: '#717171',\n\t\t\t\tframeFill: '#ffffff',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#FCE19C',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#e8e8e8',\n\t\t\t\tpattern: '#494949',\n\t\t\t\thighlightSrgb: '#fddd00',\n\t\t\t\thighlightP3: 'color(display-p3 0.972 0.8205 0.05)',\n\t\t\t},\n\t\t\tblue: {\n\t\t\t\tsolid: '#4465e9',\n\t\t\t\tfill: '#4465e9',\n\t\t\t\tlinedFill: '#6580ec',\n\t\t\t\tframeHeadingStroke: '#6681ec',\n\t\t\t\tframeHeadingFill: '#f9fafe',\n\t\t\t\tframeStroke: '#6681ec',\n\t\t\t\tframeFill: '#f9fafe',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#8AA3FF',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#dce1f8',\n\t\t\t\tpattern: '#6681ee',\n\t\t\t\thighlightSrgb: '#10acff',\n\t\t\t\thighlightP3: 'color(display-p3 0.308 0.6632 0.9996)',\n\t\t\t},\n\t\t\tgreen: {\n\t\t\t\tsolid: '#099268',\n\t\t\t\tfill: '#099268',\n\t\t\t\tlinedFill: '#0bad7c',\n\t\t\t\tframeHeadingStroke: '#37a684',\n\t\t\t\tframeHeadingFill: '#f8fcfa',\n\t\t\t\tframeStroke: '#37a684',\n\t\t\t\tframeFill: '#f8fcfa',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#6FC896',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#d3e9e3',\n\t\t\t\tpattern: '#39a785',\n\t\t\t\thighlightSrgb: '#00ffc8',\n\t\t\t\thighlightP3: 'color(display-p3 0.2536 0.984 0.7981)',\n\t\t\t},\n\t\t\tgrey: {\n\t\t\t\tsolid: '#9fa8b2',\n\t\t\t\tfill: '#9fa8b2',\n\t\t\t\tlinedFill: '#bbc1c9',\n\t\t\t\tframeHeadingStroke: '#aaaaab',\n\t\t\t\tframeHeadingFill: '#fbfcfc',\n\t\t\t\tframeStroke: '#aaaaab',\n\t\t\t\tframeFill: '#fcfcfd',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#C0CAD3',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#eceef0',\n\t\t\t\tpattern: '#bcc3c9',\n\t\t\t\thighlightSrgb: '#cbe7f1',\n\t\t\t\thighlightP3: 'color(display-p3 0.8163 0.9023 0.9416)',\n\t\t\t},\n\t\t\t'light-blue': {\n\t\t\t\tsolid: '#4ba1f1',\n\t\t\t\tfill: '#4ba1f1',\n\t\t\t\tlinedFill: '#7abaf5',\n\t\t\t\tframeHeadingStroke: '#6cb2f3',\n\t\t\t\tframeHeadingFill: '#f8fbfe',\n\t\t\t\tframeStroke: '#6cb2f3',\n\t\t\t\tframeFill: '#fafcff',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#9BC4FD',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#ddedfa',\n\t\t\t\tpattern: '#6fbbf8',\n\t\t\t\thighlightSrgb: '#00f4ff',\n\t\t\t\thighlightP3: 'color(display-p3 0.1512 0.9414 0.9996)',\n\t\t\t},\n\t\t\t'light-green': {\n\t\t\t\tsolid: '#4cb05e',\n\t\t\t\tfill: '#4cb05e',\n\t\t\t\tlinedFill: '#7ec88c',\n\t\t\t\tframeHeadingStroke: '#6dbe7c',\n\t\t\t\tframeHeadingFill: '#f8fcf9',\n\t\t\t\tframeStroke: '#6dbe7c',\n\t\t\t\tframeFill: '#fafdfa',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#98D08A',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#dbf0e0',\n\t\t\t\tpattern: '#65cb78',\n\t\t\t\thighlightSrgb: '#65f641',\n\t\t\t\thighlightP3: 'color(display-p3 0.563 0.9495 0.3857)',\n\t\t\t},\n\t\t\t'light-red': {\n\t\t\t\tsolid: '#f87777',\n\t\t\t\tfill: '#f87777',\n\t\t\t\tlinedFill: '#f99a9a',\n\t\t\t\tframeHeadingStroke: '#f89090',\n\t\t\t\tframeHeadingFill: '#fffafa',\n\t\t\t\tframeStroke: '#f89090',\n\t\t\t\tframeFill: '#fffbfb',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#F7A5A1',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#f4dadb',\n\t\t\t\tpattern: '#fe9e9e',\n\t\t\t\thighlightSrgb: '#ff7fa3',\n\t\t\t\thighlightP3: 'color(display-p3 0.9988 0.5301 0.6397)',\n\t\t\t},\n\t\t\t'light-violet': {\n\t\t\t\tsolid: '#e085f4',\n\t\t\t\tfill: '#e085f4',\n\t\t\t\tlinedFill: '#e9abf7',\n\t\t\t\tframeHeadingStroke: '#e59bf5',\n\t\t\t\tframeHeadingFill: '#fefaff',\n\t\t\t\tframeStroke: '#e59bf5',\n\t\t\t\tframeFill: '#fefbff',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#DFB0F9',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#f5eafa',\n\t\t\t\tpattern: '#e9acf8',\n\t\t\t\thighlightSrgb: '#ff88ff',\n\t\t\t\thighlightP3: 'color(display-p3 0.9676 0.5652 0.9999)',\n\t\t\t},\n\t\t\torange: {\n\t\t\t\tsolid: '#e16919',\n\t\t\t\tfill: '#e16919',\n\t\t\t\tlinedFill: '#ea8643',\n\t\t\t\tframeHeadingStroke: '#e68544',\n\t\t\t\tframeHeadingFill: '#fef9f6',\n\t\t\t\tframeStroke: '#e68544',\n\t\t\t\tframeFill: '#fef9f6',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#FAA475',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#f8e2d4',\n\t\t\t\tpattern: '#f78438',\n\t\t\t\thighlightSrgb: '#ffa500',\n\t\t\t\thighlightP3: 'color(display-p3 0.9988 0.6905 0.266)',\n\t\t\t},\n\t\t\tred: {\n\t\t\t\tsolid: '#e03131',\n\t\t\t\tfill: '#e03131',\n\t\t\t\tlinedFill: '#e75f5f',\n\t\t\t\tframeHeadingStroke: '#e55757',\n\t\t\t\tframeHeadingFill: '#fef7f7',\n\t\t\t\tframeStroke: '#e55757',\n\t\t\t\tframeFill: '#fef9f9',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#FC8282',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#f4dadb',\n\t\t\t\tpattern: '#e55959',\n\t\t\t\thighlightSrgb: '#ff636e',\n\t\t\t\thighlightP3: 'color(display-p3 0.9992 0.4376 0.45)',\n\t\t\t},\n\t\t\tviolet: {\n\t\t\t\tsolid: '#ae3ec9',\n\t\t\t\tfill: '#ae3ec9',\n\t\t\t\tlinedFill: '#be68d4',\n\t\t\t\tframeHeadingStroke: '#bc62d3',\n\t\t\t\tframeHeadingFill: '#fcf7fd',\n\t\t\t\tframeStroke: '#bc62d3',\n\t\t\t\tframeFill: '#fdf9fd',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#DB91FD',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#ecdcf2',\n\t\t\t\tpattern: '#bd63d3',\n\t\t\t\thighlightSrgb: '#c77cff',\n\t\t\t\thighlightP3: 'color(display-p3 0.7469 0.5089 0.9995)',\n\t\t\t},\n\t\t\tyellow: {\n\t\t\t\tsolid: '#f1ac4b',\n\t\t\t\tfill: '#f1ac4b',\n\t\t\t\tlinedFill: '#f5c27a',\n\t\t\t\tframeHeadingStroke: '#f3bb6c',\n\t\t\t\tframeHeadingFill: '#fefcf8',\n\t\t\t\tframeStroke: '#f3bb6c',\n\t\t\t\tframeFill: '#fffdfa',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#FED49A',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\tsemi: '#f9f0e6',\n\t\t\t\tpattern: '#fecb92',\n\t\t\t\thighlightSrgb: '#fddd00',\n\t\t\t\thighlightP3: 'color(display-p3 0.972 0.8705 0.05)',\n\t\t\t},\n\t\t\twhite: {\n\t\t\t\tsolid: '#FFFFFF',\n\t\t\t\tfill: '#FFFFFF',\n\t\t\t\tlinedFill: '#ffffff',\n\t\t\t\tsemi: '#f5f5f5',\n\t\t\t\tpattern: '#f9f9f9',\n\t\t\t\tframeHeadingStroke: '#7d7d7d',\n\t\t\t\tframeHeadingFill: '#ffffff',\n\t\t\t\tframeStroke: '#7d7d7d',\n\t\t\t\tframeFill: '#ffffff',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#FFFFFF',\n\t\t\t\tnoteText: '#000000',\n\t\t\t\thighlightSrgb: '#ffffff',\n\t\t\t\thighlightP3: 'color(display-p3 1 1 1)',\n\t\t\t},\n\t\t},\n\t\tdark: {\n\t\t\ttext: 'hsl(210, 17%, 98%)',\n\t\t\tbackground: 'hsl(240, 5%, 6.5%)',\n\t\t\tnegativeSpace: 'hsl(240, 5%, 6.5%)',\n\t\t\tsolid: '#010403',\n\t\t\tcursor: 'white',\n\t\t\tsnap: 'hsl(0, 76%, 60%)',\n\t\t\tselectionStroke: 'hsl(214, 84%, 56%)',\n\t\t\tselectionFill: 'hsl(209, 100%, 57%, 20%)',\n\t\t\tbrushFill: 'hsl(0, 0%, 56%, 10.2%)',\n\t\t\tbrushStroke: 'hsl(0, 0%, 56%, 25.1%)',\n\t\t\tselectedContrast: '#ffffff',\n\t\t\tlaser: 'hsl(0, 100%, 50%)',\n\t\t\tnoteBorder: 'rgb(20, 20, 20)',\n\n\t\t\tblack: {\n\t\t\t\tsolid: '#f2f2f2',\n\t\t\t\tfill: '#f2f2f2',\n\t\t\t\tlinedFill: '#ffffff',\n\t\t\t\tframeHeadingStroke: '#5c5c5c',\n\t\t\t\tframeHeadingFill: '#252525',\n\t\t\t\tframeStroke: '#5c5c5c',\n\t\t\t\tframeFill: '#0c0c0c',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#2c2c2c',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#2c3036',\n\t\t\t\tpattern: '#989898',\n\t\t\t\thighlightSrgb: '#d2b700',\n\t\t\t\thighlightP3: 'color(display-p3 0.8078 0.6225 0.0312)',\n\t\t\t},\n\t\t\tblue: {\n\t\t\t\tsolid: '#4f72fc', // 3c60f0\n\t\t\t\tfill: '#4f72fc',\n\t\t\t\tlinedFill: '#3c5cdd',\n\t\t\t\tframeHeadingStroke: '#384994',\n\t\t\t\tframeHeadingFill: '#1C2036',\n\t\t\t\tframeStroke: '#384994',\n\t\t\t\tframeFill: '#11141f',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#2A3F98',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#262d40',\n\t\t\t\tpattern: '#3a4b9e',\n\t\t\t\thighlightSrgb: '#0079d2',\n\t\t\t\thighlightP3: 'color(display-p3 0.0032 0.4655 0.7991)',\n\t\t\t},\n\t\t\tgreen: {\n\t\t\t\tsolid: '#099268',\n\t\t\t\tfill: '#099268',\n\t\t\t\tlinedFill: '#087856',\n\t\t\t\tframeHeadingStroke: '#10513C',\n\t\t\t\tframeHeadingFill: '#14241f',\n\t\t\t\tframeStroke: '#10513C',\n\t\t\t\tframeFill: '#0E1614',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#014429',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#253231',\n\t\t\t\tpattern: '#366a53',\n\t\t\t\thighlightSrgb: '#009774',\n\t\t\t\thighlightP3: 'color(display-p3 0.0085 0.582 0.4604)',\n\t\t\t},\n\t\t\tgrey: {\n\t\t\t\tsolid: '#9398b0',\n\t\t\t\tfill: '#9398b0',\n\t\t\t\tlinedFill: '#8388a5',\n\t\t\t\tframeHeadingStroke: '#42474D',\n\t\t\t\tframeHeadingFill: '#23262A',\n\t\t\t\tframeStroke: '#42474D',\n\t\t\t\tframeFill: '#151719',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#56595F',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#33373c',\n\t\t\t\tpattern: '#7c8187',\n\t\t\t\thighlightSrgb: '#9cb4cb',\n\t\t\t\thighlightP3: 'color(display-p3 0.6299 0.7012 0.7856)',\n\t\t\t},\n\t\t\t'light-blue': {\n\t\t\t\tsolid: '#4dabf7',\n\t\t\t\tfill: '#4dabf7',\n\t\t\t\tlinedFill: '#2793ec',\n\t\t\t\tframeHeadingStroke: '#075797',\n\t\t\t\tframeHeadingFill: '#142839',\n\t\t\t\tframeStroke: '#075797',\n\t\t\t\tframeFill: '#0B1823',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#1F5495',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#2a3642',\n\t\t\t\tpattern: '#4d7aa9',\n\t\t\t\thighlightSrgb: '#00bdc8',\n\t\t\t\thighlightP3: 'color(display-p3 0.0023 0.7259 0.7735)',\n\t\t\t},\n\t\t\t'light-green': {\n\t\t\t\tsolid: '#40c057',\n\t\t\t\tfill: '#40c057',\n\t\t\t\tlinedFill: '#37a44b',\n\t\t\t\tframeHeadingStroke: '#1C5427',\n\t\t\t\tframeHeadingFill: '#18251A',\n\t\t\t\tframeStroke: '#1C5427',\n\t\t\t\tframeFill: '#0F1911',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#21581D',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#2a3830',\n\t\t\t\tpattern: '#4e874e',\n\t\t\t\thighlightSrgb: '#00a000',\n\t\t\t\thighlightP3: 'color(display-p3 0.2711 0.6172 0.0195)',\n\t\t\t},\n\t\t\t'light-red': {\n\t\t\t\tsolid: '#ff8787',\n\t\t\t\tfill: '#ff8787',\n\t\t\t\tlinedFill: '#ff6666',\n\t\t\t\tframeHeadingStroke: '#6f3232',\n\t\t\t\tframeHeadingFill: '#341818',\n\t\t\t\tframeStroke: '#6f3232',\n\t\t\t\tframeFill: '#181212',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#7a3333',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#3c2b2b',\n\t\t\t\tpattern: '#a56767',\n\t\t\t\thighlightSrgb: '#db005b',\n\t\t\t\thighlightP3: 'color(display-p3 0.7849 0.0585 0.3589)',\n\t\t\t},\n\t\t\t'light-violet': {\n\t\t\t\tsolid: '#e599f7',\n\t\t\t\tfill: '#e599f7',\n\t\t\t\tlinedFill: '#dc71f4',\n\t\t\t\tframeHeadingStroke: '#6c367a',\n\t\t\t\tframeHeadingFill: '#2D2230',\n\t\t\t\tframeStroke: '#6c367a',\n\t\t\t\tframeFill: '#1C151E',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#762F8E',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#383442',\n\t\t\t\tpattern: '#9770a9',\n\t\t\t\thighlightSrgb: '#c400c7',\n\t\t\t\thighlightP3: 'color(display-p3 0.7024 0.0403 0.753)',\n\t\t\t},\n\t\t\torange: {\n\t\t\t\tsolid: '#f76707',\n\t\t\t\tfill: '#f76707',\n\t\t\t\tlinedFill: '#f54900',\n\t\t\t\tframeHeadingStroke: '#773a0e',\n\t\t\t\tframeHeadingFill: '#2f1d13',\n\t\t\t\tframeStroke: '#773a0e',\n\t\t\t\tframeFill: '#1c1512',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#7c3905',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#3b2e27',\n\t\t\t\tpattern: '#9f552d',\n\t\t\t\thighlightSrgb: '#d07a00',\n\t\t\t\thighlightP3: 'color(display-p3 0.7699 0.4937 0.0085)',\n\t\t\t},\n\t\t\tred: {\n\t\t\t\tsolid: '#e03131',\n\t\t\t\tfill: '#e03131',\n\t\t\t\tlinedFill: '#c31d1d',\n\t\t\t\tframeHeadingStroke: '#701e1e',\n\t\t\t\tframeHeadingFill: '#301616',\n\t\t\t\tframeStroke: '#701e1e',\n\t\t\t\tframeFill: '#1b1313',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#7e201f',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#382726',\n\t\t\t\tpattern: '#8f3734',\n\t\t\t\thighlightSrgb: '#de002c',\n\t\t\t\thighlightP3: 'color(display-p3 0.7978 0.0509 0.2035)',\n\t\t\t},\n\t\t\tviolet: {\n\t\t\t\tsolid: '#ae3ec9',\n\t\t\t\tfill: '#ae3ec9',\n\t\t\t\tlinedFill: '#8f2fa7',\n\t\t\t\tframeHeadingStroke: '#6d1583',\n\t\t\t\tframeHeadingFill: '#27152e',\n\t\t\t\tframeStroke: '#6d1583',\n\t\t\t\tframeFill: '#1b0f21',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#5f1c70',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#342938',\n\t\t\t\tpattern: '#763a8b',\n\t\t\t\thighlightSrgb: '#9e00ee',\n\t\t\t\thighlightP3: 'color(display-p3 0.5651 0.0079 0.8986)',\n\t\t\t},\n\t\t\tyellow: {\n\t\t\t\tsolid: '#ffc034',\n\t\t\t\tfill: '#ffc034',\n\t\t\t\tlinedFill: '#ffae00',\n\t\t\t\tframeHeadingStroke: '#684e12',\n\t\t\t\tframeHeadingFill: '#2a2113',\n\t\t\t\tframeStroke: '#684e12',\n\t\t\t\tframeFill: '#1e1911',\n\t\t\t\tframeText: '#f2f2f2',\n\t\t\t\tnoteFill: '#8a5e1c',\n\t\t\t\tnoteText: '#f2f2f2',\n\t\t\t\tsemi: '#3b352b',\n\t\t\t\tpattern: '#fecb92',\n\t\t\t\thighlightSrgb: '#d2b700',\n\t\t\t\thighlightP3: 'color(display-p3 0.8078 0.7225 0.0312)',\n\t\t\t},\n\t\t\twhite: {\n\t\t\t\tsolid: '#f3f3f3',\n\t\t\t\tfill: '#f3f3f3',\n\t\t\t\tlinedFill: '#f3f3f3',\n\t\t\t\tsemi: '#f5f5f5',\n\t\t\t\tpattern: '#f9f9f9',\n\t\t\t\tframeHeadingStroke: '#ffffff',\n\t\t\t\tframeHeadingFill: '#ffffff',\n\t\t\t\tframeStroke: '#ffffff',\n\t\t\t\tframeFill: '#ffffff',\n\t\t\t\tframeText: '#000000',\n\t\t\t\tnoteFill: '#eaeaea',\n\t\t\t\tnoteText: '#1d1d1d',\n\t\t\t\thighlightSrgb: '#ffffff',\n\t\t\t\thighlightP3: 'color(display-p3 1 1 1)',\n\t\t\t},\n\t\t},\n\t},\n}\n\n/**\n * Resolves a color style value to its actual CSS color string for a given theme and variant.\n * If the color is not a default theme color, returns the color value as-is.\n *\n * @param colors - The color palette for the current color mode (e.g. `theme.colors[colorMode]`)\n * @param color - The color style value to resolve\n * @param variant - Which variant of the color to return (solid, fill, pattern, etc.)\n * @returns The CSS color string for the specified color and variant\n *\n * @example\n * ```ts\n * import { getColorValue } from 'tldraw'\n *\n * const colors = editor.getCurrentTheme().colors[editor.getColorMode()]\n *\n * // Get the solid variant of red\n * const redSolid = getColorValue(colors, 'red', 'solid') // '#e03131'\n *\n * // Get the fill variant of blue\n * const blueFill = getColorValue(colors, 'blue', 'fill') // '#4465e9'\n *\n * // Custom color passes through unchanged\n * const customColor = getColorValue(colors, '#ff0000', 'solid') // '#ff0000'\n * ```\n *\n * @public\n */\nexport function getColorValue(\n\tcolors: TLThemeColors,\n\tcolor: TLDefaultColorStyle | string,\n\tvariant: keyof TLDefaultColor\n): string {\n\tconst colorEntry = colors[color as TLDefaultColorStyle]\n\tif (!colorEntry || typeof colorEntry === 'string') {\n\t\treturn color\n\t}\n\treturn colorEntry[variant]\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -23,6 +23,7 @@ class TickManager {
23
23
  this.editor.disposables.add(this.dispose);
24
24
  this.start();
25
25
  }
26
+ editor;
26
27
  cancelRaf;
27
28
  isPaused = true;
28
29
  now = 0;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/editor/managers/TickManager/TickManager.ts"],
4
4
  "sourcesContent": ["import { throttleToNextFrame as _throttleToNextFrame, bind } from '@tldraw/utils'\nimport type { Editor } from '../../Editor'\n\nconst throttleToNextFrame =\n\ttypeof process !== 'undefined' && process.env.NODE_ENV === 'test'\n\t\t? // At test time we should use actual raf and not throttle, because throttle was set up to evaluate immediately during tests, which causes stack overflow\n\t\t\t// for the tick manager since it sets up a raf loop.\n\t\t\tfunction mockThrottle(cb: any) {\n\t\t\t\t// eslint-disable-next-line no-restricted-globals\n\t\t\t\tconst frame = requestAnimationFrame(cb)\n\t\t\t\treturn () => cancelAnimationFrame(frame)\n\t\t\t}\n\t\t: _throttleToNextFrame\n\n/** @internal */\nexport class TickManager {\n\tconstructor(public editor: Editor) {\n\t\tthis.editor.disposables.add(this.dispose)\n\t\tthis.start()\n\t}\n\n\tcancelRaf?: null | (() => void)\n\tisPaused = true\n\tnow = 0\n\n\tstart() {\n\t\tthis.isPaused = false\n\t\tthis.cancelRaf?.()\n\t\tthis.cancelRaf = throttleToNextFrame(this.tick)\n\t\tthis.now = Date.now()\n\t}\n\n\t@bind\n\ttick() {\n\t\tif (this.isPaused) {\n\t\t\treturn\n\t\t}\n\n\t\tconst now = Date.now()\n\t\tconst elapsed = now - this.now\n\t\tthis.now = now\n\n\t\tthis.editor.inputs.updatePointerVelocity(elapsed)\n\t\tthis.editor.emit('frame', elapsed)\n\t\tthis.editor.emit('tick', elapsed)\n\t\tthis.cancelRaf = throttleToNextFrame(this.tick)\n\t}\n\n\t// Clear the listener\n\t@bind\n\tdispose() {\n\t\tthis.isPaused = true\n\n\t\tthis.cancelRaf?.()\n\t}\n}\n"],
5
- "mappings": ";;;;;;;;;;AAAA,SAAS,uBAAuB,sBAAsB,YAAY;AAGlE,MAAM,sBACL,OAAO,YAAY,eAAe,QAAQ,IAAI,aAAa;AAAA;AAAA;AAAA,EAGzD,SAAS,aAAa,IAAS;AAE9B,UAAM,QAAQ,sBAAsB,EAAE;AACtC,WAAO,MAAM,qBAAqB,KAAK;AAAA,EACxC;AAAA,IACC;AAGG,MAAM,YAAY;AAAA,EACxB,YAAmB,QAAgB;AAAhB;AAClB,SAAK,OAAO,YAAY,IAAI,KAAK,OAAO;AACxC,SAAK,MAAM;AAAA,EACZ;AAAA,EAEA;AAAA,EACA,WAAW;AAAA,EACX,MAAM;AAAA,EAEN,QAAQ;AACP,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,YAAY,oBAAoB,KAAK,IAAI;AAC9C,SAAK,MAAM,KAAK,IAAI;AAAA,EACrB;AAAA,EAGA,OAAO;AACN,QAAI,KAAK,UAAU;AAClB;AAAA,IACD;AAEA,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,UAAU,MAAM,KAAK;AAC3B,SAAK,MAAM;AAEX,SAAK,OAAO,OAAO,sBAAsB,OAAO;AAChD,SAAK,OAAO,KAAK,SAAS,OAAO;AACjC,SAAK,OAAO,KAAK,QAAQ,OAAO;AAChC,SAAK,YAAY,oBAAoB,KAAK,IAAI;AAAA,EAC/C;AAAA,EAIA,UAAU;AACT,SAAK,WAAW;AAEhB,SAAK,YAAY;AAAA,EAClB;AACD;AAtBC;AAAA,EADC;AAAA,GAjBW,YAkBZ;AAiBA;AAAA,EADC;AAAA,GAlCW,YAmCZ;",
5
+ "mappings": ";;;;;;;;;;AAAA,SAAS,uBAAuB,sBAAsB,YAAY;AAGlE,MAAM,sBACL,OAAO,YAAY,eAAe,QAAQ,IAAI,aAAa;AAAA;AAAA;AAAA,EAGzD,SAAS,aAAa,IAAS;AAE9B,UAAM,QAAQ,sBAAsB,EAAE;AACtC,WAAO,MAAM,qBAAqB,KAAK;AAAA,EACxC;AAAA,IACC;AAGG,MAAM,YAAY;AAAA,EACxB,YAAmB,QAAgB;AAAhB;AAClB,SAAK,OAAO,YAAY,IAAI,KAAK,OAAO;AACxC,SAAK,MAAM;AAAA,EACZ;AAAA,EAHmB;AAAA,EAKnB;AAAA,EACA,WAAW;AAAA,EACX,MAAM;AAAA,EAEN,QAAQ;AACP,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,YAAY,oBAAoB,KAAK,IAAI;AAC9C,SAAK,MAAM,KAAK,IAAI;AAAA,EACrB;AAAA,EAGA,OAAO;AACN,QAAI,KAAK,UAAU;AAClB;AAAA,IACD;AAEA,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,UAAU,MAAM,KAAK;AAC3B,SAAK,MAAM;AAEX,SAAK,OAAO,OAAO,sBAAsB,OAAO;AAChD,SAAK,OAAO,KAAK,SAAS,OAAO;AACjC,SAAK,OAAO,KAAK,QAAQ,OAAO;AAChC,SAAK,YAAY,oBAAoB,KAAK,IAAI;AAAA,EAC/C;AAAA,EAIA,UAAU;AACT,SAAK,WAAW;AAEhB,SAAK,YAAY;AAAA,EAClB;AACD;AAtBC;AAAA,EADC;AAAA,GAjBW,YAkBZ;AAiBA;AAAA,EADC;AAAA,GAlCW,YAmCZ;",
6
6
  "names": []
7
7
  }
@@ -30,6 +30,8 @@ class UserPreferencesManager {
30
30
  darkModeMediaQuery?.addEventListener("change", handleChange);
31
31
  this.disposables.add(() => darkModeMediaQuery?.removeEventListener("change", handleChange));
32
32
  }
33
+ user;
34
+ colorScheme;
33
35
  systemColorScheme = atom("systemColorScheme", "light");
34
36
  disposables = /* @__PURE__ */ new Set();
35
37
  dispose() {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.ts"],
4
4
  "sourcesContent": ["import { atom, computed } from '@tldraw/state'\nimport { TLCurrentUser } from '../../../config/createTLCurrentUser'\nimport { TLUserPreferences, defaultUserPreferences } from '../../../config/TLUserPreferences'\nimport { getGlobalWindow } from '../../../utils/dom'\n\n/** @public */\nexport class UserPreferencesManager {\n\tsystemColorScheme = atom<'dark' | 'light'>('systemColorScheme', 'light')\n\tdisposables = new Set<() => void>()\n\tdispose() {\n\t\tthis.disposables.forEach((d) => d())\n\t}\n\tconstructor(\n\t\tprivate readonly user: TLCurrentUser,\n\t\tprivate readonly colorScheme: 'light' | 'dark' | 'system'\n\t) {\n\t\tif (typeof window === 'undefined' || !getGlobalWindow().matchMedia) return\n\n\t\tconst darkModeMediaQuery = getGlobalWindow().matchMedia('(prefers-color-scheme: dark)')\n\t\tif (darkModeMediaQuery?.matches) {\n\t\t\tthis.systemColorScheme.set('dark')\n\t\t}\n\t\tconst handleChange = (e: MediaQueryListEvent) => {\n\t\t\tif (e.matches) {\n\t\t\t\tthis.systemColorScheme.set('dark')\n\t\t\t} else {\n\t\t\t\tthis.systemColorScheme.set('light')\n\t\t\t}\n\t\t}\n\t\tdarkModeMediaQuery?.addEventListener('change', handleChange)\n\t\tthis.disposables.add(() => darkModeMediaQuery?.removeEventListener('change', handleChange))\n\t}\n\n\tupdateUserPreferences(userPreferences: Partial<TLUserPreferences>) {\n\t\tthis.user.setUserPreferences({\n\t\t\t...this.user.userPreferences.get(),\n\t\t\t...userPreferences,\n\t\t})\n\t}\n\t@computed getUserPreferences() {\n\t\treturn {\n\t\t\tid: this.getId(),\n\t\t\tname: this.getName(),\n\t\t\tlocale: this.getLocale(),\n\t\t\tcolor: this.getColor(),\n\t\t\tanimationSpeed: this.getAnimationSpeed(),\n\t\t\tareKeyboardShortcutsEnabled: this.getAreKeyboardShortcutsEnabled(),\n\t\t\tisSnapMode: this.getIsSnapMode(),\n\t\t\tcolorScheme: this.user.userPreferences.get().colorScheme,\n\t\t\tisDarkMode: this.getIsDarkMode(),\n\t\t\tisWrapMode: this.getIsWrapMode(),\n\t\t\tisDynamicResizeMode: this.getIsDynamicResizeMode(),\n\t\t\tenhancedA11yMode: this.getEnhancedA11yMode(),\n\t\t\tinputMode: this.getInputMode(),\n\t\t\tisZoomDirectionInverted: this.getIsZoomDirectionInverted(),\n\t\t}\n\t}\n\n\t@computed getIsDarkMode() {\n\t\tconst userColorScheme = this.user.userPreferences.get().colorScheme\n\t\tconst scheme = userColorScheme ?? this.colorScheme\n\t\tswitch (scheme) {\n\t\t\tcase 'dark':\n\t\t\t\treturn true\n\t\t\tcase 'light':\n\t\t\t\treturn false\n\t\t\tcase 'system':\n\t\t\t\treturn this.systemColorScheme.get() === 'dark'\n\t\t\tdefault:\n\t\t\t\treturn false\n\t\t}\n\t}\n\n\t/**\n\t * The speed at which the user can scroll by dragging toward the edge of the screen.\n\t */\n\t@computed getEdgeScrollSpeed() {\n\t\treturn this.user.userPreferences.get().edgeScrollSpeed ?? defaultUserPreferences.edgeScrollSpeed\n\t}\n\n\t@computed getAnimationSpeed() {\n\t\treturn this.user.userPreferences.get().animationSpeed ?? defaultUserPreferences.animationSpeed\n\t}\n\n\t@computed getAreKeyboardShortcutsEnabled() {\n\t\treturn (\n\t\t\tthis.user.userPreferences.get().areKeyboardShortcutsEnabled ??\n\t\t\tdefaultUserPreferences.areKeyboardShortcutsEnabled\n\t\t)\n\t}\n\n\t@computed getId() {\n\t\treturn this.user.userPreferences.get().id\n\t}\n\n\t@computed getName() {\n\t\treturn this.user.userPreferences.get().name?.trim() ?? defaultUserPreferences.name\n\t}\n\n\t@computed getLocale() {\n\t\treturn this.user.userPreferences.get().locale ?? defaultUserPreferences.locale\n\t}\n\n\t@computed getColor() {\n\t\treturn this.user.userPreferences.get().color ?? defaultUserPreferences.color\n\t}\n\n\t@computed getIsSnapMode() {\n\t\treturn this.user.userPreferences.get().isSnapMode ?? defaultUserPreferences.isSnapMode\n\t}\n\n\t@computed getIsWrapMode() {\n\t\treturn this.user.userPreferences.get().isWrapMode ?? defaultUserPreferences.isWrapMode\n\t}\n\n\t@computed getIsDynamicResizeMode() {\n\t\treturn (\n\t\t\tthis.user.userPreferences.get().isDynamicSizeMode ?? defaultUserPreferences.isDynamicSizeMode\n\t\t)\n\t}\n\n\t@computed getIsPasteAtCursorMode() {\n\t\treturn (\n\t\t\tthis.user.userPreferences.get().isPasteAtCursorMode ??\n\t\t\tdefaultUserPreferences.isPasteAtCursorMode\n\t\t)\n\t}\n\n\t@computed getEnhancedA11yMode() {\n\t\treturn (\n\t\t\tthis.user.userPreferences.get().enhancedA11yMode ?? defaultUserPreferences.enhancedA11yMode\n\t\t)\n\t}\n\n\t@computed getInputMode() {\n\t\treturn this.user.userPreferences.get().inputMode ?? defaultUserPreferences.inputMode\n\t}\n\n\t@computed getIsZoomDirectionInverted() {\n\t\treturn (\n\t\t\tthis.user.userPreferences.get().isZoomDirectionInverted ??\n\t\t\tdefaultUserPreferences.isZoomDirectionInverted\n\t\t)\n\t}\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,136 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __decorateClass = (decorators, target, key, kind) => {
4
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
+ if (decorator = decorators[i])
7
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
+ if (kind && result) __defProp(target, key, result);
9
+ return result;
10
+ };
11
+ import { atom, computed } from "@tldraw/state";
12
+ class OverlayManager {
13
+ constructor(editor) {
14
+ this.editor = editor;
15
+ }
16
+ editor;
17
+ /** @internal */
18
+ _overlayUtils = /* @__PURE__ */ new Map();
19
+ /**
20
+ * Register an overlay util instance. Called during editor construction.
21
+ * @internal
22
+ */
23
+ registerUtil(util) {
24
+ const type = util.constructor.type;
25
+ if (!type) {
26
+ throw new Error(`Overlay util ${util.constructor.name} is missing a static 'type' property.`);
27
+ }
28
+ if (this._overlayUtils.has(type)) {
29
+ throw new Error(`Duplicate overlay util type: "${type}"`);
30
+ }
31
+ this._overlayUtils.set(type, util);
32
+ }
33
+ getOverlayUtil(arg) {
34
+ const type = typeof arg === "string" ? arg : arg.type;
35
+ const util = this._overlayUtils.get(type);
36
+ if (!util) throw new Error(`No overlay util found for type: "${type}"`);
37
+ return util;
38
+ }
39
+ getOverlayUtilsInZOrder() {
40
+ const utils = Array.from(this._overlayUtils.values());
41
+ return utils.map((util, i) => ({ util, i, z: util.options.zIndex ?? 0 })).sort((a, b) => a.z - b.z || a.i - b.i).map((entry) => entry.util);
42
+ }
43
+ getActiveOverlayEntries() {
44
+ const entries = [];
45
+ for (const util of this.getOverlayUtilsInZOrder()) {
46
+ if (!util.isActive()) continue;
47
+ entries.push({ util, overlays: util.getOverlays() });
48
+ }
49
+ return entries;
50
+ }
51
+ getCurrentOverlays() {
52
+ const all = [];
53
+ for (const { overlays } of this.getActiveOverlayEntries()) {
54
+ all.push(...overlays);
55
+ }
56
+ return all;
57
+ }
58
+ // Hit-test geometry cache keyed by overlay identity. Entries remain valid
59
+ // while getActiveOverlayEntries() keeps returning the same overlay
60
+ // instances; when its reactive deps change, getOverlays() emits fresh
61
+ // objects and stale entries fall out by GC.
62
+ _geometryCache = /* @__PURE__ */ new WeakMap();
63
+ /**
64
+ * Get hit-test geometry for an overlay, cached by overlay identity. Lets
65
+ * hit-testing on a pointermove storm skip the per-overlay geometry
66
+ * allocation that {@link OverlayUtil.getGeometry} would otherwise do on
67
+ * every call.
68
+ *
69
+ * @public
70
+ */
71
+ getOverlayGeometry(overlay) {
72
+ const cached = this._geometryCache.get(overlay);
73
+ if (cached !== void 0) return cached;
74
+ const util = this.getOverlayUtil(overlay);
75
+ const geometry = util.getGeometry(overlay);
76
+ this._geometryCache.set(overlay, geometry);
77
+ return geometry;
78
+ }
79
+ /**
80
+ * The currently hovered overlay id.
81
+ * @public
82
+ */
83
+ _hoveredOverlayId = atom("hoveredOverlayId", null);
84
+ getHoveredOverlayId() {
85
+ return this._hoveredOverlayId.get();
86
+ }
87
+ getHoveredOverlay() {
88
+ const id = this._hoveredOverlayId.get();
89
+ if (!id) return null;
90
+ return this.getCurrentOverlays().find((o) => o.id === id) ?? null;
91
+ }
92
+ setHoveredOverlay(id) {
93
+ if (id === this._hoveredOverlayId.get()) return;
94
+ this._hoveredOverlayId.set(id);
95
+ }
96
+ /**
97
+ * Hit test all active overlays at a given page point.
98
+ * Returns the topmost overlay whose geometry contains the point, or null.
99
+ * Utils are walked from highest zIndex to lowest so the overlay painted on
100
+ * top also wins the hit test. Within a util, overlays are walked in
101
+ * array order: the first overlay whose geometry contains the point wins,
102
+ * so utils should place highest-priority overlays first in `getOverlays`.
103
+ * Interactive overlays (those with geometry) are checked; non-interactive are skipped.
104
+ *
105
+ * @param point - Point in page coordinates
106
+ * @param margin - Hit test margin
107
+ * @public
108
+ */
109
+ getOverlayAtPoint(point, margin = 0) {
110
+ const entries = this.getActiveOverlayEntries();
111
+ for (let i = entries.length - 1; i >= 0; i--) {
112
+ const { overlays } = entries[i];
113
+ for (const overlay of overlays) {
114
+ const geometry = this.getOverlayGeometry(overlay);
115
+ if (!geometry) continue;
116
+ if (geometry.hitTestPoint(point, geometry.isFilled ? 0 : margin, true)) {
117
+ return overlay;
118
+ }
119
+ }
120
+ }
121
+ return null;
122
+ }
123
+ }
124
+ __decorateClass([
125
+ computed
126
+ ], OverlayManager.prototype, "getOverlayUtilsInZOrder", 1);
127
+ __decorateClass([
128
+ computed
129
+ ], OverlayManager.prototype, "getActiveOverlayEntries", 1);
130
+ __decorateClass([
131
+ computed
132
+ ], OverlayManager.prototype, "getCurrentOverlays", 1);
133
+ export {
134
+ OverlayManager
135
+ };
136
+ //# sourceMappingURL=OverlayManager.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/lib/editor/overlays/OverlayManager.ts"],
4
+ "sourcesContent": ["import { atom, computed } from '@tldraw/state'\nimport { Geometry2d } from '../../primitives/geometry/Geometry2d'\nimport { VecLike } from '../../primitives/Vec'\nimport type { Editor } from '../Editor'\nimport { OverlayUtil, TLOverlay } from './OverlayUtil'\n\n/**\n * An active overlay util paired with the overlays it produced for the current\n * editor state. Returned by {@link OverlayManager.getActiveOverlayEntries} so\n * hit-test, render, and debug paths share a single scan per reactive tick.\n *\n * @public\n */\nexport interface TLOverlayEntry {\n\tutil: OverlayUtil\n\toverlays: TLOverlay[]\n}\n\n/** @public */\nexport class OverlayManager {\n\tconstructor(public readonly editor: Editor) {}\n\n\t/** @internal */\n\treadonly _overlayUtils = new Map<string, OverlayUtil>()\n\n\t/**\n\t * Register an overlay util instance. Called during editor construction.\n\t * @internal\n\t */\n\tregisterUtil(util: OverlayUtil) {\n\t\tconst type = (util.constructor as typeof OverlayUtil).type\n\t\tif (!type) {\n\t\t\tthrow new Error(`Overlay util ${util.constructor.name} is missing a static 'type' property.`)\n\t\t}\n\t\tif (this._overlayUtils.has(type)) {\n\t\t\tthrow new Error(`Duplicate overlay util type: \"${type}\"`)\n\t\t}\n\t\tthis._overlayUtils.set(type, util)\n\t}\n\n\t/**\n\t * Get an overlay util by type string, overlay instance, or by passing\n\t * a util class as a generic parameter for type-safe lookup.\n\t *\n\t * @example\n\t * ```ts\n\t * const util = editor.overlays.getOverlayUtil('brush')\n\t * const util = editor.overlays.getOverlayUtil<BrushOverlayUtil>('brush')\n\t * const util = editor.overlays.getOverlayUtil(myOverlay)\n\t * ```\n\t *\n\t * @public\n\t */\n\tgetOverlayUtil<T extends OverlayUtil>(\n\t\ttype: T extends OverlayUtil<infer O> ? O['type'] : string\n\t): T\n\tgetOverlayUtil<O extends TLOverlay>(overlay: O): OverlayUtil<O>\n\tgetOverlayUtil(arg: string | TLOverlay): OverlayUtil {\n\t\tconst type = typeof arg === 'string' ? arg : arg.type\n\t\tconst util = this._overlayUtils.get(type)\n\t\tif (!util) throw new Error(`No overlay util found for type: \"${type}\"`)\n\t\treturn util\n\t}\n\n\t/**\n\t * Returns all registered overlay utils in paint order (ascending zIndex).\n\t * Utils with the same zIndex preserve their registration order.\n\t *\n\t * @public\n\t */\n\t@computed getOverlayUtilsInZOrder(): OverlayUtil[] {\n\t\tconst utils = Array.from(this._overlayUtils.values())\n\t\t// Stable sort by zIndex (registration order breaks ties).\n\t\treturn utils\n\t\t\t.map((util, i) => ({ util, i, z: util.options.zIndex ?? 0 }))\n\t\t\t.sort((a, b) => a.z - b.z || a.i - b.i)\n\t\t\t.map((entry) => entry.util)\n\t}\n\n\t/**\n\t * Reactive list of active overlay utils paired with the overlays they\n\t * produced for the current editor state, in paint order (ascending\n\t * zIndex). Both the hit-test and render paths read from this single\n\t * cached scan instead of each re-deriving the active set. Active utils\n\t * are included even when their `getOverlays()` returns an empty array,\n\t * since `render()` may still draw non-interactive UI (e.g. the selection\n\t * bounding box during brushing).\n\t *\n\t * @public\n\t */\n\t@computed getActiveOverlayEntries(): TLOverlayEntry[] {\n\t\tconst entries: TLOverlayEntry[] = []\n\t\tfor (const util of this.getOverlayUtilsInZOrder()) {\n\t\t\tif (!util.isActive()) continue\n\t\t\tentries.push({ util, overlays: util.getOverlays() })\n\t\t}\n\t\treturn entries\n\t}\n\n\t/**\n\t * Reactively computed list of all currently active overlays, in paint order.\n\t * @public\n\t */\n\t@computed getCurrentOverlays(): TLOverlay[] {\n\t\tconst all: TLOverlay[] = []\n\t\tfor (const { overlays } of this.getActiveOverlayEntries()) {\n\t\t\tall.push(...overlays)\n\t\t}\n\t\treturn all\n\t}\n\n\t// Hit-test geometry cache keyed by overlay identity. Entries remain valid\n\t// while getActiveOverlayEntries() keeps returning the same overlay\n\t// instances; when its reactive deps change, getOverlays() emits fresh\n\t// objects and stale entries fall out by GC.\n\tprivate _geometryCache = new WeakMap<TLOverlay, Geometry2d | null>()\n\n\t/**\n\t * Get hit-test geometry for an overlay, cached by overlay identity. Lets\n\t * hit-testing on a pointermove storm skip the per-overlay geometry\n\t * allocation that {@link OverlayUtil.getGeometry} would otherwise do on\n\t * every call.\n\t *\n\t * @public\n\t */\n\tgetOverlayGeometry(overlay: TLOverlay): Geometry2d | null {\n\t\tconst cached = this._geometryCache.get(overlay)\n\t\tif (cached !== undefined) return cached\n\t\tconst util = this.getOverlayUtil(overlay)\n\t\tconst geometry = util.getGeometry(overlay)\n\t\tthis._geometryCache.set(overlay, geometry)\n\t\treturn geometry\n\t}\n\n\t/**\n\t * The currently hovered overlay id.\n\t * @public\n\t */\n\tprivate _hoveredOverlayId = atom<string | null>('hoveredOverlayId', null)\n\n\tgetHoveredOverlayId(): string | null {\n\t\treturn this._hoveredOverlayId.get()\n\t}\n\n\tgetHoveredOverlay(): TLOverlay | null {\n\t\tconst id = this._hoveredOverlayId.get()\n\t\tif (!id) return null\n\t\treturn this.getCurrentOverlays().find((o) => o.id === id) ?? null\n\t}\n\n\tsetHoveredOverlay(id: string | null) {\n\t\tif (id === this._hoveredOverlayId.get()) return\n\t\tthis._hoveredOverlayId.set(id)\n\t}\n\n\t/**\n\t * Hit test all active overlays at a given page point.\n\t * Returns the topmost overlay whose geometry contains the point, or null.\n\t * Utils are walked from highest zIndex to lowest so the overlay painted on\n\t * top also wins the hit test. Within a util, overlays are walked in\n\t * array order: the first overlay whose geometry contains the point wins,\n\t * so utils should place highest-priority overlays first in `getOverlays`.\n\t * Interactive overlays (those with geometry) are checked; non-interactive are skipped.\n\t *\n\t * @param point - Point in page coordinates\n\t * @param margin - Hit test margin\n\t * @public\n\t */\n\tgetOverlayAtPoint(point: VecLike, margin = 0): TLOverlay | null {\n\t\tconst entries = this.getActiveOverlayEntries()\n\t\tfor (let i = entries.length - 1; i >= 0; i--) {\n\t\t\tconst { overlays } = entries[i]\n\t\t\tfor (const overlay of overlays) {\n\t\t\t\tconst geometry = this.getOverlayGeometry(overlay)\n\t\t\t\tif (!geometry) continue\n\t\t\t\tif (geometry.hitTestPoint(point, geometry.isFilled ? 0 : margin, true)) {\n\t\t\t\t\treturn overlay\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null\n\t}\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,72 @@
1
+ class OverlayUtil {
2
+ constructor(editor) {
3
+ this.editor = editor;
4
+ }
5
+ editor;
6
+ static type;
7
+ /**
8
+ * Options for this overlay util. Override this to provide customization options.
9
+ * Use {@link OverlayUtil.configure} to customize existing overlay utils.
10
+ *
11
+ * `zIndex` controls paint and hit-test order across utils — higher numbers
12
+ * paint on top and are hit-tested first. Ties resolve by registration order.
13
+ * Defaults to `0`; built-in utils use larger integers (100, 200, …) with
14
+ * gaps so custom utils can slot between.
15
+ *
16
+ * @public
17
+ */
18
+ options = {};
19
+ /**
20
+ * Create a new overlay util class with the given options merged in.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * const MyBrush = BrushOverlayUtil.configure({ fill: 'rgba(0,0,255,0.1)' })
25
+ * ```
26
+ *
27
+ * @public
28
+ */
29
+ static configure(options) {
30
+ return class extends this {
31
+ // @ts-expect-error
32
+ options = { ...this.options, ...options };
33
+ };
34
+ }
35
+ /**
36
+ * Returns hit-test geometry for an overlay instance, in page coordinates.
37
+ * Return null for non-interactive overlays (e.g. snap indicators, scribbles).
38
+ */
39
+ getGeometry(_overlay) {
40
+ return null;
41
+ }
42
+ /**
43
+ * Returns the cursor type to show when hovering this overlay.
44
+ */
45
+ getCursor(_overlay) {
46
+ return void 0;
47
+ }
48
+ /**
49
+ * Render all active overlays into the canvas context.
50
+ * The context is already transformed to page space (camera transform applied).
51
+ * Called reactively when overlays or editor state changes.
52
+ */
53
+ render(_ctx, _overlays) {
54
+ }
55
+ /**
56
+ * Optional: render all active overlays into the minimap canvas.
57
+ * The context is already transformed to page space (minimap camera applied),
58
+ * so overlays can use the same page-space coordinates as in {@link OverlayUtil.render}.
59
+ *
60
+ * `zoom` is the minimap's screen-pixels-per-page-unit, analogous to
61
+ * `editor.getCamera().z`; use `1 / zoom` for one-minimap-pixel line widths.
62
+ *
63
+ * Most overlays should leave this blank — only overlays that are meaningful
64
+ * at minimap scale (e.g. brushes, collaborator cursors) should opt in.
65
+ */
66
+ renderMinimap(_ctx, _overlays, _zoom) {
67
+ }
68
+ }
69
+ export {
70
+ OverlayUtil
71
+ };
72
+ //# sourceMappingURL=OverlayUtil.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/lib/editor/overlays/OverlayUtil.ts"],
4
+ "sourcesContent": ["import { TLCursorType } from '@tldraw/tlschema'\nimport { Geometry2d } from '../../primitives/geometry/Geometry2d'\nimport type { Editor } from '../Editor'\nimport { TLPointerEventInfo } from '../types/event-types'\n\n/** @public */\nexport interface TLOverlay<Props = Record<string, unknown>> {\n\t/**\n\t * Globally unique id for this overlay instance across all overlay utils.\n\t * Hit-test and hover lookup key on `id` alone, so utils must namespace their\n\t * ids (e.g. `'selection_fg:top_left'`, `'handle:<shapeId>:<handleId>'`) to\n\t * avoid colliding with overlays from other utils.\n\t */\n\tid: string\n\t/** The overlay util type that owns this instance */\n\ttype: string\n\t/** Arbitrary props for the overlay (handle id, corner name, etc.) */\n\tprops: Props\n}\n\n/** @public */\nexport interface TLOverlayUtilConstructor<U extends OverlayUtil = OverlayUtil> {\n\tnew (editor: Editor): U\n\ttype: string\n\tconfigure<T extends TLOverlayUtilConstructor<any>>(\n\t\tthis: T,\n\t\toptions: T extends new (...args: any[]) => { options: infer Options } ? Partial<Options> : never\n\t): T\n}\n\n/** @public */\nexport type TLAnyOverlayUtilConstructor = TLOverlayUtilConstructor<any>\n\n/**\n * Base class for overlay utilities. Overlays are ephemeral UI elements rendered\n * on top of the canvas (selection handles, rotation corners, shape handles, etc.).\n *\n * Each OverlayUtil defines a type of overlay and knows how to:\n * - Determine when its overlays should be active (predicate)\n * - Produce overlay instances from current editor state\n * - Provide hit-test geometry for interactive overlays\n * - Provide cursor style on hover\n * - Render into a canvas 2D context\n *\n * @public\n */\nexport abstract class OverlayUtil<T extends TLOverlay = TLOverlay> {\n\tconstructor(public editor: Editor) {}\n\tstatic type: string\n\n\t/**\n\t * Options for this overlay util. Override this to provide customization options.\n\t * Use {@link OverlayUtil.configure} to customize existing overlay utils.\n\t *\n\t * `zIndex` controls paint and hit-test order across utils \u2014 higher numbers\n\t * paint on top and are hit-tested first. Ties resolve by registration order.\n\t * Defaults to `0`; built-in utils use larger integers (100, 200, \u2026) with\n\t * gaps so custom utils can slot between.\n\t *\n\t * @public\n\t */\n\toptions: { zIndex?: number } = {}\n\n\t/**\n\t * Create a new overlay util class with the given options merged in.\n\t *\n\t * @example\n\t * ```ts\n\t * const MyBrush = BrushOverlayUtil.configure({ fill: 'rgba(0,0,255,0.1)' })\n\t * ```\n\t *\n\t * @public\n\t */\n\tstatic configure<T extends TLOverlayUtilConstructor<any>>(\n\t\tthis: T,\n\t\toptions: T extends new (...args: any[]) => { options: infer Options } ? Partial<Options> : never\n\t): T {\n\t\t// @ts-expect-error -- typescript has no idea what's going on here but it's fine\n\t\treturn class extends this {\n\t\t\t// @ts-expect-error\n\t\t\toptions = { ...this.options, ...options }\n\t\t}\n\t}\n\n\t/**\n\t * Whether this overlay util's overlays should currently be active.\n\t * Checked reactively to determine which overlays exist at any given time.\n\t */\n\tabstract isActive(): boolean\n\n\t/**\n\t * Returns the overlay instances that currently exist.\n\t * Called only when `isActive()` returns true.\n\t */\n\tabstract getOverlays(): T[]\n\n\t/**\n\t * Returns hit-test geometry for an overlay instance, in page coordinates.\n\t * Return null for non-interactive overlays (e.g. snap indicators, scribbles).\n\t */\n\tgetGeometry(_overlay: T): Geometry2d | null {\n\t\treturn null\n\t}\n\n\t/**\n\t * Returns the cursor type to show when hovering this overlay.\n\t */\n\tgetCursor(_overlay: T): TLCursorType | undefined {\n\t\treturn undefined\n\t}\n\n\t/**\n\t * Called when the user points down on this overlay, before the default\n\t * routing runs. Acts as an interrupt: define it to take over the event.\n\t *\n\t * Return `false` to continue with the default behavior (e.g. the\n\t * built-in rotate/resize handle transitions or shape-handle dispatch).\n\t * Return `true` \u2014 or nothing at all \u2014 to skip the default. In other\n\t * words, once you override this method you own the event unless you\n\t * explicitly opt back in by returning `false`.\n\t */\n\tonPointerDown?(overlay: T, info: TLPointerEventInfo): boolean | void\n\n\t/**\n\t * Render all active overlays into the canvas context.\n\t * The context is already transformed to page space (camera transform applied).\n\t * Called reactively when overlays or editor state changes.\n\t */\n\trender(_ctx: CanvasRenderingContext2D, _overlays: T[]): void {}\n\n\t/**\n\t * Optional: render all active overlays into the minimap canvas.\n\t * The context is already transformed to page space (minimap camera applied),\n\t * so overlays can use the same page-space coordinates as in {@link OverlayUtil.render}.\n\t *\n\t * `zoom` is the minimap's screen-pixels-per-page-unit, analogous to\n\t * `editor.getCamera().z`; use `1 / zoom` for one-minimap-pixel line widths.\n\t *\n\t * Most overlays should leave this blank \u2014 only overlays that are meaningful\n\t * at minimap scale (e.g. brushes, collaborator cursors) should opt in.\n\t */\n\trenderMinimap(_ctx: CanvasRenderingContext2D, _overlays: T[], _zoom: number): void {}\n}\n"],
5
+ "mappings": "AA8CO,MAAe,YAA6C;AAAA,EAClE,YAAmB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAAjB;AAAA,EACnB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaP,UAA+B,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYhC,OAAO,UAEN,SACI;AAEJ,WAAO,cAAc,KAAK;AAAA;AAAA,MAEzB,UAAU,EAAE,GAAG,KAAK,SAAS,GAAG,QAAQ;AAAA,IACzC;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,YAAY,UAAgC;AAC3C,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,UAAuC;AAChD,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,MAAgC,WAAsB;AAAA,EAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAa9D,cAAc,MAAgC,WAAgB,OAAqB;AAAA,EAAC;AACrF;",
6
+ "names": []
7
+ }