@tldraw/editor 5.4.0-canary.b8ec00e16e3a → 5.4.0-canary.b902bfb68544

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 (233) hide show
  1. package/dist-cjs/index.d.ts +114 -47
  2. package/dist-cjs/index.js +4 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/TldrawEditor.js +7 -2
  5. package/dist-cjs/lib/TldrawEditor.js.map +2 -2
  6. package/dist-cjs/lib/components/MenuClickCapture.js +6 -8
  7. package/dist-cjs/lib/components/MenuClickCapture.js.map +2 -2
  8. package/dist-cjs/lib/components/default-components/CanvasOverlays.js +1 -3
  9. package/dist-cjs/lib/components/default-components/CanvasOverlays.js.map +2 -2
  10. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js +1 -1
  11. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js.map +1 -1
  12. package/dist-cjs/lib/config/TLUserPreferences.js +6 -2
  13. package/dist-cjs/lib/config/TLUserPreferences.js.map +2 -2
  14. package/dist-cjs/lib/config/createTLStore.js +1 -1
  15. package/dist-cjs/lib/config/createTLStore.js.map +2 -2
  16. package/dist-cjs/lib/editor/Editor.js +164 -280
  17. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  18. package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js +3 -3
  19. package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js.map +2 -2
  20. package/dist-cjs/lib/editor/managers/CollaboratorsManager/CollaboratorsManager.js +8 -8
  21. package/dist-cjs/lib/editor/managers/CollaboratorsManager/CollaboratorsManager.js.map +2 -2
  22. package/dist-cjs/lib/editor/managers/FontManager/FontManager.js +2 -1
  23. package/dist-cjs/lib/editor/managers/FontManager/FontManager.js.map +2 -2
  24. package/dist-cjs/lib/editor/managers/InputsManager/InputsManager.js +79 -6
  25. package/dist-cjs/lib/editor/managers/InputsManager/InputsManager.js.map +2 -2
  26. package/dist-cjs/lib/editor/managers/ScribbleManager/ScribbleManager.js +7 -0
  27. package/dist-cjs/lib/editor/managers/ScribbleManager/ScribbleManager.js.map +2 -2
  28. package/dist-cjs/lib/editor/managers/SnapManager/BoundsSnaps.js +0 -2
  29. package/dist-cjs/lib/editor/managers/SnapManager/BoundsSnaps.js.map +2 -2
  30. package/dist-cjs/lib/editor/managers/TextManager/TextManager.js +1 -2
  31. package/dist-cjs/lib/editor/managers/TextManager/TextManager.js.map +2 -2
  32. package/dist-cjs/lib/editor/managers/TickManager/TickManager.js +6 -3
  33. package/dist-cjs/lib/editor/managers/TickManager/TickManager.js.map +2 -2
  34. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js +12 -1
  35. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js.map +2 -2
  36. package/dist-cjs/lib/editor/overlays/OverlayManager.js +3 -7
  37. package/dist-cjs/lib/editor/overlays/OverlayManager.js.map +2 -2
  38. package/dist-cjs/lib/editor/overlays/strokeShapeIndicators.js +0 -1
  39. package/dist-cjs/lib/editor/overlays/strokeShapeIndicators.js.map +2 -2
  40. package/dist-cjs/lib/editor/shapes/BaseFrameLikeShapeUtil.js +3 -1
  41. package/dist-cjs/lib/editor/shapes/BaseFrameLikeShapeUtil.js.map +2 -2
  42. package/dist-cjs/lib/editor/shapes/shared/getPerfectDashProps.js +1 -0
  43. package/dist-cjs/lib/editor/shapes/shared/getPerfectDashProps.js.map +2 -2
  44. package/dist-cjs/lib/editor/tools/BaseBoxShapeTool/children/Pointing.js +1 -1
  45. package/dist-cjs/lib/editor/tools/BaseBoxShapeTool/children/Pointing.js.map +2 -2
  46. package/dist-cjs/lib/editor/tools/StateNode.js +3 -2
  47. package/dist-cjs/lib/editor/tools/StateNode.js.map +2 -2
  48. package/dist-cjs/lib/globals/editors.js +57 -0
  49. package/dist-cjs/lib/globals/editors.js.map +7 -0
  50. package/dist-cjs/lib/globals/menus.js +9 -4
  51. package/dist-cjs/lib/globals/menus.js.map +2 -2
  52. package/dist-cjs/lib/hooks/useCanvasEvents.js +2 -0
  53. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  54. package/dist-cjs/lib/hooks/useDocumentEvents.js +39 -9
  55. package/dist-cjs/lib/hooks/useDocumentEvents.js.map +2 -2
  56. package/dist-cjs/lib/hooks/useLocalStore.js +10 -6
  57. package/dist-cjs/lib/hooks/useLocalStore.js.map +2 -2
  58. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js +1 -0
  59. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js.map +2 -2
  60. package/dist-cjs/lib/hooks/usePeerIds.js +2 -1
  61. package/dist-cjs/lib/hooks/usePeerIds.js.map +2 -2
  62. package/dist-cjs/lib/license/LicenseManager.js +9 -2
  63. package/dist-cjs/lib/license/LicenseManager.js.map +2 -2
  64. package/dist-cjs/lib/license/LicenseProvider.js +16 -3
  65. package/dist-cjs/lib/license/LicenseProvider.js.map +2 -2
  66. package/dist-cjs/lib/license/useLicenseManagerState.js +5 -4
  67. package/dist-cjs/lib/license/useLicenseManagerState.js.map +2 -2
  68. package/dist-cjs/lib/primitives/Box.js +2 -1
  69. package/dist-cjs/lib/primitives/Box.js.map +2 -2
  70. package/dist-cjs/lib/primitives/Vec.js +4 -3
  71. package/dist-cjs/lib/primitives/Vec.js.map +2 -2
  72. package/dist-cjs/lib/primitives/utils.js +2 -1
  73. package/dist-cjs/lib/primitives/utils.js.map +2 -2
  74. package/dist-cjs/lib/utils/deepLinks.js +5 -1
  75. package/dist-cjs/lib/utils/deepLinks.js.map +2 -2
  76. package/dist-cjs/lib/utils/rotation.js +1 -9
  77. package/dist-cjs/lib/utils/rotation.js.map +2 -2
  78. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js +17 -0
  79. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js.map +2 -2
  80. package/dist-cjs/lib/utils/sync/alerts.js +1 -1
  81. package/dist-cjs/lib/utils/sync/alerts.js.map +1 -1
  82. package/dist-cjs/version.js +3 -3
  83. package/dist-cjs/version.js.map +1 -1
  84. package/dist-esm/index.d.mts +114 -47
  85. package/dist-esm/index.mjs +9 -2
  86. package/dist-esm/index.mjs.map +2 -2
  87. package/dist-esm/lib/TldrawEditor.mjs +9 -4
  88. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  89. package/dist-esm/lib/components/MenuClickCapture.mjs +6 -8
  90. package/dist-esm/lib/components/MenuClickCapture.mjs.map +2 -2
  91. package/dist-esm/lib/components/default-components/CanvasOverlays.mjs +1 -3
  92. package/dist-esm/lib/components/default-components/CanvasOverlays.mjs.map +2 -2
  93. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs +1 -1
  94. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs.map +1 -1
  95. package/dist-esm/lib/config/TLUserPreferences.mjs +6 -2
  96. package/dist-esm/lib/config/TLUserPreferences.mjs.map +2 -2
  97. package/dist-esm/lib/config/createTLStore.mjs +1 -1
  98. package/dist-esm/lib/config/createTLStore.mjs.map +2 -2
  99. package/dist-esm/lib/editor/Editor.mjs +172 -281
  100. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  101. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs +3 -3
  102. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs.map +2 -2
  103. package/dist-esm/lib/editor/managers/CollaboratorsManager/CollaboratorsManager.mjs +9 -9
  104. package/dist-esm/lib/editor/managers/CollaboratorsManager/CollaboratorsManager.mjs.map +2 -2
  105. package/dist-esm/lib/editor/managers/FontManager/FontManager.mjs +2 -1
  106. package/dist-esm/lib/editor/managers/FontManager/FontManager.mjs.map +2 -2
  107. package/dist-esm/lib/editor/managers/InputsManager/InputsManager.mjs +81 -8
  108. package/dist-esm/lib/editor/managers/InputsManager/InputsManager.mjs.map +2 -2
  109. package/dist-esm/lib/editor/managers/ScribbleManager/ScribbleManager.mjs +7 -0
  110. package/dist-esm/lib/editor/managers/ScribbleManager/ScribbleManager.mjs.map +2 -2
  111. package/dist-esm/lib/editor/managers/SnapManager/BoundsSnaps.mjs +0 -2
  112. package/dist-esm/lib/editor/managers/SnapManager/BoundsSnaps.mjs.map +2 -2
  113. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs +2 -3
  114. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs.map +2 -2
  115. package/dist-esm/lib/editor/managers/TickManager/TickManager.mjs +6 -3
  116. package/dist-esm/lib/editor/managers/TickManager/TickManager.mjs.map +2 -2
  117. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs +12 -1
  118. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +2 -2
  119. package/dist-esm/lib/editor/overlays/OverlayManager.mjs +3 -7
  120. package/dist-esm/lib/editor/overlays/OverlayManager.mjs.map +2 -2
  121. package/dist-esm/lib/editor/overlays/strokeShapeIndicators.mjs +0 -1
  122. package/dist-esm/lib/editor/overlays/strokeShapeIndicators.mjs.map +2 -2
  123. package/dist-esm/lib/editor/shapes/BaseFrameLikeShapeUtil.mjs +3 -1
  124. package/dist-esm/lib/editor/shapes/BaseFrameLikeShapeUtil.mjs.map +2 -2
  125. package/dist-esm/lib/editor/shapes/shared/getPerfectDashProps.mjs +1 -0
  126. package/dist-esm/lib/editor/shapes/shared/getPerfectDashProps.mjs.map +2 -2
  127. package/dist-esm/lib/editor/tools/BaseBoxShapeTool/children/Pointing.mjs +1 -1
  128. package/dist-esm/lib/editor/tools/BaseBoxShapeTool/children/Pointing.mjs.map +2 -2
  129. package/dist-esm/lib/editor/tools/StateNode.mjs +3 -2
  130. package/dist-esm/lib/editor/tools/StateNode.mjs.map +2 -2
  131. package/dist-esm/lib/globals/editors.mjs +37 -0
  132. package/dist-esm/lib/globals/editors.mjs.map +7 -0
  133. package/dist-esm/lib/globals/menus.mjs +9 -4
  134. package/dist-esm/lib/globals/menus.mjs.map +2 -2
  135. package/dist-esm/lib/hooks/useCanvasEvents.mjs +2 -0
  136. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  137. package/dist-esm/lib/hooks/useDocumentEvents.mjs +40 -10
  138. package/dist-esm/lib/hooks/useDocumentEvents.mjs.map +2 -2
  139. package/dist-esm/lib/hooks/useLocalStore.mjs +11 -7
  140. package/dist-esm/lib/hooks/useLocalStore.mjs.map +2 -2
  141. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs +1 -0
  142. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs.map +2 -2
  143. package/dist-esm/lib/hooks/usePeerIds.mjs +2 -1
  144. package/dist-esm/lib/hooks/usePeerIds.mjs.map +2 -2
  145. package/dist-esm/lib/license/LicenseManager.mjs +9 -2
  146. package/dist-esm/lib/license/LicenseManager.mjs.map +2 -2
  147. package/dist-esm/lib/license/LicenseProvider.mjs +16 -3
  148. package/dist-esm/lib/license/LicenseProvider.mjs.map +2 -2
  149. package/dist-esm/lib/license/useLicenseManagerState.mjs +5 -4
  150. package/dist-esm/lib/license/useLicenseManagerState.mjs.map +2 -2
  151. package/dist-esm/lib/primitives/Box.mjs +2 -1
  152. package/dist-esm/lib/primitives/Box.mjs.map +2 -2
  153. package/dist-esm/lib/primitives/Vec.mjs +4 -3
  154. package/dist-esm/lib/primitives/Vec.mjs.map +2 -2
  155. package/dist-esm/lib/primitives/utils.mjs +2 -1
  156. package/dist-esm/lib/primitives/utils.mjs.map +2 -2
  157. package/dist-esm/lib/utils/deepLinks.mjs +5 -1
  158. package/dist-esm/lib/utils/deepLinks.mjs.map +2 -2
  159. package/dist-esm/lib/utils/rotation.mjs +1 -9
  160. package/dist-esm/lib/utils/rotation.mjs.map +2 -2
  161. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs +17 -0
  162. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs.map +2 -2
  163. package/dist-esm/lib/utils/sync/alerts.mjs +1 -1
  164. package/dist-esm/lib/utils/sync/alerts.mjs.map +1 -1
  165. package/dist-esm/version.mjs +3 -3
  166. package/dist-esm/version.mjs.map +1 -1
  167. package/package.json +13 -7
  168. package/src/index.ts +6 -1
  169. package/src/lib/TldrawEditor.tsx +16 -4
  170. package/src/lib/components/MenuClickCapture.tsx +19 -18
  171. package/src/lib/components/default-components/CanvasOverlays.tsx +1 -3
  172. package/src/lib/components/default-components/DefaultErrorFallback.tsx +1 -1
  173. package/src/lib/config/TLUserPreferences.test.ts +18 -1
  174. package/src/lib/config/TLUserPreferences.ts +8 -4
  175. package/src/lib/config/createTLStore.ts +1 -1
  176. package/src/lib/editor/Editor.ts +241 -359
  177. package/src/lib/editor/managers/ClickManager/ClickManager.ts +5 -3
  178. package/src/lib/editor/managers/CollaboratorsManager/CollaboratorsManager.ts +9 -9
  179. package/src/lib/editor/managers/FontManager/FontManager.ts +2 -1
  180. package/src/lib/editor/managers/InputsManager/InputsManager.test.ts +199 -3
  181. package/src/lib/editor/managers/InputsManager/InputsManager.ts +128 -9
  182. package/src/lib/editor/managers/ScribbleManager/ScribbleManager.ts +12 -1
  183. package/src/lib/editor/managers/SnapManager/BoundsSnaps.ts +0 -2
  184. package/src/lib/editor/managers/TextManager/TextManager.ts +2 -6
  185. package/src/lib/editor/managers/TickManager/TickManager.test.ts +13 -0
  186. package/src/lib/editor/managers/TickManager/TickManager.ts +9 -3
  187. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +64 -3
  188. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.ts +18 -1
  189. package/src/lib/editor/overlays/OverlayManager.ts +3 -7
  190. package/src/lib/editor/overlays/strokeShapeIndicators.ts +0 -1
  191. package/src/lib/editor/shapes/BaseFrameLikeShapeUtil.tsx +5 -1
  192. package/src/lib/editor/shapes/shared/getPerfectDashProps.ts +3 -0
  193. package/src/lib/editor/tools/BaseBoxShapeTool/children/Pointing.ts +4 -1
  194. package/src/lib/editor/tools/StateNode.test.ts +64 -0
  195. package/src/lib/editor/tools/StateNode.ts +12 -2
  196. package/src/lib/globals/editors.test.ts +76 -0
  197. package/src/lib/globals/editors.ts +53 -0
  198. package/src/lib/globals/menus.test.ts +33 -0
  199. package/src/lib/globals/menus.ts +11 -4
  200. package/src/lib/hooks/useCanvasEvents.ts +2 -0
  201. package/src/lib/hooks/useDocumentEvents.ts +60 -16
  202. package/src/lib/hooks/useLocalStore.ts +16 -8
  203. package/src/lib/hooks/usePassThroughWheelEvents.ts +3 -0
  204. package/src/lib/hooks/usePeerIds.ts +2 -1
  205. package/src/lib/license/LicenseManager.test.ts +160 -0
  206. package/src/lib/license/LicenseManager.ts +13 -4
  207. package/src/lib/license/LicenseProvider.tsx +24 -3
  208. package/src/lib/license/useLicenseManagerState.ts +8 -6
  209. package/src/lib/primitives/Box.test.ts +9 -1
  210. package/src/lib/primitives/Box.ts +3 -1
  211. package/src/lib/primitives/Vec.test.ts +10 -0
  212. package/src/lib/primitives/Vec.ts +4 -4
  213. package/src/lib/primitives/geometry/Arc2d.test.ts +226 -3
  214. package/src/lib/primitives/geometry/CubicBezier2d.test.ts +173 -3
  215. package/src/lib/primitives/geometry/CubicSpline2d.test.ts +160 -3
  216. package/src/lib/primitives/geometry/Ellipse2d.test.ts +243 -3
  217. package/src/lib/primitives/geometry/Geometry2d.test.ts +553 -1
  218. package/src/lib/primitives/geometry/Group2d.test.ts +398 -3
  219. package/src/lib/primitives/geometry/Polyline2d.test.ts +207 -0
  220. package/src/lib/primitives/geometry/Stadium2d.test.ts +191 -3
  221. package/src/lib/primitives/utils.test.ts +10 -1
  222. package/src/lib/primitives/utils.ts +4 -1
  223. package/src/lib/test/useCanvasEvents.test.tsx +74 -0
  224. package/src/lib/test/useDocumentEvents.test.tsx +107 -0
  225. package/src/lib/test/usePassThroughWheelEvents.test.tsx +25 -2
  226. package/src/lib/utils/deepLinks.test.ts +15 -0
  227. package/src/lib/utils/deepLinks.ts +7 -1
  228. package/src/lib/utils/rotation.ts +4 -12
  229. package/src/lib/utils/sync/TLLocalSyncClient.test.ts +56 -0
  230. package/src/lib/utils/sync/TLLocalSyncClient.ts +24 -0
  231. package/src/lib/utils/sync/alerts.ts +1 -1
  232. package/src/version.ts +3 -3
  233. package/src/lib/primitives/geometry/Polyline.test.ts +0 -5
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/lib/config/createTLStore.ts"],
4
- "sourcesContent": ["import { Signal, computed } from '@tldraw/state'\nimport { HistoryEntry, MigrationSequence, SerializedStore, Store, StoreSchema } from '@tldraw/store'\nimport {\n\tCustomRecordInfo,\n\tSchemaPropsInfo,\n\tTLAssetStore,\n\tTLRecord,\n\tTLStore,\n\tTLStoreProps,\n\tTLStoreSnapshot,\n\tTLThemes,\n\tTLUser,\n\tTLUserStore,\n\tUserRecordType,\n\tcreateCachedUserResolve,\n\tcreateTLSchema,\n\tcreateUserId,\n\tregisterColorsFromThemes,\n\tregisterFontsFromThemes,\n} from '@tldraw/tlschema'\nimport { FileHelpers, assert } from '@tldraw/utils'\nimport { Editor } from '../editor/Editor'\nimport { resolveThemes } from '../editor/managers/ThemeManager/ThemeManager'\nimport { TLAnyAssetUtilConstructor, checkAssets } from './defaultAssets'\nimport { TLAnyBindingUtilConstructor, checkBindings } from './defaultBindings'\nimport { TLAnyShapeUtilConstructor, checkShapesAndAddCore } from './defaultShapes'\nimport { TLEditorSnapshot, loadSnapshot } from './TLEditorSnapshot'\nimport { defaultUserPreferences, getUserPreferences } from './TLUserPreferences'\n\n/** @public */\nexport interface TLStoreBaseOptions {\n\t/** The initial data for the store. */\n\tinitialData?: SerializedStore<TLRecord>\n\n\t/** A snapshot of initial data to migrate and load into the store. */\n\tsnapshot?: Partial<TLEditorSnapshot> | TLStoreSnapshot\n\n\t/** The default name for the store. */\n\tdefaultName?: string\n\n\t/** How should this store upload & resolve assets? */\n\tassets?: TLAssetStore\n\n\t/**\n\t * Named theme definitions. When provided, custom color names are automatically\n\t * registered before the store is constructed so persisted data with those\n\t * colors passes validation on load.\n\t */\n\tthemes?: Partial<TLThemes>\n\n\t/** How should this store resolve users for attribution? */\n\tusers?: TLUserStore\n\n\t/** Called when the store is connected to an {@link @tldraw/editor#Editor}. */\n\tonMount?(editor: Editor): void | (() => void)\n}\n\n/** @public */\nexport type TLStoreSchemaOptions =\n\t| {\n\t\t\tschema?: StoreSchema<TLRecord, TLStoreProps>\n\t }\n\t| {\n\t\t\tshapeUtils?: readonly TLAnyShapeUtilConstructor[]\n\t\t\tbindingUtils?: readonly TLAnyBindingUtilConstructor[]\n\t\t\tassetUtils?: readonly TLAnyAssetUtilConstructor[]\n\t\t\tmigrations?: readonly MigrationSequence[]\n\t\t\trecords?: Record<string, CustomRecordInfo>\n\t }\n\n/** @public */\nexport type TLStoreOptions = TLStoreBaseOptions & {\n\tid?: string\n\t/** Collaboration options for the store. */\n\tcollaboration?: {\n\t\tstatus: Signal<'online' | 'offline'> | null\n\t\tmode?: Signal<'readonly' | 'readwrite'> | null\n\t}\n} & TLStoreSchemaOptions\n\n/** @public */\nexport type TLStoreEventInfo = HistoryEntry<TLRecord>\n\nconst defaultAssetResolve: NonNullable<TLAssetStore['resolve']> = (asset) => asset.props.src\n\nconst _defaultCurrentUser: Signal<TLUser | null> = computed('defaultCurrentUser', () => {\n\tconst prefs = getUserPreferences()\n\tif (!prefs.id) return null\n\treturn UserRecordType.create({\n\t\tid: createUserId(prefs.id),\n\t\tname: prefs.name ?? '',\n\t\tcolor: prefs.color ?? defaultUserPreferences.color,\n\t})\n})\n\n/** @public */\nexport const defaultUserStore: TLUserStore = {\n\tcurrentUser: _defaultCurrentUser,\n}\n\n/** @public */\nexport const inlineBase64AssetStore: TLAssetStore = {\n\tupload: async (_, file) => {\n\t\treturn { src: await FileHelpers.blobToDataUrl(file) }\n\t},\n}\n\n/**\n * A helper for creating a TLStore schema from either an object with shapeUtils, bindingUtils, and\n * migrations, or a schema.\n *\n * @param opts - Options for creating the schema.\n *\n * @public\n */\nexport function createTLSchemaFromUtils(\n\topts: TLStoreSchemaOptions\n): StoreSchema<TLRecord, TLStoreProps> {\n\tif ('schema' in opts && opts.schema) return opts.schema\n\n\treturn createTLSchema({\n\t\tshapes:\n\t\t\t'shapeUtils' in opts && opts.shapeUtils\n\t\t\t\t? utilsToMap(checkShapesAndAddCore(opts.shapeUtils))\n\t\t\t\t: undefined,\n\t\tbindings:\n\t\t\t'bindingUtils' in opts && opts.bindingUtils\n\t\t\t\t? utilsToMap(checkBindings(opts.bindingUtils))\n\t\t\t\t: undefined,\n\t\tassets:\n\t\t\t'assetUtils' in opts && opts.assetUtils\n\t\t\t\t? utilsToMap(checkAssets(opts.assetUtils))\n\t\t\t\t: undefined,\n\t\trecords: 'records' in opts ? opts.records : undefined,\n\t\tmigrations: 'migrations' in opts ? opts.migrations : undefined,\n\t})\n}\n\n/**\n * A helper for creating a TLStore.\n *\n * @param opts - Options for creating the store.\n *\n * @public\n */\nexport function createTLStore({\n\tinitialData,\n\tdefaultName = '',\n\tid,\n\tassets = inlineBase64AssetStore,\n\tusers = defaultUserStore,\n\tonMount,\n\tcollaboration,\n\tthemes,\n\t...rest\n}: TLStoreOptions = {}): TLStore {\n\tconst resolvedThemes = resolveThemes(themes)\n\tregisterColorsFromThemes(resolvedThemes)\n\tregisterFontsFromThemes(resolvedThemes)\n\tconst schema = createTLSchemaFromUtils(rest)\n\n\tconst store = new Store({\n\t\tid,\n\t\tschema,\n\t\tinitialData,\n\t\tprops: {\n\t\t\tdefaultName,\n\t\t\tassets: {\n\t\t\t\tupload: assets.upload,\n\t\t\t\tresolve: assets.resolve ?? defaultAssetResolve,\n\t\t\t\tremove: assets.remove ?? (() => Promise.resolve()),\n\t\t\t},\n\t\t\tusers: {\n\t\t\t\tcurrentUser: users.currentUser,\n\t\t\t\tresolve:\n\t\t\t\t\tusers.resolve ??\n\t\t\t\t\tcreateCachedUserResolve((userId) => {\n\t\t\t\t\t\tconst current = users.currentUser.get()\n\t\t\t\t\t\treturn current && current.id === createUserId(userId) ? current : null\n\t\t\t\t\t}),\n\t\t\t},\n\t\t\tonMount: (editor) => {\n\t\t\t\tassert(editor instanceof Editor)\n\t\t\t\tonMount?.(editor)\n\t\t\t},\n\t\t\tcollaboration,\n\t\t},\n\t})\n\n\tif (rest.snapshot) {\n\t\tif (initialData) throw new Error('Cannot provide both initialData and snapshot')\n\t\tloadSnapshot(store, rest.snapshot, { forceOverwriteSessionState: true })\n\t}\n\n\treturn store\n}\n\nfunction utilsToMap<T extends SchemaPropsInfo & { type: string }>(utils: T[]) {\n\treturn Object.fromEntries(\n\t\tutils.map((s): [string, SchemaPropsInfo] => [\n\t\t\ts.type,\n\t\t\t{\n\t\t\t\tprops: s.props,\n\t\t\t\tmigrations: s.migrations,\n\t\t\t},\n\t\t])\n\t)\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Signal, computed } from '@tldraw/state'\nimport { HistoryEntry, MigrationSequence, SerializedStore, Store, StoreSchema } from '@tldraw/store'\nimport {\n\tCustomRecordInfo,\n\tSchemaPropsInfo,\n\tTLAssetStore,\n\tTLRecord,\n\tTLStore,\n\tTLStoreProps,\n\tTLStoreSnapshot,\n\tTLThemes,\n\tTLUser,\n\tTLUserStore,\n\tUserRecordType,\n\tcreateCachedUserResolve,\n\tcreateTLSchema,\n\tcreateUserId,\n\tregisterColorsFromThemes,\n\tregisterFontsFromThemes,\n} from '@tldraw/tlschema'\nimport { FileHelpers, assert } from '@tldraw/utils'\nimport { Editor } from '../editor/Editor'\nimport { resolveThemes } from '../editor/managers/ThemeManager/ThemeManager'\nimport { TLAnyAssetUtilConstructor, checkAssets } from './defaultAssets'\nimport { TLAnyBindingUtilConstructor, checkBindings } from './defaultBindings'\nimport { TLAnyShapeUtilConstructor, checkShapesAndAddCore } from './defaultShapes'\nimport { TLEditorSnapshot, loadSnapshot } from './TLEditorSnapshot'\nimport { defaultUserPreferences, getUserPreferences } from './TLUserPreferences'\n\n/** @public */\nexport interface TLStoreBaseOptions {\n\t/** The initial data for the store. */\n\tinitialData?: SerializedStore<TLRecord>\n\n\t/** A snapshot of initial data to migrate and load into the store. */\n\tsnapshot?: Partial<TLEditorSnapshot> | TLStoreSnapshot\n\n\t/** The default name for the store. */\n\tdefaultName?: string\n\n\t/** How should this store upload & resolve assets? */\n\tassets?: TLAssetStore\n\n\t/**\n\t * Named theme definitions. When provided, custom color names are automatically\n\t * registered before the store is constructed so persisted data with those\n\t * colors passes validation on load.\n\t */\n\tthemes?: Partial<TLThemes>\n\n\t/** How should this store resolve users for attribution? */\n\tusers?: TLUserStore\n\n\t/** Called when the store is connected to an {@link @tldraw/editor#Editor}. */\n\tonMount?(editor: Editor): void | (() => void)\n}\n\n/** @public */\nexport type TLStoreSchemaOptions =\n\t| {\n\t\t\tschema?: StoreSchema<TLRecord, TLStoreProps>\n\t }\n\t| {\n\t\t\tshapeUtils?: readonly TLAnyShapeUtilConstructor[]\n\t\t\tbindingUtils?: readonly TLAnyBindingUtilConstructor[]\n\t\t\tassetUtils?: readonly TLAnyAssetUtilConstructor[]\n\t\t\tmigrations?: readonly MigrationSequence[]\n\t\t\trecords?: Record<string, CustomRecordInfo>\n\t }\n\n/** @public */\nexport type TLStoreOptions = TLStoreBaseOptions & {\n\tid?: string\n\t/** Collaboration options for the store. */\n\tcollaboration?: {\n\t\tstatus: Signal<'online' | 'offline'> | null\n\t\tmode?: Signal<'readonly' | 'readwrite'> | null\n\t}\n} & TLStoreSchemaOptions\n\n/** @public */\nexport type TLStoreEventInfo = HistoryEntry<TLRecord>\n\nconst defaultAssetResolve: NonNullable<TLAssetStore['resolve']> = (asset) => asset.props.src\n\nconst _defaultCurrentUser: Signal<TLUser | null> = computed('defaultCurrentUser', () => {\n\tconst prefs = getUserPreferences()\n\tif (!prefs.id) return null\n\treturn UserRecordType.create({\n\t\tid: createUserId(prefs.id),\n\t\tname: prefs.name ?? '',\n\t\tcolor: prefs.color ?? defaultUserPreferences.color,\n\t})\n})\n\n/** @public */\nexport const defaultUserStore: TLUserStore = {\n\tcurrentUser: _defaultCurrentUser,\n}\n\n/** @public */\nexport const inlineBase64AssetStore: TLAssetStore = {\n\tupload: async (_, file) => {\n\t\treturn { src: await FileHelpers.blobToDataUrl(file) }\n\t},\n}\n\n/**\n * A helper for creating a TLStore schema from either an object with shapeUtils, bindingUtils, and\n * migrations, or a schema.\n *\n * @param opts - Options for creating the schema.\n *\n * @public\n */\nexport function createTLSchemaFromUtils(\n\topts: TLStoreSchemaOptions\n): StoreSchema<TLRecord, TLStoreProps> {\n\tif ('schema' in opts && opts.schema) return opts.schema\n\n\treturn createTLSchema({\n\t\tshapes:\n\t\t\t'shapeUtils' in opts && opts.shapeUtils\n\t\t\t\t? utilsToMap(checkShapesAndAddCore(opts.shapeUtils))\n\t\t\t\t: undefined,\n\t\tbindings:\n\t\t\t'bindingUtils' in opts && opts.bindingUtils\n\t\t\t\t? utilsToMap(checkBindings(opts.bindingUtils))\n\t\t\t\t: undefined,\n\t\tassets:\n\t\t\t'assetUtils' in opts && opts.assetUtils\n\t\t\t\t? utilsToMap(checkAssets(opts.assetUtils))\n\t\t\t\t: undefined,\n\t\trecords: 'records' in opts ? opts.records : undefined,\n\t\tmigrations: 'migrations' in opts ? opts.migrations : undefined,\n\t})\n}\n\n/**\n * A helper for creating a TLStore.\n *\n * @param opts - Options for creating the store.\n *\n * @public\n */\nexport function createTLStore({\n\tinitialData,\n\tdefaultName = '',\n\tid,\n\tassets = inlineBase64AssetStore,\n\tusers = defaultUserStore,\n\tonMount,\n\tcollaboration,\n\tthemes,\n\t...rest\n}: TLStoreOptions = {}): TLStore {\n\tconst resolvedThemes = resolveThemes(themes)\n\tregisterColorsFromThemes(resolvedThemes)\n\tregisterFontsFromThemes(resolvedThemes)\n\tconst schema = createTLSchemaFromUtils(rest)\n\n\tconst store = new Store({\n\t\tid,\n\t\tschema,\n\t\tinitialData,\n\t\tprops: {\n\t\t\tdefaultName,\n\t\t\tassets: {\n\t\t\t\tupload: assets.upload,\n\t\t\t\tresolve: assets.resolve ?? defaultAssetResolve,\n\t\t\t\tremove: assets.remove ?? (() => Promise.resolve()),\n\t\t\t},\n\t\t\tusers: {\n\t\t\t\tcurrentUser: users.currentUser,\n\t\t\t\tresolve:\n\t\t\t\t\tusers.resolve ??\n\t\t\t\t\tcreateCachedUserResolve((userId) => {\n\t\t\t\t\t\tconst current = users.currentUser.get()\n\t\t\t\t\t\treturn current && current.id === createUserId(userId) ? current : null\n\t\t\t\t\t}),\n\t\t\t},\n\t\t\tonMount: (editor) => {\n\t\t\t\tassert(editor instanceof Editor)\n\t\t\t\treturn onMount?.(editor)\n\t\t\t},\n\t\t\tcollaboration,\n\t\t},\n\t})\n\n\tif (rest.snapshot) {\n\t\tif (initialData) throw new Error('Cannot provide both initialData and snapshot')\n\t\tloadSnapshot(store, rest.snapshot, { forceOverwriteSessionState: true })\n\t}\n\n\treturn store\n}\n\nfunction utilsToMap<T extends SchemaPropsInfo & { type: string }>(utils: T[]) {\n\treturn Object.fromEntries(\n\t\tutils.map((s): [string, SchemaPropsInfo] => [\n\t\t\ts.type,\n\t\t\t{\n\t\t\t\tprops: s.props,\n\t\t\t\tmigrations: s.migrations,\n\t\t\t},\n\t\t])\n\t)\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }