mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-22 16:18:08 +02:00
Remove the CustomStyle
class
It is only used in a few places to handle prefixing style properties if necessary. However, we used it only for `transform`, `transformOrigin` and `borderRadius`, which according to Can I Use are supported natively (unprefixed) in the browsers that PDF.js 2.0 supports. Therefore, we can remove this class, which should help performance too since this avoids extra function calls in parts of the code that are called often.
This commit is contained in:
parent
3f88bfcda6
commit
d36c46b2c9
6 changed files with 22 additions and 83 deletions
|
@ -14,8 +14,8 @@
|
|||
*/
|
||||
|
||||
import {
|
||||
addLinkAttributes, CustomStyle, DOMSVGFactory, getDefaultSetting,
|
||||
getFilenameFromUrl, LinkTarget
|
||||
addLinkAttributes, DOMSVGFactory, getDefaultSetting, getFilenameFromUrl,
|
||||
LinkTarget
|
||||
} from './dom_utils';
|
||||
import {
|
||||
AnnotationBorderStyleType, AnnotationType, stringToPDFString, unreachable,
|
||||
|
@ -153,10 +153,8 @@ class AnnotationElement {
|
|||
page.view[3] - data.rect[3] + page.view[1]
|
||||
]);
|
||||
|
||||
CustomStyle.setProp('transform', container,
|
||||
'matrix(' + viewport.transform.join(',') + ')');
|
||||
CustomStyle.setProp('transformOrigin', container,
|
||||
-rect[0] + 'px ' + -rect[1] + 'px');
|
||||
container.style.transform = 'matrix(' + viewport.transform.join(',') + ')';
|
||||
container.style.transformOrigin = -rect[0] + 'px ' + -rect[1] + 'px';
|
||||
|
||||
if (!ignoreBorder && data.borderStyle.width > 0) {
|
||||
container.style.borderWidth = data.borderStyle.width + 'px';
|
||||
|
@ -172,7 +170,7 @@ class AnnotationElement {
|
|||
let verticalRadius = data.borderStyle.verticalCornerRadius;
|
||||
if (horizontalRadius > 0 || verticalRadius > 0) {
|
||||
let radius = horizontalRadius + 'px / ' + verticalRadius + 'px';
|
||||
CustomStyle.setProp('borderRadius', container, radius);
|
||||
container.style.borderRadius = radius;
|
||||
}
|
||||
|
||||
switch (data.borderStyle.style) {
|
||||
|
@ -652,9 +650,8 @@ class PopupAnnotationElement extends AnnotationElement {
|
|||
// PDF viewers ignore a popup annotation's rectangle.
|
||||
let parentLeft = parseFloat(parentElement.style.left);
|
||||
let parentWidth = parseFloat(parentElement.style.width);
|
||||
CustomStyle.setProp('transformOrigin', this.container,
|
||||
-(parentLeft + parentWidth) + 'px -' +
|
||||
parentElement.style.top);
|
||||
this.container.style.transformOrigin =
|
||||
-(parentLeft + parentWidth) + 'px -' + parentElement.style.top;
|
||||
this.container.style.left = (parentLeft + parentWidth) + 'px';
|
||||
|
||||
this.container.appendChild(popup.render());
|
||||
|
@ -1235,8 +1232,8 @@ class AnnotationLayer {
|
|||
let element = parameters.div.querySelector(
|
||||
'[data-annotation-id="' + data.id + '"]');
|
||||
if (element) {
|
||||
CustomStyle.setProp('transform', element,
|
||||
'matrix(' + parameters.viewport.transform.join(',') + ')');
|
||||
element.style.transform =
|
||||
'matrix(' + parameters.viewport.transform.join(',') + ')';
|
||||
}
|
||||
}
|
||||
parameters.div.removeAttribute('hidden');
|
||||
|
|
|
@ -261,60 +261,6 @@ class SimpleXMLParser {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Optimised CSS custom property getter/setter.
|
||||
* @class
|
||||
*/
|
||||
var CustomStyle = (function CustomStyleClosure() {
|
||||
|
||||
// As noted on: http://www.zachstronaut.com/posts/2009/02/17/
|
||||
// animate-css-transforms-firefox-webkit.html
|
||||
// in some versions of IE9 it is critical that ms appear in this list
|
||||
// before Moz
|
||||
var prefixes = ['ms', 'Moz', 'Webkit', 'O'];
|
||||
var _cache = Object.create(null);
|
||||
|
||||
function CustomStyle() {}
|
||||
|
||||
CustomStyle.getProp = function get(propName, element) {
|
||||
// check cache only when no element is given
|
||||
if (arguments.length === 1 && typeof _cache[propName] === 'string') {
|
||||
return _cache[propName];
|
||||
}
|
||||
|
||||
element = element || document.documentElement;
|
||||
var style = element.style, prefixed, uPropName;
|
||||
|
||||
// test standard property first
|
||||
if (typeof style[propName] === 'string') {
|
||||
return (_cache[propName] = propName);
|
||||
}
|
||||
|
||||
// capitalize
|
||||
uPropName = propName.charAt(0).toUpperCase() + propName.slice(1);
|
||||
|
||||
// test vendor specific properties
|
||||
for (var i = 0, l = prefixes.length; i < l; i++) {
|
||||
prefixed = prefixes[i] + uPropName;
|
||||
if (typeof style[prefixed] === 'string') {
|
||||
return (_cache[propName] = prefixed);
|
||||
}
|
||||
}
|
||||
|
||||
// If all fails then set to undefined.
|
||||
return (_cache[propName] = 'undefined');
|
||||
};
|
||||
|
||||
CustomStyle.setProp = function set(propName, element, str) {
|
||||
var prop = this.getProp(propName);
|
||||
if (prop !== 'undefined') {
|
||||
element.style[prop] = str;
|
||||
}
|
||||
};
|
||||
|
||||
return CustomStyle;
|
||||
})();
|
||||
|
||||
var RenderingCancelledException = (function RenderingCancelledException() {
|
||||
function RenderingCancelledException(msg, type) {
|
||||
this.message = msg;
|
||||
|
@ -543,7 +489,6 @@ class DummyStatTimer {
|
|||
}
|
||||
|
||||
export {
|
||||
CustomStyle,
|
||||
RenderingCancelledException,
|
||||
addLinkAttributes,
|
||||
isExternalLinkTargetSet,
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
*/
|
||||
|
||||
import {
|
||||
addLinkAttributes, CustomStyle, DEFAULT_LINK_REL, getFilenameFromUrl,
|
||||
addLinkAttributes, DEFAULT_LINK_REL, getFilenameFromUrl,
|
||||
isExternalLinkTargetSet, isValidUrl, LinkTarget
|
||||
} from './dom_utils';
|
||||
import {
|
||||
|
@ -243,7 +243,6 @@ PDFJS.LoopbackPort = LoopbackPort;
|
|||
PDFJS.PDFDataRangeTransport = PDFDataRangeTransport;
|
||||
PDFJS.PDFWorker = PDFWorker;
|
||||
|
||||
PDFJS.CustomStyle = CustomStyle;
|
||||
PDFJS.LinkTarget = LinkTarget;
|
||||
PDFJS.addLinkAttributes = addLinkAttributes;
|
||||
PDFJS.getFilenameFromUrl = getFilenameFromUrl;
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
*/
|
||||
|
||||
import { AbortException, createPromiseCapability, Util } from '../shared/util';
|
||||
import { CustomStyle, getDefaultSetting } from './dom_utils';
|
||||
import { getDefaultSetting } from './dom_utils';
|
||||
|
||||
/**
|
||||
* Text layer render parameters.
|
||||
|
@ -547,7 +547,7 @@ var renderTextLayer = (function renderTextLayerClosure() {
|
|||
}
|
||||
if (transform !== '') {
|
||||
textDivProperties.originalTransform = transform;
|
||||
CustomStyle.setProp('transform', textDiv, transform);
|
||||
textDiv.style.transform = transform;
|
||||
}
|
||||
this._textDivProperties.set(textDiv, textDivProperties);
|
||||
textLayerFrag.appendChild(textDiv);
|
||||
|
@ -653,12 +653,11 @@ var renderTextLayer = (function renderTextLayerClosure() {
|
|||
div.setAttribute('style', divProperties.style + padding);
|
||||
}
|
||||
if (transform !== '') {
|
||||
CustomStyle.setProp('transform', div, transform);
|
||||
div.style.transform = transform;
|
||||
}
|
||||
} else {
|
||||
div.style.padding = 0;
|
||||
CustomStyle.setProp('transform', div,
|
||||
divProperties.originalTransform || '');
|
||||
div.style.transform = divProperties.originalTransform || '';
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -53,7 +53,6 @@ exports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport;
|
|||
exports.PDFWorker = pdfjsDisplayAPI.PDFWorker;
|
||||
exports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer;
|
||||
exports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer;
|
||||
exports.CustomStyle = pdfjsDisplayDOMUtils.CustomStyle;
|
||||
exports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability;
|
||||
exports.PasswordResponses = pdfjsSharedUtil.PasswordResponses;
|
||||
exports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue