Modify a number of the viewer preferences, whose current default value is 0
, such that they behave as expected with the view history
The intention with preferences such as `sidebarViewOnLoad`/`scrollModeOnLoad`/`spreadModeOnLoad` were always that they should be able to *unconditionally* override their view history counterparts. Due to the way that these preferences were initially implemented[1], trying to e.g. force the sidebar to remain hidden on load cannot be guaranteed[2]. The reason for this is the use of "enumeration values" containing zero, which in hindsight was an unfortunate choice on my part. At this point it's also not as simple as just re-numbering the affected structures, since that would wreak havoc on existing (modified) preferences. The only reasonable solution that I was able to come up with was to change the *default* values of the preferences themselves, but not their actual values or the meaning thereof. As part of the refactoring, the `disablePageMode` preference was combined with the *adjusted* `sidebarViewOnLoad` one, to hopefully reduce confusion by not tracking related state separately. Additionally, the `showPreviousViewOnLoad` and `disableOpenActionDestination` preferences were combined into a *new* `viewOnLoad` enumeration preference, to further avoid tracking related state separately.
This commit is contained in:
parent
dd4620530d
commit
6806248030
@ -43,6 +43,19 @@ body {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<template id="viewOnLoad-template">
|
||||||
|
<div class="settings-row">
|
||||||
|
<label>
|
||||||
|
<span></span>
|
||||||
|
<select>
|
||||||
|
<option value="-1">Default</option>
|
||||||
|
<option value="0">Show previous position</option>
|
||||||
|
<option value="1">Show initial position</option>
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
<template id="defaultZoomValue-template">
|
<template id="defaultZoomValue-template">
|
||||||
<div class="settings-row">
|
<div class="settings-row">
|
||||||
<label>
|
<label>
|
||||||
@ -71,6 +84,7 @@ body {
|
|||||||
<label>
|
<label>
|
||||||
<span></span>
|
<span></span>
|
||||||
<select>
|
<select>
|
||||||
|
<option value="-1">Default</option>
|
||||||
<option value="0">Do not show sidebar</option>
|
<option value="0">Do not show sidebar</option>
|
||||||
<option value="1">Show thumbnails in sidebar</option>
|
<option value="1">Show thumbnails in sidebar</option>
|
||||||
<option value="2">Show document outline in sidebar</option>
|
<option value="2">Show document outline in sidebar</option>
|
||||||
@ -125,6 +139,7 @@ body {
|
|||||||
<label>
|
<label>
|
||||||
<span></span>
|
<span></span>
|
||||||
<select>
|
<select>
|
||||||
|
<option value="-1">Default</option>
|
||||||
<option value="0">Vertical scrolling</option>
|
<option value="0">Vertical scrolling</option>
|
||||||
<option value="1">Horizontal scrolling</option>
|
<option value="1">Horizontal scrolling</option>
|
||||||
<option value="2">Wrapped scrolling</option>
|
<option value="2">Wrapped scrolling</option>
|
||||||
@ -138,6 +153,7 @@ body {
|
|||||||
<label>
|
<label>
|
||||||
<span></span>
|
<span></span>
|
||||||
<select>
|
<select>
|
||||||
|
<option value="-1">Default</option>
|
||||||
<option value="0">No spreads</option>
|
<option value="0">No spreads</option>
|
||||||
<option value="1">Odd spreads</option>
|
<option value="1">Odd spreads</option>
|
||||||
<option value="2">Even spreads</option>
|
<option value="2">Even spreads</option>
|
||||||
|
@ -2,11 +2,20 @@
|
|||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"showPreviousViewOnLoad": {
|
"showPreviousViewOnLoad": {
|
||||||
"title": "Show previous position of PDF upon load",
|
"description": "DEPRECATED. Set viewOnLoad to 1 to disable showing the last page/position on load.",
|
||||||
"description": "Whether to view PDF documents in the last page and position upon opening the viewer.",
|
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": true
|
"default": true
|
||||||
},
|
},
|
||||||
|
"viewOnLoad": {
|
||||||
|
"title": "View position on load",
|
||||||
|
"description": "The position in the document upon load.\n -1 = Default (uses OpenAction if available, otherwise equal to `viewOnLoad = 0`).\n 0 = The last viewed page/position.\n 1 = The initial page/position.",
|
||||||
|
"enum": [
|
||||||
|
-1,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"default": 0
|
||||||
|
},
|
||||||
"defaultZoomValue": {
|
"defaultZoomValue": {
|
||||||
"title": "Default zoom level",
|
"title": "Default zoom level",
|
||||||
"description": "Default zoom level of the viewer. Accepted values: 'auto', 'page-actual', 'page-width', 'page-height', 'page-fit', or a zoom level in percents.",
|
"description": "Default zoom level of the viewer. Accepted values: 'auto', 'page-actual', 'page-width', 'page-height', 'page-fit', or a zoom level in percents.",
|
||||||
@ -16,15 +25,16 @@
|
|||||||
},
|
},
|
||||||
"sidebarViewOnLoad": {
|
"sidebarViewOnLoad": {
|
||||||
"title": "Sidebar state on load",
|
"title": "Sidebar state on load",
|
||||||
"description": "Controls the state of the sidebar upon load.\n 0 = do not show sidebar.\n 1 = show thumbnails in sidebar.\n 2 = show document outline in sidebar.\n 3 = Show attachments in sidebar.",
|
"description": "Controls the state of the sidebar upon load.\n -1 = Default (uses PageMode if available, otherwise the last position if available/enabled).\n 0 = Do not show sidebar.\n 1 = Show thumbnails in sidebar.\n 2 = Show document outline in sidebar.\n 3 = Show attachments in sidebar.",
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"enum": [
|
"enum": [
|
||||||
|
-1,
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
2,
|
2,
|
||||||
3
|
3
|
||||||
],
|
],
|
||||||
"default": 0
|
"default": -1
|
||||||
},
|
},
|
||||||
"enableHandToolOnLoad": {
|
"enableHandToolOnLoad": {
|
||||||
"description": "DEPRECATED. Set cursorToolOnLoad to 1 to enable the hand tool by default.",
|
"description": "DEPRECATED. Set cursorToolOnLoad to 1 to enable the hand tool by default.",
|
||||||
@ -117,15 +127,12 @@
|
|||||||
],
|
],
|
||||||
"default": 0
|
"default": 0
|
||||||
},
|
},
|
||||||
"disableOpenActionDestination": {
|
|
||||||
"type": "boolean",
|
|
||||||
"default": true
|
|
||||||
},
|
|
||||||
"disablePageLabels": {
|
"disablePageLabels": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false
|
"default": false
|
||||||
},
|
},
|
||||||
"disablePageMode": {
|
"disablePageMode": {
|
||||||
|
"description": "DEPRECATED.",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false
|
"default": false
|
||||||
},
|
},
|
||||||
@ -159,25 +166,27 @@
|
|||||||
},
|
},
|
||||||
"scrollModeOnLoad": {
|
"scrollModeOnLoad": {
|
||||||
"title": "Scroll mode on load",
|
"title": "Scroll mode on load",
|
||||||
"description": "Controls how the viewer scrolls upon load.\n 0 = Vertical scrolling.\n 1 = Horizontal scrolling.\n 2 = Wrapped scrolling.",
|
"description": "Controls how the viewer scrolls upon load.\n -1 = Default (uses the last position if available/enabled).\n 0 = Vertical scrolling.\n 1 = Horizontal scrolling.\n 2 = Wrapped scrolling.",
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"enum": [
|
"enum": [
|
||||||
|
-1,
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
2
|
2
|
||||||
],
|
],
|
||||||
"default": 0
|
"default": -1
|
||||||
},
|
},
|
||||||
"spreadModeOnLoad": {
|
"spreadModeOnLoad": {
|
||||||
"title": "Spread mode on load",
|
"title": "Spread mode on load",
|
||||||
"description": "Whether the viewer should join pages into spreads upon load.\n 0 = No spreads.\n 1 = Odd spreads.\n 2 = Even spreads.",
|
"description": "Whether the viewer should join pages into spreads upon load.\n -1 = Default (uses the last position if available/enabled).\n 0 = No spreads.\n 1 = Odd spreads.\n 2 = Even spreads.",
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"enum": [
|
"enum": [
|
||||||
|
-1,
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
2
|
2
|
||||||
],
|
],
|
||||||
"default": 0
|
"default": -1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
71
web/app.js
71
web/app.js
@ -16,9 +16,10 @@
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
animationStarted, DEFAULT_SCALE_VALUE, getGlobalEventBus,
|
animationStarted, DEFAULT_SCALE_VALUE, getGlobalEventBus,
|
||||||
getPDFFileNameFromURL, isValidRotation, MAX_SCALE, MIN_SCALE,
|
getPDFFileNameFromURL, isValidRotation, isValidScrollMode, isValidSpreadMode,
|
||||||
noContextMenuHandler, normalizeWheelEventDelta, parseQueryString,
|
MAX_SCALE, MIN_SCALE, noContextMenuHandler, normalizeWheelEventDelta,
|
||||||
PresentationModeState, ProgressBar, RendererType, TextLayerMode
|
parseQueryString, PresentationModeState, ProgressBar, RendererType,
|
||||||
|
ScrollMode, SpreadMode, TextLayerMode
|
||||||
} from './ui_utils';
|
} from './ui_utils';
|
||||||
import {
|
import {
|
||||||
build, createObjectURL, getDocument, getFilenameFromUrl, GlobalWorkerOptions,
|
build, createObjectURL, getDocument, getFilenameFromUrl, GlobalWorkerOptions,
|
||||||
@ -52,6 +53,12 @@ const DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; // ms
|
|||||||
const FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms
|
const FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms
|
||||||
const WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; // ms
|
const WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; // ms
|
||||||
|
|
||||||
|
const ViewOnLoad = {
|
||||||
|
UNKNOWN: -1,
|
||||||
|
PREVIOUS: 0, // Default value.
|
||||||
|
INITIAL: 1,
|
||||||
|
};
|
||||||
|
|
||||||
const DefaultExternalServices = {
|
const DefaultExternalServices = {
|
||||||
updateFindControlState(data) {},
|
updateFindControlState(data) {},
|
||||||
updateFindMatchesCount(data) {},
|
updateFindMatchesCount(data) {},
|
||||||
@ -905,7 +912,7 @@ let PDFViewerApplication = {
|
|||||||
// i.e. not when it is embedded in a web page.
|
// i.e. not when it is embedded in a web page.
|
||||||
this.pdfHistory.initialize({
|
this.pdfHistory.initialize({
|
||||||
fingerprint: pdfDocument.fingerprint,
|
fingerprint: pdfDocument.fingerprint,
|
||||||
resetHistory: !AppOptions.get('showPreviousViewOnLoad'),
|
resetHistory: AppOptions.get('viewOnLoad') === ViewOnLoad.INITIAL,
|
||||||
updateUrl: AppOptions.get('historyUpdateUrl'),
|
updateUrl: AppOptions.get('historyUpdateUrl'),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -916,23 +923,25 @@ let PDFViewerApplication = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let storePromise = store.getMultiple({
|
const storePromise = store.getMultiple({
|
||||||
page: null,
|
page: null,
|
||||||
zoom: DEFAULT_SCALE_VALUE,
|
zoom: DEFAULT_SCALE_VALUE,
|
||||||
scrollLeft: '0',
|
scrollLeft: '0',
|
||||||
scrollTop: '0',
|
scrollTop: '0',
|
||||||
rotation: null,
|
rotation: null,
|
||||||
sidebarView: SidebarView.NONE,
|
sidebarView: SidebarView.UNKNOWN,
|
||||||
scrollMode: null,
|
scrollMode: ScrollMode.UNKNOWN,
|
||||||
spreadMode: null,
|
spreadMode: SpreadMode.UNKNOWN,
|
||||||
}).catch(() => { /* Unable to read from storage; ignoring errors. */ });
|
}).catch(() => { /* Unable to read from storage; ignoring errors. */ });
|
||||||
|
|
||||||
Promise.all([
|
Promise.all([
|
||||||
storePromise, pageModePromise, openActionDestPromise,
|
storePromise, pageModePromise, openActionDestPromise,
|
||||||
]).then(async ([values = {}, pageMode, openActionDest]) => {
|
]).then(async ([values = {}, pageMode, openActionDest]) => {
|
||||||
|
const viewOnLoad = AppOptions.get('viewOnLoad');
|
||||||
|
|
||||||
|
// Always let the browser history/document hash take precedence.
|
||||||
if (openActionDest && !this.initialBookmark &&
|
if (openActionDest && !this.initialBookmark &&
|
||||||
!AppOptions.get('disableOpenActionDestination')) {
|
viewOnLoad === ViewOnLoad.UNKNOWN) {
|
||||||
// Always let the browser history/document hash take precedence.
|
|
||||||
this.initialBookmark = JSON.stringify(openActionDest);
|
this.initialBookmark = JSON.stringify(openActionDest);
|
||||||
// TODO: Re-factor the `PDFHistory` initialization to remove this hack
|
// TODO: Re-factor the `PDFHistory` initialization to remove this hack
|
||||||
// that's currently necessary to prevent weird initial history state.
|
// that's currently necessary to prevent weird initial history state.
|
||||||
@ -940,6 +949,7 @@ let PDFViewerApplication = {
|
|||||||
pageNumber: null, });
|
pageNumber: null, });
|
||||||
}
|
}
|
||||||
const initialBookmark = this.initialBookmark;
|
const initialBookmark = this.initialBookmark;
|
||||||
|
|
||||||
// Initialize the default values, from user preferences.
|
// Initialize the default values, from user preferences.
|
||||||
const zoom = AppOptions.get('defaultZoomValue');
|
const zoom = AppOptions.get('defaultZoomValue');
|
||||||
let hash = zoom ? `zoom=${zoom}` : null;
|
let hash = zoom ? `zoom=${zoom}` : null;
|
||||||
@ -949,18 +959,25 @@ let PDFViewerApplication = {
|
|||||||
let scrollMode = AppOptions.get('scrollModeOnLoad');
|
let scrollMode = AppOptions.get('scrollModeOnLoad');
|
||||||
let spreadMode = AppOptions.get('spreadModeOnLoad');
|
let spreadMode = AppOptions.get('spreadModeOnLoad');
|
||||||
|
|
||||||
if (values.page && AppOptions.get('showPreviousViewOnLoad')) {
|
if (values.page && viewOnLoad !== ViewOnLoad.INITIAL) {
|
||||||
hash = 'page=' + values.page + '&zoom=' + (zoom || values.zoom) +
|
hash = `page=${values.page}&zoom=${zoom || values.zoom},` +
|
||||||
',' + values.scrollLeft + ',' + values.scrollTop;
|
`${values.scrollLeft},${values.scrollTop}`;
|
||||||
|
|
||||||
rotation = parseInt(values.rotation, 10);
|
rotation = parseInt(values.rotation, 10);
|
||||||
sidebarView = sidebarView || (values.sidebarView | 0);
|
// Always let user preferences take precedence over the view history.
|
||||||
scrollMode = scrollMode || (values.scrollMode | 0);
|
if (sidebarView === SidebarView.UNKNOWN) {
|
||||||
spreadMode = spreadMode || (values.spreadMode | 0);
|
sidebarView = (values.sidebarView | 0);
|
||||||
|
}
|
||||||
|
if (scrollMode === ScrollMode.UNKNOWN) {
|
||||||
|
scrollMode = (values.scrollMode | 0);
|
||||||
|
}
|
||||||
|
if (spreadMode === SpreadMode.UNKNOWN) {
|
||||||
|
spreadMode = (values.spreadMode | 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (pageMode && !AppOptions.get('disablePageMode')) {
|
// Always let the user preference/view history take precedence.
|
||||||
// Always let the user preference/history take precedence.
|
if (pageMode && sidebarView === SidebarView.UNKNOWN) {
|
||||||
sidebarView = sidebarView || apiPageModeToSidebarView(pageMode);
|
sidebarView = apiPageModeToSidebarView(pageMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setInitialView(hash, {
|
this.setInitialView(hash, {
|
||||||
@ -1149,28 +1166,24 @@ let PDFViewerApplication = {
|
|||||||
|
|
||||||
setInitialView(storedHash, { rotation, sidebarView,
|
setInitialView(storedHash, { rotation, sidebarView,
|
||||||
scrollMode, spreadMode, } = {}) {
|
scrollMode, spreadMode, } = {}) {
|
||||||
let setRotation = (angle) => {
|
const setRotation = (angle) => {
|
||||||
if (isValidRotation(angle)) {
|
if (isValidRotation(angle)) {
|
||||||
this.pdfViewer.pagesRotation = angle;
|
this.pdfViewer.pagesRotation = angle;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let setViewerModes = (scroll, spread) => {
|
const setViewerModes = (scroll, spread) => {
|
||||||
if (Number.isInteger(scroll)) {
|
if (isValidScrollMode(scroll)) {
|
||||||
this.pdfViewer.scrollMode = scroll;
|
this.pdfViewer.scrollMode = scroll;
|
||||||
}
|
}
|
||||||
if (Number.isInteger(spread)) {
|
if (isValidSpreadMode(spread)) {
|
||||||
this.pdfViewer.spreadMode = spread;
|
this.pdfViewer.spreadMode = spread;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Putting these before isInitialViewSet = true prevents these values from
|
|
||||||
// being stored in the document history (and overriding any future changes
|
|
||||||
// made to the corresponding global preferences), just this once.
|
|
||||||
setViewerModes(scrollMode, spreadMode);
|
|
||||||
|
|
||||||
this.isInitialViewSet = true;
|
this.isInitialViewSet = true;
|
||||||
this.pdfSidebar.setInitialView(sidebarView);
|
this.pdfSidebar.setInitialView(sidebarView);
|
||||||
|
|
||||||
|
setViewerModes(scrollMode, spreadMode);
|
||||||
|
|
||||||
if (this.initialBookmark) {
|
if (this.initialBookmark) {
|
||||||
setRotation(this.initialRotation);
|
setRotation(this.initialRotation);
|
||||||
delete this.initialRotation;
|
delete this.initialRotation;
|
||||||
|
@ -48,21 +48,11 @@ const defaultOptions = {
|
|||||||
value: false,
|
value: false,
|
||||||
kind: OptionKind.VIEWER,
|
kind: OptionKind.VIEWER,
|
||||||
},
|
},
|
||||||
disableOpenActionDestination: {
|
|
||||||
/** @type {boolean} */
|
|
||||||
value: true,
|
|
||||||
kind: OptionKind.VIEWER,
|
|
||||||
},
|
|
||||||
disablePageLabels: {
|
disablePageLabels: {
|
||||||
/** @type {boolean} */
|
/** @type {boolean} */
|
||||||
value: false,
|
value: false,
|
||||||
kind: OptionKind.VIEWER,
|
kind: OptionKind.VIEWER,
|
||||||
},
|
},
|
||||||
disablePageMode: {
|
|
||||||
/** @type {boolean} */
|
|
||||||
value: false,
|
|
||||||
kind: OptionKind.VIEWER,
|
|
||||||
},
|
|
||||||
/**
|
/**
|
||||||
* The `disablePreferences` is, conditionally, defined below.
|
* The `disablePreferences` is, conditionally, defined below.
|
||||||
*/
|
*/
|
||||||
@ -124,24 +114,19 @@ const defaultOptions = {
|
|||||||
value: false,
|
value: false,
|
||||||
kind: OptionKind.VIEWER,
|
kind: OptionKind.VIEWER,
|
||||||
},
|
},
|
||||||
showPreviousViewOnLoad: {
|
|
||||||
/** @type {boolean} */
|
|
||||||
value: true,
|
|
||||||
kind: OptionKind.VIEWER,
|
|
||||||
},
|
|
||||||
sidebarViewOnLoad: {
|
sidebarViewOnLoad: {
|
||||||
/** @type {number} */
|
/** @type {number} */
|
||||||
value: 0,
|
value: -1,
|
||||||
kind: OptionKind.VIEWER,
|
kind: OptionKind.VIEWER,
|
||||||
},
|
},
|
||||||
scrollModeOnLoad: {
|
scrollModeOnLoad: {
|
||||||
/** @type {number} */
|
/** @type {number} */
|
||||||
value: 0,
|
value: -1,
|
||||||
kind: OptionKind.VIEWER,
|
kind: OptionKind.VIEWER,
|
||||||
},
|
},
|
||||||
spreadModeOnLoad: {
|
spreadModeOnLoad: {
|
||||||
/** @type {number} */
|
/** @type {number} */
|
||||||
value: 0,
|
value: -1,
|
||||||
kind: OptionKind.VIEWER,
|
kind: OptionKind.VIEWER,
|
||||||
},
|
},
|
||||||
textLayerMode: {
|
textLayerMode: {
|
||||||
@ -154,6 +139,11 @@ const defaultOptions = {
|
|||||||
value: false,
|
value: false,
|
||||||
kind: OptionKind.VIEWER,
|
kind: OptionKind.VIEWER,
|
||||||
},
|
},
|
||||||
|
viewOnLoad: {
|
||||||
|
/** @type {boolean} */
|
||||||
|
value: 0,
|
||||||
|
kind: OptionKind.VIEWER,
|
||||||
|
},
|
||||||
|
|
||||||
cMapPacked: {
|
cMapPacked: {
|
||||||
/** @type {boolean} */
|
/** @type {boolean} */
|
||||||
|
@ -15,10 +15,11 @@
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
CSS_UNITS, DEFAULT_SCALE, DEFAULT_SCALE_VALUE, getGlobalEventBus,
|
CSS_UNITS, DEFAULT_SCALE, DEFAULT_SCALE_VALUE, getGlobalEventBus,
|
||||||
getVisibleElements, isPortraitOrientation, isValidRotation, MAX_AUTO_SCALE,
|
getVisibleElements, isPortraitOrientation, isValidRotation, isValidScrollMode,
|
||||||
moveToEndOfArray, NullL10n, PresentationModeState, RendererType,
|
isValidSpreadMode, MAX_AUTO_SCALE, moveToEndOfArray, NullL10n,
|
||||||
SCROLLBAR_PADDING, scrollIntoView, TextLayerMode, UNKNOWN_SCALE,
|
PresentationModeState, RendererType, SCROLLBAR_PADDING, scrollIntoView,
|
||||||
VERTICAL_PADDING, watchScroll
|
ScrollMode, SpreadMode, TextLayerMode, UNKNOWN_SCALE, VERTICAL_PADDING,
|
||||||
|
watchScroll
|
||||||
} from './ui_utils';
|
} from './ui_utils';
|
||||||
import { PDFRenderingQueue, RenderingStates } from './pdf_rendering_queue';
|
import { PDFRenderingQueue, RenderingStates } from './pdf_rendering_queue';
|
||||||
import { AnnotationLayerBuilder } from './annotation_layer_builder';
|
import { AnnotationLayerBuilder } from './annotation_layer_builder';
|
||||||
@ -29,18 +30,6 @@ import { TextLayerBuilder } from './text_layer_builder';
|
|||||||
|
|
||||||
const DEFAULT_CACHE_SIZE = 10;
|
const DEFAULT_CACHE_SIZE = 10;
|
||||||
|
|
||||||
const ScrollMode = {
|
|
||||||
VERTICAL: 0, // The default value.
|
|
||||||
HORIZONTAL: 1,
|
|
||||||
WRAPPED: 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
const SpreadMode = {
|
|
||||||
NONE: 0, // The default value.
|
|
||||||
ODD: 1,
|
|
||||||
EVEN: 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} PDFViewerOptions
|
* @typedef {Object} PDFViewerOptions
|
||||||
* @property {HTMLDivElement} container - The container for the viewer element.
|
* @property {HTMLDivElement} container - The container for the viewer element.
|
||||||
@ -1086,7 +1075,7 @@ class BaseViewer {
|
|||||||
if (this._scrollMode === mode) {
|
if (this._scrollMode === mode) {
|
||||||
return; // The Scroll mode didn't change.
|
return; // The Scroll mode didn't change.
|
||||||
}
|
}
|
||||||
if (!Number.isInteger(mode) || !Object.values(ScrollMode).includes(mode)) {
|
if (!isValidScrollMode(mode)) {
|
||||||
throw new Error(`Invalid scroll mode: ${mode}`);
|
throw new Error(`Invalid scroll mode: ${mode}`);
|
||||||
}
|
}
|
||||||
this._scrollMode = mode;
|
this._scrollMode = mode;
|
||||||
@ -1132,7 +1121,7 @@ class BaseViewer {
|
|||||||
if (this._spreadMode === mode) {
|
if (this._spreadMode === mode) {
|
||||||
return; // The Spread mode didn't change.
|
return; // The Spread mode didn't change.
|
||||||
}
|
}
|
||||||
if (!Number.isInteger(mode) || !Object.values(SpreadMode).includes(mode)) {
|
if (!isValidSpreadMode(mode)) {
|
||||||
throw new Error(`Invalid spread mode: ${mode}`);
|
throw new Error(`Invalid spread mode: ${mode}`);
|
||||||
}
|
}
|
||||||
this._spreadMode = mode;
|
this._spreadMode = mode;
|
||||||
@ -1179,6 +1168,4 @@ class BaseViewer {
|
|||||||
|
|
||||||
export {
|
export {
|
||||||
BaseViewer,
|
BaseViewer,
|
||||||
ScrollMode,
|
|
||||||
SpreadMode,
|
|
||||||
};
|
};
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"showPreviousViewOnLoad": true,
|
"viewOnLoad": 0,
|
||||||
"defaultZoomValue": "",
|
"defaultZoomValue": "",
|
||||||
"sidebarViewOnLoad": 0,
|
"sidebarViewOnLoad": -1,
|
||||||
"cursorToolOnLoad": 0,
|
"cursorToolOnLoad": 0,
|
||||||
"enableWebGL": false,
|
"enableWebGL": false,
|
||||||
"eventBusDispatchToDOM": false,
|
"eventBusDispatchToDOM": false,
|
||||||
@ -16,10 +16,8 @@
|
|||||||
"renderer": "canvas",
|
"renderer": "canvas",
|
||||||
"renderInteractiveForms": false,
|
"renderInteractiveForms": false,
|
||||||
"enablePrintAutoRotate": false,
|
"enablePrintAutoRotate": false,
|
||||||
"disableOpenActionDestination": true,
|
|
||||||
"disablePageMode": false,
|
|
||||||
"disablePageLabels": false,
|
"disablePageLabels": false,
|
||||||
"historyUpdateUrl": false,
|
"historyUpdateUrl": false,
|
||||||
"scrollModeOnLoad": 0,
|
"scrollModeOnLoad": -1,
|
||||||
"spreadModeOnLoad": 0
|
"spreadModeOnLoad": -1
|
||||||
}
|
}
|
||||||
|
@ -19,10 +19,12 @@ import { RenderingStates } from './pdf_rendering_queue';
|
|||||||
const UI_NOTIFICATION_CLASS = 'pdfSidebarNotification';
|
const UI_NOTIFICATION_CLASS = 'pdfSidebarNotification';
|
||||||
|
|
||||||
const SidebarView = {
|
const SidebarView = {
|
||||||
|
UNKNOWN: -1,
|
||||||
NONE: 0,
|
NONE: 0,
|
||||||
THUMBS: 1,
|
THUMBS: 1, // Default value.
|
||||||
OUTLINE: 2,
|
OUTLINE: 2,
|
||||||
ATTACHMENTS: 3,
|
ATTACHMENTS: 3,
|
||||||
|
LAYERS: 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -131,8 +133,8 @@ class PDFSidebar {
|
|||||||
this.isInitialViewSet = true;
|
this.isInitialViewSet = true;
|
||||||
|
|
||||||
// If the user has already manually opened the sidebar, immediately closing
|
// If the user has already manually opened the sidebar, immediately closing
|
||||||
// it would be bad UX.
|
// it would be bad UX; also ignore the "unknown" sidebar view value.
|
||||||
if (view === SidebarView.NONE) {
|
if (view === SidebarView.NONE || view === SidebarView.UNKNOWN) {
|
||||||
this._dispatchEvent();
|
this._dispatchEvent();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -13,10 +13,9 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { ScrollMode, SpreadMode } from './base_viewer';
|
import { SCROLLBAR_PADDING, ScrollMode, SpreadMode } from './ui_utils';
|
||||||
import { CursorTool } from './pdf_cursor_tools';
|
import { CursorTool } from './pdf_cursor_tools';
|
||||||
import { PDFSinglePageViewer } from './pdf_single_page_viewer';
|
import { PDFSinglePageViewer } from './pdf_single_page_viewer';
|
||||||
import { SCROLLBAR_PADDING } from './ui_utils';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} SecondaryToolbarOptions
|
* @typedef {Object} SecondaryToolbarOptions
|
||||||
|
@ -41,6 +41,20 @@ const TextLayerMode = {
|
|||||||
ENABLE_ENHANCE: 2,
|
ENABLE_ENHANCE: 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const ScrollMode = {
|
||||||
|
UNKNOWN: -1,
|
||||||
|
VERTICAL: 0, // Default value.
|
||||||
|
HORIZONTAL: 1,
|
||||||
|
WRAPPED: 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
const SpreadMode = {
|
||||||
|
UNKNOWN: -1,
|
||||||
|
NONE: 0, // Default value.
|
||||||
|
ODD: 1,
|
||||||
|
EVEN: 2,
|
||||||
|
};
|
||||||
|
|
||||||
// Replaces {{arguments}} with their values.
|
// Replaces {{arguments}} with their values.
|
||||||
function formatL10nValue(text, args) {
|
function formatL10nValue(text, args) {
|
||||||
if (!args) {
|
if (!args) {
|
||||||
@ -602,6 +616,16 @@ function isValidRotation(angle) {
|
|||||||
return Number.isInteger(angle) && angle % 90 === 0;
|
return Number.isInteger(angle) && angle % 90 === 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isValidScrollMode(mode) {
|
||||||
|
return (Number.isInteger(mode) && Object.values(ScrollMode).includes(mode) &&
|
||||||
|
mode !== ScrollMode.UNKNOWN);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isValidSpreadMode(mode) {
|
||||||
|
return (Number.isInteger(mode) && Object.values(SpreadMode).includes(mode) &&
|
||||||
|
mode !== SpreadMode.UNKNOWN);
|
||||||
|
}
|
||||||
|
|
||||||
function isPortraitOrientation(size) {
|
function isPortraitOrientation(size) {
|
||||||
return size.width <= size.height;
|
return size.width <= size.height;
|
||||||
}
|
}
|
||||||
@ -863,10 +887,14 @@ export {
|
|||||||
SCROLLBAR_PADDING,
|
SCROLLBAR_PADDING,
|
||||||
VERTICAL_PADDING,
|
VERTICAL_PADDING,
|
||||||
isValidRotation,
|
isValidRotation,
|
||||||
|
isValidScrollMode,
|
||||||
|
isValidSpreadMode,
|
||||||
isPortraitOrientation,
|
isPortraitOrientation,
|
||||||
PresentationModeState,
|
PresentationModeState,
|
||||||
RendererType,
|
RendererType,
|
||||||
TextLayerMode,
|
TextLayerMode,
|
||||||
|
ScrollMode,
|
||||||
|
SpreadMode,
|
||||||
NullL10n,
|
NullL10n,
|
||||||
EventBus,
|
EventBus,
|
||||||
getGlobalEventBus,
|
getGlobalEventBus,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user