@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,136 @@
1
+ import { defineMigrations } from "@bigbluebutton/store";
2
+ import { T } from "@bigbluebutton/validate";
3
+ import { vec2dModelValidator } from "../misc/geometry-types.mjs";
4
+ import { StyleProp } from "../styles/StyleProp.mjs";
5
+ import { DefaultColorStyle, DefaultLabelColorStyle } from "../styles/TLColorStyle.mjs";
6
+ import { DefaultDashStyle } from "../styles/TLDashStyle.mjs";
7
+ import { DefaultFillStyle } from "../styles/TLFillStyle.mjs";
8
+ import { DefaultFontStyle } from "../styles/TLFontStyle.mjs";
9
+ import { DefaultSizeStyle } from "../styles/TLSizeStyle.mjs";
10
+ import { shapeIdValidator } from "./TLBaseShape.mjs";
11
+ const arrowheadTypes = [
12
+ "arrow",
13
+ "triangle",
14
+ "square",
15
+ "dot",
16
+ "pipe",
17
+ "diamond",
18
+ "inverted",
19
+ "bar",
20
+ "none"
21
+ ];
22
+ const ArrowShapeArrowheadStartStyle = StyleProp.defineEnum("tldraw:arrowheadStart", {
23
+ defaultValue: "none",
24
+ values: arrowheadTypes
25
+ });
26
+ const ArrowShapeArrowheadEndStyle = StyleProp.defineEnum("tldraw:arrowheadEnd", {
27
+ defaultValue: "arrow",
28
+ values: arrowheadTypes
29
+ });
30
+ const ArrowShapeTerminal = T.union("type", {
31
+ binding: T.object({
32
+ type: T.literal("binding"),
33
+ boundShapeId: shapeIdValidator,
34
+ normalizedAnchor: vec2dModelValidator,
35
+ isExact: T.boolean,
36
+ isPrecise: T.boolean
37
+ }),
38
+ point: T.object({
39
+ type: T.literal("point"),
40
+ x: T.number,
41
+ y: T.number
42
+ })
43
+ });
44
+ const arrowShapeProps = {
45
+ labelColor: DefaultLabelColorStyle,
46
+ color: DefaultColorStyle,
47
+ fill: DefaultFillStyle,
48
+ dash: DefaultDashStyle,
49
+ size: DefaultSizeStyle,
50
+ arrowheadStart: ArrowShapeArrowheadStartStyle,
51
+ arrowheadEnd: ArrowShapeArrowheadEndStyle,
52
+ font: DefaultFontStyle,
53
+ start: ArrowShapeTerminal,
54
+ end: ArrowShapeTerminal,
55
+ bend: T.number,
56
+ text: T.string
57
+ };
58
+ const ArrowMigrationVersions = {
59
+ AddLabelColor: 1,
60
+ AddIsPrecise: 2
61
+ };
62
+ const arrowShapeMigrations = defineMigrations({
63
+ currentVersion: ArrowMigrationVersions.AddIsPrecise,
64
+ migrators: {
65
+ [ArrowMigrationVersions.AddLabelColor]: {
66
+ up: (record) => {
67
+ return {
68
+ ...record,
69
+ props: {
70
+ ...record.props,
71
+ labelColor: "black"
72
+ }
73
+ };
74
+ },
75
+ down: (record) => {
76
+ const { labelColor: _, ...props } = record.props;
77
+ return {
78
+ ...record,
79
+ props
80
+ };
81
+ }
82
+ },
83
+ [ArrowMigrationVersions.AddIsPrecise]: {
84
+ up: (record) => {
85
+ const { start, end } = record.props;
86
+ return {
87
+ ...record,
88
+ props: {
89
+ ...record.props,
90
+ start: start.type === "binding" ? {
91
+ ...start,
92
+ isPrecise: !(start.normalizedAnchor.x === 0.5 && start.normalizedAnchor.y === 0.5)
93
+ } : start,
94
+ end: end.type === "binding" ? {
95
+ ...end,
96
+ isPrecise: !(end.normalizedAnchor.x === 0.5 && end.normalizedAnchor.y === 0.5)
97
+ } : end
98
+ }
99
+ };
100
+ },
101
+ down: (record) => {
102
+ const { start, end } = record.props;
103
+ const nStart = { ...start };
104
+ const nEnd = { ...end };
105
+ if (nStart.type === "binding") {
106
+ if (!nStart.isPrecise) {
107
+ nStart.normalizedAnchor = { x: 0.5, y: 0.5 };
108
+ }
109
+ delete nStart.isPrecise;
110
+ }
111
+ if (nEnd.type === "binding") {
112
+ if (!nEnd.isPrecise) {
113
+ nEnd.normalizedAnchor = { x: 0.5, y: 0.5 };
114
+ }
115
+ delete nEnd.isPrecise;
116
+ }
117
+ return {
118
+ ...record,
119
+ props: {
120
+ ...record.props,
121
+ start: nStart,
122
+ end: nEnd
123
+ }
124
+ };
125
+ }
126
+ }
127
+ }
128
+ });
129
+ export {
130
+ ArrowMigrationVersions,
131
+ ArrowShapeArrowheadEndStyle,
132
+ ArrowShapeArrowheadStartStyle,
133
+ arrowShapeMigrations,
134
+ arrowShapeProps
135
+ };
136
+ //# sourceMappingURL=TLArrowShape.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/shapes/TLArrowShape.ts"],
4
+ "sourcesContent": ["import { defineMigrations } from '@bigbluebutton/store'\nimport { T } from '@bigbluebutton/validate'\nimport { vec2dModelValidator } from '../misc/geometry-types'\nimport { StyleProp } from '../styles/StyleProp'\nimport { DefaultColorStyle, DefaultLabelColorStyle } from '../styles/TLColorStyle'\nimport { DefaultDashStyle } from '../styles/TLDashStyle'\nimport { DefaultFillStyle } from '../styles/TLFillStyle'\nimport { DefaultFontStyle } from '../styles/TLFontStyle'\nimport { DefaultSizeStyle } from '../styles/TLSizeStyle'\nimport { ShapePropsType, TLBaseShape, shapeIdValidator } from './TLBaseShape'\n\nconst arrowheadTypes = [\n\t'arrow',\n\t'triangle',\n\t'square',\n\t'dot',\n\t'pipe',\n\t'diamond',\n\t'inverted',\n\t'bar',\n\t'none',\n] as const\n\n/** @public */\nexport const ArrowShapeArrowheadStartStyle = StyleProp.defineEnum('tldraw:arrowheadStart', {\n\tdefaultValue: 'none',\n\tvalues: arrowheadTypes,\n})\n\n/** @public */\nexport const ArrowShapeArrowheadEndStyle = StyleProp.defineEnum('tldraw:arrowheadEnd', {\n\tdefaultValue: 'arrow',\n\tvalues: arrowheadTypes,\n})\n\n/** @public */\nexport type TLArrowShapeArrowheadStyle = T.TypeOf<typeof ArrowShapeArrowheadStartStyle>\n\n/** @public */\nconst ArrowShapeTerminal = T.union('type', {\n\tbinding: T.object({\n\t\ttype: T.literal('binding'),\n\t\tboundShapeId: shapeIdValidator,\n\t\tnormalizedAnchor: vec2dModelValidator,\n\t\tisExact: T.boolean,\n\t\tisPrecise: T.boolean,\n\t}),\n\tpoint: T.object({\n\t\ttype: T.literal('point'),\n\t\tx: T.number,\n\t\ty: T.number,\n\t}),\n})\n\n/** @public */\nexport type TLArrowShapeTerminal = T.TypeOf<typeof ArrowShapeTerminal>\n\n/** @public */\nexport const arrowShapeProps = {\n\tlabelColor: DefaultLabelColorStyle,\n\tcolor: DefaultColorStyle,\n\tfill: DefaultFillStyle,\n\tdash: DefaultDashStyle,\n\tsize: DefaultSizeStyle,\n\tarrowheadStart: ArrowShapeArrowheadStartStyle,\n\tarrowheadEnd: ArrowShapeArrowheadEndStyle,\n\tfont: DefaultFontStyle,\n\tstart: ArrowShapeTerminal,\n\tend: ArrowShapeTerminal,\n\tbend: T.number,\n\ttext: T.string,\n}\n\n/** @public */\nexport type TLArrowShapeProps = ShapePropsType<typeof arrowShapeProps>\n\n/** @public */\nexport type TLArrowShape = TLBaseShape<'arrow', TLArrowShapeProps>\n\nexport const ArrowMigrationVersions = {\n\tAddLabelColor: 1,\n\tAddIsPrecise: 2,\n} as const\n\n/** @internal */\nexport const arrowShapeMigrations = defineMigrations({\n\tcurrentVersion: ArrowMigrationVersions.AddIsPrecise,\n\tmigrators: {\n\t\t[ArrowMigrationVersions.AddLabelColor]: {\n\t\t\tup: (record) => {\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...record.props,\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: (record) => {\n\t\t\t\tconst { labelColor: _, ...props } = record.props\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t\tprops,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[ArrowMigrationVersions.AddIsPrecise]: {\n\t\t\tup: (record) => {\n\t\t\t\tconst { start, end } = record.props\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...record.props,\n\t\t\t\t\t\tstart:\n\t\t\t\t\t\t\t(start as TLArrowShapeTerminal).type === 'binding'\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t...start,\n\t\t\t\t\t\t\t\t\t\tisPrecise: !(\n\t\t\t\t\t\t\t\t\t\t\tstart.normalizedAnchor.x === 0.5 && start.normalizedAnchor.y === 0.5\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: start,\n\t\t\t\t\t\tend:\n\t\t\t\t\t\t\t(end as TLArrowShapeTerminal).type === 'binding'\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t...end,\n\t\t\t\t\t\t\t\t\t\tisPrecise: !(end.normalizedAnchor.x === 0.5 && end.normalizedAnchor.y === 0.5),\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: end,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: (record: any) => {\n\t\t\t\tconst { start, end } = record.props\n\t\t\t\tconst nStart = { ...start }\n\t\t\t\tconst nEnd = { ...end }\n\t\t\t\tif (nStart.type === 'binding') {\n\t\t\t\t\tif (!nStart.isPrecise) {\n\t\t\t\t\t\tnStart.normalizedAnchor = { x: 0.5, y: 0.5 }\n\t\t\t\t\t}\n\t\t\t\t\tdelete nStart.isPrecise\n\t\t\t\t}\n\t\t\t\tif (nEnd.type === 'binding') {\n\t\t\t\t\tif (!nEnd.isPrecise) {\n\t\t\t\t\t\tnEnd.normalizedAnchor = { x: 0.5, y: 0.5 }\n\t\t\t\t\t}\n\t\t\t\t\tdelete nEnd.isPrecise\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t...record,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...record.props,\n\t\t\t\t\t\tstart: nStart,\n\t\t\t\t\t\tend: nEnd,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n})\n"],
5
+ "mappings": "AAAA,SAAS,wBAAwB;AACjC,SAAS,SAAS;AAClB,SAAS,2BAA2B;AACpC,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB,8BAA8B;AAC1D,SAAS,wBAAwB;AACjC,SAAS,wBAAwB;AACjC,SAAS,wBAAwB;AACjC,SAAS,wBAAwB;AACjC,SAAsC,wBAAwB;AAE9D,MAAM,iBAAiB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAGO,MAAM,gCAAgC,UAAU,WAAW,yBAAyB;AAAA,EAC1F,cAAc;AAAA,EACd,QAAQ;AACT,CAAC;AAGM,MAAM,8BAA8B,UAAU,WAAW,uBAAuB;AAAA,EACtF,cAAc;AAAA,EACd,QAAQ;AACT,CAAC;AAMD,MAAM,qBAAqB,EAAE,MAAM,QAAQ;AAAA,EAC1C,SAAS,EAAE,OAAO;AAAA,IACjB,MAAM,EAAE,QAAQ,SAAS;AAAA,IACzB,cAAc;AAAA,IACd,kBAAkB;AAAA,IAClB,SAAS,EAAE;AAAA,IACX,WAAW,EAAE;AAAA,EACd,CAAC;AAAA,EACD,OAAO,EAAE,OAAO;AAAA,IACf,MAAM,EAAE,QAAQ,OAAO;AAAA,IACvB,GAAG,EAAE;AAAA,IACL,GAAG,EAAE;AAAA,EACN,CAAC;AACF,CAAC;AAMM,MAAM,kBAAkB;AAAA,EAC9B,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,MAAM,EAAE;AAAA,EACR,MAAM,EAAE;AACT;AAQO,MAAM,yBAAyB;AAAA,EACrC,eAAe;AAAA,EACf,cAAc;AACf;AAGO,MAAM,uBAAuB,iBAAiB;AAAA,EACpD,gBAAgB,uBAAuB;AAAA,EACvC,WAAW;AAAA,IACV,CAAC,uBAAuB,aAAa,GAAG;AAAA,MACvC,IAAI,CAAC,WAAW;AACf,eAAO;AAAA,UACN,GAAG;AAAA,UACH,OAAO;AAAA,YACN,GAAG,OAAO;AAAA,YACV,YAAY;AAAA,UACb;AAAA,QACD;AAAA,MACD;AAAA,MACA,MAAM,CAAC,WAAW;AACjB,cAAM,EAAE,YAAY,GAAG,GAAG,MAAM,IAAI,OAAO;AAC3C,eAAO;AAAA,UACN,GAAG;AAAA,UACH;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAC,uBAAuB,YAAY,GAAG;AAAA,MACtC,IAAI,CAAC,WAAW;AACf,cAAM,EAAE,OAAO,IAAI,IAAI,OAAO;AAC9B,eAAO;AAAA,UACN,GAAG;AAAA,UACH,OAAO;AAAA,YACN,GAAG,OAAO;AAAA,YACV,OACE,MAA+B,SAAS,YACtC;AAAA,cACA,GAAG;AAAA,cACH,WAAW,EACV,MAAM,iBAAiB,MAAM,OAAO,MAAM,iBAAiB,MAAM;AAAA,YAElE,IACA;AAAA,YACJ,KACE,IAA6B,SAAS,YACpC;AAAA,cACA,GAAG;AAAA,cACH,WAAW,EAAE,IAAI,iBAAiB,MAAM,OAAO,IAAI,iBAAiB,MAAM;AAAA,YAC1E,IACA;AAAA,UACL;AAAA,QACD;AAAA,MACD;AAAA,MACA,MAAM,CAAC,WAAgB;AACtB,cAAM,EAAE,OAAO,IAAI,IAAI,OAAO;AAC9B,cAAM,SAAS,EAAE,GAAG,MAAM;AAC1B,cAAM,OAAO,EAAE,GAAG,IAAI;AACtB,YAAI,OAAO,SAAS,WAAW;AAC9B,cAAI,CAAC,OAAO,WAAW;AACtB,mBAAO,mBAAmB,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,UAC5C;AACA,iBAAO,OAAO;AAAA,QACf;AACA,YAAI,KAAK,SAAS,WAAW;AAC5B,cAAI,CAAC,KAAK,WAAW;AACpB,iBAAK,mBAAmB,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,UAC1C;AACA,iBAAO,KAAK;AAAA,QACb;AACA,eAAO;AAAA,UACN,GAAG;AAAA,UACH,OAAO;AAAA,YACN,GAAG,OAAO;AAAA,YACV,OAAO;AAAA,YACP,KAAK;AAAA,UACN;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,32 @@
1
+ import { T } from "@bigbluebutton/validate";
2
+ import { opacityValidator } from "../misc/TLOpacity.mjs";
3
+ import { idValidator } from "../misc/id-validator.mjs";
4
+ const parentIdValidator = T.string.refine((id) => {
5
+ if (!id.startsWith("page:") && !id.startsWith("shape:")) {
6
+ throw new Error('Parent ID must start with "page:" or "shape:"');
7
+ }
8
+ return id;
9
+ });
10
+ const shapeIdValidator = idValidator("shape");
11
+ function createShapeValidator(type, props, meta) {
12
+ return T.object({
13
+ id: shapeIdValidator,
14
+ typeName: T.literal("shape"),
15
+ x: T.number,
16
+ y: T.number,
17
+ rotation: T.number,
18
+ index: T.string,
19
+ parentId: parentIdValidator,
20
+ type: T.literal(type),
21
+ isLocked: T.boolean,
22
+ opacity: opacityValidator,
23
+ props: props ? T.object(props) : T.jsonValue,
24
+ meta: meta ? T.object(meta) : T.jsonValue
25
+ });
26
+ }
27
+ export {
28
+ createShapeValidator,
29
+ parentIdValidator,
30
+ shapeIdValidator
31
+ };
32
+ //# sourceMappingURL=TLBaseShape.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/shapes/TLBaseShape.ts"],
4
+ "sourcesContent": ["import { BaseRecord } from '@bigbluebutton/store'\nimport { Expand, JsonObject } from '@bigbluebutton/utils'\nimport { T } from '@bigbluebutton/validate'\nimport { TLOpacityType, opacityValidator } from '../misc/TLOpacity'\nimport { idValidator } from '../misc/id-validator'\nimport { TLParentId, TLShapeId } from '../records/TLShape'\n\n/** @public */\nexport interface TLBaseShape<Type extends string, Props extends object>\n\textends BaseRecord<'shape', TLShapeId> {\n\ttype: Type\n\tx: number\n\ty: number\n\trotation: number\n\tindex: string\n\tparentId: TLParentId\n\tisLocked: boolean\n\topacity: TLOpacityType\n\tprops: Props\n\tmeta: JsonObject\n}\n\n/** @public */\nexport const parentIdValidator = T.string.refine((id) => {\n\tif (!id.startsWith('page:') && !id.startsWith('shape:')) {\n\t\tthrow new Error('Parent ID must start with \"page:\" or \"shape:\"')\n\t}\n\treturn id as TLParentId\n})\n\n/** @public */\nexport const shapeIdValidator = idValidator<TLShapeId>('shape')\n\n/** @public */\nexport function createShapeValidator<\n\tType extends string,\n\tProps extends JsonObject,\n\tMeta extends JsonObject\n>(\n\ttype: Type,\n\tprops?: { [K in keyof Props]: T.Validatable<Props[K]> },\n\tmeta?: { [K in keyof Meta]: T.Validatable<Meta[K]> }\n) {\n\treturn T.object<TLBaseShape<Type, Props>>({\n\t\tid: shapeIdValidator,\n\t\ttypeName: T.literal('shape'),\n\t\tx: T.number,\n\t\ty: T.number,\n\t\trotation: T.number,\n\t\tindex: T.string,\n\t\tparentId: parentIdValidator,\n\t\ttype: T.literal(type),\n\t\tisLocked: T.boolean,\n\t\topacity: opacityValidator,\n\t\tprops: props ? T.object(props) : (T.jsonValue as T.ObjectValidator<Props>),\n\t\tmeta: meta ? T.object(meta) : (T.jsonValue as T.ObjectValidator<Meta>),\n\t})\n}\n\n/** @public */\nexport type ShapeProps<Shape extends TLBaseShape<any, any>> = {\n\t[K in keyof Shape['props']]: T.Validatable<Shape['props'][K]>\n}\n\nexport type ShapePropsType<Config extends Record<string, T.Validatable<any>>> = Expand<{\n\t[K in keyof Config]: T.TypeOf<Config[K]>\n}>\n"],
5
+ "mappings": "AAEA,SAAS,SAAS;AAClB,SAAwB,wBAAwB;AAChD,SAAS,mBAAmB;AAmBrB,MAAM,oBAAoB,EAAE,OAAO,OAAO,CAAC,OAAO;AACxD,MAAI,CAAC,GAAG,WAAW,OAAO,KAAK,CAAC,GAAG,WAAW,QAAQ,GAAG;AACxD,UAAM,IAAI,MAAM,+CAA+C;AAAA,EAChE;AACA,SAAO;AACR,CAAC;AAGM,MAAM,mBAAmB,YAAuB,OAAO;AAGvD,SAAS,qBAKf,MACA,OACA,MACC;AACD,SAAO,EAAE,OAAiC;AAAA,IACzC,IAAI;AAAA,IACJ,UAAU,EAAE,QAAQ,OAAO;AAAA,IAC3B,GAAG,EAAE;AAAA,IACL,GAAG,EAAE;AAAA,IACL,UAAU,EAAE;AAAA,IACZ,OAAO,EAAE;AAAA,IACT,UAAU;AAAA,IACV,MAAM,EAAE,QAAQ,IAAI;AAAA,IACpB,UAAU,EAAE;AAAA,IACZ,SAAS;AAAA,IACT,OAAO,QAAQ,EAAE,OAAO,KAAK,IAAK,EAAE;AAAA,IACpC,MAAM,OAAO,EAAE,OAAO,IAAI,IAAK,EAAE;AAAA,EAClC,CAAC;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,37 @@
1
+ import { defineMigrations } from "@bigbluebutton/store";
2
+ import { T } from "@bigbluebutton/validate";
3
+ import { assetIdValidator } from "../assets/TLBaseAsset.mjs";
4
+ const bookmarkShapeProps = {
5
+ w: T.nonZeroNumber,
6
+ h: T.nonZeroNumber,
7
+ assetId: assetIdValidator.nullable(),
8
+ url: T.string
9
+ };
10
+ const Versions = {
11
+ NullAssetId: 1
12
+ };
13
+ const bookmarkShapeMigrations = defineMigrations({
14
+ currentVersion: Versions.NullAssetId,
15
+ migrators: {
16
+ [Versions.NullAssetId]: {
17
+ up: (shape) => {
18
+ if (shape.props.assetId === void 0) {
19
+ return { ...shape, props: { ...shape.props, assetId: null } };
20
+ }
21
+ return shape;
22
+ },
23
+ down: (shape) => {
24
+ if (shape.props.assetId === null) {
25
+ const { assetId: _, ...props } = shape.props;
26
+ return { ...shape, props };
27
+ }
28
+ return shape;
29
+ }
30
+ }
31
+ }
32
+ });
33
+ export {
34
+ bookmarkShapeMigrations,
35
+ bookmarkShapeProps
36
+ };
37
+ //# sourceMappingURL=TLBookmarkShape.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/shapes/TLBookmarkShape.ts"],
4
+ "sourcesContent": ["import { defineMigrations } from '@bigbluebutton/store'\nimport { T } from '@bigbluebutton/validate'\nimport { assetIdValidator } from '../assets/TLBaseAsset'\nimport { ShapePropsType, TLBaseShape } from './TLBaseShape'\n\n/** @public */\nexport const bookmarkShapeProps = {\n\tw: T.nonZeroNumber,\n\th: T.nonZeroNumber,\n\tassetId: assetIdValidator.nullable(),\n\turl: T.string,\n}\n\n/** @public */\nexport type TLBookmarkShapeProps = ShapePropsType<typeof bookmarkShapeProps>\n\n/** @public */\nexport type TLBookmarkShape = TLBaseShape<'bookmark', TLBookmarkShapeProps>\n\nconst Versions = {\n\tNullAssetId: 1,\n} as const\n\n/** @internal */\nexport const bookmarkShapeMigrations = defineMigrations({\n\tcurrentVersion: Versions.NullAssetId,\n\tmigrators: {\n\t\t[Versions.NullAssetId]: {\n\t\t\tup: (shape: TLBookmarkShape) => {\n\t\t\t\tif (shape.props.assetId === undefined) {\n\t\t\t\t\treturn { ...shape, props: { ...shape.props, assetId: null } } as typeof shape\n\t\t\t\t}\n\t\t\t\treturn shape\n\t\t\t},\n\t\t\tdown: (shape: TLBookmarkShape) => {\n\t\t\t\tif (shape.props.assetId === null) {\n\t\t\t\t\tconst { assetId: _, ...props } = shape.props\n\t\t\t\t\treturn { ...shape, props } as typeof shape\n\t\t\t\t}\n\t\t\t\treturn shape\n\t\t\t},\n\t\t},\n\t},\n})\n"],
5
+ "mappings": "AAAA,SAAS,wBAAwB;AACjC,SAAS,SAAS;AAClB,SAAS,wBAAwB;AAI1B,MAAM,qBAAqB;AAAA,EACjC,GAAG,EAAE;AAAA,EACL,GAAG,EAAE;AAAA,EACL,SAAS,iBAAiB,SAAS;AAAA,EACnC,KAAK,EAAE;AACR;AAQA,MAAM,WAAW;AAAA,EAChB,aAAa;AACd;AAGO,MAAM,0BAA0B,iBAAiB;AAAA,EACvD,gBAAgB,SAAS;AAAA,EACzB,WAAW;AAAA,IACV,CAAC,SAAS,WAAW,GAAG;AAAA,MACvB,IAAI,CAAC,UAA2B;AAC/B,YAAI,MAAM,MAAM,YAAY,QAAW;AACtC,iBAAO,EAAE,GAAG,OAAO,OAAO,EAAE,GAAG,MAAM,OAAO,SAAS,KAAK,EAAE;AAAA,QAC7D;AACA,eAAO;AAAA,MACR;AAAA,MACA,MAAM,CAAC,UAA2B;AACjC,YAAI,MAAM,MAAM,YAAY,MAAM;AACjC,gBAAM,EAAE,SAAS,GAAG,GAAG,MAAM,IAAI,MAAM;AACvC,iBAAO,EAAE,GAAG,OAAO,MAAM;AAAA,QAC1B;AACA,eAAO;AAAA,MACR;AAAA,IACD;AAAA,EACD;AACD,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,69 @@
1
+ import { defineMigrations } from "@bigbluebutton/store";
2
+ import { T } from "@bigbluebutton/validate";
3
+ import { vec2dModelValidator } from "../misc/geometry-types.mjs";
4
+ import { DefaultColorStyle } from "../styles/TLColorStyle.mjs";
5
+ import { DefaultDashStyle } from "../styles/TLDashStyle.mjs";
6
+ import { DefaultFillStyle } from "../styles/TLFillStyle.mjs";
7
+ import { DefaultSizeStyle } from "../styles/TLSizeStyle.mjs";
8
+ const DrawShapeSegment = T.object({
9
+ type: T.literalEnum("free", "straight"),
10
+ points: T.arrayOf(vec2dModelValidator)
11
+ });
12
+ const drawShapeProps = {
13
+ color: DefaultColorStyle,
14
+ fill: DefaultFillStyle,
15
+ dash: DefaultDashStyle,
16
+ size: DefaultSizeStyle,
17
+ segments: T.arrayOf(DrawShapeSegment),
18
+ isComplete: T.boolean,
19
+ isClosed: T.boolean,
20
+ isPen: T.boolean
21
+ };
22
+ const Versions = {
23
+ AddInPen: 1
24
+ };
25
+ const drawShapeMigrations = defineMigrations({
26
+ currentVersion: Versions.AddInPen,
27
+ migrators: {
28
+ [Versions.AddInPen]: {
29
+ up: (shape) => {
30
+ const { points } = shape.props.segments[0];
31
+ if (points.length === 0) {
32
+ return {
33
+ ...shape,
34
+ props: {
35
+ ...shape.props,
36
+ isPen: false
37
+ }
38
+ };
39
+ }
40
+ let isPen = !(points[0].z === 0 || points[0].z === 0.5);
41
+ if (points[1]) {
42
+ isPen = isPen && !(points[1].z === 0 || points[1].z === 0.5);
43
+ }
44
+ return {
45
+ ...shape,
46
+ props: {
47
+ ...shape.props,
48
+ isPen
49
+ }
50
+ };
51
+ },
52
+ down: (shape) => {
53
+ const { isPen: _isPen, ...propsWithOutIsPen } = shape.props;
54
+ return {
55
+ ...shape,
56
+ props: {
57
+ ...propsWithOutIsPen
58
+ }
59
+ };
60
+ }
61
+ }
62
+ }
63
+ });
64
+ export {
65
+ DrawShapeSegment,
66
+ drawShapeMigrations,
67
+ drawShapeProps
68
+ };
69
+ //# sourceMappingURL=TLDrawShape.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/shapes/TLDrawShape.ts"],
4
+ "sourcesContent": ["import { defineMigrations } from '@bigbluebutton/store'\nimport { T } from '@bigbluebutton/validate'\nimport { vec2dModelValidator } from '../misc/geometry-types'\nimport { DefaultColorStyle } from '../styles/TLColorStyle'\nimport { DefaultDashStyle } from '../styles/TLDashStyle'\nimport { DefaultFillStyle } from '../styles/TLFillStyle'\nimport { DefaultSizeStyle } from '../styles/TLSizeStyle'\nimport { ShapePropsType, TLBaseShape } from './TLBaseShape'\n\nexport const DrawShapeSegment = T.object({\n\ttype: T.literalEnum('free', 'straight'),\n\tpoints: T.arrayOf(vec2dModelValidator),\n})\n\n/** @public */\nexport type TLDrawShapeSegment = T.TypeOf<typeof DrawShapeSegment>\n\n/** @public */\nexport const drawShapeProps = {\n\tcolor: DefaultColorStyle,\n\tfill: DefaultFillStyle,\n\tdash: DefaultDashStyle,\n\tsize: DefaultSizeStyle,\n\tsegments: T.arrayOf(DrawShapeSegment),\n\tisComplete: T.boolean,\n\tisClosed: T.boolean,\n\tisPen: T.boolean,\n}\n\n/** @public */\nexport type TLDrawShapeProps = ShapePropsType<typeof drawShapeProps>\n\n/** @public */\nexport type TLDrawShape = TLBaseShape<'draw', TLDrawShapeProps>\n\nconst Versions = {\n\tAddInPen: 1,\n} as const\n\n/** @internal */\nexport const drawShapeMigrations = defineMigrations({\n\tcurrentVersion: Versions.AddInPen,\n\tmigrators: {\n\t\t[Versions.AddInPen]: {\n\t\t\tup: (shape) => {\n\t\t\t\t// Rather than checking to see whether the shape is a pen at runtime,\n\t\t\t\t// from now on we're going to use the type of device reported to us\n\t\t\t\t// as well as the pressure data received; but for existing shapes we\n\t\t\t\t// need to check the pressure data to see if it's a pen or not.\n\n\t\t\t\tconst { points } = shape.props.segments[0]\n\n\t\t\t\tif (points.length === 0) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...shape,\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t...shape.props,\n\t\t\t\t\t\t\tisPen: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet isPen = !(points[0].z === 0 || points[0].z === 0.5)\n\n\t\t\t\tif (points[1]) {\n\t\t\t\t\t// Double check if we have a second point (we probably should)\n\t\t\t\t\tisPen = isPen && !(points[1].z === 0 || points[1].z === 0.5)\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\t...shape,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...shape.props,\n\t\t\t\t\t\tisPen,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: (shape) => {\n\t\t\t\tconst { isPen: _isPen, ...propsWithOutIsPen } = shape.props\n\t\t\t\treturn {\n\t\t\t\t\t...shape,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...propsWithOutIsPen,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n})\n"],
5
+ "mappings": "AAAA,SAAS,wBAAwB;AACjC,SAAS,SAAS;AAClB,SAAS,2BAA2B;AACpC,SAAS,yBAAyB;AAClC,SAAS,wBAAwB;AACjC,SAAS,wBAAwB;AACjC,SAAS,wBAAwB;AAG1B,MAAM,mBAAmB,EAAE,OAAO;AAAA,EACxC,MAAM,EAAE,YAAY,QAAQ,UAAU;AAAA,EACtC,QAAQ,EAAE,QAAQ,mBAAmB;AACtC,CAAC;AAMM,MAAM,iBAAiB;AAAA,EAC7B,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU,EAAE,QAAQ,gBAAgB;AAAA,EACpC,YAAY,EAAE;AAAA,EACd,UAAU,EAAE;AAAA,EACZ,OAAO,EAAE;AACV;AAQA,MAAM,WAAW;AAAA,EAChB,UAAU;AACX;AAGO,MAAM,sBAAsB,iBAAiB;AAAA,EACnD,gBAAgB,SAAS;AAAA,EACzB,WAAW;AAAA,IACV,CAAC,SAAS,QAAQ,GAAG;AAAA,MACpB,IAAI,CAAC,UAAU;AAMd,cAAM,EAAE,OAAO,IAAI,MAAM,MAAM,SAAS,CAAC;AAEzC,YAAI,OAAO,WAAW,GAAG;AACxB,iBAAO;AAAA,YACN,GAAG;AAAA,YACH,OAAO;AAAA,cACN,GAAG,MAAM;AAAA,cACT,OAAO;AAAA,YACR;AAAA,UACD;AAAA,QACD;AAEA,YAAI,QAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,EAAE,MAAM;AAEnD,YAAI,OAAO,CAAC,GAAG;AAEd,kBAAQ,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,EAAE,MAAM;AAAA,QACzD;AAEA,eAAO;AAAA,UACN,GAAG;AAAA,UACH,OAAO;AAAA,YACN,GAAG,MAAM;AAAA,YACT;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,MACA,MAAM,CAAC,UAAU;AAChB,cAAM,EAAE,OAAO,QAAQ,GAAG,kBAAkB,IAAI,MAAM;AACtD,eAAO;AAAA,UACN,GAAG;AAAA,UACH,OAAO;AAAA,YACN,GAAG;AAAA,UACJ;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD,CAAC;",
6
+ "names": []
7
+ }