From 07009c1f5c07d5b2b4fc210479becdbd39fac2f5 Mon Sep 17 00:00:00 2001 From: Geoff Scholl Date: Wed, 4 Mar 2026 10:56:07 -0500 Subject: [PATCH 1/2] Removed ebook Component --- manual/EVENTS.md | 2 +- package-lock.json | 227 +---------- package.json | 1 - src/content-handlers/iiif/Docs.ts | 2 - .../iiif/IIIFContentHandler.ts | 9 - .../uv-ebook-extension/DownloadDialogue.ts | 27 -- .../extensions/uv-ebook-extension/Events.ts | 13 - .../uv-ebook-extension/Extension.ts | 150 ------- .../uv-ebook-extension/IEbookExtension.ts | 5 - .../uv-ebook-extension/IEbookExtensionData.ts | 6 - .../uv-ebook-extension/ISettings.d.ts | 1 - .../uv-ebook-extension/SettingsDialogue.ts | 13 - .../uv-ebook-extension/ShareDialogue.ts | 33 -- .../uv-ebook-extension/config/Config.ts | 75 ---- .../uv-ebook-extension/config/config.json | 385 ------------------ .../uv-ebook-extension/dependencies.ts | 7 - .../lib/uv-ebook-components.css | 15 - .../uv-ebook-extension/theme/theme.less | 6 - .../EbookCenterPanel.ts | 175 -------- .../css/styles.less | 11 - .../EbookLeftPanel.ts | 102 ----- .../uv-ebookleftpanel-module/css/styles.less | 32 -- .../MobileFooter.ts | 27 -- .../css/styles.less | 3 - src/iiif-collection.json | 15 - 25 files changed, 8 insertions(+), 1334 deletions(-) delete mode 100644 src/content-handlers/iiif/extensions/uv-ebook-extension/DownloadDialogue.ts delete mode 100644 src/content-handlers/iiif/extensions/uv-ebook-extension/Events.ts delete mode 100644 src/content-handlers/iiif/extensions/uv-ebook-extension/Extension.ts delete mode 100644 src/content-handlers/iiif/extensions/uv-ebook-extension/IEbookExtension.ts delete mode 100644 src/content-handlers/iiif/extensions/uv-ebook-extension/IEbookExtensionData.ts delete mode 100644 src/content-handlers/iiif/extensions/uv-ebook-extension/ISettings.d.ts delete mode 100644 src/content-handlers/iiif/extensions/uv-ebook-extension/SettingsDialogue.ts delete mode 100644 src/content-handlers/iiif/extensions/uv-ebook-extension/ShareDialogue.ts delete mode 100644 src/content-handlers/iiif/extensions/uv-ebook-extension/config/Config.ts delete mode 100644 src/content-handlers/iiif/extensions/uv-ebook-extension/config/config.json delete mode 100644 src/content-handlers/iiif/extensions/uv-ebook-extension/dependencies.ts delete mode 100644 src/content-handlers/iiif/extensions/uv-ebook-extension/lib/uv-ebook-components.css delete mode 100644 src/content-handlers/iiif/extensions/uv-ebook-extension/theme/theme.less delete mode 100644 src/content-handlers/iiif/modules/uv-ebookcenterpanel-module/EbookCenterPanel.ts delete mode 100644 src/content-handlers/iiif/modules/uv-ebookcenterpanel-module/css/styles.less delete mode 100644 src/content-handlers/iiif/modules/uv-ebookleftpanel-module/EbookLeftPanel.ts delete mode 100644 src/content-handlers/iiif/modules/uv-ebookleftpanel-module/css/styles.less delete mode 100644 src/content-handlers/iiif/modules/uv-ebookmobilefooterpanel-module/MobileFooter.ts delete mode 100644 src/content-handlers/iiif/modules/uv-ebookmobilefooterpanel-module/css/styles.less diff --git a/manual/EVENTS.md b/manual/EVENTS.md index c50bdf3cd..d2a3b0a1f 100644 --- a/manual/EVENTS.md +++ b/manual/EVENTS.md @@ -67,7 +67,7 @@ Add passed information developers need. ### EXTERNAL_RESOURCE_OPENED -- Fired by center panels (OpenSeadragon, ModelViewer, FileLink, Ebook, et al.) when the content is loaded. May be before displayed. In the case of OpenSeadragon, this is for a page/tile set instead of each individual tile. +- Fired by center panels (OpenSeadragon, ModelViewer, FileLink, et al.) when the content is loaded. May be before displayed. In the case of OpenSeadragon, this is for a page/tile set instead of each individual tile. - Passes no data to the event handler. diff --git a/package-lock.json b/package-lock.json index f6a2ec4f0..26598466a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,6 @@ "@iiif/vocabulary": "^1.0.31", "@openseadragon-imaging/openseadragon-viewerinputhook": "^2.2.1", "@universalviewer/aleph": "0.0.21", - "@universalviewer/uv-ebook-components": "1.0.2", "@webcomponents/webcomponentsjs": "^2.4.3", "classnames": "^2.3.1", "clean-css": "^5.2.2", @@ -2785,29 +2784,11 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "license": "MIT" }, - "node_modules/@types/jszip": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@types/jszip/-/jszip-3.4.1.tgz", - "integrity": "sha512-TezXjmf3lj+zQ651r6hPqvSScqBLvyPI9FxdXBqpEwBijNGQ2NXpaFW/7joGzveYkKQUil7iiDHLo6LV71Pc0A==", - "deprecated": "This is a stub types definition. jszip provides its own type definitions, so you do not need this installed.", - "dependencies": { - "jszip": "*" - } - }, "node_modules/@types/less": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/less/-/less-3.0.3.tgz", "integrity": "sha512-1YXyYH83h6We1djyoUEqTlVyQtCfJAFXELSKW2ZRtjHD4hQ82CC4lvrv5D0l0FLcKBaiPbXyi3MpMsI9ZRgKsw==" }, - "node_modules/@types/localforage": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@types/localforage/-/localforage-0.0.34.tgz", - "integrity": "sha1-XjHDLdh5HsS5/z70fJy1Wy0NlDg=", - "deprecated": "This is a stub types definition for localforage (https://github.com/localForage/localForage). localforage provides its own type definitions, so you don't need @types/localforage installed!", - "dependencies": { - "localforage": "*" - } - }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", @@ -3355,34 +3336,6 @@ "resolved": "https://registry.npmjs.org/@edsilv/key-codes/-/key-codes-0.1.1.tgz", "integrity": "sha512-mSDgQXsHD55C1+qu5MYORrWXndzVn7ecOWt3b7bGenIOVpkWMrnd2V4I8nKYcSOE0+lBCjuZ4jS63c2gWzarIg==" }, - "node_modules/@universalviewer/epubjs": { - "version": "0.3.85-uv.17", - "resolved": "https://registry.npmjs.org/@universalviewer/epubjs/-/epubjs-0.3.85-uv.17.tgz", - "integrity": "sha512-TtSzKIo7NgSGlE/IJY4u6sCN8ElTrIJCMT8MLmIaWHWlGvs560XRuHAuq3QHqCX1zSfU0BvuFyEAQtfwyPnLVA==", - "dependencies": { - "@types/jszip": "^3.1.4", - "@types/localforage": "0.0.34", - "cross-env": "^6.0.3", - "event-emitter": "^0.3.5", - "jszip": "^3.1.5", - "localforage": "^1.7.2", - "lodash": "^4.17.10", - "marks-pane": "^1.0.9", - "path-webpack": "0.0.3", - "stream-browserify": "^2.0.1", - "url-polyfill": "^1.1.3", - "xmldom": "^0.1.27" - } - }, - "node_modules/@universalviewer/uv-ebook-components": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@universalviewer/uv-ebook-components/-/uv-ebook-components-1.0.2.tgz", - "integrity": "sha512-N27dNj8GRATz2J9MRrtAPEmoJB8zqmzxN+cAqAxCT8dCtmKaYVT7c2doOE9qwuLw7TYwa7hJBihu+Qld1NlKFg==", - "dependencies": { - "@universalviewer/epubjs": "^0.3.85-uv.17", - "jszip": "^3.2.2" - } - }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", @@ -5604,25 +5557,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/cross-env": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz", - "integrity": "sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag==", - "dependencies": { - "cross-spawn": "^7.0.0" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -5820,15 +5759,6 @@ "node": ">=0.8" } }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, "node_modules/dashjs": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/dashjs/-/dashjs-2.6.7.tgz", @@ -6713,46 +6643,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es5-ext": { - "version": "0.10.64", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", - "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", - "hasInstallScript": true, - "license": "ISC", - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "esniff": "^2.0.1", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, "node_modules/es6-object-assign": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, "node_modules/esbuild": { "version": "0.25.0", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", @@ -7214,27 +7109,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", - "license": "ISC", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esniff/node_modules/type": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", - "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", - "license": "ISC" - }, "node_modules/espree": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", @@ -7316,15 +7190,6 @@ "node": ">= 0.6" } }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, "node_modules/event-target-shim": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", @@ -7450,19 +7315,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -9638,7 +9490,8 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "node_modules/isobject": { "version": "3.0.1", @@ -10777,17 +10630,6 @@ "node": ">=4.0" } }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, "node_modules/keyv": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.3.tgz", @@ -11021,22 +10863,6 @@ "node": ">=8.9.0" } }, - "node_modules/localforage": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", - "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", - "dependencies": { - "lie": "3.1.1" - } - }, - "node_modules/localforage/node_modules/lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", - "dependencies": { - "immediate": "~3.0.5" - } - }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -11201,11 +11027,6 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/marks-pane": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/marks-pane/-/marks-pane-1.0.9.tgz", - "integrity": "sha512-Ahs4oeG90tbdPWwAJkAAoHg2lRR8lAs9mZXETNPO9hYg3AkjUJBKi1NQ4aaIQZVGrig7c/3NUV1jANl8rFTeMg==" - }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -11666,11 +11487,6 @@ "node": ">= 0.4.0" } }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -12515,6 +12331,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "engines": { "node": ">=8" } @@ -12541,11 +12358,6 @@ "node": ">=8" } }, - "node_modules/path-webpack": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/path-webpack/-/path-webpack-0.0.3.tgz", - "integrity": "sha1-/23sdJ7sWpRgXATV9j/FVgegOhY=" - }, "node_modules/path2d-polyfill": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path2d-polyfill/-/path2d-polyfill-2.0.1.tgz", @@ -14184,6 +13996,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -14195,6 +14008,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "engines": { "node": ">=8" } @@ -14680,15 +14494,6 @@ "node": ">= 0.8" } }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, "node_modules/stream-http": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", @@ -16089,11 +15894,6 @@ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -16509,11 +16309,6 @@ "requires-port": "^1.0.0" } }, - "node_modules/url-polyfill": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/url-polyfill/-/url-polyfill-1.1.12.tgz", - "integrity": "sha512-mYFmBHCapZjtcNHW0MDq9967t+z4Dmg5CJ0KqysK3+ZbyoNOWQHksGCTWwDhxGXllkWlOc10Xfko6v4a3ucM6A==" - }, "node_modules/url/node_modules/punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", @@ -17287,6 +17082,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -17487,15 +17283,6 @@ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, - "node_modules/xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", - "deprecated": "Deprecated due to CVE-2021-21366 resolved in 0.5.0", - "engines": { - "node": ">=0.1" - } - }, "node_modules/xss": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.15.tgz", diff --git a/package.json b/package.json index e19ec8809..f28e4708b 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,6 @@ "@iiif/vocabulary": "^1.0.31", "@openseadragon-imaging/openseadragon-viewerinputhook": "^2.2.1", "@universalviewer/aleph": "0.0.21", - "@universalviewer/uv-ebook-components": "1.0.2", "@webcomponents/webcomponentsjs": "^2.4.3", "classnames": "^2.3.1", "clean-css": "^5.2.2", diff --git a/src/content-handlers/iiif/Docs.ts b/src/content-handlers/iiif/Docs.ts index 59051f193..62db48694 100644 --- a/src/content-handlers/iiif/Docs.ts +++ b/src/content-handlers/iiif/Docs.ts @@ -1,7 +1,6 @@ import { Config as ModelViewerExtensionConfig } from "@/content-handlers/iiif/extensions/uv-model-viewer-extension/config/Config"; import { Config as AlephExtensionConfig } from "@/content-handlers/iiif/extensions/uv-aleph-extension/config/Config"; import { Config as AVExtensionConfig } from "@/content-handlers/iiif/extensions/uv-av-extension/config/Config"; -import { Config as EbookExtensionConfig } from "@/content-handlers/iiif/extensions/uv-ebook-extension/config/Config"; import { Config as MediaElementExtensionConfig } from "@/content-handlers/iiif/extensions/uv-mediaelement-extension/config/Config"; import { Config as OSDExtensionConfig } from "@/content-handlers/iiif/extensions/uv-openseadragon-extension/config/Config"; import { Config as DefaultExtensionConfig } from "@/content-handlers/iiif/extensions/uv-default-extension/config/Config"; @@ -11,7 +10,6 @@ export type IIIFContentHandlerConfig = { aleph: AlephExtensionConfig; av: AVExtensionConfig; default: DefaultExtensionConfig; - ebook: EbookExtensionConfig; mediaelement: MediaElementExtensionConfig; modelViewer: ModelViewerExtensionConfig; osd: OSDExtensionConfig; diff --git a/src/content-handlers/iiif/IIIFContentHandler.ts b/src/content-handlers/iiif/IIIFContentHandler.ts index cc48e57cd..abd0f7b35 100644 --- a/src/content-handlers/iiif/IIIFContentHandler.ts +++ b/src/content-handlers/iiif/IIIFContentHandler.ts @@ -53,13 +53,6 @@ const Extension: IExtensionRegistry = { "./extensions/uv-default-extension/Extension" ), }, - EBOOK: { - name: "uv-ebook-extension", - loader: () => - /* webpackMode: "lazy" */ import( - "./extensions/uv-ebook-extension/Extension" - ), - }, MEDIAELEMENT: { name: "uv-mediaelement-extension", loader: () => @@ -137,7 +130,6 @@ export default class IIIFContentHandler this._extensionRegistry[MediaType.AUDIO_OGG] = Extension.AV; this._extensionRegistry[MediaType.DICOM] = Extension.ALEPH; this._extensionRegistry[MediaType.DRACO] = Extension.MODELVIEWER; - this._extensionRegistry[MediaType.EPUB] = Extension.EBOOK; this._extensionRegistry[MediaType.GIRDER] = Extension.SLIDEATLAS; this._extensionRegistry[MediaType.GLB] = Extension.MODELVIEWER; this._extensionRegistry[MediaType.GLTF] = Extension.MODELVIEWER; @@ -145,7 +137,6 @@ export default class IIIFContentHandler this._extensionRegistry[MediaType.MP3] = Extension.AV; this._extensionRegistry[MediaType.MPEG] = Extension.AV; this._extensionRegistry[MediaType.MPEG_DASH] = Extension.AV; - this._extensionRegistry[MediaType.OPF] = Extension.EBOOK; this._extensionRegistry[MediaType.PDF] = Extension.PDF; this._extensionRegistry[MediaType.PNG] = Extension.OSD; this._extensionRegistry[MediaType.USDZ] = Extension.MODELVIEWER; diff --git a/src/content-handlers/iiif/extensions/uv-ebook-extension/DownloadDialogue.ts b/src/content-handlers/iiif/extensions/uv-ebook-extension/DownloadDialogue.ts deleted file mode 100644 index 43fd8f703..000000000 --- a/src/content-handlers/iiif/extensions/uv-ebook-extension/DownloadDialogue.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { DownloadDialogue as BaseDownloadDialogue } from "../../modules/uv-dialogues-module/DownloadDialogue"; -import { DownloadOption } from "../../modules/uv-shared-module/DownloadOption"; - -export class DownloadDialogue extends BaseDownloadDialogue { - constructor($element: JQuery) { - super($element); - } - - create(): void { - this.setConfig("downloadDialogue"); - - super.create(); - } - - open($triggerButton: HTMLElement) { - super.open($triggerButton); - - this.addEntireFileDownloadOptions(); - this.updateNoneAvailable(); - - this.resize(); - } - - isDownloadOptionAvailable(option: DownloadOption): boolean { - return super.isDownloadOptionAvailable(option); - } -} diff --git a/src/content-handlers/iiif/extensions/uv-ebook-extension/Events.ts b/src/content-handlers/iiif/extensions/uv-ebook-extension/Events.ts deleted file mode 100644 index 4cd270b8a..000000000 --- a/src/content-handlers/iiif/extensions/uv-ebook-extension/Events.ts +++ /dev/null @@ -1,13 +0,0 @@ -export class EbookExtensionEvents { - static namespace: string = "ebookExtension."; - - static CFI_FRAGMENT_CHANGE: string = - EbookExtensionEvents.namespace + "cfiFragmentChange"; - static ITEM_CLICKED: string = EbookExtensionEvents.namespace + "itemClicked"; - static LOADED_NAVIGATION: string = - EbookExtensionEvents.namespace + "loadedNavigation"; - static RELOCATED: string = EbookExtensionEvents.namespace + "relocated"; - static RENDITION_ATTACHED: string = - EbookExtensionEvents.namespace + "renditionAttached"; - static TOC_READY: string = EbookExtensionEvents.namespace + "tocReady"; -} diff --git a/src/content-handlers/iiif/extensions/uv-ebook-extension/Extension.ts b/src/content-handlers/iiif/extensions/uv-ebook-extension/Extension.ts deleted file mode 100644 index 270987fcb..000000000 --- a/src/content-handlers/iiif/extensions/uv-ebook-extension/Extension.ts +++ /dev/null @@ -1,150 +0,0 @@ -import { IIIFEvents } from "../../IIIFEvents"; -import { BaseExtension } from "../../modules/uv-shared-module/BaseExtension"; -import { EbookLeftPanel } from "../../modules/uv-ebookleftpanel-module/EbookLeftPanel"; -import { EbookExtensionEvents } from "./Events"; -import { DownloadDialogue } from "./DownloadDialogue"; -import { EbookCenterPanel } from "../../modules/uv-ebookcenterpanel-module/EbookCenterPanel"; -import { FooterPanel } from "../../modules/uv-shared-module/FooterPanel"; -import { FooterPanel as MobileFooterPanel } from "../../modules/uv-ebookmobilefooterpanel-module/MobileFooter"; -import { HeaderPanel } from "../../modules/uv-shared-module/HeaderPanel"; -import { IEbookExtension } from "./IEbookExtension"; -import { MoreInfoRightPanel } from "../../modules/uv-moreinforightpanel-module/MoreInfoRightPanel"; -import { SettingsDialogue } from "./SettingsDialogue"; -import { ShareDialogue } from "./ShareDialogue"; -import { IEbookExtensionData } from "./IEbookExtensionData"; -import "./theme/theme.less"; -import defaultConfig from "./config/config.json"; -import { Config } from "./config/Config"; - -export default class Extension - extends BaseExtension - implements IEbookExtension -{ - $downloadDialogue: JQuery; - $multiSelectDialogue: JQuery; - $settingsDialogue: JQuery; - $shareDialogue: JQuery; - centerPanel: EbookCenterPanel; - downloadDialogue: DownloadDialogue; - footerPanel: FooterPanel; - headerPanel: HeaderPanel; - leftPanel: EbookLeftPanel; - mobileFooterPanel: MobileFooterPanel; - rightPanel: MoreInfoRightPanel; - settingsDialogue: SettingsDialogue; - shareDialogue: ShareDialogue; - cfiFragement: string; - defaultConfig: Config = defaultConfig; - - create(): void { - super.create(); - - this.extensionHost.subscribe( - IIIFEvents.CANVAS_INDEX_CHANGE, - (canvasIndex: number) => { - this.viewCanvas(canvasIndex); - } - ); - - this.extensionHost.subscribe( - EbookExtensionEvents.CFI_FRAGMENT_CHANGE, - (cfi: string) => { - this.cfiFragement = cfi; - this.fire(EbookExtensionEvents.CFI_FRAGMENT_CHANGE, this.cfiFragement); - } - ); - } - - createModules(): void { - super.createModules(); - - if (this.isHeaderPanelEnabled()) { - this.headerPanel = new HeaderPanel(this.shell.$headerPanel); - } else { - this.shell.$headerPanel.hide(); - } - - if (this.isLeftPanelEnabled()) { - this.leftPanel = new EbookLeftPanel(this.shell.$leftPanel); - } else { - this.shell.$leftPanel.hide(); - } - - this.centerPanel = new EbookCenterPanel(this.shell.$centerPanel); - - if (this.isRightPanelEnabled()) { - this.rightPanel = new MoreInfoRightPanel(this.shell.$rightPanel); - } else { - this.shell.$rightPanel.hide(); - } - - if (this.isFooterPanelEnabled()) { - this.footerPanel = new FooterPanel(this.shell.$footerPanel); - this.mobileFooterPanel = new MobileFooterPanel( - this.shell.$mobileFooterPanel - ); - } else { - this.shell.$footerPanel.hide(); - } - - this.$shareDialogue = $( - '' - ); - this.shell.$overlays.append(this.$shareDialogue); - this.shareDialogue = new ShareDialogue(this.$shareDialogue); - - this.$downloadDialogue = $( - '' - ); - this.shell.$overlays.append(this.$downloadDialogue); - this.downloadDialogue = new DownloadDialogue(this.$downloadDialogue); - - this.$settingsDialogue = $( - '' - ); - this.shell.$overlays.append(this.$settingsDialogue); - this.settingsDialogue = new SettingsDialogue(this.$settingsDialogue); - - if (this.isHeaderPanelEnabled()) { - this.headerPanel.init(); - } - - if (this.isLeftPanelEnabled()) { - this.leftPanel.init(); - } - - if (this.isRightPanelEnabled()) { - this.rightPanel.init(); - } - - if (this.isFooterPanelEnabled()) { - this.footerPanel.init(); - } - } - - isLeftPanelEnabled(): boolean { - return true; - } - - render(): void { - super.render(); - this.checkForCFIParam(); - } - - getEmbedScript(template: string, width: number, height: number): string { - const hashParams = new URLSearchParams({ - manifest: this.helper.manifestUri, - cfi: this.cfiFragement, - }); - - return super.buildEmbedScript(template, width, height, hashParams); - } - - checkForCFIParam(): void { - const cfi: string | null = (this.data).cfi; - - if (cfi) { - this.extensionHost.publish(EbookExtensionEvents.CFI_FRAGMENT_CHANGE, cfi); - } - } -} diff --git a/src/content-handlers/iiif/extensions/uv-ebook-extension/IEbookExtension.ts b/src/content-handlers/iiif/extensions/uv-ebook-extension/IEbookExtension.ts deleted file mode 100644 index bdf1a29a4..000000000 --- a/src/content-handlers/iiif/extensions/uv-ebook-extension/IEbookExtension.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { IExtension } from "../../modules/uv-shared-module/IExtension"; - -export interface IEbookExtension extends IExtension { - getEmbedScript(embedTemplate: string, width: number, height: number): string; -} diff --git a/src/content-handlers/iiif/extensions/uv-ebook-extension/IEbookExtensionData.ts b/src/content-handlers/iiif/extensions/uv-ebook-extension/IEbookExtensionData.ts deleted file mode 100644 index a9071d9a7..000000000 --- a/src/content-handlers/iiif/extensions/uv-ebook-extension/IEbookExtensionData.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { IUVData } from "../../../../IUVData"; -import { Config } from "./config/Config"; - -export interface IEbookExtensionData extends IUVData { - cfi: string; -} diff --git a/src/content-handlers/iiif/extensions/uv-ebook-extension/ISettings.d.ts b/src/content-handlers/iiif/extensions/uv-ebook-extension/ISettings.d.ts deleted file mode 100644 index 090b56399..000000000 --- a/src/content-handlers/iiif/extensions/uv-ebook-extension/ISettings.d.ts +++ /dev/null @@ -1 +0,0 @@ -interface ISettings {} diff --git a/src/content-handlers/iiif/extensions/uv-ebook-extension/SettingsDialogue.ts b/src/content-handlers/iiif/extensions/uv-ebook-extension/SettingsDialogue.ts deleted file mode 100644 index 7294ff3b0..000000000 --- a/src/content-handlers/iiif/extensions/uv-ebook-extension/SettingsDialogue.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { SettingsDialogue as BaseSettingsDialogue } from "../../modules/uv-dialogues-module/SettingsDialogue"; - -export class SettingsDialogue extends BaseSettingsDialogue { - constructor($element: JQuery) { - super($element); - } - - create(): void { - this.setConfig("settingsDialogue"); - - super.create(); - } -} diff --git a/src/content-handlers/iiif/extensions/uv-ebook-extension/ShareDialogue.ts b/src/content-handlers/iiif/extensions/uv-ebook-extension/ShareDialogue.ts deleted file mode 100644 index c5fd9d1a6..000000000 --- a/src/content-handlers/iiif/extensions/uv-ebook-extension/ShareDialogue.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { ShareDialogue as BaseShareDialogue } from "../../modules/uv-dialogues-module/ShareDialogue"; -import { Config } from "../uv-ebook-extension/config/Config"; -import { IEbookExtension } from "./IEbookExtension"; - -export class ShareDialogue extends BaseShareDialogue< - Config["modules"]["shareDialogue"] -> { - constructor($element: JQuery) { - super($element); - } - - create(): void { - this.setConfig("shareDialogue"); - - super.create(); - } - - update(): void { - super.update(); - - this.embedCode = (this.extension).getEmbedScript( - this.options.embedTemplate, - this.currentWidth, - this.currentHeight - ); - - this.$embedCode.val(this.embedCode); - } - - resize(): void { - super.resize(); - } -} diff --git a/src/content-handlers/iiif/extensions/uv-ebook-extension/config/Config.ts b/src/content-handlers/iiif/extensions/uv-ebook-extension/config/Config.ts deleted file mode 100644 index 99d97a0b0..000000000 --- a/src/content-handlers/iiif/extensions/uv-ebook-extension/config/Config.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { - BaseConfig, - CenterPanelContent, - CenterPanelOptions, - DownloadDialogueContent, - DownloadDialogueOptions, - ModuleConfig, - SettingsDialogueContent, - SettingsDialogueOptions, - ShareDialogueContent, - ShareDialogueOptions, -} from "@/content-handlers/iiif/BaseConfig"; -import { - ExpandPanelContent, - ExpandPanelOptions, -} from "../../config/ExpandPanel"; - -type EbookLeftPanelOptions = ExpandPanelOptions & {}; - -type EbookLeftPanelContent = ExpandPanelContent & { - title: string; -}; - -type EbookLeftPanel = { - options: EbookLeftPanelOptions; - content: EbookLeftPanelContent; -}; - -type EbookCenterPanelOptions = CenterPanelOptions & {}; - -type EbookCenterPanelContent = CenterPanelContent & {}; - -type EbookCenterPanel = { - options: EbookCenterPanelOptions; - content: EbookCenterPanelContent; -}; - -type EbookDownloadDialogueOptions = DownloadDialogueOptions & {}; - -type EbookDownloadDialogueContent = DownloadDialogueContent & {}; - -type EbookDownloadDialogue = ModuleConfig & { - options: EbookDownloadDialogueOptions; - content: EbookDownloadDialogueContent; -}; - -type EbookShareDialogueOptions = ShareDialogueOptions & {}; - -type EbookShareDialogueContent = ShareDialogueContent & {}; - -type EbookShareDialogue = ModuleConfig & { - options: EbookShareDialogueOptions; - content: EbookShareDialogueContent; -}; - -type EbookSettingsDialogueOptions = SettingsDialogueOptions & {}; - -type EbookSettingsDialogueContent = SettingsDialogueContent & {}; - -type EbookSettingsDialogue = ModuleConfig & { - options: EbookSettingsDialogueOptions; - content: EbookSettingsDialogueContent; -}; - -type Modules = { - ebookLeftPanel: EbookLeftPanel; - ebookCenterPanel: EbookCenterPanel; - downloadDialogue: EbookDownloadDialogue; - shareDialogue: EbookShareDialogue; - settingsDialogue: EbookSettingsDialogue; -}; - -export type Config = BaseConfig & { - modules: Modules; -}; diff --git a/src/content-handlers/iiif/extensions/uv-ebook-extension/config/config.json b/src/content-handlers/iiif/extensions/uv-ebook-extension/config/config.json deleted file mode 100644 index 9b97dfa18..000000000 --- a/src/content-handlers/iiif/extensions/uv-ebook-extension/config/config.json +++ /dev/null @@ -1,385 +0,0 @@ -{ - "options": { - "allowStealFocus": false, - "authAPIVersion": 1, - "bookmarkThumbHeight": 150, - "bookmarkThumbWidth": 90, - "dropEnabled": true, - "footerPanelEnabled": true, - "headerPanelEnabled": true, - "leftPanelEnabled": true, - "limitLocales": false, - "metrics": [ - { - "type": "sm", - "minWidth": 0 - }, - { - "type": "md", - "minWidth": 768 - }, - { - "type": "lg", - "minWidth": 1024 - }, - { - "type": "xl", - "minWidth": 1280 - } - ], - "multiSelectionMimeType": "application/zip", - "navigatorEnabled": true, - "openTemplate": "http://universalviewer.io?manifest={0}", - "overrideFullScreen": false, - "preserveViewport": false, - "rightPanelEnabled": true, - "saveUserSettings": false, - "clickToZoomEnabled": true, - "searchWithinEnabled": true, - "termsOfUseEnabled": false, - "tokenStorage": "session", - "useArrowKeysToNavigate": false, - "zoomToSearchResultEnabled": true - }, - "modules": { - "leftPanel": { - "options": { - "expandFullEnabled": false, - "panelAnimationDuration": 250, - "panelCollapsedWidth": 30, - "panelExpandedWidth": 255, - "panelOpen": false - }, - "content": { - "collapse": "$collapse", - "collapseFull": "$collapseFull", - "expand": "$expandContents", - "expandFull": "$expandGallery" - } - }, - "ebookLeftPanel": { - "options": { - "expandFullEnabled": false, - "panelAnimationDuration": 250, - "panelCollapsedWidth": 30, - "panelExpandedWidth": 255, - "panelOpen": false - }, - "content": { - "title": "$contents", - "collapse": "$collapse", - "collapseFull": "$collapseFull", - "expand": "$expandContents", - "expandFull": "$expandGallery" - } - }, - "dialogue": { - "options": { - "topCloseButtonEnabled": false - }, - "content": { - "close": "$close" - } - }, - "footerPanel": { - "options": { - "bookmarkEnabled": false, - "downloadEnabled": true, - "embedEnabled": false, - "feedbackEnabled": false, - "fullscreenEnabled": true, - "minimiseButtons": true, - "moreInfoEnabled": true, - "openEnabled": false, - "printEnabled": false, - "shareEnabled": true - }, - "content": { - "bookmark": "$add_to_bookmarks", - "download": "$download", - "embed": "$embed", - "exitFullScreen": "$exitFullScreen", - "feedback": "$feedback", - "fullScreen": "$fullScreen", - "moreInfo": "$moreInfo", - "open": "$open", - "share": "$share", - "openLeftPanel": "$openLeftPanel", - "closeLeftPanel": "$closeLeftPanel", - "openRightPanel": "$openRightPanel", - "closeRightPanel": "$closeRightPanel" - } - }, - "genericDialogue": { - "options": { - "topCloseButtonEnabled": false - }, - "content": { - "close": "$close", - "emptyValue": "$emptyValue", - "invalidNumber": "$invalidNumber", - "noMatches": "$noMatches", - "ok": "$ok", - "pageNotFound": "$pageNotFound", - "refresh": "$refresh" - } - }, - "headerPanel": { - "options": { - "centerOptionsEnabled": true, - "localeToggleEnabled": false, - "settingsButtonEnabled": true, - "helpEnabled": false, - "helpUrl": "https://universalviewer.io" - }, - "content": { - "close": "$close", - "settings": "$settings", - "help": "$help" - } - }, - "helpDialogue": { - "options": { - "topCloseButtonEnabled": false - }, - "content": { - "close": "$close", - "text": "$placeholder_text", - "title": "$help" - } - }, - "moreInfoRightPanel": { - "options": { - "canvasDisplayOrder": "", - "canvasExclude": "", - "copyToClipboardEnabled": false, - "expandFullEnabled": false, - "limitToRange": false, - "manifestDisplayOrder": "", - "manifestExclude": "", - "panelAnimationDuration": 250, - "panelCollapsedWidth": 30, - "panelExpandedWidth": 255, - "panelOpen": false, - "rtlLanguageCodes": "ar, ara, dv, div, he, heb, ur, urd", - "showAllLanguages": false, - "textLimit": 4, - "textLimitType": "lines", - "topCloseButtonEnabled": false - }, - "content": { - "attribution": "$attribution", - "canvasHeader": "$aboutTheImage", - "close": "$close", - "collapse": "$collapseInformation", - "collapseFull": "$collapseGallery", - "copiedToClipboard": "$copiedToClipboard", - "copyToClipboard": "$copyToClipboard", - "description": "$description", - "expand": "$expandInformation", - "expandFull": "$expandGallery", - "holdingText": "$moduleGoesHere", - "less": "$less", - "lessAriaLabelTemplate": "$lessAriaLabelTemplate", - "license": "$license", - "logo": "$logo", - "manifestHeader": "$aboutTheItem", - "more": "$more", - "moreAriaLabelTemplate": "$moreAriaLabelTemplate", - "noData": "$noDataToDisplay", - "page": "$page", - "rangeHeader": "$aboutThisSection", - "title": "$moreInformation" - } - }, - "centerPanel": { - "options": { - "titleEnabled": true, - "subtitleEnabled": true, - "mostSpecificRequiredStatement": true, - "requiredStatementEnabled": true - }, - "content": { - "attribution": "$attribution", - "close": "$close", - "closeAttribution": "$closeAttribution" - } - }, - "ebookCenterPanel": { - "options": { - "titleEnabled": true, - "subtitleEnabled": true, - "mostSpecificRequiredStatement": true, - "requiredStatementEnabled": true - }, - "content": { - "attribution": "$attribution", - "close": "$close", - "closeAttribution": "$closeAttribution" - } - }, - "settingsDialogue": { - "options": { - "topCloseButtonEnabled": false - }, - "content": { - "close": "$close", - "locale": "$locale", - "navigatorEnabled": "$navigatorEnabled", - "clickToZoomEnabled": "$clickToZoomEnabled", - "reducedMotion": "$reducedMotion", - "truncateThumbnailLabels": "$truncateThumbnailLabels", - "preserveViewport": "$preserveViewport", - "title": "$settings", - "website": "$uvWebsite" - } - }, - "shareDialogue": { - "options": { - "embedEnabled": true, - "shareEnabled": true, - "embedPath": "/uv.html", - "embedTemplate": "", - "shareManifestsEnabled": true, - "topCloseButtonEnabled": false, - "copyToClipboardEnabled": true - }, - "content": { - "close": "$close", - "copyBtn": "$copyBtn", - "copyToClipboard": "$copyToClipboard", - "customSize": "custom", - "embed": "Embed", - "embedInstructions": "To embed this item in your own website, copy and paste the code below.", - "height": "Height", - "iiif": "IIIF Manifest", - "share": "Share", - "shareInstructions": "To share this item, copy the URL below.", - "shareLink": "$shareLink", - "size": "Size:", - "width": "Width", - "shareUrl": "$shareUrl" - } - }, - "authDialogue": { - "options": { - "topCloseButtonEnabled": false - }, - "content": { - "cancel": "$cancel", - "close": "$close", - "confirm": "$confirm" - } - }, - "adjustImageDialogue": { - "options": { - "topCloseButtonEnabled": false - }, - "content": { - "title": "$adjustImage", - "brightness": "$brightness", - "contrast": "$contrast", - "saturation": "$saturation", - "close": "$close", - "reset": "$reset", - "remember": "$remember" - } - }, - "clickThroughDialogue": { - "options": { - "topCloseButtonEnabled": false - }, - "content": { - "close": "$close", - "viewTerms": "$viewTerms" - } - }, - "downloadDialogue": { - "options": { - "topCloseButtonEnabled": false - }, - "content": { - "allPages": "$allPages", - "close": "$close", - "currentViewAsJpg": "$currentViewAsJpg", - "currentViewAsJpgExplanation": "$openNewWindow", - "download": "$download", - "downloadSelection": "$downloadSelection", - "downloadSelectionExplanation": "$downloadSelectionExplanation", - "editSettings": "$editSettings", - "entireDocument": "$entireDocument", - "entireFileAsOriginal": "$entireFile", - "entireFileAsOriginalWithFormat": "$entireFileAsOriginalWithFormat", - "individualPages": "$individualPages", - "noneAvailable": "$noDownloadOptionsAvailable", - "pagingNote": "$pagingNote", - "preview": "$preview", - "selection": "$selection", - "termsOfUse": "$termsOfUse", - "title": "$download", - "wholeImageHighRes": "$wholeImageHighRes", - "wholeImageHighResExplanation": "$openNewWindow", - "wholeImageLowResAsJpg": "$wholeImageLowResAsJpg", - "wholeImageLowResAsJpgExplanation": "$openNewWindow", - "wholeImagesHighRes": "$wholeImagesHighRes", - "wholeImagesHighResExplanation": "$wholeImagesHighResExplanation" - } - }, - "loginDialogue": { - "options": { - "topCloseButtonEnabled": false - }, - "content": { - "login": "$login", - "logout": "$logout", - "cancel": "$cancel", - "close": "$close" - } - }, - "restrictedDialogue": { - "options": { - "topCloseButtonEnabled": false - }, - "content": { - "cancel": "$cancel", - "close": "$close" - } - } - }, - "localisation": { - "label": "English (GB)", - "locales": [ - { - "name": "cy-GB", - "label": "Cymraeg" - }, - { - "name": "en-GB", - "label": "English (GB)" - }, - { - "name": "fr-FR", - "label": "Français (FR)" - }, - { - "name": "pl-PL", - "label": "Polski" - }, - { - "name": "sv-SE", - "label": "Svenska" - } - ] - }, - "content": { - "authCORSError": "$authCORSError", - "authorisationFailedMessage": "$authorisationFailedMessage", - "canvasIndexOutOfRange": "$canvasIndexOutOfRange", - "fallbackDegradedLabel": "$fallbackDegradedLabel", - "fallbackDegradedMessage": "$fallbackDegradedMessage", - "forbiddenResourceMessage": "$forbiddenResourceMessage", - "termsOfUse": "$termsOfUse", - "mediaViewer": "$mediaViewer", - "skipToDownload": "$skipToDownload" - } -} diff --git a/src/content-handlers/iiif/extensions/uv-ebook-extension/dependencies.ts b/src/content-handlers/iiif/extensions/uv-ebook-extension/dependencies.ts deleted file mode 100644 index 6ea8e6119..000000000 --- a/src/content-handlers/iiif/extensions/uv-ebook-extension/dependencies.ts +++ /dev/null @@ -1,7 +0,0 @@ -define(function () { - return function (formats: string[]) { - return { - async: ["MetadataComponent", "uv-ebook-extension.proxy"], - }; - }; -}); diff --git a/src/content-handlers/iiif/extensions/uv-ebook-extension/lib/uv-ebook-components.css b/src/content-handlers/iiif/extensions/uv-ebook-extension/lib/uv-ebook-components.css deleted file mode 100644 index af33c30fe..000000000 --- a/src/content-handlers/iiif/extensions/uv-ebook-extension/lib/uv-ebook-components.css +++ /dev/null @@ -1,15 +0,0 @@ -:root { - --toc-margin: 0; - --toc-padding: 0; - --toc-list-style-type: none; - --toc-link-color: #4e4e4e; - --toc-link-selected-color: #949494; - --toc-link-padding: 0.25rem; - --reader-arrow-color: #e2e2e2; - --reader-arrow-hover-color: #777; - --reader-spinner-color: #bdbdbd; -} -.disabled { - pointer-events: none; - opacity: 0.4; -} diff --git a/src/content-handlers/iiif/extensions/uv-ebook-extension/theme/theme.less b/src/content-handlers/iiif/extensions/uv-ebook-extension/theme/theme.less deleted file mode 100644 index a8f0be469..000000000 --- a/src/content-handlers/iiif/extensions/uv-ebook-extension/theme/theme.less +++ /dev/null @@ -1,6 +0,0 @@ -@import "../../../modules/uv-dialogues-module/css/styles.less"; -@import "../../../modules/uv-ebookcenterpanel-module/css/styles.less"; -@import "../../../modules/uv-ebookleftpanel-module/css/styles.less"; -@import "../../../modules/uv-moreinforightpanel-module/css/styles.less"; -@import "../../../modules/uv-shared-module/css/styles.less"; -@import "../../../modules/uv-ebookmobilefooterpanel-module/css/styles.less"; diff --git a/src/content-handlers/iiif/modules/uv-ebookcenterpanel-module/EbookCenterPanel.ts b/src/content-handlers/iiif/modules/uv-ebookcenterpanel-module/EbookCenterPanel.ts deleted file mode 100644 index d79ca38f5..000000000 --- a/src/content-handlers/iiif/modules/uv-ebookcenterpanel-module/EbookCenterPanel.ts +++ /dev/null @@ -1,175 +0,0 @@ -import { Async } from "../../Utils"; -import { IIIFEvents } from "../../IIIFEvents"; -import { CenterPanel } from "../uv-shared-module/CenterPanel"; -import { EbookExtensionEvents } from "../../extensions/uv-ebook-extension/Events"; -import { Position } from "../uv-shared-module/Position"; -import { - IExternalResource, - Canvas, - Annotation, - AnnotationBody, -} from "manifesto.js"; - -import { - applyPolyfills, - defineCustomElements, -} from "@universalviewer/uv-ebook-components/loader"; -import { Events } from "../../../../Events"; -import { Config } from "../../extensions/uv-ebook-extension/config/Config"; - -export class EbookCenterPanel extends CenterPanel< - Config["modules"]["ebookCenterPanel"] -> { - private _cfi: string; - private _ebookReader: any; - private _ebookReaderReady: boolean = false; - private _state: any = {}; - private _prevState: any = {}; - - constructor($element: JQuery) { - super($element); - this.attributionPosition = Position.BOTTOM_RIGHT; - } - - async create(): Promise { - this.setConfig("ebookCenterPanel"); - - super.create(); - - await applyPolyfills(); - defineCustomElements(window); - - this._ebookReader = document.createElement("uv-ebook-reader"); - this.$content.prepend(this._ebookReader); - this._ebookReader.setAttribute("width", "100%"); - this._ebookReader.setAttribute("height", "100%"); - - this._ebookReader.addEventListener( - "loadedNavigation", - (e: any) => { - this.extensionHost.publish( - EbookExtensionEvents.LOADED_NAVIGATION, - e.detail - ); - }, - false - ); - - this._ebookReader.addEventListener( - "relocated", - (e: any) => { - this.extensionHost.publish(EbookExtensionEvents.RELOCATED, e.detail); - this._cfi = e.detail.start.cfi; - this.extensionHost.publish( - EbookExtensionEvents.CFI_FRAGMENT_CHANGE, - this._cfi - ); - }, - false - ); - - Async.waitFor( - () => { - return window.customElements !== undefined; - }, - () => { - customElements.whenDefined("uv-ebook-reader").then(() => { - this._ebookReaderReady = true; - }); - } - ); - - const that = this; - - this.extensionHost.subscribe( - IIIFEvents.OPEN_EXTERNAL_RESOURCE, - (resources: IExternalResource[]) => { - that.openMedia(resources); - } - ); - - this.extensionHost.subscribe( - EbookExtensionEvents.ITEM_CLICKED, - (href: string) => { - this._nextState({ - cfi: href, - }); - } - ); - - this.extensionHost.subscribe( - EbookExtensionEvents.CFI_FRAGMENT_CHANGE, - (cfi: string) => { - Async.waitFor( - () => { - return this._ebookReaderReady; - }, - () => { - if (cfi !== this._cfi) { - this._nextState({ - cfi: cfi, - }); - } - } - ); - } - ); - } - - openMedia(resources: IExternalResource[]) { - this.extension.getExternalResources(resources).then(() => { - const canvas: Canvas = this.extension.helper.getCurrentCanvas(); - - const annotations: Annotation[] = canvas.getContent(); - - if (annotations.length) { - const annotation: Annotation = annotations[0]; - const body: AnnotationBody[] = annotation.getBody(); - - if (body.length) { - const media: AnnotationBody = body[0]; - //const format: MediaType | null = media.getFormat(); - - this._nextState({ - bookPath: media.id, - }); - } - } - - this.extensionHost.publish(Events.EXTERNAL_RESOURCE_OPENED); - this.extensionHost.publish(Events.LOAD); - }); - } - - private _nextState(s: any) { - this._state = Object.assign({}, this._state, s); - - Async.waitFor( - () => { - return this._ebookReaderReady; - }, - () => { - if ( - this._state.bookPath && - this._state.bookPath !== this._prevState.bookPath - ) { - this._ebookReader.load(this._state.bookPath); - } - if (this._state.cfi && this._state.cfi !== this._prevState.cfi) { - this._ebookReader.display(this._state.cfi); - } - this._prevState = Object.assign({}, this._state); - } - ); - } - - resize() { - super.resize(); - - if (this._ebookReaderReady) { - setTimeout(() => { - this._ebookReader.resize(); - }, 10); - } - } -} diff --git a/src/content-handlers/iiif/modules/uv-ebookcenterpanel-module/css/styles.less b/src/content-handlers/iiif/modules/uv-ebookcenterpanel-module/css/styles.less deleted file mode 100644 index 88f716990..000000000 --- a/src/content-handlers/iiif/modules/uv-ebookcenterpanel-module/css/styles.less +++ /dev/null @@ -1,11 +0,0 @@ -.uv-iiif-extension-host.uv-ebook-extension { - .centerPanel { - background-color: #fff; - - uv-ebook-reader { - --reader-spinner-color: #bdbdbd; - --reader-arrow-color: #e2e2e2; - --reader-arrow-hover-color: #777; - } - } -} diff --git a/src/content-handlers/iiif/modules/uv-ebookleftpanel-module/EbookLeftPanel.ts b/src/content-handlers/iiif/modules/uv-ebookleftpanel-module/EbookLeftPanel.ts deleted file mode 100644 index b4020d89e..000000000 --- a/src/content-handlers/iiif/modules/uv-ebookleftpanel-module/EbookLeftPanel.ts +++ /dev/null @@ -1,102 +0,0 @@ -const $ = require("jquery"); -import { IIIFEvents } from "../../IIIFEvents"; -import { LeftPanel } from "../uv-shared-module/LeftPanel"; -import { EbookExtensionEvents } from "../../extensions/uv-ebook-extension/Events"; -import { Async } from "../../Utils"; -import { - applyPolyfills, - defineCustomElements, -} from "@universalviewer/uv-ebook-components/loader"; -import { Config } from "../../extensions/uv-ebook-extension/config/Config"; - -export class EbookLeftPanel extends LeftPanel< - Config["modules"]["ebookLeftPanel"] -> { - private _ebookTOC: any; - private _$container: JQuery; - private _$ebookTOC: JQuery; - - constructor($element: JQuery) { - super($element); - } - - async create(): Promise { - this.setConfig("ebookLeftPanel"); - super.create(); - - this._$container = $('
'); - - await applyPolyfills(); - defineCustomElements(window); - - this._ebookTOC = document.createElement("uv-ebook-toc"); - this._$ebookTOC = $(this._ebookTOC); - //this._ebookTOC.setAttribute("src-tab-enabled", this.config.options.srcTabEnabled); - this.$main.addClass("disabled"); - this.$main.append(this._$container); - this._$container.append(this._$ebookTOC); - - this.setTitle(this.content.title); - - this.extensionHost.subscribe( - EbookExtensionEvents.LOADED_NAVIGATION, - (navigation: any) => { - this.$main.removeClass("disabled"); - this._ebookTOC.toc = navigation.toc; - } - ); - - this.extensionHost.subscribe( - EbookExtensionEvents.RELOCATED, - (location: any) => { - this._ebookTOC.selected = location.start.href; - } - ); - - this._ebookTOC.addEventListener("itemClicked", (e: any) => { - this.extensionHost.publish(EbookExtensionEvents.ITEM_CLICKED, e.detail); - if (this.extension.isMetric("sm")) { - this.toggle(true); - } - false; - }); - - Async.waitFor( - () => { - return window.customElements !== undefined; - }, - () => { - customElements.whenDefined("uv-ebook-toc").then(() => { - this.extensionHost.publish(EbookExtensionEvents.TOC_READY); - }); - } - ); - } - - expandFullStart(): void { - super.expandFullStart(); - this.extensionHost.publish(IIIFEvents.LEFTPANEL_EXPAND_FULL_START); - } - - expandFullFinish(): void { - super.expandFullFinish(); - this.extensionHost.publish(IIIFEvents.LEFTPANEL_EXPAND_FULL_FINISH); - } - - collapseFullStart(): void { - super.collapseFullStart(); - this.extensionHost.publish(IIIFEvents.LEFTPANEL_COLLAPSE_FULL_START); - } - - collapseFullFinish(): void { - super.collapseFullFinish(); - this.extensionHost.publish(IIIFEvents.LEFTPANEL_COLLAPSE_FULL_FINISH); - } - - resize(): void { - super.resize(); - this._$container.height( - this.$main.height() - this._$container.verticalPadding() - ); - } -} diff --git a/src/content-handlers/iiif/modules/uv-ebookleftpanel-module/css/styles.less b/src/content-handlers/iiif/modules/uv-ebookleftpanel-module/css/styles.less deleted file mode 100644 index 65c6410d2..000000000 --- a/src/content-handlers/iiif/modules/uv-ebookleftpanel-module/css/styles.less +++ /dev/null @@ -1,32 +0,0 @@ -.uv-iiif-extension-host.uv-ebook-extension { - .mainPanel { - .leftPanel { - .top { - .title { - text-transform: uppercase; - } - } - - .main { - //padding: @padding-medium-vertical @padding-medium-horizontal @padding-medium-vertical @padding-medium-horizontal; - &.disabled { - pointer-events: none; - opacity: 0.4; - } - - .container { - overflow: auto; - padding: @padding-medium; - - uv-ebook-toc { - --toc-link-selected-color: @link-color; - --toc-link-padding: 0.2rem; - --toc-margin: 0; - --toc-padding: 0; - --toc-list-style-type: none; - } - } - } - } - } -} diff --git a/src/content-handlers/iiif/modules/uv-ebookmobilefooterpanel-module/MobileFooter.ts b/src/content-handlers/iiif/modules/uv-ebookmobilefooterpanel-module/MobileFooter.ts deleted file mode 100644 index cfeb09887..000000000 --- a/src/content-handlers/iiif/modules/uv-ebookmobilefooterpanel-module/MobileFooter.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Config } from "../../extensions/uv-ebook-extension/config/Config"; -import { FooterPanel as BaseFooterPanel } from "../uv-shared-module/FooterPanel"; - -export class FooterPanel extends BaseFooterPanel< - Config["modules"]["footerPanel"] -> { - $fullScreenBtn: JQuery; - - constructor($element: JQuery) { - super($element); - } - - create(): void { - this.setConfig("mobileFooterPanel"); - - super.create(); - } - - resize(): void { - super.resize(); - - this.$options.css( - "left", - Math.floor(this.$element.width() / 2 - this.$options.width() / 2) - ); - } -} diff --git a/src/content-handlers/iiif/modules/uv-ebookmobilefooterpanel-module/css/styles.less b/src/content-handlers/iiif/modules/uv-ebookmobilefooterpanel-module/css/styles.less deleted file mode 100644 index 8fb330578..000000000 --- a/src/content-handlers/iiif/modules/uv-ebookmobilefooterpanel-module/css/styles.less +++ /dev/null @@ -1,3 +0,0 @@ -.left-options { - min-width: 30px; -} diff --git a/src/iiif-collection.json b/src/iiif-collection.json index c6e74c282..4b4b78bcd 100644 --- a/src/iiif-collection.json +++ b/src/iiif-collection.json @@ -1107,21 +1107,6 @@ } ] }, - { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://universalviewer.io/manifests.json", - "@type": "sc:Collection", - "label": "ebooks", - "visible": true, - "manifests": [ - { - "@id": "https://ebook-test-manifests.netlify.app/collection/alice-in-wonderland/index.json", - "@type": "sc:Manifest", - "label": "Alice in Wonderland", - "visible": true - } - ] - }, { "@context": "http://iiif.io/api/presentation/2/context.json", "@id": "http://universalviewer.io/manifests.json", From 53c2f7157edc509afa46e0b4fa68a6802636af33 Mon Sep 17 00:00:00 2001 From: Geoff Scholl Date: Wed, 4 Mar 2026 12:33:01 -0500 Subject: [PATCH 2/2] re-add test manifest --- src/iiif-collection.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/iiif-collection.json b/src/iiif-collection.json index 4b4b78bcd..c6e74c282 100644 --- a/src/iiif-collection.json +++ b/src/iiif-collection.json @@ -1107,6 +1107,21 @@ } ] }, + { + "@context": "http://iiif.io/api/presentation/2/context.json", + "@id": "http://universalviewer.io/manifests.json", + "@type": "sc:Collection", + "label": "ebooks", + "visible": true, + "manifests": [ + { + "@id": "https://ebook-test-manifests.netlify.app/collection/alice-in-wonderland/index.json", + "@type": "sc:Manifest", + "label": "Alice in Wonderland", + "visible": true + } + ] + }, { "@context": "http://iiif.io/api/presentation/2/context.json", "@id": "http://universalviewer.io/manifests.json",