@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,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var translations_exports = {};
|
|
20
|
+
__export(translations_exports, {
|
|
21
|
+
LANGUAGES: () => import_languages.LANGUAGES,
|
|
22
|
+
_getDefaultTranslationLocale: () => _getDefaultTranslationLocale,
|
|
23
|
+
getDefaultTranslationLocale: () => getDefaultTranslationLocale
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(translations_exports);
|
|
26
|
+
var import_languages = require("./languages");
|
|
27
|
+
function getDefaultTranslationLocale() {
|
|
28
|
+
const locales = typeof window !== "undefined" ? window.navigator.languages ?? ["en"] : ["en"];
|
|
29
|
+
return _getDefaultTranslationLocale(locales);
|
|
30
|
+
}
|
|
31
|
+
function _getDefaultTranslationLocale(locales) {
|
|
32
|
+
for (const locale of locales) {
|
|
33
|
+
const supportedLocale = getSupportedLocale(locale);
|
|
34
|
+
if (supportedLocale) {
|
|
35
|
+
return supportedLocale;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return "en";
|
|
39
|
+
}
|
|
40
|
+
const DEFAULT_LOCALE_REGIONS = {
|
|
41
|
+
zh: "zh-cn",
|
|
42
|
+
pt: "pt-br",
|
|
43
|
+
ko: "ko-kr",
|
|
44
|
+
hi: "hi-in"
|
|
45
|
+
};
|
|
46
|
+
function getSupportedLocale(locale) {
|
|
47
|
+
const exactMatch = import_languages.LANGUAGES.find((t) => t.locale === locale.toLowerCase());
|
|
48
|
+
if (exactMatch) {
|
|
49
|
+
return exactMatch.locale;
|
|
50
|
+
}
|
|
51
|
+
const [language, region] = locale.split(/[-_]/).map((s) => s.toLowerCase());
|
|
52
|
+
if (region) {
|
|
53
|
+
const languageMatch = import_languages.LANGUAGES.find((t) => t.locale === language);
|
|
54
|
+
if (languageMatch) {
|
|
55
|
+
return languageMatch.locale;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (language in DEFAULT_LOCALE_REGIONS) {
|
|
59
|
+
return DEFAULT_LOCALE_REGIONS[language];
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=translations.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/translations/translations.ts"],
|
|
4
|
+
"sourcesContent": ["import { LANGUAGES } from './languages'\n\n/** @public */\nexport { LANGUAGES }\n\n/** @public */\nexport type TLLanguage = (typeof LANGUAGES)[number]\n// {\n// \treadonly locale: string\n// \treadonly label: string\n// }\n\n/** @public */\nexport function getDefaultTranslationLocale(): TLLanguage['locale'] {\n\tconst locales = typeof window !== 'undefined' ? window.navigator.languages ?? ['en'] : ['en']\n\treturn _getDefaultTranslationLocale(locales)\n}\n\n/** @internal */\nexport function _getDefaultTranslationLocale(locales: readonly string[]): TLLanguage['locale'] {\n\tfor (const locale of locales) {\n\t\tconst supportedLocale = getSupportedLocale(locale)\n\t\tif (supportedLocale) {\n\t\t\treturn supportedLocale\n\t\t}\n\t}\n\treturn 'en'\n}\n\n/** @public */\nconst DEFAULT_LOCALE_REGIONS: { [locale: string]: TLLanguage['locale'] } = {\n\tzh: 'zh-cn',\n\tpt: 'pt-br',\n\tko: 'ko-kr',\n\thi: 'hi-in',\n}\n\n/** @public */\nfunction getSupportedLocale(locale: string): TLLanguage['locale'] | null {\n\t// If we have an exact match, return it!\n\t// (e.g. if the user has 'fr' and we have 'fr')\n\t// (or if the user has 'pt-BR' and we have 'pt-br')\n\tconst exactMatch = LANGUAGES.find((t) => t.locale === locale.toLowerCase())\n\tif (exactMatch) {\n\t\treturn exactMatch.locale\n\t}\n\n\t// Otherwise, we need to be more flexible...\n\tconst [language, region] = locale.split(/[-_]/).map((s) => s.toLowerCase())\n\n\t// If the user's language has a region...\n\t// let's try to find non-region-specific locale for them\n\t// (e.g. if they have 'fr-CA' but we only have 'fr')\n\tif (region) {\n\t\tconst languageMatch = LANGUAGES.find((t) => t.locale === language)\n\t\tif (languageMatch) {\n\t\t\treturn languageMatch.locale\n\t\t}\n\t}\n\n\t// If the user's language doesn't have a region...\n\t// let's try to find a region-specific locale for them\n\t// (e.g. if they have 'pt' but we only have 'pt-pt' or 'pt-br')\n\t//\n\t// In this case, we choose the hard-coded default region for that language\n\tif (language in DEFAULT_LOCALE_REGIONS) {\n\t\treturn DEFAULT_LOCALE_REGIONS[language]\n\t}\n\n\t// Oh no! We don't have a translation for this language!\n\t// Let's give up...\n\treturn null\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA0B;AAanB,SAAS,8BAAoD;AACnE,QAAM,UAAU,OAAO,WAAW,cAAc,OAAO,UAAU,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI;AAC5F,SAAO,6BAA6B,OAAO;AAC5C;AAGO,SAAS,6BAA6B,SAAkD;AAC9F,aAAW,UAAU,SAAS;AAC7B,UAAM,kBAAkB,mBAAmB,MAAM;AACjD,QAAI,iBAAiB;AACpB,aAAO;AAAA,IACR;AAAA,EACD;AACA,SAAO;AACR;AAGA,MAAM,yBAAqE;AAAA,EAC1E,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACL;AAGA,SAAS,mBAAmB,QAA6C;AAIxE,QAAM,aAAa,2BAAU,KAAK,CAAC,MAAM,EAAE,WAAW,OAAO,YAAY,CAAC;AAC1E,MAAI,YAAY;AACf,WAAO,WAAW;AAAA,EACnB;AAGA,QAAM,CAAC,UAAU,MAAM,IAAI,OAAO,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;AAK1E,MAAI,QAAQ;AACX,UAAM,gBAAgB,2BAAU,KAAK,CAAC,MAAM,EAAE,WAAW,QAAQ;AACjE,QAAI,eAAe;AAClB,aAAO,cAAc;AAAA,IACtB;AAAA,EACD;AAOA,MAAI,YAAY,wBAAwB;AACvC,WAAO,uBAAuB,QAAQ;AAAA,EACvC;AAIA,SAAO;AACR;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var util_types_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(util_types_exports);
|
|
17
|
+
//# sourceMappingURL=util-types.js.map
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { annotateError, structuredClone } from "@bigbluebutton/utils";
|
|
2
|
+
import { CameraRecordType } from "./records/TLCamera.mjs";
|
|
3
|
+
import { DocumentRecordType, TLDOCUMENT_ID } from "./records/TLDocument.mjs";
|
|
4
|
+
import { TLINSTANCE_ID } from "./records/TLInstance.mjs";
|
|
5
|
+
import { PageRecordType } from "./records/TLPage.mjs";
|
|
6
|
+
import { InstancePageStateRecordType } from "./records/TLPageState.mjs";
|
|
7
|
+
import { PointerRecordType, TLPOINTER_ID } from "./records/TLPointer.mjs";
|
|
8
|
+
function sortByIndex(a, b) {
|
|
9
|
+
if (a.index < b.index) {
|
|
10
|
+
return -1;
|
|
11
|
+
} else if (a.index > b.index) {
|
|
12
|
+
return 1;
|
|
13
|
+
}
|
|
14
|
+
return 0;
|
|
15
|
+
}
|
|
16
|
+
function redactRecordForErrorReporting(record) {
|
|
17
|
+
if (record.typeName === "asset") {
|
|
18
|
+
if ("src" in record) {
|
|
19
|
+
record.src = "<redacted>";
|
|
20
|
+
}
|
|
21
|
+
if ("src" in record.props) {
|
|
22
|
+
record.props.src = "<redacted>";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const onValidationFailure = ({ error, phase, record, recordBefore }) => {
|
|
27
|
+
const isExistingValidationIssue = (
|
|
28
|
+
// if we're initializing the store for the first time, we should
|
|
29
|
+
// allow invalid records so people can load old buggy data:
|
|
30
|
+
(phase === "initialize")
|
|
31
|
+
);
|
|
32
|
+
annotateError(error, {
|
|
33
|
+
tags: {
|
|
34
|
+
origin: "store.validateRecord",
|
|
35
|
+
storePhase: phase,
|
|
36
|
+
isExistingValidationIssue
|
|
37
|
+
},
|
|
38
|
+
extras: {
|
|
39
|
+
recordBefore: recordBefore ? redactRecordForErrorReporting(structuredClone(recordBefore)) : void 0,
|
|
40
|
+
recordAfter: redactRecordForErrorReporting(structuredClone(record))
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
throw error;
|
|
44
|
+
};
|
|
45
|
+
function getDefaultPages() {
|
|
46
|
+
return [
|
|
47
|
+
PageRecordType.create({ id: "page:page", name: "Page 1", index: "a1", meta: {} })
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
function createIntegrityChecker(store) {
|
|
51
|
+
const $pageIds = store.query.ids("page");
|
|
52
|
+
const ensureStoreIsUsable = () => {
|
|
53
|
+
if (!store.has(TLDOCUMENT_ID)) {
|
|
54
|
+
store.put([DocumentRecordType.create({ id: TLDOCUMENT_ID, name: store.props.defaultName })]);
|
|
55
|
+
return ensureStoreIsUsable();
|
|
56
|
+
}
|
|
57
|
+
if (!store.has(TLPOINTER_ID)) {
|
|
58
|
+
store.put([PointerRecordType.create({ id: TLPOINTER_ID })]);
|
|
59
|
+
return ensureStoreIsUsable();
|
|
60
|
+
}
|
|
61
|
+
const pageIds = $pageIds.get();
|
|
62
|
+
if (pageIds.size === 0) {
|
|
63
|
+
store.put(getDefaultPages());
|
|
64
|
+
return ensureStoreIsUsable();
|
|
65
|
+
}
|
|
66
|
+
const getFirstPageId = () => [...pageIds].map((id) => store.get(id)).sort(sortByIndex)[0].id;
|
|
67
|
+
const instanceState = store.get(TLINSTANCE_ID);
|
|
68
|
+
if (!instanceState) {
|
|
69
|
+
store.put([
|
|
70
|
+
store.schema.types.instance.create({
|
|
71
|
+
id: TLINSTANCE_ID,
|
|
72
|
+
currentPageId: getFirstPageId(),
|
|
73
|
+
exportBackground: true
|
|
74
|
+
})
|
|
75
|
+
]);
|
|
76
|
+
return ensureStoreIsUsable();
|
|
77
|
+
} else if (!pageIds.has(instanceState.currentPageId)) {
|
|
78
|
+
store.put([{ ...instanceState, currentPageId: getFirstPageId() }]);
|
|
79
|
+
return ensureStoreIsUsable();
|
|
80
|
+
}
|
|
81
|
+
const missingPageStateIds = /* @__PURE__ */ new Set();
|
|
82
|
+
const missingCameraIds = /* @__PURE__ */ new Set();
|
|
83
|
+
for (const id of pageIds) {
|
|
84
|
+
const pageStateId = InstancePageStateRecordType.createId(id);
|
|
85
|
+
if (!store.has(pageStateId)) {
|
|
86
|
+
missingPageStateIds.add(pageStateId);
|
|
87
|
+
}
|
|
88
|
+
const cameraId = CameraRecordType.createId(id);
|
|
89
|
+
if (!store.has(cameraId)) {
|
|
90
|
+
missingCameraIds.add(cameraId);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (missingPageStateIds.size > 0) {
|
|
94
|
+
store.put(
|
|
95
|
+
[...missingPageStateIds].map(
|
|
96
|
+
(id) => InstancePageStateRecordType.create({
|
|
97
|
+
id,
|
|
98
|
+
pageId: InstancePageStateRecordType.parseId(id)
|
|
99
|
+
})
|
|
100
|
+
)
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
if (missingCameraIds.size > 0) {
|
|
104
|
+
store.put([...missingCameraIds].map((id) => CameraRecordType.create({ id })));
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
return ensureStoreIsUsable;
|
|
108
|
+
}
|
|
109
|
+
export {
|
|
110
|
+
createIntegrityChecker,
|
|
111
|
+
onValidationFailure
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=TLStore.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/TLStore.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n\tSerializedStore,\n\tStore,\n\tStoreSchema,\n\tStoreSchemaOptions,\n\tStoreSnapshot,\n} from '@bigbluebutton/store'\nimport { annotateError, structuredClone } from '@bigbluebutton/utils'\nimport { CameraRecordType, TLCameraId } from './records/TLCamera'\nimport { DocumentRecordType, TLDOCUMENT_ID } from './records/TLDocument'\nimport { TLINSTANCE_ID } from './records/TLInstance'\nimport { PageRecordType, TLPageId } from './records/TLPage'\nimport { InstancePageStateRecordType, TLInstancePageStateId } from './records/TLPageState'\nimport { PointerRecordType, TLPOINTER_ID } from './records/TLPointer'\nimport { TLRecord } from './records/TLRecord'\n\nfunction sortByIndex<T extends { index: string }>(a: T, b: T) {\n\tif (a.index < b.index) {\n\t\treturn -1\n\t} else if (a.index > b.index) {\n\t\treturn 1\n\t}\n\treturn 0\n}\n\nfunction redactRecordForErrorReporting(record: any) {\n\tif (record.typeName === 'asset') {\n\t\tif ('src' in record) {\n\t\t\trecord.src = '<redacted>'\n\t\t}\n\n\t\tif ('src' in record.props) {\n\t\t\trecord.props.src = '<redacted>'\n\t\t}\n\t}\n}\n\n/** @public */\nexport type TLStoreSchema = StoreSchema<TLRecord, TLStoreProps>\n\n/** @public */\nexport type TLSerializedStore = SerializedStore<TLRecord>\n\n/** @public */\nexport type TLStoreSnapshot = StoreSnapshot<TLRecord>\n\n/** @public */\nexport type TLStoreProps = {\n\tdefaultName: string\n}\n\n/** @public */\nexport type TLStore = Store<TLRecord, TLStoreProps>\n\n/** @public */\nexport const onValidationFailure: StoreSchemaOptions<\n\tTLRecord,\n\tTLStoreProps\n>['onValidationFailure'] = ({ error, phase, record, recordBefore }): TLRecord => {\n\tconst isExistingValidationIssue =\n\t\t// if we're initializing the store for the first time, we should\n\t\t// allow invalid records so people can load old buggy data:\n\t\tphase === 'initialize'\n\n\tannotateError(error, {\n\t\ttags: {\n\t\t\torigin: 'store.validateRecord',\n\t\t\tstorePhase: phase,\n\t\t\tisExistingValidationIssue,\n\t\t},\n\t\textras: {\n\t\t\trecordBefore: recordBefore\n\t\t\t\t? redactRecordForErrorReporting(structuredClone(recordBefore))\n\t\t\t\t: undefined,\n\t\t\trecordAfter: redactRecordForErrorReporting(structuredClone(record)),\n\t\t},\n\t})\n\n\tthrow error\n}\n\nfunction getDefaultPages() {\n\treturn [\n\t\tPageRecordType.create({ id: 'page:page' as TLPageId, name: 'Page 1', index: 'a1', meta: {} }),\n\t]\n}\n\n/** @internal */\nexport function createIntegrityChecker(store: TLStore): () => void {\n\tconst $pageIds = store.query.ids('page')\n\n\tconst ensureStoreIsUsable = (): void => {\n\t\t// make sure we have exactly one document\n\t\tif (!store.has(TLDOCUMENT_ID)) {\n\t\t\tstore.put([DocumentRecordType.create({ id: TLDOCUMENT_ID, name: store.props.defaultName })])\n\t\t\treturn ensureStoreIsUsable()\n\t\t}\n\n\t\tif (!store.has(TLPOINTER_ID)) {\n\t\t\tstore.put([PointerRecordType.create({ id: TLPOINTER_ID })])\n\t\t\treturn ensureStoreIsUsable()\n\t\t}\n\n\t\t// make sure there is at least one page\n\t\tconst pageIds = $pageIds.get()\n\t\tif (pageIds.size === 0) {\n\t\t\tstore.put(getDefaultPages())\n\t\t\treturn ensureStoreIsUsable()\n\t\t}\n\n\t\tconst getFirstPageId = () => [...pageIds].map((id) => store.get(id)!).sort(sortByIndex)[0].id!\n\n\t\t// make sure we have state for the current user's current tab\n\t\tconst instanceState = store.get(TLINSTANCE_ID)\n\t\tif (!instanceState) {\n\t\t\tstore.put([\n\t\t\t\tstore.schema.types.instance.create({\n\t\t\t\t\tid: TLINSTANCE_ID,\n\t\t\t\t\tcurrentPageId: getFirstPageId(),\n\t\t\t\t\texportBackground: true,\n\t\t\t\t}),\n\t\t\t])\n\n\t\t\treturn ensureStoreIsUsable()\n\t\t} else if (!pageIds.has(instanceState.currentPageId)) {\n\t\t\tstore.put([{ ...instanceState, currentPageId: getFirstPageId() }])\n\t\t\treturn ensureStoreIsUsable()\n\t\t}\n\n\t\t// make sure we have page states and cameras for all the pages\n\t\tconst missingPageStateIds = new Set<TLInstancePageStateId>()\n\t\tconst missingCameraIds = new Set<TLCameraId>()\n\t\tfor (const id of pageIds) {\n\t\t\tconst pageStateId = InstancePageStateRecordType.createId(id)\n\t\t\tif (!store.has(pageStateId)) {\n\t\t\t\tmissingPageStateIds.add(pageStateId)\n\t\t\t}\n\t\t\tconst cameraId = CameraRecordType.createId(id)\n\t\t\tif (!store.has(cameraId)) {\n\t\t\t\tmissingCameraIds.add(cameraId)\n\t\t\t}\n\t\t}\n\n\t\tif (missingPageStateIds.size > 0) {\n\t\t\tstore.put(\n\t\t\t\t[...missingPageStateIds].map((id) =>\n\t\t\t\t\tInstancePageStateRecordType.create({\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tpageId: InstancePageStateRecordType.parseId(id) as TLPageId,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\t\tif (missingCameraIds.size > 0) {\n\t\t\tstore.put([...missingCameraIds].map((id) => CameraRecordType.create({ id })))\n\t\t}\n\t}\n\n\treturn ensureStoreIsUsable\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { T } from "@bigbluebutton/validate";
|
|
2
|
+
import { idValidator } from "../misc/id-validator.mjs";
|
|
3
|
+
const assetIdValidator = idValidator("asset");
|
|
4
|
+
function createAssetValidator(type, props) {
|
|
5
|
+
return T.object({
|
|
6
|
+
id: assetIdValidator,
|
|
7
|
+
typeName: T.literal("asset"),
|
|
8
|
+
type: T.literal(type),
|
|
9
|
+
props,
|
|
10
|
+
meta: T.jsonValue
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
assetIdValidator,
|
|
15
|
+
createAssetValidator
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=TLBaseAsset.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/assets/TLBaseAsset.ts"],
|
|
4
|
+
"sourcesContent": ["import { BaseRecord } from '@bigbluebutton/store'\nimport { JsonObject } from '@bigbluebutton/utils'\nimport { T } from '@bigbluebutton/validate'\nimport { idValidator } from '../misc/id-validator'\nimport { TLAssetId } from '../records/TLAsset'\n\n/** @public */\nexport interface TLBaseAsset<Type extends string, Props> extends BaseRecord<'asset', TLAssetId> {\n\ttype: Type\n\tprops: Props\n\tmeta: JsonObject\n}\n\n/**\n * A validator for asset record type Ids.\n *\n * @public */\nexport const assetIdValidator = idValidator<TLAssetId>('asset')\n\n/**\n * Create a validator for an asset record type.\n *\n * @param type - The type of the asset\n * @param props - The validator for the asset's props\n *\n * @public */\nexport function createAssetValidator<Type extends string, Props extends JsonObject>(\n\ttype: Type,\n\tprops: T.Validator<Props>\n): T.ObjectValidator<{\n\tid: TLAssetId\n\ttypeName: 'asset'\n\ttype: Type\n\tprops: Props\n\tmeta: JsonObject\n}> {\n\treturn T.object({\n\t\tid: assetIdValidator,\n\t\ttypeName: T.literal('asset'),\n\t\ttype: T.literal(type),\n\t\tprops,\n\t\tmeta: T.jsonValue as T.ObjectValidator<JsonObject>,\n\t})\n}\n"],
|
|
5
|
+
"mappings": "AAEA,SAAS,SAAS;AAClB,SAAS,mBAAmB;AAcrB,MAAM,mBAAmB,YAAuB,OAAO;AASvD,SAAS,qBACf,MACA,OAOE;AACF,SAAO,EAAE,OAAO;AAAA,IACf,IAAI;AAAA,IACJ,UAAU,EAAE,QAAQ,OAAO;AAAA,IAC3B,MAAM,EAAE,QAAQ,IAAI;AAAA,IACpB;AAAA,IACA,MAAM,EAAE;AAAA,EACT,CAAC;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { defineMigrations } from "@bigbluebutton/store";
|
|
2
|
+
import { T } from "@bigbluebutton/validate";
|
|
3
|
+
import { createAssetValidator } from "./TLBaseAsset.mjs";
|
|
4
|
+
const bookmarkAssetValidator = createAssetValidator(
|
|
5
|
+
"bookmark",
|
|
6
|
+
T.object({
|
|
7
|
+
title: T.string,
|
|
8
|
+
description: T.string,
|
|
9
|
+
image: T.string,
|
|
10
|
+
src: T.string.nullable()
|
|
11
|
+
})
|
|
12
|
+
);
|
|
13
|
+
const bookmarkAssetMigrations = defineMigrations({});
|
|
14
|
+
export {
|
|
15
|
+
bookmarkAssetMigrations,
|
|
16
|
+
bookmarkAssetValidator
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=TLBookmarkAsset.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/assets/TLBookmarkAsset.ts"],
|
|
4
|
+
"sourcesContent": ["import { defineMigrations } from '@bigbluebutton/store'\nimport { T } from '@bigbluebutton/validate'\nimport { createAssetValidator, TLBaseAsset } from './TLBaseAsset'\n\n/**\n * An asset used for URL bookmarks, used by the TLBookmarkShape.\n *\n * @public */\nexport type TLBookmarkAsset = TLBaseAsset<\n\t'bookmark',\n\t{\n\t\ttitle: string\n\t\tdescription: string\n\t\timage: string\n\t\tsrc: string | null\n\t}\n>\n\n/** @internal */\nexport const bookmarkAssetValidator: T.Validator<TLBookmarkAsset> = createAssetValidator(\n\t'bookmark',\n\tT.object({\n\t\ttitle: T.string,\n\t\tdescription: T.string,\n\t\timage: T.string,\n\t\tsrc: T.string.nullable(),\n\t})\n)\n\n/** @internal */\nexport const bookmarkAssetMigrations = defineMigrations({})\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,wBAAwB;AACjC,SAAS,SAAS;AAClB,SAAS,4BAAyC;AAiB3C,MAAM,yBAAuD;AAAA,EACnE;AAAA,EACA,EAAE,OAAO;AAAA,IACR,OAAO,EAAE;AAAA,IACT,aAAa,EAAE;AAAA,IACf,OAAO,EAAE;AAAA,IACT,KAAK,EAAE,OAAO,SAAS;AAAA,EACxB,CAAC;AACF;AAGO,MAAM,0BAA0B,iBAAiB,CAAC,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { defineMigrations } from "@bigbluebutton/store";
|
|
2
|
+
import { T } from "@bigbluebutton/validate";
|
|
3
|
+
import { createAssetValidator } from "./TLBaseAsset.mjs";
|
|
4
|
+
const imageAssetValidator = createAssetValidator(
|
|
5
|
+
"image",
|
|
6
|
+
T.object({
|
|
7
|
+
w: T.number,
|
|
8
|
+
h: T.number,
|
|
9
|
+
name: T.string,
|
|
10
|
+
isAnimated: T.boolean,
|
|
11
|
+
mimeType: T.string.nullable(),
|
|
12
|
+
src: T.string.nullable()
|
|
13
|
+
})
|
|
14
|
+
);
|
|
15
|
+
const Versions = {
|
|
16
|
+
AddIsAnimated: 1,
|
|
17
|
+
RenameWidthHeight: 2
|
|
18
|
+
};
|
|
19
|
+
const imageAssetMigrations = defineMigrations({
|
|
20
|
+
currentVersion: Versions.RenameWidthHeight,
|
|
21
|
+
migrators: {
|
|
22
|
+
[Versions.AddIsAnimated]: {
|
|
23
|
+
up: (asset) => {
|
|
24
|
+
return {
|
|
25
|
+
...asset,
|
|
26
|
+
props: {
|
|
27
|
+
...asset.props,
|
|
28
|
+
isAnimated: false
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
},
|
|
32
|
+
down: (asset) => {
|
|
33
|
+
const { isAnimated, ...rest } = asset.props;
|
|
34
|
+
return {
|
|
35
|
+
...asset,
|
|
36
|
+
props: rest
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
[Versions.RenameWidthHeight]: {
|
|
41
|
+
up: (asset) => {
|
|
42
|
+
const { width, height, ...others } = asset.props;
|
|
43
|
+
return { ...asset, props: { w: width, h: height, ...others } };
|
|
44
|
+
},
|
|
45
|
+
down: (asset) => {
|
|
46
|
+
const { w, h, ...others } = asset.props;
|
|
47
|
+
return { ...asset, props: { width: w, height: h, ...others } };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
export {
|
|
53
|
+
imageAssetMigrations,
|
|
54
|
+
imageAssetValidator
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=TLImageAsset.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/assets/TLImageAsset.ts"],
|
|
4
|
+
"sourcesContent": ["import { defineMigrations } from '@bigbluebutton/store'\nimport { T } from '@bigbluebutton/validate'\nimport { createAssetValidator, TLBaseAsset } from './TLBaseAsset'\n\n/**\n * An asset for images such as PNGs and JPEGs, used by the TLImageShape.\n *\n * @public */\nexport type TLImageAsset = TLBaseAsset<\n\t'image',\n\t{\n\t\tw: number\n\t\th: number\n\t\tname: string\n\t\tisAnimated: boolean\n\t\tmimeType: string | null\n\t\tsrc: string | null\n\t}\n>\n\n/** @internal */\nexport const imageAssetValidator: T.Validator<TLImageAsset> = createAssetValidator(\n\t'image',\n\tT.object({\n\t\tw: T.number,\n\t\th: T.number,\n\t\tname: T.string,\n\t\tisAnimated: T.boolean,\n\t\tmimeType: T.string.nullable(),\n\t\tsrc: T.string.nullable(),\n\t})\n)\n\nconst Versions = {\n\tAddIsAnimated: 1,\n\tRenameWidthHeight: 2,\n} as const\n\n/** @internal */\nexport const imageAssetMigrations = defineMigrations({\n\tcurrentVersion: Versions.RenameWidthHeight,\n\tmigrators: {\n\t\t[Versions.AddIsAnimated]: {\n\t\t\tup: (asset) => {\n\t\t\t\treturn {\n\t\t\t\t\t...asset,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...asset.props,\n\t\t\t\t\t\tisAnimated: false,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: (asset) => {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t\t\tconst { isAnimated, ...rest } = asset.props\n\t\t\t\treturn {\n\t\t\t\t\t...asset,\n\t\t\t\t\tprops: rest,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[Versions.RenameWidthHeight]: {\n\t\t\tup: (asset) => {\n\t\t\t\tconst { width, height, ...others } = asset.props\n\t\t\t\treturn { ...asset, props: { w: width, h: height, ...others } }\n\t\t\t},\n\t\t\tdown: (asset) => {\n\t\t\t\tconst { w, h, ...others } = asset.props\n\t\t\t\treturn { ...asset, props: { width: w, height: h, ...others } }\n\t\t\t},\n\t\t},\n\t},\n})\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,wBAAwB;AACjC,SAAS,SAAS;AAClB,SAAS,4BAAyC;AAmB3C,MAAM,sBAAiD;AAAA,EAC7D;AAAA,EACA,EAAE,OAAO;AAAA,IACR,GAAG,EAAE;AAAA,IACL,GAAG,EAAE;AAAA,IACL,MAAM,EAAE;AAAA,IACR,YAAY,EAAE;AAAA,IACd,UAAU,EAAE,OAAO,SAAS;AAAA,IAC5B,KAAK,EAAE,OAAO,SAAS;AAAA,EACxB,CAAC;AACF;AAEA,MAAM,WAAW;AAAA,EAChB,eAAe;AAAA,EACf,mBAAmB;AACpB;AAGO,MAAM,uBAAuB,iBAAiB;AAAA,EACpD,gBAAgB,SAAS;AAAA,EACzB,WAAW;AAAA,IACV,CAAC,SAAS,aAAa,GAAG;AAAA,MACzB,IAAI,CAAC,UAAU;AACd,eAAO;AAAA,UACN,GAAG;AAAA,UACH,OAAO;AAAA,YACN,GAAG,MAAM;AAAA,YACT,YAAY;AAAA,UACb;AAAA,QACD;AAAA,MACD;AAAA,MACA,MAAM,CAAC,UAAU;AAEhB,cAAM,EAAE,YAAY,GAAG,KAAK,IAAI,MAAM;AACtC,eAAO;AAAA,UACN,GAAG;AAAA,UACH,OAAO;AAAA,QACR;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAC,SAAS,iBAAiB,GAAG;AAAA,MAC7B,IAAI,CAAC,UAAU;AACd,cAAM,EAAE,OAAO,QAAQ,GAAG,OAAO,IAAI,MAAM;AAC3C,eAAO,EAAE,GAAG,OAAO,OAAO,EAAE,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,EAAE;AAAA,MAC9D;AAAA,MACA,MAAM,CAAC,UAAU;AAChB,cAAM,EAAE,GAAG,GAAG,GAAG,OAAO,IAAI,MAAM;AAClC,eAAO,EAAE,GAAG,OAAO,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,GAAG,OAAO,EAAE;AAAA,MAC9D;AAAA,IACD;AAAA,EACD;AACD,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { defineMigrations } from "@bigbluebutton/store";
|
|
2
|
+
import { T } from "@bigbluebutton/validate";
|
|
3
|
+
import { createAssetValidator } from "./TLBaseAsset.mjs";
|
|
4
|
+
const videoAssetValidator = createAssetValidator(
|
|
5
|
+
"video",
|
|
6
|
+
T.object({
|
|
7
|
+
w: T.number,
|
|
8
|
+
h: T.number,
|
|
9
|
+
name: T.string,
|
|
10
|
+
isAnimated: T.boolean,
|
|
11
|
+
mimeType: T.string.nullable(),
|
|
12
|
+
src: T.string.nullable()
|
|
13
|
+
})
|
|
14
|
+
);
|
|
15
|
+
const Versions = {
|
|
16
|
+
AddIsAnimated: 1,
|
|
17
|
+
RenameWidthHeight: 2
|
|
18
|
+
};
|
|
19
|
+
const videoAssetMigrations = defineMigrations({
|
|
20
|
+
currentVersion: Versions.RenameWidthHeight,
|
|
21
|
+
migrators: {
|
|
22
|
+
[Versions.AddIsAnimated]: {
|
|
23
|
+
up: (asset) => {
|
|
24
|
+
return {
|
|
25
|
+
...asset,
|
|
26
|
+
props: {
|
|
27
|
+
...asset.props,
|
|
28
|
+
isAnimated: false
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
},
|
|
32
|
+
down: (asset) => {
|
|
33
|
+
const { isAnimated, ...rest } = asset.props;
|
|
34
|
+
return {
|
|
35
|
+
...asset,
|
|
36
|
+
props: rest
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
[Versions.RenameWidthHeight]: {
|
|
41
|
+
up: (asset) => {
|
|
42
|
+
const { width, height, ...others } = asset.props;
|
|
43
|
+
return { ...asset, props: { w: width, h: height, ...others } };
|
|
44
|
+
},
|
|
45
|
+
down: (asset) => {
|
|
46
|
+
const { w, h, ...others } = asset.props;
|
|
47
|
+
return { ...asset, props: { width: w, height: h, ...others } };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
export {
|
|
53
|
+
videoAssetMigrations,
|
|
54
|
+
videoAssetValidator
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=TLVideoAsset.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/assets/TLVideoAsset.ts"],
|
|
4
|
+
"sourcesContent": ["import { defineMigrations } from '@bigbluebutton/store'\nimport { T } from '@bigbluebutton/validate'\nimport { createAssetValidator, TLBaseAsset } from './TLBaseAsset'\n\n/**\n * An asset used for videos, used by the TLVideoShape.\n *\n * @public */\nexport type TLVideoAsset = TLBaseAsset<\n\t'video',\n\t{\n\t\tw: number\n\t\th: number\n\t\tname: string\n\t\tisAnimated: boolean\n\t\tmimeType: string | null\n\t\tsrc: string | null\n\t}\n>\n\n/** @internal */\nexport const videoAssetValidator: T.Validator<TLVideoAsset> = createAssetValidator(\n\t'video',\n\tT.object({\n\t\tw: T.number,\n\t\th: T.number,\n\t\tname: T.string,\n\t\tisAnimated: T.boolean,\n\t\tmimeType: T.string.nullable(),\n\t\tsrc: T.string.nullable(),\n\t})\n)\n\nconst Versions = {\n\tAddIsAnimated: 1,\n\tRenameWidthHeight: 2,\n} as const\n\n/** @internal */\nexport const videoAssetMigrations = defineMigrations({\n\tcurrentVersion: Versions.RenameWidthHeight,\n\tmigrators: {\n\t\t[Versions.AddIsAnimated]: {\n\t\t\tup: (asset) => {\n\t\t\t\treturn {\n\t\t\t\t\t...asset,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...asset.props,\n\t\t\t\t\t\tisAnimated: false,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t\tdown: (asset) => {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t\t\tconst { isAnimated, ...rest } = asset.props\n\t\t\t\treturn {\n\t\t\t\t\t...asset,\n\t\t\t\t\tprops: rest,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t[Versions.RenameWidthHeight]: {\n\t\t\tup: (asset) => {\n\t\t\t\tconst { width, height, ...others } = asset.props\n\t\t\t\treturn { ...asset, props: { w: width, h: height, ...others } }\n\t\t\t},\n\t\t\tdown: (asset) => {\n\t\t\t\tconst { w, h, ...others } = asset.props\n\t\t\t\treturn { ...asset, props: { width: w, height: h, ...others } }\n\t\t\t},\n\t\t},\n\t},\n})\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,wBAAwB;AACjC,SAAS,SAAS;AAClB,SAAS,4BAAyC;AAmB3C,MAAM,sBAAiD;AAAA,EAC7D;AAAA,EACA,EAAE,OAAO;AAAA,IACR,GAAG,EAAE;AAAA,IACL,GAAG,EAAE;AAAA,IACL,MAAM,EAAE;AAAA,IACR,YAAY,EAAE;AAAA,IACd,UAAU,EAAE,OAAO,SAAS;AAAA,IAC5B,KAAK,EAAE,OAAO,SAAS;AAAA,EACxB,CAAC;AACF;AAEA,MAAM,WAAW;AAAA,EAChB,eAAe;AAAA,EACf,mBAAmB;AACpB;AAGO,MAAM,uBAAuB,iBAAiB;AAAA,EACpD,gBAAgB,SAAS;AAAA,EACzB,WAAW;AAAA,IACV,CAAC,SAAS,aAAa,GAAG;AAAA,MACzB,IAAI,CAAC,UAAU;AACd,eAAO;AAAA,UACN,GAAG;AAAA,UACH,OAAO;AAAA,YACN,GAAG,MAAM;AAAA,YACT,YAAY;AAAA,UACb;AAAA,QACD;AAAA,MACD;AAAA,MACA,MAAM,CAAC,UAAU;AAEhB,cAAM,EAAE,YAAY,GAAG,KAAK,IAAI,MAAM;AACtC,eAAO;AAAA,UACN,GAAG;AAAA,UACH,OAAO;AAAA,QACR;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAC,SAAS,iBAAiB,GAAG;AAAA,MAC7B,IAAI,CAAC,UAAU;AACd,cAAM,EAAE,OAAO,QAAQ,GAAG,OAAO,IAAI,MAAM;AAC3C,eAAO,EAAE,GAAG,OAAO,OAAO,EAAE,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,EAAE;AAAA,MAC9D;AAAA,MACA,MAAM,CAAC,UAAU;AAChB,cAAM,EAAE,GAAG,GAAG,GAAG,OAAO,IAAI,MAAM;AAClC,eAAO,EAAE,GAAG,OAAO,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,GAAG,OAAO,EAAE;AAAA,MAC9D;AAAA,IACD;AAAA,EACD;AACD,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { computed } from "@bigbluebutton/state";
|
|
2
|
+
import { CameraRecordType } from "./records/TLCamera.mjs";
|
|
3
|
+
import { TLINSTANCE_ID } from "./records/TLInstance.mjs";
|
|
4
|
+
import { InstancePageStateRecordType } from "./records/TLPageState.mjs";
|
|
5
|
+
import { TLPOINTER_ID } from "./records/TLPointer.mjs";
|
|
6
|
+
import { InstancePresenceRecordType } from "./records/TLPresence.mjs";
|
|
7
|
+
const createPresenceStateDerivation = ($user, instanceId) => (store) => {
|
|
8
|
+
return computed("instancePresence", () => {
|
|
9
|
+
const instance = store.get(TLINSTANCE_ID);
|
|
10
|
+
const pageState = store.get(InstancePageStateRecordType.createId(instance?.currentPageId));
|
|
11
|
+
const camera = store.get(CameraRecordType.createId(instance?.currentPageId));
|
|
12
|
+
const pointer = store.get(TLPOINTER_ID);
|
|
13
|
+
const user = $user.get();
|
|
14
|
+
if (!pageState || !instance || !camera || !pointer || !user) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
return InstancePresenceRecordType.create({
|
|
18
|
+
id: instanceId ?? InstancePresenceRecordType.createId(store.id),
|
|
19
|
+
selectedShapeIds: pageState.selectedShapeIds,
|
|
20
|
+
brush: instance.brush,
|
|
21
|
+
scribbles: instance.scribbles,
|
|
22
|
+
userId: user.id,
|
|
23
|
+
userName: user.name,
|
|
24
|
+
followingUserId: instance.followingUserId,
|
|
25
|
+
camera: {
|
|
26
|
+
x: camera.x,
|
|
27
|
+
y: camera.y,
|
|
28
|
+
z: camera.z
|
|
29
|
+
},
|
|
30
|
+
color: user.color,
|
|
31
|
+
currentPageId: instance.currentPageId,
|
|
32
|
+
cursor: {
|
|
33
|
+
x: pointer.x,
|
|
34
|
+
y: pointer.y,
|
|
35
|
+
rotation: instance.cursor.rotation,
|
|
36
|
+
type: instance.cursor.type
|
|
37
|
+
},
|
|
38
|
+
lastActivityTimestamp: pointer.lastActivityTimestamp,
|
|
39
|
+
screenBounds: instance.screenBounds,
|
|
40
|
+
chatMessage: instance.chatMessage,
|
|
41
|
+
meta: {}
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
export {
|
|
46
|
+
createPresenceStateDerivation
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=createPresenceStateDerivation.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/createPresenceStateDerivation.ts"],
|
|
4
|
+
"sourcesContent": ["import { Signal, computed } from '@bigbluebutton/state'\nimport { TLStore } from './TLStore'\nimport { CameraRecordType } from './records/TLCamera'\nimport { TLINSTANCE_ID } from './records/TLInstance'\nimport { InstancePageStateRecordType } from './records/TLPageState'\nimport { TLPOINTER_ID } from './records/TLPointer'\nimport { InstancePresenceRecordType, TLInstancePresence } from './records/TLPresence'\n\n/** @public */\nexport const createPresenceStateDerivation =\n\t(\n\t\t$user: Signal<{ id: string; color: string; name: string }>,\n\t\tinstanceId?: TLInstancePresence['id']\n\t) =>\n\t(store: TLStore): Signal<TLInstancePresence | null> => {\n\t\treturn computed('instancePresence', () => {\n\t\t\tconst instance = store.get(TLINSTANCE_ID)\n\t\t\tconst pageState = store.get(InstancePageStateRecordType.createId(instance?.currentPageId))\n\t\t\tconst camera = store.get(CameraRecordType.createId(instance?.currentPageId))\n\t\t\tconst pointer = store.get(TLPOINTER_ID)\n\t\t\tconst user = $user.get()\n\t\t\tif (!pageState || !instance || !camera || !pointer || !user) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\treturn InstancePresenceRecordType.create({\n\t\t\t\tid: instanceId ?? InstancePresenceRecordType.createId(store.id),\n\t\t\t\tselectedShapeIds: pageState.selectedShapeIds,\n\t\t\t\tbrush: instance.brush,\n\t\t\t\tscribbles: instance.scribbles,\n\t\t\t\tuserId: user.id,\n\t\t\t\tuserName: user.name,\n\t\t\t\tfollowingUserId: instance.followingUserId,\n\t\t\t\tcamera: {\n\t\t\t\t\tx: camera.x,\n\t\t\t\t\ty: camera.y,\n\t\t\t\t\tz: camera.z,\n\t\t\t\t},\n\t\t\t\tcolor: user.color,\n\t\t\t\tcurrentPageId: instance.currentPageId,\n\t\t\t\tcursor: {\n\t\t\t\t\tx: pointer.x,\n\t\t\t\t\ty: pointer.y,\n\t\t\t\t\trotation: instance.cursor.rotation,\n\t\t\t\t\ttype: instance.cursor.type,\n\t\t\t\t},\n\t\t\t\tlastActivityTimestamp: pointer.lastActivityTimestamp,\n\t\t\t\tscreenBounds: instance.screenBounds,\n\t\t\t\tchatMessage: instance.chatMessage,\n\t\t\t\tmeta: {},\n\t\t\t})\n\t\t})\n\t}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAiB,gBAAgB;AAEjC,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAC9B,SAAS,mCAAmC;AAC5C,SAAS,oBAAoB;AAC7B,SAAS,kCAAsD;AAGxD,MAAM,gCACZ,CACC,OACA,eAED,CAAC,UAAsD;AACtD,SAAO,SAAS,oBAAoB,MAAM;AACzC,UAAM,WAAW,MAAM,IAAI,aAAa;AACxC,UAAM,YAAY,MAAM,IAAI,4BAA4B,SAAS,UAAU,aAAa,CAAC;AACzF,UAAM,SAAS,MAAM,IAAI,iBAAiB,SAAS,UAAU,aAAa,CAAC;AAC3E,UAAM,UAAU,MAAM,IAAI,YAAY;AACtC,UAAM,OAAO,MAAM,IAAI;AACvB,QAAI,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM;AAC5D,aAAO;AAAA,IACR;AAEA,WAAO,2BAA2B,OAAO;AAAA,MACxC,IAAI,cAAc,2BAA2B,SAAS,MAAM,EAAE;AAAA,MAC9D,kBAAkB,UAAU;AAAA,MAC5B,OAAO,SAAS;AAAA,MAChB,WAAW,SAAS;AAAA,MACpB,QAAQ,KAAK;AAAA,MACb,UAAU,KAAK;AAAA,MACf,iBAAiB,SAAS;AAAA,MAC1B,QAAQ;AAAA,QACP,GAAG,OAAO;AAAA,QACV,GAAG,OAAO;AAAA,QACV,GAAG,OAAO;AAAA,MACX;AAAA,MACA,OAAO,KAAK;AAAA,MACZ,eAAe,SAAS;AAAA,MACxB,QAAQ;AAAA,QACP,GAAG,QAAQ;AAAA,QACX,GAAG,QAAQ;AAAA,QACX,UAAU,SAAS,OAAO;AAAA,QAC1B,MAAM,SAAS,OAAO;AAAA,MACvB;AAAA,MACA,uBAAuB,QAAQ;AAAA,MAC/B,cAAc,SAAS;AAAA,MACvB,aAAa,SAAS;AAAA,MACtB,MAAM,CAAC;AAAA,IACR,CAAC;AAAA,EACF,CAAC;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { StoreSchema } from "@bigbluebutton/store";
|
|
2
|
+
import { objectMapValues } from "@bigbluebutton/utils";
|
|
3
|
+
import { createIntegrityChecker, onValidationFailure } from "./TLStore.mjs";
|
|
4
|
+
import { AssetRecordType } from "./records/TLAsset.mjs";
|
|
5
|
+
import { CameraRecordType } from "./records/TLCamera.mjs";
|
|
6
|
+
import { DocumentRecordType } from "./records/TLDocument.mjs";
|
|
7
|
+
import { createInstanceRecordType } from "./records/TLInstance.mjs";
|
|
8
|
+
import { PageRecordType } from "./records/TLPage.mjs";
|
|
9
|
+
import { InstancePageStateRecordType } from "./records/TLPageState.mjs";
|
|
10
|
+
import { PointerRecordType } from "./records/TLPointer.mjs";
|
|
11
|
+
import { InstancePresenceRecordType } from "./records/TLPresence.mjs";
|
|
12
|
+
import { createShapeRecordType, getShapePropKeysByStyle } from "./records/TLShape.mjs";
|
|
13
|
+
import { storeMigrations } from "./store-migrations.mjs";
|
|
14
|
+
function createTLSchema({ shapes }) {
|
|
15
|
+
const stylesById = /* @__PURE__ */ new Map();
|
|
16
|
+
for (const shape of objectMapValues(shapes)) {
|
|
17
|
+
for (const style of getShapePropKeysByStyle(shape.props ?? {}).keys()) {
|
|
18
|
+
if (stylesById.has(style.id) && stylesById.get(style.id) !== style) {
|
|
19
|
+
throw new Error(`Multiple StyleProp instances with the same id: ${style.id}`);
|
|
20
|
+
}
|
|
21
|
+
stylesById.set(style.id, style);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const ShapeRecordType = createShapeRecordType(shapes);
|
|
25
|
+
const InstanceRecordType = createInstanceRecordType(stylesById);
|
|
26
|
+
return StoreSchema.create(
|
|
27
|
+
{
|
|
28
|
+
asset: AssetRecordType,
|
|
29
|
+
camera: CameraRecordType,
|
|
30
|
+
document: DocumentRecordType,
|
|
31
|
+
instance: InstanceRecordType,
|
|
32
|
+
instance_page_state: InstancePageStateRecordType,
|
|
33
|
+
page: PageRecordType,
|
|
34
|
+
shape: ShapeRecordType,
|
|
35
|
+
instance_presence: InstancePresenceRecordType,
|
|
36
|
+
pointer: PointerRecordType
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
snapshotMigrations: storeMigrations,
|
|
40
|
+
onValidationFailure,
|
|
41
|
+
createIntegrityChecker
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
export {
|
|
46
|
+
createTLSchema
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=createTLSchema.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/createTLSchema.ts"],
|
|
4
|
+
"sourcesContent": ["import { Migrations, StoreSchema } from '@bigbluebutton/store'\nimport { objectMapValues } from '@bigbluebutton/utils'\nimport { TLStoreProps, createIntegrityChecker, onValidationFailure } from './TLStore'\nimport { AssetRecordType } from './records/TLAsset'\nimport { CameraRecordType } from './records/TLCamera'\nimport { DocumentRecordType } from './records/TLDocument'\nimport { createInstanceRecordType } from './records/TLInstance'\nimport { PageRecordType } from './records/TLPage'\nimport { InstancePageStateRecordType } from './records/TLPageState'\nimport { PointerRecordType } from './records/TLPointer'\nimport { InstancePresenceRecordType } from './records/TLPresence'\nimport { TLRecord } from './records/TLRecord'\nimport { createShapeRecordType, getShapePropKeysByStyle } from './records/TLShape'\nimport { storeMigrations } from './store-migrations'\nimport { StyleProp } from './styles/StyleProp'\n\n/** @public */\nexport type SchemaShapeInfo = {\n\tmigrations?: Migrations\n\tprops?: Record<string, { validate: (prop: any) => any }>\n\tmeta?: Record<string, { validate: (prop: any) => any }>\n}\n\n/** @public */\nexport type TLSchema = StoreSchema<TLRecord, TLStoreProps>\n\n/**\n * Create a TLSchema with custom shapes. Custom shapes cannot override default shapes.\n *\n * @param opts - Options\n *\n * @public */\nexport function createTLSchema({ shapes }: { shapes: Record<string, SchemaShapeInfo> }): TLSchema {\n\tconst stylesById = new Map<string, StyleProp<unknown>>()\n\tfor (const shape of objectMapValues(shapes)) {\n\t\tfor (const style of getShapePropKeysByStyle(shape.props ?? {}).keys()) {\n\t\t\tif (stylesById.has(style.id) && stylesById.get(style.id) !== style) {\n\t\t\t\tthrow new Error(`Multiple StyleProp instances with the same id: ${style.id}`)\n\t\t\t}\n\t\t\tstylesById.set(style.id, style)\n\t\t}\n\t}\n\n\tconst ShapeRecordType = createShapeRecordType(shapes)\n\tconst InstanceRecordType = createInstanceRecordType(stylesById)\n\n\treturn StoreSchema.create(\n\t\t{\n\t\t\tasset: AssetRecordType,\n\t\t\tcamera: CameraRecordType,\n\t\t\tdocument: DocumentRecordType,\n\t\t\tinstance: InstanceRecordType,\n\t\t\tinstance_page_state: InstancePageStateRecordType,\n\t\t\tpage: PageRecordType,\n\t\t\tshape: ShapeRecordType,\n\t\t\tinstance_presence: InstancePresenceRecordType,\n\t\t\tpointer: PointerRecordType,\n\t\t},\n\t\t{\n\t\t\tsnapshotMigrations: storeMigrations,\n\t\t\tonValidationFailure,\n\t\t\tcreateIntegrityChecker: createIntegrityChecker,\n\t\t}\n\t)\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAqB,mBAAmB;AACxC,SAAS,uBAAuB;AAChC,SAAuB,wBAAwB,2BAA2B;AAC1E,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AACjC,SAAS,0BAA0B;AACnC,SAAS,gCAAgC;AACzC,SAAS,sBAAsB;AAC/B,SAAS,mCAAmC;AAC5C,SAAS,yBAAyB;AAClC,SAAS,kCAAkC;AAE3C,SAAS,uBAAuB,+BAA+B;AAC/D,SAAS,uBAAuB;AAmBzB,SAAS,eAAe,EAAE,OAAO,GAA0D;AACjG,QAAM,aAAa,oBAAI,IAAgC;AACvD,aAAW,SAAS,gBAAgB,MAAM,GAAG;AAC5C,eAAW,SAAS,wBAAwB,MAAM,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG;AACtE,UAAI,WAAW,IAAI,MAAM,EAAE,KAAK,WAAW,IAAI,MAAM,EAAE,MAAM,OAAO;AACnE,cAAM,IAAI,MAAM,kDAAkD,MAAM,EAAE,EAAE;AAAA,MAC7E;AACA,iBAAW,IAAI,MAAM,IAAI,KAAK;AAAA,IAC/B;AAAA,EACD;AAEA,QAAM,kBAAkB,sBAAsB,MAAM;AACpD,QAAM,qBAAqB,yBAAyB,UAAU;AAE9D,SAAO,YAAY;AAAA,IAClB;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,UAAU;AAAA,MACV,qBAAqB;AAAA,MACrB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,mBAAmB;AAAA,MACnB,SAAS;AAAA,IACV;AAAA,IACA;AAAA,MACC,oBAAoB;AAAA,MACpB;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|