: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
supportsIntegratedFind: {
supportsMouseWheelZoomCtrlKey: {
supportsMouseWheelZoomMetaKey: {
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
enableHighlightFloatingButton: {
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
value: "noopener noreferrer nofollow",
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
value: "yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F",
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
kind: OptionKind.API + OptionKind.PREFERENCE
kind: OptionKind.API + OptionKind.PREFERENCE
kind: OptionKind.API + OptionKind.PREFERENCE
kind: OptionKind.API + OptionKind.PREFERENCE
kind: OptionKind.API + OptionKind.PREFERENCE
isOffscreenCanvasSupported: {
value: "../web/standard_fonts/",
value: "../build/pdf.worker.js",
defaultOptions.defaultUrl = {
value: "compressed.tracemonkey-pldi-09.pdf",
defaultOptions.sandboxBundleSrc = {
value: "../build/pdf.sandbox.js",
defaultOptions.viewerCssTheme = {
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
defaultOptions.disablePreferences = {
defaultOptions.locale = {
value: navigator.language || "en-US",
const userOptions = Object.create(null);
for (const name in compatibilityParams) {
userOptions[name] = compatibilityParams[name];
throw new Error("Cannot initialize AppOptions.");
return userOptions[name] ?? defaultOptions[name]?.value ?? undefined;
static getAll(kind = null, defaultOnly = false) {
const options = Object.create(null);
for (const name in defaultOptions) {
const defaultOption = defaultOptions[name];
if (kind && !(kind & defaultOption.kind)) {
options[name] = defaultOnly ? defaultOption.value : userOptions[name] ?? defaultOption.value;
static set(name, value) {
userOptions[name] = value;
static setAll(options, init = false) {
if (this.get("disablePreferences")) {
for (const name in userOptions) {
if (compatibilityParams[name] !== undefined) {
console.warn("setAll: The Preferences may override manually set AppOptions; " + 'please use the "disablePreferences"-option in order to prevent that.');
for (const name in options) {
userOptions[name] = options[name];
delete userOptions[name];
const val = compatibilityParams[name];
// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.json.parse.js
var esnext_json_parse = __webpack_require__(8335);
;// CONCATENATED MODULE: ./web/pdf_link_service.js
const DEFAULT_LINK_REL = "noopener noreferrer nofollow";
externalLinkEnabled = true;
externalLinkTarget = null,
ignoreDestinationZoom = false
this.eventBus = eventBus;
this.externalLinkTarget = externalLinkTarget;
this.externalLinkRel = externalLinkRel;
this._ignoreDestinationZoom = ignoreDestinationZoom;
setDocument(pdfDocument, baseUrl = null) {
this.pdfDocument = pdfDocument;
this.pdfViewer = pdfViewer;
this.pdfHistory = pdfHistory;
return this.pdfDocument ? this.pdfDocument.numPages : 0;
return this.pdfDocument ? this.pdfViewer.currentPageNumber : 1;
this.pdfViewer.currentPageNumber = value;
return this.pdfDocument ? this.pdfViewer.pagesRotation : 0;
this.pdfViewer.pagesRotation = value;
get isInPresentationMode() {
return this.pdfDocument ? this.pdfViewer.isInPresentationMode : false;
async goToDestination(dest) {
let namedDest, explicitDest, pageNumber;
if (typeof dest === "string") {
explicitDest = await this.pdfDocument.getDestination(dest);
explicitDest = await dest;
if (!Array.isArray(explicitDest)) {
console.error(`goToDestination: "${explicitDest}" is not a valid destination array, for dest="${dest}".`);
const [destRef] = explicitDest;
if (destRef && typeof destRef === "object") {
pageNumber = this.pdfDocument.cachedPageNumber(destRef);
pageNumber = (await this.pdfDocument.getPageIndex(destRef)) + 1;
console.error(`goToDestination: "${destRef}" is not a valid page reference, for dest="${dest}".`);
} else if (Number.isInteger(destRef)) {
pageNumber = destRef + 1;
if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {
console.error(`goToDestination: "${pageNumber}" is not a valid page number, for dest="${dest}".`);
this.pdfHistory.pushCurrentPosition();
this.pdfViewer.scrollPageIntoView({
ignoreDestinationZoom: this._ignoreDestinationZoom
const pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0;
if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) {
console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`);
this.pdfHistory.pushCurrentPosition();
this.pdfHistory.pushPage(pageNumber);
this.pdfViewer.scrollPageIntoView({
addLinkAttributes(link, url, newWindow = false) {
if (!url || typeof url !== "string") {
throw new Error('A valid "url" parameter must provided.');
const target = newWindow ? LinkTarget.BLANK : this.externalLinkTarget,
rel = this.externalLinkRel;
if (this.externalLinkEnabled) {
link.href = link.title = url;
link.title = `Disabled: ${url}`;
link.onclick = () => false;
link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL;
getDestinationHash(dest) {
if (typeof dest === "string") {
return this.getAnchorUrl("#" + escape(dest));
} else if (Array.isArray(dest)) {
const str = JSON.stringify(dest);
return this.getAnchorUrl("#" + escape(str));
return this.getAnchorUrl("");
return this.baseUrl ? this.baseUrl + anchor : anchor;
if (hash.includes("=")) {
const params = parseQueryString(hash);
if (params.has("search")) {
const query = params.get("search").replaceAll('"', ""),
phrase = params.get("phrase") === "true";
this.eventBus.dispatch("findfromurlhash", {
query: phrase ? query : query.match(/\S+/g)
if (params.has("page")) {
pageNumber = params.get("page") | 0 || 1;
if (params.has("zoom")) {
const zoomArgs = params.get("zoom").split(",");
const zoomArg = zoomArgs[0];
const zoomArgNumber = parseFloat(zoomArg);
if (!zoomArg.includes("Fit")) {
}, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg];
} else if (zoomArg === "Fit" || zoomArg === "FitB") {