@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.
Files changed (261) hide show
  1. package/LICENSE +190 -0
  2. package/dist-cjs/TLStore.js +133 -0
  3. package/dist-cjs/TLStore.js.map +7 -0
  4. package/dist-cjs/assets/TLBaseAsset.js +37 -0
  5. package/dist-cjs/assets/TLBaseAsset.js.map +7 -0
  6. package/dist-cjs/assets/TLBookmarkAsset.js +38 -0
  7. package/dist-cjs/assets/TLBookmarkAsset.js.map +7 -0
  8. package/dist-cjs/assets/TLImageAsset.js +76 -0
  9. package/dist-cjs/assets/TLImageAsset.js.map +7 -0
  10. package/dist-cjs/assets/TLVideoAsset.js +76 -0
  11. package/dist-cjs/assets/TLVideoAsset.js.map +7 -0
  12. package/dist-cjs/createPresenceStateDerivation.js +68 -0
  13. package/dist-cjs/createPresenceStateDerivation.js.map +7 -0
  14. package/dist-cjs/createTLSchema.js +68 -0
  15. package/dist-cjs/createTLSchema.js.map +7 -0
  16. package/dist-cjs/index.d.ts +1414 -0
  17. package/dist-cjs/index.js +142 -0
  18. package/dist-cjs/index.js.map +7 -0
  19. package/dist-cjs/misc/TLColor.js +36 -0
  20. package/dist-cjs/misc/TLColor.js.map +7 -0
  21. package/dist-cjs/misc/TLCursor.js +55 -0
  22. package/dist-cjs/misc/TLCursor.js.map +7 -0
  23. package/dist-cjs/misc/TLHandle.js +36 -0
  24. package/dist-cjs/misc/TLHandle.js.map +7 -0
  25. package/dist-cjs/misc/TLOpacity.js +30 -0
  26. package/dist-cjs/misc/TLOpacity.js.map +7 -0
  27. package/dist-cjs/misc/TLScribble.js +40 -0
  28. package/dist-cjs/misc/TLScribble.js.map +7 -0
  29. package/dist-cjs/misc/geometry-types.js +37 -0
  30. package/dist-cjs/misc/geometry-types.js.map +7 -0
  31. package/dist-cjs/misc/id-validator.js +33 -0
  32. package/dist-cjs/misc/id-validator.js.map +7 -0
  33. package/dist-cjs/records/TLAsset.js +74 -0
  34. package/dist-cjs/records/TLAsset.js.map +7 -0
  35. package/dist-cjs/records/TLCamera.js +74 -0
  36. package/dist-cjs/records/TLCamera.js.map +7 -0
  37. package/dist-cjs/records/TLDocument.js +82 -0
  38. package/dist-cjs/records/TLDocument.js.map +7 -0
  39. package/dist-cjs/records/TLInstance.js +452 -0
  40. package/dist-cjs/records/TLInstance.js.map +7 -0
  41. package/dist-cjs/records/TLPage.js +74 -0
  42. package/dist-cjs/records/TLPage.js.map +7 -0
  43. package/dist-cjs/records/TLPageState.js +209 -0
  44. package/dist-cjs/records/TLPageState.js.map +7 -0
  45. package/dist-cjs/records/TLPointer.js +76 -0
  46. package/dist-cjs/records/TLPointer.js.map +7 -0
  47. package/dist-cjs/records/TLPresence.js +170 -0
  48. package/dist-cjs/records/TLPresence.js.map +7 -0
  49. package/dist-cjs/records/TLRecord.js +17 -0
  50. package/dist-cjs/records/TLRecord.js.map +7 -0
  51. package/dist-cjs/records/TLShape.js +147 -0
  52. package/dist-cjs/records/TLShape.js.map +7 -0
  53. package/dist-cjs/shapes/TLArrowShape.js +156 -0
  54. package/dist-cjs/shapes/TLArrowShape.js.map +7 -0
  55. package/dist-cjs/shapes/TLBaseShape.js +52 -0
  56. package/dist-cjs/shapes/TLBaseShape.js.map +7 -0
  57. package/dist-cjs/shapes/TLBookmarkShape.js +57 -0
  58. package/dist-cjs/shapes/TLBookmarkShape.js.map +7 -0
  59. package/dist-cjs/shapes/TLDrawShape.js +89 -0
  60. package/dist-cjs/shapes/TLDrawShape.js.map +7 -0
  61. package/dist-cjs/shapes/TLEmbedShape.js +709 -0
  62. package/dist-cjs/shapes/TLEmbedShape.js.map +7 -0
  63. package/dist-cjs/shapes/TLFrameShape.js +33 -0
  64. package/dist-cjs/shapes/TLFrameShape.js.map +7 -0
  65. package/dist-cjs/shapes/TLGeoShape.js +230 -0
  66. package/dist-cjs/shapes/TLGeoShape.js.map +7 -0
  67. package/dist-cjs/shapes/TLGroupShape.js +28 -0
  68. package/dist-cjs/shapes/TLGroupShape.js.map +7 -0
  69. package/dist-cjs/shapes/TLHighlightShape.js +38 -0
  70. package/dist-cjs/shapes/TLHighlightShape.js.map +7 -0
  71. package/dist-cjs/shapes/TLImageShape.js +69 -0
  72. package/dist-cjs/shapes/TLImageShape.js.map +7 -0
  73. package/dist-cjs/shapes/TLLineShape.js +70 -0
  74. package/dist-cjs/shapes/TLLineShape.js.map +7 -0
  75. package/dist-cjs/shapes/TLNoteShape.js +144 -0
  76. package/dist-cjs/shapes/TLNoteShape.js.map +7 -0
  77. package/dist-cjs/shapes/TLTextShape.js +67 -0
  78. package/dist-cjs/shapes/TLTextShape.js.map +7 -0
  79. package/dist-cjs/shapes/TLVideoShape.js +53 -0
  80. package/dist-cjs/shapes/TLVideoShape.js.map +7 -0
  81. package/dist-cjs/store-migrations.js +81 -0
  82. package/dist-cjs/store-migrations.js.map +7 -0
  83. package/dist-cjs/styles/StyleProp.js +94 -0
  84. package/dist-cjs/styles/StyleProp.js.map +7 -0
  85. package/dist-cjs/styles/TLColorStyle.js +283 -0
  86. package/dist-cjs/styles/TLColorStyle.js.map +7 -0
  87. package/dist-cjs/styles/TLDashStyle.js +29 -0
  88. package/dist-cjs/styles/TLDashStyle.js.map +7 -0
  89. package/dist-cjs/styles/TLFillStyle.js +29 -0
  90. package/dist-cjs/styles/TLFillStyle.js.map +7 -0
  91. package/dist-cjs/styles/TLFontStyle.js +36 -0
  92. package/dist-cjs/styles/TLFontStyle.js.map +7 -0
  93. package/dist-cjs/styles/TLHorizontalAlignStyle.js +29 -0
  94. package/dist-cjs/styles/TLHorizontalAlignStyle.js.map +7 -0
  95. package/dist-cjs/styles/TLSizeStyle.js +29 -0
  96. package/dist-cjs/styles/TLSizeStyle.js.map +7 -0
  97. package/dist-cjs/styles/TLVerticalAlignStyle.js +29 -0
  98. package/dist-cjs/styles/TLVerticalAlignStyle.js.map +7 -0
  99. package/dist-cjs/translations/languages.js +59 -0
  100. package/dist-cjs/translations/languages.js.map +7 -0
  101. package/dist-cjs/translations/translations.js +63 -0
  102. package/dist-cjs/translations/translations.js.map +7 -0
  103. package/dist-cjs/util-types.js +17 -0
  104. package/dist-cjs/util-types.js.map +7 -0
  105. package/dist-esm/TLStore.mjs +113 -0
  106. package/dist-esm/TLStore.mjs.map +7 -0
  107. package/dist-esm/assets/TLBaseAsset.mjs +17 -0
  108. package/dist-esm/assets/TLBaseAsset.mjs.map +7 -0
  109. package/dist-esm/assets/TLBookmarkAsset.mjs +18 -0
  110. package/dist-esm/assets/TLBookmarkAsset.mjs.map +7 -0
  111. package/dist-esm/assets/TLImageAsset.mjs +56 -0
  112. package/dist-esm/assets/TLImageAsset.mjs.map +7 -0
  113. package/dist-esm/assets/TLVideoAsset.mjs +56 -0
  114. package/dist-esm/assets/TLVideoAsset.mjs.map +7 -0
  115. package/dist-esm/createPresenceStateDerivation.mjs +48 -0
  116. package/dist-esm/createPresenceStateDerivation.mjs.map +7 -0
  117. package/dist-esm/createTLSchema.mjs +48 -0
  118. package/dist-esm/createTLSchema.mjs.map +7 -0
  119. package/dist-esm/index.d.mts +1414 -0
  120. package/dist-esm/index.mjs +193 -0
  121. package/dist-esm/index.mjs.map +7 -0
  122. package/dist-esm/misc/TLColor.mjs +16 -0
  123. package/dist-esm/misc/TLColor.mjs.map +7 -0
  124. package/dist-esm/misc/TLCursor.mjs +35 -0
  125. package/dist-esm/misc/TLCursor.mjs.map +7 -0
  126. package/dist-esm/misc/TLHandle.mjs +16 -0
  127. package/dist-esm/misc/TLHandle.mjs.map +7 -0
  128. package/dist-esm/misc/TLOpacity.mjs +10 -0
  129. package/dist-esm/misc/TLOpacity.mjs.map +7 -0
  130. package/dist-esm/misc/TLScribble.mjs +20 -0
  131. package/dist-esm/misc/TLScribble.mjs.map +7 -0
  132. package/dist-esm/misc/geometry-types.mjs +17 -0
  133. package/dist-esm/misc/geometry-types.mjs.map +7 -0
  134. package/dist-esm/misc/id-validator.mjs +13 -0
  135. package/dist-esm/misc/id-validator.mjs.map +7 -0
  136. package/dist-esm/records/TLAsset.mjs +57 -0
  137. package/dist-esm/records/TLAsset.mjs.map +7 -0
  138. package/dist-esm/records/TLCamera.mjs +54 -0
  139. package/dist-esm/records/TLCamera.mjs.map +7 -0
  140. package/dist-esm/records/TLDocument.mjs +62 -0
  141. package/dist-esm/records/TLDocument.mjs.map +7 -0
  142. package/dist-esm/records/TLInstance.mjs +432 -0
  143. package/dist-esm/records/TLInstance.mjs.map +7 -0
  144. package/dist-esm/records/TLPage.mjs +54 -0
  145. package/dist-esm/records/TLPage.mjs.map +7 -0
  146. package/dist-esm/records/TLPageState.mjs +189 -0
  147. package/dist-esm/records/TLPageState.mjs.map +7 -0
  148. package/dist-esm/records/TLPointer.mjs +56 -0
  149. package/dist-esm/records/TLPointer.mjs.map +7 -0
  150. package/dist-esm/records/TLPresence.mjs +150 -0
  151. package/dist-esm/records/TLPresence.mjs.map +7 -0
  152. package/dist-esm/records/TLRecord.mjs +1 -0
  153. package/dist-esm/records/TLRecord.mjs.map +7 -0
  154. package/dist-esm/records/TLShape.mjs +127 -0
  155. package/dist-esm/records/TLShape.mjs.map +7 -0
  156. package/dist-esm/shapes/TLArrowShape.mjs +136 -0
  157. package/dist-esm/shapes/TLArrowShape.mjs.map +7 -0
  158. package/dist-esm/shapes/TLBaseShape.mjs +32 -0
  159. package/dist-esm/shapes/TLBaseShape.mjs.map +7 -0
  160. package/dist-esm/shapes/TLBookmarkShape.mjs +37 -0
  161. package/dist-esm/shapes/TLBookmarkShape.mjs.map +7 -0
  162. package/dist-esm/shapes/TLDrawShape.mjs +69 -0
  163. package/dist-esm/shapes/TLDrawShape.mjs.map +7 -0
  164. package/dist-esm/shapes/TLEmbedShape.mjs +689 -0
  165. package/dist-esm/shapes/TLEmbedShape.mjs.map +7 -0
  166. package/dist-esm/shapes/TLFrameShape.mjs +13 -0
  167. package/dist-esm/shapes/TLFrameShape.mjs.map +7 -0
  168. package/dist-esm/shapes/TLGeoShape.mjs +212 -0
  169. package/dist-esm/shapes/TLGeoShape.mjs.map +7 -0
  170. package/dist-esm/shapes/TLGroupShape.mjs +8 -0
  171. package/dist-esm/shapes/TLGroupShape.mjs.map +7 -0
  172. package/dist-esm/shapes/TLHighlightShape.mjs +18 -0
  173. package/dist-esm/shapes/TLHighlightShape.mjs.map +7 -0
  174. package/dist-esm/shapes/TLImageShape.mjs +49 -0
  175. package/dist-esm/shapes/TLImageShape.mjs.map +7 -0
  176. package/dist-esm/shapes/TLLineShape.mjs +50 -0
  177. package/dist-esm/shapes/TLLineShape.mjs.map +7 -0
  178. package/dist-esm/shapes/TLNoteShape.mjs +126 -0
  179. package/dist-esm/shapes/TLNoteShape.mjs.map +7 -0
  180. package/dist-esm/shapes/TLTextShape.mjs +47 -0
  181. package/dist-esm/shapes/TLTextShape.mjs.map +7 -0
  182. package/dist-esm/shapes/TLVideoShape.mjs +33 -0
  183. package/dist-esm/shapes/TLVideoShape.mjs.map +7 -0
  184. package/dist-esm/store-migrations.mjs +61 -0
  185. package/dist-esm/store-migrations.mjs.map +7 -0
  186. package/dist-esm/styles/StyleProp.mjs +74 -0
  187. package/dist-esm/styles/StyleProp.mjs.map +7 -0
  188. package/dist-esm/styles/TLColorStyle.mjs +263 -0
  189. package/dist-esm/styles/TLColorStyle.mjs.map +7 -0
  190. package/dist-esm/styles/TLDashStyle.mjs +9 -0
  191. package/dist-esm/styles/TLDashStyle.mjs.map +7 -0
  192. package/dist-esm/styles/TLFillStyle.mjs +9 -0
  193. package/dist-esm/styles/TLFillStyle.mjs.map +7 -0
  194. package/dist-esm/styles/TLFontStyle.mjs +16 -0
  195. package/dist-esm/styles/TLFontStyle.mjs.map +7 -0
  196. package/dist-esm/styles/TLHorizontalAlignStyle.mjs +9 -0
  197. package/dist-esm/styles/TLHorizontalAlignStyle.mjs.map +7 -0
  198. package/dist-esm/styles/TLSizeStyle.mjs +9 -0
  199. package/dist-esm/styles/TLSizeStyle.mjs.map +7 -0
  200. package/dist-esm/styles/TLVerticalAlignStyle.mjs +9 -0
  201. package/dist-esm/styles/TLVerticalAlignStyle.mjs.map +7 -0
  202. package/dist-esm/translations/languages.mjs +39 -0
  203. package/dist-esm/translations/languages.mjs.map +7 -0
  204. package/dist-esm/translations/translations.mjs +43 -0
  205. package/dist-esm/translations/translations.mjs.map +7 -0
  206. package/dist-esm/util-types.mjs +1 -0
  207. package/dist-esm/util-types.mjs.map +7 -0
  208. package/package.json +64 -0
  209. package/src/TLStore.ts +160 -0
  210. package/src/assets/TLBaseAsset.ts +44 -0
  211. package/src/assets/TLBookmarkAsset.ts +31 -0
  212. package/src/assets/TLImageAsset.ts +73 -0
  213. package/src/assets/TLVideoAsset.ts +73 -0
  214. package/src/createPresenceStateDerivation.ts +53 -0
  215. package/src/createTLSchema.ts +65 -0
  216. package/src/index.ts +168 -0
  217. package/src/migrations.test.ts +1768 -0
  218. package/src/misc/TLColor.ts +28 -0
  219. package/src/misc/TLCursor.ts +54 -0
  220. package/src/misc/TLHandle.ts +41 -0
  221. package/src/misc/TLOpacity.ts +11 -0
  222. package/src/misc/TLScribble.ts +39 -0
  223. package/src/misc/geometry-types.ts +37 -0
  224. package/src/misc/id-validator.ts +14 -0
  225. package/src/records/TLAsset.ts +80 -0
  226. package/src/records/TLCamera.ts +74 -0
  227. package/src/records/TLDocument.ts +77 -0
  228. package/src/records/TLInstance.ts +493 -0
  229. package/src/records/TLPage.ts +72 -0
  230. package/src/records/TLPageState.ts +216 -0
  231. package/src/records/TLPointer.ts +74 -0
  232. package/src/records/TLPresence.ts +179 -0
  233. package/src/records/TLRecord.ts +21 -0
  234. package/src/records/TLShape.ts +214 -0
  235. package/src/shapes/TLArrowShape.ts +160 -0
  236. package/src/shapes/TLBaseShape.ts +67 -0
  237. package/src/shapes/TLBookmarkShape.ts +44 -0
  238. package/src/shapes/TLDrawShape.ts +89 -0
  239. package/src/shapes/TLEmbedShape.ts +754 -0
  240. package/src/shapes/TLFrameShape.ts +18 -0
  241. package/src/shapes/TLGeoShape.ts +226 -0
  242. package/src/shapes/TLGroupShape.ts +14 -0
  243. package/src/shapes/TLHighlightShape.ts +24 -0
  244. package/src/shapes/TLImageShape.ts +59 -0
  245. package/src/shapes/TLLineShape.ts +61 -0
  246. package/src/shapes/TLNoteShape.ts +137 -0
  247. package/src/shapes/TLTextShape.ts +55 -0
  248. package/src/shapes/TLVideoShape.ts +40 -0
  249. package/src/store-migrations.ts +63 -0
  250. package/src/styles/StyleProp.ts +105 -0
  251. package/src/styles/TLColorStyle.ts +296 -0
  252. package/src/styles/TLDashStyle.ts +11 -0
  253. package/src/styles/TLFillStyle.ts +11 -0
  254. package/src/styles/TLFontStyle.ts +19 -0
  255. package/src/styles/TLHorizontalAlignStyle.ts +11 -0
  256. package/src/styles/TLSizeStyle.ts +11 -0
  257. package/src/styles/TLVerticalAlignStyle.ts +11 -0
  258. package/src/translations/languages.ts +39 -0
  259. package/src/translations/translations.test.ts +43 -0
  260. package/src/translations/translations.ts +73 -0
  261. package/src/util-types.ts +2 -0
@@ -0,0 +1,432 @@
1
+ import { createRecordType, defineMigrations } from "@bigbluebutton/store";
2
+ import { T } from "@bigbluebutton/validate";
3
+ import { box2dModelValidator } from "../misc/geometry-types.mjs";
4
+ import { idValidator } from "../misc/id-validator.mjs";
5
+ import { cursorValidator } from "../misc/TLCursor.mjs";
6
+ import { opacityValidator } from "../misc/TLOpacity.mjs";
7
+ import { scribbleValidator } from "../misc/TLScribble.mjs";
8
+ import { pageIdValidator } from "./TLPage.mjs";
9
+ const instanceIdValidator = idValidator("instance");
10
+ function createInstanceRecordType(stylesById) {
11
+ const stylesForNextShapeValidators = {};
12
+ for (const [id, style] of stylesById) {
13
+ stylesForNextShapeValidators[id] = T.optional(style);
14
+ }
15
+ const instanceTypeValidator = T.model(
16
+ "instance",
17
+ T.object({
18
+ typeName: T.literal("instance"),
19
+ id: idValidator("instance"),
20
+ currentPageId: pageIdValidator,
21
+ followingUserId: T.string.nullable(),
22
+ brush: box2dModelValidator.nullable(),
23
+ opacityForNextShape: opacityValidator,
24
+ stylesForNextShape: T.object(stylesForNextShapeValidators),
25
+ cursor: cursorValidator,
26
+ scribbles: T.arrayOf(scribbleValidator),
27
+ isFocusMode: T.boolean,
28
+ isDebugMode: T.boolean,
29
+ isToolLocked: T.boolean,
30
+ exportBackground: T.boolean,
31
+ screenBounds: box2dModelValidator,
32
+ zoomBrush: box2dModelValidator.nullable(),
33
+ isPenMode: T.boolean,
34
+ isGridMode: T.boolean,
35
+ chatMessage: T.string,
36
+ isChatting: T.boolean,
37
+ highlightedUserIds: T.arrayOf(T.string),
38
+ canMoveCamera: T.boolean,
39
+ isFocused: T.boolean,
40
+ devicePixelRatio: T.number,
41
+ isCoarsePointer: T.boolean,
42
+ isHoveringCanvas: T.boolean.nullable(),
43
+ openMenus: T.arrayOf(T.string),
44
+ isChangingStyle: T.boolean,
45
+ isReadonly: T.boolean,
46
+ meta: T.jsonValue
47
+ })
48
+ );
49
+ return createRecordType("instance", {
50
+ migrations: instanceMigrations,
51
+ validator: instanceTypeValidator,
52
+ scope: "session"
53
+ }).withDefaultProperties(
54
+ () => ({
55
+ followingUserId: null,
56
+ opacityForNextShape: 1,
57
+ stylesForNextShape: {},
58
+ brush: null,
59
+ scribbles: [],
60
+ cursor: {
61
+ type: "default",
62
+ rotation: 0
63
+ },
64
+ isFocusMode: false,
65
+ exportBackground: false,
66
+ isDebugMode: process.env.NODE_ENV === "development",
67
+ isToolLocked: false,
68
+ screenBounds: { x: 0, y: 0, w: 1080, h: 720 },
69
+ zoomBrush: null,
70
+ isGridMode: false,
71
+ isPenMode: false,
72
+ chatMessage: "",
73
+ isChatting: false,
74
+ highlightedUserIds: [],
75
+ canMoveCamera: true,
76
+ isFocused: false,
77
+ devicePixelRatio: typeof window === "undefined" ? 1 : window.devicePixelRatio,
78
+ isCoarsePointer: false,
79
+ isHoveringCanvas: null,
80
+ openMenus: [],
81
+ isChangingStyle: false,
82
+ isReadonly: false,
83
+ meta: {}
84
+ })
85
+ );
86
+ }
87
+ const instanceVersions = {
88
+ AddTransparentExportBgs: 1,
89
+ RemoveDialog: 2,
90
+ AddToolLockMode: 3,
91
+ RemoveExtraPropsForNextShape: 4,
92
+ AddLabelColor: 5,
93
+ AddFollowingUserId: 6,
94
+ RemoveAlignJustify: 7,
95
+ AddZoom: 8,
96
+ AddVerticalAlign: 9,
97
+ AddScribbleDelay: 10,
98
+ RemoveUserId: 11,
99
+ AddIsPenModeAndIsGridMode: 12,
100
+ HoistOpacity: 13,
101
+ AddChat: 14,
102
+ AddHighlightedUserIds: 15,
103
+ ReplacePropsForNextShapeWithStylesForNextShape: 16,
104
+ AddMeta: 17,
105
+ RemoveCursorColor: 18,
106
+ AddLonelyProperties: 19,
107
+ ReadOnlyReadonly: 20,
108
+ AddHoveringCanvas: 21,
109
+ AddScribbles: 22
110
+ };
111
+ const instanceMigrations = defineMigrations({
112
+ currentVersion: instanceVersions.AddScribbles,
113
+ migrators: {
114
+ [instanceVersions.AddTransparentExportBgs]: {
115
+ up: (instance) => {
116
+ return { ...instance, exportBackground: true };
117
+ },
118
+ down: ({ exportBackground: _, ...instance }) => {
119
+ return instance;
120
+ }
121
+ },
122
+ [instanceVersions.RemoveDialog]: {
123
+ up: ({ dialog: _, ...instance }) => {
124
+ return instance;
125
+ },
126
+ down: (instance) => {
127
+ return { ...instance, dialog: null };
128
+ }
129
+ },
130
+ [instanceVersions.AddToolLockMode]: {
131
+ up: (instance) => {
132
+ return { ...instance, isToolLocked: false };
133
+ },
134
+ down: ({ isToolLocked: _, ...instance }) => {
135
+ return instance;
136
+ }
137
+ },
138
+ [instanceVersions.RemoveExtraPropsForNextShape]: {
139
+ up: ({ propsForNextShape, ...instance }) => {
140
+ return {
141
+ ...instance,
142
+ propsForNextShape: Object.fromEntries(
143
+ Object.entries(propsForNextShape).filter(
144
+ ([key]) => [
145
+ "color",
146
+ "labelColor",
147
+ "dash",
148
+ "fill",
149
+ "size",
150
+ "font",
151
+ "align",
152
+ "verticalAlign",
153
+ "icon",
154
+ "geo",
155
+ "arrowheadStart",
156
+ "arrowheadEnd",
157
+ "spline"
158
+ ].includes(key)
159
+ )
160
+ )
161
+ };
162
+ },
163
+ down: (instance) => {
164
+ return instance;
165
+ }
166
+ },
167
+ [instanceVersions.AddLabelColor]: {
168
+ up: ({ propsForNextShape, ...instance }) => {
169
+ return {
170
+ ...instance,
171
+ propsForNextShape: {
172
+ ...propsForNextShape,
173
+ labelColor: "black"
174
+ }
175
+ };
176
+ },
177
+ down: (instance) => {
178
+ const { labelColor: _, ...rest } = instance.propsForNextShape;
179
+ return {
180
+ ...instance,
181
+ propsForNextShape: {
182
+ ...rest
183
+ }
184
+ };
185
+ }
186
+ },
187
+ [instanceVersions.AddFollowingUserId]: {
188
+ up: (instance) => {
189
+ return { ...instance, followingUserId: null };
190
+ },
191
+ down: ({ followingUserId: _, ...instance }) => {
192
+ return instance;
193
+ }
194
+ },
195
+ [instanceVersions.RemoveAlignJustify]: {
196
+ up: (instance) => {
197
+ let newAlign = instance.propsForNextShape.align;
198
+ if (newAlign === "justify") {
199
+ newAlign = "start";
200
+ }
201
+ return {
202
+ ...instance,
203
+ propsForNextShape: {
204
+ ...instance.propsForNextShape,
205
+ align: newAlign
206
+ }
207
+ };
208
+ },
209
+ down: (instance) => {
210
+ return { ...instance };
211
+ }
212
+ },
213
+ [instanceVersions.AddZoom]: {
214
+ up: (instance) => {
215
+ return { ...instance, zoomBrush: null };
216
+ },
217
+ down: ({ zoomBrush: _, ...instance }) => {
218
+ return instance;
219
+ }
220
+ },
221
+ [instanceVersions.AddVerticalAlign]: {
222
+ up: (instance) => {
223
+ return {
224
+ ...instance,
225
+ propsForNextShape: {
226
+ ...instance.propsForNextShape,
227
+ verticalAlign: "middle"
228
+ }
229
+ };
230
+ },
231
+ down: (instance) => {
232
+ const { verticalAlign: _, ...propsForNextShape } = instance.propsForNextShape;
233
+ return {
234
+ ...instance,
235
+ propsForNextShape
236
+ };
237
+ }
238
+ },
239
+ [instanceVersions.AddScribbleDelay]: {
240
+ up: (instance) => {
241
+ if (instance.scribble !== null) {
242
+ return { ...instance, scribble: { ...instance.scribble, delay: 0 } };
243
+ }
244
+ return { ...instance };
245
+ },
246
+ down: (instance) => {
247
+ if (instance.scribble !== null) {
248
+ const { delay: _delay, ...rest } = instance.scribble;
249
+ return { ...instance, scribble: rest };
250
+ }
251
+ return { ...instance };
252
+ }
253
+ },
254
+ [instanceVersions.RemoveUserId]: {
255
+ up: ({ userId: _, ...instance }) => {
256
+ return instance;
257
+ },
258
+ down: (instance) => {
259
+ return { ...instance, userId: "user:none" };
260
+ }
261
+ },
262
+ [instanceVersions.AddIsPenModeAndIsGridMode]: {
263
+ up: (instance) => {
264
+ return { ...instance, isPenMode: false, isGridMode: false };
265
+ },
266
+ down: ({ isPenMode: _, isGridMode: __, ...instance }) => {
267
+ return instance;
268
+ }
269
+ },
270
+ [instanceVersions.HoistOpacity]: {
271
+ up: ({ propsForNextShape: { opacity, ...propsForNextShape }, ...instance }) => {
272
+ return { ...instance, opacityForNextShape: Number(opacity ?? "1"), propsForNextShape };
273
+ },
274
+ down: ({ opacityForNextShape: opacity, ...instance }) => {
275
+ return {
276
+ ...instance,
277
+ propsForNextShape: {
278
+ ...instance.propsForNextShape,
279
+ opacity: opacity < 0.175 ? "0.1" : opacity < 0.375 ? "0.25" : opacity < 0.625 ? "0.5" : opacity < 0.875 ? "0.75" : "1"
280
+ }
281
+ };
282
+ }
283
+ },
284
+ [instanceVersions.AddChat]: {
285
+ up: (instance) => {
286
+ return { ...instance, chatMessage: "", isChatting: false };
287
+ },
288
+ down: ({ chatMessage: _, isChatting: __, ...instance }) => {
289
+ return instance;
290
+ }
291
+ },
292
+ [instanceVersions.AddHighlightedUserIds]: {
293
+ up: (instance) => {
294
+ return { ...instance, highlightedUserIds: [] };
295
+ },
296
+ down: ({ highlightedUserIds: _, ...instance }) => {
297
+ return instance;
298
+ }
299
+ },
300
+ [instanceVersions.ReplacePropsForNextShapeWithStylesForNextShape]: {
301
+ up: ({ propsForNextShape: _, ...instance }) => {
302
+ return { ...instance, stylesForNextShape: {} };
303
+ },
304
+ down: ({ stylesForNextShape: _, ...instance }) => {
305
+ return {
306
+ ...instance,
307
+ propsForNextShape: {
308
+ color: "black",
309
+ labelColor: "black",
310
+ dash: "draw",
311
+ fill: "none",
312
+ size: "m",
313
+ icon: "file",
314
+ font: "draw",
315
+ align: "middle",
316
+ verticalAlign: "middle",
317
+ geo: "rectangle",
318
+ arrowheadStart: "none",
319
+ arrowheadEnd: "arrow",
320
+ spline: "line"
321
+ }
322
+ };
323
+ }
324
+ },
325
+ [instanceVersions.AddMeta]: {
326
+ up: (record) => {
327
+ return {
328
+ ...record,
329
+ meta: {}
330
+ };
331
+ },
332
+ down: ({ meta: _, ...record }) => {
333
+ return {
334
+ ...record
335
+ };
336
+ }
337
+ },
338
+ [instanceVersions.RemoveCursorColor]: {
339
+ up: (record) => {
340
+ const { color: _, ...cursor } = record.cursor;
341
+ return {
342
+ ...record,
343
+ cursor
344
+ };
345
+ },
346
+ down: (record) => {
347
+ return {
348
+ ...record,
349
+ cursor: {
350
+ ...record.cursor,
351
+ color: "black"
352
+ }
353
+ };
354
+ }
355
+ },
356
+ [instanceVersions.AddLonelyProperties]: {
357
+ up: (record) => {
358
+ return {
359
+ ...record,
360
+ canMoveCamera: true,
361
+ isFocused: false,
362
+ devicePixelRatio: 1,
363
+ isCoarsePointer: false,
364
+ openMenus: [],
365
+ isChangingStyle: false,
366
+ isReadOnly: false
367
+ };
368
+ },
369
+ down: ({
370
+ canMoveCamera: _canMoveCamera,
371
+ isFocused: _isFocused,
372
+ devicePixelRatio: _devicePixelRatio,
373
+ isCoarsePointer: _isCoarsePointer,
374
+ openMenus: _openMenus,
375
+ isChangingStyle: _isChangingStyle,
376
+ isReadOnly: _isReadOnly,
377
+ ...record
378
+ }) => {
379
+ return {
380
+ ...record
381
+ };
382
+ }
383
+ },
384
+ [instanceVersions.ReadOnlyReadonly]: {
385
+ up: ({ isReadOnly: _isReadOnly, ...record }) => {
386
+ return {
387
+ ...record,
388
+ isReadonly: _isReadOnly
389
+ };
390
+ },
391
+ down: ({ isReadonly: _isReadonly, ...record }) => {
392
+ return {
393
+ ...record,
394
+ isReadOnly: _isReadonly
395
+ };
396
+ }
397
+ },
398
+ [instanceVersions.AddHoveringCanvas]: {
399
+ up: (record) => {
400
+ return {
401
+ ...record,
402
+ isHoveringCanvas: null
403
+ };
404
+ },
405
+ down: ({ isHoveringCanvas: _, ...record }) => {
406
+ return {
407
+ ...record
408
+ };
409
+ }
410
+ },
411
+ [instanceVersions.AddScribbles]: {
412
+ up: ({ scribble: _, ...record }) => {
413
+ return {
414
+ ...record,
415
+ scribbles: []
416
+ };
417
+ },
418
+ down: ({ scribbles: _, ...record }) => {
419
+ return { ...record, scribble: null };
420
+ }
421
+ }
422
+ }
423
+ });
424
+ const TLINSTANCE_ID = "instance:instance";
425
+ export {
426
+ TLINSTANCE_ID,
427
+ createInstanceRecordType,
428
+ instanceIdValidator,
429
+ instanceMigrations,
430
+ instanceVersions
431
+ };
432
+ //# sourceMappingURL=TLInstance.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/records/TLInstance.ts"],
4
+ "sourcesContent": ["import { BaseRecord, createRecordType, defineMigrations, RecordId } from '@bigbluebutton/store'\nimport { JsonObject } from '@bigbluebutton/utils'\nimport { T } from '@bigbluebutton/validate'\nimport { Box2dModel, box2dModelValidator } from '../misc/geometry-types'\nimport { idValidator } from '../misc/id-validator'\nimport { cursorValidator, TLCursor } from '../misc/TLCursor'\nimport { opacityValidator, TLOpacityType } from '../misc/TLOpacity'\nimport { scribbleValidator, TLScribble } from '../misc/TLScribble'\nimport { StyleProp } from '../styles/StyleProp'\nimport { pageIdValidator, TLPageId } from './TLPage'\n\n/**\n * TLInstance\n *\n * State that is particular to a single browser tab\n *\n * @public\n */\nexport interface TLInstance extends BaseRecord<'instance', TLInstanceId> {\n\tcurrentPageId: TLPageId\n\topacityForNextShape: TLOpacityType\n\tstylesForNextShape: Record<string, unknown>\n\t// ephemeral\n\tfollowingUserId: string | null\n\thighlightedUserIds: string[]\n\tbrush: Box2dModel | null\n\tcursor: TLCursor\n\tscribbles: TLScribble[]\n\tisFocusMode: boolean\n\tisDebugMode: boolean\n\tisToolLocked: boolean\n\texportBackground: boolean\n\tscreenBounds: Box2dModel\n\tzoomBrush: Box2dModel | null\n\tchatMessage: string\n\tisChatting: boolean\n\tisPenMode: boolean\n\tisGridMode: boolean\n\tcanMoveCamera: boolean\n\tisFocused: boolean\n\tdevicePixelRatio: number\n\tisCoarsePointer: boolean\n\t/**\n\t * Will be null if the pointer doesn't support hovering (e.g. touch), but true or false\n\t * otherwise\n\t */\n\tisHoveringCanvas: boolean | null\n\topenMenus: string[]\n\tisChangingStyle: boolean\n\tisReadonly: boolean\n\tmeta: JsonObject\n}\n\n/** @public */\nexport type TLInstanceId = RecordId<TLInstance>\n\n/** @internal */\nexport const instanceIdValidator = idValidator<TLInstanceId>('instance')\n\nexport function createInstanceRecordType(stylesById: Map<string, StyleProp<unknown>>) {\n\tconst stylesForNextShapeValidators = {} as Record<string, T.Validator<unknown>>\n\tfor (const [id, style] of stylesById) {\n\t\tstylesForNextShapeValidators[id] = T.optional(style)\n\t}\n\n\tconst instanceTypeValidator: T.Validator<TLInstance> = T.model(\n\t\t'instance',\n\t\tT.object({\n\t\t\ttypeName: T.literal('instance'),\n\t\t\tid: idValidator<TLInstanceId>('instance'),\n\t\t\tcurrentPageId: pageIdValidator,\n\t\t\tfollowingUserId: T.string.nullable(),\n\t\t\tbrush: box2dModelValidator.nullable(),\n\t\t\topacityForNextShape: opacityValidator,\n\t\t\tstylesForNextShape: T.object(stylesForNextShapeValidators),\n\t\t\tcursor: cursorValidator,\n\t\t\tscribbles: T.arrayOf(scribbleValidator),\n\t\t\tisFocusMode: T.boolean,\n\t\t\tisDebugMode: T.boolean,\n\t\t\tisToolLocked: T.boolean,\n\t\t\texportBackground: T.boolean,\n\t\t\tscreenBounds: box2dModelValidator,\n\t\t\tzoomBrush: box2dModelValidator.nullable(),\n\t\t\tisPenMode: T.boolean,\n\t\t\tisGridMode: T.boolean,\n\t\t\tchatMessage: T.string,\n\t\t\tisChatting: T.boolean,\n\t\t\thighlightedUserIds: T.arrayOf(T.string),\n\t\t\tcanMoveCamera: T.boolean,\n\t\t\tisFocused: T.boolean,\n\t\t\tdevicePixelRatio: T.number,\n\t\t\tisCoarsePointer: T.boolean,\n\t\t\tisHoveringCanvas: T.boolean.nullable(),\n\t\t\topenMenus: T.arrayOf(T.string),\n\t\t\tisChangingStyle: T.boolean,\n\t\t\tisReadonly: T.boolean,\n\t\t\tmeta: T.jsonValue as T.ObjectValidator<JsonObject>,\n\t\t})\n\t)\n\n\treturn createRecordType<TLInstance>('instance', {\n\t\tmigrations: instanceMigrations,\n\t\tvalidator: instanceTypeValidator,\n\t\tscope: 'session',\n\t}).withDefaultProperties(\n\t\t(): Omit<TLInstance, 'typeName' | 'id' | 'currentPageId'> => ({\n\t\t\tfollowingUserId: null,\n\t\t\topacityForNextShape: 1,\n\t\t\tstylesForNextShape: {},\n\t\t\tbrush: null,\n\t\t\tscribbles: [],\n\t\t\tcursor: {\n\t\t\t\ttype: 'default',\n\t\t\t\trotation: 0,\n\t\t\t},\n\t\t\tisFocusMode: false,\n\t\t\texportBackground: false,\n\t\t\tisDebugMode: process.env.NODE_ENV === 'development',\n\t\t\tisToolLocked: false,\n\t\t\tscreenBounds: { x: 0, y: 0, w: 1080, h: 720 },\n\t\t\tzoomBrush: null,\n\t\t\tisGridMode: false,\n\t\t\tisPenMode: false,\n\t\t\tchatMessage: '',\n\t\t\tisChatting: false,\n\t\t\thighlightedUserIds: [],\n\t\t\tcanMoveCamera: true,\n\t\t\tisFocused: false,\n\t\t\tdevicePixelRatio: typeof window === 'undefined' ? 1 : window.devicePixelRatio,\n\t\t\tisCoarsePointer: false,\n\t\t\tisHoveringCanvas: null,\n\t\t\topenMenus: [] as string[],\n\t\t\tisChangingStyle: false,\n\t\t\tisReadonly: false,\n\t\t\tmeta: {},\n\t\t})\n\t)\n}\n\n/** @internal */\nexport const instanceVersions = {\n\tAddTransparentExportBgs: 1,\n\tRemoveDialog: 2,\n\tAddToolLockMode: 3,\n\tRemoveExtraPropsForNextShape: 4,\n\tAddLabelColor: 5,\n\tAddFollowingUserId: 6,\n\tRemoveAlignJustify: 7,\n\tAddZoom: 8,\n\tAddVerticalAlign: 9,\n\tAddScribbleDelay: 10,\n\tRemoveUserId: 11,\n\tAddIsPenModeAndIsGridMode: 12,\n\tHoistOpacity: 13,\n\tAddChat: 14,\n\tAddHighlightedUserIds: 15,\n\tReplacePropsForNextShapeWithStylesForNextShape: 16,\n\tAddMeta: 17,\n\tRemoveCursorColor: 18,\n\tAddLonelyProperties: 19,\n\tReadOnlyReadonly: 20,\n\tAddHoveringCanvas: 21,\n\tAddScribbles: 22,\n} as const\n\n/** @public */\nexport const instanceMigrations = defineMigrations({\n\tcurrentVersion: instanceVersions.AddScribbles,\n\tmigrators: {\n\t\t[instanceVersions.AddTransparentExportBgs]: {\n\t\t\tup: (instance: TLInstance) => {\n\t\t\t\treturn { ...instance, exportBackground: true }\n\t\t\t},\n\t\t\tdown: ({ exportBackground: _, ...instance }: TLInstance) => {\n\t\t\t\treturn instance\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.RemoveDialog]: {\n\t\t\tup: ({ dialog: _, ...instance }: any) => {\n\t\t\t\treturn instance\n\t\t\t},\n\t\t\tdown: (instance: TLInstance) => {\n\t\t\t\treturn { ...instance, dialog: null }\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.AddToolLockMode]: {\n\t\t\tup: (instance: TLInstance) => {\n\t\t\t\treturn { ...instance, isToolLocked: false }\n\t\t\t},\n\t\t\tdown: ({ isToolLocked: _, ...instance }: TLInstance) => {\n\t\t\t\treturn instance\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.RemoveExtraPropsForNextShape]: {\n\t\t\tup: ({ propsForNextShape, ...instance }: any) => {\n\t\t\t\treturn {\n\t\t\t\t\t...instance,\n\t\t\t\t\tpropsForNextShape: Object.fromEntries(\n\t\t\t\t\t\tObject.entries(propsForNextShape).filter(([key]) =>\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'color',\n\t\t\t\t\t\t\t\t'labelColor',\n\t\t\t\t\t\t\t\t'dash',\n\t\t\t\t\t\t\t\t'fill',\n\t\t\t\t\t\t\t\t'size',\n\t\t\t\t\t\t\t\t'font',\n\t\t\t\t\t\t\t\t'align',\n\t\t\t\t\t\t\t\t'verticalAlign',\n\t\t\t\t\t\t\t\t'icon',\n\t\t\t\t\t\t\t\t'geo',\n\t\t\t\t\t\t\t\t'arrowheadStart',\n\t\t\t\t\t\t\t\t'arrowheadEnd',\n\t\t\t\t\t\t\t\t'spline',\n\t\t\t\t\t\t\t].includes(key)\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: (instance: TLInstance) => {\n\t\t\t\t// we can't restore these, so do nothing :/\n\t\t\t\treturn instance\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.AddLabelColor]: {\n\t\t\tup: ({ propsForNextShape, ...instance }: any) => {\n\t\t\t\treturn {\n\t\t\t\t\t...instance,\n\t\t\t\t\tpropsForNextShape: {\n\t\t\t\t\t\t...propsForNextShape,\n\t\t\t\t\t\tlabelColor: 'black',\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: (instance) => {\n\t\t\t\tconst { labelColor: _, ...rest } = instance.propsForNextShape\n\t\t\t\treturn {\n\t\t\t\t\t...instance,\n\t\t\t\t\tpropsForNextShape: {\n\t\t\t\t\t\t...rest,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.AddFollowingUserId]: {\n\t\t\tup: (instance: TLInstance) => {\n\t\t\t\treturn { ...instance, followingUserId: null }\n\t\t\t},\n\t\t\tdown: ({ followingUserId: _, ...instance }: TLInstance) => {\n\t\t\t\treturn instance\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.RemoveAlignJustify]: {\n\t\t\tup: (instance: any) => {\n\t\t\t\tlet newAlign = instance.propsForNextShape.align\n\t\t\t\tif (newAlign === 'justify') {\n\t\t\t\t\tnewAlign = 'start'\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\t...instance,\n\t\t\t\t\tpropsForNextShape: {\n\t\t\t\t\t\t...instance.propsForNextShape,\n\t\t\t\t\t\talign: newAlign,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: (instance: TLInstance) => {\n\t\t\t\treturn { ...instance }\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.AddZoom]: {\n\t\t\tup: (instance: TLInstance) => {\n\t\t\t\treturn { ...instance, zoomBrush: null }\n\t\t\t},\n\t\t\tdown: ({ zoomBrush: _, ...instance }: TLInstance) => {\n\t\t\t\treturn instance\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.AddVerticalAlign]: {\n\t\t\tup: (instance) => {\n\t\t\t\treturn {\n\t\t\t\t\t...instance,\n\t\t\t\t\tpropsForNextShape: {\n\t\t\t\t\t\t...instance.propsForNextShape,\n\t\t\t\t\t\tverticalAlign: 'middle',\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: (instance) => {\n\t\t\t\tconst { verticalAlign: _, ...propsForNextShape } = instance.propsForNextShape\n\t\t\t\treturn {\n\t\t\t\t\t...instance,\n\t\t\t\t\tpropsForNextShape,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.AddScribbleDelay]: {\n\t\t\tup: (instance) => {\n\t\t\t\tif (instance.scribble !== null) {\n\t\t\t\t\treturn { ...instance, scribble: { ...instance.scribble, delay: 0 } }\n\t\t\t\t}\n\t\t\t\treturn { ...instance }\n\t\t\t},\n\t\t\tdown: (instance) => {\n\t\t\t\tif (instance.scribble !== null) {\n\t\t\t\t\tconst { delay: _delay, ...rest } = instance.scribble\n\t\t\t\t\treturn { ...instance, scribble: rest }\n\t\t\t\t}\n\t\t\t\treturn { ...instance }\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.RemoveUserId]: {\n\t\t\tup: ({ userId: _, ...instance }: any) => {\n\t\t\t\treturn instance\n\t\t\t},\n\t\t\tdown: (instance: TLInstance) => {\n\t\t\t\treturn { ...instance, userId: 'user:none' }\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.AddIsPenModeAndIsGridMode]: {\n\t\t\tup: (instance: TLInstance) => {\n\t\t\t\treturn { ...instance, isPenMode: false, isGridMode: false }\n\t\t\t},\n\t\t\tdown: ({ isPenMode: _, isGridMode: __, ...instance }: TLInstance) => {\n\t\t\t\treturn instance\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.HoistOpacity]: {\n\t\t\tup: ({ propsForNextShape: { opacity, ...propsForNextShape }, ...instance }: any) => {\n\t\t\t\treturn { ...instance, opacityForNextShape: Number(opacity ?? '1'), propsForNextShape }\n\t\t\t},\n\t\t\tdown: ({ opacityForNextShape: opacity, ...instance }: any) => {\n\t\t\t\treturn {\n\t\t\t\t\t...instance,\n\t\t\t\t\tpropsForNextShape: {\n\t\t\t\t\t\t...instance.propsForNextShape,\n\t\t\t\t\t\topacity:\n\t\t\t\t\t\t\topacity < 0.175\n\t\t\t\t\t\t\t\t? '0.1'\n\t\t\t\t\t\t\t\t: opacity < 0.375\n\t\t\t\t\t\t\t\t? '0.25'\n\t\t\t\t\t\t\t\t: opacity < 0.625\n\t\t\t\t\t\t\t\t? '0.5'\n\t\t\t\t\t\t\t\t: opacity < 0.875\n\t\t\t\t\t\t\t\t? '0.75'\n\t\t\t\t\t\t\t\t: '1',\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.AddChat]: {\n\t\t\tup: (instance: TLInstance) => {\n\t\t\t\treturn { ...instance, chatMessage: '', isChatting: false }\n\t\t\t},\n\t\t\tdown: ({ chatMessage: _, isChatting: __, ...instance }: TLInstance) => {\n\t\t\t\treturn instance\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.AddHighlightedUserIds]: {\n\t\t\tup: (instance: TLInstance) => {\n\t\t\t\treturn { ...instance, highlightedUserIds: [] }\n\t\t\t},\n\t\t\tdown: ({ highlightedUserIds: _, ...instance }: TLInstance) => {\n\t\t\t\treturn instance\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.ReplacePropsForNextShapeWithStylesForNextShape]: {\n\t\t\tup: ({ propsForNextShape: _, ...instance }) => {\n\t\t\t\treturn { ...instance, stylesForNextShape: {} }\n\t\t\t},\n\t\t\tdown: ({ stylesForNextShape: _, ...instance }: TLInstance) => {\n\t\t\t\treturn {\n\t\t\t\t\t...instance,\n\t\t\t\t\tpropsForNextShape: {\n\t\t\t\t\t\tcolor: 'black',\n\t\t\t\t\t\tlabelColor: 'black',\n\t\t\t\t\t\tdash: 'draw',\n\t\t\t\t\t\tfill: 'none',\n\t\t\t\t\t\tsize: 'm',\n\t\t\t\t\t\ticon: 'file',\n\t\t\t\t\t\tfont: 'draw',\n\t\t\t\t\t\talign: 'middle',\n\t\t\t\t\t\tverticalAlign: 'middle',\n\t\t\t\t\t\tgeo: 'rectangle',\n\t\t\t\t\t\tarrowheadStart: 'none',\n\t\t\t\t\t\tarrowheadEnd: 'arrow',\n\t\t\t\t\t\tspline: 'line',\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.AddMeta]: {\n\t\t\tup: (record) => {\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t\tmeta: {},\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: ({ meta: _, ...record }) => {\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.RemoveCursorColor]: {\n\t\t\tup: (record) => {\n\t\t\t\tconst { color: _, ...cursor } = record.cursor\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t\tcursor,\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: (record) => {\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t\tcursor: {\n\t\t\t\t\t\t...record.cursor,\n\t\t\t\t\t\tcolor: 'black',\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.AddLonelyProperties]: {\n\t\t\tup: (record) => {\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t\tcanMoveCamera: true,\n\t\t\t\t\tisFocused: false,\n\t\t\t\t\tdevicePixelRatio: 1,\n\t\t\t\t\tisCoarsePointer: false,\n\t\t\t\t\topenMenus: [],\n\t\t\t\t\tisChangingStyle: false,\n\t\t\t\t\tisReadOnly: false,\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: ({\n\t\t\t\tcanMoveCamera: _canMoveCamera,\n\t\t\t\tisFocused: _isFocused,\n\t\t\t\tdevicePixelRatio: _devicePixelRatio,\n\t\t\t\tisCoarsePointer: _isCoarsePointer,\n\t\t\t\topenMenus: _openMenus,\n\t\t\t\tisChangingStyle: _isChangingStyle,\n\t\t\t\tisReadOnly: _isReadOnly,\n\t\t\t\t...record\n\t\t\t}) => {\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.ReadOnlyReadonly]: {\n\t\t\tup: ({ isReadOnly: _isReadOnly, ...record }) => {\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t\tisReadonly: _isReadOnly,\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: ({ isReadonly: _isReadonly, ...record }) => {\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t\tisReadOnly: _isReadonly,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.AddHoveringCanvas]: {\n\t\t\tup: (record) => {\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t\tisHoveringCanvas: null,\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: ({ isHoveringCanvas: _, ...record }) => {\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[instanceVersions.AddScribbles]: {\n\t\t\tup: ({ scribble: _, ...record }) => {\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t\tscribbles: [],\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: ({ scribbles: _, ...record }) => {\n\t\t\t\treturn { ...record, scribble: null }\n\t\t\t},\n\t\t},\n\t},\n})\n\n/** @public */\nexport const TLINSTANCE_ID = 'instance:instance' as TLInstanceId\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,54 @@
1
+ import { createRecordType, defineMigrations } from "@bigbluebutton/store";
2
+ import { T } from "@bigbluebutton/validate";
3
+ import { idValidator } from "../misc/id-validator.mjs";
4
+ const pageIdValidator = idValidator("page");
5
+ const pageValidator = T.model(
6
+ "page",
7
+ T.object({
8
+ typeName: T.literal("page"),
9
+ id: pageIdValidator,
10
+ name: T.string,
11
+ index: T.string,
12
+ meta: T.jsonValue
13
+ })
14
+ );
15
+ const pageVersions = {
16
+ AddMeta: 1
17
+ };
18
+ const pageMigrations = defineMigrations({
19
+ currentVersion: pageVersions.AddMeta,
20
+ migrators: {
21
+ [pageVersions.AddMeta]: {
22
+ up: (record) => {
23
+ return {
24
+ ...record,
25
+ meta: {}
26
+ };
27
+ },
28
+ down: ({ meta: _, ...record }) => {
29
+ return {
30
+ ...record
31
+ };
32
+ }
33
+ }
34
+ }
35
+ });
36
+ const PageRecordType = createRecordType("page", {
37
+ validator: pageValidator,
38
+ migrations: pageMigrations,
39
+ scope: "document"
40
+ }).withDefaultProperties(() => ({
41
+ meta: {}
42
+ }));
43
+ function isPageId(id) {
44
+ return PageRecordType.isId(id);
45
+ }
46
+ export {
47
+ PageRecordType,
48
+ isPageId,
49
+ pageIdValidator,
50
+ pageMigrations,
51
+ pageValidator,
52
+ pageVersions
53
+ };
54
+ //# sourceMappingURL=TLPage.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/records/TLPage.ts"],
4
+ "sourcesContent": ["import { BaseRecord, createRecordType, defineMigrations, RecordId } from '@bigbluebutton/store'\nimport { JsonObject } from '@bigbluebutton/utils'\nimport { T } from '@bigbluebutton/validate'\nimport { idValidator } from '../misc/id-validator'\n\n/**\n * TLPage\n *\n * @public\n */\nexport interface TLPage extends BaseRecord<'page', TLPageId> {\n\tname: string\n\tindex: string\n\tmeta: JsonObject\n}\n\n/** @public */\nexport type TLPageId = RecordId<TLPage>\n\n/** @internal */\nexport const pageIdValidator = idValidator<TLPageId>('page')\n\n/** @internal */\nexport const pageValidator: T.Validator<TLPage> = T.model(\n\t'page',\n\tT.object({\n\t\ttypeName: T.literal('page'),\n\t\tid: pageIdValidator,\n\t\tname: T.string,\n\t\tindex: T.string,\n\t\tmeta: T.jsonValue as T.ObjectValidator<JsonObject>,\n\t})\n)\n\n/** @internal */\nexport const pageVersions = {\n\tAddMeta: 1,\n}\n\n/** @internal */\nexport const pageMigrations = defineMigrations({\n\tcurrentVersion: pageVersions.AddMeta,\n\tmigrators: {\n\t\t[pageVersions.AddMeta]: {\n\t\t\tup: (record) => {\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t\tmeta: {},\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: ({ meta: _, ...record }) => {\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n})\n\n/** @public */\nexport const PageRecordType = createRecordType<TLPage>('page', {\n\tvalidator: pageValidator,\n\tmigrations: pageMigrations,\n\tscope: 'document',\n}).withDefaultProperties(() => ({\n\tmeta: {},\n}))\n\n/** @public */\nexport function isPageId(id: string): id is TLPageId {\n\treturn PageRecordType.isId(id)\n}\n"],
5
+ "mappings": "AAAA,SAAqB,kBAAkB,wBAAkC;AAEzE,SAAS,SAAS;AAClB,SAAS,mBAAmB;AAiBrB,MAAM,kBAAkB,YAAsB,MAAM;AAGpD,MAAM,gBAAqC,EAAE;AAAA,EACnD;AAAA,EACA,EAAE,OAAO;AAAA,IACR,UAAU,EAAE,QAAQ,MAAM;AAAA,IAC1B,IAAI;AAAA,IACJ,MAAM,EAAE;AAAA,IACR,OAAO,EAAE;AAAA,IACT,MAAM,EAAE;AAAA,EACT,CAAC;AACF;AAGO,MAAM,eAAe;AAAA,EAC3B,SAAS;AACV;AAGO,MAAM,iBAAiB,iBAAiB;AAAA,EAC9C,gBAAgB,aAAa;AAAA,EAC7B,WAAW;AAAA,IACV,CAAC,aAAa,OAAO,GAAG;AAAA,MACvB,IAAI,CAAC,WAAW;AACf,eAAO;AAAA,UACN,GAAG;AAAA,UACH,MAAM,CAAC;AAAA,QACR;AAAA,MACD;AAAA,MACA,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,OAAO,MAAM;AACjC,eAAO;AAAA,UACN,GAAG;AAAA,QACJ;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD,CAAC;AAGM,MAAM,iBAAiB,iBAAyB,QAAQ;AAAA,EAC9D,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,OAAO;AACR,CAAC,EAAE,sBAAsB,OAAO;AAAA,EAC/B,MAAM,CAAC;AACR,EAAE;AAGK,SAAS,SAAS,IAA4B;AACpD,SAAO,eAAe,KAAK,EAAE;AAC9B;",
6
+ "names": []
7
+ }