diff --git a/css/pdfdraw.css b/css/pdfdraw.css index 1eea153..c5b3311 100644 --- a/css/pdfdraw.css +++ b/css/pdfdraw.css @@ -46,98 +46,58 @@ } .noneMode::before { - content: ""; - display: block; - width: 16px; - height: 16px; - background-size: 16px 16px; - background-image: url("../img/icon-notool.svg"); - background-repeat: no-repeat; + -webkit-mask-image: url("../img/icon-notool.svg"); + mask-image: url("../img/icon-notool.svg"); } .selectMode::before { - content: ""; - display: block; - width: 16px; - height: 16px; - background-size: 16px 16px; - background-image: url("../img/icon-select.svg"); - background-repeat: no-repeat; + -webkit-mask-image: url("../img/icon-select.svg"); + mask-image: url("../img/icon-select.svg"); } .pointerMode::before { - content: ""; - display: block; - width: 16px; - height: 16px; - background-size: 16px 16px; - background-image: url("../img/icon-pointer.svg"); - background-repeat: no-repeat; + -webkit-mask-image: url("../img/icon-pointer.svg"); + mask-image: url("../img/icon-pointer.svg"); } .freehandMode::before { - content: ""; - display: block; - width: 16px; - height: 16px; - background-size: 16px 16px; - background-image: url("../img/icon-freehand.svg"); - background-repeat: no-repeat; + -webkit-mask-image: url("../img/icon-freehand.svg"); + mask-image: url("../img/icon-freehand.svg"); } .rectangleMode::before { - content: ""; - display: block; - width: 16px; - height: 16px; - background-size: 16px 16px; - background-image: url("../img/icon-rectangle.svg"); - background-repeat: no-repeat; + -webkit-mask-image: url("../img/icon-rectangle.svg"); + mask-image: url("../img/icon-rectangle.svg"); } .ellipseMode::before { - content: ""; - display: block; - width: 16px; - height: 16px; - background-size: 16px 16px; - background-image: url("../img/icon-ellipse.svg"); - background-repeat: no-repeat; + -webkit-mask-image: url("../img/icon-ellipse.svg"); + mask-image: url("../img/icon-ellipse.svg"); } .lineMode::before { - content: ""; - display: block; - width: 16px; - height: 16px; - background-size: 16px 16px; - background-image: url("../img/icon-line.svg"); - background-repeat: no-repeat; + -webkit-mask-image: url("../img/icon-line.svg"); + mask-image: url("../img/icon-line.svg"); } +/* +// Provided by viewer.css .toolbarButton.download::before { - content: ""; - display: block; - width: 16px; - height: 16px; - background-size: 16px 16px; - background-image: url("../img/icon-download.svg"); - background-repeat: no-repeat; + -webkit-mask-image: url("../img/icon-download.svg"); + mask-image: url("../img/icon-download.svg"); } +*/ .secondaryToolbar.drawMenuToolbar { - right: 105px !important; + padding: 0; + right: 94px !important; line-height: 0 !important; } -.secondaryToolbar.drawMenuToolbar .toolbarButton::before { - position: relative !important; - top: 1px !important; - left: 1px !important; -} - .secondaryToolbar.drawMenuToolbar .toolbarButton { - margin: 0 !important; + margin: 2px 1px; + position: relative; + float: left; } #colorPicker { @@ -171,40 +131,6 @@ margin-top: -2px; } -@media screen and (-webkit-min-device-pixel-ratio: 2), screen and (min-resolution: 2dppx) { - #noneMode::before, - #selectMode::before, - #pointerMode::before, - #freehandMode::before, - #rectangleMode::before, - #ellipseMode::before, - #lineMode::before, - #drawModeToolbar::before, - #secondaryToolbarClose::before, - .toolbarButton.download::before { - background-size: 32px 32px !important; - height: 32px !important; - width: 32px !important; - } - - .secondaryToolbar.drawMenuToolbar .toolbarButton::before { - top: -7px !important; - left: -7px !important; - } - - #drawModeToolbarButtonContainer { - max-height: 26px; - } -} - -@media screen and (min-resolution: 2dppx) { - .toolbarButton.close::before { - background-size: 32px 32px !important; - height: 32px !important; - width: 32px !important; - } -} - .userlist { display: none; position: absolute; diff --git a/package-lock.json b/package-lock.json index 489bf0c..ddad826 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "@jaames/iro": "5.5.2", "jquery": "3.5.0", "paper": "0.12.15", - "pdfjs-dist": "2.0.943", - "pdfjs-dist-viewer-min": "2.0.943", + "pdfjs-dist": "2.9.359", + "pdfjs-dist-viewer-min": "2.9.359", "socket.io-client": "4.4.0", "url": "0.11.0" }, @@ -982,35 +982,6 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/copy-webpack-plugin/node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/copy-webpack-plugin/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -2368,14 +2339,17 @@ "dev": true }, "node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dependencies": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" }, "bin": { "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, "node_modules/kind-of": { @@ -2421,16 +2395,16 @@ } }, "node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "json5": "^2.1.2" }, "engines": { - "node": ">=4.0.0" + "node": ">=8.9.0" } }, "node_modules/locate-path": { @@ -2701,11 +2675,6 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, - "node_modules/node-ensure": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz", - "integrity": "sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc=" - }, "node_modules/node-releases": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", @@ -2969,21 +2938,17 @@ } }, "node_modules/pdfjs-dist": { - "version": "2.0.943", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.0.943.tgz", - "integrity": "sha512-iLhNcm4XceTHRaSU5o22ZGCm4YpuW5+rf4+BJFH/feBhMQLbCGBry+Jet8Q419QDI4qgARaIQzXuiNrsNWS8Yw==", - "dependencies": { - "node-ensure": "^0.0.0", - "worker-loader": "^2.0.0" - }, + "version": "2.9.359", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.9.359.tgz", + "integrity": "sha512-P2nYtkacdlZaNNwrBLw1ZyMm0oE2yY/5S/GDCAmMJ7U4+ciL/D0mrlEC/o4HZZc/LNE3w8lEVzBEyVgEQlPVKQ==", "peerDependencies": { - "webpack": "^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0" + "worker-loader": "^3.0.7" } }, "node_modules/pdfjs-dist-viewer-min": { - "version": "2.0.943", - "resolved": "https://registry.npmjs.org/pdfjs-dist-viewer-min/-/pdfjs-dist-viewer-min-2.0.943.tgz", - "integrity": "sha512-b0jGTSAfwxgocdUMzIe3g/PC+XIhpY+cZr3jBZ+T9OChComEb8Z0OoZbdH/CwlGgNtjBmo+RyH8bCvNMrfJ/uA==" + "version": "2.9.359", + "resolved": "https://registry.npmjs.org/pdfjs-dist-viewer-min/-/pdfjs-dist-viewer-min-2.9.359.tgz", + "integrity": "sha512-pmpYMn85oXDeLNAZljCMrNRcdLFZqPUH1qEh1iQeAAT+QF1QpM44IgzTp/Yoc01xCL7TWW7zz0X9gBiMePdCTQ==" }, "node_modules/picocolors": { "version": "1.0.0", @@ -4281,30 +4246,23 @@ } }, "node_modules/worker-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-2.0.0.tgz", - "integrity": "sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-3.0.8.tgz", + "integrity": "sha512-XQyQkIFeRVC7f7uRhFdNMe/iJOdO6zxAaR3EWbDp45v3mDhrTi+++oswKNxShUNjPC/1xUp5DB29YKLhFo129g==", + "peer": true, "dependencies": { - "loader-utils": "^1.0.0", - "schema-utils": "^0.4.0" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">= 6.9.0 || >= 8.9.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0" - } - }, - "node_modules/worker-loader/node_modules/schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "dependencies": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" + "webpack": "^4.0.0 || ^5.0.0" } }, "node_modules/wrappy": { @@ -5158,26 +5116,6 @@ "pkg-dir": "^4.1.0" } }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -6214,11 +6152,11 @@ "dev": true }, "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" } }, "kind-of": { @@ -6255,13 +6193,13 @@ "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==" }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "json5": "^2.1.2" } }, "locate-path": { @@ -6471,11 +6409,6 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, - "node-ensure": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz", - "integrity": "sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc=" - }, "node-releases": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", @@ -6672,18 +6605,15 @@ "dev": true }, "pdfjs-dist": { - "version": "2.0.943", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.0.943.tgz", - "integrity": "sha512-iLhNcm4XceTHRaSU5o22ZGCm4YpuW5+rf4+BJFH/feBhMQLbCGBry+Jet8Q419QDI4qgARaIQzXuiNrsNWS8Yw==", - "requires": { - "node-ensure": "^0.0.0", - "worker-loader": "^2.0.0" - } + "version": "2.9.359", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.9.359.tgz", + "integrity": "sha512-P2nYtkacdlZaNNwrBLw1ZyMm0oE2yY/5S/GDCAmMJ7U4+ciL/D0mrlEC/o4HZZc/LNE3w8lEVzBEyVgEQlPVKQ==", + "requires": {} }, "pdfjs-dist-viewer-min": { - "version": "2.0.943", - "resolved": "https://registry.npmjs.org/pdfjs-dist-viewer-min/-/pdfjs-dist-viewer-min-2.0.943.tgz", - "integrity": "sha512-b0jGTSAfwxgocdUMzIe3g/PC+XIhpY+cZr3jBZ+T9OChComEb8Z0OoZbdH/CwlGgNtjBmo+RyH8bCvNMrfJ/uA==" + "version": "2.9.359", + "resolved": "https://registry.npmjs.org/pdfjs-dist-viewer-min/-/pdfjs-dist-viewer-min-2.9.359.tgz", + "integrity": "sha512-pmpYMn85oXDeLNAZljCMrNRcdLFZqPUH1qEh1iQeAAT+QF1QpM44IgzTp/Yoc01xCL7TWW7zz0X9gBiMePdCTQ==" }, "picocolors": { "version": "1.0.0", @@ -7636,23 +7566,13 @@ "dev": true }, "worker-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-2.0.0.tgz", - "integrity": "sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-3.0.8.tgz", + "integrity": "sha512-XQyQkIFeRVC7f7uRhFdNMe/iJOdO6zxAaR3EWbDp45v3mDhrTi+++oswKNxShUNjPC/1xUp5DB29YKLhFo129g==", + "peer": true, "requires": { - "loader-utils": "^1.0.0", - "schema-utils": "^0.4.0" - }, - "dependencies": { - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - } + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" } }, "wrappy": { diff --git a/package.json b/package.json index f3b7522..cc99477 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,8 @@ "@jaames/iro": "5.5.2", "jquery": "3.5.0", "paper": "0.12.15", - "pdfjs-dist": "2.0.943", - "pdfjs-dist-viewer-min": "2.0.943", + "pdfjs-dist": "2.9.359", + "pdfjs-dist-viewer-min": "2.9.359", "socket.io-client": "4.4.0", "url": "0.11.0" }, diff --git a/src/pdfdraw.js b/src/pdfdraw.js index e8b97f1..63edb46 100644 --- a/src/pdfdraw.js +++ b/src/pdfdraw.js @@ -1325,46 +1325,49 @@ $(document).ready(function() { var annotator = new Annotator(socketurl, fileid, userid, displayname, token); - $(document).on('pagesloaded', function(event) { - annotator.documentLoaded(PDFViewerApplication.pdfViewer.pdfDocument); - if (!can_update) { - $('#viewer .page[data-page-number!=1]').addClass('hiddenPage'); - } - }); + PDFViewerApplication.initializedPromise.then(function() { + var eventBus = PDFViewerApplication.eventBus; + eventBus.on('pagesloaded', function(event) { + annotator.documentLoaded(PDFViewerApplication.pdfViewer.pdfDocument); + if (!can_update) { + $('#viewer .page[data-page-number!=1]').addClass('hiddenPage'); + } + }); - $(document).on('pagerendered', function(event) { - var pagenum = event.detail.pageNumber; - if (!pagenum) { - console.log("Rendered event without page number", event); - return; - } + eventBus.on('pagerendered', function(event) { + var pagenum = event.pageNumber; + if (!pagenum) { + console.log("Rendered event without page number", event); + return; + } - var container = $(event.target); - PDFViewerApplication.pdfViewer.pdfDocument.getPage(pagenum).then(function(page) { - annotator.getPage(pagenum, page, container).then(function(page_annotator) { - page_annotator.update(PDFViewerApplication.pdfViewer.currentScale); + var container = $("#viewer .page[data-page-number='" + pagenum + "']"); + if (!container.length) { + console.log("Could not get page container", event); + return; + } + + PDFViewerApplication.pdfViewer.pdfDocument.getPage(pagenum).then(function(page) { + annotator.getPage(pagenum, page, container).then(function(page_annotator) { + page_annotator.update(PDFViewerApplication.pdfViewer.currentScale); + }); }); }); - }); - $(document).on('pagechange', function(event) { - var originalEvent = event.originalEvent; - if (!originalEvent || typeof(originalEvent.pageNumber) === 'undefined') { - return; - } - - var pagenum = originalEvent.pageNumber; - if (can_update) { - annotator.switchPage(pagenum); - } else { - $('#viewer .page').addClass('hiddenPage'); - var page = $('#viewer .page[data-page-number=' + pagenum +']'); - page.removeClass('hiddenPage'); - // Need to redraw currently visible page to fix any layout issues. - setTimeout(function() { - PDFViewerApplication.pdfViewer.update(); - }, 0); - } + eventBus.on('pagechanging', function(event) { + var pagenum = event.pageNumber; + if (can_update) { + annotator.switchPage(pagenum); + } else { + $('#viewer .page').addClass('hiddenPage'); + var page = $('#viewer .page[data-page-number=' + pagenum +']'); + page.removeClass('hiddenPage'); + // Need to redraw currently visible page to fix any layout issues. + setTimeout(function() { + PDFViewerApplication.pdfViewer.update(); + }, 0); + } + }); }); $(".modeButton").click(function(event) { diff --git a/templates/viewer.php b/templates/viewer.php index df46728..db92ee0 100644 --- a/templates/viewer.php +++ b/templates/viewer.php @@ -66,16 +66,30 @@ See https://github.com/adobe-type-tools/cmap-resources