diff --git a/app/src/components/items/uv/universalViewer.tsx b/app/src/components/items/uv/universalViewer.tsx index 5445c234..aff0b127 100644 --- a/app/src/components/items/uv/universalViewer.tsx +++ b/app/src/components/items/uv/universalViewer.tsx @@ -7,6 +7,7 @@ import React, { useEffect, useMemo, useRef } from "react"; import { IIIFEvents as BaseEvents, IIIFURLAdapter } from "universalviewer"; import { useRouter, usePathname, useSearchParams } from "next/navigation"; import { useCanvasContext } from "../../../context/CanvasProvider"; +import { sendDownloadEvent } from "@/src/utils/ga4Utils"; export type UniversalViewerProps = { config?: any; @@ -70,33 +71,8 @@ const UniversalViewer: React.FC = React.memo( }, [canvasIndex, uv]); useEffect(() => { - let mo: MutationObserver | undefined; if (uv) { - // Hide specific default download options by button/anchor text. Right now, just "Whole imiage". - function pruneDownloadButtons() { - const host = - document.querySelector(".uv-iiif-extension-host") || document; - const nodes = host.querySelectorAll( - "li.option.single > button, li.option.single button, li.option.single > a, li.option.single a" - ); - nodes.forEach((el) => { - const text = (el.textContent || "").trim().toLowerCase(); - const isWholeImage = text.startsWith("whole image"); - - if (isWholeImage) { - const li = el.closest("li"); - if (li instanceof HTMLElement) { - li.style.display = "none"; - } else { - (el as HTMLElement).style.display = "none"; - } - // Uncomment to verify what got hidden: - // console.log("[UV prune] hid", text, el); - } - }); - } - // override config using an inline json object uv.on("configure", function ({ config, cb }) { console.log("config on uv.on(configure) is : ", config); @@ -211,6 +187,8 @@ const UniversalViewer: React.FC = React.memo( }, downloadDialogue: { options: { + downloadWholeImageHighResEnabled: false, + downloadWholeImageLowResEnabled: false, downloadCurrentViewEnabled: false, }, }, @@ -218,34 +196,37 @@ const UniversalViewer: React.FC = React.memo( }, [uv] ); - - // Initial pass (in case the dialog already exists) - pruneDownloadButtons(); - - // Watch for dialog render/changes and re-prune - try { - mo = new MutationObserver(() => pruneDownloadButtons()); - mo.observe(document.body, { subtree: true, childList: true }); - } catch {} }); } // cleanup: disconnect observer on unmount / dependency change - return () => { - try { - mo?.disconnect(); - } catch {} - }; }, [canvasIndex, uv]); useEvent(uv, BaseEvents.CANVAS_INDEX_CHANGE, (i) => { setCurrentCanvasIndex(i); }); - useEvent(uv, BaseEvents.DOWNLOAD, (i) => { - console.log("blah i ", i); + useEvent(uv, BaseEvents.DOWNLOAD, ({ label }) => { + const fileInfo = parseUVDownloadFilename(label); + if (fileInfo) { + sendDownloadEvent(fileInfo.name, fileInfo.extension); + } else { + console.log(`Could not parse file info from label ${label}`); + sendDownloadEvent(label); + } }); + const parseUVDownloadFilename = (fileLabel: string) => { + const match = fileLabel.match(/^(.*)\s\((.*)\)$/); + if (match) { + return { + name: match[1], + extension: match[2], + }; + } + return null; + }; + return ( <>
=18" } }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/sunos-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", - "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "sunos" @@ -2396,12 +2410,13 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", - "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -2411,12 +2426,13 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", - "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", "cpu": [ "ia32" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -2426,12 +2442,13 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", - "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -2497,15 +2514,19 @@ } }, "node_modules/@google/model-viewer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@google/model-viewer/-/model-viewer-1.12.1.tgz", - "integrity": "sha512-GOf/By81rbxSmwWRVxBtlY5b3050msJ+BDWqonPj7M0/I7rNS/vVNjbLxTofbGjZObS3n0ELHj8TZ47UtkZbtg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@google/model-viewer/-/model-viewer-4.2.0.tgz", + "integrity": "sha512-RjpAI5cLs9CdvPcMRsOs8Bea/lNmGTTyaPyl16o9Fv6Qn8VSpgBMmXFr/11yb0hTrsojp2dOACEcY77R8hVUVA==", + "license": "Apache-2.0", "dependencies": { - "lit": "^2.2.3", - "three": "^0.139.2" + "@monogrid/gainmap-js": "^3.1.0", + "lit": "^3.2.1" }, "engines": { "node": ">=6.0.0" + }, + "peerDependencies": { + "three": "^0.182.0" } }, "node_modules/@grpc/grpc-js": { @@ -2627,56 +2648,6 @@ "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-2.0.34.tgz", "integrity": "sha512-zydaVQrBPlZhn+PwHOPGnvffCppxw01TyYXuD90CcYiAwwkrPheui9WWkpLyKAUVGfYRXmyF8XJS4Qp+obyiUg==" }, - "node_modules/@iiif/iiif-gallery-component": { - "version": "1.1.23", - "resolved": "https://registry.npmjs.org/@iiif/iiif-gallery-component/-/iiif-gallery-component-1.1.23.tgz", - "integrity": "sha512-r6eUdBlCPhlqWp9fNiTkS0GeYFzFk0yXlEb4z1vRgGYdjRNUyPhe4doQvXgxQt7oShPLdpjfl92etydBwA6pfQ==", - "dependencies": { - "@edsilv/jquery-plugins": "1.0.7", - "@edsilv/utils": "1.0.2", - "@iiif/base-component": "2.0.1", - "@iiif/manifold": "2.*", - "@iiif/vocabulary": "1.0.11", - "@types/jquery": "3.3.14", - "manifesto.js": "4.*" - } - }, - "node_modules/@iiif/iiif-gallery-component/node_modules/@iiif/vocabulary": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@iiif/vocabulary/-/vocabulary-1.0.11.tgz", - "integrity": "sha512-JjPbZ+SCn0ljsfs9Nf0U1OWNZK7tauw7iHezDJA+28AAzmMwpFS/lTOe/4N0ynZsnk4x7cA9NL6CK3K0zDd50w==" - }, - "node_modules/@iiif/iiif-gallery-component/node_modules/@types/jquery": { - "version": "3.3.14", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.14.tgz", - "integrity": "sha512-M6m6Xm6RtsmYOlGk7YS0D7T19Axsc3x30+Mj9b7Fqb4c7c2hPmvBJsrMmuhwJy96iSx/3BQkOmbtEKijs2iQPg==", - "dependencies": { - "@types/sizzle": "*" - } - }, - "node_modules/@iiif/iiif-metadata-component": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@iiif/iiif-metadata-component/-/iiif-metadata-component-1.2.2.tgz", - "integrity": "sha512-5Ut+zjlmHlBh64t8qBT7kp465WbZ8cV5+DFi6RQibW9dt1rcSjoHywToOcLxSyV2Uq8DSu9FNZ3Fm+a8SNLaQw==", - "dependencies": { - "@edsilv/jquery-plugins": "1.0.7", - "@edsilv/utils": "1.0.2", - "@iiif/base-component": "2.*", - "@iiif/manifold": "^2.1.1", - "@iiif/vocabulary": "1.*", - "manifesto.js": "^4.2.21" - } - }, - "node_modules/@iiif/iiif-tree-component": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@iiif/iiif-tree-component/-/iiif-tree-component-2.0.6.tgz", - "integrity": "sha512-CgO5Ctk8/wr56cS5NZj4BLGle8weEA6+yYyn4twrZxxnXsSpNqg0m8P5FA/B3RyX0A50ulWmHGYNgoja7sgWlA==", - "dependencies": { - "@iiif/base-component": "2.*", - "@iiif/manifold": "2.*", - "manifesto.js": "4.*" - } - }, "node_modules/@iiif/manifold": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@iiif/manifold/-/manifold-2.2.0.tgz", @@ -3690,16 +3661,18 @@ } }, "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.5.0.tgz", - "integrity": "sha512-HLomZXMmrCFHSRKESF5vklAKsDY7/fsT/ZhqCu3V0UoW/Qbv8wxmO4W9bx4KnCCF2Zak4yuk+AGraK/bPmI4kA==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.5.1.tgz", + "integrity": "sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==", + "license": "BSD-3-Clause" }, "node_modules/@lit/reactive-element": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", - "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.2.tgz", + "integrity": "sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==", + "license": "BSD-3-Clause", "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.0.0" + "@lit-labs/ssr-dom-shim": "^1.5.0" } }, "node_modules/@mapbox/node-pre-gyp": { @@ -3783,6 +3756,18 @@ "node": ">=10" } }, + "node_modules/@monogrid/gainmap-js": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@monogrid/gainmap-js/-/gainmap-js-3.4.0.tgz", + "integrity": "sha512-2Z0FATFHaoYJ8b+Y4y4Hgfn3FRFwuU5zRrk+9dFWp4uGAdHGqVEdP7HP+gLA3X469KXHmfupJaUbKo1b/aDKIg==", + "license": "MIT", + "dependencies": { + "promise-worker-transferable": "^1.0.4" + }, + "peerDependencies": { + "three": ">= 0.159.0" + } + }, "node_modules/@napi-rs/wasm-runtime": { "version": "0.2.12", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", @@ -5193,11 +5178,6 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.26.0.tgz", "integrity": "sha512-WFHp9YUJQ6CKshqoC37iOlHnQSmxNc795UhB26CyBBttrN9svdIrUjl/NjnNmfcwtncN0h/0PPAFWv9ovP8mLA==" }, - "node_modules/@types/sizzle": { - "version": "2.3.10", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.10.tgz", - "integrity": "sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==" - }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", @@ -5218,7 +5198,8 @@ "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" }, "node_modules/@types/ua-parser-js": { "version": "0.7.39", @@ -8927,10 +8908,11 @@ } }, "node_modules/esbuild": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", - "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -8938,31 +8920,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.2", - "@esbuild/android-arm": "0.24.2", - "@esbuild/android-arm64": "0.24.2", - "@esbuild/android-x64": "0.24.2", - "@esbuild/darwin-arm64": "0.24.2", - "@esbuild/darwin-x64": "0.24.2", - "@esbuild/freebsd-arm64": "0.24.2", - "@esbuild/freebsd-x64": "0.24.2", - "@esbuild/linux-arm": "0.24.2", - "@esbuild/linux-arm64": "0.24.2", - "@esbuild/linux-ia32": "0.24.2", - "@esbuild/linux-loong64": "0.24.2", - "@esbuild/linux-mips64el": "0.24.2", - "@esbuild/linux-ppc64": "0.24.2", - "@esbuild/linux-riscv64": "0.24.2", - "@esbuild/linux-s390x": "0.24.2", - "@esbuild/linux-x64": "0.24.2", - "@esbuild/netbsd-arm64": "0.24.2", - "@esbuild/netbsd-x64": "0.24.2", - "@esbuild/openbsd-arm64": "0.24.2", - "@esbuild/openbsd-x64": "0.24.2", - "@esbuild/sunos-x64": "0.24.2", - "@esbuild/win32-arm64": "0.24.2", - "@esbuild/win32-ia32": "0.24.2", - "@esbuild/win32-x64": "0.24.2" + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" } }, "node_modules/esbuild-plugin-less": { @@ -10421,6 +10404,7 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "license": "MIT", "dependencies": { "min-document": "^2.19.0", "process": "^0.11.10" @@ -11450,6 +11434,12 @@ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "license": "MIT" + }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -13548,29 +13538,32 @@ } }, "node_modules/lit": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.8.0.tgz", - "integrity": "sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.2.tgz", + "integrity": "sha512-NF9zbsP79l4ao2SNrH3NkfmFgN/hBYSQo90saIVI1o5GpjAdCPVstVzO1MrLOakHoEhYkrtRjPK6Ob521aoYWQ==", + "license": "BSD-3-Clause", "dependencies": { - "@lit/reactive-element": "^1.6.0", - "lit-element": "^3.3.0", - "lit-html": "^2.8.0" + "@lit/reactive-element": "^2.1.0", + "lit-element": "^4.2.0", + "lit-html": "^3.3.0" } }, "node_modules/lit-element": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", - "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.2.tgz", + "integrity": "sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==", + "license": "BSD-3-Clause", "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.1.0", - "@lit/reactive-element": "^1.3.0", - "lit-html": "^2.8.0" + "@lit-labs/ssr-dom-shim": "^1.5.0", + "@lit/reactive-element": "^2.1.0", + "lit-html": "^3.3.0" } }, "node_modules/lit-html": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", - "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.2.tgz", + "integrity": "sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==", + "license": "BSD-3-Clause", "dependencies": { "@types/trusted-types": "^2.0.2" } @@ -13953,17 +13946,28 @@ "version": "4.2.15", "resolved": "https://registry.npmjs.org/mediaelement/-/mediaelement-4.2.15.tgz", "integrity": "sha512-WMdzx6Vwzqpby6ooLiCpB/EZyWKtmlWrp9nr325ORJP58mv1FyLcT/1U2LDLXruLp+E/9R9kIdJkfGGnsi6rLg==", + "license": "MIT", "dependencies": { "global": "^4.3.1" } }, "node_modules/mediaelement-plugins": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/mediaelement-plugins/-/mediaelement-plugins-2.5.1.tgz", - "integrity": "sha512-I4gcdmSDkfutKGV8WOat5NW60pnv4OdYNDfmWtRTJ3hGTxzJpRUNFL/qaHWv7ueTschzSPoYgZj1kc4f/4UjLw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mediaelement-plugins/-/mediaelement-plugins-5.0.0.tgz", + "integrity": "sha512-KlrHgqDM/gf2GxyIslbQSMOTozuUBkHO6SlSleux+BsGUr+4LChPzdrsopXvgycaI9rQhOZxfRx9fZXFyTnkzA==", + "dependencies": { + "global": "^4.3.1", + "mediaelement": "^5.0.1" + } + }, + "node_modules/mediaelement-plugins/node_modules/mediaelement": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/mediaelement/-/mediaelement-5.1.2.tgz", + "integrity": "sha512-Rr7WGTD4cSJs7ASHCp6gdF+e2PXecVXCW9T4fpcwkbX5d58I3Mdtg/o2E3vLOaQ8Li/DoHXwo91SVpUINFQ3cQ==", + "license": "MIT", "dependencies": { "global": "^4.3.1", - "mediaelement": "^4.0.7" + "svg4everybody": "^2.1.9" } }, "node_modules/merge-stream": { @@ -14079,6 +14083,7 @@ "version": "2.19.2", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.2.tgz", "integrity": "sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==", + "license": "MIT", "dependencies": { "dom-walk": "^0.1.0" } @@ -17233,6 +17238,7 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -17512,6 +17518,16 @@ "asap": "~2.0.6" } }, + "node_modules/promise-worker-transferable": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/promise-worker-transferable/-/promise-worker-transferable-1.0.4.tgz", + "integrity": "sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==", + "license": "Apache-2.0", + "dependencies": { + "is-promise": "^2.1.0", + "lie": "^3.0.2" + } + }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -19484,6 +19500,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg4everybody": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/svg4everybody/-/svg4everybody-2.1.9.tgz", + "integrity": "sha512-AS9WORVV/vk520ZHxGTlQzyDBizp/h6WyAYUbKhze/kwvQr43DwJpkIIPBomsUyKqN7N+h1deF92N9PmW+o+9A==", + "license": "CC0-1.0", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/svgo": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", @@ -19968,9 +19993,11 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/three": { - "version": "0.139.2", - "resolved": "https://registry.npmjs.org/three/-/three-0.139.2.tgz", - "integrity": "sha512-gV7q7QY8rogu7HLFZR9cWnOQAUedUhu2WXAnpr2kdXZP9YDKsG/0ychwQvWkZN5PlNw9mv5MoCTin6zNTXoONg==" + "version": "0.182.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.182.0.tgz", + "integrity": "sha512-GbHabT+Irv+ihI1/f5kIIsZ+Ef9Sl5A1Y7imvS5RQjWgtTPfPnZ43JmlYI7NtCRDK9zir20lQpfg8/9Yd02OvQ==", + "license": "MIT", + "peer": true }, "node_modules/threejs-meshline": { "version": "2.0.12", @@ -20477,22 +20504,17 @@ } }, "node_modules/universalviewer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/universalviewer/-/universalviewer-4.1.0.tgz", - "integrity": "sha512-JwbuZ/AMA4M7ilcBZp0Yt5R28CVbWwflGOfKFckU7jOQuRzEmehKcNPZ8aBTBTjqa703vB2EDGPetkKlE1Yf2Q==", + "version": "4.3.0-rc4", + "resolved": "https://registry.npmjs.org/universalviewer/-/universalviewer-4.3.0-rc4.tgz", + "integrity": "sha512-JcNlL8k/hpZWzs+/4iU2wOvpEfD0PYII9rdBZxSB8Pd5TUSMuFaWyx0y4A32n1Gq1K2NWocems+Ve7yVw2HJyA==", + "license": "MIT", "dependencies": { - "@edsilv/http-status-codes": "1.0.3", - "@edsilv/key-codes": "1.0.0", - "@edsilv/utils": "^1.0.2", - "@google/model-viewer": "^1.9.2", + "@google/model-viewer": "^4.0.0", "@iiif/base-component": "2.0.1", "@iiif/iiif-av-component": "1.2.4", - "@iiif/iiif-gallery-component": "^1.1.22", - "@iiif/iiif-metadata-component": "^1.2.1", - "@iiif/iiif-tree-component": "2.0.6", - "@iiif/manifold": "^2.1.1", + "@iiif/manifold": "^2.2.0", "@iiif/presentation-3": "^1.0.5", - "@iiif/vocabulary": "^1.0.23", + "@iiif/vocabulary": "^1.0.31", "@openseadragon-imaging/openseadragon-viewerinputhook": "^2.2.1", "@universalviewer/aleph": "0.0.21", "@universalviewer/uv-ebook-components": "1.0.2", @@ -20500,38 +20522,60 @@ "classnames": "^2.3.1", "clean-css": "^5.2.2", "copyfiles": "^2.4.1", - "esbuild": "^0.24.0", + "esbuild": "^0.25.0", "esbuild-plugin-less": "^1.1.5", "esbuild-plugin-svg": "^0.1.0", "jquery": "3.5.0", "jsviews": "1.0.15", "less-plugin-clean-css": "^1.5.1", - "manifesto.js": "^4.2.21", + "manifesto.js": "^4.3.0", "mediaelement": "4.2.15", - "mediaelement-plugins": "2.5.1", - "openseadragon": "4.1.1", + "mediaelement-plugins": "5.0.0", + "openseadragon": "4.0.0", "pdfjs-dist": "3.11.174", "pdfobject": "2.3.0", - "react": "^18.0.0", - "react-dom": "^18.0.0", + "react": "^19.0.0", + "react-dom": "^19.0.0", "react-intersection-observer": "^9.13.0", "waveform-panel": "^1.2.0", "xss": "1.0.15", - "zustand": "^4.0.0-rc.0" + "zustand": "^5.0.3" }, "engines": { - "node": ">=18", + "node": ">=20", "npm": ">=8.1.1" } }, "node_modules/universalviewer/node_modules/openseadragon": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/openseadragon/-/openseadragon-4.1.1.tgz", - "integrity": "sha512-owU9gsasAcobLN+LM8lN58Xc2VDSDotY9mkrwS/NB6g9KX/PcusV4RZvhHng2RF/Q0pMziwldf62glwXoGnuzg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/openseadragon/-/openseadragon-4.0.0.tgz", + "integrity": "sha512-HsjSgqiiPwLkW5576GxDJ7Rax96iLUET8fnTsJvu7uYYkd+qzen3bflxHyph0OVVgZBKP9SpGH1nPdU4Mz0Z2A==", + "license": "BSD-3-Clause", "funding": { "url": "https://opencollective.com/openseadragon" } }, + "node_modules/universalviewer/node_modules/react": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/universalviewer/node_modules/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, "node_modules/universalviewer/node_modules/react-intersection-observer": { "version": "9.16.0", "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.16.0.tgz", @@ -20546,6 +20590,41 @@ } } }, + "node_modules/universalviewer/node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/universalviewer/node_modules/zustand": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.12.tgz", + "integrity": "sha512-i77ae3aZq4dhMlRhJVCYgMLKuSiZAaUPAct2AksxQ+gOtimhGMdXljRT21P5BNpeT4kXlLIckvkPM029OljD7g==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + }, "node_modules/unrs-resolver": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", diff --git a/package.json b/package.json index 9b83ec55..14ca8718 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "ts-node": "10.9.1", "typescript": "4.9.5", "ua-parser-js": "1.0.38", - "universalviewer": "4.1.0", + "universalviewer": "4.3.0-rc4", "vite": "5.4.21", "winston": "3.9.0" },