@tldraw/editor 3.8.0-canary.98976dbbb3dd → 3.8.0-canary.9b13f6b7554c

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.
@@ -1,8 +1,8 @@
1
- const version = "3.8.0-canary.98976dbbb3dd";
1
+ const version = "3.8.0-canary.9b13f6b7554c";
2
2
  const publishDates = {
3
3
  major: "2024-09-13T14:36:29.063Z",
4
- minor: "2025-01-29T12:08:39.683Z",
5
- patch: "2025-01-29T12:08:39.683Z"
4
+ minor: "2025-01-30T10:40:54.325Z",
5
+ patch: "2025-01-30T10:40:54.325Z"
6
6
  };
7
7
  export {
8
8
  publishDates,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/version.ts"],
4
- "sourcesContent": ["// This file is automatically generated by internal/scripts/refresh-assets.ts.\n// Do not edit manually. Or do, I'm a comment, not a cop.\n\nexport const version = '3.8.0-canary.98976dbbb3dd'\nexport const publishDates = {\n\tmajor: '2024-09-13T14:36:29.063Z',\n\tminor: '2025-01-29T12:08:39.683Z',\n\tpatch: '2025-01-29T12:08:39.683Z',\n}\n"],
4
+ "sourcesContent": ["// This file is automatically generated by internal/scripts/refresh-assets.ts.\n// Do not edit manually. Or do, I'm a comment, not a cop.\n\nexport const version = '3.8.0-canary.9b13f6b7554c'\nexport const publishDates = {\n\tmajor: '2024-09-13T14:36:29.063Z',\n\tminor: '2025-01-30T10:40:54.325Z',\n\tpatch: '2025-01-30T10:40:54.325Z',\n}\n"],
5
5
  "mappings": "AAGO,MAAM,UAAU;AAChB,MAAM,eAAe;AAAA,EAC3B,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACR;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tldraw/editor",
3
3
  "description": "A tiny little drawing app (editor).",
4
- "version": "3.8.0-canary.98976dbbb3dd",
4
+ "version": "3.8.0-canary.9b13f6b7554c",
5
5
  "author": {
6
6
  "name": "tldraw Inc.",
7
7
  "email": "hello@tldraw.com"
@@ -45,12 +45,12 @@
45
45
  "lint": "yarn run -T tsx ../../internal/scripts/lint.ts"
46
46
  },
47
47
  "dependencies": {
48
- "@tldraw/state": "3.8.0-canary.98976dbbb3dd",
49
- "@tldraw/state-react": "3.8.0-canary.98976dbbb3dd",
50
- "@tldraw/store": "3.8.0-canary.98976dbbb3dd",
51
- "@tldraw/tlschema": "3.8.0-canary.98976dbbb3dd",
52
- "@tldraw/utils": "3.8.0-canary.98976dbbb3dd",
53
- "@tldraw/validate": "3.8.0-canary.98976dbbb3dd",
48
+ "@tldraw/state": "3.8.0-canary.9b13f6b7554c",
49
+ "@tldraw/state-react": "3.8.0-canary.9b13f6b7554c",
50
+ "@tldraw/store": "3.8.0-canary.9b13f6b7554c",
51
+ "@tldraw/tlschema": "3.8.0-canary.9b13f6b7554c",
52
+ "@tldraw/utils": "3.8.0-canary.9b13f6b7554c",
53
+ "@tldraw/validate": "3.8.0-canary.9b13f6b7554c",
54
54
  "@types/core-js": "^2.5.5",
55
55
  "@use-gesture/react": "^10.2.27",
56
56
  "canvas-size": "~2.0.0",
package/src/index.ts CHANGED
@@ -240,9 +240,21 @@ export {
240
240
  type UiEventType,
241
241
  } from './lib/editor/types/event-types'
242
242
  export {
243
- type TLExternalAssetContent,
243
+ type TLBaseExternalContent,
244
+ type TLEmbedExternalContent,
245
+ type TLErrorExternalContentSource,
246
+ type TLExcalidrawExternalContentSource,
247
+ type TLExternalAsset,
244
248
  type TLExternalContent,
245
249
  type TLExternalContentSource,
250
+ type TLFileExternalAsset,
251
+ type TLFilesExternalContent,
252
+ type TLSvgTextExternalContent,
253
+ type TLTextExternalContent,
254
+ type TLTextExternalContentSource,
255
+ type TLTldrawExternalContentSource,
256
+ type TLUrlExternalAsset,
257
+ type TLUrlExternalContent,
246
258
  } from './lib/editor/types/external-content'
247
259
  export {
248
260
  type TLHistoryBatchOptions,
@@ -155,7 +155,7 @@ import {
155
155
  TLPointerEventInfo,
156
156
  TLWheelEventInfo,
157
157
  } from './types/event-types'
158
- import { TLExternalAssetContent, TLExternalContent } from './types/external-content'
158
+ import { TLExternalAsset, TLExternalContent } from './types/external-content'
159
159
  import { TLHistoryBatchOptions } from './types/history-types'
160
160
  import {
161
161
  OptionalKeys,
@@ -7975,10 +7975,8 @@ export class Editor extends EventEmitter<TLEventMap> {
7975
7975
 
7976
7976
  /** @internal */
7977
7977
  externalAssetContentHandlers: {
7978
- [K in TLExternalAssetContent['type']]: {
7979
- [Key in K]:
7980
- | null
7981
- | ((info: TLExternalAssetContent & { type: Key }) => Promise<TLAsset | undefined>)
7978
+ [K in TLExternalAsset['type']]: {
7979
+ [Key in K]: null | ((info: TLExternalAsset & { type: Key }) => Promise<TLAsset | undefined>)
7982
7980
  }[K]
7983
7981
  } = {
7984
7982
  file: null,
@@ -8007,9 +8005,9 @@ export class Editor extends EventEmitter<TLEventMap> {
8007
8005
  *
8008
8006
  * @public
8009
8007
  */
8010
- registerExternalAssetHandler<T extends TLExternalAssetContent['type']>(
8008
+ registerExternalAssetHandler<T extends TLExternalAsset['type']>(
8011
8009
  type: T,
8012
- handler: null | ((info: TLExternalAssetContent & { type: T }) => Promise<TLAsset>)
8010
+ handler: null | ((info: TLExternalAsset & { type: T }) => Promise<TLAsset>)
8013
8011
  ): this {
8014
8012
  this.externalAssetContentHandlers[type] = handler as any
8015
8013
  return this
@@ -8077,11 +8075,11 @@ export class Editor extends EventEmitter<TLEventMap> {
8077
8075
  * @param info - Info about the external content.
8078
8076
  * @returns The asset.
8079
8077
  */
8080
- async getAssetForExternalContent(info: TLExternalAssetContent): Promise<TLAsset | undefined> {
8078
+ async getAssetForExternalContent(info: TLExternalAsset): Promise<TLAsset | undefined> {
8081
8079
  return await this.externalAssetContentHandlers[info.type]?.(info as any)
8082
8080
  }
8083
8081
 
8084
- hasExternalAssetHandler(type: TLExternalAssetContent['type']): boolean {
8082
+ hasExternalAssetHandler(type: TLExternalAsset['type']): boolean {
8085
8083
  return !!this.externalAssetContentHandlers[type]
8086
8084
  }
8087
8085
 
@@ -9369,6 +9367,8 @@ export class Editor extends EventEmitter<TLEventMap> {
9369
9367
  // todo: replace with new readonly mode?
9370
9368
  if (this.getCrashingError()) return this
9371
9369
 
9370
+ this.emit('before-event', info)
9371
+
9372
9372
  const { inputs } = this
9373
9373
  const { type } = info
9374
9374
 
@@ -12,6 +12,7 @@ export interface TLEventMap {
12
12
  crash: [{ error: unknown }]
13
13
  'stop-camera-animation': []
14
14
  'stop-following': []
15
+ 'before-event': [TLEventInfo]
15
16
  event: [TLEventInfo]
16
17
  tick: [number]
17
18
  frame: [number]
@@ -2,57 +2,97 @@ import { TLAssetId } from '@tldraw/tlschema'
2
2
  import { VecLike } from '../../primitives/Vec'
3
3
  import { TLContent } from './clipboard-types'
4
4
 
5
+ /** @public */
6
+ export interface TLTldrawExternalContentSource {
7
+ type: 'tldraw'
8
+ data: TLContent
9
+ }
10
+
11
+ /** @public */
12
+ export interface TLExcalidrawExternalContentSource {
13
+ type: 'excalidraw'
14
+ data: any
15
+ }
16
+
17
+ /** @public */
18
+ export interface TLTextExternalContentSource {
19
+ type: 'text'
20
+ data: string
21
+ subtype: 'json' | 'html' | 'text' | 'url'
22
+ }
23
+
24
+ /** @public */
25
+ export interface TLErrorExternalContentSource {
26
+ type: 'error'
27
+ data: string | null
28
+ reason: string
29
+ }
30
+
5
31
  /** @public */
6
32
  export type TLExternalContentSource =
7
- | {
8
- type: 'tldraw'
9
- data: TLContent
10
- }
11
- | {
12
- type: 'excalidraw'
13
- data: any
14
- }
15
- | {
16
- type: 'text'
17
- data: string
18
- subtype: 'json' | 'html' | 'text' | 'url'
19
- }
20
- | {
21
- type: 'error'
22
- data: string | null
23
- reason: string
24
- }
25
-
26
- /** @public */
27
- export type TLExternalContent<EmbedDefinition> = {
33
+ | TLTldrawExternalContentSource
34
+ | TLExcalidrawExternalContentSource
35
+ | TLTextExternalContentSource
36
+ | TLErrorExternalContentSource
37
+
38
+ /** @public */
39
+ export interface TLBaseExternalContent {
28
40
  sources?: TLExternalContentSource[]
29
41
  point?: VecLike
30
- } & (
31
- | {
32
- type: 'text'
33
- text: string
34
- }
35
- | {
36
- type: 'files'
37
- files: File[]
38
- ignoreParent: boolean
39
- }
40
- | {
41
- type: 'url'
42
- url: string
43
- }
44
- | {
45
- type: 'svg-text'
46
- text: string
47
- }
48
- | {
49
- type: 'embed'
50
- url: string
51
- embed: EmbedDefinition
52
- }
53
- )
54
-
55
- /** @public */
56
- export type TLExternalAssetContent =
57
- | { type: 'file'; file: File; assetId?: TLAssetId }
58
- | { type: 'url'; url: string }
42
+ }
43
+
44
+ /** @public */
45
+ export interface TLTextExternalContent extends TLBaseExternalContent {
46
+ type: 'text'
47
+ text: string
48
+ }
49
+
50
+ /** @public */
51
+ export interface TLFilesExternalContent extends TLBaseExternalContent {
52
+ type: 'files'
53
+ files: File[]
54
+ ignoreParent: boolean
55
+ }
56
+
57
+ /** @public */
58
+ export interface TLUrlExternalContent extends TLBaseExternalContent {
59
+ type: 'url'
60
+ url: string
61
+ }
62
+
63
+ /** @public */
64
+ export interface TLSvgTextExternalContent extends TLBaseExternalContent {
65
+ type: 'svg-text'
66
+ text: string
67
+ }
68
+
69
+ /** @public */
70
+ export interface TLEmbedExternalContent<EmbedDefinition> extends TLBaseExternalContent {
71
+ type: 'embed'
72
+ url: string
73
+ embed: EmbedDefinition
74
+ }
75
+
76
+ /** @public */
77
+ export type TLExternalContent<EmbedDefinition> =
78
+ | TLTextExternalContent
79
+ | TLFilesExternalContent
80
+ | TLUrlExternalContent
81
+ | TLSvgTextExternalContent
82
+ | TLEmbedExternalContent<EmbedDefinition>
83
+
84
+ /** @public */
85
+ export interface TLFileExternalAsset {
86
+ type: 'file'
87
+ file: File
88
+ assetId?: TLAssetId
89
+ }
90
+
91
+ /** @public */
92
+ export interface TLUrlExternalAsset {
93
+ type: 'url'
94
+ url: string
95
+ }
96
+
97
+ /** @public */
98
+ export type TLExternalAsset = TLFileExternalAsset | TLUrlExternalAsset
package/src/version.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  // This file is automatically generated by internal/scripts/refresh-assets.ts.
2
2
  // Do not edit manually. Or do, I'm a comment, not a cop.
3
3
 
4
- export const version = '3.8.0-canary.98976dbbb3dd'
4
+ export const version = '3.8.0-canary.9b13f6b7554c'
5
5
  export const publishDates = {
6
6
  major: '2024-09-13T14:36:29.063Z',
7
- minor: '2025-01-29T12:08:39.683Z',
8
- patch: '2025-01-29T12:08:39.683Z',
7
+ minor: '2025-01-30T10:40:54.325Z',
8
+ patch: '2025-01-30T10:40:54.325Z',
9
9
  }