@4tw/vue-cli-plugin-pdfjs-viewer 1.3.1 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/README.md +0 -13
- package/assets/build/pdf.mjs +18151 -0
- package/assets/build/pdf.mjs.map +1 -0
- package/assets/build/pdf.sandbox.mjs +241 -0
- package/assets/build/pdf.sandbox.mjs.map +1 -0
- package/assets/build/pdf.worker.mjs +57171 -0
- package/assets/build/pdf.worker.mjs.map +1 -0
- package/assets/web/debugger.css +111 -0
- package/assets/web/debugger.mjs +623 -0
- package/assets/web/images/altText_add.svg +3 -0
- package/assets/web/images/altText_done.svg +3 -0
- package/assets/web/images/annotation-paperclip.svg +6 -0
- package/assets/web/images/annotation-pushpin.svg +7 -0
- package/assets/web/images/cursor-editorFreeText.svg +3 -0
- package/assets/web/images/cursor-editorInk.svg +4 -0
- package/assets/web/images/editor-toolbar-delete.svg +5 -0
- package/assets/web/images/findbarButton-next.svg +3 -4
- package/assets/web/images/findbarButton-previous.svg +3 -4
- package/assets/web/images/gv-toolbarButton-download.svg +3 -0
- package/assets/web/images/gv-toolbarButton-openinapp.svg +11 -0
- package/assets/web/images/secondaryToolbarButton-documentProperties.svg +3 -15
- package/assets/web/images/secondaryToolbarButton-firstPage.svg +3 -1
- package/assets/web/images/secondaryToolbarButton-handTool.svg +3 -1
- package/assets/web/images/secondaryToolbarButton-lastPage.svg +3 -1
- package/assets/web/images/secondaryToolbarButton-rotateCcw.svg +3 -1
- package/assets/web/images/secondaryToolbarButton-rotateCw.svg +3 -4
- package/assets/web/images/secondaryToolbarButton-scrollHorizontal.svg +3 -1
- package/assets/web/images/secondaryToolbarButton-scrollPage.svg +3 -0
- package/assets/web/images/secondaryToolbarButton-scrollVertical.svg +3 -1
- package/assets/web/images/secondaryToolbarButton-scrollWrapped.svg +3 -1
- package/assets/web/images/secondaryToolbarButton-selectTool.svg +3 -4
- package/assets/web/images/secondaryToolbarButton-spreadEven.svg +3 -1
- package/assets/web/images/secondaryToolbarButton-spreadNone.svg +3 -1
- package/assets/web/images/secondaryToolbarButton-spreadOdd.svg +3 -1
- package/assets/web/images/toolbarButton-bookmark.svg +3 -1
- package/assets/web/images/toolbarButton-currentOutlineItem.svg +3 -1
- package/assets/web/images/toolbarButton-download.svg +4 -4
- package/assets/web/images/toolbarButton-editorFreeText.svg +3 -0
- package/assets/web/images/toolbarButton-editorHighlight.svg +6 -0
- package/assets/web/images/toolbarButton-editorInk.svg +4 -0
- package/assets/web/images/toolbarButton-editorStamp.svg +8 -0
- package/assets/web/images/toolbarButton-menuArrow.svg +3 -1
- package/assets/web/images/toolbarButton-openFile.svg +3 -4
- package/assets/web/images/toolbarButton-pageDown.svg +3 -7
- package/assets/web/images/toolbarButton-pageUp.svg +3 -12
- package/assets/web/images/toolbarButton-presentationMode.svg +3 -1
- package/assets/web/images/toolbarButton-print.svg +3 -4
- package/assets/web/images/toolbarButton-search.svg +3 -4
- package/assets/web/images/toolbarButton-secondaryToolbarToggle.svg +3 -4
- package/assets/web/images/toolbarButton-sidebarToggle.svg +3 -4
- package/assets/web/images/toolbarButton-viewAttachments.svg +3 -1
- package/assets/web/images/toolbarButton-viewLayers.svg +3 -1
- package/assets/web/images/toolbarButton-viewOutline.svg +3 -1
- package/assets/web/images/toolbarButton-viewThumbnail.svg +3 -4
- package/assets/web/images/toolbarButton-zoomIn.svg +3 -4
- package/assets/web/images/toolbarButton-zoomOut.svg +3 -4
- package/assets/web/locale/ach/viewer.ftl +225 -0
- package/assets/web/locale/af/viewer.ftl +212 -0
- package/assets/web/locale/an/viewer.ftl +257 -0
- package/assets/web/locale/ar/viewer.ftl +264 -0
- package/assets/web/locale/ast/viewer.ftl +201 -0
- package/assets/web/locale/az/viewer.ftl +257 -0
- package/assets/web/locale/be/viewer.ftl +386 -0
- package/assets/web/locale/bg/viewer.ftl +247 -0
- package/assets/web/locale/bn/viewer.ftl +247 -0
- package/assets/web/locale/bo/viewer.ftl +247 -0
- package/assets/web/locale/br/viewer.ftl +291 -0
- package/assets/web/locale/brx/viewer.ftl +218 -0
- package/assets/web/locale/bs/viewer.ftl +223 -0
- package/assets/web/locale/ca/viewer.ftl +299 -0
- package/assets/web/locale/cak/viewer.ftl +291 -0
- package/assets/web/locale/ckb/viewer.ftl +242 -0
- package/assets/web/locale/cs/viewer.ftl +388 -0
- package/assets/web/locale/cy/viewer.ftl +392 -0
- package/assets/web/locale/da/viewer.ftl +363 -0
- package/assets/web/locale/de/viewer.ftl +384 -0
- package/assets/web/locale/dsb/viewer.ftl +388 -0
- package/assets/web/locale/el/viewer.ftl +384 -0
- package/assets/web/locale/en-CA/viewer.ftl +311 -0
- package/assets/web/locale/en-GB/viewer.ftl +384 -0
- package/assets/web/locale/en-US/viewer.ftl +411 -0
- package/assets/web/locale/eo/viewer.ftl +349 -0
- package/assets/web/locale/es-AR/viewer.ftl +384 -0
- package/assets/web/locale/es-CL/viewer.ftl +384 -0
- package/assets/web/locale/es-ES/viewer.ftl +384 -0
- package/assets/web/locale/es-MX/viewer.ftl +299 -0
- package/assets/web/locale/et/viewer.ftl +268 -0
- package/assets/web/locale/eu/viewer.ftl +349 -0
- package/assets/web/locale/fa/viewer.ftl +246 -0
- package/assets/web/locale/ff/viewer.ftl +247 -0
- package/assets/web/locale/fi/viewer.ftl +384 -0
- package/assets/web/locale/fr/viewer.ftl +380 -0
- package/assets/web/locale/fur/viewer.ftl +363 -0
- package/assets/web/locale/fy-NL/viewer.ftl +384 -0
- package/assets/web/locale/ga-IE/viewer.ftl +213 -0
- package/assets/web/locale/gd/viewer.ftl +299 -0
- package/assets/web/locale/gl/viewer.ftl +347 -0
- package/assets/web/locale/gn/viewer.ftl +384 -0
- package/assets/web/locale/gu-IN/viewer.ftl +247 -0
- package/assets/web/locale/he/viewer.ftl +384 -0
- package/assets/web/locale/hi-IN/viewer.ftl +253 -0
- package/assets/web/locale/hr/viewer.ftl +279 -0
- package/assets/web/locale/hsb/viewer.ftl +388 -0
- package/assets/web/locale/hu/viewer.ftl +384 -0
- package/assets/web/locale/hy-AM/viewer.ftl +251 -0
- package/assets/web/locale/hye/viewer.ftl +268 -0
- package/assets/web/locale/ia/viewer.ftl +384 -0
- package/assets/web/locale/id/viewer.ftl +293 -0
- package/assets/web/locale/is/viewer.ftl +384 -0
- package/assets/web/locale/it/viewer.ftl +389 -0
- package/assets/web/locale/ja/viewer.ftl +363 -0
- package/assets/web/locale/ka/viewer.ftl +351 -0
- package/assets/web/locale/kab/viewer.ftl +337 -0
- package/assets/web/locale/kk/viewer.ftl +384 -0
- package/assets/web/locale/km/viewer.ftl +223 -0
- package/assets/web/locale/kn/viewer.ftl +213 -0
- package/assets/web/locale/ko/viewer.ftl +376 -0
- package/assets/web/locale/lij/viewer.ftl +247 -0
- package/assets/web/locale/lo/viewer.ftl +299 -0
- package/assets/web/locale/locale.json +1 -0
- package/assets/web/locale/lt/viewer.ftl +268 -0
- package/assets/web/locale/ltg/viewer.ftl +246 -0
- package/assets/web/locale/lv/viewer.ftl +247 -0
- package/assets/web/locale/meh/viewer.ftl +87 -0
- package/assets/web/locale/mk/viewer.ftl +215 -0
- package/assets/web/locale/mr/viewer.ftl +239 -0
- package/assets/web/locale/ms/viewer.ftl +247 -0
- package/assets/web/locale/my/viewer.ftl +206 -0
- package/assets/web/locale/nb-NO/viewer.ftl +384 -0
- package/assets/web/locale/ne-NP/viewer.ftl +234 -0
- package/assets/web/locale/nl/viewer.ftl +384 -0
- package/assets/web/locale/nn-NO/viewer.ftl +343 -0
- package/assets/web/locale/oc/viewer.ftl +318 -0
- package/assets/web/locale/pa-IN/viewer.ftl +363 -0
- package/assets/web/locale/pl/viewer.ftl +386 -0
- package/assets/web/locale/pt-BR/viewer.ftl +384 -0
- package/assets/web/locale/pt-PT/viewer.ftl +349 -0
- package/assets/web/locale/rm/viewer.ftl +384 -0
- package/assets/web/locale/ro/viewer.ftl +251 -0
- package/assets/web/locale/ru/viewer.ftl +386 -0
- package/assets/web/locale/sat/viewer.ftl +311 -0
- package/assets/web/locale/sc/viewer.ftl +290 -0
- package/assets/web/locale/scn/viewer.ftl +74 -0
- package/assets/web/locale/sco/viewer.ftl +264 -0
- package/assets/web/locale/si/viewer.ftl +253 -0
- package/assets/web/locale/sk/viewer.ftl +388 -0
- package/assets/web/locale/skr/viewer.ftl +305 -0
- package/assets/web/locale/sl/viewer.ftl +388 -0
- package/assets/web/locale/son/viewer.ftl +206 -0
- package/assets/web/locale/sq/viewer.ftl +375 -0
- package/assets/web/locale/sr/viewer.ftl +299 -0
- package/assets/web/locale/sv-SE/viewer.ftl +384 -0
- package/assets/web/locale/szl/viewer.ftl +257 -0
- package/assets/web/locale/ta/viewer.ftl +223 -0
- package/assets/web/locale/te/viewer.ftl +239 -0
- package/assets/web/locale/tg/viewer.ftl +384 -0
- package/assets/web/locale/th/viewer.ftl +341 -0
- package/assets/web/locale/tl/viewer.ftl +257 -0
- package/assets/web/locale/tr/viewer.ftl +384 -0
- package/assets/web/locale/trs/viewer.ftl +197 -0
- package/assets/web/locale/uk/viewer.ftl +386 -0
- package/assets/web/locale/ur/viewer.ftl +248 -0
- package/assets/web/locale/uz/viewer.ftl +187 -0
- package/assets/web/locale/vi/viewer.ftl +376 -0
- package/assets/web/locale/wo/viewer.ftl +127 -0
- package/assets/web/locale/xh/viewer.ftl +212 -0
- package/assets/web/locale/zh-CN/viewer.ftl +376 -0
- package/assets/web/locale/zh-TW/viewer.ftl +376 -0
- package/assets/web/standard_fonts/FoxitDingbats.pfb +0 -0
- package/assets/web/standard_fonts/FoxitFixed.pfb +0 -0
- package/assets/web/standard_fonts/FoxitFixedBold.pfb +0 -0
- package/assets/web/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
- package/assets/web/standard_fonts/FoxitFixedItalic.pfb +0 -0
- package/assets/web/standard_fonts/FoxitSerif.pfb +0 -0
- package/assets/web/standard_fonts/FoxitSerifBold.pfb +0 -0
- package/assets/web/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
- package/assets/web/standard_fonts/FoxitSerifItalic.pfb +0 -0
- package/assets/web/standard_fonts/FoxitSymbol.pfb +0 -0
- package/assets/web/standard_fonts/LICENSE_FOXIT +27 -0
- package/assets/web/standard_fonts/LICENSE_LIBERATION +102 -0
- package/assets/web/standard_fonts/LiberationSans-Bold.ttf +0 -0
- package/assets/web/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
- package/assets/web/standard_fonts/LiberationSans-Italic.ttf +0 -0
- package/assets/web/standard_fonts/LiberationSans-Regular.ttf +0 -0
- package/assets/web/viewer.css +3294 -1914
- package/assets/web/viewer.html +313 -221
- package/assets/web/viewer.mjs +15114 -0
- package/assets/web/viewer.mjs.map +1 -0
- package/package.json +6 -3
- package/assets/build/pdf.js +0 -14827
- package/assets/build/pdf.js.map +0 -1
- package/assets/build/pdf.worker.js +0 -65293
- package/assets/build/pdf.worker.js.map +0 -1
- package/assets/web/custom.css +0 -0
- package/assets/web/debugger.js +0 -614
- package/assets/web/images/grab.cur +0 -0
- package/assets/web/images/grabbing.cur +0 -0
- package/assets/web/images/loading-dark.svg +0 -24
- package/assets/web/images/shadow.png +0 -0
- package/assets/web/locale/ach/viewer.properties +0 -205
- package/assets/web/locale/af/viewer.properties +0 -182
- package/assets/web/locale/an/viewer.properties +0 -250
- package/assets/web/locale/ar/viewer.properties +0 -250
- package/assets/web/locale/ast/viewer.properties +0 -140
- package/assets/web/locale/az/viewer.properties +0 -250
- package/assets/web/locale/be/viewer.properties +0 -252
- package/assets/web/locale/bg/viewer.properties +0 -240
- package/assets/web/locale/bn/viewer.properties +0 -244
- package/assets/web/locale/bo/viewer.properties +0 -243
- package/assets/web/locale/br/viewer.properties +0 -248
- package/assets/web/locale/brx/viewer.properties +0 -209
- package/assets/web/locale/bs/viewer.properties +0 -199
- package/assets/web/locale/ca/viewer.properties +0 -252
- package/assets/web/locale/cak/viewer.properties +0 -252
- package/assets/web/locale/ckb/viewer.properties +0 -240
- package/assets/web/locale/cs/viewer.properties +0 -252
- package/assets/web/locale/cy/viewer.properties +0 -252
- package/assets/web/locale/da/viewer.properties +0 -252
- package/assets/web/locale/de/viewer.properties +0 -252
- package/assets/web/locale/dsb/viewer.properties +0 -252
- package/assets/web/locale/el/viewer.properties +0 -252
- package/assets/web/locale/en-CA/viewer.properties +0 -252
- package/assets/web/locale/en-GB/viewer.properties +0 -252
- package/assets/web/locale/en-US/viewer.properties +0 -248
- package/assets/web/locale/eo/viewer.properties +0 -252
- package/assets/web/locale/es-AR/viewer.properties +0 -252
- package/assets/web/locale/es-CL/viewer.properties +0 -252
- package/assets/web/locale/es-ES/viewer.properties +0 -252
- package/assets/web/locale/es-MX/viewer.properties +0 -250
- package/assets/web/locale/et/viewer.properties +0 -244
- package/assets/web/locale/eu/viewer.properties +0 -252
- package/assets/web/locale/fa/viewer.properties +0 -221
- package/assets/web/locale/ff/viewer.properties +0 -240
- package/assets/web/locale/fi/viewer.properties +0 -252
- package/assets/web/locale/fr/viewer.properties +0 -252
- package/assets/web/locale/fy-NL/viewer.properties +0 -252
- package/assets/web/locale/ga-IE/viewer.properties +0 -182
- package/assets/web/locale/gd/viewer.properties +0 -244
- package/assets/web/locale/gl/viewer.properties +0 -252
- package/assets/web/locale/gn/viewer.properties +0 -252
- package/assets/web/locale/gu-IN/viewer.properties +0 -240
- package/assets/web/locale/he/viewer.properties +0 -252
- package/assets/web/locale/hi-IN/viewer.properties +0 -242
- package/assets/web/locale/hr/viewer.properties +0 -252
- package/assets/web/locale/hsb/viewer.properties +0 -252
- package/assets/web/locale/hu/viewer.properties +0 -252
- package/assets/web/locale/hy-AM/viewer.properties +0 -246
- package/assets/web/locale/hye/viewer.properties +0 -252
- package/assets/web/locale/ia/viewer.properties +0 -252
- package/assets/web/locale/id/viewer.properties +0 -252
- package/assets/web/locale/is/viewer.properties +0 -237
- package/assets/web/locale/it/viewer.properties +0 -196
- package/assets/web/locale/ja/viewer.properties +0 -252
- package/assets/web/locale/ka/viewer.properties +0 -252
- package/assets/web/locale/kab/viewer.properties +0 -252
- package/assets/web/locale/kk/viewer.properties +0 -252
- package/assets/web/locale/km/viewer.properties +0 -215
- package/assets/web/locale/kn/viewer.properties +0 -191
- package/assets/web/locale/ko/viewer.properties +0 -252
- package/assets/web/locale/lij/viewer.properties +0 -240
- package/assets/web/locale/lo/viewer.properties +0 -151
- package/assets/web/locale/locale.properties +0 -315
- package/assets/web/locale/lt/viewer.properties +0 -252
- package/assets/web/locale/ltg/viewer.properties +0 -218
- package/assets/web/locale/lv/viewer.properties +0 -240
- package/assets/web/locale/meh/viewer.properties +0 -111
- package/assets/web/locale/mk/viewer.properties +0 -143
- package/assets/web/locale/mr/viewer.properties +0 -236
- package/assets/web/locale/ms/viewer.properties +0 -240
- package/assets/web/locale/my/viewer.properties +0 -196
- package/assets/web/locale/nb-NO/viewer.properties +0 -252
- package/assets/web/locale/ne-NP/viewer.properties +0 -182
- package/assets/web/locale/nl/viewer.properties +0 -252
- package/assets/web/locale/nn-NO/viewer.properties +0 -252
- package/assets/web/locale/oc/viewer.properties +0 -252
- package/assets/web/locale/pa-IN/viewer.properties +0 -252
- package/assets/web/locale/pl/viewer.properties +0 -252
- package/assets/web/locale/pt-BR/viewer.properties +0 -252
- package/assets/web/locale/pt-PT/viewer.properties +0 -252
- package/assets/web/locale/rm/viewer.properties +0 -252
- package/assets/web/locale/ro/viewer.properties +0 -246
- package/assets/web/locale/ru/viewer.properties +0 -252
- package/assets/web/locale/scn/viewer.properties +0 -101
- package/assets/web/locale/si/viewer.properties +0 -206
- package/assets/web/locale/sk/viewer.properties +0 -252
- package/assets/web/locale/sl/viewer.properties +0 -252
- package/assets/web/locale/son/viewer.properties +0 -178
- package/assets/web/locale/sq/viewer.properties +0 -243
- package/assets/web/locale/sr/viewer.properties +0 -252
- package/assets/web/locale/sv-SE/viewer.properties +0 -253
- package/assets/web/locale/szl/viewer.properties +0 -250
- package/assets/web/locale/ta/viewer.properties +0 -199
- package/assets/web/locale/te/viewer.properties +0 -224
- package/assets/web/locale/th/viewer.properties +0 -252
- package/assets/web/locale/tl/viewer.properties +0 -250
- package/assets/web/locale/tr/viewer.properties +0 -252
- package/assets/web/locale/trs/viewer.properties +0 -212
- package/assets/web/locale/uk/viewer.properties +0 -252
- package/assets/web/locale/ur/viewer.properties +0 -240
- package/assets/web/locale/uz/viewer.properties +0 -167
- package/assets/web/locale/vi/viewer.properties +0 -252
- package/assets/web/locale/wo/viewer.properties +0 -123
- package/assets/web/locale/xh/viewer.properties +0 -182
- package/assets/web/locale/zh-CN/viewer.properties +0 -252
- package/assets/web/locale/zh-TW/viewer.properties +0 -252
- package/assets/web/viewer.js +0 -15117
- package/assets/web/viewer.js.map +0 -1
|
@@ -0,0 +1,623 @@
|
|
|
1
|
+
/* Copyright 2012 Mozilla Foundation
|
|
2
|
+
*
|
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License.
|
|
5
|
+
* You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
* See the License for the specific language governing permissions and
|
|
13
|
+
* limitations under the License.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
const { OPS } = globalThis.pdfjsLib || (await import("pdfjs-lib"));
|
|
17
|
+
|
|
18
|
+
const opMap = Object.create(null);
|
|
19
|
+
for (const key in OPS) {
|
|
20
|
+
opMap[OPS[key]] = key;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const FontInspector = (function FontInspectorClosure() {
|
|
24
|
+
let fonts;
|
|
25
|
+
let active = false;
|
|
26
|
+
const fontAttribute = "data-font-name";
|
|
27
|
+
function removeSelection() {
|
|
28
|
+
const divs = document.querySelectorAll(`span[${fontAttribute}]`);
|
|
29
|
+
for (const div of divs) {
|
|
30
|
+
div.className = "";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function resetSelection() {
|
|
34
|
+
const divs = document.querySelectorAll(`span[${fontAttribute}]`);
|
|
35
|
+
for (const div of divs) {
|
|
36
|
+
div.className = "debuggerHideText";
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function selectFont(fontName, show) {
|
|
40
|
+
const divs = document.querySelectorAll(
|
|
41
|
+
`span[${fontAttribute}=${fontName}]`
|
|
42
|
+
);
|
|
43
|
+
for (const div of divs) {
|
|
44
|
+
div.className = show ? "debuggerShowText" : "debuggerHideText";
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function textLayerClick(e) {
|
|
48
|
+
if (
|
|
49
|
+
!e.target.dataset.fontName ||
|
|
50
|
+
e.target.tagName.toUpperCase() !== "SPAN"
|
|
51
|
+
) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const fontName = e.target.dataset.fontName;
|
|
55
|
+
const selects = document.getElementsByTagName("input");
|
|
56
|
+
for (const select of selects) {
|
|
57
|
+
if (select.dataset.fontName !== fontName) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
select.checked = !select.checked;
|
|
61
|
+
selectFont(fontName, select.checked);
|
|
62
|
+
select.scrollIntoView();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
// Properties/functions needed by PDFBug.
|
|
67
|
+
id: "FontInspector",
|
|
68
|
+
name: "Font Inspector",
|
|
69
|
+
panel: null,
|
|
70
|
+
manager: null,
|
|
71
|
+
init() {
|
|
72
|
+
const panel = this.panel;
|
|
73
|
+
const tmp = document.createElement("button");
|
|
74
|
+
tmp.addEventListener("click", resetSelection);
|
|
75
|
+
tmp.textContent = "Refresh";
|
|
76
|
+
panel.append(tmp);
|
|
77
|
+
|
|
78
|
+
fonts = document.createElement("div");
|
|
79
|
+
panel.append(fonts);
|
|
80
|
+
},
|
|
81
|
+
cleanup() {
|
|
82
|
+
fonts.textContent = "";
|
|
83
|
+
},
|
|
84
|
+
enabled: false,
|
|
85
|
+
get active() {
|
|
86
|
+
return active;
|
|
87
|
+
},
|
|
88
|
+
set active(value) {
|
|
89
|
+
active = value;
|
|
90
|
+
if (active) {
|
|
91
|
+
document.body.addEventListener("click", textLayerClick, true);
|
|
92
|
+
resetSelection();
|
|
93
|
+
} else {
|
|
94
|
+
document.body.removeEventListener("click", textLayerClick, true);
|
|
95
|
+
removeSelection();
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
// FontInspector specific functions.
|
|
99
|
+
fontAdded(fontObj, url) {
|
|
100
|
+
function properties(obj, list) {
|
|
101
|
+
const moreInfo = document.createElement("table");
|
|
102
|
+
for (const entry of list) {
|
|
103
|
+
const tr = document.createElement("tr");
|
|
104
|
+
const td1 = document.createElement("td");
|
|
105
|
+
td1.textContent = entry;
|
|
106
|
+
tr.append(td1);
|
|
107
|
+
const td2 = document.createElement("td");
|
|
108
|
+
td2.textContent = obj[entry].toString();
|
|
109
|
+
tr.append(td2);
|
|
110
|
+
moreInfo.append(tr);
|
|
111
|
+
}
|
|
112
|
+
return moreInfo;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const moreInfo = fontObj.css
|
|
116
|
+
? properties(fontObj, ["baseFontName"])
|
|
117
|
+
: properties(fontObj, ["name", "type"]);
|
|
118
|
+
|
|
119
|
+
const fontName = fontObj.loadedName;
|
|
120
|
+
const font = document.createElement("div");
|
|
121
|
+
const name = document.createElement("span");
|
|
122
|
+
name.textContent = fontName;
|
|
123
|
+
let download;
|
|
124
|
+
if (!fontObj.css) {
|
|
125
|
+
download = document.createElement("a");
|
|
126
|
+
if (url) {
|
|
127
|
+
url = /url\(['"]?([^)"']+)/.exec(url);
|
|
128
|
+
download.href = url[1];
|
|
129
|
+
} else if (fontObj.data) {
|
|
130
|
+
download.href = URL.createObjectURL(
|
|
131
|
+
new Blob([fontObj.data], { type: fontObj.mimetype })
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
download.textContent = "Download";
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
const logIt = document.createElement("a");
|
|
138
|
+
logIt.href = "";
|
|
139
|
+
logIt.textContent = "Log";
|
|
140
|
+
logIt.addEventListener("click", function (event) {
|
|
141
|
+
event.preventDefault();
|
|
142
|
+
console.log(fontObj);
|
|
143
|
+
});
|
|
144
|
+
const select = document.createElement("input");
|
|
145
|
+
select.setAttribute("type", "checkbox");
|
|
146
|
+
select.dataset.fontName = fontName;
|
|
147
|
+
select.addEventListener("click", function () {
|
|
148
|
+
selectFont(fontName, select.checked);
|
|
149
|
+
});
|
|
150
|
+
if (download) {
|
|
151
|
+
font.append(select, name, " ", download, " ", logIt, moreInfo);
|
|
152
|
+
} else {
|
|
153
|
+
font.append(select, name, " ", logIt, moreInfo);
|
|
154
|
+
}
|
|
155
|
+
fonts.append(font);
|
|
156
|
+
// Somewhat of a hack, should probably add a hook for when the text layer
|
|
157
|
+
// is done rendering.
|
|
158
|
+
setTimeout(() => {
|
|
159
|
+
if (this.active) {
|
|
160
|
+
resetSelection();
|
|
161
|
+
}
|
|
162
|
+
}, 2000);
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
})();
|
|
166
|
+
|
|
167
|
+
// Manages all the page steppers.
|
|
168
|
+
const StepperManager = (function StepperManagerClosure() {
|
|
169
|
+
let steppers = [];
|
|
170
|
+
let stepperDiv = null;
|
|
171
|
+
let stepperControls = null;
|
|
172
|
+
let stepperChooser = null;
|
|
173
|
+
let breakPoints = Object.create(null);
|
|
174
|
+
return {
|
|
175
|
+
// Properties/functions needed by PDFBug.
|
|
176
|
+
id: "Stepper",
|
|
177
|
+
name: "Stepper",
|
|
178
|
+
panel: null,
|
|
179
|
+
manager: null,
|
|
180
|
+
init() {
|
|
181
|
+
const self = this;
|
|
182
|
+
stepperControls = document.createElement("div");
|
|
183
|
+
stepperChooser = document.createElement("select");
|
|
184
|
+
stepperChooser.addEventListener("change", function (event) {
|
|
185
|
+
self.selectStepper(this.value);
|
|
186
|
+
});
|
|
187
|
+
stepperControls.append(stepperChooser);
|
|
188
|
+
stepperDiv = document.createElement("div");
|
|
189
|
+
this.panel.append(stepperControls, stepperDiv);
|
|
190
|
+
if (sessionStorage.getItem("pdfjsBreakPoints")) {
|
|
191
|
+
breakPoints = JSON.parse(sessionStorage.getItem("pdfjsBreakPoints"));
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
cleanup() {
|
|
195
|
+
stepperChooser.textContent = "";
|
|
196
|
+
stepperDiv.textContent = "";
|
|
197
|
+
steppers = [];
|
|
198
|
+
},
|
|
199
|
+
enabled: false,
|
|
200
|
+
active: false,
|
|
201
|
+
// Stepper specific functions.
|
|
202
|
+
create(pageIndex) {
|
|
203
|
+
const debug = document.createElement("div");
|
|
204
|
+
debug.id = "stepper" + pageIndex;
|
|
205
|
+
debug.hidden = true;
|
|
206
|
+
debug.className = "stepper";
|
|
207
|
+
stepperDiv.append(debug);
|
|
208
|
+
const b = document.createElement("option");
|
|
209
|
+
b.textContent = "Page " + (pageIndex + 1);
|
|
210
|
+
b.value = pageIndex;
|
|
211
|
+
stepperChooser.append(b);
|
|
212
|
+
const initBreakPoints = breakPoints[pageIndex] || [];
|
|
213
|
+
const stepper = new Stepper(debug, pageIndex, initBreakPoints);
|
|
214
|
+
steppers.push(stepper);
|
|
215
|
+
if (steppers.length === 1) {
|
|
216
|
+
this.selectStepper(pageIndex, false);
|
|
217
|
+
}
|
|
218
|
+
return stepper;
|
|
219
|
+
},
|
|
220
|
+
selectStepper(pageIndex, selectPanel) {
|
|
221
|
+
pageIndex |= 0;
|
|
222
|
+
if (selectPanel) {
|
|
223
|
+
this.manager.selectPanel(this);
|
|
224
|
+
}
|
|
225
|
+
for (const stepper of steppers) {
|
|
226
|
+
stepper.panel.hidden = stepper.pageIndex !== pageIndex;
|
|
227
|
+
}
|
|
228
|
+
for (const option of stepperChooser.options) {
|
|
229
|
+
option.selected = (option.value | 0) === pageIndex;
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
saveBreakPoints(pageIndex, bps) {
|
|
233
|
+
breakPoints[pageIndex] = bps;
|
|
234
|
+
sessionStorage.setItem("pdfjsBreakPoints", JSON.stringify(breakPoints));
|
|
235
|
+
},
|
|
236
|
+
};
|
|
237
|
+
})();
|
|
238
|
+
|
|
239
|
+
// The stepper for each page's operatorList.
|
|
240
|
+
class Stepper {
|
|
241
|
+
// Shorter way to create element and optionally set textContent.
|
|
242
|
+
#c(tag, textContent) {
|
|
243
|
+
const d = document.createElement(tag);
|
|
244
|
+
if (textContent) {
|
|
245
|
+
d.textContent = textContent;
|
|
246
|
+
}
|
|
247
|
+
return d;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
#simplifyArgs(args) {
|
|
251
|
+
if (typeof args === "string") {
|
|
252
|
+
const MAX_STRING_LENGTH = 75;
|
|
253
|
+
return args.length <= MAX_STRING_LENGTH
|
|
254
|
+
? args
|
|
255
|
+
: args.substring(0, MAX_STRING_LENGTH) + "...";
|
|
256
|
+
}
|
|
257
|
+
if (typeof args !== "object" || args === null) {
|
|
258
|
+
return args;
|
|
259
|
+
}
|
|
260
|
+
if ("length" in args) {
|
|
261
|
+
// array
|
|
262
|
+
const MAX_ITEMS = 10,
|
|
263
|
+
simpleArgs = [];
|
|
264
|
+
let i, ii;
|
|
265
|
+
for (i = 0, ii = Math.min(MAX_ITEMS, args.length); i < ii; i++) {
|
|
266
|
+
simpleArgs.push(this.#simplifyArgs(args[i]));
|
|
267
|
+
}
|
|
268
|
+
if (i < args.length) {
|
|
269
|
+
simpleArgs.push("...");
|
|
270
|
+
}
|
|
271
|
+
return simpleArgs;
|
|
272
|
+
}
|
|
273
|
+
const simpleObj = {};
|
|
274
|
+
for (const key in args) {
|
|
275
|
+
simpleObj[key] = this.#simplifyArgs(args[key]);
|
|
276
|
+
}
|
|
277
|
+
return simpleObj;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
constructor(panel, pageIndex, initialBreakPoints) {
|
|
281
|
+
this.panel = panel;
|
|
282
|
+
this.breakPoint = 0;
|
|
283
|
+
this.nextBreakPoint = null;
|
|
284
|
+
this.pageIndex = pageIndex;
|
|
285
|
+
this.breakPoints = initialBreakPoints;
|
|
286
|
+
this.currentIdx = -1;
|
|
287
|
+
this.operatorListIdx = 0;
|
|
288
|
+
this.indentLevel = 0;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
init(operatorList) {
|
|
292
|
+
const panel = this.panel;
|
|
293
|
+
const content = this.#c("div", "c=continue, s=step");
|
|
294
|
+
const table = this.#c("table");
|
|
295
|
+
content.append(table);
|
|
296
|
+
table.cellSpacing = 0;
|
|
297
|
+
const headerRow = this.#c("tr");
|
|
298
|
+
table.append(headerRow);
|
|
299
|
+
headerRow.append(
|
|
300
|
+
this.#c("th", "Break"),
|
|
301
|
+
this.#c("th", "Idx"),
|
|
302
|
+
this.#c("th", "fn"),
|
|
303
|
+
this.#c("th", "args")
|
|
304
|
+
);
|
|
305
|
+
panel.append(content);
|
|
306
|
+
this.table = table;
|
|
307
|
+
this.updateOperatorList(operatorList);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
updateOperatorList(operatorList) {
|
|
311
|
+
const self = this;
|
|
312
|
+
|
|
313
|
+
function cboxOnClick() {
|
|
314
|
+
const x = +this.dataset.idx;
|
|
315
|
+
if (this.checked) {
|
|
316
|
+
self.breakPoints.push(x);
|
|
317
|
+
} else {
|
|
318
|
+
self.breakPoints.splice(self.breakPoints.indexOf(x), 1);
|
|
319
|
+
}
|
|
320
|
+
StepperManager.saveBreakPoints(self.pageIndex, self.breakPoints);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
const MAX_OPERATORS_COUNT = 15000;
|
|
324
|
+
if (this.operatorListIdx > MAX_OPERATORS_COUNT) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
const chunk = document.createDocumentFragment();
|
|
329
|
+
const operatorsToDisplay = Math.min(
|
|
330
|
+
MAX_OPERATORS_COUNT,
|
|
331
|
+
operatorList.fnArray.length
|
|
332
|
+
);
|
|
333
|
+
for (let i = this.operatorListIdx; i < operatorsToDisplay; i++) {
|
|
334
|
+
const line = this.#c("tr");
|
|
335
|
+
line.className = "line";
|
|
336
|
+
line.dataset.idx = i;
|
|
337
|
+
chunk.append(line);
|
|
338
|
+
const checked = this.breakPoints.includes(i);
|
|
339
|
+
const args = operatorList.argsArray[i] || [];
|
|
340
|
+
|
|
341
|
+
const breakCell = this.#c("td");
|
|
342
|
+
const cbox = this.#c("input");
|
|
343
|
+
cbox.type = "checkbox";
|
|
344
|
+
cbox.className = "points";
|
|
345
|
+
cbox.checked = checked;
|
|
346
|
+
cbox.dataset.idx = i;
|
|
347
|
+
cbox.onclick = cboxOnClick;
|
|
348
|
+
|
|
349
|
+
breakCell.append(cbox);
|
|
350
|
+
line.append(breakCell, this.#c("td", i.toString()));
|
|
351
|
+
const fn = opMap[operatorList.fnArray[i]];
|
|
352
|
+
let decArgs = args;
|
|
353
|
+
if (fn === "showText") {
|
|
354
|
+
const glyphs = args[0];
|
|
355
|
+
const charCodeRow = this.#c("tr");
|
|
356
|
+
const fontCharRow = this.#c("tr");
|
|
357
|
+
const unicodeRow = this.#c("tr");
|
|
358
|
+
for (const glyph of glyphs) {
|
|
359
|
+
if (typeof glyph === "object" && glyph !== null) {
|
|
360
|
+
charCodeRow.append(this.#c("td", glyph.originalCharCode));
|
|
361
|
+
fontCharRow.append(this.#c("td", glyph.fontChar));
|
|
362
|
+
unicodeRow.append(this.#c("td", glyph.unicode));
|
|
363
|
+
} else {
|
|
364
|
+
// null or number
|
|
365
|
+
const advanceEl = this.#c("td", glyph);
|
|
366
|
+
advanceEl.classList.add("advance");
|
|
367
|
+
charCodeRow.append(advanceEl);
|
|
368
|
+
fontCharRow.append(this.#c("td"));
|
|
369
|
+
unicodeRow.append(this.#c("td"));
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
decArgs = this.#c("td");
|
|
373
|
+
const table = this.#c("table");
|
|
374
|
+
table.classList.add("showText");
|
|
375
|
+
decArgs.append(table);
|
|
376
|
+
table.append(charCodeRow, fontCharRow, unicodeRow);
|
|
377
|
+
} else if (fn === "restore" && this.indentLevel > 0) {
|
|
378
|
+
this.indentLevel--;
|
|
379
|
+
}
|
|
380
|
+
line.append(this.#c("td", " ".repeat(this.indentLevel * 2) + fn));
|
|
381
|
+
if (fn === "save") {
|
|
382
|
+
this.indentLevel++;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
if (decArgs instanceof HTMLElement) {
|
|
386
|
+
line.append(decArgs);
|
|
387
|
+
} else {
|
|
388
|
+
line.append(this.#c("td", JSON.stringify(this.#simplifyArgs(decArgs))));
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
if (operatorsToDisplay < operatorList.fnArray.length) {
|
|
392
|
+
const lastCell = this.#c("td", "...");
|
|
393
|
+
lastCell.colspan = 4;
|
|
394
|
+
chunk.append(lastCell);
|
|
395
|
+
}
|
|
396
|
+
this.operatorListIdx = operatorList.fnArray.length;
|
|
397
|
+
this.table.append(chunk);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
getNextBreakPoint() {
|
|
401
|
+
this.breakPoints.sort(function (a, b) {
|
|
402
|
+
return a - b;
|
|
403
|
+
});
|
|
404
|
+
for (const breakPoint of this.breakPoints) {
|
|
405
|
+
if (breakPoint > this.currentIdx) {
|
|
406
|
+
return breakPoint;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
return null;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
breakIt(idx, callback) {
|
|
413
|
+
StepperManager.selectStepper(this.pageIndex, true);
|
|
414
|
+
this.currentIdx = idx;
|
|
415
|
+
|
|
416
|
+
const listener = evt => {
|
|
417
|
+
switch (evt.keyCode) {
|
|
418
|
+
case 83: // step
|
|
419
|
+
document.removeEventListener("keydown", listener);
|
|
420
|
+
this.nextBreakPoint = this.currentIdx + 1;
|
|
421
|
+
this.goTo(-1);
|
|
422
|
+
callback();
|
|
423
|
+
break;
|
|
424
|
+
case 67: // continue
|
|
425
|
+
document.removeEventListener("keydown", listener);
|
|
426
|
+
this.nextBreakPoint = this.getNextBreakPoint();
|
|
427
|
+
this.goTo(-1);
|
|
428
|
+
callback();
|
|
429
|
+
break;
|
|
430
|
+
}
|
|
431
|
+
};
|
|
432
|
+
document.addEventListener("keydown", listener);
|
|
433
|
+
this.goTo(idx);
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
goTo(idx) {
|
|
437
|
+
const allRows = this.panel.getElementsByClassName("line");
|
|
438
|
+
for (const row of allRows) {
|
|
439
|
+
if ((row.dataset.idx | 0) === idx) {
|
|
440
|
+
row.style.backgroundColor = "rgb(251,250,207)";
|
|
441
|
+
row.scrollIntoView();
|
|
442
|
+
} else {
|
|
443
|
+
row.style.backgroundColor = null;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
const Stats = (function Stats() {
|
|
450
|
+
let stats = [];
|
|
451
|
+
function clear(node) {
|
|
452
|
+
node.textContent = ""; // Remove any `node` contents from the DOM.
|
|
453
|
+
}
|
|
454
|
+
function getStatIndex(pageNumber) {
|
|
455
|
+
for (const [i, stat] of stats.entries()) {
|
|
456
|
+
if (stat.pageNumber === pageNumber) {
|
|
457
|
+
return i;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
return false;
|
|
461
|
+
}
|
|
462
|
+
return {
|
|
463
|
+
// Properties/functions needed by PDFBug.
|
|
464
|
+
id: "Stats",
|
|
465
|
+
name: "Stats",
|
|
466
|
+
panel: null,
|
|
467
|
+
manager: null,
|
|
468
|
+
init() {},
|
|
469
|
+
enabled: false,
|
|
470
|
+
active: false,
|
|
471
|
+
// Stats specific functions.
|
|
472
|
+
add(pageNumber, stat) {
|
|
473
|
+
if (!stat) {
|
|
474
|
+
return;
|
|
475
|
+
}
|
|
476
|
+
const statsIndex = getStatIndex(pageNumber);
|
|
477
|
+
if (statsIndex !== false) {
|
|
478
|
+
stats[statsIndex].div.remove();
|
|
479
|
+
stats.splice(statsIndex, 1);
|
|
480
|
+
}
|
|
481
|
+
const wrapper = document.createElement("div");
|
|
482
|
+
wrapper.className = "stats";
|
|
483
|
+
const title = document.createElement("div");
|
|
484
|
+
title.className = "title";
|
|
485
|
+
title.textContent = "Page: " + pageNumber;
|
|
486
|
+
const statsDiv = document.createElement("div");
|
|
487
|
+
statsDiv.textContent = stat.toString();
|
|
488
|
+
wrapper.append(title, statsDiv);
|
|
489
|
+
stats.push({ pageNumber, div: wrapper });
|
|
490
|
+
stats.sort(function (a, b) {
|
|
491
|
+
return a.pageNumber - b.pageNumber;
|
|
492
|
+
});
|
|
493
|
+
clear(this.panel);
|
|
494
|
+
for (const entry of stats) {
|
|
495
|
+
this.panel.append(entry.div);
|
|
496
|
+
}
|
|
497
|
+
},
|
|
498
|
+
cleanup() {
|
|
499
|
+
stats = [];
|
|
500
|
+
clear(this.panel);
|
|
501
|
+
},
|
|
502
|
+
};
|
|
503
|
+
})();
|
|
504
|
+
|
|
505
|
+
// Manages all the debugging tools.
|
|
506
|
+
class PDFBug {
|
|
507
|
+
static #buttons = [];
|
|
508
|
+
|
|
509
|
+
static #activePanel = null;
|
|
510
|
+
|
|
511
|
+
static tools = [FontInspector, StepperManager, Stats];
|
|
512
|
+
|
|
513
|
+
static enable(ids) {
|
|
514
|
+
const all = ids.length === 1 && ids[0] === "all";
|
|
515
|
+
const tools = this.tools;
|
|
516
|
+
for (const tool of tools) {
|
|
517
|
+
if (all || ids.includes(tool.id)) {
|
|
518
|
+
tool.enabled = true;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
if (!all) {
|
|
522
|
+
// Sort the tools by the order they are enabled.
|
|
523
|
+
tools.sort(function (a, b) {
|
|
524
|
+
let indexA = ids.indexOf(a.id);
|
|
525
|
+
indexA = indexA < 0 ? tools.length : indexA;
|
|
526
|
+
let indexB = ids.indexOf(b.id);
|
|
527
|
+
indexB = indexB < 0 ? tools.length : indexB;
|
|
528
|
+
return indexA - indexB;
|
|
529
|
+
});
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
static init(container, ids) {
|
|
534
|
+
this.loadCSS();
|
|
535
|
+
this.enable(ids);
|
|
536
|
+
/*
|
|
537
|
+
* Basic Layout:
|
|
538
|
+
* PDFBug
|
|
539
|
+
* Controls
|
|
540
|
+
* Panels
|
|
541
|
+
* Panel
|
|
542
|
+
* Panel
|
|
543
|
+
* ...
|
|
544
|
+
*/
|
|
545
|
+
const ui = document.createElement("div");
|
|
546
|
+
ui.id = "PDFBug";
|
|
547
|
+
|
|
548
|
+
const controls = document.createElement("div");
|
|
549
|
+
controls.setAttribute("class", "controls");
|
|
550
|
+
ui.append(controls);
|
|
551
|
+
|
|
552
|
+
const panels = document.createElement("div");
|
|
553
|
+
panels.setAttribute("class", "panels");
|
|
554
|
+
ui.append(panels);
|
|
555
|
+
|
|
556
|
+
container.append(ui);
|
|
557
|
+
container.style.right = "var(--panel-width)";
|
|
558
|
+
|
|
559
|
+
// Initialize all the debugging tools.
|
|
560
|
+
for (const tool of this.tools) {
|
|
561
|
+
const panel = document.createElement("div");
|
|
562
|
+
const panelButton = document.createElement("button");
|
|
563
|
+
panelButton.textContent = tool.name;
|
|
564
|
+
panelButton.addEventListener("click", event => {
|
|
565
|
+
event.preventDefault();
|
|
566
|
+
this.selectPanel(tool);
|
|
567
|
+
});
|
|
568
|
+
controls.append(panelButton);
|
|
569
|
+
panels.append(panel);
|
|
570
|
+
tool.panel = panel;
|
|
571
|
+
tool.manager = this;
|
|
572
|
+
if (tool.enabled) {
|
|
573
|
+
tool.init();
|
|
574
|
+
} else {
|
|
575
|
+
panel.textContent =
|
|
576
|
+
`${tool.name} is disabled. To enable add "${tool.id}" to ` +
|
|
577
|
+
"the pdfBug parameter and refresh (separate multiple by commas).";
|
|
578
|
+
}
|
|
579
|
+
this.#buttons.push(panelButton);
|
|
580
|
+
}
|
|
581
|
+
this.selectPanel(0);
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
static loadCSS() {
|
|
585
|
+
const { url } = import.meta;
|
|
586
|
+
|
|
587
|
+
const link = document.createElement("link");
|
|
588
|
+
link.rel = "stylesheet";
|
|
589
|
+
link.href = url.replace(/\.mjs$/, ".css");
|
|
590
|
+
|
|
591
|
+
document.head.append(link);
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
static cleanup() {
|
|
595
|
+
for (const tool of this.tools) {
|
|
596
|
+
if (tool.enabled) {
|
|
597
|
+
tool.cleanup();
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
static selectPanel(index) {
|
|
603
|
+
if (typeof index !== "number") {
|
|
604
|
+
index = this.tools.indexOf(index);
|
|
605
|
+
}
|
|
606
|
+
if (index === this.#activePanel) {
|
|
607
|
+
return;
|
|
608
|
+
}
|
|
609
|
+
this.#activePanel = index;
|
|
610
|
+
for (const [j, tool] of this.tools.entries()) {
|
|
611
|
+
const isActive = j === index;
|
|
612
|
+
this.#buttons[j].classList.toggle("active", isActive);
|
|
613
|
+
tool.active = isActive;
|
|
614
|
+
tool.panel.hidden = !isActive;
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
globalThis.FontInspector = FontInspector;
|
|
620
|
+
globalThis.StepperManager = StepperManager;
|
|
621
|
+
globalThis.Stats = Stats;
|
|
622
|
+
|
|
623
|
+
export { PDFBug };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="12" height="13" viewBox="0 0 12 13" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M5.375 7.625V11.875C5.375 12.0408 5.44085 12.1997 5.55806 12.3169C5.67527 12.4342 5.83424 12.5 6 12.5C6.16576 12.5 6.32473 12.4342 6.44194 12.3169C6.55915 12.1997 6.625 12.0408 6.625 11.875V7.625L7.125 7.125H11.375C11.5408 7.125 11.6997 7.05915 11.8169 6.94194C11.9342 6.82473 12 6.66576 12 6.5C12 6.33424 11.9342 6.17527 11.8169 6.05806C11.6997 5.94085 11.5408 5.875 11.375 5.875H7.125L6.625 5.375V1.125C6.625 0.95924 6.55915 0.800269 6.44194 0.683058C6.32473 0.565848 6.16576 0.5 6 0.5C5.83424 0.5 5.67527 0.565848 5.55806 0.683058C5.44085 0.800269 5.375 0.95924 5.375 1.125V5.375L4.875 5.875H0.625C0.45924 5.875 0.300269 5.94085 0.183058 6.05806C0.065848 6.17527 0 6.33424 0 6.5C0 6.66576 0.065848 6.82473 0.183058 6.94194C0.300269 7.05915 0.45924 7.125 0.625 7.125H4.762L5.375 7.625Z" fill="black"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="12" height="13" viewBox="0 0 12 13" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M6 0.5C5.21207 0.5 4.43185 0.655195 3.7039 0.956723C2.97595 1.25825 2.31451 1.70021 1.75736 2.25736C1.20021 2.81451 0.758251 3.47595 0.456723 4.2039C0.155195 4.93185 0 5.71207 0 6.5C0 7.28793 0.155195 8.06815 0.456723 8.7961C0.758251 9.52405 1.20021 10.1855 1.75736 10.7426C2.31451 11.2998 2.97595 11.7417 3.7039 12.0433C4.43185 12.3448 5.21207 12.5 6 12.5C7.5913 12.5 9.11742 11.8679 10.2426 10.7426C11.3679 9.61742 12 8.0913 12 6.5C12 4.9087 11.3679 3.38258 10.2426 2.25736C9.11742 1.13214 7.5913 0.5 6 0.5ZM5.06 8.9L2.9464 6.7856C2.85273 6.69171 2.80018 6.56446 2.80033 6.43183C2.80048 6.29921 2.85331 6.17207 2.9472 6.0784C3.04109 5.98473 3.16834 5.93218 3.30097 5.93233C3.43359 5.93248 3.56073 5.98531 3.6544 6.0792L5.3112 7.7368L8.3464 4.7008C8.44109 4.6109 8.56715 4.56153 8.69771 4.56322C8.82827 4.56492 8.95301 4.61754 9.04534 4.70986C9.13766 4.80219 9.19028 4.92693 9.19198 5.05749C9.19367 5.18805 9.1443 5.31411 9.0544 5.4088L5.5624 8.9H5.06Z" fill="#FBFBFE"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
|
4
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" height="40" width="40">
|
|
5
|
+
<path d="M9 3.5a1.5 1.5 0 0 0-3-.001v7.95C6 12.83 7.12 14 8.5 14s2.5-1.17 2.5-2.55V5.5a.5.5 0 0 1 1 0v6.03C11.955 13.427 10.405 15 8.5 15S5.044 13.426 5 11.53V3.5a2.5 2.5 0 0 1 5 0v7.003a1.5 1.5 0 0 1-3-.003v-5a.5.5 0 0 1 1 0v5a.5.5 0 0 0 1 0Z"/>
|
|
6
|
+
</svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
|
4
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" height="40" width="40">
|
|
5
|
+
<path d="M8.156 12.5a.99.99 0 0 0 .707-.294l.523-2.574L10.5 8.499l1.058-1.04 2.65-.601a.996.996 0 0 0 0-1.414l-3.657-3.658a.996.996 0 0 0-1.414 0l-.523 2.576L7.5 5.499 6.442 6.535l-2.65.6a.996.996 0 0 0 0 1.413l3.657 3.658a.999.999 0 0 0 .707.295z"/>
|
|
6
|
+
<path d="M9.842.996c-.386 0-.77.146-1.06.44a.5.5 0 0 0-.136.251l-.492 2.43-1.008 1.03-.953.933-2.511.566a.5.5 0 0 0-.243.133 1.505 1.505 0 0 0-.002 2.123l1.477 1.477-2.768 2.767a.5.5 0 0 0 0 .707.5.5 0 0 0 .708 0l2.767-2.767 1.475 1.474a1.494 1.494 0 0 0 2.123-.002.5.5 0 0 0 .135-.254l.492-2.427 1.008-1.024.953-.937 2.511-.57a.5.5 0 0 0 .243-.132c.586-.58.583-1.543.002-2.125l-3.659-3.656A1.501 1.501 0 0 0 9.842.996Zm.05 1.025a.394.394 0 0 1 .305.12l3.658 3.657c.18.18.141.432.002.627l-2.41.545a.5.5 0 0 0-.24.131L10.15 8.142a.5.5 0 0 0-.007.006L9.029 9.283a.5.5 0 0 0-.133.25l-.48 2.36c-.082.053-.165.109-.26.109a.492.492 0 0 1-.353-.149L4.145 8.195c-.18-.18-.141-.432-.002-.627l2.41-.545a.5.5 0 0 0 .238-.13L7.85 5.857a.5.5 0 0 0 .007-.008l1.114-1.138a.5.5 0 0 0 .133-.25l.472-2.323a.619.619 0 0 1 .317-.117Z"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M12 2.75H12.5V2.25V1V0.5H12H10.358C9.91165 0.5 9.47731 0.625661 9.09989 0.860442L9.09886 0.861087L8 1.54837L6.89997 0.860979L6.89911 0.860443C6.5218 0.625734 6.08748 0.5 5.642 0.5H4H3.5V1V2.25V2.75H4H5.642C5.66478 2.75 5.6885 2.75641 5.71008 2.76968C5.71023 2.76977 5.71038 2.76986 5.71053 2.76995L6.817 3.461C6.81704 3.46103 6.81709 3.46105 6.81713 3.46108C6.81713 3.46108 6.81713 3.46108 6.81714 3.46109C6.8552 3.48494 6.876 3.52285 6.876 3.567V8V12.433C6.876 12.4771 6.85523 12.515 6.81722 12.5389C6.81715 12.5389 6.81707 12.539 6.817 12.539L5.70953 13.23C5.70941 13.2301 5.70929 13.2302 5.70917 13.2303C5.68723 13.2438 5.6644 13.25 5.641 13.25H4H3.5V13.75V15V15.5H4H5.642C6.08835 15.5 6.52269 15.3743 6.90011 15.1396L6.90086 15.1391L8 14.4526L9.10003 15.14L9.10089 15.1406C9.47831 15.3753 9.91265 15.501 10.359 15.501H12H12.5V15.001V13.751V13.251H12H10.358C10.3352 13.251 10.3115 13.2446 10.2899 13.2313C10.2897 13.2312 10.2896 13.2311 10.2895 13.231L9.183 12.54C9.18298 12.54 9.18295 12.54 9.18293 12.54C9.18291 12.5399 9.18288 12.5399 9.18286 12.5399C9.14615 12.5169 9.125 12.4797 9.125 12.434V8V3.567C9.125 3.52266 9.14603 3.48441 9.18364 3.4606C9.18377 3.46052 9.1839 3.46043 9.18404 3.46035L10.2895 2.76995C10.2896 2.76985 10.2898 2.76975 10.2899 2.76966C10.3119 2.75619 10.3346 2.75 10.358 2.75H12Z" fill="black" stroke="white"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M0.0189877 13.6645L0.612989 10.4635C0.687989 10.0545 0.884989 9.6805 1.18099 9.3825L9.98199 0.5805C10.756 -0.1925 12.015 -0.1945 12.792 0.5805L14.42 2.2085C15.194 2.9835 15.194 4.2435 14.42 5.0185L5.61599 13.8215C5.31999 14.1165 4.94599 14.3125 4.53799 14.3875L1.33599 14.9815C1.26599 14.9935 1.19799 15.0005 1.12999 15.0005C0.832989 15.0005 0.544988 14.8835 0.330988 14.6695C0.0679874 14.4055 -0.0490122 14.0305 0.0189877 13.6645Z" fill="white"/>
|
|
3
|
+
<path d="M0.0189877 13.6645L0.612989 10.4635C0.687989 10.0545 0.884989 9.6805 1.18099 9.3825L9.98199 0.5805C10.756 -0.1925 12.015 -0.1945 12.792 0.5805L14.42 2.2085C15.194 2.9835 15.194 4.2435 14.42 5.0185L5.61599 13.8215C5.31999 14.1165 4.94599 14.3125 4.53799 14.3875L1.33599 14.9815C1.26599 14.9935 1.19799 15.0005 1.12999 15.0005C0.832989 15.0005 0.544988 14.8835 0.330988 14.6695C0.0679874 14.4055 -0.0490122 14.0305 0.0189877 13.6645ZM12.472 5.1965L13.632 4.0365L13.631 3.1885L11.811 1.3675L10.963 1.3685L9.80299 2.5285L12.472 5.1965ZM4.31099 13.1585C4.47099 13.1285 4.61799 13.0515 4.73399 12.9345L11.587 6.0815L8.91899 3.4135L2.06599 10.2655C1.94899 10.3835 1.87199 10.5305 1.84099 10.6915L1.36699 13.2485L1.75199 13.6335L4.31099 13.1585Z" fill="black"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd"
|
|
3
|
+
d="M11 3H13.6C14 3 14.3 3.3 14.3 3.6C14.3 3.9 14 4.2 13.7 4.2H13.3V14C13.3 15.1 12.4 16 11.3 16H4.80005C3.70005 16 2.80005 15.1 2.80005 14V4.2H2.40005C2.00005 4.2 1.80005 4 1.80005 3.6C1.80005 3.2 2.00005 3 2.40005 3H5.00005V2C5.00005 0.9 5.90005 0 7.00005 0H9.00005C10.1 0 11 0.9 11 2V3ZM6.90005 1.2L6.30005 1.8V3H9.80005V1.8L9.20005 1.2H6.90005ZM11.4 14.7L12 14.1V4.2H4.00005V14.1L4.60005 14.7H11.4ZM7.00005 12.4C7.00005 12.7 6.70005 13 6.40005 13C6.10005 13 5.80005 12.7 5.80005 12.4V7.6C5.70005 7.3 6.00005 7 6.40005 7C6.80005 7 7.00005 7.3 7.00005 7.6V12.4ZM10.2001 12.4C10.2001 12.7 9.90006 13 9.60006 13C9.30006 13 9.00006 12.7 9.00006 12.4V7.6C9.00006 7.3 9.30006 7 9.60006 7C9.90006 7 10.2001 7.3 10.2001 7.6V12.4Z"
|
|
4
|
+
fill="black" />
|
|
5
|
+
</svg>
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M8 12a1 1 0 0 1-.707-.293l-5-5a1 1 0 0 1 1.414-1.414L8 9.586l4.293-4.293a1 1 0 0 1 1.414 1.414l-5 5A1 1 0 0 1 8 12z"></path></svg>
|
|
1
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M10.999 8.352L5.534 13.818C5.41551 13.9303 5.25786 13.9918 5.09466 13.9895C4.93146 13.9872 4.77561 13.9212 4.66033 13.8057C4.54505 13.6902 4.47945 13.5342 4.47752 13.3709C4.47559 13.2077 4.53748 13.0502 4.65 12.932L9.585 7.998L4.651 3.067C4.53862 2.94864 4.47691 2.79106 4.47903 2.62786C4.48114 2.46466 4.54692 2.30874 4.66233 2.19333C4.77774 2.07792 4.93366 2.01215 5.09686 2.01003C5.26006 2.00792 5.41763 2.06962 5.536 2.182L11 7.647L10.999 8.352Z" fill="black"/>
|
|
3
|
+
</svg>
|