From d263fb277107dbb91d7b8f7f4ebe8d4505e14545 Mon Sep 17 00:00:00 2001 From: Jamie Cope Date: Fri, 9 Jun 2023 11:46:36 -0400 Subject: [PATCH 1/6] Bugfix for #84 applying model pose to AnnotationView --- source/client/components/CVPoseTask.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/client/components/CVPoseTask.ts b/source/client/components/CVPoseTask.ts index 9a50abde..59166e59 100644 --- a/source/client/components/CVPoseTask.ts +++ b/source/client/components/CVPoseTask.ts @@ -30,6 +30,7 @@ import CVModel2 from "./CVModel2"; import CVTask from "./CVTask"; import PoseTaskView from "../ui/story/PoseTaskView"; +import CVAnnotationView from "./CVAnnotationView"; //////////////////////////////////////////////////////////////////////////////// @@ -201,6 +202,13 @@ export default class CVPoseTask extends CVTask _mat4.identity().setPosition(_axis); } + // Update annotation matrix + const annotations = this.activeModel.getComponent(CVAnnotationView); + const anno_mat = _mat4.clone(); + anno_mat.multiply(annotations.object3D.matrix); + annotations.object3D.matrix.copy(anno_mat); + annotations.object3D.matrixWorldNeedsUpdate = true; + // multiply delta transform with current model pose transform _mat4.multiply(this.activeModel.object3D.matrix); this.activeModel.setFromMatrix(_mat4); From 264350853ac38b1b98406a177e17e6549adb2c6f Mon Sep 17 00:00:00 2001 From: Jamie Cope Date: Mon, 26 Jun 2023 14:16:04 -0400 Subject: [PATCH 2/6] Updates for GA4 transition --- .env.template | 2 +- source/client/applications/ExplorerApplication.ts | 10 +++++----- source/client/components/CVARManager.ts | 8 ++++---- source/client/components/CVAnalytics.ts | 6 +++--- source/client/components/CVReader.ts | 2 +- source/client/components/CVToolProvider.ts | 2 +- source/client/explorer.hbs | 10 +++++++++- source/client/global.d.ts | 2 +- source/client/ui/explorer/ARMenu.ts | 4 ++-- source/client/ui/explorer/ContentView.ts | 2 +- source/client/ui/explorer/MainMenu.ts | 12 ++++++------ 11 files changed, 34 insertions(+), 26 deletions(-) diff --git a/.env.template b/.env.template index b9658c34..56e4d3af 100644 --- a/.env.template +++ b/.env.template @@ -3,4 +3,4 @@ VOYAGER_SERVER_PORT=8000 VOYAGER_SERVER_IPV4_ADDR=172.18.0.2 VOYAGER_SERVER_SUBNET=172.18.0.0/16 VOYAGER_LOCAL=false -VOYAGER_ANALYTICS_ID=UA-XXXXXX-X \ No newline at end of file +VOYAGER_ANALYTICS_ID=G-XXXXXXXXXX \ No newline at end of file diff --git a/source/client/applications/ExplorerApplication.ts b/source/client/applications/ExplorerApplication.ts index bf429217..22679619 100755 --- a/source/client/applications/ExplorerApplication.ts +++ b/source/client/applications/ExplorerApplication.ts @@ -401,7 +401,7 @@ Version: ${ENV_VERSION} } viewerIns.annotationsVisible.setValue(!viewerIns.annotationsVisible.value); - this.analytics.sendProperty("Annotations.Visible", viewerIns.annotationsVisible.value); + this.analytics.sendProperty("Annotations_Visible", viewerIns.annotationsVisible.value); } toggleReader() @@ -416,7 +416,7 @@ Version: ${ENV_VERSION} readerIns.articleId.setValue(reader.articles.length === 1 ? reader.articles[0].article.id : ""); } - this.analytics.sendProperty("Reader.Enabled", readerIns.enabled.value); + this.analytics.sendProperty("Reader_Enabled", readerIns.enabled.value); } toggleTours() @@ -436,7 +436,7 @@ Version: ${ENV_VERSION} tourIns.tourIndex.setValue(-1); // show tour menu } - this.analytics.sendProperty("Tours.Enabled", tourIns.enabled.value); + this.analytics.sendProperty("Tours_Enabled", tourIns.enabled.value); } toggleTools() @@ -449,7 +449,7 @@ Version: ${ENV_VERSION} } toolIns.visible.setValue(!toolIns.visible.value); - this.analytics.sendProperty("Tools.Visible", toolIns.visible.value); + this.analytics.sendProperty("Tools_Visible", toolIns.visible.value); } toggleMeasurement() @@ -464,7 +464,7 @@ Version: ${ENV_VERSION} const ARIns = this.system.getMainComponent(CVARManager).ins; ARIns.enabled.setValue(true); - this.analytics.sendProperty("AR.enabled", true); + this.analytics.sendProperty("AR_enabled", true); } // Returns an array of objects with the article data for the current scene diff --git a/source/client/components/CVARManager.ts b/source/client/components/CVARManager.ts index ee6325dd..7ffc8c77 100644 --- a/source/client/components/CVARManager.ts +++ b/source/client/components/CVARManager.ts @@ -155,19 +155,19 @@ export default class CVARManager extends Component if (isEnabled) { if(IS_WEBXR_AR_CANDIDATE) { this.launchWebXR(); - this.analytics.sendProperty("AR.Enabled", "WebXR"); + this.analytics.sendProperty("AR_Enabled", "WebXR"); } else if(IS_ANDROID) { this.launchSceneViewer(); - this.analytics.sendProperty("AR.Enabled", "SceneViewer"); + this.analytics.sendProperty("AR_Enabled", "SceneViewer"); } else if(IS_IOS && IS_AR_QUICKLOOK_CANDIDATE) { this.launchQuickLook(); - this.analytics.sendProperty("AR.Enabled", "QuickLook"); + this.analytics.sendProperty("AR_Enabled", "QuickLook"); } else { isEnabled = false; - this.analytics.sendProperty("AR.Enabled", "Unavailable"); + this.analytics.sendProperty("AR_Enabled", "Unavailable"); } } diff --git a/source/client/components/CVAnalytics.ts b/source/client/components/CVAnalytics.ts index 58d1a0a7..7877ff41 100755 --- a/source/client/components/CVAnalytics.ts +++ b/source/client/components/CVAnalytics.ts @@ -59,9 +59,9 @@ export default class CVAnalytics extends Component } // track custom event - if (typeof ga === "function" && ENV_PRODUCTION) { - const text = value !== undefined ? value.toString() : undefined; - ga("send", "event", this._title, property, text); + if (typeof gtag === "function" && ENV_PRODUCTION) { + const text : string = value !== undefined ? value.toString() : 'undefined'; + gtag("event", property.toLowerCase(), {"scene_title": this._title, "event_value": text}); } } } \ No newline at end of file diff --git a/source/client/components/CVReader.ts b/source/client/components/CVReader.ts index c37b355b..f6780662 100644 --- a/source/client/components/CVReader.ts +++ b/source/client/components/CVReader.ts @@ -139,7 +139,7 @@ export default class CVReader extends Component if (article) { this.readArticle(article); - this.analytics.sendProperty("Reader.ArticleId", article.defaultTitle); + this.analytics.sendProperty("Reader_ArticleId", article.defaultTitle); } } if (ins.refresh.changed) { diff --git a/source/client/components/CVToolProvider.ts b/source/client/components/CVToolProvider.ts index dee38e8b..d5d116e9 100644 --- a/source/client/components/CVToolProvider.ts +++ b/source/client/components/CVToolProvider.ts @@ -69,7 +69,7 @@ export default class CVToolProvider extends CComponentProvider { tool.activateTool(); - this.analytics.sendProperty("Tools.ActiveTool", tool.text); + this.analytics.sendProperty("Tools_ActiveTool", tool.text); } protected deactivateComponent(tool: CVTool) diff --git a/source/client/explorer.hbs b/source/client/explorer.hbs index 9be6bd51..57c207ba 100644 --- a/source/client/explorer.hbs +++ b/source/client/explorer.hbs @@ -8,7 +8,7 @@ {{#unless htmlWebpackPlugin.options.isDevelopment}} - + {{/unless}} diff --git a/source/client/global.d.ts b/source/client/global.d.ts index c013920b..3076ad5f 100644 --- a/source/client/global.d.ts +++ b/source/client/global.d.ts @@ -16,4 +16,4 @@ declare const ENV_PRODUCTION: boolean; declare const ENV_LOCAL: boolean; // Google Analytics global variable -declare const ga: any; \ No newline at end of file +declare const gtag: any; \ No newline at end of file diff --git a/source/client/ui/explorer/ARMenu.ts b/source/client/ui/explorer/ARMenu.ts index 615c9446..fda032cb 100644 --- a/source/client/ui/explorer/ARMenu.ts +++ b/source/client/ui/explorer/ARMenu.ts @@ -85,7 +85,7 @@ export default class ARMenu extends DocumentView const readerIns = this.activeDocument.setup.reader.ins; readerIns.enabled.setValue(!readerIns.enabled.value); - this.analytics.sendProperty("Reader.Enabled", readerIns.enabled.value); + this.analytics.sendProperty("Reader_Enabled", readerIns.enabled.value); } protected onToggleNarration() @@ -105,7 +105,7 @@ export default class ARMenu extends DocumentView }*/ viewerIns.annotationsVisible.setValue(!viewerIns.annotationsVisible.value); - this.analytics.sendProperty("Annotations.Visible", viewerIns.annotationsVisible.value); + this.analytics.sendProperty("Annotations_Visible", viewerIns.annotationsVisible.value); } protected onActiveDocument(previous: CVDocument, next: CVDocument) diff --git a/source/client/ui/explorer/ContentView.ts b/source/client/ui/explorer/ContentView.ts index 441961ea..8ca41d02 100644 --- a/source/client/ui/explorer/ContentView.ts +++ b/source/client/ui/explorer/ContentView.ts @@ -158,7 +158,7 @@ export default class ContentView extends DocumentView if(!isLoading && isInitialLoad) { // send load timer event - this.analytics.sendProperty("Loading.Time", this.analytics.getTimerTime()/1000); + this.analytics.sendProperty("Loading_Time", this.analytics.getTimerTime()/1000); this.analytics.resetTimer(); this.assetManager.initialLoad = false; diff --git a/source/client/ui/explorer/MainMenu.ts b/source/client/ui/explorer/MainMenu.ts index 34ec2490..4068af20 100644 --- a/source/client/ui/explorer/MainMenu.ts +++ b/source/client/ui/explorer/MainMenu.ts @@ -165,7 +165,7 @@ export default class MainMenu extends DocumentView readerIns.articleId.setValue(reader.articles.length === 1 ? reader.articles[0].article.id : ""); } - this.analytics.sendProperty("Reader.Enabled", readerIns.enabled.value); + this.analytics.sendProperty("Reader_Enabled", readerIns.enabled.value); } protected onToggleTours() @@ -185,7 +185,7 @@ export default class MainMenu extends DocumentView tourIns.tourIndex.setValue(-1); // show tour menu } - this.analytics.sendProperty("Tours.Enabled", tourIns.enabled.value); + this.analytics.sendProperty("Tours_Enabled", tourIns.enabled.value); } protected onToggleAnnotations() @@ -198,7 +198,7 @@ export default class MainMenu extends DocumentView } viewerIns.annotationsVisible.setValue(!viewerIns.annotationsVisible.value); - this.analytics.sendProperty("Annotations.Visible", viewerIns.annotationsVisible.value); + this.analytics.sendProperty("Annotations_Visible", viewerIns.annotationsVisible.value); } protected onToggleShare() @@ -213,14 +213,14 @@ export default class MainMenu extends DocumentView this.setElementFocus("share-btn"); }); - this.analytics.sendProperty("Menu.Share"); + this.analytics.sendProperty("Menu_Share"); } } protected onToggleFullscreen() { this.fullscreen.toggle(); - this.analytics.sendProperty("Menu.Fullscreen"); + this.analytics.sendProperty("Menu_Fullscreen"); } protected onToggleTools() @@ -233,7 +233,7 @@ export default class MainMenu extends DocumentView } toolIns.visible.setValue(!toolIns.visible.value); - this.analytics.sendProperty("Tools.Visible", toolIns.visible.value); + this.analytics.sendProperty("Tools_Visible", toolIns.visible.value); } protected onEnterAR() From d0ca601fa188bc2150382fe57b13c331b59839a1 Mon Sep 17 00:00:00 2001 From: Jamie Cope Date: Wed, 28 Jun 2023 13:59:34 -0400 Subject: [PATCH 3/6] Adding 'play' indicator for menu items --- source/client/ui/explorer/ReaderView.ts | 7 +++++-- source/client/ui/explorer/TourMenu.ts | 5 ++++- source/client/ui/explorer/styles.scss | 9 +++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/source/client/ui/explorer/ReaderView.ts b/source/client/ui/explorer/ReaderView.ts index 6e90f3c6..e70f9a69 100644 --- a/source/client/ui/explorer/ReaderView.ts +++ b/source/client/ui/explorer/ReaderView.ts @@ -45,8 +45,11 @@ export default class ReaderView extends DocumentView { const article = entry.article; - return html`
this.onKeyDown(e, article.id)} class="sv-entry" @click=${e => this.onClickArticle(e, article.id)}> -

${article.title}

+ return html`
this.onKeyDown(e, article.id)} class="sv-entry" @click=${e => this.onClickArticle(e, article.id)}> +
+

${article.title}

+ +

${article.lead}

`; } diff --git a/source/client/ui/explorer/TourMenu.ts b/source/client/ui/explorer/TourMenu.ts index 9fc27845..dbd76480 100644 --- a/source/client/ui/explorer/TourMenu.ts +++ b/source/client/ui/explorer/TourMenu.ts @@ -53,7 +53,10 @@ export default class TourMenu extends CustomElement protected renderEntry(tour: ITour, index: number) { return html`
this.onKeyDown(e, index)} class="sv-entry" @click=${e => this.onClickTour(e, index)}> -

${Object.keys(tour.titles).length > 0 ? tour.titles[ELanguageType[this.activeLanguage]] : tour.title}

+
+

${Object.keys(tour.titles).length > 0 ? tour.titles[ELanguageType[this.activeLanguage]] || "undefined" : tour.title}

+ +

${Object.keys(tour.leads).length > 0 ? tour.leads[ELanguageType[this.activeLanguage]] : tour.lead}

`; } diff --git a/source/client/ui/explorer/styles.scss b/source/client/ui/explorer/styles.scss index 3c967607..533cffba 100644 --- a/source/client/ui/explorer/styles.scss +++ b/source/client/ui/explorer/styles.scss @@ -820,6 +820,15 @@ $tour-entry-indent: 12px; background-color: $color-paragraph-hover; } } + + .sv-titlebar { + display: flex; + } + + .ff-icon { + margin: auto 10px auto auto; + height: 1.5em; + } } //////////////////////////////////////////////////////////////////////////////// From f8935cea429265d9ce756965e6e5e1c5cacec057 Mon Sep 17 00:00:00 2001 From: Jamie Cope Date: Wed, 28 Jun 2023 14:33:29 -0400 Subject: [PATCH 4/6] Play icon style update --- source/client/ui/explorer/styles.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/client/ui/explorer/styles.scss b/source/client/ui/explorer/styles.scss index 533cffba..b3b95995 100644 --- a/source/client/ui/explorer/styles.scss +++ b/source/client/ui/explorer/styles.scss @@ -828,6 +828,10 @@ $tour-entry-indent: 12px; .ff-icon { margin: auto 10px auto auto; height: 1.5em; + border-radius: 60px; + border-style: solid; + box-shadow: 0 0 2px $menu-color-text-dim; + padding: 0.6em 0.6em; } } From d5e4d1fa10cb8c541e457f4b03d521d38661f4ea Mon Sep 17 00:00:00 2001 From: Jamie Cope Date: Thu, 29 Jun 2023 08:10:05 -0400 Subject: [PATCH 5/6] Style fix & vulnerability update --- package-lock.json | 427 +++++++++++++++++--------- package.json | 4 +- source/client/ui/explorer/styles.scss | 24 +- 3 files changed, 290 insertions(+), 165 deletions(-) diff --git a/package-lock.json b/package-lock.json index d1c44371..3ec32873 100644 --- a/package-lock.json +++ b/package-lock.json @@ -139,9 +139,9 @@ }, "dependencies": { "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -199,9 +199,9 @@ "dev": true }, "@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "version": "8.40.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.2.tgz", + "integrity": "sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==", "dev": true, "requires": { "@types/estree": "*", @@ -209,9 +209,9 @@ } }, "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "requires": { "@types/eslint": "*", @@ -219,9 +219,9 @@ } }, "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true }, "@types/html-minifier-terser": { @@ -282,148 +282,148 @@ "dev": true }, "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, @@ -494,9 +494,9 @@ "dev": true }, "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true }, "agent-base": { @@ -1329,9 +1329,9 @@ }, "dependencies": { "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -1764,9 +1764,9 @@ } }, "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", "dev": true }, "escalade": { @@ -1793,14 +1793,6 @@ "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } } }, "esrecurse": { @@ -1810,12 +1802,20 @@ "dev": true, "requires": { "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } } }, "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "etag": { @@ -2802,12 +2802,6 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -3022,9 +3016,9 @@ "integrity": "sha512-B9btcSgPYb1q4oSOb/PrOT6Z/H+r6xuNzfH4lFli/AWhYwdtrgQkQWBbIc6mdnf6E2IL3gDXdkkqNktpU0OZQA==" }, "loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true }, "loader-utils": { @@ -3241,9 +3235,9 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -3674,9 +3668,9 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -5707,9 +5701,9 @@ }, "dependencies": { "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -5971,9 +5965,9 @@ "dev": true }, "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -6009,42 +6003,173 @@ } }, "webpack": { - "version": "5.67.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", - "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", + "version": "5.88.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", + "integrity": "sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", + "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "dependencies": { + "@jridgewell/source-map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "acorn": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", + "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "terser": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz", + "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + } } } }, diff --git a/package.json b/package.json index 276551bd..8be1c38a 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "voyager", - "version": "0.27.0", + "version": "0.30.0", "description": "Smithsonian DPO Voyager - 3D Explorer and Tool Suite", "scripts": { "start": "npm run server", @@ -102,7 +102,7 @@ "typedoc": "^0.22.11", "typescript": "^4.3.5", "typescript-json-schema": "^0.50.1", - "webpack": "^5.67.0", + "webpack": "^5.88.1", "webpack-cli": "^4.9.2" } } diff --git a/source/client/ui/explorer/styles.scss b/source/client/ui/explorer/styles.scss index b3b95995..6387571e 100644 --- a/source/client/ui/explorer/styles.scss +++ b/source/client/ui/explorer/styles.scss @@ -819,19 +819,19 @@ $tour-entry-indent: 12px; &:hover { background-color: $color-paragraph-hover; } - } - - .sv-titlebar { - display: flex; - } - .ff-icon { - margin: auto 10px auto auto; - height: 1.5em; - border-radius: 60px; - border-style: solid; - box-shadow: 0 0 2px $menu-color-text-dim; - padding: 0.6em 0.6em; + .sv-titlebar { + display: flex; + } + + .ff-icon { + margin: auto 10px auto auto; + height: 1.5em; + border-radius: 60px; + border-style: solid; + box-shadow: 0 0 2px $menu-color-text-dim; + padding: 0.6em 0.6em; + } } } From a727bbbc710d1177eb33acab0b97b8fe1e1c2756 Mon Sep 17 00:00:00 2001 From: Jamie Cope Date: Thu, 29 Jun 2023 17:03:39 -0400 Subject: [PATCH 6/6] Reimplemtation of annotation fix to be more generic --- source/client/components/CVAnnotationView.ts | 7 +++-- source/client/components/CVModel2.ts | 33 ++++++++++++++++++++ source/client/components/CVPoseTask.ts | 7 ----- 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/source/client/components/CVAnnotationView.ts b/source/client/components/CVAnnotationView.ts index 9d83ab63..5f07b504 100755 --- a/source/client/components/CVAnnotationView.ts +++ b/source/client/components/CVAnnotationView.ts @@ -351,9 +351,12 @@ export default class CVAnnotationView extends CObject3D this.changed = true; } - updateAnnotation(annotation: Annotation) + updateAnnotation(annotation: Annotation, forceSprite?: boolean) { - //this.updateSprite(annotation); + if(forceSprite) { + this.updateSprite(annotation); + } + this.changed = true; } diff --git a/source/client/components/CVModel2.ts b/source/client/components/CVModel2.ts index 759b8cc7..23f7b5ac 100644 --- a/source/client/components/CVModel2.ts +++ b/source/client/components/CVModel2.ts @@ -45,7 +45,9 @@ import CVSetup from "./CVSetup"; const _vec3a = new Vector3(); const _vec3b = new Vector3(); const _quat = new Quaternion(); +const _quat1 = new Quaternion(); const _box = new Box3(); +const _mat4 = new Matrix4(); export interface ITagUpdateEvent extends ITypedEvent<"tag-update"> { @@ -135,6 +137,8 @@ export default class CVModel2 extends CObject3D private _visible: boolean = true; private _boxFrame: Mesh = null; private _localBoundingBox = new Box3(); + private _prevPosition: Vector3 = new Vector3(0.0,0.0,0.0); + private _prevRotation: Vector3 = new Vector3(0.0,0.0,0.0); constructor(node: Node, id: string) { @@ -360,11 +364,13 @@ export default class CVModel2 extends CObject3D if (data.translation) { ins.position.copyValue(data.translation); + this._prevPosition.fromArray(data.translation); } if (data.rotation) { _quat.fromArray(data.rotation); helpers.quaternionToDegrees(_quat, CVModel2.rotationOrder, ins.rotation.value); + this._prevRotation.fromArray(ins.rotation.value); ins.rotation.set(); } @@ -574,6 +580,33 @@ export default class CVModel2 extends CObject3D object3D.matrix.compose(_vec3a, _quat, _vec3b); object3D.matrixWorldNeedsUpdate = true; + //TODO: Cleanup & optimize annotation update + helpers.degreesToQuaternion([this._prevRotation.x, this._prevRotation.y, this._prevRotation.z], CVModel2.rotationOrder, _quat1); + _quat1.invert(); + _vec3b.setScalar(1); + _mat4.compose(_vec3a.fromArray(ins.position.value), _quat, _vec3b); + + const annotations = this.getComponent(CVAnnotationView); + annotations.getAnnotations().forEach(anno => { + _vec3a.fromArray(anno.data.position); + _vec3a.sub(this._prevPosition); + _vec3a.applyQuaternion(_quat1); + _vec3a.applyMatrix4(_mat4); + + anno.data.position = _vec3a.toArray(); + + _vec3a.fromArray(anno.data.direction); + _vec3a.applyQuaternion(_quat1); + _vec3a.applyQuaternion(_quat); + + anno.data.direction = _vec3a.toArray(); + + anno.update(); + annotations.updateAnnotation(anno, true); + }); + this._prevPosition.copy(_vec3a.fromArray(ins.position.value)); + this._prevRotation.copy(_vec3a.fromArray(ins.rotation.value)); + this.outs.updated.set(); } diff --git a/source/client/components/CVPoseTask.ts b/source/client/components/CVPoseTask.ts index 59166e59..768f955d 100644 --- a/source/client/components/CVPoseTask.ts +++ b/source/client/components/CVPoseTask.ts @@ -202,13 +202,6 @@ export default class CVPoseTask extends CVTask _mat4.identity().setPosition(_axis); } - // Update annotation matrix - const annotations = this.activeModel.getComponent(CVAnnotationView); - const anno_mat = _mat4.clone(); - anno_mat.multiply(annotations.object3D.matrix); - annotations.object3D.matrix.copy(anno_mat); - annotations.object3D.matrixWorldNeedsUpdate = true; - // multiply delta transform with current model pose transform _mat4.multiply(this.activeModel.object3D.matrix); this.activeModel.setFromMatrix(_mat4);