@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,105 @@
1
+ import { T } from '@bigbluebutton/validate'
2
+
3
+ /**
4
+ * A `StyleProp` is a property of a shape that follows some special rules.
5
+ *
6
+ * 1. The same value can be set on lots of shapes at the same time.
7
+ *
8
+ * 2. The last used value is automatically saved and applied to new shapes.
9
+ *
10
+ * For example, {@link DefaultColorStyle} is a style prop used by tldraw's default shapes to set
11
+ * their color. If you try selecting several shapes on tldraw.com and changing their color, you'll
12
+ * see that the color is applied to all of them. Then, if you draw a new shape, it'll have the same
13
+ * color as the one you just set.
14
+ *
15
+ * You can use styles in your own shapes by either defining your own (see {@link StyleProp.define}
16
+ * and {@link StyleProp.defineEnum}) or using tldraw's default ones, like {@link DefaultColorStyle}.
17
+ * When you define a shape, pass a `props` object describing all of your shape's properties, using
18
+ * `StyleProp`s for the ones you want to be styles. See the
19
+ * {@link https://github.com/bigbluebutton/tldraw/tree/main/apps/examples | custom styles example}
20
+ * for more.
21
+ *
22
+ * @public
23
+ */
24
+ export class StyleProp<Type> implements T.Validatable<Type> {
25
+ /**
26
+ * Define a new {@link StyleProp}.
27
+ *
28
+ * @param uniqueId - Each StyleProp must have a unique ID. We recommend you prefix this with
29
+ * your app/library name.
30
+ * @param options -
31
+ * - `defaultValue`: The default value for this style prop.
32
+ *
33
+ * - `type`: Optionally, describe what type of data you expect for this style prop.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * import {T} from '@bigbluebutton/validate'
38
+ * import {StyleProp} from '@bigbluebutton/tlschema'
39
+ *
40
+ * const MyLineWidthProp = StyleProp.define('myApp:lineWidth', {
41
+ * defaultValue: 1,
42
+ * type: T.number,
43
+ * })
44
+ * ```
45
+ * @public
46
+ */
47
+ static define<Type>(
48
+ uniqueId: string,
49
+ options: { defaultValue: Type; type?: T.Validatable<Type> }
50
+ ) {
51
+ const { defaultValue, type = T.any } = options
52
+ return new StyleProp<Type>(uniqueId, defaultValue, type)
53
+ }
54
+
55
+ /**
56
+ * Define a new {@link StyleProp} as a list of possible values.
57
+ *
58
+ * @param uniqueId - Each StyleProp must have a unique ID. We recommend you prefix this with
59
+ * your app/library name.
60
+ * @param options -
61
+ * - `defaultValue`: The default value for this style prop.
62
+ *
63
+ * - `values`: An array of possible values of this style prop.
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * import {StyleProp} from '@bigbluebutton/tlschema'
68
+ *
69
+ * const MySizeProp = StyleProp.defineEnum('myApp:size', {
70
+ * defaultValue: 'medium',
71
+ * values: ['small', 'medium', 'large'],
72
+ * })
73
+ * ```
74
+ */
75
+ static defineEnum<const Values extends readonly unknown[]>(
76
+ uniqueId: string,
77
+ options: { defaultValue: Values[number]; values: Values }
78
+ ) {
79
+ const { defaultValue, values } = options
80
+ return new EnumStyleProp<Values[number]>(uniqueId, defaultValue, values)
81
+ }
82
+
83
+ /** @internal */
84
+ protected constructor(
85
+ readonly id: string,
86
+ readonly defaultValue: Type,
87
+ readonly type: T.Validatable<Type>
88
+ ) {}
89
+
90
+ validate(value: unknown) {
91
+ return this.type.validate(value)
92
+ }
93
+ }
94
+
95
+ /**
96
+ * See {@link StyleProp} & {@link StyleProp.defineEnum}
97
+ *
98
+ * @public
99
+ */
100
+ export class EnumStyleProp<T> extends StyleProp<T> {
101
+ /** @internal */
102
+ constructor(id: string, defaultValue: T, readonly values: readonly T[]) {
103
+ super(id, defaultValue, T.literalEnum(...values))
104
+ }
105
+ }
@@ -0,0 +1,296 @@
1
+ import { Expand } from '@bigbluebutton/utils'
2
+ import { T } from '@bigbluebutton/validate'
3
+ import { StyleProp } from './StyleProp'
4
+
5
+ const colors = [
6
+ 'black',
7
+ 'grey',
8
+ 'light-violet',
9
+ 'violet',
10
+ 'blue',
11
+ 'light-blue',
12
+ 'yellow',
13
+ 'orange',
14
+ 'green',
15
+ 'light-green',
16
+ 'light-red',
17
+ 'red',
18
+ ] as const
19
+
20
+ /** @public */
21
+ export type TLDefaultColorThemeColor = {
22
+ solid: string
23
+ semi: string
24
+ pattern: string
25
+ highlight: {
26
+ srgb: string
27
+ p3: string
28
+ }
29
+ }
30
+
31
+ /** @public */
32
+ export type TLDefaultColorTheme = Expand<
33
+ {
34
+ id: 'light' | 'dark'
35
+ text: string
36
+ background: string
37
+ solid: string
38
+ } & Record<(typeof colors)[number], TLDefaultColorThemeColor>
39
+ >
40
+
41
+ /** @public */
42
+ export const DefaultColorThemePalette: {
43
+ lightMode: TLDefaultColorTheme
44
+ darkMode: TLDefaultColorTheme
45
+ } = {
46
+ lightMode: {
47
+ id: 'light',
48
+ text: '#000000',
49
+ background: 'rgb(249, 250, 251)',
50
+ solid: '#fcfffe',
51
+
52
+ black: {
53
+ solid: '#1d1d1d',
54
+ semi: '#e8e8e8',
55
+ pattern: '#494949',
56
+ highlight: {
57
+ srgb: '#fddd00',
58
+ p3: 'color(display-p3 0.972 0.8705 0.05)',
59
+ },
60
+ },
61
+ blue: {
62
+ solid: '#4263eb',
63
+ semi: '#dce1f8',
64
+ pattern: '#6681ee',
65
+ highlight: {
66
+ srgb: '#10acff',
67
+ p3: 'color(display-p3 0.308 0.6632 0.9996)',
68
+ },
69
+ },
70
+ green: {
71
+ solid: '#099268',
72
+ semi: '#d3e9e3',
73
+ pattern: '#39a785',
74
+ highlight: {
75
+ srgb: '#00ffc8',
76
+ p3: 'color(display-p3 0.2536 0.984 0.7981)',
77
+ },
78
+ },
79
+ grey: {
80
+ solid: '#adb5bd',
81
+ semi: '#eceef0',
82
+ pattern: '#bcc3c9',
83
+ highlight: {
84
+ srgb: '#cbe7f1',
85
+ p3: 'color(display-p3 0.8163 0.9023 0.9416)',
86
+ },
87
+ },
88
+ 'light-blue': {
89
+ solid: '#4dabf7',
90
+ semi: '#ddedfa',
91
+ pattern: '#6fbbf8',
92
+ highlight: {
93
+ srgb: '#00f4ff',
94
+ p3: 'color(display-p3 0.1512 0.9414 0.9996)',
95
+ },
96
+ },
97
+ 'light-green': {
98
+ solid: '#40c057',
99
+ semi: '#dbf0e0',
100
+ pattern: '#65cb78',
101
+ highlight: {
102
+ srgb: '#65f641',
103
+ p3: 'color(display-p3 0.563 0.9495 0.3857)',
104
+ },
105
+ },
106
+ 'light-red': {
107
+ solid: '#ff8787',
108
+ semi: '#f4dadb',
109
+ pattern: '#fe9e9e',
110
+ highlight: {
111
+ srgb: '#ff7fa3',
112
+ p3: 'color(display-p3 0.9988 0.5301 0.6397)',
113
+ },
114
+ },
115
+ 'light-violet': {
116
+ solid: '#e599f7',
117
+ semi: '#f5eafa',
118
+ pattern: '#e9acf8',
119
+ highlight: {
120
+ srgb: '#ff88ff',
121
+ p3: 'color(display-p3 0.9676 0.5652 0.9999)',
122
+ },
123
+ },
124
+ orange: {
125
+ solid: '#f76707',
126
+ semi: '#f8e2d4',
127
+ pattern: '#f78438',
128
+ highlight: {
129
+ srgb: '#ffa500',
130
+ p3: 'color(display-p3 0.9988 0.6905 0.266)',
131
+ },
132
+ },
133
+ red: {
134
+ solid: '#e03131',
135
+ semi: '#f4dadb',
136
+ pattern: '#e55959',
137
+ highlight: {
138
+ srgb: '#ff636e',
139
+ p3: 'color(display-p3 0.9992 0.4376 0.45)',
140
+ },
141
+ },
142
+ violet: {
143
+ solid: '#ae3ec9',
144
+ semi: '#ecdcf2',
145
+ pattern: '#bd63d3',
146
+ highlight: {
147
+ srgb: '#c77cff',
148
+ p3: 'color(display-p3 0.7469 0.5089 0.9995)',
149
+ },
150
+ },
151
+ yellow: {
152
+ solid: '#ffc078',
153
+ semi: '#f9f0e6',
154
+ pattern: '#fecb92',
155
+ highlight: {
156
+ srgb: '#fddd00',
157
+ p3: 'color(display-p3 0.972 0.8705 0.05)',
158
+ },
159
+ },
160
+ },
161
+ darkMode: {
162
+ id: 'dark',
163
+ text: '#f8f9fa',
164
+ background: '#212529',
165
+ solid: '#28292e',
166
+
167
+ black: {
168
+ solid: '#e1e1e1',
169
+ semi: '#2c3036',
170
+ pattern: '#989898',
171
+ highlight: {
172
+ srgb: '#d2b700',
173
+ p3: 'color(display-p3 0.8078 0.7225 0.0312)',
174
+ },
175
+ },
176
+ blue: {
177
+ solid: '#4156be',
178
+ semi: '#262d40',
179
+ pattern: '#3a4b9e',
180
+ highlight: {
181
+ srgb: '#0079d2',
182
+ p3: 'color(display-p3 0.0032 0.4655 0.7991)',
183
+ },
184
+ },
185
+ green: {
186
+ solid: '#3b7b5e',
187
+ semi: '#253231',
188
+ pattern: '#366a53',
189
+ highlight: {
190
+ srgb: '#009774',
191
+ p3: 'color(display-p3 0.0085 0.582 0.4604)',
192
+ },
193
+ },
194
+ grey: {
195
+ solid: '#93989f',
196
+ semi: '#33373c',
197
+ pattern: '#7c8187',
198
+ highlight: {
199
+ srgb: '#9cb4cb',
200
+ p3: 'color(display-p3 0.6299 0.7012 0.7856)',
201
+ },
202
+ },
203
+ 'light-blue': {
204
+ solid: '#588fc9',
205
+ semi: '#2a3642',
206
+ pattern: '#4d7aa9',
207
+ highlight: {
208
+ srgb: '#00bdc8',
209
+ p3: 'color(display-p3 0.0023 0.7259 0.7735)',
210
+ },
211
+ },
212
+ 'light-green': {
213
+ solid: '#599f57',
214
+ semi: '#2a3830',
215
+ pattern: '#4e874e',
216
+ highlight: {
217
+ srgb: '#00a000',
218
+ p3: 'color(display-p3 0.2711 0.6172 0.0195)',
219
+ },
220
+ },
221
+ 'light-red': {
222
+ solid: '#c67877',
223
+ semi: '#3b3235',
224
+ pattern: '#a56767',
225
+ highlight: {
226
+ srgb: '#db005b',
227
+ p3: 'color(display-p3 0.7849 0.0585 0.3589)',
228
+ },
229
+ },
230
+ 'light-violet': {
231
+ solid: '#b583c9',
232
+ semi: '#383442',
233
+ pattern: '#9770a9',
234
+ highlight: {
235
+ srgb: '#c400c7',
236
+ p3: 'color(display-p3 0.7024 0.0403 0.753)',
237
+ },
238
+ },
239
+ orange: {
240
+ solid: '#bf612e',
241
+ semi: '#3a2e2a',
242
+ pattern: '#9f552d',
243
+ highlight: {
244
+ srgb: '#d07a00',
245
+ p3: 'color(display-p3 0.7699 0.4937 0.0085)',
246
+ },
247
+ },
248
+ red: {
249
+ solid: '#aa3c37',
250
+ semi: '#36292b',
251
+ pattern: '#8f3734',
252
+ highlight: {
253
+ srgb: '#de002c',
254
+ p3: 'color(display-p3 0.7978 0.0509 0.2035)',
255
+ },
256
+ },
257
+ violet: {
258
+ solid: '#873fa3',
259
+ semi: '#31293c',
260
+ pattern: '#763a8b',
261
+ highlight: {
262
+ srgb: '#9e00ee',
263
+ p3: 'color(display-p3 0.5651 0.0079 0.8986)',
264
+ },
265
+ },
266
+ yellow: {
267
+ solid: '#cba371',
268
+ semi: '#3c3934',
269
+ pattern: '#fecb92',
270
+ highlight: {
271
+ srgb: '#d2b700',
272
+ p3: 'color(display-p3 0.8078 0.7225 0.0312)',
273
+ },
274
+ },
275
+ },
276
+ }
277
+
278
+ /** @public */
279
+ export function getDefaultColorTheme(opts: { isDarkMode: boolean }): TLDefaultColorTheme {
280
+ return opts.isDarkMode ? DefaultColorThemePalette.darkMode : DefaultColorThemePalette.lightMode
281
+ }
282
+
283
+ /** @public */
284
+ export const DefaultColorStyle = StyleProp.defineEnum('tldraw:color', {
285
+ defaultValue: 'black',
286
+ values: colors,
287
+ })
288
+
289
+ /** @public */
290
+ export const DefaultLabelColorStyle = StyleProp.defineEnum('tldraw:labelColor', {
291
+ defaultValue: 'black',
292
+ values: colors,
293
+ })
294
+
295
+ /** @public */
296
+ export type TLDefaultColorStyle = T.TypeOf<typeof DefaultColorStyle>
@@ -0,0 +1,11 @@
1
+ import { T } from '@bigbluebutton/validate'
2
+ import { StyleProp } from './StyleProp'
3
+
4
+ /** @public */
5
+ export const DefaultDashStyle = StyleProp.defineEnum('tldraw:dash', {
6
+ defaultValue: 'draw',
7
+ values: ['draw', 'solid', 'dashed', 'dotted'],
8
+ })
9
+
10
+ /** @public */
11
+ export type TLDefaultDashStyle = T.TypeOf<typeof DefaultDashStyle>
@@ -0,0 +1,11 @@
1
+ import { T } from '@bigbluebutton/validate'
2
+ import { StyleProp } from './StyleProp'
3
+
4
+ /** @public */
5
+ export const DefaultFillStyle = StyleProp.defineEnum('tldraw:fill', {
6
+ defaultValue: 'none',
7
+ values: ['none', 'semi', 'solid', 'pattern'],
8
+ })
9
+
10
+ /** @public */
11
+ export type TLDefaultFillStyle = T.TypeOf<typeof DefaultFillStyle>
@@ -0,0 +1,19 @@
1
+ import { T } from '@bigbluebutton/validate'
2
+ import { StyleProp } from './StyleProp'
3
+
4
+ /** @public */
5
+ export const DefaultFontStyle = StyleProp.defineEnum('tldraw:font', {
6
+ defaultValue: 'draw',
7
+ values: ['draw', 'sans', 'serif', 'mono'],
8
+ })
9
+
10
+ /** @public */
11
+ export type TLDefaultFontStyle = T.TypeOf<typeof DefaultFontStyle>
12
+
13
+ /** @public */
14
+ export const DefaultFontFamilies = {
15
+ draw: "'tldraw_draw', sans-serif",
16
+ sans: "'tldraw_sans', sans-serif",
17
+ serif: "'tldraw_serif', serif",
18
+ mono: "'tldraw_mono', monospace",
19
+ }
@@ -0,0 +1,11 @@
1
+ import { T } from '@bigbluebutton/validate'
2
+ import { StyleProp } from './StyleProp'
3
+
4
+ /** @public */
5
+ export const DefaultHorizontalAlignStyle = StyleProp.defineEnum('tldraw:horizontalAlign', {
6
+ defaultValue: 'middle',
7
+ values: ['start', 'middle', 'end', 'start-legacy', 'end-legacy', 'middle-legacy'],
8
+ })
9
+
10
+ /** @public */
11
+ export type TLDefaultHorizontalAlignStyle = T.TypeOf<typeof DefaultHorizontalAlignStyle>
@@ -0,0 +1,11 @@
1
+ import { T } from '@bigbluebutton/validate'
2
+ import { StyleProp } from './StyleProp'
3
+
4
+ /** @public */
5
+ export const DefaultSizeStyle = StyleProp.defineEnum('tldraw:size', {
6
+ defaultValue: 'm',
7
+ values: ['s', 'm', 'l', 'xl'],
8
+ })
9
+
10
+ /** @public */
11
+ export type TLDefaultSizeStyle = T.TypeOf<typeof DefaultSizeStyle>
@@ -0,0 +1,11 @@
1
+ import { T } from '@bigbluebutton/validate'
2
+ import { StyleProp } from './StyleProp'
3
+
4
+ /** @public */
5
+ export const DefaultVerticalAlignStyle = StyleProp.defineEnum('tldraw:verticalAlign', {
6
+ defaultValue: 'middle',
7
+ values: ['start', 'middle', 'end'],
8
+ })
9
+
10
+ /** @public */
11
+ export type TLDefaultVerticalAlignStyle = T.TypeOf<typeof DefaultVerticalAlignStyle>
@@ -0,0 +1,39 @@
1
+ // This file is automatically generated by scripts/refresh-assets.ts.
2
+ // Do not edit manually.
3
+
4
+ /** @public */
5
+ export const LANGUAGES = [
6
+ { locale: 'ar', label: 'عربي' },
7
+ { locale: 'ca', label: 'Català' },
8
+ { locale: 'da', label: 'Danish' },
9
+ { locale: 'de', label: 'Deutsch' },
10
+ { locale: 'en', label: 'English' },
11
+ { locale: 'es', label: 'Español' },
12
+ { locale: 'fa', label: 'فارسی' },
13
+ { locale: 'fi', label: 'Suomi' },
14
+ { locale: 'fr', label: 'Français' },
15
+ { locale: 'gl', label: 'Galego' },
16
+ { locale: 'he', label: 'עברית' },
17
+ { locale: 'it', label: 'Italiano' },
18
+ { locale: 'ja', label: '日本語' },
19
+ { locale: 'ko-kr', label: '한국어' },
20
+ { locale: 'ku', label: 'کوردی' },
21
+ { locale: 'hi-in', label: 'हिन्दी' },
22
+ { locale: 'hu', label: 'Magyar' },
23
+ { locale: 'my', label: 'မြန်မာစာ' },
24
+ { locale: 'ne', label: 'नेपाली' },
25
+ { locale: 'no', label: 'Norwegian' },
26
+ { locale: 'pl', label: 'Polski' },
27
+ { locale: 'pt-br', label: 'Português - Brasil' },
28
+ { locale: 'pt-pt', label: 'Português - Europeu' },
29
+ { locale: 'ro', label: 'Română' },
30
+ { locale: 'ru', label: 'Russian' },
31
+ { locale: 'sv', label: 'Svenska' },
32
+ { locale: 'te', label: 'తెలుగు' },
33
+ { locale: 'th', label: 'ภาษาไทย' },
34
+ { locale: 'tr', label: 'Türkçe' },
35
+ { locale: 'uk', label: 'Ukrainian' },
36
+ { locale: 'vi', label: 'Tiếng Việt' },
37
+ { locale: 'zh-cn', label: 'Chinese - Simplified' },
38
+ { locale: 'zh-tw', label: '繁體中文 (台灣)' },
39
+ ] as const
@@ -0,0 +1,43 @@
1
+ import { _getDefaultTranslationLocale } from './translations'
2
+
3
+ type DefaultLanguageTest = {
4
+ name: string
5
+ input: string[]
6
+ output: string
7
+ }
8
+
9
+ describe('Choosing a sensible default translation locale', () => {
10
+ const tests: DefaultLanguageTest[] = [
11
+ {
12
+ name: 'finds a matching language locale',
13
+ input: ['fr'],
14
+ output: 'fr',
15
+ },
16
+ {
17
+ name: 'finds a matching region locale',
18
+ input: ['pt-PT'],
19
+ output: 'pt-pt',
20
+ },
21
+ {
22
+ name: 'picks a region locale if no language locale available',
23
+ input: ['pt'],
24
+ output: 'pt-br',
25
+ },
26
+ {
27
+ name: 'picks a language locale if no region locale available',
28
+ input: ['fr-CA'],
29
+ output: 'fr',
30
+ },
31
+ {
32
+ name: 'picks the first language that loosely matches',
33
+ input: ['fr-CA', 'pt-PT'],
34
+ output: 'fr',
35
+ },
36
+ ]
37
+
38
+ for (const test of tests) {
39
+ it(test.name, () => {
40
+ expect(_getDefaultTranslationLocale(test.input)).toEqual(test.output)
41
+ })
42
+ }
43
+ })
@@ -0,0 +1,73 @@
1
+ import { LANGUAGES } from './languages'
2
+
3
+ /** @public */
4
+ export { LANGUAGES }
5
+
6
+ /** @public */
7
+ export type TLLanguage = (typeof LANGUAGES)[number]
8
+ // {
9
+ // readonly locale: string
10
+ // readonly label: string
11
+ // }
12
+
13
+ /** @public */
14
+ export function getDefaultTranslationLocale(): TLLanguage['locale'] {
15
+ const locales = typeof window !== 'undefined' ? window.navigator.languages ?? ['en'] : ['en']
16
+ return _getDefaultTranslationLocale(locales)
17
+ }
18
+
19
+ /** @internal */
20
+ export function _getDefaultTranslationLocale(locales: readonly string[]): TLLanguage['locale'] {
21
+ for (const locale of locales) {
22
+ const supportedLocale = getSupportedLocale(locale)
23
+ if (supportedLocale) {
24
+ return supportedLocale
25
+ }
26
+ }
27
+ return 'en'
28
+ }
29
+
30
+ /** @public */
31
+ const DEFAULT_LOCALE_REGIONS: { [locale: string]: TLLanguage['locale'] } = {
32
+ zh: 'zh-cn',
33
+ pt: 'pt-br',
34
+ ko: 'ko-kr',
35
+ hi: 'hi-in',
36
+ }
37
+
38
+ /** @public */
39
+ function getSupportedLocale(locale: string): TLLanguage['locale'] | null {
40
+ // If we have an exact match, return it!
41
+ // (e.g. if the user has 'fr' and we have 'fr')
42
+ // (or if the user has 'pt-BR' and we have 'pt-br')
43
+ const exactMatch = LANGUAGES.find((t) => t.locale === locale.toLowerCase())
44
+ if (exactMatch) {
45
+ return exactMatch.locale
46
+ }
47
+
48
+ // Otherwise, we need to be more flexible...
49
+ const [language, region] = locale.split(/[-_]/).map((s) => s.toLowerCase())
50
+
51
+ // If the user's language has a region...
52
+ // let's try to find non-region-specific locale for them
53
+ // (e.g. if they have 'fr-CA' but we only have 'fr')
54
+ if (region) {
55
+ const languageMatch = LANGUAGES.find((t) => t.locale === language)
56
+ if (languageMatch) {
57
+ return languageMatch.locale
58
+ }
59
+ }
60
+
61
+ // If the user's language doesn't have a region...
62
+ // let's try to find a region-specific locale for them
63
+ // (e.g. if they have 'pt' but we only have 'pt-pt' or 'pt-br')
64
+ //
65
+ // In this case, we choose the hard-coded default region for that language
66
+ if (language in DEFAULT_LOCALE_REGIONS) {
67
+ return DEFAULT_LOCALE_REGIONS[language]
68
+ }
69
+
70
+ // Oh no! We don't have a translation for this language!
71
+ // Let's give up...
72
+ return null
73
+ }
@@ -0,0 +1,2 @@
1
+ /** @public */
2
+ export type SetValue<T extends Set<any>> = T extends Set<infer U> ? U : never