Skip to content

Commit 0060c99

Browse files
committed
Update scripts
1 parent f588cde commit 0060c99

File tree

2 files changed

+46
-20
lines changed

2 files changed

+46
-20
lines changed

Sources/Navigator/EPUB/Assets/Static/scripts/readium-fixed.js

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2848,8 +2848,7 @@ function nodeTextLength(node) {
28482848
// nb. `textContent` excludes text in comments and processing instructions
28492849
// when called on a parent element, so we don't need to subtract that here.
28502850

2851-
return (/** @type {string} */node.textContent.length
2852-
);
2851+
return /** @type {string} */node.textContent.length;
28532852
default:
28542853
return 0;
28552854
}
@@ -3174,8 +3173,8 @@ __webpack_require__.r(__webpack_exports__);
31743173
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
31753174
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
31763175
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3177-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3178-
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
3176+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
3177+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
31793178
/**
31803179
* This module exports a set of classes for converting between DOM `Range`
31813180
* objects and different types of selectors. It is mostly a thin wrapper around a
@@ -8731,18 +8730,23 @@ const attributeBlacklistMatch = (0,_utilities_data_js__WEBPACK_IMPORTED_MODULE_1
87318730
// Angular attributes
87328731
"ng-*",
87338732
]);
8733+
/**
8734+
* Prevents errors when attribute name contains a colon (e.g. "xlink:href").
8735+
*/
8736+
function sanitizeAttributeName(name) {
8737+
return name.replace(/:/g, "\\:");
8738+
}
87348739
/**
87358740
* Get simplified attribute selector for an element.
87368741
*/
8737-
function attributeNodeToSimplifiedSelector({ nodeName, }) {
8738-
return `[${nodeName}]`;
8742+
function attributeNodeToSimplifiedSelector({ name, }) {
8743+
return `[${name}]`;
87398744
}
87408745
/**
87418746
* Get attribute selector for an element.
87428747
*/
8743-
function attributeNodeToSelector({ nodeName, nodeValue, }) {
8744-
const selector = `[${nodeName}='${(0,_utilities_selectors_js__WEBPACK_IMPORTED_MODULE_0__.sanitizeSelectorItem)(nodeValue)}']`;
8745-
return selector;
8748+
function attributeNodeToSelector({ name, value, }) {
8749+
return `[${name}='${value}']`;
87468750
}
87478751
/**
87488752
* Checks whether attribute should be used as a selector.
@@ -8755,11 +8759,20 @@ function isValidAttributeNode({ nodeName }, element) {
87558759
}
87568760
return !attributeBlacklistMatch(nodeName);
87578761
}
8762+
/**
8763+
* Sanitize all attribute data. We want to do it once, before we start to generate simplified/full selectors from the same data.
8764+
*/
8765+
function sanitizeAttributeData({ nodeName, nodeValue }) {
8766+
return {
8767+
name: sanitizeAttributeName(nodeName),
8768+
value: (0,_utilities_selectors_js__WEBPACK_IMPORTED_MODULE_0__.sanitizeSelectorItem)(nodeValue),
8769+
};
8770+
}
87588771
/**
87598772
* Get attribute selectors for an element.
87608773
*/
87618774
function getElementAttributeSelectors(element) {
8762-
const validAttributes = Array.from(element.attributes).filter((attributeNode) => isValidAttributeNode(attributeNode, element));
8775+
const validAttributes = Array.from(element.attributes).filter((attributeNode) => isValidAttributeNode(attributeNode, element)).map(sanitizeAttributeData);
87638776
return [
87648777
...validAttributes.map(attributeNodeToSimplifiedSelector),
87658778
...validAttributes.map(attributeNodeToSelector),

Sources/Navigator/EPUB/Assets/Static/scripts/readium-reflowable.js

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2848,8 +2848,7 @@ function nodeTextLength(node) {
28482848
// nb. `textContent` excludes text in comments and processing instructions
28492849
// when called on a parent element, so we don't need to subtract that here.
28502850

2851-
return (/** @type {string} */node.textContent.length
2852-
);
2851+
return /** @type {string} */node.textContent.length;
28532852
default:
28542853
return 0;
28552854
}
@@ -3174,8 +3173,8 @@ __webpack_require__.r(__webpack_exports__);
31743173
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
31753174
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
31763175
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3177-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3178-
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
3176+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
3177+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
31793178
/**
31803179
* This module exports a set of classes for converting between DOM `Range`
31813180
* objects and different types of selectors. It is mostly a thin wrapper around a
@@ -8731,18 +8730,23 @@ const attributeBlacklistMatch = (0,_utilities_data_js__WEBPACK_IMPORTED_MODULE_1
87318730
// Angular attributes
87328731
"ng-*",
87338732
]);
8733+
/**
8734+
* Prevents errors when attribute name contains a colon (e.g. "xlink:href").
8735+
*/
8736+
function sanitizeAttributeName(name) {
8737+
return name.replace(/:/g, "\\:");
8738+
}
87348739
/**
87358740
* Get simplified attribute selector for an element.
87368741
*/
8737-
function attributeNodeToSimplifiedSelector({ nodeName, }) {
8738-
return `[${nodeName}]`;
8742+
function attributeNodeToSimplifiedSelector({ name, }) {
8743+
return `[${name}]`;
87398744
}
87408745
/**
87418746
* Get attribute selector for an element.
87428747
*/
8743-
function attributeNodeToSelector({ nodeName, nodeValue, }) {
8744-
const selector = `[${nodeName}='${(0,_utilities_selectors_js__WEBPACK_IMPORTED_MODULE_0__.sanitizeSelectorItem)(nodeValue)}']`;
8745-
return selector;
8748+
function attributeNodeToSelector({ name, value, }) {
8749+
return `[${name}='${value}']`;
87468750
}
87478751
/**
87488752
* Checks whether attribute should be used as a selector.
@@ -8755,11 +8759,20 @@ function isValidAttributeNode({ nodeName }, element) {
87558759
}
87568760
return !attributeBlacklistMatch(nodeName);
87578761
}
8762+
/**
8763+
* Sanitize all attribute data. We want to do it once, before we start to generate simplified/full selectors from the same data.
8764+
*/
8765+
function sanitizeAttributeData({ nodeName, nodeValue }) {
8766+
return {
8767+
name: sanitizeAttributeName(nodeName),
8768+
value: (0,_utilities_selectors_js__WEBPACK_IMPORTED_MODULE_0__.sanitizeSelectorItem)(nodeValue),
8769+
};
8770+
}
87588771
/**
87598772
* Get attribute selectors for an element.
87608773
*/
87618774
function getElementAttributeSelectors(element) {
8762-
const validAttributes = Array.from(element.attributes).filter((attributeNode) => isValidAttributeNode(attributeNode, element));
8775+
const validAttributes = Array.from(element.attributes).filter((attributeNode) => isValidAttributeNode(attributeNode, element)).map(sanitizeAttributeData);
87638776
return [
87648777
...validAttributes.map(attributeNodeToSimplifiedSelector),
87658778
...validAttributes.map(attributeNodeToSelector),

0 commit comments

Comments
 (0)