@bigbluebutton/tlschema 2.0.0-alpha.19
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.
- package/LICENSE +190 -0
- package/dist-cjs/TLStore.js +133 -0
- package/dist-cjs/TLStore.js.map +7 -0
- package/dist-cjs/assets/TLBaseAsset.js +37 -0
- package/dist-cjs/assets/TLBaseAsset.js.map +7 -0
- package/dist-cjs/assets/TLBookmarkAsset.js +38 -0
- package/dist-cjs/assets/TLBookmarkAsset.js.map +7 -0
- package/dist-cjs/assets/TLImageAsset.js +76 -0
- package/dist-cjs/assets/TLImageAsset.js.map +7 -0
- package/dist-cjs/assets/TLVideoAsset.js +76 -0
- package/dist-cjs/assets/TLVideoAsset.js.map +7 -0
- package/dist-cjs/createPresenceStateDerivation.js +68 -0
- package/dist-cjs/createPresenceStateDerivation.js.map +7 -0
- package/dist-cjs/createTLSchema.js +68 -0
- package/dist-cjs/createTLSchema.js.map +7 -0
- package/dist-cjs/index.d.ts +1414 -0
- package/dist-cjs/index.js +142 -0
- package/dist-cjs/index.js.map +7 -0
- package/dist-cjs/misc/TLColor.js +36 -0
- package/dist-cjs/misc/TLColor.js.map +7 -0
- package/dist-cjs/misc/TLCursor.js +55 -0
- package/dist-cjs/misc/TLCursor.js.map +7 -0
- package/dist-cjs/misc/TLHandle.js +36 -0
- package/dist-cjs/misc/TLHandle.js.map +7 -0
- package/dist-cjs/misc/TLOpacity.js +30 -0
- package/dist-cjs/misc/TLOpacity.js.map +7 -0
- package/dist-cjs/misc/TLScribble.js +40 -0
- package/dist-cjs/misc/TLScribble.js.map +7 -0
- package/dist-cjs/misc/geometry-types.js +37 -0
- package/dist-cjs/misc/geometry-types.js.map +7 -0
- package/dist-cjs/misc/id-validator.js +33 -0
- package/dist-cjs/misc/id-validator.js.map +7 -0
- package/dist-cjs/records/TLAsset.js +74 -0
- package/dist-cjs/records/TLAsset.js.map +7 -0
- package/dist-cjs/records/TLCamera.js +74 -0
- package/dist-cjs/records/TLCamera.js.map +7 -0
- package/dist-cjs/records/TLDocument.js +82 -0
- package/dist-cjs/records/TLDocument.js.map +7 -0
- package/dist-cjs/records/TLInstance.js +452 -0
- package/dist-cjs/records/TLInstance.js.map +7 -0
- package/dist-cjs/records/TLPage.js +74 -0
- package/dist-cjs/records/TLPage.js.map +7 -0
- package/dist-cjs/records/TLPageState.js +209 -0
- package/dist-cjs/records/TLPageState.js.map +7 -0
- package/dist-cjs/records/TLPointer.js +76 -0
- package/dist-cjs/records/TLPointer.js.map +7 -0
- package/dist-cjs/records/TLPresence.js +170 -0
- package/dist-cjs/records/TLPresence.js.map +7 -0
- package/dist-cjs/records/TLRecord.js +17 -0
- package/dist-cjs/records/TLRecord.js.map +7 -0
- package/dist-cjs/records/TLShape.js +147 -0
- package/dist-cjs/records/TLShape.js.map +7 -0
- package/dist-cjs/shapes/TLArrowShape.js +156 -0
- package/dist-cjs/shapes/TLArrowShape.js.map +7 -0
- package/dist-cjs/shapes/TLBaseShape.js +52 -0
- package/dist-cjs/shapes/TLBaseShape.js.map +7 -0
- package/dist-cjs/shapes/TLBookmarkShape.js +57 -0
- package/dist-cjs/shapes/TLBookmarkShape.js.map +7 -0
- package/dist-cjs/shapes/TLDrawShape.js +89 -0
- package/dist-cjs/shapes/TLDrawShape.js.map +7 -0
- package/dist-cjs/shapes/TLEmbedShape.js +709 -0
- package/dist-cjs/shapes/TLEmbedShape.js.map +7 -0
- package/dist-cjs/shapes/TLFrameShape.js +33 -0
- package/dist-cjs/shapes/TLFrameShape.js.map +7 -0
- package/dist-cjs/shapes/TLGeoShape.js +230 -0
- package/dist-cjs/shapes/TLGeoShape.js.map +7 -0
- package/dist-cjs/shapes/TLGroupShape.js +28 -0
- package/dist-cjs/shapes/TLGroupShape.js.map +7 -0
- package/dist-cjs/shapes/TLHighlightShape.js +38 -0
- package/dist-cjs/shapes/TLHighlightShape.js.map +7 -0
- package/dist-cjs/shapes/TLImageShape.js +69 -0
- package/dist-cjs/shapes/TLImageShape.js.map +7 -0
- package/dist-cjs/shapes/TLLineShape.js +70 -0
- package/dist-cjs/shapes/TLLineShape.js.map +7 -0
- package/dist-cjs/shapes/TLNoteShape.js +144 -0
- package/dist-cjs/shapes/TLNoteShape.js.map +7 -0
- package/dist-cjs/shapes/TLTextShape.js +67 -0
- package/dist-cjs/shapes/TLTextShape.js.map +7 -0
- package/dist-cjs/shapes/TLVideoShape.js +53 -0
- package/dist-cjs/shapes/TLVideoShape.js.map +7 -0
- package/dist-cjs/store-migrations.js +81 -0
- package/dist-cjs/store-migrations.js.map +7 -0
- package/dist-cjs/styles/StyleProp.js +94 -0
- package/dist-cjs/styles/StyleProp.js.map +7 -0
- package/dist-cjs/styles/TLColorStyle.js +283 -0
- package/dist-cjs/styles/TLColorStyle.js.map +7 -0
- package/dist-cjs/styles/TLDashStyle.js +29 -0
- package/dist-cjs/styles/TLDashStyle.js.map +7 -0
- package/dist-cjs/styles/TLFillStyle.js +29 -0
- package/dist-cjs/styles/TLFillStyle.js.map +7 -0
- package/dist-cjs/styles/TLFontStyle.js +36 -0
- package/dist-cjs/styles/TLFontStyle.js.map +7 -0
- package/dist-cjs/styles/TLHorizontalAlignStyle.js +29 -0
- package/dist-cjs/styles/TLHorizontalAlignStyle.js.map +7 -0
- package/dist-cjs/styles/TLSizeStyle.js +29 -0
- package/dist-cjs/styles/TLSizeStyle.js.map +7 -0
- package/dist-cjs/styles/TLVerticalAlignStyle.js +29 -0
- package/dist-cjs/styles/TLVerticalAlignStyle.js.map +7 -0
- package/dist-cjs/translations/languages.js +59 -0
- package/dist-cjs/translations/languages.js.map +7 -0
- package/dist-cjs/translations/translations.js +63 -0
- package/dist-cjs/translations/translations.js.map +7 -0
- package/dist-cjs/util-types.js +17 -0
- package/dist-cjs/util-types.js.map +7 -0
- package/dist-esm/TLStore.mjs +113 -0
- package/dist-esm/TLStore.mjs.map +7 -0
- package/dist-esm/assets/TLBaseAsset.mjs +17 -0
- package/dist-esm/assets/TLBaseAsset.mjs.map +7 -0
- package/dist-esm/assets/TLBookmarkAsset.mjs +18 -0
- package/dist-esm/assets/TLBookmarkAsset.mjs.map +7 -0
- package/dist-esm/assets/TLImageAsset.mjs +56 -0
- package/dist-esm/assets/TLImageAsset.mjs.map +7 -0
- package/dist-esm/assets/TLVideoAsset.mjs +56 -0
- package/dist-esm/assets/TLVideoAsset.mjs.map +7 -0
- package/dist-esm/createPresenceStateDerivation.mjs +48 -0
- package/dist-esm/createPresenceStateDerivation.mjs.map +7 -0
- package/dist-esm/createTLSchema.mjs +48 -0
- package/dist-esm/createTLSchema.mjs.map +7 -0
- package/dist-esm/index.d.mts +1414 -0
- package/dist-esm/index.mjs +193 -0
- package/dist-esm/index.mjs.map +7 -0
- package/dist-esm/misc/TLColor.mjs +16 -0
- package/dist-esm/misc/TLColor.mjs.map +7 -0
- package/dist-esm/misc/TLCursor.mjs +35 -0
- package/dist-esm/misc/TLCursor.mjs.map +7 -0
- package/dist-esm/misc/TLHandle.mjs +16 -0
- package/dist-esm/misc/TLHandle.mjs.map +7 -0
- package/dist-esm/misc/TLOpacity.mjs +10 -0
- package/dist-esm/misc/TLOpacity.mjs.map +7 -0
- package/dist-esm/misc/TLScribble.mjs +20 -0
- package/dist-esm/misc/TLScribble.mjs.map +7 -0
- package/dist-esm/misc/geometry-types.mjs +17 -0
- package/dist-esm/misc/geometry-types.mjs.map +7 -0
- package/dist-esm/misc/id-validator.mjs +13 -0
- package/dist-esm/misc/id-validator.mjs.map +7 -0
- package/dist-esm/records/TLAsset.mjs +57 -0
- package/dist-esm/records/TLAsset.mjs.map +7 -0
- package/dist-esm/records/TLCamera.mjs +54 -0
- package/dist-esm/records/TLCamera.mjs.map +7 -0
- package/dist-esm/records/TLDocument.mjs +62 -0
- package/dist-esm/records/TLDocument.mjs.map +7 -0
- package/dist-esm/records/TLInstance.mjs +432 -0
- package/dist-esm/records/TLInstance.mjs.map +7 -0
- package/dist-esm/records/TLPage.mjs +54 -0
- package/dist-esm/records/TLPage.mjs.map +7 -0
- package/dist-esm/records/TLPageState.mjs +189 -0
- package/dist-esm/records/TLPageState.mjs.map +7 -0
- package/dist-esm/records/TLPointer.mjs +56 -0
- package/dist-esm/records/TLPointer.mjs.map +7 -0
- package/dist-esm/records/TLPresence.mjs +150 -0
- package/dist-esm/records/TLPresence.mjs.map +7 -0
- package/dist-esm/records/TLRecord.mjs +1 -0
- package/dist-esm/records/TLRecord.mjs.map +7 -0
- package/dist-esm/records/TLShape.mjs +127 -0
- package/dist-esm/records/TLShape.mjs.map +7 -0
- package/dist-esm/shapes/TLArrowShape.mjs +136 -0
- package/dist-esm/shapes/TLArrowShape.mjs.map +7 -0
- package/dist-esm/shapes/TLBaseShape.mjs +32 -0
- package/dist-esm/shapes/TLBaseShape.mjs.map +7 -0
- package/dist-esm/shapes/TLBookmarkShape.mjs +37 -0
- package/dist-esm/shapes/TLBookmarkShape.mjs.map +7 -0
- package/dist-esm/shapes/TLDrawShape.mjs +69 -0
- package/dist-esm/shapes/TLDrawShape.mjs.map +7 -0
- package/dist-esm/shapes/TLEmbedShape.mjs +689 -0
- package/dist-esm/shapes/TLEmbedShape.mjs.map +7 -0
- package/dist-esm/shapes/TLFrameShape.mjs +13 -0
- package/dist-esm/shapes/TLFrameShape.mjs.map +7 -0
- package/dist-esm/shapes/TLGeoShape.mjs +212 -0
- package/dist-esm/shapes/TLGeoShape.mjs.map +7 -0
- package/dist-esm/shapes/TLGroupShape.mjs +8 -0
- package/dist-esm/shapes/TLGroupShape.mjs.map +7 -0
- package/dist-esm/shapes/TLHighlightShape.mjs +18 -0
- package/dist-esm/shapes/TLHighlightShape.mjs.map +7 -0
- package/dist-esm/shapes/TLImageShape.mjs +49 -0
- package/dist-esm/shapes/TLImageShape.mjs.map +7 -0
- package/dist-esm/shapes/TLLineShape.mjs +50 -0
- package/dist-esm/shapes/TLLineShape.mjs.map +7 -0
- package/dist-esm/shapes/TLNoteShape.mjs +126 -0
- package/dist-esm/shapes/TLNoteShape.mjs.map +7 -0
- package/dist-esm/shapes/TLTextShape.mjs +47 -0
- package/dist-esm/shapes/TLTextShape.mjs.map +7 -0
- package/dist-esm/shapes/TLVideoShape.mjs +33 -0
- package/dist-esm/shapes/TLVideoShape.mjs.map +7 -0
- package/dist-esm/store-migrations.mjs +61 -0
- package/dist-esm/store-migrations.mjs.map +7 -0
- package/dist-esm/styles/StyleProp.mjs +74 -0
- package/dist-esm/styles/StyleProp.mjs.map +7 -0
- package/dist-esm/styles/TLColorStyle.mjs +263 -0
- package/dist-esm/styles/TLColorStyle.mjs.map +7 -0
- package/dist-esm/styles/TLDashStyle.mjs +9 -0
- package/dist-esm/styles/TLDashStyle.mjs.map +7 -0
- package/dist-esm/styles/TLFillStyle.mjs +9 -0
- package/dist-esm/styles/TLFillStyle.mjs.map +7 -0
- package/dist-esm/styles/TLFontStyle.mjs +16 -0
- package/dist-esm/styles/TLFontStyle.mjs.map +7 -0
- package/dist-esm/styles/TLHorizontalAlignStyle.mjs +9 -0
- package/dist-esm/styles/TLHorizontalAlignStyle.mjs.map +7 -0
- package/dist-esm/styles/TLSizeStyle.mjs +9 -0
- package/dist-esm/styles/TLSizeStyle.mjs.map +7 -0
- package/dist-esm/styles/TLVerticalAlignStyle.mjs +9 -0
- package/dist-esm/styles/TLVerticalAlignStyle.mjs.map +7 -0
- package/dist-esm/translations/languages.mjs +39 -0
- package/dist-esm/translations/languages.mjs.map +7 -0
- package/dist-esm/translations/translations.mjs +43 -0
- package/dist-esm/translations/translations.mjs.map +7 -0
- package/dist-esm/util-types.mjs +1 -0
- package/dist-esm/util-types.mjs.map +7 -0
- package/package.json +64 -0
- package/src/TLStore.ts +160 -0
- package/src/assets/TLBaseAsset.ts +44 -0
- package/src/assets/TLBookmarkAsset.ts +31 -0
- package/src/assets/TLImageAsset.ts +73 -0
- package/src/assets/TLVideoAsset.ts +73 -0
- package/src/createPresenceStateDerivation.ts +53 -0
- package/src/createTLSchema.ts +65 -0
- package/src/index.ts +168 -0
- package/src/migrations.test.ts +1768 -0
- package/src/misc/TLColor.ts +28 -0
- package/src/misc/TLCursor.ts +54 -0
- package/src/misc/TLHandle.ts +41 -0
- package/src/misc/TLOpacity.ts +11 -0
- package/src/misc/TLScribble.ts +39 -0
- package/src/misc/geometry-types.ts +37 -0
- package/src/misc/id-validator.ts +14 -0
- package/src/records/TLAsset.ts +80 -0
- package/src/records/TLCamera.ts +74 -0
- package/src/records/TLDocument.ts +77 -0
- package/src/records/TLInstance.ts +493 -0
- package/src/records/TLPage.ts +72 -0
- package/src/records/TLPageState.ts +216 -0
- package/src/records/TLPointer.ts +74 -0
- package/src/records/TLPresence.ts +179 -0
- package/src/records/TLRecord.ts +21 -0
- package/src/records/TLShape.ts +214 -0
- package/src/shapes/TLArrowShape.ts +160 -0
- package/src/shapes/TLBaseShape.ts +67 -0
- package/src/shapes/TLBookmarkShape.ts +44 -0
- package/src/shapes/TLDrawShape.ts +89 -0
- package/src/shapes/TLEmbedShape.ts +754 -0
- package/src/shapes/TLFrameShape.ts +18 -0
- package/src/shapes/TLGeoShape.ts +226 -0
- package/src/shapes/TLGroupShape.ts +14 -0
- package/src/shapes/TLHighlightShape.ts +24 -0
- package/src/shapes/TLImageShape.ts +59 -0
- package/src/shapes/TLLineShape.ts +61 -0
- package/src/shapes/TLNoteShape.ts +137 -0
- package/src/shapes/TLTextShape.ts +55 -0
- package/src/shapes/TLVideoShape.ts +40 -0
- package/src/store-migrations.ts +63 -0
- package/src/styles/StyleProp.ts +105 -0
- package/src/styles/TLColorStyle.ts +296 -0
- package/src/styles/TLDashStyle.ts +11 -0
- package/src/styles/TLFillStyle.ts +11 -0
- package/src/styles/TLFontStyle.ts +19 -0
- package/src/styles/TLHorizontalAlignStyle.ts +11 -0
- package/src/styles/TLSizeStyle.ts +11 -0
- package/src/styles/TLVerticalAlignStyle.ts +11 -0
- package/src/translations/languages.ts +39 -0
- package/src/translations/translations.test.ts +43 -0
- package/src/translations/translations.ts +73 -0
- package/src/util-types.ts +2 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { T } from '@bigbluebutton/validate'
|
|
2
|
+
import { SetValue } from '../util-types'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The colors used by tldraw's default shapes.
|
|
6
|
+
*
|
|
7
|
+
* @public */
|
|
8
|
+
export const TL_CANVAS_UI_COLOR_TYPES = new Set([
|
|
9
|
+
'accent',
|
|
10
|
+
'white',
|
|
11
|
+
'black',
|
|
12
|
+
'selection-stroke',
|
|
13
|
+
'selection-fill',
|
|
14
|
+
'laser',
|
|
15
|
+
'muted-1',
|
|
16
|
+
] as const)
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* A type for the colors used by tldraw's default shapes.
|
|
20
|
+
*
|
|
21
|
+
* @public */
|
|
22
|
+
export type TLCanvasUiColor = SetValue<typeof TL_CANVAS_UI_COLOR_TYPES>
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* A validator for the colors used by tldraw's default shapes.
|
|
26
|
+
*
|
|
27
|
+
* @public */
|
|
28
|
+
export const canvasUiColorTypeValidator = T.setEnum(TL_CANVAS_UI_COLOR_TYPES)
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { T } from '@bigbluebutton/validate'
|
|
2
|
+
import { SetValue } from '../util-types'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The cursor types used by tldraw's default shapes.
|
|
6
|
+
*
|
|
7
|
+
* @public */
|
|
8
|
+
export const TL_CURSOR_TYPES = new Set([
|
|
9
|
+
'none',
|
|
10
|
+
'default',
|
|
11
|
+
'pointer',
|
|
12
|
+
'cross',
|
|
13
|
+
'grab',
|
|
14
|
+
'rotate',
|
|
15
|
+
'grabbing',
|
|
16
|
+
'resize-edge',
|
|
17
|
+
'resize-corner',
|
|
18
|
+
'text',
|
|
19
|
+
'move',
|
|
20
|
+
'ew-resize',
|
|
21
|
+
'ns-resize',
|
|
22
|
+
'nesw-resize',
|
|
23
|
+
'nwse-resize',
|
|
24
|
+
'nesw-rotate',
|
|
25
|
+
'nwse-rotate',
|
|
26
|
+
'swne-rotate',
|
|
27
|
+
'senw-rotate',
|
|
28
|
+
'zoom-in',
|
|
29
|
+
'zoom-out',
|
|
30
|
+
])
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* A type for the cursor types used by tldraw's default shapes.
|
|
34
|
+
*
|
|
35
|
+
* @public */
|
|
36
|
+
export type TLCursorType = SetValue<typeof TL_CURSOR_TYPES>
|
|
37
|
+
|
|
38
|
+
/** @internal */
|
|
39
|
+
export const cursorTypeValidator = T.setEnum(TL_CURSOR_TYPES)
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* A cursor used by tldraw.
|
|
43
|
+
*
|
|
44
|
+
* @public */
|
|
45
|
+
export interface TLCursor {
|
|
46
|
+
type: TLCursorType
|
|
47
|
+
rotation: number
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** @internal */
|
|
51
|
+
export const cursorValidator: T.Validator<TLCursor> = T.object<TLCursor>({
|
|
52
|
+
type: cursorTypeValidator,
|
|
53
|
+
rotation: T.number,
|
|
54
|
+
})
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { T } from '@bigbluebutton/validate'
|
|
2
|
+
import { SetValue } from '../util-types'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The handle types used by tldraw's default shapes.
|
|
6
|
+
*
|
|
7
|
+
* @public */
|
|
8
|
+
export const TL_HANDLE_TYPES = new Set(['vertex', 'virtual', 'create'] as const)
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A type for the handle types used by tldraw's default shapes.
|
|
12
|
+
*
|
|
13
|
+
* @public */
|
|
14
|
+
export type TLHandleType = SetValue<typeof TL_HANDLE_TYPES>
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A base interface for a shape's handles.
|
|
18
|
+
*
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
export interface TLHandle {
|
|
22
|
+
/** A unique identifier for the handle. */
|
|
23
|
+
id: string
|
|
24
|
+
type: TLHandleType
|
|
25
|
+
canBind?: boolean
|
|
26
|
+
canSnap?: boolean
|
|
27
|
+
index: string
|
|
28
|
+
x: number
|
|
29
|
+
y: number
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** @internal */
|
|
33
|
+
export const handleValidator: T.Validator<TLHandle> = T.object({
|
|
34
|
+
id: T.string,
|
|
35
|
+
type: T.setEnum(TL_HANDLE_TYPES),
|
|
36
|
+
canBind: T.boolean.optional(),
|
|
37
|
+
canSnap: T.boolean.optional(),
|
|
38
|
+
index: T.string,
|
|
39
|
+
x: T.number,
|
|
40
|
+
y: T.number,
|
|
41
|
+
})
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { T } from '@bigbluebutton/validate'
|
|
2
|
+
|
|
3
|
+
/** @public */
|
|
4
|
+
export type TLOpacityType = number
|
|
5
|
+
|
|
6
|
+
/** @internal */
|
|
7
|
+
export const opacityValidator = T.number.check((n) => {
|
|
8
|
+
if (n < 0 || n > 1) {
|
|
9
|
+
throw new T.ValidationError('Opacity must be between 0 and 1')
|
|
10
|
+
}
|
|
11
|
+
})
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { T } from '@bigbluebutton/validate'
|
|
2
|
+
import { SetValue } from '../util-types'
|
|
3
|
+
import { TLCanvasUiColor, canvasUiColorTypeValidator } from './TLColor'
|
|
4
|
+
import { Vec2dModel, vec2dModelValidator } from './geometry-types'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The scribble states used by tldraw.
|
|
8
|
+
*
|
|
9
|
+
* @public */
|
|
10
|
+
export const TL_SCRIBBLE_STATES = new Set(['starting', 'paused', 'active', 'stopping'] as const)
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* A type for the scribble used by tldraw.
|
|
14
|
+
*
|
|
15
|
+
* @public */
|
|
16
|
+
export type TLScribble = {
|
|
17
|
+
id: string
|
|
18
|
+
points: Vec2dModel[]
|
|
19
|
+
size: number
|
|
20
|
+
color: TLCanvasUiColor
|
|
21
|
+
opacity: number
|
|
22
|
+
state: SetValue<typeof TL_SCRIBBLE_STATES>
|
|
23
|
+
delay: number
|
|
24
|
+
shrink: number
|
|
25
|
+
taper: boolean
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** @internal */
|
|
29
|
+
export const scribbleValidator: T.Validator<TLScribble> = T.object({
|
|
30
|
+
id: T.string,
|
|
31
|
+
points: T.arrayOf(vec2dModelValidator),
|
|
32
|
+
size: T.positiveNumber,
|
|
33
|
+
color: canvasUiColorTypeValidator,
|
|
34
|
+
opacity: T.number,
|
|
35
|
+
state: T.setEnum(TL_SCRIBBLE_STATES),
|
|
36
|
+
delay: T.number,
|
|
37
|
+
shrink: T.number,
|
|
38
|
+
taper: T.boolean,
|
|
39
|
+
})
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { T } from '@bigbluebutton/validate'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A serializable model for 2D boxes.
|
|
5
|
+
*
|
|
6
|
+
* @public */
|
|
7
|
+
export interface Box2dModel {
|
|
8
|
+
x: number
|
|
9
|
+
y: number
|
|
10
|
+
w: number
|
|
11
|
+
h: number
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* A serializable model for 2D vectors.
|
|
16
|
+
*
|
|
17
|
+
* @public */
|
|
18
|
+
export interface Vec2dModel {
|
|
19
|
+
x: number
|
|
20
|
+
y: number
|
|
21
|
+
z?: number
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** @public */
|
|
25
|
+
export const vec2dModelValidator: T.Validator<Vec2dModel> = T.object({
|
|
26
|
+
x: T.number,
|
|
27
|
+
y: T.number,
|
|
28
|
+
z: T.number.optional(),
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
/** @public */
|
|
32
|
+
export const box2dModelValidator: T.Validator<Box2dModel> = T.object({
|
|
33
|
+
x: T.number,
|
|
34
|
+
y: T.number,
|
|
35
|
+
w: T.number,
|
|
36
|
+
h: T.number,
|
|
37
|
+
})
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { RecordId, UnknownRecord } from '@bigbluebutton/store'
|
|
2
|
+
import { T } from '@bigbluebutton/validate'
|
|
3
|
+
|
|
4
|
+
/** @internal */
|
|
5
|
+
export function idValidator<Id extends RecordId<UnknownRecord>>(
|
|
6
|
+
prefix: Id['__type__']['typeName']
|
|
7
|
+
): T.Validator<Id> {
|
|
8
|
+
return T.string.refine((id) => {
|
|
9
|
+
if (!id.startsWith(`${prefix}:`)) {
|
|
10
|
+
throw new Error(`${prefix} ID must start with "${prefix}:"`)
|
|
11
|
+
}
|
|
12
|
+
return id as Id
|
|
13
|
+
})
|
|
14
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { createRecordType, defineMigrations, RecordId } from '@bigbluebutton/store'
|
|
2
|
+
import { T } from '@bigbluebutton/validate'
|
|
3
|
+
import { TLBaseAsset } from '../assets/TLBaseAsset'
|
|
4
|
+
import {
|
|
5
|
+
bookmarkAssetMigrations,
|
|
6
|
+
bookmarkAssetValidator,
|
|
7
|
+
TLBookmarkAsset,
|
|
8
|
+
} from '../assets/TLBookmarkAsset'
|
|
9
|
+
import { imageAssetMigrations, imageAssetValidator, TLImageAsset } from '../assets/TLImageAsset'
|
|
10
|
+
import { TLVideoAsset, videoAssetMigrations, videoAssetValidator } from '../assets/TLVideoAsset'
|
|
11
|
+
import { TLShape } from './TLShape'
|
|
12
|
+
|
|
13
|
+
/** @public */
|
|
14
|
+
export type TLAsset = TLImageAsset | TLVideoAsset | TLBookmarkAsset
|
|
15
|
+
|
|
16
|
+
/** @internal */
|
|
17
|
+
export const assetValidator: T.Validator<TLAsset> = T.model(
|
|
18
|
+
'asset',
|
|
19
|
+
T.union('type', {
|
|
20
|
+
image: imageAssetValidator,
|
|
21
|
+
video: videoAssetValidator,
|
|
22
|
+
bookmark: bookmarkAssetValidator,
|
|
23
|
+
})
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
/** @internal */
|
|
27
|
+
export const assetVersions = {
|
|
28
|
+
AddMeta: 1,
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** @internal */
|
|
32
|
+
export const assetMigrations = defineMigrations({
|
|
33
|
+
subTypeKey: 'type',
|
|
34
|
+
subTypeMigrations: {
|
|
35
|
+
image: imageAssetMigrations,
|
|
36
|
+
video: videoAssetMigrations,
|
|
37
|
+
bookmark: bookmarkAssetMigrations,
|
|
38
|
+
},
|
|
39
|
+
currentVersion: assetVersions.AddMeta,
|
|
40
|
+
migrators: {
|
|
41
|
+
[assetVersions.AddMeta]: {
|
|
42
|
+
up: (record) => {
|
|
43
|
+
return {
|
|
44
|
+
...record,
|
|
45
|
+
meta: {},
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
down: ({ meta: _, ...record }) => {
|
|
49
|
+
return {
|
|
50
|
+
...record,
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
/** @public */
|
|
58
|
+
export type TLAssetPartial<T extends TLAsset = TLAsset> = T extends T
|
|
59
|
+
? {
|
|
60
|
+
id: TLAssetId
|
|
61
|
+
type: T['type']
|
|
62
|
+
props?: Partial<T['props']>
|
|
63
|
+
meta?: Partial<T['meta']>
|
|
64
|
+
} & Partial<Omit<T, 'type' | 'id' | 'props' | 'meta'>>
|
|
65
|
+
: never
|
|
66
|
+
|
|
67
|
+
/** @public */
|
|
68
|
+
export const AssetRecordType = createRecordType<TLAsset>('asset', {
|
|
69
|
+
migrations: assetMigrations,
|
|
70
|
+
validator: assetValidator,
|
|
71
|
+
scope: 'document',
|
|
72
|
+
}).withDefaultProperties(() => ({
|
|
73
|
+
meta: {},
|
|
74
|
+
}))
|
|
75
|
+
|
|
76
|
+
/** @public */
|
|
77
|
+
export type TLAssetId = RecordId<TLBaseAsset<any, any>>
|
|
78
|
+
|
|
79
|
+
/** @public */
|
|
80
|
+
export type TLAssetShape = Extract<TLShape, { props: { assetId: TLAssetId } }>
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { BaseRecord, createRecordType, defineMigrations, RecordId } from '@bigbluebutton/store'
|
|
2
|
+
import { JsonObject } from '@bigbluebutton/utils'
|
|
3
|
+
import { T } from '@bigbluebutton/validate'
|
|
4
|
+
import { idValidator } from '../misc/id-validator'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A camera record.
|
|
8
|
+
*
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export interface TLCamera extends BaseRecord<'camera', TLCameraId> {
|
|
12
|
+
x: number
|
|
13
|
+
y: number
|
|
14
|
+
z: number
|
|
15
|
+
meta: JsonObject
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The id of a camera record.
|
|
20
|
+
*
|
|
21
|
+
* @public */
|
|
22
|
+
export type TLCameraId = RecordId<TLCamera>
|
|
23
|
+
|
|
24
|
+
/** @internal */
|
|
25
|
+
export const cameraValidator: T.Validator<TLCamera> = T.model(
|
|
26
|
+
'camera',
|
|
27
|
+
T.object({
|
|
28
|
+
typeName: T.literal('camera'),
|
|
29
|
+
id: idValidator<TLCameraId>('camera'),
|
|
30
|
+
x: T.number,
|
|
31
|
+
y: T.number,
|
|
32
|
+
z: T.number,
|
|
33
|
+
meta: T.jsonValue as T.ObjectValidator<JsonObject>,
|
|
34
|
+
})
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
/** @internal */
|
|
38
|
+
export const cameraVersions = {
|
|
39
|
+
AddMeta: 1,
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** @internal */
|
|
43
|
+
export const cameraMigrations = defineMigrations({
|
|
44
|
+
currentVersion: cameraVersions.AddMeta,
|
|
45
|
+
migrators: {
|
|
46
|
+
[cameraVersions.AddMeta]: {
|
|
47
|
+
up: (record) => {
|
|
48
|
+
return {
|
|
49
|
+
...record,
|
|
50
|
+
meta: {},
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
down: ({ meta: _, ...record }) => {
|
|
54
|
+
return {
|
|
55
|
+
...record,
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
/** @public */
|
|
63
|
+
export const CameraRecordType = createRecordType<TLCamera>('camera', {
|
|
64
|
+
validator: cameraValidator,
|
|
65
|
+
migrations: cameraMigrations,
|
|
66
|
+
scope: 'session',
|
|
67
|
+
}).withDefaultProperties(
|
|
68
|
+
(): Omit<TLCamera, 'id' | 'typeName'> => ({
|
|
69
|
+
x: 0,
|
|
70
|
+
y: 0,
|
|
71
|
+
z: 1,
|
|
72
|
+
meta: {},
|
|
73
|
+
})
|
|
74
|
+
)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { BaseRecord, createRecordType, defineMigrations, RecordId } from '@bigbluebutton/store'
|
|
2
|
+
import { JsonObject } from '@bigbluebutton/utils'
|
|
3
|
+
import { T } from '@bigbluebutton/validate'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* TLDocument
|
|
7
|
+
*
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export interface TLDocument extends BaseRecord<'document', RecordId<TLDocument>> {
|
|
11
|
+
gridSize: number
|
|
12
|
+
name: string
|
|
13
|
+
meta: JsonObject
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** @internal */
|
|
17
|
+
export const documentValidator: T.Validator<TLDocument> = T.model(
|
|
18
|
+
'document',
|
|
19
|
+
T.object({
|
|
20
|
+
typeName: T.literal('document'),
|
|
21
|
+
id: T.literal('document:document' as RecordId<TLDocument>),
|
|
22
|
+
gridSize: T.number,
|
|
23
|
+
name: T.string,
|
|
24
|
+
meta: T.jsonValue as T.ObjectValidator<JsonObject>,
|
|
25
|
+
})
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
/** @internal */
|
|
29
|
+
export const documentVersions = {
|
|
30
|
+
AddName: 1,
|
|
31
|
+
AddMeta: 2,
|
|
32
|
+
} as const
|
|
33
|
+
|
|
34
|
+
/** @internal */
|
|
35
|
+
export const documentMigrations = defineMigrations({
|
|
36
|
+
currentVersion: documentVersions.AddMeta,
|
|
37
|
+
migrators: {
|
|
38
|
+
[documentVersions.AddName]: {
|
|
39
|
+
up: (document: TLDocument) => {
|
|
40
|
+
return { ...document, name: '' }
|
|
41
|
+
},
|
|
42
|
+
down: ({ name: _, ...document }: TLDocument) => {
|
|
43
|
+
return document
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
[documentVersions.AddMeta]: {
|
|
47
|
+
up: (record) => {
|
|
48
|
+
return {
|
|
49
|
+
...record,
|
|
50
|
+
meta: {},
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
down: ({ meta: _, ...record }) => {
|
|
54
|
+
return {
|
|
55
|
+
...record,
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
/** @public */
|
|
63
|
+
export const DocumentRecordType = createRecordType<TLDocument>('document', {
|
|
64
|
+
migrations: documentMigrations,
|
|
65
|
+
validator: documentValidator,
|
|
66
|
+
scope: 'document',
|
|
67
|
+
}).withDefaultProperties(
|
|
68
|
+
(): Omit<TLDocument, 'id' | 'typeName'> => ({
|
|
69
|
+
gridSize: 10,
|
|
70
|
+
name: '',
|
|
71
|
+
meta: {},
|
|
72
|
+
})
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
// all document records have the same ID: 'document:document'
|
|
76
|
+
/** @public */
|
|
77
|
+
export const TLDOCUMENT_ID: RecordId<TLDocument> = DocumentRecordType.createId('document')
|