@bigbluebutton/tlschema 2.0.0-alpha.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/dist-cjs/TLStore.js +133 -0
- package/dist-cjs/TLStore.js.map +7 -0
- package/dist-cjs/assets/TLBaseAsset.js +37 -0
- package/dist-cjs/assets/TLBaseAsset.js.map +7 -0
- package/dist-cjs/assets/TLBookmarkAsset.js +38 -0
- package/dist-cjs/assets/TLBookmarkAsset.js.map +7 -0
- package/dist-cjs/assets/TLImageAsset.js +76 -0
- package/dist-cjs/assets/TLImageAsset.js.map +7 -0
- package/dist-cjs/assets/TLVideoAsset.js +76 -0
- package/dist-cjs/assets/TLVideoAsset.js.map +7 -0
- package/dist-cjs/createPresenceStateDerivation.js +68 -0
- package/dist-cjs/createPresenceStateDerivation.js.map +7 -0
- package/dist-cjs/createTLSchema.js +68 -0
- package/dist-cjs/createTLSchema.js.map +7 -0
- package/dist-cjs/index.d.ts +1414 -0
- package/dist-cjs/index.js +142 -0
- package/dist-cjs/index.js.map +7 -0
- package/dist-cjs/misc/TLColor.js +36 -0
- package/dist-cjs/misc/TLColor.js.map +7 -0
- package/dist-cjs/misc/TLCursor.js +55 -0
- package/dist-cjs/misc/TLCursor.js.map +7 -0
- package/dist-cjs/misc/TLHandle.js +36 -0
- package/dist-cjs/misc/TLHandle.js.map +7 -0
- package/dist-cjs/misc/TLOpacity.js +30 -0
- package/dist-cjs/misc/TLOpacity.js.map +7 -0
- package/dist-cjs/misc/TLScribble.js +40 -0
- package/dist-cjs/misc/TLScribble.js.map +7 -0
- package/dist-cjs/misc/geometry-types.js +37 -0
- package/dist-cjs/misc/geometry-types.js.map +7 -0
- package/dist-cjs/misc/id-validator.js +33 -0
- package/dist-cjs/misc/id-validator.js.map +7 -0
- package/dist-cjs/records/TLAsset.js +74 -0
- package/dist-cjs/records/TLAsset.js.map +7 -0
- package/dist-cjs/records/TLCamera.js +74 -0
- package/dist-cjs/records/TLCamera.js.map +7 -0
- package/dist-cjs/records/TLDocument.js +82 -0
- package/dist-cjs/records/TLDocument.js.map +7 -0
- package/dist-cjs/records/TLInstance.js +452 -0
- package/dist-cjs/records/TLInstance.js.map +7 -0
- package/dist-cjs/records/TLPage.js +74 -0
- package/dist-cjs/records/TLPage.js.map +7 -0
- package/dist-cjs/records/TLPageState.js +209 -0
- package/dist-cjs/records/TLPageState.js.map +7 -0
- package/dist-cjs/records/TLPointer.js +76 -0
- package/dist-cjs/records/TLPointer.js.map +7 -0
- package/dist-cjs/records/TLPresence.js +170 -0
- package/dist-cjs/records/TLPresence.js.map +7 -0
- package/dist-cjs/records/TLRecord.js +17 -0
- package/dist-cjs/records/TLRecord.js.map +7 -0
- package/dist-cjs/records/TLShape.js +147 -0
- package/dist-cjs/records/TLShape.js.map +7 -0
- package/dist-cjs/shapes/TLArrowShape.js +156 -0
- package/dist-cjs/shapes/TLArrowShape.js.map +7 -0
- package/dist-cjs/shapes/TLBaseShape.js +52 -0
- package/dist-cjs/shapes/TLBaseShape.js.map +7 -0
- package/dist-cjs/shapes/TLBookmarkShape.js +57 -0
- package/dist-cjs/shapes/TLBookmarkShape.js.map +7 -0
- package/dist-cjs/shapes/TLDrawShape.js +89 -0
- package/dist-cjs/shapes/TLDrawShape.js.map +7 -0
- package/dist-cjs/shapes/TLEmbedShape.js +709 -0
- package/dist-cjs/shapes/TLEmbedShape.js.map +7 -0
- package/dist-cjs/shapes/TLFrameShape.js +33 -0
- package/dist-cjs/shapes/TLFrameShape.js.map +7 -0
- package/dist-cjs/shapes/TLGeoShape.js +230 -0
- package/dist-cjs/shapes/TLGeoShape.js.map +7 -0
- package/dist-cjs/shapes/TLGroupShape.js +28 -0
- package/dist-cjs/shapes/TLGroupShape.js.map +7 -0
- package/dist-cjs/shapes/TLHighlightShape.js +38 -0
- package/dist-cjs/shapes/TLHighlightShape.js.map +7 -0
- package/dist-cjs/shapes/TLImageShape.js +69 -0
- package/dist-cjs/shapes/TLImageShape.js.map +7 -0
- package/dist-cjs/shapes/TLLineShape.js +70 -0
- package/dist-cjs/shapes/TLLineShape.js.map +7 -0
- package/dist-cjs/shapes/TLNoteShape.js +144 -0
- package/dist-cjs/shapes/TLNoteShape.js.map +7 -0
- package/dist-cjs/shapes/TLTextShape.js +67 -0
- package/dist-cjs/shapes/TLTextShape.js.map +7 -0
- package/dist-cjs/shapes/TLVideoShape.js +53 -0
- package/dist-cjs/shapes/TLVideoShape.js.map +7 -0
- package/dist-cjs/store-migrations.js +81 -0
- package/dist-cjs/store-migrations.js.map +7 -0
- package/dist-cjs/styles/StyleProp.js +94 -0
- package/dist-cjs/styles/StyleProp.js.map +7 -0
- package/dist-cjs/styles/TLColorStyle.js +283 -0
- package/dist-cjs/styles/TLColorStyle.js.map +7 -0
- package/dist-cjs/styles/TLDashStyle.js +29 -0
- package/dist-cjs/styles/TLDashStyle.js.map +7 -0
- package/dist-cjs/styles/TLFillStyle.js +29 -0
- package/dist-cjs/styles/TLFillStyle.js.map +7 -0
- package/dist-cjs/styles/TLFontStyle.js +36 -0
- package/dist-cjs/styles/TLFontStyle.js.map +7 -0
- package/dist-cjs/styles/TLHorizontalAlignStyle.js +29 -0
- package/dist-cjs/styles/TLHorizontalAlignStyle.js.map +7 -0
- package/dist-cjs/styles/TLSizeStyle.js +29 -0
- package/dist-cjs/styles/TLSizeStyle.js.map +7 -0
- package/dist-cjs/styles/TLVerticalAlignStyle.js +29 -0
- package/dist-cjs/styles/TLVerticalAlignStyle.js.map +7 -0
- package/dist-cjs/translations/languages.js +59 -0
- package/dist-cjs/translations/languages.js.map +7 -0
- package/dist-cjs/translations/translations.js +63 -0
- package/dist-cjs/translations/translations.js.map +7 -0
- package/dist-cjs/util-types.js +17 -0
- package/dist-cjs/util-types.js.map +7 -0
- package/dist-esm/TLStore.mjs +113 -0
- package/dist-esm/TLStore.mjs.map +7 -0
- package/dist-esm/assets/TLBaseAsset.mjs +17 -0
- package/dist-esm/assets/TLBaseAsset.mjs.map +7 -0
- package/dist-esm/assets/TLBookmarkAsset.mjs +18 -0
- package/dist-esm/assets/TLBookmarkAsset.mjs.map +7 -0
- package/dist-esm/assets/TLImageAsset.mjs +56 -0
- package/dist-esm/assets/TLImageAsset.mjs.map +7 -0
- package/dist-esm/assets/TLVideoAsset.mjs +56 -0
- package/dist-esm/assets/TLVideoAsset.mjs.map +7 -0
- package/dist-esm/createPresenceStateDerivation.mjs +48 -0
- package/dist-esm/createPresenceStateDerivation.mjs.map +7 -0
- package/dist-esm/createTLSchema.mjs +48 -0
- package/dist-esm/createTLSchema.mjs.map +7 -0
- package/dist-esm/index.d.mts +1414 -0
- package/dist-esm/index.mjs +193 -0
- package/dist-esm/index.mjs.map +7 -0
- package/dist-esm/misc/TLColor.mjs +16 -0
- package/dist-esm/misc/TLColor.mjs.map +7 -0
- package/dist-esm/misc/TLCursor.mjs +35 -0
- package/dist-esm/misc/TLCursor.mjs.map +7 -0
- package/dist-esm/misc/TLHandle.mjs +16 -0
- package/dist-esm/misc/TLHandle.mjs.map +7 -0
- package/dist-esm/misc/TLOpacity.mjs +10 -0
- package/dist-esm/misc/TLOpacity.mjs.map +7 -0
- package/dist-esm/misc/TLScribble.mjs +20 -0
- package/dist-esm/misc/TLScribble.mjs.map +7 -0
- package/dist-esm/misc/geometry-types.mjs +17 -0
- package/dist-esm/misc/geometry-types.mjs.map +7 -0
- package/dist-esm/misc/id-validator.mjs +13 -0
- package/dist-esm/misc/id-validator.mjs.map +7 -0
- package/dist-esm/records/TLAsset.mjs +57 -0
- package/dist-esm/records/TLAsset.mjs.map +7 -0
- package/dist-esm/records/TLCamera.mjs +54 -0
- package/dist-esm/records/TLCamera.mjs.map +7 -0
- package/dist-esm/records/TLDocument.mjs +62 -0
- package/dist-esm/records/TLDocument.mjs.map +7 -0
- package/dist-esm/records/TLInstance.mjs +432 -0
- package/dist-esm/records/TLInstance.mjs.map +7 -0
- package/dist-esm/records/TLPage.mjs +54 -0
- package/dist-esm/records/TLPage.mjs.map +7 -0
- package/dist-esm/records/TLPageState.mjs +189 -0
- package/dist-esm/records/TLPageState.mjs.map +7 -0
- package/dist-esm/records/TLPointer.mjs +56 -0
- package/dist-esm/records/TLPointer.mjs.map +7 -0
- package/dist-esm/records/TLPresence.mjs +150 -0
- package/dist-esm/records/TLPresence.mjs.map +7 -0
- package/dist-esm/records/TLRecord.mjs +1 -0
- package/dist-esm/records/TLRecord.mjs.map +7 -0
- package/dist-esm/records/TLShape.mjs +127 -0
- package/dist-esm/records/TLShape.mjs.map +7 -0
- package/dist-esm/shapes/TLArrowShape.mjs +136 -0
- package/dist-esm/shapes/TLArrowShape.mjs.map +7 -0
- package/dist-esm/shapes/TLBaseShape.mjs +32 -0
- package/dist-esm/shapes/TLBaseShape.mjs.map +7 -0
- package/dist-esm/shapes/TLBookmarkShape.mjs +37 -0
- package/dist-esm/shapes/TLBookmarkShape.mjs.map +7 -0
- package/dist-esm/shapes/TLDrawShape.mjs +69 -0
- package/dist-esm/shapes/TLDrawShape.mjs.map +7 -0
- package/dist-esm/shapes/TLEmbedShape.mjs +689 -0
- package/dist-esm/shapes/TLEmbedShape.mjs.map +7 -0
- package/dist-esm/shapes/TLFrameShape.mjs +13 -0
- package/dist-esm/shapes/TLFrameShape.mjs.map +7 -0
- package/dist-esm/shapes/TLGeoShape.mjs +212 -0
- package/dist-esm/shapes/TLGeoShape.mjs.map +7 -0
- package/dist-esm/shapes/TLGroupShape.mjs +8 -0
- package/dist-esm/shapes/TLGroupShape.mjs.map +7 -0
- package/dist-esm/shapes/TLHighlightShape.mjs +18 -0
- package/dist-esm/shapes/TLHighlightShape.mjs.map +7 -0
- package/dist-esm/shapes/TLImageShape.mjs +49 -0
- package/dist-esm/shapes/TLImageShape.mjs.map +7 -0
- package/dist-esm/shapes/TLLineShape.mjs +50 -0
- package/dist-esm/shapes/TLLineShape.mjs.map +7 -0
- package/dist-esm/shapes/TLNoteShape.mjs +126 -0
- package/dist-esm/shapes/TLNoteShape.mjs.map +7 -0
- package/dist-esm/shapes/TLTextShape.mjs +47 -0
- package/dist-esm/shapes/TLTextShape.mjs.map +7 -0
- package/dist-esm/shapes/TLVideoShape.mjs +33 -0
- package/dist-esm/shapes/TLVideoShape.mjs.map +7 -0
- package/dist-esm/store-migrations.mjs +61 -0
- package/dist-esm/store-migrations.mjs.map +7 -0
- package/dist-esm/styles/StyleProp.mjs +74 -0
- package/dist-esm/styles/StyleProp.mjs.map +7 -0
- package/dist-esm/styles/TLColorStyle.mjs +263 -0
- package/dist-esm/styles/TLColorStyle.mjs.map +7 -0
- package/dist-esm/styles/TLDashStyle.mjs +9 -0
- package/dist-esm/styles/TLDashStyle.mjs.map +7 -0
- package/dist-esm/styles/TLFillStyle.mjs +9 -0
- package/dist-esm/styles/TLFillStyle.mjs.map +7 -0
- package/dist-esm/styles/TLFontStyle.mjs +16 -0
- package/dist-esm/styles/TLFontStyle.mjs.map +7 -0
- package/dist-esm/styles/TLHorizontalAlignStyle.mjs +9 -0
- package/dist-esm/styles/TLHorizontalAlignStyle.mjs.map +7 -0
- package/dist-esm/styles/TLSizeStyle.mjs +9 -0
- package/dist-esm/styles/TLSizeStyle.mjs.map +7 -0
- package/dist-esm/styles/TLVerticalAlignStyle.mjs +9 -0
- package/dist-esm/styles/TLVerticalAlignStyle.mjs.map +7 -0
- package/dist-esm/translations/languages.mjs +39 -0
- package/dist-esm/translations/languages.mjs.map +7 -0
- package/dist-esm/translations/translations.mjs +43 -0
- package/dist-esm/translations/translations.mjs.map +7 -0
- package/dist-esm/util-types.mjs +1 -0
- package/dist-esm/util-types.mjs.map +7 -0
- package/package.json +64 -0
- package/src/TLStore.ts +160 -0
- package/src/assets/TLBaseAsset.ts +44 -0
- package/src/assets/TLBookmarkAsset.ts +31 -0
- package/src/assets/TLImageAsset.ts +73 -0
- package/src/assets/TLVideoAsset.ts +73 -0
- package/src/createPresenceStateDerivation.ts +53 -0
- package/src/createTLSchema.ts +65 -0
- package/src/index.ts +168 -0
- package/src/migrations.test.ts +1768 -0
- package/src/misc/TLColor.ts +28 -0
- package/src/misc/TLCursor.ts +54 -0
- package/src/misc/TLHandle.ts +41 -0
- package/src/misc/TLOpacity.ts +11 -0
- package/src/misc/TLScribble.ts +39 -0
- package/src/misc/geometry-types.ts +37 -0
- package/src/misc/id-validator.ts +14 -0
- package/src/records/TLAsset.ts +80 -0
- package/src/records/TLCamera.ts +74 -0
- package/src/records/TLDocument.ts +77 -0
- package/src/records/TLInstance.ts +493 -0
- package/src/records/TLPage.ts +72 -0
- package/src/records/TLPageState.ts +216 -0
- package/src/records/TLPointer.ts +74 -0
- package/src/records/TLPresence.ts +179 -0
- package/src/records/TLRecord.ts +21 -0
- package/src/records/TLShape.ts +214 -0
- package/src/shapes/TLArrowShape.ts +160 -0
- package/src/shapes/TLBaseShape.ts +67 -0
- package/src/shapes/TLBookmarkShape.ts +44 -0
- package/src/shapes/TLDrawShape.ts +89 -0
- package/src/shapes/TLEmbedShape.ts +754 -0
- package/src/shapes/TLFrameShape.ts +18 -0
- package/src/shapes/TLGeoShape.ts +226 -0
- package/src/shapes/TLGroupShape.ts +14 -0
- package/src/shapes/TLHighlightShape.ts +24 -0
- package/src/shapes/TLImageShape.ts +59 -0
- package/src/shapes/TLLineShape.ts +61 -0
- package/src/shapes/TLNoteShape.ts +137 -0
- package/src/shapes/TLTextShape.ts +55 -0
- package/src/shapes/TLVideoShape.ts +40 -0
- package/src/store-migrations.ts +63 -0
- package/src/styles/StyleProp.ts +105 -0
- package/src/styles/TLColorStyle.ts +296 -0
- package/src/styles/TLDashStyle.ts +11 -0
- package/src/styles/TLFillStyle.ts +11 -0
- package/src/styles/TLFontStyle.ts +19 -0
- package/src/styles/TLHorizontalAlignStyle.ts +11 -0
- package/src/styles/TLSizeStyle.ts +11 -0
- package/src/styles/TLVerticalAlignStyle.ts +11 -0
- package/src/translations/languages.ts +39 -0
- package/src/translations/translations.test.ts +43 -0
- package/src/translations/translations.ts +73 -0
- package/src/util-types.ts +2 -0
|
@@ -0,0 +1,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": "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",
|
|
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
|
+
}
|