Merge pull request #16961 from Snuffleupagus/debugger-rm-closure
Remove (some) closures from `web/debugger.js`
This commit is contained in:
commit
518590ac7d
@ -13,6 +13,10 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
:root {
|
||||
--panel-width: 300px;
|
||||
}
|
||||
|
||||
#PDFBug,
|
||||
#PDFBug :is(input, button, select) {
|
||||
font: message-box;
|
||||
@ -26,7 +30,7 @@
|
||||
bottom: 0;
|
||||
font-size: 10px;
|
||||
padding: 0;
|
||||
width: 300px;
|
||||
width: var(--panel-width);
|
||||
}
|
||||
#PDFBug .controls {
|
||||
background: rgba(238, 238, 238, 1);
|
||||
|
113
web/debugger.js
113
web/debugger.js
@ -225,9 +225,9 @@ const StepperManager = (function StepperManagerClosure() {
|
||||
})();
|
||||
|
||||
// The stepper for each page's operatorList.
|
||||
const Stepper = (function StepperClosure() {
|
||||
class Stepper {
|
||||
// Shorter way to create element and optionally set textContent.
|
||||
function c(tag, textContent) {
|
||||
#c(tag, textContent) {
|
||||
const d = document.createElement(tag);
|
||||
if (textContent) {
|
||||
d.textContent = textContent;
|
||||
@ -235,7 +235,7 @@ const Stepper = (function StepperClosure() {
|
||||
return d;
|
||||
}
|
||||
|
||||
function simplifyArgs(args) {
|
||||
#simplifyArgs(args) {
|
||||
if (typeof args === "string") {
|
||||
const MAX_STRING_LENGTH = 75;
|
||||
return args.length <= MAX_STRING_LENGTH
|
||||
@ -251,7 +251,7 @@ const Stepper = (function StepperClosure() {
|
||||
simpleArgs = [];
|
||||
let i, ii;
|
||||
for (i = 0, ii = Math.min(MAX_ITEMS, args.length); i < ii; i++) {
|
||||
simpleArgs.push(simplifyArgs(args[i]));
|
||||
simpleArgs.push(this.#simplifyArgs(args[i]));
|
||||
}
|
||||
if (i < args.length) {
|
||||
simpleArgs.push("...");
|
||||
@ -260,13 +260,11 @@ const Stepper = (function StepperClosure() {
|
||||
}
|
||||
const simpleObj = {};
|
||||
for (const key in args) {
|
||||
simpleObj[key] = simplifyArgs(args[key]);
|
||||
simpleObj[key] = this.#simplifyArgs(args[key]);
|
||||
}
|
||||
return simpleObj;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-shadow
|
||||
class Stepper {
|
||||
constructor(panel, pageIndex, initialBreakPoints) {
|
||||
this.panel = panel;
|
||||
this.breakPoint = 0;
|
||||
@ -280,17 +278,17 @@ const Stepper = (function StepperClosure() {
|
||||
|
||||
init(operatorList) {
|
||||
const panel = this.panel;
|
||||
const content = c("div", "c=continue, s=step");
|
||||
const table = c("table");
|
||||
const content = this.#c("div", "c=continue, s=step");
|
||||
const table = this.#c("table");
|
||||
content.append(table);
|
||||
table.cellSpacing = 0;
|
||||
const headerRow = c("tr");
|
||||
const headerRow = this.#c("tr");
|
||||
table.append(headerRow);
|
||||
headerRow.append(
|
||||
c("th", "Break"),
|
||||
c("th", "Idx"),
|
||||
c("th", "fn"),
|
||||
c("th", "args")
|
||||
this.#c("th", "Break"),
|
||||
this.#c("th", "Idx"),
|
||||
this.#c("th", "fn"),
|
||||
this.#c("th", "args")
|
||||
);
|
||||
panel.append(content);
|
||||
this.table = table;
|
||||
@ -321,15 +319,15 @@ const Stepper = (function StepperClosure() {
|
||||
operatorList.fnArray.length
|
||||
);
|
||||
for (let i = this.operatorListIdx; i < operatorsToDisplay; i++) {
|
||||
const line = c("tr");
|
||||
const line = this.#c("tr");
|
||||
line.className = "line";
|
||||
line.dataset.idx = i;
|
||||
chunk.append(line);
|
||||
const checked = this.breakPoints.includes(i);
|
||||
const args = operatorList.argsArray[i] || [];
|
||||
|
||||
const breakCell = c("td");
|
||||
const cbox = c("input");
|
||||
const breakCell = this.#c("td");
|
||||
const cbox = this.#c("input");
|
||||
cbox.type = "checkbox";
|
||||
cbox.className = "points";
|
||||
cbox.checked = checked;
|
||||
@ -337,37 +335,37 @@ const Stepper = (function StepperClosure() {
|
||||
cbox.onclick = cboxOnClick;
|
||||
|
||||
breakCell.append(cbox);
|
||||
line.append(breakCell, c("td", i.toString()));
|
||||
line.append(breakCell, this.#c("td", i.toString()));
|
||||
const fn = opMap[operatorList.fnArray[i]];
|
||||
let decArgs = args;
|
||||
if (fn === "showText") {
|
||||
const glyphs = args[0];
|
||||
const charCodeRow = c("tr");
|
||||
const fontCharRow = c("tr");
|
||||
const unicodeRow = c("tr");
|
||||
const charCodeRow = this.#c("tr");
|
||||
const fontCharRow = this.#c("tr");
|
||||
const unicodeRow = this.#c("tr");
|
||||
for (const glyph of glyphs) {
|
||||
if (typeof glyph === "object" && glyph !== null) {
|
||||
charCodeRow.append(c("td", glyph.originalCharCode));
|
||||
fontCharRow.append(c("td", glyph.fontChar));
|
||||
unicodeRow.append(c("td", glyph.unicode));
|
||||
charCodeRow.append(this.#c("td", glyph.originalCharCode));
|
||||
fontCharRow.append(this.#c("td", glyph.fontChar));
|
||||
unicodeRow.append(this.#c("td", glyph.unicode));
|
||||
} else {
|
||||
// null or number
|
||||
const advanceEl = c("td", glyph);
|
||||
const advanceEl = this.#c("td", glyph);
|
||||
advanceEl.classList.add("advance");
|
||||
charCodeRow.append(advanceEl);
|
||||
fontCharRow.append(c("td"));
|
||||
unicodeRow.append(c("td"));
|
||||
fontCharRow.append(this.#c("td"));
|
||||
unicodeRow.append(this.#c("td"));
|
||||
}
|
||||
}
|
||||
decArgs = c("td");
|
||||
const table = c("table");
|
||||
decArgs = this.#c("td");
|
||||
const table = this.#c("table");
|
||||
table.classList.add("showText");
|
||||
decArgs.append(table);
|
||||
table.append(charCodeRow, fontCharRow, unicodeRow);
|
||||
} else if (fn === "restore" && this.indentLevel > 0) {
|
||||
this.indentLevel--;
|
||||
}
|
||||
line.append(c("td", " ".repeat(this.indentLevel * 2) + fn));
|
||||
line.append(this.#c("td", " ".repeat(this.indentLevel * 2) + fn));
|
||||
if (fn === "save") {
|
||||
this.indentLevel++;
|
||||
}
|
||||
@ -375,11 +373,11 @@ const Stepper = (function StepperClosure() {
|
||||
if (decArgs instanceof HTMLElement) {
|
||||
line.append(decArgs);
|
||||
} else {
|
||||
line.append(c("td", JSON.stringify(simplifyArgs(decArgs))));
|
||||
line.append(this.#c("td", JSON.stringify(this.#simplifyArgs(decArgs))));
|
||||
}
|
||||
}
|
||||
if (operatorsToDisplay < operatorList.fnArray.length) {
|
||||
const lastCell = c("td", "...");
|
||||
const lastCell = this.#c("td", "...");
|
||||
lastCell.colspan = 4;
|
||||
chunk.append(lastCell);
|
||||
}
|
||||
@ -435,8 +433,6 @@ const Stepper = (function StepperClosure() {
|
||||
}
|
||||
}
|
||||
}
|
||||
return Stepper;
|
||||
})();
|
||||
|
||||
const Stats = (function Stats() {
|
||||
let stats = [];
|
||||
@ -495,14 +491,14 @@ const Stats = (function Stats() {
|
||||
})();
|
||||
|
||||
// Manages all the debugging tools.
|
||||
const PDFBug = (function PDFBugClosure() {
|
||||
const panelWidth = 300;
|
||||
const buttons = [];
|
||||
let activePanel = null;
|
||||
class PDFBug {
|
||||
static #buttons = [];
|
||||
|
||||
return {
|
||||
tools: [FontInspector, StepperManager, Stats],
|
||||
enable(ids) {
|
||||
static #activePanel = null;
|
||||
|
||||
static tools = [FontInspector, StepperManager, Stats];
|
||||
|
||||
static enable(ids) {
|
||||
const all = ids.length === 1 && ids[0] === "all";
|
||||
const tools = this.tools;
|
||||
for (const tool of tools) {
|
||||
@ -520,8 +516,9 @@ const PDFBug = (function PDFBugClosure() {
|
||||
return indexA - indexB;
|
||||
});
|
||||
}
|
||||
},
|
||||
init(container, ids) {
|
||||
}
|
||||
|
||||
static init(container, ids) {
|
||||
this.loadCSS();
|
||||
this.enable(ids);
|
||||
/*
|
||||
@ -545,7 +542,7 @@ const PDFBug = (function PDFBugClosure() {
|
||||
ui.append(panels);
|
||||
|
||||
container.append(ui);
|
||||
container.style.right = panelWidth + "px";
|
||||
container.style.right = "var(--panel-width)";
|
||||
|
||||
// Initialize all the debugging tools.
|
||||
for (const tool of this.tools) {
|
||||
@ -567,11 +564,12 @@ const PDFBug = (function PDFBugClosure() {
|
||||
`${tool.name} is disabled. To enable add "${tool.id}" to ` +
|
||||
"the pdfBug parameter and refresh (separate multiple by commas).";
|
||||
}
|
||||
buttons.push(panelButton);
|
||||
this.#buttons.push(panelButton);
|
||||
}
|
||||
this.selectPanel(0);
|
||||
},
|
||||
loadCSS() {
|
||||
}
|
||||
|
||||
static loadCSS() {
|
||||
const { url } = import.meta;
|
||||
|
||||
const link = document.createElement("link");
|
||||
@ -579,31 +577,32 @@ const PDFBug = (function PDFBugClosure() {
|
||||
link.href = url.replace(/.js$/, ".css");
|
||||
|
||||
document.head.append(link);
|
||||
},
|
||||
cleanup() {
|
||||
}
|
||||
|
||||
static cleanup() {
|
||||
for (const tool of this.tools) {
|
||||
if (tool.enabled) {
|
||||
tool.cleanup();
|
||||
}
|
||||
}
|
||||
},
|
||||
selectPanel(index) {
|
||||
}
|
||||
|
||||
static selectPanel(index) {
|
||||
if (typeof index !== "number") {
|
||||
index = this.tools.indexOf(index);
|
||||
}
|
||||
if (index === activePanel) {
|
||||
if (index === this.#activePanel) {
|
||||
return;
|
||||
}
|
||||
activePanel = index;
|
||||
this.#activePanel = index;
|
||||
for (const [j, tool] of this.tools.entries()) {
|
||||
const isActive = j === index;
|
||||
buttons[j].classList.toggle("active", isActive);
|
||||
this.#buttons[j].classList.toggle("active", isActive);
|
||||
tool.active = isActive;
|
||||
tool.panel.hidden = !isActive;
|
||||
}
|
||||
},
|
||||
};
|
||||
})();
|
||||
}
|
||||
}
|
||||
|
||||
globalThis.FontInspector = FontInspector;
|
||||
globalThis.StepperManager = StepperManager;
|
||||
|
Loading…
x
Reference in New Issue
Block a user