@prose-reader/core 0.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cfi.d.ts +74 -0
- package/dist/constants.d.ts +5 -0
- package/dist/context.d.ts +48 -0
- package/dist/createReaderWithEnhancer.d.ts +2242 -0
- package/dist/enhancers/accessibility.d.ts +2 -0
- package/dist/enhancers/chrome.d.ts +2 -0
- package/dist/enhancers/composeEnhancer.d.ts +21 -0
- package/dist/enhancers/firefox.d.ts +2 -0
- package/dist/enhancers/fonts.d.ts +12 -0
- package/dist/enhancers/hotkeys.d.ts +2 -0
- package/dist/enhancers/layoutEnhancer/createMovingSafePan$.d.ts +3 -0
- package/dist/enhancers/layoutEnhancer/layoutEnhancer.d.ts +10 -0
- package/dist/enhancers/links.d.ts +12 -0
- package/dist/enhancers/media.d.ts +2 -0
- package/dist/enhancers/navigation.d.ts +5 -0
- package/dist/enhancers/pagination.d.ts +46 -0
- package/dist/enhancers/progression.d.ts +15 -0
- package/dist/enhancers/resources/index.d.ts +2 -0
- package/dist/enhancers/resources/indexedDB.d.ts +6 -0
- package/dist/enhancers/resources/resourcesManager.d.ts +6 -0
- package/dist/enhancers/theme.d.ts +22 -0
- package/dist/enhancers/types.d.ts +28 -0
- package/dist/enhancers/utils.d.ts +6 -0
- package/dist/enhancers/webkit.d.ts +2 -0
- package/dist/enhancers/zoom.d.ts +16 -0
- package/dist/frames.d.ts +5 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +701 -0
- package/dist/index.js.LICENSE.txt +385 -0
- package/dist/index.js.map +1 -0
- package/dist/pagination.d.ts +65 -0
- package/dist/reader.d.ts +63 -0
- package/dist/report.d.ts +26 -0
- package/dist/selection.d.ts +6 -0
- package/dist/settings.d.ts +37 -0
- package/dist/spine/cfiLocator.d.ts +257 -0
- package/dist/spine/createSpine.d.ts +896 -0
- package/dist/spine/eventsHelper.d.ts +11 -0
- package/dist/spine/locationResolver.d.ts +479 -0
- package/dist/spine/navigationResolver.d.ts +48 -0
- package/dist/spine/viewportNavigator/manualViewportNavigator.d.ts +99 -0
- package/dist/spine/viewportNavigator/panViewportNavigator.d.ts +50 -0
- package/dist/spine/viewportNavigator/scrollViewportNavigator.d.ts +23 -0
- package/dist/spine/viewportNavigator/viewportNavigator.d.ts +85 -0
- package/dist/spineItem/commonSpineItem.d.ts +160 -0
- package/dist/spineItem/createSpineItem.d.ts +458 -0
- package/dist/spineItem/frameItem/createFrame$.d.ts +1 -0
- package/dist/spineItem/frameItem/createFrameManipulator.d.ts +5 -0
- package/dist/spineItem/frameItem/createHtmlPageFromResource.d.ts +2 -0
- package/dist/spineItem/frameItem/frameItem.d.ts +49 -0
- package/dist/spineItem/frameItem/loader.d.ts +27 -0
- package/dist/spineItem/index.d.ts +458 -0
- package/dist/spineItem/locationResolver.d.ts +27 -0
- package/dist/spineItem/navigationResolver.d.ts +23 -0
- package/dist/spineItem/prePaginatedSpineItem.d.ts +223 -0
- package/dist/spineItem/reflowableSpineItem.d.ts +222 -0
- package/dist/spineItem/trackers.d.ts +34 -0
- package/dist/spineItemManager.d.ts +264 -0
- package/dist/tryEnhancer/compose.d.ts +20 -0
- package/dist/tryEnhancer/createReader.d.ts +3 -0
- package/dist/tryEnhancer/enhancer.d.ts +24 -0
- package/dist/tryEnhancer/index.d.ts +1 -0
- package/dist/types/Hook.d.ts +70 -0
- package/dist/types/index.d.ts +16 -0
- package/dist/utils/compose.d.ts +8 -0
- package/dist/utils/contentType.d.ts +2 -0
- package/dist/utils/dom.d.ts +19 -0
- package/dist/utils/manifest.d.ts +2 -0
- package/dist/utils/objects.d.ts +6 -0
- package/dist/utils/objects.test.d.ts +1 -0
- package/dist/utils/rxjs.d.ts +4 -0
- package/dist/utils/url.d.ts +1 -0
- package/package.json +44 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,701 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
3
|
+
* This devtool is neither made for production nor for readable output files.
|
|
4
|
+
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
5
|
+
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
6
|
+
* or disable the default devtool with "devtool: false".
|
|
7
|
+
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
8
|
+
*/
|
|
9
|
+
/******/ (() => { // webpackBootstrap
|
|
10
|
+
/******/ "use strict";
|
|
11
|
+
/******/ var __webpack_modules__ = ({
|
|
12
|
+
|
|
13
|
+
/***/ "./src/cfi.ts":
|
|
14
|
+
/*!********************!*\
|
|
15
|
+
!*** ./src/cfi.ts ***!
|
|
16
|
+
\********************/
|
|
17
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
18
|
+
|
|
19
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CFI\": () => (/* binding */ CFI),\n/* harmony export */ \"extractProseMetadataFromCfi\": () => (/* binding */ extractProseMetadataFromCfi)\n/* harmony export */ });\n\nconst ELEMENT_NODE = Node.ELEMENT_NODE;\nconst TEXT_NODE = Node.TEXT_NODE;\nconst CDATA_SECTION_NODE = Node.CDATA_SECTION_NODE;\nfunction cfiEscape(str) {\n return str.replace(/[\\[\\]\\^,();]/g, `^$&`);\n}\nfunction matchAll(str, regExp, add) {\n add = add || 0;\n const matches = [];\n let offset = 0;\n let m;\n do {\n m = str.match(regExp);\n if (!m)\n break;\n matches.push(m.index + add);\n offset += m.index + m.length;\n str = str.slice(m.index + m.length);\n } while (offset < str.length);\n return matches;\n}\nfunction closest(a, n) {\n let minDiff;\n let closest;\n let i, diff;\n for (i = 0; i < a.length; i++) {\n diff = Math.abs(a[i] - n);\n if (!i || diff < minDiff) {\n diff = minDiff;\n closest = a[i];\n }\n }\n return closest;\n}\nfunction calcSiblingCount(nodes, n, offset) {\n let count = 0;\n let lastWasElement;\n let prevOffset = 0;\n let firstNode = true;\n let i, node;\n for (i = 0; i < nodes.length; i++) {\n node = nodes[i];\n if (node.nodeType === ELEMENT_NODE) {\n if (lastWasElement || firstNode) {\n count += 2;\n firstNode = false;\n }\n else {\n count++;\n }\n if (n === node) {\n if (node.tagName.toLowerCase() === `img`) {\n return { count, offset };\n }\n else {\n return { count };\n }\n }\n prevOffset = 0;\n lastWasElement = true;\n }\n else if (node.nodeType === TEXT_NODE ||\n node.nodeType === CDATA_SECTION_NODE) {\n if (lastWasElement || firstNode) {\n count++;\n firstNode = false;\n }\n if (n === node) {\n return { count, offset: offset + prevOffset };\n }\n prevOffset += node.textContent.length;\n lastWasElement = false;\n }\n else {\n continue;\n }\n }\n throw new Error(`The specified node was not found in the array of siblings`);\n}\nfunction compareTemporal(a, b) {\n const isA = (typeof a === `number`);\n const isB = (typeof b === `number`);\n if (!isA && !isB)\n return 0;\n if (!isA && isB)\n return -1;\n if (isA && !isB)\n return 1;\n return (a || 0.0) - (b || 0.0);\n}\nfunction compareSpatial(a, b) {\n if (!a && !b)\n return 0;\n if (!a && b)\n return -1;\n if (a && !b)\n return 1;\n const diff = (a.y || 0) - (b.y || 0);\n if (diff)\n return diff;\n return (a.x || 0) - (b.x || 0);\n}\nclass CFI {\n constructor(str, opts) {\n this.isRange = false;\n this.opts = Object.assign({\n flattenRange: false,\n stricter: true\n }, opts || {});\n this.cfi = str;\n this.parts = [];\n const isCFI = /^epubcfi\\((.*)\\)$/;\n str = str.trim();\n const m = str.match(isCFI);\n if (!m)\n throw new Error(`Not a valid CFI`);\n if (m.length < 2)\n return;\n str = m[1] || ``;\n let parsed, offset, newDoc;\n let subParts = [];\n let sawComma = 0;\n while (str.length) {\n ({ parsed, offset, newDoc } = this.parse(str));\n if (!parsed || offset === null)\n throw new Error(`Parsing failed`);\n if (sawComma && newDoc)\n throw new Error(`CFI is a range that spans multiple documents. This is not allowed`);\n subParts.push(parsed);\n if (newDoc || str.length - offset <= 0) {\n if (sawComma === 2) {\n this.to = subParts;\n }\n else {\n this.parts.push(subParts);\n }\n subParts = [];\n }\n str = str.slice(offset);\n if (str[0] === `,`) {\n if (sawComma === 0) {\n if (subParts.length) {\n this.parts.push(subParts);\n }\n subParts = [];\n }\n else if (sawComma === 1) {\n if (subParts.length) {\n this.from = subParts;\n }\n subParts = [];\n }\n str = str.slice(1);\n sawComma++;\n }\n }\n if (this.from && this.from.length) {\n if (this.opts.flattenRange || !this.to || !this.to.length) {\n this.parts = this.parts.concat(this.from);\n delete this.from;\n delete this.to;\n }\n else {\n this.isRange = true;\n }\n }\n if (this.opts.stricter) {\n this.removeIllegalOpts();\n }\n }\n removeIllegalOpts(parts) {\n if (!parts) {\n if (this.from) {\n this.removeIllegalOpts(this.from);\n if (!this.to)\n return;\n parts = this.to;\n }\n else {\n parts = this.parts;\n }\n }\n let i, j, part, subpart;\n for (i = 0; i < parts.length; i++) {\n part = parts[i];\n for (j = 0; j < part.length - 1; j++) {\n subpart = part[j];\n delete subpart.temporal;\n delete subpart.spatial;\n delete subpart.offset;\n delete subpart.textLocationAssertion;\n }\n }\n }\n static generatePart(node, offset, extra) {\n void (extra);\n let cfi = ``;\n let o;\n while (node.parentNode) {\n o = calcSiblingCount(node.parentNode.childNodes, node, offset);\n if (!cfi && o.offset)\n cfi = `:` + o.offset;\n cfi = `/` + o.count + ((node.id) ? `[` + cfiEscape(node.id) + `]` : ``) + cfi;\n node = node.parentNode;\n }\n return cfi;\n }\n static generate(node, offset, extra) {\n let cfi;\n if (Array.isArray(node)) {\n const strs = [];\n for (const o of node) {\n strs.push(this.generatePart(o.node, o.offset, extra));\n }\n cfi = strs.join(`!`);\n }\n else {\n cfi = this.generatePart(node, offset, extra);\n }\n if (extra)\n cfi += extra;\n return `epubcfi(` + cfi + `)`;\n }\n static toParsed(cfi) {\n if (typeof cfi === `string`) {\n }\n if (cfi.isRange) {\n return cfi.getFrom();\n }\n else {\n return cfi.get();\n }\n }\n static comparePath(a, b) {\n const max = Math.max(a.length, b.length);\n let i, cA, cB, diff;\n for (i = 0; i < max; i++) {\n cA = a[i];\n cB = b[i];\n if (!cA)\n return -1;\n if (!cB)\n return 1;\n diff = this.compareParts(cA, cB);\n if (diff)\n return diff;\n }\n return 0;\n }\n static sort(a) {\n a.sort((a, b) => {\n return this.compare(a, b);\n });\n }\n static compare(a, b) {\n let oA = a.get();\n let oB = b.get();\n if (a.isRange || b.isRange) {\n if (a.isRange && b.isRange) {\n const diff = this.comparePath(oA.from, oB.from);\n if (diff)\n return diff;\n return this.comparePath(oA.to, oB.to);\n }\n if (a.isRange)\n oA = oA.from;\n if (b.isRange)\n oB = oB.from;\n return this.comparePath(oA, oB);\n }\n else {\n return this.comparePath(oA, oB);\n }\n }\n static compareParts(a, b) {\n const max = Math.max(a.length, b.length);\n let i, cA, cB, diff;\n for (i = 0; i < max; i++) {\n cA = a[i];\n cB = b[i];\n if (!cA)\n return -1;\n if (!cB)\n return 1;\n diff = cA.nodeIndex - cB.nodeIndex;\n if (diff)\n return diff;\n if (cA.nodeIndex === 0) {\n return 0;\n }\n if (i < max - 1)\n continue;\n if (cA.nodeIndex % 2 === 0) {\n diff = compareTemporal(cA.temporal, cB.temporal);\n if (diff)\n return diff;\n diff = compareSpatial(cA.spatial, cB.spatial);\n if (diff)\n return diff;\n }\n diff = (cA.offset || 0) - (cB.offset || 0);\n if (diff)\n return diff;\n }\n return 0;\n }\n decodeEntities(dom, str) {\n try {\n const el = dom.createElement(`textarea`);\n el.innerHTML = str;\n return el.value || ``;\n }\n catch (err) {\n return str;\n }\n }\n trueLength(dom, str) {\n return this.decodeEntities(dom, str).length;\n }\n getFrom() {\n if (!this.isRange)\n throw new Error(`Trying to get beginning of non-range CFI`);\n if (!this.from) {\n return this.deepClone(this.parts);\n }\n const parts = this.deepClone(this.parts);\n parts[parts.length - 1] = parts[parts.length - 1].concat(this.from);\n return parts;\n }\n getTo() {\n if (!this.isRange)\n throw new Error(`Trying to get end of non-range CFI`);\n const parts = this.deepClone(this.parts);\n parts[parts.length - 1] = parts[parts.length - 1].concat(this.to);\n return parts;\n }\n get() {\n if (this.isRange) {\n return {\n from: this.getFrom(),\n to: this.getTo(),\n isRange: true\n };\n }\n return this.deepClone(this.parts);\n }\n parseSideBias(o, loc) {\n if (!loc)\n return;\n const m = loc.trim().match(/^(.*);s=([ba])$/);\n if (!m || m.length < 3) {\n if (typeof o.textLocationAssertion === `object`) {\n o.textLocationAssertion.post = loc;\n }\n else {\n o.textLocationAssertion = loc;\n }\n return;\n }\n if (m[1]) {\n if (typeof o.textLocationAssertion === `object`) {\n o.textLocationAssertion.post = m[1];\n }\n else {\n o.textLocationAssertion = m[1];\n }\n }\n if (m[2] === `a`) {\n o.sideBias = `after`;\n }\n else {\n o.sideBias = `before`;\n }\n }\n parseSpatialRange(range) {\n if (!range)\n return undefined;\n const m = range.trim().match(/^([\\d\\.]+):([\\d\\.]+)$/);\n if (!m || m.length < 3)\n return undefined;\n const o = {\n x: parseInt(m[1]),\n y: parseInt(m[2])\n };\n if (typeof o.x !== `number` || typeof o.y !== `number`) {\n return undefined;\n }\n return o;\n }\n parse(cfi) {\n const o = {};\n const isNumber = /[\\d]/;\n let f;\n let state;\n let prevState;\n let cur, escape;\n let seenColon = false;\n let seenSlash = false;\n let i;\n for (i = 0; i <= cfi.length; i++) {\n if (i < cfi.length) {\n cur = cfi[i];\n }\n else {\n cur = ``;\n }\n if (cur === `^` && !escape) {\n escape = true;\n continue;\n }\n if (state === `/`) {\n if (cur.match(isNumber)) {\n if (!f) {\n f = cur;\n }\n else {\n f += cur;\n }\n escape = false;\n continue;\n }\n else {\n if (f) {\n o.nodeIndex = parseInt(f);\n f = null;\n }\n prevState = state;\n state = null;\n }\n }\n if (state === `:`) {\n if (cur.match(isNumber)) {\n if (!f) {\n f = cur;\n }\n else {\n f += cur;\n }\n escape = false;\n continue;\n }\n else {\n if (f) {\n o.offset = parseInt(f);\n f = null;\n }\n prevState = state;\n state = null;\n }\n }\n if (state === `@`) {\n let done = false;\n if (cur.match(isNumber) || cur === `.` || cur === `:`) {\n if (cur === `:`) {\n if (!seenColon) {\n seenColon = true;\n }\n else {\n done = true;\n }\n }\n }\n else {\n done = true;\n }\n if (!done) {\n if (!f) {\n f = cur;\n }\n else {\n f += cur;\n }\n escape = false;\n continue;\n }\n else {\n prevState = state;\n state = null;\n if (f && seenColon)\n o.spatial = this.parseSpatialRange(f);\n f = null;\n }\n }\n if (state === `~`) {\n if (cur.match(isNumber) || cur === `.`) {\n if (!f) {\n f = cur;\n }\n else {\n f += cur;\n }\n escape = false;\n continue;\n }\n else {\n if (f) {\n o.temporal = parseFloat(f);\n }\n prevState = state;\n state = null;\n f = null;\n }\n }\n if (!state) {\n if (cur === `!`) {\n i++;\n state = cur;\n break;\n }\n if (cur === `,`) {\n break;\n }\n if (cur === `/`) {\n if (seenSlash) {\n break;\n }\n else {\n seenSlash = true;\n prevState = state;\n state = cur;\n escape = false;\n continue;\n }\n }\n if (cur === `:` || cur === `~` || cur === `@`) {\n if (this.opts.stricter) {\n if (cur === `:` && (typeof o.temporal !== `undefined` || typeof o.spatial !== `undefined`)) {\n break;\n }\n if ((cur === `~` || cur === `@`) && (typeof o.offset !== `undefined`)) {\n break;\n }\n }\n prevState = state;\n state = cur;\n escape = false;\n seenColon = false;\n continue;\n }\n if (cur === `[` && !escape && prevState === `:`) {\n prevState = state;\n state = `[`;\n escape = false;\n continue;\n }\n if (cur === `[` && !escape && prevState === `/`) {\n prevState = state;\n state = `nodeID`;\n escape = false;\n continue;\n }\n }\n if (state === `[`) {\n if (cur === `]` && !escape) {\n prevState = state;\n state = null;\n this.parseSideBias(o, f);\n f = null;\n }\n else if (cur === `,` && !escape) {\n o.textLocationAssertion = {};\n if (f) {\n o.textLocationAssertion.pre = f;\n }\n f = null;\n }\n else {\n if (!f) {\n f = cur;\n }\n else {\n f += cur;\n }\n }\n escape = false;\n continue;\n }\n if (state === `nodeID`) {\n if (cur === `]` && !escape) {\n prevState = state;\n state = null;\n o.nodeID = f;\n f = null;\n }\n else {\n if (!f) {\n f = cur;\n }\n else {\n f += cur;\n }\n }\n escape = false;\n continue;\n }\n escape = false;\n }\n if (!o.nodeIndex && o.nodeIndex !== 0)\n throw new Error(`Missing child node index in CFI`);\n return { parsed: o, offset: i, newDoc: (state === `!`) };\n }\n getChildNodeByCFIIndex(dom, parentNode, index, offset) {\n const children = parentNode.childNodes;\n if (!children.length)\n return { node: parentNode, offset: 0 };\n if (index <= 0) {\n return { node: children[0], relativeToNode: `before`, offset: 0 };\n }\n let cfiCount = 0;\n let lastChild;\n let i, child;\n for (i = 0; i < children.length; i++) {\n child = children[i];\n switch (child.nodeType) {\n case ELEMENT_NODE:\n if (cfiCount % 2 === 0) {\n cfiCount += 2;\n if (cfiCount >= index) {\n if (child.tagName.toLowerCase() === `img` && offset) {\n return { node: child, offset };\n }\n return { node: child, offset: 0 };\n }\n }\n else {\n cfiCount += 1;\n if (cfiCount === index) {\n if (child.tagName.toLowerCase() === `img` && offset) {\n return { node: child, offset };\n }\n return { node: child, offset: 0 };\n }\n else if (cfiCount > index) {\n if (!lastChild) {\n return { node: parentNode, offset: 0 };\n }\n return { node: lastChild, offset: this.trueLength(dom, lastChild.textContent) };\n }\n }\n lastChild = child;\n break;\n case TEXT_NODE:\n case CDATA_SECTION_NODE:\n if (cfiCount === 0 || cfiCount % 2 === 0) {\n cfiCount += 1;\n }\n else {\n }\n if (cfiCount === index) {\n const trueLength = this.trueLength(dom, child.textContent);\n if (offset >= trueLength) {\n offset -= trueLength;\n }\n else {\n return { node: child, offset: offset };\n }\n }\n lastChild = child;\n break;\n default:\n continue;\n }\n }\n if (index > cfiCount) {\n const o = { relativeToNode: `after`, offset: 0 };\n if (!lastChild) {\n o.node = parentNode;\n }\n else {\n o.node = lastChild;\n }\n if (this.isTextNode(o.node)) {\n o.offset = this.trueLength(dom, o.node.textContent.length);\n }\n return o;\n }\n }\n isTextNode(node) {\n if (!node)\n return false;\n if (node.nodeType === TEXT_NODE || node.nodeType === CDATA_SECTION_NODE) {\n return true;\n }\n return false;\n }\n correctOffset(dom, node, offset, assertion) {\n let curNode = node;\n let matchStr;\n if (typeof assertion === `string`) {\n matchStr = this.decodeEntities(dom, assertion);\n }\n else {\n assertion.pre = this.decodeEntities(dom, assertion.pre);\n assertion.post = this.decodeEntities(dom, assertion.post);\n matchStr = assertion.pre + `.` + assertion.post;\n }\n if (!(this.isTextNode(node))) {\n return { node, offset: 0 };\n }\n while (this.isTextNode(curNode.previousSibling)) {\n curNode = curNode.previousSibling;\n }\n const startNode = curNode;\n let str;\n const nodeLengths = [];\n let txt = ``;\n let i = 0;\n while (this.isTextNode(curNode)) {\n str = this.decodeEntities(dom, curNode.textContent);\n nodeLengths[i] = str.length;\n txt += str;\n if (!curNode.nextSibling)\n break;\n curNode = curNode.nextSibling;\n i++;\n }\n const matchOffset = (assertion.pre) ? assertion.pre.length : 0;\n const m = matchAll(txt, new RegExp(matchStr), matchOffset);\n if (!m.length)\n return { node, offset };\n let newOffset = closest(m, offset);\n if (curNode === node && newOffset === offset) {\n return { node, offset };\n }\n i = 0;\n curNode = startNode;\n while (newOffset >= nodeLengths[i]) {\n newOffset -= nodeLengths[i];\n if (newOffset < 0)\n return { node, offset };\n const nodeOffsets = [];\n if (!curNode.nextSibling || i + 1 >= nodeOffsets.length)\n return { node, offset };\n i++;\n curNode = curNode.nextSibling;\n }\n return { node: curNode, offset: newOffset };\n }\n resolveNode(index, subparts, dom, opts) {\n opts = Object.assign({}, opts || {});\n if (!dom)\n throw new Error(`Missing DOM argument`);\n let startNode;\n if (index === 0) {\n startNode = dom.querySelector(`package`);\n }\n if (!startNode) {\n for (const n of dom.childNodes) {\n if (n.nodeType === ELEMENT_NODE) {\n startNode = n;\n break;\n }\n }\n }\n startNode = dom;\n if (!startNode)\n throw new Error(`Document incompatible with CFIs`);\n let node = startNode;\n let startFrom = 0;\n let i;\n let subpart;\n for (i = subparts.length - 1; i >= 0; i--) {\n subpart = subparts[i];\n if (!opts.ignoreIDs && subpart.nodeID && (node = dom.getElementById(subpart.nodeID))) {\n startFrom = i + 1;\n break;\n }\n }\n if (!node) {\n node = startNode;\n }\n let o = { node, offset: 0 };\n let nodeIndex;\n for (i = startFrom; i < subparts.length; i++) {\n subpart = subparts[i];\n if (subpart) {\n o = this.getChildNodeByCFIIndex(dom, o.node, subpart.nodeIndex, subpart.offset);\n if (subpart.textLocationAssertion) {\n o = this.correctOffset(dom, o.node, subpart.offset, subpart.textLocationAssertion);\n }\n }\n }\n return o;\n }\n resolveURI(index, dom, opts) {\n opts = opts || {};\n if (index < 0 || index > this.parts.length - 2) {\n throw new Error(`index is out of bounds`);\n }\n const subparts = this.parts[index];\n if (!subparts)\n throw new Error(`Missing CFI part for index: ` + index);\n const o = this.resolveNode(index, subparts, dom, opts);\n let node = o.node;\n const tagName = node.tagName.toLowerCase();\n if (tagName === `itemref` &&\n node.parentNode.tagName.toLowerCase() === `spine`) {\n const idref = node.getAttribute(`idref`);\n if (!idref)\n throw new Error(`Referenced node had not 'idref' attribute`);\n node = dom.getElementById(idref);\n if (!node)\n throw new Error(`Specified node is missing from manifest`);\n const href = node.getAttribute(`href`);\n if (!href)\n throw new Error(`Manifest item is missing href attribute`);\n return href;\n }\n if (tagName === `iframe` || tagName === `embed`) {\n const src = node.getAttribute(`src`);\n if (!src)\n throw new Error(tagName + ` element is missing 'src' attribute`);\n return src;\n }\n if (tagName === `object`) {\n const data = node.getAttribute(`data`);\n if (!data)\n throw new Error(tagName + ` element is missing 'data' attribute`);\n return data;\n }\n if (tagName === `image` || tagName === `use`) {\n const href = node.getAttribute(`xlink:href`);\n if (!href)\n throw new Error(tagName + ` element is missing 'xlink:href' attribute`);\n return href;\n }\n throw new Error(`No URI found`);\n }\n deepClone(o) {\n return JSON.parse(JSON.stringify(o));\n }\n resolveLocation(dom, parts) {\n const index = parts.length - 1;\n const subparts = parts[index];\n if (!subparts)\n throw new Error(`Missing CFI part for index: ` + index);\n const o = this.resolveNode(index, subparts, dom);\n const lastPart = this.deepClone(subparts[subparts.length - 1]);\n delete lastPart.nodeIndex;\n if (!lastPart.offset)\n delete o.offset;\n return Object.assign(Object.assign({}, lastPart), o);\n }\n resolveLast(dom, opts) {\n opts = Object.assign({\n range: false\n }, opts || {});\n if (!this.isRange) {\n return this.resolveLocation(dom, this.parts);\n }\n if (opts.range) {\n const range = dom.createRange();\n const from = this.getFrom();\n if (from.relativeToNode === `before`) {\n range.setStartBefore(from.node, from.offset);\n }\n else if (from.relativeToNode === `after`) {\n range.setStartAfter(from.node, from.offset);\n }\n else {\n range.setStart(from.node, from.offset);\n }\n const to = this.getTo();\n if (to.relativeToNode === `before`) {\n range.setEndBefore(to.node, to.offset);\n }\n else if (to.relativeToNode === `after`) {\n range.setEndAfter(to.node, to.offset);\n }\n else {\n range.setEnd(to.node, to.offset);\n }\n return range;\n }\n return {\n from: this.resolveLocation(dom, this.getFrom()),\n to: this.resolveLocation(dom, this.getTo()),\n isRange: true\n };\n }\n resolve(doc, opts) {\n return this.resolveLast(doc, opts);\n }\n}\n\nconst extractProseMetadataFromCfi = (cfi) => {\n var _a, _b;\n const [itemId] = ((_a = cfi\n .match(/\\|(\\[prose\\~anchor[^\\]]*\\])+/ig)) === null || _a === void 0 ? void 0 : _a.map(s => s.replace(/\\|\\[prose\\~anchor\\~/, ``)\n .replace(/\\]/, ``))) || [];\n const [offset] = ((_b = cfi\n .match(/\\|(\\[prose\\~offset[^\\]]*\\])+/ig)) === null || _b === void 0 ? void 0 : _b.map(s => s.replace(/\\|\\[prose\\~offset\\~/, ``)\n .replace(/\\]/, ``))) || [];\n const cleanedCfi = cfi.replace(/\\|(\\[prose\\~[^\\]]*\\~[^\\]]*\\])+/ig, ``);\n const foundOffset = parseInt(offset || ``);\n return {\n cleanedCfi,\n itemId: itemId ? decodeURIComponent(itemId) : itemId,\n offset: isNaN(foundOffset) ? undefined : foundOffset\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFHLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxFQUFFLEVBQUUsQ0FBQztJQUN0RSxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUUxQyxPQUFPO1FBQ0wsVUFBVTtRQUNWLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO1FBQ3BELE1BQU0sRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVztLQUNyRDtBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvY2ZpLnRzPzdjMjMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG5vLXVzZWxlc3MtZXNjYXBlOiBcIm9mZlwiICovXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZyZWFkLWluay9lcHViLWNmaS1yZXNvbHZlclxuICogQGxhdGVzdCBhMGQ3ZTRlMzlkNWI0YWRjOTE1MGUwMDZlMGI2ZDdhZjk1MTNhZTI3XG4gKi9cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCBFTEVNRU5UX05PREUgPSBOb2RlLkVMRU1FTlRfTk9ERVxuY29uc3QgVEVYVF9OT0RFID0gTm9kZS5URVhUX05PREVcbmNvbnN0IENEQVRBX1NFQ1RJT05fTk9ERSA9IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFXG5cbmZ1bmN0aW9uIGNmaUVzY2FwZSAoc3RyOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXFxbXFxdXFxeLCgpO10vZywgYF4kJmApXG59XG5cbi8vIEdldCBpbmRpY2VzIG9mIGFsbCBtYXRjaGVzIG9mIHJlZ0V4cCBpbiBzdHJcbi8vIGlmIGBhZGRgIGlzIG5vbi1udWxsLCBhZGQgaXQgdG8gdGhlIG1hdGNoZWQgaW5kaWNlc1xuZnVuY3Rpb24gbWF0Y2hBbGwgKHN0cjogc3RyaW5nLCByZWdFeHA6IGFueSwgYWRkOiBhbnkpIHtcbiAgYWRkID0gYWRkIHx8IDBcbiAgY29uc3QgbWF0Y2hlcyA9IFtdXG4gIGxldCBvZmZzZXQgPSAwXG4gIGxldCBtXG4gIGRvIHtcbiAgICBtID0gc3RyLm1hdGNoKHJlZ0V4cClcbiAgICBpZiAoIW0pIGJyZWFrXG4gICAgbWF0Y2hlcy5wdXNoKG0uaW5kZXggKyBhZGQpXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9mZnNldCArPSBtLmluZGV4ICsgbS5sZW5ndGhcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc3RyID0gc3RyLnNsaWNlKG0uaW5kZXggKyBtLmxlbmd0aClcbiAgfSB3aGlsZSAob2Zmc2V0IDwgc3RyLmxlbmd0aClcblxuICByZXR1cm4gbWF0Y2hlc1xufVxuXG4vLyBHZXQgdGhlIG51bWJlciBpbiBhIHRoYXQgaGFzIHRoZSBzbWFsbGVzdCBkaWZmIHRvIG5cbmZ1bmN0aW9uIGNsb3Nlc3QgKGE6IGFueVtdLCBuOiBudW1iZXIpIHtcbiAgbGV0IG1pbkRpZmZcbiAgbGV0IGNsb3Nlc3RcbiAgbGV0IGksIGRpZmZcbiAgZm9yIChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICBkaWZmID0gTWF0aC5hYnMoYVtpXSAtIG4pXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICghaSB8fCBkaWZmIDwgbWluRGlmZikge1xuICAgICAgZGlmZiA9IG1pbkRpZmZcbiAgICAgIGNsb3Nlc3QgPSBhW2ldXG4gICAgfVxuICB9XG4gIHJldHVybiBjbG9zZXN0XG59XG5cbi8vIEdpdmVuIGEgc2V0IG9mIG5vZGVzIHRoYXQgYXJlIGFsbCBjaGlsZHJlblxuLy8gYW5kIGEgcmVmZXJlbmNlIHRvIG9uZSBvZiB0aG9zZSBub2Rlc1xuLy8gY2FsY3VsYXRlIHRoZSBjb3VudC9pbmRleCBvZiB0aGUgbm9kZVxuLy8gYWNjb3JkaW5nIHRvIHRoZSBDRkkgc3BlYy5cbi8vIEFsc28gcmUtY2FsY3VsYXRlIG9mZnNldCBpZiBzdXBwbGllZCBhbmQgcmVsZXZhbnRcbmZ1bmN0aW9uIGNhbGNTaWJsaW5nQ291bnQgKG5vZGVzOiBnbG9iYWxUaGlzLk5vZGVMaXN0T2Y8Z2xvYmFsVGhpcy5DaGlsZE5vZGU+LCBuOiBudW1iZXIsIG9mZnNldDogbnVtYmVyKSB7XG4gIGxldCBjb3VudCA9IDBcbiAgbGV0IGxhc3RXYXNFbGVtZW50XG4gIGxldCBwcmV2T2Zmc2V0ID0gMFxuICBsZXQgZmlyc3ROb2RlID0gdHJ1ZVxuICBsZXQgaSwgbm9kZVxuICBmb3IgKGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBub2RlID0gbm9kZXNbaV1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERSkge1xuICAgICAgaWYgKGxhc3RXYXNFbGVtZW50IHx8IGZpcnN0Tm9kZSkge1xuICAgICAgICBjb3VudCArPSAyXG4gICAgICAgIGZpcnN0Tm9kZSA9IGZhbHNlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb3VudCsrXG4gICAgICB9XG5cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChuID09PSBub2RlKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSBgaW1nYCkge1xuICAgICAgICAgIHJldHVybiB7IGNvdW50LCBvZmZzZXQgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB7IGNvdW50IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcHJldk9mZnNldCA9IDBcbiAgICAgIGxhc3RXYXNFbGVtZW50ID0gdHJ1ZVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgIH0gZWxzZSBpZiAobm9kZS5ub2RlVHlwZSA9PT0gVEVYVF9OT0RFIHx8XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBub2RlLm5vZGVUeXBlID09PSBDREFUQV9TRUNUSU9OX05PREUpIHtcbiAgICAgIGlmIChsYXN0V2FzRWxlbWVudCB8fCBmaXJzdE5vZGUpIHtcbiAgICAgICAgY291bnQrK1xuICAgICAgICBmaXJzdE5vZGUgPSBmYWxzZVxuICAgICAgfVxuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAobiA9PT0gbm9kZSkge1xuICAgICAgICByZXR1cm4geyBjb3VudCwgb2Zmc2V0OiBvZmZzZXQgKyBwcmV2T2Zmc2V0IH1cbiAgICAgIH1cblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcHJldk9mZnNldCArPSBub2RlLnRleHRDb250ZW50Lmxlbmd0aFxuICAgICAgbGFzdFdhc0VsZW1lbnQgPSBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBzcGVjaWZpZWQgbm9kZSB3YXMgbm90IGZvdW5kIGluIHRoZSBhcnJheSBvZiBzaWJsaW5nc2ApXG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVUZW1wb3JhbCAoYTogbnVtYmVyLCBiOiBudW1iZXIpIHtcbiAgY29uc3QgaXNBID0gKHR5cGVvZiBhID09PSBgbnVtYmVyYClcbiAgY29uc3QgaXNCID0gKHR5cGVvZiBiID09PSBgbnVtYmVyYClcblxuICBpZiAoIWlzQSAmJiAhaXNCKSByZXR1cm4gMFxuICBpZiAoIWlzQSAmJiBpc0IpIHJldHVybiAtMVxuICBpZiAoaXNBICYmICFpc0IpIHJldHVybiAxXG5cbiAgcmV0dXJuIChhIHx8IDAuMCkgLSAoYiB8fCAwLjApXG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVTcGF0aWFsIChhOiBhbnksIGI6IGFueSkge1xuICBpZiAoIWEgJiYgIWIpIHJldHVybiAwXG4gIGlmICghYSAmJiBiKSByZXR1cm4gLTFcbiAgaWYgKGEgJiYgIWIpIHJldHVybiAxXG5cbiAgY29uc3QgZGlmZiA9IChhLnkgfHwgMCkgLSAoYi55IHx8IDApXG4gIGlmIChkaWZmKSByZXR1cm4gZGlmZlxuXG4gIHJldHVybiAoYS54IHx8IDApIC0gKGIueCB8fCAwKVxufVxuXG5jbGFzcyBDRkkge1xuICBpc1JhbmdlOiBib29sZWFuID0gZmFsc2VcbiAgcGFydHM6IHt9W11cbiAgb3B0czoge31cbiAgY2ZpOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvciAoc3RyOiBzdHJpbmcsIG9wdHM6IHt9KSB7XG4gICAgdGhpcy5vcHRzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAvLyBJZiBDRkkgaXMgYSBTaW1wbGUgUmFuZ2UsIHByZXRlbmQgaXQgaXNuJ3RcbiAgICAgIC8vIGJ5IHBhcnNpbmcgb25seSB0aGUgc3RhcnQgb2YgdGhlIHJhbmdlXG4gICAgICBmbGF0dGVuUmFuZ2U6IGZhbHNlLFxuICAgICAgLy8gU3RyaXAgdGVtcG9yYWwsIHNwYXRpYWwsIG9mZnNldCBhbmQgdGV4dExvY2F0aW9uQXNzZXJ0aW9uXG4gICAgICAvLyBmcm9tIHBsYWNlcyB3aGVyZSB0aGV5IGRvbid0IG1ha2Ugc2Vuc2VcbiAgICAgIHN0cmljdGVyOiB0cnVlXG4gICAgfSwgb3B0cyB8fCB7fSlcblxuICAgIHRoaXMuY2ZpID0gc3RyXG4gICAgdGhpcy5wYXJ0cyA9IFtdXG4gICAgY29uc3QgaXNDRkkgPSAvXmVwdWJjZmlcXCgoLiopXFwpJC9cblxuICAgIHN0ciA9IHN0ci50cmltKClcbiAgICBjb25zdCBtID0gc3RyLm1hdGNoKGlzQ0ZJKVxuICAgIGlmICghbSkgdGhyb3cgbmV3IEVycm9yKGBOb3QgYSB2YWxpZCBDRklgKVxuICAgIGlmIChtLmxlbmd0aCA8IDIpIHJldHVybiAvLyBFbXB0eSBDRklcblxuICAgIHN0ciA9IG1bMV0gfHwgYGBcblxuICAgIGxldCBwYXJzZWQsIG9mZnNldCwgbmV3RG9jXG4gICAgbGV0IHN1YlBhcnRzID0gW11cbiAgICBsZXQgc2F3Q29tbWEgPSAwXG4gICAgd2hpbGUgKHN0ci5sZW5ndGgpIHtcbiAgICAgICh7IHBhcnNlZCwgb2Zmc2V0LCBuZXdEb2MgfSA9IHRoaXMucGFyc2Uoc3RyKSlcbiAgICAgIGlmICghcGFyc2VkIHx8IG9mZnNldCA9PT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKGBQYXJzaW5nIGZhaWxlZGApXG4gICAgICBpZiAoc2F3Q29tbWEgJiYgbmV3RG9jKSB0aHJvdyBuZXcgRXJyb3IoYENGSSBpcyBhIHJhbmdlIHRoYXQgc3BhbnMgbXVsdGlwbGUgZG9jdW1lbnRzLiBUaGlzIGlzIG5vdCBhbGxvd2VkYClcblxuICAgICAgc3ViUGFydHMucHVzaChwYXJzZWQpXG5cbiAgICAgIC8vIEhhbmRsZSBlbmQgb2Ygc3RyaW5nXG4gICAgICBpZiAobmV3RG9jIHx8IHN0ci5sZW5ndGggLSBvZmZzZXQgPD0gMCkge1xuICAgICAgICAvLyBIYW5kbGUgZW5kIGlmIHRoaXMgd2FzIGEgcmFuZ2VcbiAgICAgICAgaWYgKHNhd0NvbW1hID09PSAyKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHRoaXMudG8gPSBzdWJQYXJ0c1xuICAgICAgICB9IGVsc2UgeyAvLyBub3QgYSByYW5nZVxuICAgICAgICAgIHRoaXMucGFydHMucHVzaChzdWJQYXJ0cylcbiAgICAgICAgfVxuICAgICAgICBzdWJQYXJ0cyA9IFtdXG4gICAgICB9XG5cbiAgICAgIHN0ciA9IHN0ci5zbGljZShvZmZzZXQpXG5cbiAgICAgIC8vIEhhbmRsZSBTaW1wbGUgUmFuZ2VzXG4gICAgICBpZiAoc3RyWzBdID09PSBgLGApIHtcbiAgICAgICAgaWYgKHNhd0NvbW1hID09PSAwKSB7XG4gICAgICAgICAgaWYgKHN1YlBhcnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5wYXJ0cy5wdXNoKHN1YlBhcnRzKVxuICAgICAgICAgIH1cbiAgICAgICAgICBzdWJQYXJ0cyA9IFtdXG4gICAgICAgIH0gZWxzZSBpZiAoc2F3Q29tbWEgPT09IDEpIHtcbiAgICAgICAgICBpZiAoc3ViUGFydHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0aGlzLmZyb20gPSBzdWJQYXJ0c1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdWJQYXJ0cyA9IFtdXG4gICAgICAgIH1cbiAgICAgICAgc3RyID0gc3RyLnNsaWNlKDEpXG4gICAgICAgIHNhd0NvbW1hKytcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh0aGlzLmZyb20gJiYgdGhpcy5mcm9tLmxlbmd0aCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKHRoaXMub3B0cy5mbGF0dGVuUmFuZ2UgfHwgIXRoaXMudG8gfHwgIXRoaXMudG8ubGVuZ3RoKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy5wYXJ0cyA9IHRoaXMucGFydHMuY29uY2F0KHRoaXMuZnJvbSlcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBkZWxldGUgdGhpcy5mcm9tXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZGVsZXRlIHRoaXMudG9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNSYW5nZSA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh0aGlzLm9wdHMuc3RyaWN0ZXIpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMucmVtb3ZlSWxsZWdhbE9wdHMoKVxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUlsbGVnYWxPcHRzIChwYXJ0czogYW55W10pIHtcbiAgICBpZiAoIXBhcnRzKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAodGhpcy5mcm9tKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy5yZW1vdmVJbGxlZ2FsT3B0cyh0aGlzLmZyb20pXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKCF0aGlzLnRvKSByZXR1cm5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBwYXJ0cyA9IHRoaXMudG9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnRzID0gdGhpcy5wYXJ0c1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBpLCBqLCBwYXJ0LCBzdWJwYXJ0XG4gICAgZm9yIChpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBwYXJ0ID0gcGFydHNbaV1cbiAgICAgIGZvciAoaiA9IDA7IGogPCBwYXJ0Lmxlbmd0aCAtIDE7IGorKykge1xuICAgICAgICBzdWJwYXJ0ID0gcGFydFtqXVxuICAgICAgICBkZWxldGUgc3VicGFydC50ZW1wb3JhbFxuICAgICAgICBkZWxldGUgc3VicGFydC5zcGF0aWFsXG4gICAgICAgIGRlbGV0ZSBzdWJwYXJ0Lm9mZnNldFxuICAgICAgICBkZWxldGUgc3VicGFydC50ZXh0TG9jYXRpb25Bc3NlcnRpb25cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2VuZXJhdGVQYXJ0IChub2RlOiBFbGVtZW50IHwgTm9kZSwgb2Zmc2V0PzogbnVtYmVyLCBleHRyYT86IHt9KSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWQgKi9cbiAgICB2b2lkIChleHRyYSlcbiAgICBsZXQgY2ZpID0gYGBcbiAgICBsZXQgb1xuICAgIHdoaWxlIChub2RlLnBhcmVudE5vZGUpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG8gPSBjYWxjU2libGluZ0NvdW50KG5vZGUucGFyZW50Tm9kZS5jaGlsZE5vZGVzLCBub2RlLCBvZmZzZXQpXG4gICAgICBpZiAoIWNmaSAmJiBvLm9mZnNldCkgY2ZpID0gYDpgICsgby5vZmZzZXRcblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY2ZpID0gYC9gICsgby5jb3VudCArICgobm9kZS5pZCkgPyBgW2AgKyBjZmlFc2NhcGUobm9kZS5pZCkgKyBgXWAgOiBgYCkgKyBjZmlcblxuICAgICAgLy8gZGVidWdnZXJcbiAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGVcbiAgICB9XG5cbiAgICByZXR1cm4gY2ZpXG4gIH1cblxuICBzdGF0aWMgZ2VuZXJhdGUgKG5vZGU6IE5vZGUsIG9mZnNldD86IG51bWJlciwgZXh0cmE/OiB7fSkge1xuICAgIGxldCBjZmlcblxuICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgICBjb25zdCBzdHJzID0gW11cbiAgICAgIGZvciAoY29uc3QgbyBvZiBub2RlKSB7XG4gICAgICAgIHN0cnMucHVzaCh0aGlzLmdlbmVyYXRlUGFydChvLm5vZGUsIG8ub2Zmc2V0LCBleHRyYSkpXG4gICAgICB9XG4gICAgICBjZmkgPSBzdHJzLmpvaW4oYCFgKVxuICAgIH0gZWxzZSB7XG4gICAgICBjZmkgPSB0aGlzLmdlbmVyYXRlUGFydChub2RlLCBvZmZzZXQsIGV4dHJhKVxuICAgIH1cblxuICAgIGlmIChleHRyYSkgY2ZpICs9IGV4dHJhXG5cbiAgICByZXR1cm4gYGVwdWJjZmkoYCArIGNmaSArIGApYFxuICB9XG5cbiAgc3RhdGljIHRvUGFyc2VkIChjZmk6IGFueSkge1xuICAgIGlmICh0eXBlb2YgY2ZpID09PSBgc3RyaW5nYCkge1xuICAgICAgLy8gY2lmID0gbmV3IHRoaXMoY2ZpKVxuICAgIH1cbiAgICBpZiAoY2ZpLmlzUmFuZ2UpIHtcbiAgICAgIHJldHVybiBjZmkuZ2V0RnJvbSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjZmkuZ2V0KClcbiAgICB9XG4gIH1cblxuICAvLyBUYWtlcyB0d28gQ0ZJIHBhdGhzIGFuZCBjb21wYXJlcyB0aGVtXG4gIHN0YXRpYyBjb21wYXJlUGF0aCAoYTogYW55W10sIGI6IGFueVtdKSB7XG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgoYS5sZW5ndGgsIGIubGVuZ3RoKVxuXG4gICAgbGV0IGksIGNBLCBjQiwgZGlmZlxuICAgIGZvciAoaSA9IDA7IGkgPCBtYXg7IGkrKykge1xuICAgICAgY0EgPSBhW2ldXG4gICAgICBjQiA9IGJbaV1cbiAgICAgIGlmICghY0EpIHJldHVybiAtMVxuICAgICAgaWYgKCFjQikgcmV0dXJuIDFcblxuICAgICAgZGlmZiA9IHRoaXMuY29tcGFyZVBhcnRzKGNBLCBjQilcbiAgICAgIGlmIChkaWZmKSByZXR1cm4gZGlmZlxuICAgIH1cbiAgICByZXR1cm4gMFxuICB9XG5cbiAgLy8gU29ydCBhbiBhcnJheSBvZiBDRkkgb2JqZWN0c1xuICBzdGF0aWMgc29ydCAoYTogYW55KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGEuc29ydCgoYSwgYikgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZShhLCBiKVxuICAgIH0pXG4gIH1cblxuICAvLyBUYWtlcyB0d28gQ0ZJIG9iamVjdHMgYW5kIGNvbXBhcmVzIHRoZW0uXG4gIHN0YXRpYyBjb21wYXJlIChhOiBhbnksIGI6IGFueSkge1xuICAgIGxldCBvQSA9IGEuZ2V0KClcbiAgICBsZXQgb0IgPSBiLmdldCgpXG4gICAgaWYgKGEuaXNSYW5nZSB8fCBiLmlzUmFuZ2UpIHtcbiAgICAgIGlmIChhLmlzUmFuZ2UgJiYgYi5pc1JhbmdlKSB7XG4gICAgICAgIGNvbnN0IGRpZmYgPSB0aGlzLmNvbXBhcmVQYXRoKG9BLmZyb20sIG9CLmZyb20pXG4gICAgICAgIGlmIChkaWZmKSByZXR1cm4gZGlmZlxuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlUGF0aChvQS50bywgb0IudG8pXG4gICAgICB9XG4gICAgICBpZiAoYS5pc1JhbmdlKSBvQSA9IG9BLmZyb21cbiAgICAgIGlmIChiLmlzUmFuZ2UpIG9CID0gb0IuZnJvbVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlUGF0aChvQSwgb0IpXG4gICAgfSBlbHNlIHsgLy8gbmVpdGhlciBhIG5vciBiIGlzIGEgcmFuZ2VcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVQYXRoKG9BLCBvQilcbiAgICB9XG4gIH1cblxuICAvLyBUYWtlcyB0d28gcGFyc2VkIHBhdGggcGFydHMgKGFzc3VtaW5nIHBhdGggaXMgc3BsaXQgb24gJyEnKSBhbmQgY29tcGFyZXMgdGhlbS5cbiAgc3RhdGljIGNvbXBhcmVQYXJ0cyAoYTogYW55LCBiOiBhbnkpIHtcbiAgICBjb25zdCBtYXggPSBNYXRoLm1heChhLmxlbmd0aCwgYi5sZW5ndGgpXG5cbiAgICBsZXQgaSwgY0EsIGNCLCBkaWZmXG4gICAgZm9yIChpID0gMDsgaSA8IG1heDsgaSsrKSB7XG4gICAgICBjQSA9IGFbaV1cbiAgICAgIGNCID0gYltpXVxuICAgICAgaWYgKCFjQSkgcmV0dXJuIC0xXG4gICAgICBpZiAoIWNCKSByZXR1cm4gMVxuXG4gICAgICBkaWZmID0gY0Eubm9kZUluZGV4IC0gY0Iubm9kZUluZGV4XG4gICAgICBpZiAoZGlmZikgcmV0dXJuIGRpZmZcblxuICAgICAgLy8gVGhlIHBhdGhzIG11c3QgYmUgZXF1YWwgaWYgdGhlIFwiYmVmb3JlIHRoZSBmaXJzdCBub2RlXCIgc3ludGF4IGlzIHVzZWRcbiAgICAgIC8vIGFuZCB0aGlzIG11c3QgYmUgdGhlIGxhc3Qgc3VicGFydCAoYXNzdW1pbmcgYSB2YWxpZCBDRkkpXG4gICAgICBpZiAoY0Eubm9kZUluZGV4ID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwXG4gICAgICB9XG5cbiAgICAgIC8vIERvbid0IGJvdGhlciBjb21wYXJpbmcgb2Zmc2V0cywgdGVtcG9yYWxzIG9yIHNwYXRpYWxzXG4gICAgICAvLyB1bmxlc3Mgd2UncmUgb24gdGhlIGxhc3QgZWxlbWVudCwgc2luY2UgdGhleSdyZSBub3RcbiAgICAgIC8vIHN1cHBvc2VkIHRvIGJlIG9uIGVsZW1lbnRzIG90aGVyIHRoYW4gdGhlIGxhc3RcbiAgICAgIGlmIChpIDwgbWF4IC0gMSkgY29udGludWVcblxuICAgICAgLy8gT25seSBjb21wYXJlIHNwYXRpYWxzIG9yIHRlbXBvcmFscyBmb3IgZWxlbWVudCBub2Rlc1xuICAgICAgaWYgKGNBLm5vZGVJbmRleCAlIDIgPT09IDApIHtcbiAgICAgICAgZGlmZiA9IGNvbXBhcmVUZW1wb3JhbChjQS50ZW1wb3JhbCwgY0IudGVtcG9yYWwpXG4gICAgICAgIGlmIChkaWZmKSByZXR1cm4gZGlmZlxuXG4gICAgICAgIGRpZmYgPSBjb21wYXJlU3BhdGlhbChjQS5zcGF0aWFsLCBjQi5zcGF0aWFsKVxuICAgICAgICBpZiAoZGlmZikgcmV0dXJuIGRpZmZcbiAgICAgIH1cblxuICAgICAgZGlmZiA9IChjQS5vZmZzZXQgfHwgMCkgLSAoY0Iub2Zmc2V0IHx8IDApXG4gICAgICBpZiAoZGlmZikgcmV0dXJuIGRpZmZcbiAgICB9XG4gICAgcmV0dXJuIDBcbiAgfVxuXG4gIGRlY29kZUVudGl0aWVzIChkb206IERvY3VtZW50LCBzdHI6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbCA9IGRvbS5jcmVhdGVFbGVtZW50KGB0ZXh0YXJlYWApXG4gICAgICBlbC5pbm5lckhUTUwgPSBzdHJcbiAgICAgIHJldHVybiBlbC52YWx1ZSB8fCBgYFxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gVE9ETyBmYWxsIGJhY2sgdG8gc2ltcGxlciBkZWNvZGU/XG4gICAgICAvLyBlLmcuIHJlZ2V4IG1hdGNoIGZvciBzdHVmZiBsaWtlICYjMTYwOyBhbmQgJm5ic3A7XG4gICAgICByZXR1cm4gc3RyXG4gICAgfVxuICB9XG5cbiAgLy8gZGVjb2RlIEhUTUwvWE1MIGVudGl0aWVzIGFuZCBjb21wdXRlIGxlbmd0aFxuICB0cnVlTGVuZ3RoIChkb206IERvY3VtZW50LCBzdHI6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmRlY29kZUVudGl0aWVzKGRvbSwgc3RyKS5sZW5ndGhcbiAgfVxuXG4gIGdldEZyb20gKCkge1xuICAgIGlmICghdGhpcy5pc1JhbmdlKSB0aHJvdyBuZXcgRXJyb3IoYFRyeWluZyB0byBnZXQgYmVnaW5uaW5nIG9mIG5vbi1yYW5nZSBDRklgKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIXRoaXMuZnJvbSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVlcENsb25lKHRoaXMucGFydHMpXG4gICAgfVxuICAgIGNvbnN0IHBhcnRzID0gdGhpcy5kZWVwQ2xvbmUodGhpcy5wYXJ0cylcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXS5jb25jYXQodGhpcy5mcm9tKVxuICAgIHJldHVybiBwYXJ0c1xuICB9XG5cbiAgZ2V0VG8gKCkge1xuICAgIGlmICghdGhpcy5pc1JhbmdlKSB0aHJvdyBuZXcgRXJyb3IoYFRyeWluZyB0byBnZXQgZW5kIG9mIG5vbi1yYW5nZSBDRklgKVxuICAgIGNvbnN0IHBhcnRzID0gdGhpcy5kZWVwQ2xvbmUodGhpcy5wYXJ0cylcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXS5jb25jYXQodGhpcy50bylcbiAgICByZXR1cm4gcGFydHNcbiAgfVxuXG4gIGdldCAoKSB7XG4gICAgaWYgKHRoaXMuaXNSYW5nZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZnJvbTogdGhpcy5nZXRGcm9tKCksXG4gICAgICAgIHRvOiB0aGlzLmdldFRvKCksXG4gICAgICAgIGlzUmFuZ2U6IHRydWVcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGVlcENsb25lKHRoaXMucGFydHMpXG4gIH1cblxuICBwYXJzZVNpZGVCaWFzIChvOiBhbnksIGxvYzogYW55KSB7XG4gICAgaWYgKCFsb2MpIHJldHVyblxuICAgIGNvbnN0IG0gPSBsb2MudHJpbSgpLm1hdGNoKC9eKC4qKTtzPShbYmFdKSQvKVxuICAgIGlmICghbSB8fCBtLmxlbmd0aCA8IDMpIHtcbiAgICAgIGlmICh0eXBlb2Ygby50ZXh0TG9jYXRpb25Bc3NlcnRpb24gPT09IGBvYmplY3RgKSB7XG4gICAgICAgIG8udGV4dExvY2F0aW9uQXNzZXJ0aW9uLnBvc3QgPSBsb2NcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG8udGV4dExvY2F0aW9uQXNzZXJ0aW9uID0gbG9jXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKG1bMV0pIHtcbiAgICAgIGlmICh0eXBlb2Ygby50ZXh0TG9jYXRpb25Bc3NlcnRpb24gPT09IGBvYmplY3RgKSB7XG4gICAgICAgIG8udGV4dExvY2F0aW9uQXNzZXJ0aW9uLnBvc3QgPSBtWzFdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvLnRleHRMb2NhdGlvbkFzc2VydGlvbiA9IG1bMV1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobVsyXSA9PT0gYGFgKSB7XG4gICAgICBvLnNpZGVCaWFzID0gYGFmdGVyYFxuICAgIH0gZWxzZSB7XG4gICAgICBvLnNpZGVCaWFzID0gYGJlZm9yZWBcbiAgICB9XG4gIH1cblxuICBwYXJzZVNwYXRpYWxSYW5nZSAocmFuZ2U6IGFueSkge1xuICAgIGlmICghcmFuZ2UpIHJldHVybiB1bmRlZmluZWRcbiAgICBjb25zdCBtID0gcmFuZ2UudHJpbSgpLm1hdGNoKC9eKFtcXGRcXC5dKyk6KFtcXGRcXC5dKykkLylcbiAgICBpZiAoIW0gfHwgbS5sZW5ndGggPCAzKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgY29uc3QgbyA9IHtcbiAgICAgIHg6IHBhcnNlSW50KG1bMV0pLFxuICAgICAgeTogcGFyc2VJbnQobVsyXSlcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvLnggIT09IGBudW1iZXJgIHx8IHR5cGVvZiBvLnkgIT09IGBudW1iZXJgKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIHJldHVybiBvXG4gIH1cblxuICBwYXJzZSAoY2ZpOiBhbnkpIHtcbiAgICBjb25zdCBvID0ge31cbiAgICBjb25zdCBpc051bWJlciA9IC9bXFxkXS9cbiAgICBsZXQgZlxuICAgIGxldCBzdGF0ZVxuICAgIGxldCBwcmV2U3RhdGVcbiAgICBsZXQgY3VyLCBlc2NhcGVcbiAgICBsZXQgc2VlbkNvbG9uID0gZmFsc2VcbiAgICBsZXQgc2VlblNsYXNoID0gZmFsc2VcbiAgICBsZXQgaVxuICAgIGZvciAoaSA9IDA7IGkgPD0gY2ZpLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoaSA8IGNmaS5sZW5ndGgpIHtcbiAgICAgICAgY3VyID0gY2ZpW2ldXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXIgPSBgYFxuICAgICAgfVxuICAgICAgaWYgKGN1ciA9PT0gYF5gICYmICFlc2NhcGUpIHtcbiAgICAgICAgZXNjYXBlID0gdHJ1ZVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IGAvYCkge1xuICAgICAgICBpZiAoY3VyLm1hdGNoKGlzTnVtYmVyKSkge1xuICAgICAgICAgIGlmICghZikge1xuICAgICAgICAgICAgZiA9IGN1clxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmICs9IGN1clxuICAgICAgICAgIH1cbiAgICAgICAgICBlc2NhcGUgPSBmYWxzZVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGYpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG8ubm9kZUluZGV4ID0gcGFyc2VJbnQoZilcbiAgICAgICAgICAgIGYgPSBudWxsXG4gICAgICAgICAgfVxuICAgICAgICAgIHByZXZTdGF0ZSA9IHN0YXRlXG4gICAgICAgICAgc3RhdGUgPSBudWxsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlID09PSBgOmApIHtcbiAgICAgICAgaWYgKGN1ci5tYXRjaChpc051bWJlcikpIHtcbiAgICAgICAgICBpZiAoIWYpIHtcbiAgICAgICAgICAgIGYgPSBjdXJcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZiArPSBjdXJcbiAgICAgICAgICB9XG4gICAgICAgICAgZXNjYXBlID0gZmFsc2VcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChmKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBvLm9mZnNldCA9IHBhcnNlSW50KGYpXG4gICAgICAgICAgICBmID0gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgICBwcmV2U3RhdGUgPSBzdGF0ZVxuICAgICAgICAgIHN0YXRlID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gYEBgKSB7XG4gICAgICAgIGxldCBkb25lID0gZmFsc2VcbiAgICAgICAgaWYgKGN1ci5tYXRjaChpc051bWJlcikgfHwgY3VyID09PSBgLmAgfHwgY3VyID09PSBgOmApIHtcbiAgICAgICAgICBpZiAoY3VyID09PSBgOmApIHtcbiAgICAgICAgICAgIGlmICghc2VlbkNvbG9uKSB7XG4gICAgICAgICAgICAgIHNlZW5Db2xvbiA9IHRydWVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGRvbmUgPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRvbmUgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkb25lKSB7XG4gICAgICAgICAgaWYgKCFmKSB7XG4gICAgICAgICAgICBmID0gY3VyXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGYgKz0gY3VyXG4gICAgICAgICAgfVxuICAgICAgICAgIGVzY2FwZSA9IGZhbHNlXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmV2U3RhdGUgPSBzdGF0ZVxuICAgICAgICAgIHN0YXRlID0gbnVsbFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBpZiAoZiAmJiBzZWVuQ29sb24pIG8uc3BhdGlhbCA9IHRoaXMucGFyc2VTcGF0aWFsUmFuZ2UoZilcbiAgICAgICAgICBmID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gYH5gKSB7XG4gICAgICAgIGlmIChjdXIubWF0Y2goaXNOdW1iZXIpIHx8IGN1ciA9PT0gYC5gKSB7XG4gICAgICAgICAgaWYgKCFmKSB7XG4gICAgICAgICAgICBmID0gY3VyXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGYgKz0gY3VyXG4gICAgICAgICAgfVxuICAgICAgICAgIGVzY2FwZSA9IGZhbHNlXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZikge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgby50ZW1wb3JhbCA9IHBhcnNlRmxvYXQoZilcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJldlN0YXRlID0gc3RhdGVcbiAgICAgICAgICBzdGF0ZSA9IG51bGxcbiAgICAgICAgICBmID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgaWYgKGN1ciA9PT0gYCFgKSB7XG4gICAgICAgICAgaSsrXG4gICAgICAgICAgc3RhdGUgPSBjdXJcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1ciA9PT0gYCxgKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjdXIgPT09IGAvYCkge1xuICAgICAgICAgIGlmIChzZWVuU2xhc2gpIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlZW5TbGFzaCA9IHRydWVcbiAgICAgICAgICAgIHByZXZTdGF0ZSA9IHN0YXRlXG4gICAgICAgICAgICBzdGF0ZSA9IGN1clxuICAgICAgICAgICAgZXNjYXBlID0gZmFsc2VcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1ciA9PT0gYDpgIHx8IGN1ciA9PT0gYH5gIHx8IGN1ciA9PT0gYEBgKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGlmICh0aGlzLm9wdHMuc3RyaWN0ZXIpIHtcbiAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgaGFkIGEgdGVtcG9yYWwgb3Igc3BhdGlhbCBpbmRpY2F0b3JcbiAgICAgICAgICAgIC8vIGFuZCBvZmZzZXQgZG9lcyBub3QgbWFrZSBzZW5zZSBhbmQgdGhlIHNhbWUgdGltZVxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgaWYgKGN1ciA9PT0gYDpgICYmICh0eXBlb2Ygby50ZW1wb3JhbCAhPT0gYHVuZGVmaW5lZGAgfHwgdHlwZW9mIG8uc3BhdGlhbCAhPT0gYHVuZGVmaW5lZGApKSB7XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGhhZCBhbiBvZmZzZXRcbiAgICAgICAgICAgIC8vIGFuZCB0ZW1wb3JhbCBvciBzcGF0aWFsIGRvIG5vdCBtYWtlIHNlbnNlIGF0IHRoZSBzYW1lIHRpbWVcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGlmICgoY3VyID09PSBgfmAgfHwgY3VyID09PSBgQGApICYmICh0eXBlb2Ygby5vZmZzZXQgIT09IGB1bmRlZmluZWRgKSkge1xuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBwcmV2U3RhdGUgPSBzdGF0ZVxuICAgICAgICAgIHN0YXRlID0gY3VyXG4gICAgICAgICAgZXNjYXBlID0gZmFsc2VcbiAgICAgICAgICBzZWVuQ29sb24gPSBmYWxzZSAvLyBvbmx5IHJlbGV2YW50IGZvciAnQCdcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1ciA9PT0gYFtgICYmICFlc2NhcGUgJiYgcHJldlN0YXRlID09PSBgOmApIHtcbiAgICAgICAgICBwcmV2U3RhdGUgPSBzdGF0ZVxuICAgICAgICAgIHN0YXRlID0gYFtgXG4gICAgICAgICAgZXNjYXBlID0gZmFsc2VcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1ciA9PT0gYFtgICYmICFlc2NhcGUgJiYgcHJldlN0YXRlID09PSBgL2ApIHtcbiAgICAgICAgICBwcmV2U3RhdGUgPSBzdGF0ZVxuICAgICAgICAgIHN0YXRlID0gYG5vZGVJRGBcbiAgICAgICAgICBlc2NhcGUgPSBmYWxzZVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlID09PSBgW2ApIHtcbiAgICAgICAgaWYgKGN1ciA9PT0gYF1gICYmICFlc2NhcGUpIHtcbiAgICAgICAgICBwcmV2U3RhdGUgPSBzdGF0ZVxuICAgICAgICAgIHN0YXRlID0gbnVsbFxuICAgICAgICAgIHRoaXMucGFyc2VTaWRlQmlhcyhvLCBmKVxuICAgICAgICAgIGYgPSBudWxsXG4gICAgICAgIH0gZWxzZSBpZiAoY3VyID09PSBgLGAgJiYgIWVzY2FwZSkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBvLnRleHRMb2NhdGlvbkFzc2VydGlvbiA9IHt9XG4gICAgICAgICAgaWYgKGYpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG8udGV4dExvY2F0aW9uQXNzZXJ0aW9uLnByZSA9IGZcbiAgICAgICAgICB9XG4gICAgICAgICAgZiA9IG51bGxcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIWYpIHtcbiAgICAgICAgICAgIGYgPSBjdXJcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZiArPSBjdXJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZXNjYXBlID0gZmFsc2VcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlID09PSBgbm9kZUlEYCkge1xuICAgICAgICBpZiAoY3VyID09PSBgXWAgJiYgIWVzY2FwZSkge1xuICAgICAgICAgIHByZXZTdGF0ZSA9IHN0YXRlXG4gICAgICAgICAgc3RhdGUgPSBudWxsXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG8ubm9kZUlEID0gZlxuICAgICAgICAgIGYgPSBudWxsXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFmKSB7XG4gICAgICAgICAgICBmID0gY3VyXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGYgKz0gY3VyXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVzY2FwZSA9IGZhbHNlXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGVzY2FwZSA9IGZhbHNlXG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICghby5ub2RlSW5kZXggJiYgby5ub2RlSW5kZXggIT09IDApIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBjaGlsZCBub2RlIGluZGV4IGluIENGSWApXG5cbiAgICByZXR1cm4geyBwYXJzZWQ6IG8sIG9mZnNldDogaSwgbmV3RG9jOiAoc3RhdGUgPT09IGAhYCkgfVxuICB9XG5cbiAgLy8gVGhlIENGSSBjb3VudHMgY2hpbGQgbm9kZXMgZGlmZmVyZW50bHkgZnJvbSB0aGUgRE9NXG4gIC8vIFJldHJpZXZlIHRoZSBjaGlsZCBvZiBwYXJlbnROb2RlIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhcbiAgLy8gYWNjb3JkaW5nIHRvIHRoZSBDRkkgc3RhbmRhcmQgd2F5IG9mIGNvdW50aW5nXG4gIGdldENoaWxkTm9kZUJ5Q0ZJSW5kZXggKGRvbTogRG9jdW1lbnQsIHBhcmVudE5vZGU6IEVsZW1lbnQsIGluZGV4OiBudW1iZXIsIG9mZnNldDogbnVtYmVyKSB7XG4gICAgLy8gY29uc29sZS5sb2coYGdldENoaWxkTm9kZUJ5Q0ZJSW5kZXhgLCB7IHBhcmVudE5vZGUsIGluZGV4LCBvZmZzZXQgfSlcbiAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudE5vZGUuY2hpbGROb2Rlc1xuICAgIGlmICghY2hpbGRyZW4ubGVuZ3RoKSByZXR1cm4geyBub2RlOiBwYXJlbnROb2RlLCBvZmZzZXQ6IDAgfVxuXG4gICAgLy8gaW5kZXggaXMgcG9pbnRpbmcgdG8gdGhlIHZpcnR1YWwgbm9kZSBiZWZvcmUgdGhlIGZpcnN0IG5vZGVcbiAgICAvLyBhcyBkZWZpbmVkIGluIHRoZSBDRkkgc3BlY1xuICAgIGlmIChpbmRleCA8PSAwKSB7XG4gICAgICByZXR1cm4geyBub2RlOiBjaGlsZHJlblswXSwgcmVsYXRpdmVUb05vZGU6IGBiZWZvcmVgLCBvZmZzZXQ6IDAgfVxuICAgIH1cblxuICAgIGxldCBjZmlDb3VudCA9IDBcbiAgICBsZXQgbGFzdENoaWxkXG4gICAgbGV0IGksIGNoaWxkXG5cbiAgICAvLyBjb25zb2xlLmxvZyhjaGlsZHJlbiwgY2hpbGRyZW4ubGVuZ3RoKVxuICAgIGZvciAoaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc3dpdGNoIChjaGlsZC5ub2RlVHlwZSkge1xuICAgICAgICBjYXNlIEVMRU1FTlRfTk9ERTpcblxuICAgICAgICAgIC8vIElmIHRoZSBwcmV2aW91cyBub2RlIHdhcyBhbHNvIGFuIGVsZW1lbnQgbm9kZVxuICAgICAgICAgIC8vIHRoZW4gd2UgaGF2ZSB0byBwcmV0ZW5kIHRoZXJlIHdhcyBhIHRleHQgbm9kZSBpbiBiZXR3ZWVuXG4gICAgICAgICAgLy8gdGhlIGN1cnJlbnQgYW5kIHByZXZpb3VzIG5vZGVzIChhY2NvcmRpbmcgdG8gdGhlIENGSSBzcGVjKVxuICAgICAgICAgIC8vIHNvIHdlIGluY3JlbWVudCBjZmlDb3VudCBieSB0d29cbiAgICAgICAgICBpZiAoY2ZpQ291bnQgJSAyID09PSAwKSB7XG4gICAgICAgICAgICBjZmlDb3VudCArPSAyXG4gICAgICAgICAgICBpZiAoY2ZpQ291bnQgPj0gaW5kZXgpIHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBpZiAoY2hpbGQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSBgaW1nYCAmJiBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBub2RlOiBjaGlsZCwgb2Zmc2V0IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4geyBub2RlOiBjaGlsZCwgb2Zmc2V0OiAwIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgeyAvLyBQcmV2aW91cyBub2RlIHdhcyBhIHRleHQgbm9kZVxuICAgICAgICAgICAgY2ZpQ291bnQgKz0gMVxuICAgICAgICAgICAgaWYgKGNmaUNvdW50ID09PSBpbmRleCkge1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGlmIChjaGlsZC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IGBpbWdgICYmIG9mZnNldCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IG5vZGU6IGNoaWxkLCBvZmZzZXQgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHsgbm9kZTogY2hpbGQsIG9mZnNldDogMCB9XG5cbiAgICAgICAgICAgICAgLy8gVGhpcyBoYXBwZW5zIHdoZW4gb2Zmc2V0IGludG8gdGhlIHByZXZpb3VzIHRleHQgbm9kZSB3YXMgZ3JlYXRlclxuICAgICAgICAgICAgICAvLyB0aGFuIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGF0IHRleHQgbm9kZVxuICAgICAgICAgICAgICAvLyBTbyB3ZSByZXR1cm4gYSBwb3NpdGlvbiBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyB0ZXh0IG5vZGVcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ZpQ291bnQgPiBpbmRleCkge1xuICAgICAgICAgICAgICBpZiAoIWxhc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IG5vZGU6IHBhcmVudE5vZGUsIG9mZnNldDogMCB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICByZXR1cm4geyBub2RlOiBsYXN0Q2hpbGQsIG9mZnNldDogdGhpcy50cnVlTGVuZ3RoKGRvbSwgbGFzdENoaWxkLnRleHRDb250ZW50KSB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhc3RDaGlsZCA9IGNoaWxkXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBURVhUX05PREU6XG4gICAgICAgIGNhc2UgQ0RBVEFfU0VDVElPTl9OT0RFOlxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdURVhUJylcbiAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBmaXJzdCBub2RlIG9yIHRoZSBwcmV2aW91cyBub2RlIHdhcyBhbiBlbGVtZW50IG5vZGVcbiAgICAgICAgICBpZiAoY2ZpQ291bnQgPT09IDAgfHwgY2ZpQ291bnQgJSAyID09PSAwKSB7XG4gICAgICAgICAgICBjZmlDb3VudCArPSAxXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIHByZXZpb3VzIG5vZGUgd2FzIGEgdGV4dCBub2RlIHRoZW4gdGhleSBzaG91bGQgYmUgY29tYmluZWRcbiAgICAgICAgICAgIC8vIHNvIHdlIGNvdW50IHRoZW0gYXMgb25lLCBtZWFuaW5nIHdlIGRvbid0IGluY3JlbWVudCB0aGUgY291bnRcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2ZpQ291bnQgPT09IGluZGV4KSB7XG4gICAgICAgICAgICAvLyBJZiBvZmZzZXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdGV4dCBub2RlXG4gICAgICAgICAgICAvLyB0aGVuIHdlIGFzc3VtZSB0aGF0IHRoZSBuZXh0IG5vZGUgd2lsbCBhbHNvIGJlIGEgdGV4dCBub2RlXG4gICAgICAgICAgICAvLyBhbmQgdGhhdCB3ZSdsbCBiZSBjb21iaW5pbmcgdGhlbSB3aXRoIHRoZSBjdXJyZW50IG5vZGVcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IHRydWVMZW5ndGggPSB0aGlzLnRydWVMZW5ndGgoZG9tLCBjaGlsZC50ZXh0Q29udGVudClcblxuICAgICAgICAgICAgaWYgKG9mZnNldCA+PSB0cnVlTGVuZ3RoKSB7XG4gICAgICAgICAgICAgIG9mZnNldCAtPSB0cnVlTGVuZ3RoXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4geyBub2RlOiBjaGlsZCwgb2Zmc2V0OiBvZmZzZXQgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBsYXN0Q2hpbGQgPSBjaGlsZFxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZyhsYXN0Q2hpbGQsIGluZGV4LCBjZmlDb3VudClcblxuICAgIC8vIGluZGV4IGlzIHBvaW50aW5nIHRvIHRoZSB2aXJ0dWFsIG5vZGUgYWZ0ZXIgdGhlIGxhc3QgY2hpbGRcbiAgICAvLyBhcyBkZWZpbmVkIGluIHRoZSBDRkkgc3BlY1xuICAgIGlmIChpbmRleCA+IGNmaUNvdW50KSB7XG4gICAgICBjb25zdCBvID0geyByZWxhdGl2ZVRvTm9kZTogYGFmdGVyYCwgb2Zmc2V0OiAwIH1cbiAgICAgIGlmICghbGFzdENoaWxkKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgby5ub2RlID0gcGFyZW50Tm9kZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBvLm5vZGUgPSBsYXN0Q2hpbGRcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmICh0aGlzLmlzVGV4dE5vZGUoby5ub2RlKSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIG8ub2Zmc2V0ID0gdGhpcy50cnVlTGVuZ3RoKGRvbSwgby5ub2RlLnRleHRDb250ZW50Lmxlbmd0aClcbiAgICAgIH1cbiAgICAgIHJldHVybiBvXG4gICAgfVxuICB9XG5cbiAgaXNUZXh0Tm9kZSAobm9kZTogRWxlbWVudCkge1xuICAgIGlmICghbm9kZSkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IFRFWFRfTk9ERSB8fCBub2RlLm5vZGVUeXBlID09PSBDREFUQV9TRUNUSU9OX05PREUpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gVXNlIGEgVGV4dCBMb2NhdGlvbiBBc3NlcnRpb24gdG8gY29ycmVjdCBhbmQgb2Zmc2V0XG4gIGNvcnJlY3RPZmZzZXQgKGRvbTogRG9jdW1lbnQsIG5vZGU6IEVsZW1lbnQsIG9mZnNldDogbnVtYmVyLCBhc3NlcnRpb246IGFueSkge1xuICAgIGxldCBjdXJOb2RlID0gbm9kZVxuICAgIGxldCBtYXRjaFN0cjogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgICBpZiAodHlwZW9mIGFzc2VydGlvbiA9PT0gYHN0cmluZ2ApIHtcbiAgICAgIG1hdGNoU3RyID0gdGhpcy5kZWNvZGVFbnRpdGllcyhkb20sIGFzc2VydGlvbilcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0aW9uLnByZSA9IHRoaXMuZGVjb2RlRW50aXRpZXMoZG9tLCBhc3NlcnRpb24ucHJlKVxuICAgICAgYXNzZXJ0aW9uLnBvc3QgPSB0aGlzLmRlY29kZUVudGl0aWVzKGRvbSwgYXNzZXJ0aW9uLnBvc3QpXG4gICAgICBtYXRjaFN0ciA9IGFzc2VydGlvbi5wcmUgKyBgLmAgKyBhc3NlcnRpb24ucG9zdFxuICAgIH1cblxuICAgIGlmICghKHRoaXMuaXNUZXh0Tm9kZShub2RlKSkpIHtcbiAgICAgIHJldHVybiB7IG5vZGUsIG9mZnNldDogMCB9XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHdoaWxlICh0aGlzLmlzVGV4dE5vZGUoY3VyTm9kZS5wcmV2aW91c1NpYmxpbmcpKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjdXJOb2RlID0gY3VyTm9kZS5wcmV2aW91c1NpYmxpbmdcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydE5vZGUgPSBjdXJOb2RlXG4gICAgbGV0IHN0clxuICAgIGNvbnN0IG5vZGVMZW5ndGhzID0gW11cbiAgICBsZXQgdHh0ID0gYGBcbiAgICBsZXQgaSA9IDBcbiAgICB3aGlsZSAodGhpcy5pc1RleHROb2RlKGN1ck5vZGUpKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBzdHIgPSB0aGlzLmRlY29kZUVudGl0aWVzKGRvbSwgY3VyTm9kZS50ZXh0Q29udGVudClcbiAgICAgIG5vZGVMZW5ndGhzW2ldID0gc3RyLmxlbmd0aFxuICAgICAgdHh0ICs9IHN0clxuXG4gICAgICBpZiAoIWN1ck5vZGUubmV4dFNpYmxpbmcpIGJyZWFrXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjdXJOb2RlID0gY3VyTm9kZS5uZXh0U2libGluZ1xuICAgICAgaSsrXG4gICAgfVxuXG4gICAgLy8gRmluZCBhbGwgbWF0Y2hlcyB0byB0aGUgVGV4dCBMb2NhdGlvbiBBc3NlcnRpb25cbiAgICBjb25zdCBtYXRjaE9mZnNldCA9IChhc3NlcnRpb24ucHJlKSA/IGFzc2VydGlvbi5wcmUubGVuZ3RoIDogMFxuICAgIGNvbnN0IG0gPSBtYXRjaEFsbCh0eHQsIG5ldyBSZWdFeHAobWF0Y2hTdHIpLCBtYXRjaE9mZnNldClcbiAgICBpZiAoIW0ubGVuZ3RoKSByZXR1cm4geyBub2RlLCBvZmZzZXQgfVxuXG4gICAgLy8gR2V0IHRoZSBtYXRjaCB0aGF0IGhhcyB0aGUgY2xvc2VzdCBvZmZzZXQgdG8gdGhlIGV4aXN0aW5nIG9mZnNldFxuICAgIGxldCBuZXdPZmZzZXQgPSBjbG9zZXN0KG0sIG9mZnNldClcblxuICAgIGlmIChjdXJOb2RlID09PSBub2RlICYmIG5ld09mZnNldCA9PT0gb2Zmc2V0KSB7XG4gICAgICByZXR1cm4geyBub2RlLCBvZmZzZXQgfVxuICAgIH1cblxuICAgIGkgPSAwXG4gICAgY3VyTm9kZSA9IHN0YXJ0Tm9kZVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB3aGlsZSAobmV3T2Zmc2V0ID49IG5vZGVMZW5ndGhzW2ldKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBuZXdPZmZzZXQgLT0gbm9kZUxlbmd0aHNbaV1cbiAgICAgIGlmIChuZXdPZmZzZXQgPCAwKSByZXR1cm4geyBub2RlLCBvZmZzZXQgfVxuXG4gICAgICBjb25zdCBub2RlT2Zmc2V0cyA9IFtdIC8vIGFkZGVkIGJlY2F1c2Ugb3JpZ2luYWwgY29kZSBoYXMgbm9kZU9mZnNldHMgdW5kZWZpbmVkLiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mcmVhZC1pbmsvZXB1Yi1jZmktcmVzb2x2ZXIvYmxvYi9tYXN0ZXIvaW5kZXguanMjTDgyNlxuXG4gICAgICBpZiAoIWN1ck5vZGUubmV4dFNpYmxpbmcgfHwgaSArIDEgPj0gbm9kZU9mZnNldHMubGVuZ3RoKSByZXR1cm4geyBub2RlLCBvZmZzZXQgfVxuICAgICAgaSsrXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjdXJOb2RlID0gY3VyTm9kZS5uZXh0U2libGluZ1xuICAgIH1cblxuICAgIHJldHVybiB7IG5vZGU6IGN1ck5vZGUsIG9mZnNldDogbmV3T2Zmc2V0IH1cbiAgfVxuXG4gIHJlc29sdmVOb2RlIChpbmRleDogbnVtYmVyLCBzdWJwYXJ0czogeyBub2RlSW5kZXg6IG51bWJlciwgbm9kZUlEPzogc3RyaW5nLCBvZmZzZXQ/OiBudW1iZXIgfVtdLCBkb206IERvY3VtZW50LCBvcHRzOiB7fSkge1xuICAgIG9wdHMgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRzIHx8IHt9KVxuICAgIGlmICghZG9tKSB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgRE9NIGFyZ3VtZW50YClcblxuICAgIC8vIFRyYXZlcnNlIGJhY2t3YXJkcyB1bnRpbCBhIHN1YnBhcnQgd2l0aCBhIHZhbGlkIElEIGlzIGZvdW5kXG4gICAgLy8gb3IgdGhlIGZpcnN0IHN1YnBhcnQgaXMgcmVhY2hlZFxuICAgIGxldCBzdGFydE5vZGVcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHN0YXJ0Tm9kZSA9IGRvbS5xdWVyeVNlbGVjdG9yKGBwYWNrYWdlYClcbiAgICB9XG5cbiAgICBpZiAoIXN0YXJ0Tm9kZSkge1xuICAgICAgZm9yIChjb25zdCBuIG9mIGRvbS5jaGlsZE5vZGVzKSB7XG4gICAgICAgIGlmIChuLm5vZGVUeXBlID09PSBFTEVNRU5UX05PREUpIHtcbiAgICAgICAgICAvLyBpZiAobi5ub2RlVHlwZSA9PT0gTm9kZS5ET0NVTUVOVF9OT0RFKSB7XG4gICAgICAgICAgc3RhcnROb2RlID0gblxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjdXN0b21cbiAgICBzdGFydE5vZGUgPSBkb21cblxuICAgIC8vIGRlYnVnZ2VyXG4gICAgaWYgKCFzdGFydE5vZGUpIHRocm93IG5ldyBFcnJvcihgRG9jdW1lbnQgaW5jb21wYXRpYmxlIHdpdGggQ0ZJc2ApXG5cbiAgICBsZXQgbm9kZSA9IHN0YXJ0Tm9kZVxuICAgIGxldCBzdGFydEZyb20gPSAwXG4gICAgbGV0IGlcbiAgICBsZXQgc3VicGFydDogdHlwZW9mIHN1YnBhcnRzW251bWJlcl0gfCB1bmRlZmluZWRcbiAgICBmb3IgKGkgPSBzdWJwYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgc3VicGFydCA9IHN1YnBhcnRzW2ldXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAoIW9wdHMuaWdub3JlSURzICYmIHN1YnBhcnQubm9kZUlEICYmIChub2RlID0gZG9tLmdldEVsZW1lbnRCeUlkKHN1YnBhcnQubm9kZUlEKSkpIHtcbiAgICAgICAgc3RhcnRGcm9tID0gaSArIDFcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZyhzdGFydE5vZGUsIHN0YXJ0RnJvbSlcblxuICAgIGlmICghbm9kZSkge1xuICAgICAgbm9kZSA9IHN0YXJ0Tm9kZVxuICAgIH1cblxuICAgIGxldCBvID0geyBub2RlLCBvZmZzZXQ6IDAgfVxuXG4gICAgbGV0IG5vZGVJbmRleFxuICAgIGZvciAoaSA9IHN0YXJ0RnJvbTsgaSA8IHN1YnBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzdWJwYXJ0ID0gc3VicGFydHNbaV1cblxuICAgICAgaWYgKHN1YnBhcnQpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2cobywgZG9tLCBvLm5vZGUsIHN1YnBhcnQubm9kZUluZGV4LCBzdWJwYXJ0Lm9mZnNldClcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBvID0gdGhpcy5nZXRDaGlsZE5vZGVCeUNGSUluZGV4KGRvbSwgby5ub2RlLCBzdWJwYXJ0Lm5vZGVJbmRleCwgc3VicGFydC5vZmZzZXQpXG5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoc3VicGFydC50ZXh0TG9jYXRpb25Bc3NlcnRpb24pIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhzdWJwYXJ0cywgc3VicGFydCwgbylcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgbyA9IHRoaXMuY29ycmVjdE9mZnNldChkb20sIG8ubm9kZSwgc3VicGFydC5vZmZzZXQsIHN1YnBhcnQudGV4dExvY2F0aW9uQXNzZXJ0aW9uKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9cbiAgfVxuXG4gIC8vIEVhY2ggcGFydCBvZiBhIENGSSAoYXMgc2VwYXJhdGVkIGJ5ICchJylcbiAgLy8gcmVmZXJlbmNlcyBhIHNlcGFyYXRlIEhUTUwvWEhUTUwvWE1MIGRvY3VtZW50LlxuICAvLyBUaGlzIGZ1bmN0aW9uIHRha2VzIGFuIGluZGV4IHNwZWNpZnlpbmcgdGhlIHBhcnRcbiAgLy8gb2YgdGhlIENGSSBhbmQgdGhlIGFwcHJvcHJpYXRlIERvY3VtZW50IG9yIFhNTERvY3VtZW50XG4gIC8vIHRoYXQgaXMgcmVmZXJlbmNlZCBieSB0aGUgc3BlY2lmaWVkIHBhcnQgb2YgdGhlIENGSVxuICAvLyBhbmQgcmV0dXJucyB0aGUgVVJJIGZvciB0aGUgZG9jdW1lbnQgcmVmZXJlbmNlZCBieVxuICAvLyB0aGUgbmV4dCBwYXJ0IG9mIHRoZSBDRklcbiAgLy8gSWYgdGhlIG9wdCBgaWdub3JlSURzYCBpcyB0cnVlIHRoZW4gSURzXG4gIC8vIHdpbGwgbm90IGJlIHVzZWQgd2hpbGUgcmVzb2x2aW5nXG4gIHJlc29sdmVVUkkgKGluZGV4OiBudW1iZXIsIGRvbTogRG9jdW1lbnQsIG9wdHM6IHsgaWdub3JlSURzPzogYm9vbGVhbiB9KSB7XG4gICAgb3B0cyA9IG9wdHMgfHwge31cbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gdGhpcy5wYXJ0cy5sZW5ndGggLSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGluZGV4IGlzIG91dCBvZiBib3VuZHNgKVxuICAgIH1cblxuICAgIGNvbnN0IHN1YnBhcnRzID0gdGhpcy5wYXJ0c1tpbmRleF1cbiAgICBpZiAoIXN1YnBhcnRzKSB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgQ0ZJIHBhcnQgZm9yIGluZGV4OiBgICsgaW5kZXgpXG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbyA9IHRoaXMucmVzb2x2ZU5vZGUoaW5kZXgsIHN1YnBhcnRzLCBkb20sIG9wdHMpXG4gICAgLy8gZGVidWdnZXJcbiAgICBsZXQgbm9kZSA9IG8ubm9kZVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHRhZ05hbWUgPSBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKVxuICAgIGlmICh0YWdOYW1lID09PSBgaXRlbXJlZmAgJiZcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5vZGUucGFyZW50Tm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IGBzcGluZWApIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGlkcmVmID0gbm9kZS5nZXRBdHRyaWJ1dGUoYGlkcmVmYClcbiAgICAgIGlmICghaWRyZWYpIHRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlZCBub2RlIGhhZCBub3QgJ2lkcmVmJyBhdHRyaWJ1dGVgKVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbm9kZSA9IGRvbS5nZXRFbGVtZW50QnlJZChpZHJlZilcbiAgICAgIGlmICghbm9kZSkgdGhyb3cgbmV3IEVycm9yKGBTcGVjaWZpZWQgbm9kZSBpcyBtaXNzaW5nIGZyb20gbWFuaWZlc3RgKVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgaHJlZiA9IG5vZGUuZ2V0QXR0cmlidXRlKGBocmVmYClcbiAgICAgIGlmICghaHJlZikgdGhyb3cgbmV3IEVycm9yKGBNYW5pZmVzdCBpdGVtIGlzIG1pc3NpbmcgaHJlZiBhdHRyaWJ1dGVgKVxuXG4gICAgICByZXR1cm4gaHJlZlxuICAgIH1cblxuICAgIGlmICh0YWdOYW1lID09PSBgaWZyYW1lYCB8fCB0YWdOYW1lID09PSBgZW1iZWRgKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBzcmMgPSBub2RlLmdldEF0dHJpYnV0ZShgc3JjYClcbiAgICAgIGlmICghc3JjKSB0aHJvdyBuZXcgRXJyb3IodGFnTmFtZSArIGAgZWxlbWVudCBpcyBtaXNzaW5nICdzcmMnIGF0dHJpYnV0ZWApXG4gICAgICByZXR1cm4gc3JjXG4gICAgfVxuXG4gICAgaWYgKHRhZ05hbWUgPT09IGBvYmplY3RgKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBkYXRhID0gbm9kZS5nZXRBdHRyaWJ1dGUoYGRhdGFgKVxuICAgICAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IodGFnTmFtZSArIGAgZWxlbWVudCBpcyBtaXNzaW5nICdkYXRhJyBhdHRyaWJ1dGVgKVxuICAgICAgcmV0dXJuIGRhdGFcbiAgICB9XG5cbiAgICBpZiAodGFnTmFtZSA9PT0gYGltYWdlYCB8fCB0YWdOYW1lID09PSBgdXNlYCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgaHJlZiA9IG5vZGUuZ2V0QXR0cmlidXRlKGB4bGluazpocmVmYClcbiAgICAgIGlmICghaHJlZikgdGhyb3cgbmV3IEVycm9yKHRhZ05hbWUgKyBgIGVsZW1lbnQgaXMgbWlzc2luZyAneGxpbms6aHJlZicgYXR0cmlidXRlYClcbiAgICAgIHJldHVybiBocmVmXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyBVUkkgZm91bmRgKVxuICB9XG5cbiAgZGVlcENsb25lIChvOiBhbnkpIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvKSlcbiAgfVxuXG4gIHJlc29sdmVMb2NhdGlvbiAoZG9tOiBEb2N1bWVudCwgcGFydHM6IHt9W10pIHtcbiAgICBjb25zdCBpbmRleCA9IHBhcnRzLmxlbmd0aCAtIDFcbiAgICBjb25zdCBzdWJwYXJ0cyA9IHBhcnRzW2luZGV4XVxuICAgIGlmICghc3VicGFydHMpIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBDRkkgcGFydCBmb3IgaW5kZXg6IGAgKyBpbmRleClcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBvID0gdGhpcy5yZXNvbHZlTm9kZShpbmRleCwgc3VicGFydHMsIGRvbSlcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBsYXN0UGFydCA9IHRoaXMuZGVlcENsb25lKHN1YnBhcnRzW3N1YnBhcnRzLmxlbmd0aCAtIDFdKVxuXG4gICAgZGVsZXRlIGxhc3RQYXJ0Lm5vZGVJbmRleFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIWxhc3RQYXJ0Lm9mZnNldCkgZGVsZXRlIG8ub2Zmc2V0XG5cbiAgICByZXR1cm4geyAuLi5sYXN0UGFydCwgLi4ubyB9XG4gIH1cblxuICAvLyBUYWtlcyB0aGUgRG9jdW1lbnQgb3IgWE1MRG9jdW1lbnQgZm9yIHRoZSBmaW5hbFxuICAvLyBkb2N1bWVudCByZWZlcmVuY2VkIGJ5IHRoZSBDRklcbiAgLy8gYW5kIHJldHVybnMgdGhlIG5vZGUgYW5kIG9mZnNldCBpbnRvIHRoYXQgbm9kZVxuICByZXNvbHZlTGFzdCAoZG9tOiBEb2N1bWVudCwgb3B0czoge30pOiBzdHJpbmcgfCB7fSB7XG4gICAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgcmFuZ2U6IGZhbHNlXG4gICAgfSwgb3B0cyB8fCB7fSlcblxuICAgIGlmICghdGhpcy5pc1JhbmdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvbHZlTG9jYXRpb24oZG9tLCB0aGlzLnBhcnRzKVxuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAob3B0cy5yYW5nZSkge1xuICAgICAgY29uc3QgcmFuZ2UgPSBkb20uY3JlYXRlUmFuZ2UoKVxuICAgICAgY29uc3QgZnJvbSA9IHRoaXMuZ2V0RnJvbSgpXG4gICAgICBpZiAoZnJvbS5yZWxhdGl2ZVRvTm9kZSA9PT0gYGJlZm9yZWApIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByYW5nZS5zZXRTdGFydEJlZm9yZShmcm9tLm5vZGUsIGZyb20ub2Zmc2V0KVxuICAgICAgfSBlbHNlIGlmIChmcm9tLnJlbGF0aXZlVG9Ob2RlID09PSBgYWZ0ZXJgKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmFuZ2Uuc2V0U3RhcnRBZnRlcihmcm9tLm5vZGUsIGZyb20ub2Zmc2V0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmFuZ2Uuc2V0U3RhcnQoZnJvbS5ub2RlLCBmcm9tLm9mZnNldClcbiAgICAgIH1cblxuICAgICAgY29uc3QgdG8gPSB0aGlzLmdldFRvKClcbiAgICAgIGlmICh0by5yZWxhdGl2ZVRvTm9kZSA9PT0gYGJlZm9yZWApIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByYW5nZS5zZXRFbmRCZWZvcmUodG8ubm9kZSwgdG8ub2Zmc2V0KVxuICAgICAgfSBlbHNlIGlmICh0by5yZWxhdGl2ZVRvTm9kZSA9PT0gYGFmdGVyYCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJhbmdlLnNldEVuZEFmdGVyKHRvLm5vZGUsIHRvLm9mZnNldClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJhbmdlLnNldEVuZCh0by5ub2RlLCB0by5vZmZzZXQpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByYW5nZVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBmcm9tOiB0aGlzLnJlc29sdmVMb2NhdGlvbihkb20sIHRoaXMuZ2V0RnJvbSgpKSxcbiAgICAgIHRvOiB0aGlzLnJlc29sdmVMb2NhdGlvbihkb20sIHRoaXMuZ2V0VG8oKSksXG4gICAgICBpc1JhbmdlOiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmVzb2x2ZSAoZG9jOiBEb2N1bWVudCwgb3B0czoge30pOiB7IG5vZGU6IE5vZGUsIG9mZnNldD86IG51bWJlciB9IHwgeyBub2RlPzogdW5kZWZpbmVkLCBvZmZzZXQ/OiBudW1iZXIgfSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB0aGlzLnJlc29sdmVMYXN0KGRvYywgb3B0cylcbiAgfVxufVxuXG5leHBvcnQge1xuICBDRklcbn1cblxuZXhwb3J0IGNvbnN0IGV4dHJhY3RQcm9zZU1ldGFkYXRhRnJvbUNmaSA9IChjZmk6IHN0cmluZyk6IHtcbiAgY2xlYW5lZENmaTogc3RyaW5nLFxuICBpdGVtSWQ/OiBzdHJpbmdcbiAgb2Zmc2V0PzogbnVtYmVyXG59ID0+IHtcbiAgY29uc3QgW2l0ZW1JZF0gPSBjZmlcbiAgICAubWF0Y2goL1xcfChcXFtwcm9zZVxcfmFuY2hvclteXFxdXSpcXF0pKy9pZylcbiAgICA/Lm1hcChzID0+IHMucmVwbGFjZSgvXFx8XFxbcHJvc2VcXH5hbmNob3JcXH4vLCBgYClcbiAgICAgIC5yZXBsYWNlKC9cXF0vLCBgYCkpIHx8IFtdXG4gIGNvbnN0IFtvZmZzZXRdID0gY2ZpXG4gICAgLm1hdGNoKC9cXHwoXFxbcHJvc2VcXH5vZmZzZXRbXlxcXV0qXFxdKSsvaWcpXG4gICAgPy5tYXAocyA9PiBzLnJlcGxhY2UoL1xcfFxcW3Byb3NlXFx+b2Zmc2V0XFx+LywgYGApXG4gICAgICAucmVwbGFjZSgvXFxdLywgYGApKSB8fCBbXVxuICBjb25zdCBjbGVhbmVkQ2ZpID0gY2ZpLnJlcGxhY2UoL1xcfChcXFtwcm9zZVxcflteXFxdXSpcXH5bXlxcXV0qXFxdKSsvaWcsIGBgKVxuICBjb25zdCBmb3VuZE9mZnNldCA9IHBhcnNlSW50KG9mZnNldCB8fCBgYClcblxuICByZXR1cm4ge1xuICAgIGNsZWFuZWRDZmksXG4gICAgaXRlbUlkOiBpdGVtSWQgPyBkZWNvZGVVUklDb21wb25lbnQoaXRlbUlkKSA6IGl0ZW1JZCxcbiAgICBvZmZzZXQ6IGlzTmFOKGZvdW5kT2Zmc2V0KSA/IHVuZGVmaW5lZCA6IGZvdW5kT2Zmc2V0XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/cfi.ts\n");
|
|
20
|
+
|
|
21
|
+
/***/ }),
|
|
22
|
+
|
|
23
|
+
/***/ "./src/constants.ts":
|
|
24
|
+
/*!**************************!*\
|
|
25
|
+
!*** ./src/constants.ts ***!
|
|
26
|
+
\**************************/
|
|
27
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
28
|
+
|
|
29
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"__UNSAFE_REFERENCE_ORIGINAL_IFRAME_EVENT_KEY\": () => (/* binding */ __UNSAFE_REFERENCE_ORIGINAL_IFRAME_EVENT_KEY),\n/* harmony export */ \"PROSE_READER_NAMESPACE\": () => (/* binding */ PROSE_READER_NAMESPACE),\n/* harmony export */ \"VIEWPORT_ADJUSTMENT_THROTTLE\": () => (/* binding */ VIEWPORT_ADJUSTMENT_THROTTLE),\n/* harmony export */ \"PAGINATION_UPDATE_AFTER_VIEWPORT_ADJUSTMENT_DEBOUNCE\": () => (/* binding */ PAGINATION_UPDATE_AFTER_VIEWPORT_ADJUSTMENT_DEBOUNCE),\n/* harmony export */ \"ITEM_EXTENSION_VALID_FOR_FRAME_SRC\": () => (/* binding */ ITEM_EXTENSION_VALID_FOR_FRAME_SRC)\n/* harmony export */ });\nconst __UNSAFE_REFERENCE_ORIGINAL_IFRAME_EVENT_KEY = `__UNSAFE_REFERENCE_ORIGINAL_IFRAME_EVENT`;\nconst PROSE_READER_NAMESPACE = `@prose-reader/core`;\nconst VIEWPORT_ADJUSTMENT_THROTTLE = 0;\nconst PAGINATION_UPDATE_AFTER_VIEWPORT_ADJUSTMENT_DEBOUNCE = 200;\nconst ITEM_EXTENSION_VALID_FOR_FRAME_SRC = [`.xhtml`, `.html`, `.htm`];\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY29uc3RhbnRzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQU8sTUFBTSw0Q0FBNEMsR0FBRywwQ0FBMEM7QUFDL0YsTUFBTSxzQkFBc0IsR0FBRyxvQkFBb0I7QUFDbkQsTUFBTSw0QkFBNEIsR0FBRyxDQUFDO0FBQ3RDLE1BQU0sb0RBQW9ELEdBQUcsR0FBRztBQUNoRSxNQUFNLGtDQUFrQyxHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvY29uc3RhbnRzLnRzPzg1ZWUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IF9fVU5TQUZFX1JFRkVSRU5DRV9PUklHSU5BTF9JRlJBTUVfRVZFTlRfS0VZID0gYF9fVU5TQUZFX1JFRkVSRU5DRV9PUklHSU5BTF9JRlJBTUVfRVZFTlRgXG5leHBvcnQgY29uc3QgUFJPU0VfUkVBREVSX05BTUVTUEFDRSA9IGBAcHJvc2UtcmVhZGVyL2NvcmVgXG5leHBvcnQgY29uc3QgVklFV1BPUlRfQURKVVNUTUVOVF9USFJPVFRMRSA9IDBcbmV4cG9ydCBjb25zdCBQQUdJTkFUSU9OX1VQREFURV9BRlRFUl9WSUVXUE9SVF9BREpVU1RNRU5UX0RFQk9VTkNFID0gMjAwXG5leHBvcnQgY29uc3QgSVRFTV9FWFRFTlNJT05fVkFMSURfRk9SX0ZSQU1FX1NSQyA9IFtgLnhodG1sYCwgYC5odG1sYCwgYC5odG1gXVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/constants.ts\n");
|
|
30
|
+
|
|
31
|
+
/***/ }),
|
|
32
|
+
|
|
33
|
+
/***/ "./src/context.ts":
|
|
34
|
+
/*!************************!*\
|
|
35
|
+
!*** ./src/context.ts ***!
|
|
36
|
+
\************************/
|
|
37
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
38
|
+
|
|
39
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createContext\": () => (/* binding */ createContext)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settings */ \"./src/settings.ts\");\n\n\n\nconst createContext = (initialSettings) => {\n let manifest;\n let loadOptions;\n const hasVerticalWritingSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject(false);\n const loadSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const visibleAreaRect = {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n const horizontalMargin = 24;\n const verticalMargin = 20;\n const marginTop = 0;\n const marginBottom = 0;\n const destroy$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const settings = (0,_settings__WEBPACK_IMPORTED_MODULE_2__.createSettings)(initialSettings);\n const shouldDisplaySpread = () => {\n const { height, width } = visibleAreaRect;\n const isLandscape = width > height;\n if (settings.getSettings().forceSinglePageMode)\n return false;\n if ((manifest === null || manifest === void 0 ? void 0 : manifest.renditionFlow) === `scrolled-continuous`)\n return false;\n if (!isLandscape && (manifest === null || manifest === void 0 ? void 0 : manifest.renditionSpread) === `portrait`) {\n return true;\n }\n return (isLandscape &&\n ((manifest === null || manifest === void 0 ? void 0 : manifest.renditionSpread) === undefined ||\n (manifest === null || manifest === void 0 ? void 0 : manifest.renditionSpread) === `auto` ||\n (manifest === null || manifest === void 0 ? void 0 : manifest.renditionSpread) === `landscape` ||\n (manifest === null || manifest === void 0 ? void 0 : manifest.renditionSpread) === `both`));\n };\n const load = (newManifest, newLoadOptions) => {\n manifest = newManifest;\n loadOptions = newLoadOptions;\n settings.recompute({ manifest, hasVerticalWritingSubject: hasVerticalWritingSubject$.value });\n loadSubject$.next(newManifest);\n };\n const isRTL = () => {\n return (manifest === null || manifest === void 0 ? void 0 : manifest.readingDirection) === `rtl`;\n };\n const setHasVerticalWriting = () => hasVerticalWritingSubject$.next(true);\n hasVerticalWritingSubject$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.skip)(1), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.distinctUntilChanged)(), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)(() => {\n settings.recompute({ manifest, hasVerticalWritingSubject: hasVerticalWritingSubject$.value });\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(destroy$))\n .subscribe();\n const destroy = () => {\n settings.destroy();\n loadSubject$.complete();\n destroy$.next();\n destroy$.complete();\n hasVerticalWritingSubject$.complete();\n };\n return {\n load,\n isRTL,\n areAllItemsPrePaginated: () => areAllItemsPrePaginated(manifest),\n destroy,\n getLoadOptions: () => loadOptions,\n getCalculatedInnerMargin: () => 0,\n getVisibleAreaRect: () => visibleAreaRect,\n shouldDisplaySpread,\n setHasVerticalWriting,\n setVisibleAreaRect: (x, y, width, height) => {\n visibleAreaRect.width = width;\n visibleAreaRect.height = height - marginTop - marginBottom;\n visibleAreaRect.x = x;\n visibleAreaRect.y = y;\n },\n getManifest: () => manifest,\n getReadingDirection: () => manifest === null || manifest === void 0 ? void 0 : manifest.readingDirection,\n getPageSize: () => {\n return {\n width: shouldDisplaySpread()\n ? visibleAreaRect.width / 2\n : visibleAreaRect.width,\n height: visibleAreaRect.height\n };\n },\n getSettings: settings.getSettings,\n setSettings: (data) => settings.setSettings(data, {\n hasVerticalWritingSubject: hasVerticalWritingSubject$.value,\n manifest\n }),\n $: {\n hasVerticalWriting$: hasVerticalWritingSubject$\n .asObservable()\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.distinctUntilChanged)()),\n destroy$: destroy$\n .asObservable(),\n settings$: settings.$.settings$,\n load$: loadSubject$\n .asObservable()\n }\n };\n};\nconst areAllItemsPrePaginated = (manifest) => !(manifest === null || manifest === void 0 ? void 0 : manifest.spineItems.some(item => item.renditionLayout === `reflowable`));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LENBQUMsV0FBVztRQUNqQyxXQUFXLEVBQUUsQ0FBQyxJQUFnRCxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRTtZQUM1Rix5QkFBeUIsRUFBRSwwQkFBMEIsQ0FBQyxLQUFLO1lBQzNELFFBQVE7U0FDVCxDQUFDO1FBQ0YsQ0FBQyxFQUFFO1lBQ0QsbUJBQW1CLEVBQUUsMEJBQTBCO2lCQUM1QyxZQUFZLEVBQUU7aUJBQ2QsSUFBSSxDQUFDLG9FQUFvQixFQUFFLENBQUM7WUFDL0IsUUFBUSxFQUFFLFFBQVE7aUJBQ2YsWUFBWSxFQUFFO1lBQ2pCLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDL0IsS0FBSyxFQUFFLFlBQVk7aUJBQ2hCLFlBQVksRUFBRTtTQUNsQjtLQUNGO0FBQ0gsQ0FBQztBQUlELE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxRQUE4QixFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsS0FBSyxZQUFZLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvY29udGV4dC50cz9hZTE1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwsIHRhcCwgc2tpcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiXG5pbXBvcnQgeyBMb2FkT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCJcbmltcG9ydCB7IE1hbmlmZXN0IH0gZnJvbSBcIkBwcm9zZS1yZWFkZXIvc2hhcmVkXCJcbmltcG9ydCB7IGNyZWF0ZVNldHRpbmdzIH0gZnJvbSBcIi4vc2V0dGluZ3NcIlxuXG5leHBvcnQgdHlwZSBDb250ZXh0T2JzZXJ2YWJsZUV2ZW50cyA9IHt9XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb250ZXh0ID0gKGluaXRpYWxTZXR0aW5nczogUGFyYW1ldGVyczx0eXBlb2YgY3JlYXRlU2V0dGluZ3M+WzBdKSA9PiB7XG4gIGxldCBtYW5pZmVzdDogTWFuaWZlc3QgfCB1bmRlZmluZWRcbiAgbGV0IGxvYWRPcHRpb25zOiBMb2FkT3B0aW9ucyB8IHVuZGVmaW5lZFxuICBjb25zdCBoYXNWZXJ0aWNhbFdyaXRpbmdTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpXG4gIGNvbnN0IGxvYWRTdWJqZWN0JCA9IG5ldyBTdWJqZWN0PE1hbmlmZXN0PigpXG4gIGNvbnN0IHZpc2libGVBcmVhUmVjdCA9IHtcbiAgICB3aWR0aDogMCxcbiAgICBoZWlnaHQ6IDAsXG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH1cbiAgY29uc3QgaG9yaXpvbnRhbE1hcmdpbiA9IDI0XG4gIGNvbnN0IHZlcnRpY2FsTWFyZ2luID0gMjBcbiAgY29uc3QgbWFyZ2luVG9wID0gMFxuICBjb25zdCBtYXJnaW5Cb3R0b20gPSAwXG4gIGNvbnN0IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuICBjb25zdCBzZXR0aW5ncyA9IGNyZWF0ZVNldHRpbmdzKGluaXRpYWxTZXR0aW5ncylcblxuICAvKipcbiAgICogR2xvYmFsIHNwcmVhZCBiZWhhdmlvclxuICAgKiBAc2VlIGh0dHA6Ly9pZHBmLm9yZy9lcHViL2Z4bC8jcHJvcGVydHktc3ByZWFkXG4gICAqIEB0b2RvIHVzZXIgc2V0dGluZ1xuICAgKi9cbiAgY29uc3Qgc2hvdWxkRGlzcGxheVNwcmVhZCA9ICgpID0+IHtcbiAgICBjb25zdCB7IGhlaWdodCwgd2lkdGggfSA9IHZpc2libGVBcmVhUmVjdFxuICAgIGNvbnN0IGlzTGFuZHNjYXBlID0gd2lkdGggPiBoZWlnaHRcblxuICAgIGlmIChzZXR0aW5ncy5nZXRTZXR0aW5ncygpLmZvcmNlU2luZ2xlUGFnZU1vZGUpIHJldHVybiBmYWxzZVxuXG4gICAgLyoqXG4gICAgICogRm9yIG5vdyB3ZSBkb24ndCBzdXBwb3J0IHNwcmVhZCBmb3IgcmVmbG93YWJsZSAmIHNjcm9sbGFibGUgY29udGVudCBzaW5jZVxuICAgICAqIHR3byBpdGVtcyBjb3VsZCBoYXZlIGRpZmZlcmVudCBoZWlnaHQsIHJlc3VsdGluZyBpbiB3ZWlyZCBzdHVmZi5cbiAgICAgKi9cbiAgICBpZiAobWFuaWZlc3Q/LnJlbmRpdGlvbkZsb3cgPT09IGBzY3JvbGxlZC1jb250aW51b3VzYCkgcmV0dXJuIGZhbHNlXG5cbiAgICAvLyBwb3J0cmFpdCBvbmx5XG4gICAgaWYgKCFpc0xhbmRzY2FwZSAmJiBtYW5pZmVzdD8ucmVuZGl0aW9uU3ByZWFkID09PSBgcG9ydHJhaXRgKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIGRlZmF1bHQgYXV0byBiZWhhdmlvclxuICAgIHJldHVybiAoXG4gICAgICBpc0xhbmRzY2FwZSAmJlxuICAgICAgKFxuICAgICAgICBtYW5pZmVzdD8ucmVuZGl0aW9uU3ByZWFkID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgbWFuaWZlc3Q/LnJlbmRpdGlvblNwcmVhZCA9PT0gYGF1dG9gIHx8XG4gICAgICAgIG1hbmlmZXN0Py5yZW5kaXRpb25TcHJlYWQgPT09IGBsYW5kc2NhcGVgIHx8XG4gICAgICAgIG1hbmlmZXN0Py5yZW5kaXRpb25TcHJlYWQgPT09IGBib3RoYFxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGxvYWQgPSAobmV3TWFuaWZlc3Q6IE1hbmlmZXN0LCBuZXdMb2FkT3B0aW9uczogTG9hZE9wdGlvbnMpID0+IHtcbiAgICBtYW5pZmVzdCA9IG5ld01hbmlmZXN0XG4gICAgbG9hZE9wdGlvbnMgPSBuZXdMb2FkT3B0aW9uc1xuXG4gICAgc2V0dGluZ3MucmVjb21wdXRlKHsgbWFuaWZlc3QsIGhhc1ZlcnRpY2FsV3JpdGluZ1N1YmplY3Q6IGhhc1ZlcnRpY2FsV3JpdGluZ1N1YmplY3QkLnZhbHVlIH0pXG5cbiAgICBsb2FkU3ViamVjdCQubmV4dChuZXdNYW5pZmVzdClcbiAgfVxuXG4gIC8qKlxuICAgKiBSVEwgb25seSBtYWtlcyBzZW5zZSBmb3IgaG9yaXpvbnRhbCBzY3JvbGxpbmdcbiAgICovXG4gIGNvbnN0IGlzUlRMID0gKCkgPT4ge1xuICAgIHJldHVybiBtYW5pZmVzdD8ucmVhZGluZ0RpcmVjdGlvbiA9PT0gYHJ0bGBcbiAgfVxuXG4gIGNvbnN0IHNldEhhc1ZlcnRpY2FsV3JpdGluZyA9ICgpID0+IGhhc1ZlcnRpY2FsV3JpdGluZ1N1YmplY3QkLm5leHQodHJ1ZSlcblxuICAvKipcbiAgICogU29tZSBiZWhhdmlvciBtYXkgdHJpZ2dlciBzZXR0aW5ncyB0byBjaGFuZ2VcbiAgICovXG4gIGhhc1ZlcnRpY2FsV3JpdGluZ1N1YmplY3QkXG4gICAgLnBpcGUoXG4gICAgICBza2lwKDEpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHNldHRpbmdzLnJlY29tcHV0ZSh7IG1hbmlmZXN0LCBoYXNWZXJ0aWNhbFdyaXRpbmdTdWJqZWN0OiBoYXNWZXJ0aWNhbFdyaXRpbmdTdWJqZWN0JC52YWx1ZSB9KVxuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwoZGVzdHJveSQpXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKVxuXG4gIGNvbnN0IGRlc3Ryb3kgPSAoKSA9PiB7XG4gICAgc2V0dGluZ3MuZGVzdHJveSgpXG4gICAgbG9hZFN1YmplY3QkLmNvbXBsZXRlKClcbiAgICBkZXN0cm95JC5uZXh0KClcbiAgICBkZXN0cm95JC5jb21wbGV0ZSgpXG4gICAgaGFzVmVydGljYWxXcml0aW5nU3ViamVjdCQuY29tcGxldGUoKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsb2FkLFxuICAgIGlzUlRMLFxuICAgIGFyZUFsbEl0ZW1zUHJlUGFnaW5hdGVkOiAoKSA9PiBhcmVBbGxJdGVtc1ByZVBhZ2luYXRlZChtYW5pZmVzdCksXG4gICAgZGVzdHJveSxcbiAgICBnZXRMb2FkT3B0aW9uczogKCkgPT4gbG9hZE9wdGlvbnMsXG4gICAgZ2V0Q2FsY3VsYXRlZElubmVyTWFyZ2luOiAoKSA9PiAwLFxuICAgIGdldFZpc2libGVBcmVhUmVjdDogKCkgPT4gdmlzaWJsZUFyZWFSZWN0LFxuICAgIHNob3VsZERpc3BsYXlTcHJlYWQsXG4gICAgc2V0SGFzVmVydGljYWxXcml0aW5nLFxuICAgIHNldFZpc2libGVBcmVhUmVjdDogKFxuICAgICAgeDogbnVtYmVyLFxuICAgICAgeTogbnVtYmVyLFxuICAgICAgd2lkdGg6IG51bWJlcixcbiAgICAgIGhlaWdodDogbnVtYmVyXG4gICAgKSA9PiB7XG4gICAgICAvLyB2aXNpYmxlQXJlYVJlY3Qud2lkdGggPSB3aWR0aCAtIGhvcml6b250YWxNYXJnaW4gKiAyXG4gICAgICB2aXNpYmxlQXJlYVJlY3Qud2lkdGggPSB3aWR0aFxuICAgICAgdmlzaWJsZUFyZWFSZWN0LmhlaWdodCA9IGhlaWdodCAtIG1hcmdpblRvcCAtIG1hcmdpbkJvdHRvbVxuICAgICAgdmlzaWJsZUFyZWFSZWN0LnggPSB4XG4gICAgICB2aXNpYmxlQXJlYVJlY3QueSA9IHlcblxuICAgICAgLy8gaWYgKHRoaXMudXNlQ2hyb21pdW1SdWJ5QnVnU2FmZUlubmVyTWFyZ2luKSB7XG4gICAgICAvLyAgIHRoaXMudmlzaWJsZUFyZWFSZWN0LmhlaWdodCA9XG4gICAgICAvLyAgICAgdGhpcy52aXNpYmxlQXJlYVJlY3QuaGVpZ2h0IC0gdGhpcy5nZXRDYWxjdWxhdGVkSW5uZXJNYXJnaW4oKVxuICAgICAgLy8gfVxuICAgIH0sXG4gICAgZ2V0TWFuaWZlc3Q6ICgpID0+IG1hbmlmZXN0LFxuICAgIGdldFJlYWRpbmdEaXJlY3Rpb246ICgpID0+IG1hbmlmZXN0Py5yZWFkaW5nRGlyZWN0aW9uLFxuICAgIGdldFBhZ2VTaXplOiAoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogc2hvdWxkRGlzcGxheVNwcmVhZCgpXG4gICAgICAgICAgPyB2aXNpYmxlQXJlYVJlY3Qud2lkdGggLyAyXG4gICAgICAgICAgOiB2aXNpYmxlQXJlYVJlY3Qud2lkdGgsXG4gICAgICAgIGhlaWdodDogdmlzaWJsZUFyZWFSZWN0LmhlaWdodFxuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0U2V0dGluZ3M6IHNldHRpbmdzLmdldFNldHRpbmdzLFxuICAgIHNldFNldHRpbmdzOiAoZGF0YTogUGFyYW1ldGVyczx0eXBlb2Ygc2V0dGluZ3Muc2V0U2V0dGluZ3M+WzBdKSA9PiBzZXR0aW5ncy5zZXRTZXR0aW5ncyhkYXRhLCB7XG4gICAgICBoYXNWZXJ0aWNhbFdyaXRpbmdTdWJqZWN0OiBoYXNWZXJ0aWNhbFdyaXRpbmdTdWJqZWN0JC52YWx1ZSxcbiAgICAgIG1hbmlmZXN0XG4gICAgfSksXG4gICAgJDoge1xuICAgICAgaGFzVmVydGljYWxXcml0aW5nJDogaGFzVmVydGljYWxXcml0aW5nU3ViamVjdCRcbiAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgICAgZGVzdHJveSQ6IGRlc3Ryb3kkXG4gICAgICAgIC5hc09ic2VydmFibGUoKSxcbiAgICAgIHNldHRpbmdzJDogc2V0dGluZ3MuJC5zZXR0aW5ncyQsXG4gICAgICBsb2FkJDogbG9hZFN1YmplY3QkXG4gICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBDb250ZXh0ID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQ29udGV4dD5cblxuY29uc3QgYXJlQWxsSXRlbXNQcmVQYWdpbmF0ZWQgPSAobWFuaWZlc3Q6IE1hbmlmZXN0IHwgdW5kZWZpbmVkKSA9PiAhbWFuaWZlc3Q/LnNwaW5lSXRlbXMuc29tZShpdGVtID0+IGl0ZW0ucmVuZGl0aW9uTGF5b3V0ID09PSBgcmVmbG93YWJsZWApXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/context.ts\n");
|
|
40
|
+
|
|
41
|
+
/***/ }),
|
|
42
|
+
|
|
43
|
+
/***/ "./src/createReaderWithEnhancer.ts":
|
|
44
|
+
/*!*****************************************!*\
|
|
45
|
+
!*** ./src/createReaderWithEnhancer.ts ***!
|
|
46
|
+
\*****************************************/
|
|
47
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
48
|
+
|
|
49
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createReaderWithEnhancer\": () => (/* binding */ createReaderWithEnhancer)\n/* harmony export */ });\n/* harmony import */ var _enhancers_chrome__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enhancers/chrome */ \"./src/enhancers/chrome.ts\");\n/* harmony import */ var _enhancers_fonts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enhancers/fonts */ \"./src/enhancers/fonts.ts\");\n/* harmony import */ var _enhancers_hotkeys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./enhancers/hotkeys */ \"./src/enhancers/hotkeys.ts\");\n/* harmony import */ var _enhancers_layoutEnhancer_layoutEnhancer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./enhancers/layoutEnhancer/layoutEnhancer */ \"./src/enhancers/layoutEnhancer/layoutEnhancer.ts\");\n/* harmony import */ var _enhancers_links__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./enhancers/links */ \"./src/enhancers/links.ts\");\n/* harmony import */ var _enhancers_navigation__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./enhancers/navigation */ \"./src/enhancers/navigation.ts\");\n/* harmony import */ var _enhancers_pagination__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./enhancers/pagination */ \"./src/enhancers/pagination.ts\");\n/* harmony import */ var _enhancers_theme__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./enhancers/theme */ \"./src/enhancers/theme.ts\");\n/* harmony import */ var _enhancers_composeEnhancer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./enhancers/composeEnhancer */ \"./src/enhancers/composeEnhancer.ts\");\n/* harmony import */ var _enhancers_zoom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./enhancers/zoom */ \"./src/enhancers/zoom.ts\");\n/* harmony import */ var _reader__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./reader */ \"./src/reader.ts\");\n/* harmony import */ var _enhancers_utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./enhancers/utils */ \"./src/enhancers/utils.ts\");\n/* harmony import */ var _enhancers_resources__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./enhancers/resources */ \"./src/enhancers/resources/index.ts\");\n/* harmony import */ var _enhancers_media__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./enhancers/media */ \"./src/enhancers/media.ts\");\n/* harmony import */ var _enhancers_progression__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./enhancers/progression */ \"./src/enhancers/progression.ts\");\n/* harmony import */ var _enhancers_accessibility__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./enhancers/accessibility */ \"./src/enhancers/accessibility.ts\");\n/* harmony import */ var _enhancers_webkit__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./enhancers/webkit */ \"./src/enhancers/webkit.ts\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst withPublicApiOnly = (reader) => {\n const { context, manipulateContainer, manipulateSpineItems, getFocusedSpineItemIndex, getCurrentNavigationPosition, getSpineItem, locator, getAbsolutePositionOf, generateCfi, resolveCfi, getCfiMetaInformation, spine } = reader, exposedReader = __rest(reader, [\"context\", \"manipulateContainer\", \"manipulateSpineItems\", \"getFocusedSpineItemIndex\", \"getCurrentNavigationPosition\", \"getSpineItem\", \"locator\", \"getAbsolutePositionOf\", \"generateCfi\", \"resolveCfi\", \"getCfiMetaInformation\", \"spine\"]);\n return exposedReader;\n};\nconst internalEnhancer = (0,_enhancers_composeEnhancer__WEBPACK_IMPORTED_MODULE_8__.composeEnhancer)(_enhancers_progression__WEBPACK_IMPORTED_MODULE_14__.progressionEnhancer, _enhancers_pagination__WEBPACK_IMPORTED_MODULE_6__.paginationEnhancer, _enhancers_hotkeys__WEBPACK_IMPORTED_MODULE_2__.hotkeysEnhancer, _enhancers_theme__WEBPACK_IMPORTED_MODULE_7__.themeEnhancer, _enhancers_navigation__WEBPACK_IMPORTED_MODULE_5__.navigationEnhancer, _enhancers_chrome__WEBPACK_IMPORTED_MODULE_0__.chromeEnhancer, _enhancers_media__WEBPACK_IMPORTED_MODULE_13__.mediaEnhancer, _enhancers_zoom__WEBPACK_IMPORTED_MODULE_9__.zoomEnhancer, _enhancers_layoutEnhancer_layoutEnhancer__WEBPACK_IMPORTED_MODULE_3__.layoutEnhancer, _enhancers_utils__WEBPACK_IMPORTED_MODULE_11__.utilsEnhancer, _enhancers_resources__WEBPACK_IMPORTED_MODULE_12__.resourcesEnhancer, _enhancers_accessibility__WEBPACK_IMPORTED_MODULE_15__.accessibilityEnhancer, _enhancers_links__WEBPACK_IMPORTED_MODULE_4__.linksEnhancer, _enhancers_fonts__WEBPACK_IMPORTED_MODULE_1__.fontsEnhancer, _enhancers_webkit__WEBPACK_IMPORTED_MODULE_16__.webkitEnhancer);\nfunction createReaderWithEnhancer(options, enhancer) {\n if (!enhancer) {\n const enhancedCreateReader = internalEnhancer(_reader__WEBPACK_IMPORTED_MODULE_10__.createReader);\n return withPublicApiOnly(enhancedCreateReader(options));\n }\n const finalEnhancer = (0,_enhancers_composeEnhancer__WEBPACK_IMPORTED_MODULE_8__.composeEnhancer)(internalEnhancer, enhancer);\n const enhancedCreateReader = finalEnhancer(_reader__WEBPACK_IMPORTED_MODULE_10__.createReader);\n return withPublicApiOnly(enhancedCreateReader(options));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY3JlYXRlUmVhZGVyV2l0aEVuaGFuY2VyLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQW1EO0FBQ0Y7QUFDSTtBQUNxQjtBQUN6QjtBQUNVO0FBQ0E7QUFDVjtBQUNpRDtBQUVuRDtBQUMyQztBQUN6QztBQUNRO0FBQ1I7QUFDWTtBQUNJO0FBQ2Q7QUFRbkQsTUFBTSxpQkFBaUIsR0FBRyxDQUFzRCxNQUFXLEVBQUUsRUFBRTtJQUM3RixNQUFNLEVBQ0osT0FBTyxFQUVQLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLDRCQUE0QixFQUM1QixZQUFZLEVBQ1osT0FBTyxFQUNQLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixLQUFLLEtBRUgsTUFBTSxFQURMLGFBQWEsVUFDZCxNQUFNLEVBZkoseU9BZUwsQ0FBUztJQUVWLE9BQU8sYUFBYTtBQUN0QixDQUFDO0FBS0QsTUFBTSxnQkFBZ0IsR0FBRywyRUFBZSxDQUN0Qyx3RUFBbUIsRUFFakIscUVBQWtCLEVBQ2xCLCtEQUFlLEVBQ2YsMkRBQWEsRUFDYixxRUFBa0IsRUFDbEIsNkRBQWMsRUFDZCw0REFBYSxFQUNiLHlEQUFZLEVBQ1osb0ZBQWMsRUFDZCw0REFBYSxFQUNiLG9FQUFpQixFQUNqQiw0RUFBcUIsRUFDckIsMkRBQWEsRUFDYiwyREFBYSxFQUNiLDhEQUFjLENBQ2pCO0FBaUNNLFNBQVMsd0JBQXdCLENBQ3RDLE9BQXNFLEVBQ3RFLFFBQXVCO0lBRXZCLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDYixNQUFNLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDLGtEQUFvQixDQUFDO1FBRW5FLE9BQU8saUJBQWlCLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDeEQ7SUFFRCxNQUFNLGFBQWEsR0FBRywyRUFBZSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQztJQUdqRSxNQUFNLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxrREFBb0IsQ0FBQztJQVFoRSxPQUFPLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvY3JlYXRlUmVhZGVyV2l0aEVuaGFuY2VyLnRzP2Y3MWYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2hyb21lRW5oYW5jZXIgfSBmcm9tICcuL2VuaGFuY2Vycy9jaHJvbWUnXG5pbXBvcnQgeyBmb250c0VuaGFuY2VyIH0gZnJvbSAnLi9lbmhhbmNlcnMvZm9udHMnXG5pbXBvcnQgeyBob3RrZXlzRW5oYW5jZXIgfSBmcm9tICcuL2VuaGFuY2Vycy9ob3RrZXlzJ1xuaW1wb3J0IHsgbGF5b3V0RW5oYW5jZXIgfSBmcm9tICcuL2VuaGFuY2Vycy9sYXlvdXRFbmhhbmNlci9sYXlvdXRFbmhhbmNlcidcbmltcG9ydCB7IGxpbmtzRW5oYW5jZXIgfSBmcm9tICcuL2VuaGFuY2Vycy9saW5rcydcbmltcG9ydCB7IG5hdmlnYXRpb25FbmhhbmNlciB9IGZyb20gJy4vZW5oYW5jZXJzL25hdmlnYXRpb24nXG5pbXBvcnQgeyBwYWdpbmF0aW9uRW5oYW5jZXIgfSBmcm9tICcuL2VuaGFuY2Vycy9wYWdpbmF0aW9uJ1xuaW1wb3J0IHsgdGhlbWVFbmhhbmNlciB9IGZyb20gJy4vZW5oYW5jZXJzL3RoZW1lJ1xuaW1wb3J0IHsgQ29tcG9zYWJsZUVuaGFuY2VyLCBDb21wb3NlRW5oYW5jZXIsIGNvbXBvc2VFbmhhbmNlciB9IGZyb20gJy4vZW5oYW5jZXJzL2NvbXBvc2VFbmhhbmNlcidcbmltcG9ydCB7IEVuaGFuY2VyIH0gZnJvbSAnLi9lbmhhbmNlcnMvdHlwZXMnXG5pbXBvcnQgeyB6b29tRW5oYW5jZXIgfSBmcm9tICcuL2VuaGFuY2Vycy96b29tJ1xuaW1wb3J0IHsgY3JlYXRlUmVhZGVyIGFzIGNyZWF0ZUludGVybmFsUmVhZGVyLCBSZWFkZXIgYXMgUmVhZGVyUHVibGljQXBpIH0gZnJvbSAnLi9yZWFkZXInXG5pbXBvcnQgeyB1dGlsc0VuaGFuY2VyIH0gZnJvbSAnLi9lbmhhbmNlcnMvdXRpbHMnXG5pbXBvcnQgeyByZXNvdXJjZXNFbmhhbmNlciB9IGZyb20gJy4vZW5oYW5jZXJzL3Jlc291cmNlcydcbmltcG9ydCB7IG1lZGlhRW5oYW5jZXIgfSBmcm9tICcuL2VuaGFuY2Vycy9tZWRpYSdcbmltcG9ydCB7IHByb2dyZXNzaW9uRW5oYW5jZXIgfSBmcm9tICcuL2VuaGFuY2Vycy9wcm9ncmVzc2lvbidcbmltcG9ydCB7IGFjY2Vzc2liaWxpdHlFbmhhbmNlciB9IGZyb20gJy4vZW5oYW5jZXJzL2FjY2Vzc2liaWxpdHknXG5pbXBvcnQgeyB3ZWJraXRFbmhhbmNlciB9IGZyb20gJy4vZW5oYW5jZXJzL3dlYmtpdCdcbmltcG9ydCB7IEFub255bW91c1N1YmplY3QgfSBmcm9tICdyeGpzL2ludGVybmFsL1N1YmplY3QnXG5cbi8qKlxuICogT25seSBleHBvc2UgYSBzdWJzZXQgb2YgcmVhZGVyIEFQSSBpbiBvcmRlciB0byBwcm90ZWN0IGFnYWluc3RcbiAqIHdyb25nIG1hbmlwdWxhdGlvbi5cbiAqIFRvIGFjY2VzcyB0aGUgZXh0ZW5kZWQgQVBJLCBjcmVhdGUgYW4gZW5oYW5jZXIuXG4gKi9cbmNvbnN0IHdpdGhQdWJsaWNBcGlPbmx5ID0gPEFwaSBleHRlbmRzIHsgW2tleSBpbiBrZXlvZiBSZWFkZXJQdWJsaWNBcGldOiBhbnkgfT4ocmVhZGVyOiBBcGkpID0+IHtcbiAgY29uc3Qge1xuICAgIGNvbnRleHQsXG4gICAgLy8gaW5uZXJQYWdpbmF0aW9uLFxuICAgIG1hbmlwdWxhdGVDb250YWluZXIsXG4gICAgbWFuaXB1bGF0ZVNwaW5lSXRlbXMsXG4gICAgZ2V0Rm9jdXNlZFNwaW5lSXRlbUluZGV4LFxuICAgIGdldEN1cnJlbnROYXZpZ2F0aW9uUG9zaXRpb24sXG4gICAgZ2V0U3BpbmVJdGVtLFxuICAgIGxvY2F0b3IsXG4gICAgZ2V0QWJzb2x1dGVQb3NpdGlvbk9mLFxuICAgIGdlbmVyYXRlQ2ZpLFxuICAgIHJlc29sdmVDZmksXG4gICAgZ2V0Q2ZpTWV0YUluZm9ybWF0aW9uLFxuICAgIHNwaW5lLFxuICAgIC4uLmV4cG9zZWRSZWFkZXJcbiAgfSA9IHJlYWRlclxuXG4gIHJldHVybiBleHBvc2VkUmVhZGVyXG59XG5cbnR5cGUgUmVhZGVyUHVibGljQXBpV2l0aFNhZmVFeHBvc2VkS2V5cyA9IFJldHVyblR5cGU8dHlwZW9mIHdpdGhQdWJsaWNBcGlPbmx5PlxudHlwZSBSZW1vdmVkS2V5c09ubHkgPSBrZXlvZiBPbWl0PFJlYWRlclB1YmxpY0FwaSwga2V5b2YgUmVhZGVyUHVibGljQXBpV2l0aFNhZmVFeHBvc2VkS2V5cz5cblxuY29uc3QgaW50ZXJuYWxFbmhhbmNlciA9IGNvbXBvc2VFbmhhbmNlcihcbiAgcHJvZ3Jlc3Npb25FbmhhbmNlclxuICAvLyBAcmVxdWlyZXMgcHJvZ3Jlc3Npb25FbmhhbmNlclxuICAsIHBhZ2luYXRpb25FbmhhbmNlclxuICAsIGhvdGtleXNFbmhhbmNlclxuICAsIHRoZW1lRW5oYW5jZXJcbiAgLCBuYXZpZ2F0aW9uRW5oYW5jZXJcbiAgLCBjaHJvbWVFbmhhbmNlclxuICAsIG1lZGlhRW5oYW5jZXJcbiAgLCB6b29tRW5oYW5jZXJcbiAgLCBsYXlvdXRFbmhhbmNlclxuICAsIHV0aWxzRW5oYW5jZXJcbiAgLCByZXNvdXJjZXNFbmhhbmNlclxuICAsIGFjY2Vzc2liaWxpdHlFbmhhbmNlclxuICAsIGxpbmtzRW5oYW5jZXJcbiAgLCBmb250c0VuaGFuY2VyXG4gICwgd2Via2l0RW5oYW5jZXJcbilcblxudHlwZSBXaXRob3V0UHJpdmF0ZUFwaTxFPiA9IE9taXQ8RSwgUmVtb3ZlZEtleXNPbmx5IHwgYF9fZGVidWdgIHwgYF9fQVBJYCB8IGBfX091dHB1dFNldHRpbmdzYD5cbnR5cGUgRW5oYW5jZXJPcHRpb25zPEUgZXh0ZW5kcyAoLi4uYXJnczogYW55KSA9PiBhbnk+ID0gUGFyYW1ldGVyczxSZXR1cm5UeXBlPEU+PlswXVxudHlwZSBFbmhhbmNlckV4cG9zZWRBcGk8RSBleHRlbmRzICguLi5hcmdzOiBhbnkpID0+IGFueT4gPSBSZXR1cm5UeXBlPFJldHVyblR5cGU8RT4+XG5cbmV4cG9ydCB0eXBlIENvcmVFbmhhbmNlciA9IHR5cGVvZiBpbnRlcm5hbEVuaGFuY2VyXG5cbmV4cG9ydCB0eXBlIENvcmVFbmhhbmNlckRlcGVuZHNPbiA9IChjcmVhdGVSZWFkZXI6IFBhcmFtZXRlcnM8Q29yZUVuaGFuY2VyPlswXSkgPT4gKG9wdGlvbnM6IEVuaGFuY2VyT3B0aW9uczxDb3JlRW5oYW5jZXI+KSA9PiBFbmhhbmNlckV4cG9zZWRBcGk8Q29yZUVuaGFuY2VyPlxuXG5leHBvcnQgdHlwZSBFeHRlcm5hbEVuaGFuY2VyPFxuICBPcHRpb25zID0ge30sXG4gIEFwaSA9IHt9LFxuICBTZXR0aW5ncyA9IHt9LFxuICBPdXRwdXRTZXR0aW5ncyA9IFNldHRpbmdzLFxuICBEZXBlbmRzT24gZXh0ZW5kcyAoY3JlYXRlUmVhZGVyOiBhbnkpID0+IChvcHRpb25zOiBhbnkpID0+IGFueSA9IENvcmVFbmhhbmNlckRlcGVuZHNPblxuICA+ID0gRW5oYW5jZXI8XG4gICAgT3B0aW9ucyxcbiAgICBBcGksXG4gICAgU2V0dGluZ3MsXG4gICAgT3V0cHV0U2V0dGluZ3MsXG4gICAgRGVwZW5kc09uXG4gID5cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlYWRlcldpdGhFbmhhbmNlcihcbiAgb3B0aW9uczogRW5oYW5jZXJPcHRpb25zPENvcmVFbmhhbmNlcj5cbik6IFdpdGhvdXRQcml2YXRlQXBpPEVuaGFuY2VyRXhwb3NlZEFwaTxDb3JlRW5oYW5jZXI+PlxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVhZGVyV2l0aEVuaGFuY2VyPFVzZXJFbmhhbmNlciBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlcj4oXG4gIG9wdGlvbnM6IEVuaGFuY2VyT3B0aW9uczxVc2VyRW5oYW5jZXI+ICYgRW5oYW5jZXJPcHRpb25zPENvcmVFbmhhbmNlcj4sXG4gIGVuaGFuY2VyOiBVc2VyRW5oYW5jZXJcbik6IFdpdGhvdXRQcml2YXRlQXBpPEVuaGFuY2VyRXhwb3NlZEFwaTxDb21wb3NlRW5oYW5jZXI8dHlwZW9mIGludGVybmFsRW5oYW5jZXIsIFVzZXJFbmhhbmNlcj4+PlxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVhZGVyV2l0aEVuaGFuY2VyPFVzZXJFbmhhbmNlciBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlcj4gKFxuICBvcHRpb25zOiBFbmhhbmNlck9wdGlvbnM8VXNlckVuaGFuY2VyPiAmIEVuaGFuY2VyT3B0aW9uczxDb3JlRW5oYW5jZXI+LFxuICBlbmhhbmNlcj86IFVzZXJFbmhhbmNlclxuKSB7XG4gIGlmICghZW5oYW5jZXIpIHtcbiAgICBjb25zdCBlbmhhbmNlZENyZWF0ZVJlYWRlciA9IGludGVybmFsRW5oYW5jZXIoY3JlYXRlSW50ZXJuYWxSZWFkZXIpXG5cbiAgICByZXR1cm4gd2l0aFB1YmxpY0FwaU9ubHkoZW5oYW5jZWRDcmVhdGVSZWFkZXIob3B0aW9ucykpXG4gIH1cblxuICBjb25zdCBmaW5hbEVuaGFuY2VyID0gY29tcG9zZUVuaGFuY2VyKGludGVybmFsRW5oYW5jZXIsIGVuaGFuY2VyKVxuICAvLyBjb25zdCBmaW5hbEVuaGFuY2VyID0gY29tcG9zZUVuaGFuY2VyKGVuaGFuY2VyKVxuICAvLyBjb25zdCBmaW5hbEVuaGFuY2VyID0gY29tcG9zZUVuaGFuY2VyKGVuaGFuY2VyLCBpbnRlcm5hbEVuaGFuY2VyKVxuICBjb25zdCBlbmhhbmNlZENyZWF0ZVJlYWRlciA9IGZpbmFsRW5oYW5jZXIoY3JlYXRlSW50ZXJuYWxSZWFkZXIpXG5cbiAgLy8gZW5oYW5jZXIoY3JlYXRlSW50ZXJuYWxSZWFkZXIgYXMgYW55KShvcHRpb25zKS5cbiAgLy8gaW50ZXJuYWxFbmhhbmNlcihjcmVhdGVJbnRlcm5hbFJlYWRlcikob3B0aW9ucykuJC5wYWdpbmF0aW9uJFxuICAvLyBpbnRlcm5hbEVuaGFuY2VyKGNyZWF0ZUludGVybmFsUmVhZGVyKShvcHRpb25zKS5fX0FQSSEuJC5wYWdpbmF0aW9uJFxuICAvLyBmaW5hbEVuaGFuY2VyKGNyZWF0ZUludGVybmFsUmVhZGVyKShvcHRpb25zKS5cbiAgLy8gY29uc3QgcyA9IGZpbmFsRW5oYW5jZXIoY3JlYXRlSW50ZXJuYWxSZWFkZXIpKG9wdGlvbnMpLl9fQVBJXG4gIC8vIHMhLlxuICByZXR1cm4gd2l0aFB1YmxpY0FwaU9ubHkoZW5oYW5jZWRDcmVhdGVSZWFkZXIob3B0aW9ucykpXG59XG5cbmV4cG9ydCB0eXBlIFJlYWRlcjxFIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyIHwgdm9pZCA9IHZvaWQ+ID0gRSBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlclxuICA/IFdpdGhvdXRQcml2YXRlQXBpPEVuaGFuY2VyRXhwb3NlZEFwaTxDb21wb3NlRW5oYW5jZXI8Q29yZUVuaGFuY2VyLCBFPj4+XG4gIDogV2l0aG91dFByaXZhdGVBcGk8RW5oYW5jZXJFeHBvc2VkQXBpPENvcmVFbmhhbmNlcj4+XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/createReaderWithEnhancer.ts\n");
|
|
50
|
+
|
|
51
|
+
/***/ }),
|
|
52
|
+
|
|
53
|
+
/***/ "./src/enhancers/accessibility.ts":
|
|
54
|
+
/*!****************************************!*\
|
|
55
|
+
!*** ./src/enhancers/accessibility.ts ***!
|
|
56
|
+
\****************************************/
|
|
57
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
58
|
+
|
|
59
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"accessibilityEnhancer\": () => (/* binding */ accessibilityEnhancer)\n/* harmony export */ });\nconst accessibilityEnhancer = (next) => (options) => {\n const reader = next(options);\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n entry.target.removeAttribute(`tab-index`);\n }\n else {\n entry.target.setAttribute(`tab-index`, `-1`);\n }\n });\n }, {});\n reader.registerHook(`item.onLoad`, ({ addStyle, frame }) => {\n var _a;\n addStyle(`prose-reader-accessibility`, `\n :focus-visible {\n ${``}\n outline: -webkit-focus-ring-color auto 1px;\n }\n `);\n const links = (_a = frame.contentDocument) === null || _a === void 0 ? void 0 : _a.body.querySelectorAll(`a`);\n links === null || links === void 0 ? void 0 : links.forEach(link => {\n observer.observe(link);\n });\n return () => {\n links === null || links === void 0 ? void 0 : links.forEach(link => {\n observer.unobserve(link);\n });\n };\n });\n return Object.assign({}, reader);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZW5oYW5jZXJzL2FjY2Vzc2liaWxpdHkudHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUtPLE1BQU0scUJBQXFCLEdBRTdCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO0lBQ3pCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFFNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ3BELE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFO2dCQUN4QixLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUM7YUFDMUM7aUJBQU07Z0JBQ0wsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQzthQUM3QztRQUNILENBQUMsQ0FBQztJQUNKLENBQUMsRUFBRSxFQUNGLENBQUM7SUFFRixNQUFNLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7O1FBQ3pELFFBQVEsQ0FBQyw0QkFBNEIsRUFBRTs7VUFLakMsRUFBRTs7O0tBR1AsQ0FBQztRQUVGLE1BQU0sS0FBSyxHQUFHLFdBQUssQ0FBQyxlQUFlLDBDQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUM7UUFFL0QsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwQixRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN4QixDQUFDLENBQUM7UUFFRixPQUFPLEdBQUcsRUFBRTtZQUNWLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BCLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQzFCLENBQUMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRix5QkFDSyxNQUFNLEVBQ1Y7QUFDSCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL2VuaGFuY2Vycy9hY2Nlc3NpYmlsaXR5LnRzPzRjMzAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW5oYW5jZXIgfSBmcm9tIFwiLi90eXBlc1wiXG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGFjY2Vzc2liaWxpdHlFbmhhbmNlcjogRW5oYW5jZXI8e30sIHtcblxufT4gPSAobmV4dCkgPT4gKG9wdGlvbnMpID0+IHtcbiAgY29uc3QgcmVhZGVyID0gbmV4dChvcHRpb25zKVxuXG4gIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICBlbnRyeS50YXJnZXQucmVtb3ZlQXR0cmlidXRlKGB0YWItaW5kZXhgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW50cnkudGFyZ2V0LnNldEF0dHJpYnV0ZShgdGFiLWluZGV4YCwgYC0xYClcbiAgICAgIH1cbiAgICB9KVxuICB9LCB7XG4gIH0pXG5cbiAgcmVhZGVyLnJlZ2lzdGVySG9vayhgaXRlbS5vbkxvYWRgLCAoeyBhZGRTdHlsZSwgZnJhbWUgfSkgPT4ge1xuICAgIGFkZFN0eWxlKGBwcm9zZS1yZWFkZXItYWNjZXNzaWJpbGl0eWAsIGBcbiAgICAgIDpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgJHsvKlxuICAgICAgICAgIFNvbWUgZXB1YnMgcmVtb3ZlIHRoZSBvdXRsaW5lLCB0aGlzIGlzIG5vdCBnb29kIHByYWN0aWNlIHNpbmNlIGl0IHJlZHVjZSBhY2Nlc3NpYmlsaXR5LlxuICAgICAgICAgIFdlIHdpbGwgdHJ5IHRvIHJlc3RvcmUgaXQgYnkgZm9yY2UuXG4gICAgICAgICovYGB9XG4gICAgICAgIG91dGxpbmU6IC13ZWJraXQtZm9jdXMtcmluZy1jb2xvciBhdXRvIDFweDtcbiAgICAgIH1cbiAgICBgKVxuXG4gICAgY29uc3QgbGlua3MgPSBmcmFtZS5jb250ZW50RG9jdW1lbnQ/LmJvZHkucXVlcnlTZWxlY3RvckFsbChgYWApXG5cbiAgICBsaW5rcz8uZm9yRWFjaChsaW5rID0+IHtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUobGluaylcbiAgICB9KVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxpbmtzPy5mb3JFYWNoKGxpbmsgPT4ge1xuICAgICAgICBvYnNlcnZlci51bm9ic2VydmUobGluaylcbiAgICAgIH0pXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgLi4ucmVhZGVyXG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/enhancers/accessibility.ts\n");
|
|
60
|
+
|
|
61
|
+
/***/ }),
|
|
62
|
+
|
|
63
|
+
/***/ "./src/enhancers/chrome.ts":
|
|
64
|
+
/*!*********************************!*\
|
|
65
|
+
!*** ./src/enhancers/chrome.ts ***!
|
|
66
|
+
\*********************************/
|
|
67
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
68
|
+
|
|
69
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"chromeEnhancer\": () => (/* binding */ chromeEnhancer)\n/* harmony export */ });\nconst SHOULD_NOT_LAYOUT = false;\nconst chromeEnhancer = (next) => (options) => {\n const reader = next(options);\n reader.manipulateContainer((container) => {\n const onScroll = () => {\n if (reader.context.getSettings().computedPageTurnMode === `controlled`) {\n container.scrollTo(0, 0);\n }\n };\n container.addEventListener(`scroll`, onScroll);\n return SHOULD_NOT_LAYOUT;\n });\n reader.registerHook(`item.onLoad`, ({ frame }) => {\n var _a;\n (_a = frame.contentDocument) === null || _a === void 0 ? void 0 : _a.body.setAttribute(`tabindex`, `-1`);\n });\n return reader;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZW5oYW5jZXJzL2Nocm9tZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBRUEsTUFBTSxpQkFBaUIsR0FBRyxLQUFLO0FBS3hCLE1BQU0sY0FBYyxHQUV0QixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtJQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBMEI1QixNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUN2QyxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLG9CQUFvQixLQUFLLFlBQVksRUFBRTtnQkFDdEUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQztRQU9ELFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO1FBYzlDLE9BQU8saUJBQWlCO0lBQzFCLENBQUMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFOztRQU0vQyxXQUFLLENBQUMsZUFBZSwwQ0FBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7SUFDNUQsQ0FBQyxDQUFDO0lBaUJGLE9BQU8sTUFBTTtBQUNmLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvZW5oYW5jZXJzL2Nocm9tZS50cz8zMWYwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVuaGFuY2VyIH0gZnJvbSBcIi4vdHlwZXNcIlxuXG5jb25zdCBTSE9VTERfTk9UX0xBWU9VVCA9IGZhbHNlXG5cbi8qKlxuICogQWxsIGZpeGVzIHJlbGF0aXZlIHRvIGNocm9tZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGNocm9tZUVuaGFuY2VyOiBFbmhhbmNlcjx7fSwge1xuXG59PiA9IChuZXh0KSA9PiAob3B0aW9ucykgPT4ge1xuICBjb25zdCByZWFkZXIgPSBuZXh0KG9wdGlvbnMpXG5cbiAgLyoqXG4gICAqIFRoaXMgZWxlbWVudCBpcyB1c2VkIHRvIGZvcmNlIGEgcmVmcmVzaCBvZiBhIHNjcmVlbiBpbiBvcmRlciB0byBmaXggdGhlXG4gICAqIGZyb3plbiBzY3JlZW4gdGhhdCBoYXBwZW5zIHdpdGggY2hyb21lLlxuICAgKiBUaGUgYnVnIGlzIHdlaXJkIGFuZCBJIGhhdmUgeWV0IHRvIGV4cGxhaW4gaXQgY29ycmVjdGx5LCB3aGF0IGhhcHBlbnNcbiAgICogaXMgdGhhdCBzb21ldGltZSB3aGVuIG1vdmluZyB0aGUgeC1heGlzIG9uIG5hdmlnYXRpb24sIHRoZSBzY3JlZW4gd2lsbCBzdGlsbCBkaXNwbGF5XG4gICAqIHRoZSBvbGQgc2NyZWVuLCBhcyBpZiBpdCB3YXMgZnJvemVuLiBHZW5lcmFsbHkgYW55IGludGVyYWN0aW9uIHdpdGggdGhlIHBhZ2Ugd2lsbCB1bmZyZWV6ZVxuICAgKiB0aGUgc2NyZWVuIGFuZCB0aGUgbmV3IGlmcmFtZSB3aWxsIGJlIGRpc3BsYXllZC4gSXQgYWxzbyBoYXBwZW5zIHdpdGhpbiB0aGUgc2FtZSBpZnJhbWUuXG4gICAqIFNvIGZhciBpdCBzZWVtcyB0byBiZSBkdWUgdG8gc2NhbGluZyBhbmQgeC1heGlzIG1vdmluZy5cbiAgICogVG8gZW5zdXJlIHRoZSBzY3JlZW4gZG9lcyBub3QgZnJlZXplIHdlIGFyZSBtb3ZpbmcgYSAxOjEgc3F1YXJlIGluICYgb3V0IG9mIHRoZSBzY3JlZW4uXG4gICAqIFRoYXQgd2F5IGNocm9tZSBpcyBcImZvcmNlZFwiIHRvIHJlZnJlc2ggdGhlIHNjcmVlbi5cbiAgICpcbiAgICogQHRvZG9cbiAgICogY2hlY2sgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3dpbGwtY2hhbmdlIHdpdGggd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybVxuICAgKiB0byBzZWUgaWYgaXQgZG9lcyByZWZyZXNoIGFsbCB0aGUgdGltZSBpdHNlbGYuXG4gICAqXG4gICAqIEB0b2RvXG4gICAqIHVzZSB0cmFuc2Zvcm0gYW5kIHRyYW5zbGF0ZSByYXRoZXIgdGhhbiBjaGFuZ2luZyB0b3Agc28gaXQgb25seSBhZmZlY3QgY29tcG9zaXRlIGxheWVyIHJhdGhlciB0aGFuIHBhaW50XG4gICAqIEBzZWUgaHR0cHM6Ly93d3cuYWxnb2xpYS5jb20vYmxvZy9lbmdpbmVlcmluZy9wZXJmb3JtYW50LXdlYi1hbmltYXRpb25zL1xuICAgKlxuICAgKiBAaW1wb3J0YW50XG4gICAqIFRoaXMgaXMgZGlzYWJsZWQgZm9yIG5vdyBhcyByZW1vdmluZyB3aWxsLWNoYW5nZSBvbiBjb250YWluZXIgc2VlbXMgdG8gZml4IHRoZSBpc3N1ZVxuICAgKi9cbiAgLy8gbGV0IHNjcmVlbkZvcmNlUmVmcmVzaEVsdDogSFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcblxuICByZWFkZXIubWFuaXB1bGF0ZUNvbnRhaW5lcigoY29udGFpbmVyKSA9PiB7XG4gICAgY29uc3Qgb25TY3JvbGwgPSAoKSA9PiB7XG4gICAgICBpZiAocmVhZGVyLmNvbnRleHQuZ2V0U2V0dGluZ3MoKS5jb21wdXRlZFBhZ2VUdXJuTW9kZSA9PT0gYGNvbnRyb2xsZWRgKSB7XG4gICAgICAgIGNvbnRhaW5lci5zY3JvbGxUbygwLCAwKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvciBzb21lIHJlYXNvbiBJIGhhdmUgeWV0IHRvIGZpbmQsIGNocm9tZSB3aWxsIGZvcmNlIHNjcm9sbCB4LWF4aXMgb24gdGhlIGNvbnRhaW5lclxuICAgICAqIHdoZW5ldmVyIHRoZSB1c2VyIHNlbGVjdCB0ZXh0IGFuZCBkcmFnIGl0IHRvIHRoZSBlZGdlcy4gVGhpcyBpcyBub3QgYSBzY3JvbGwgaW5zaWRlIHRoZSBpZnJhbWVcbiAgICAgKiBidXQgYSBzY3JvbGwgb24gdGhlIGNvbnRhaW5lciBpdHNlbGYuLlxuICAgICAqL1xuICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKGBzY3JvbGxgLCBvblNjcm9sbClcblxuICAgIC8vIHNjcmVlbkZvcmNlUmVmcmVzaEVsdCA9IGNvbnRhaW5lci5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgLy8gc2NyZWVuRm9yY2VSZWZyZXNoRWx0LnN0eWxlLmNzc1RleHQgPSBgXG4gICAgLy8gICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgLy8gICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcbiAgICAvLyAgIGxlZnQ6IDA7XG4gICAgLy8gICB0b3A6IC0xcHg7XG4gICAgLy8gICB3aWR0aDogMXB4O1xuICAgIC8vICAgaGVpZ2h0OiAxcHg7XG4gICAgLy8gYFxuXG4gICAgLy8gY29udGFpbmVyLmFwcGVuZENoaWxkKHNjcmVlbkZvcmNlUmVmcmVzaEVsdClcblxuICAgIHJldHVybiBTSE9VTERfTk9UX0xBWU9VVFxuICB9KVxuXG4gIHJlYWRlci5yZWdpc3Rlckhvb2soYGl0ZW0ub25Mb2FkYCwgKHsgZnJhbWUgfSkgPT4ge1xuICAgIC8qKlxuICAgICAqIERpc2FibGUgdG91Y2ggdG8gc2VhcmNoIG9uIGZpcnN0IHRleHQgdG91Y2ggLyBjbGljay4gVGhpcyBkb2VzIG5vdCBwcmV2ZW50XG4gICAgICogaXQgd2hlbiBzZWxlY3RpbmcgdGV4dC4gSXQgbmVlZHMgdG8gYmUgdHVybmVkIG9mZiBieSB0aGUgdXNlci5cbiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYi91cGRhdGVzLzIwMTUvMTAvdGFwLXRvLXNlYXJjaFxuICAgICAqL1xuICAgIGZyYW1lLmNvbnRlbnREb2N1bWVudD8uYm9keS5zZXRBdHRyaWJ1dGUoYHRhYmluZGV4YCwgYC0xYClcbiAgfSlcblxuICAvLyBjb25zdCBmb3JjZVNjcmVlblJlZnJlc2gkID0gcmVhZGVyLiQuJFxuICAvLyAgIC5waXBlKFxuICAvLyAgICAgLy8gZmlsdGVyKGV2ZW50ID0+IGV2ZW50LnR5cGUgPT09IGBvbk5hdmlnYXRpb25DaGFuZ2VgKSxcbiAgLy8gICAgIHRhcCgoKSA9PiB7XG4gIC8vICAgICAgIC8vIHNjcmVlbkZvcmNlUmVmcmVzaEVsdD8uc3R5bGUuc2V0UHJvcGVydHkoYHRvcGAsIGAwcHhgKVxuICAvLyAgICAgICAvLyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAvLyAgICAgICAvLyAgIHNjcmVlbkZvcmNlUmVmcmVzaEVsdD8uc3R5bGUuc2V0UHJvcGVydHkoYHRvcGAsIGAtMXB4YClcbiAgLy8gICAgICAgLy8gfSlcbiAgLy8gICAgIH0pXG4gIC8vICAgKVxuXG4gIC8vIG1lcmdlKGZvcmNlU2NyZWVuUmVmcmVzaCQpXG4gIC8vICAgLnBpcGUodGFrZVVudGlsKHJlYWRlci4kLmRlc3Ryb3kkKSlcbiAgLy8gICAuc3Vic2NyaWJlKClcblxuICByZXR1cm4gcmVhZGVyXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/enhancers/chrome.ts\n");
|
|
70
|
+
|
|
71
|
+
/***/ }),
|
|
72
|
+
|
|
73
|
+
/***/ "./src/enhancers/composeEnhancer.ts":
|
|
74
|
+
/*!******************************************!*\
|
|
75
|
+
!*** ./src/enhancers/composeEnhancer.ts ***!
|
|
76
|
+
\******************************************/
|
|
77
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
78
|
+
|
|
79
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"composeEnhancer\": () => (/* binding */ composeEnhancer)\n/* harmony export */ });\n/* harmony import */ var _utils_compose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/compose */ \"./src/utils/compose.ts\");\n\nfunction composeEnhancer(...funcs) {\n return (0,_utils_compose__WEBPACK_IMPORTED_MODULE_0__.compose)(...funcs);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZW5oYW5jZXJzL2NvbXBvc2VFbmhhbmNlci50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUMwQztBQTBHbkMsU0FBUyxlQUFlLENBQUMsR0FBRyxLQUFZO0lBQzdDLE9BQU8sdURBQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUMxQixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL2VuaGFuY2Vycy9jb21wb3NlRW5oYW5jZXIudHM/ZjNlMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbmhhbmNlciwgRXh0cmFjdEFwaSwgRXh0cmFjdEhpZGRlbkFwaSwgRXh0cmFjdE9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiXG5pbXBvcnQgeyBjb21wb3NlIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBvc2VcIlxuXG5leHBvcnQgdHlwZSBDb21wb3NhYmxlRW5oYW5jZXIgPSAoY3JlYXRlUmVhZGVyOiBhbnkpID0+IChvcHRpb25zOiBhbnkpID0+IHtzZXRTZXR0aW5ncz86IGFueSwgX19PdXRwdXRTZXR0aW5ncz86IGFueX1cblxuZXhwb3J0IHR5cGUgQ29tcG9zZUVuaGFuY2VyPFxuICBBIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyID0gRW5oYW5jZXIsXG4gIEIgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIgPSBFbmhhbmNlcixcbiAgQyBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciA9IEVuaGFuY2VyLFxuICBEIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyID0gRW5oYW5jZXIsXG4gIEUgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIgPSBFbmhhbmNlcixcbiAgRiBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciA9IEVuaGFuY2VyLFxuICBHIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyID0gRW5oYW5jZXIsXG4gIEggZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIgPSBFbmhhbmNlcixcbiAgSSBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciA9IEVuaGFuY2VyLFxuICBKIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyID0gRW5oYW5jZXIsXG4gIEsgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIgPSBFbmhhbmNlcixcbiAgTCBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciA9IEVuaGFuY2VyLFxuICBNIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyID0gRW5oYW5jZXIsXG4gIE4gZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIgPSBFbmhhbmNlcixcbiAgTyBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciA9IEVuaGFuY2VyLFxuICA+ID1cbiAgRW5oYW5jZXI8XG4gICAgJiBFeHRyYWN0T3B0aW9uczxBPlxuICAgICYgRXh0cmFjdE9wdGlvbnM8Qj5cbiAgICAmIEV4dHJhY3RPcHRpb25zPEM+XG4gICAgJiBFeHRyYWN0T3B0aW9uczxEPlxuICAgICYgRXh0cmFjdE9wdGlvbnM8RT5cbiAgICAmIEV4dHJhY3RPcHRpb25zPEY+XG4gICAgJiBFeHRyYWN0T3B0aW9uczxHPlxuICAgICYgRXh0cmFjdE9wdGlvbnM8SD5cbiAgICAmIEV4dHJhY3RPcHRpb25zPEk+XG4gICAgJiBFeHRyYWN0T3B0aW9uczxKPlxuICAgICYgRXh0cmFjdE9wdGlvbnM8Sz5cbiAgICAmIEV4dHJhY3RPcHRpb25zPEw+XG4gICAgJiBFeHRyYWN0T3B0aW9uczxNPlxuICAgICYgRXh0cmFjdE9wdGlvbnM8Tj5cbiAgICAmIEV4dHJhY3RPcHRpb25zPE8+LFxuICAgIC8vIE1vZGlmeURlZXA8XG4gICAgLy8gICBNb2RpZnlEZWVwPFxuICAgIC8vICAgICBFeHRyYWN0SGlkZGVuQXBpPEE+LFxuICAgIC8vICAgICBFeHRyYWN0SGlkZGVuQXBpPEI+XG4gICAgLy8gICA+LFxuICAgIC8vICAgRXh0cmFjdEhpZGRlbkFwaTxDPlxuICAgIC8vID5cbiAgICBFeHRyYWN0SGlkZGVuQXBpPEE+XG4gICAgJiBFeHRyYWN0SGlkZGVuQXBpPEI+XG4gICAgJiBFeHRyYWN0SGlkZGVuQXBpPEM+XG4gICAgJiBFeHRyYWN0SGlkZGVuQXBpPEQ+XG4gICAgJiBFeHRyYWN0SGlkZGVuQXBpPEU+XG4gICAgJiBFeHRyYWN0SGlkZGVuQXBpPEY+XG4gICAgJiBFeHRyYWN0SGlkZGVuQXBpPEc+XG4gICAgJiBFeHRyYWN0SGlkZGVuQXBpPEg+XG4gICAgJiBFeHRyYWN0SGlkZGVuQXBpPEk+XG4gICAgJiBFeHRyYWN0SGlkZGVuQXBpPEo+XG4gICAgJiBFeHRyYWN0SGlkZGVuQXBpPEs+XG4gICAgJiBFeHRyYWN0SGlkZGVuQXBpPEw+XG4gICAgJiBFeHRyYWN0SGlkZGVuQXBpPE0+XG4gICAgJiBFeHRyYWN0SGlkZGVuQXBpPE4+XG4gICAgJiBFeHRyYWN0SGlkZGVuQXBpPE8+LFxuICAgICYgUGFyYW1ldGVyczxFeHRyYWN0QXBpPEE+W2BzZXRTZXR0aW5nc2BdPlswXVxuICAgICYgUGFyYW1ldGVyczxFeHRyYWN0QXBpPEI+W2BzZXRTZXR0aW5nc2BdPlswXVxuICAgICYgUGFyYW1ldGVyczxFeHRyYWN0QXBpPEM+W2BzZXRTZXR0aW5nc2BdPlswXVxuICAgICYgUGFyYW1ldGVyczxFeHRyYWN0QXBpPEQ+W2BzZXRTZXR0aW5nc2BdPlswXVxuICAgICYgUGFyYW1ldGVyczxFeHRyYWN0QXBpPEU+W2BzZXRTZXR0aW5nc2BdPlswXVxuICAgICYgUGFyYW1ldGVyczxFeHRyYWN0QXBpPEY+W2BzZXRTZXR0aW5nc2BdPlswXVxuICAgICYgUGFyYW1ldGVyczxFeHRyYWN0QXBpPEc+W2BzZXRTZXR0aW5nc2BdPlswXVxuICAgICYgUGFyYW1ldGVyczxFeHRyYWN0QXBpPEg+W2BzZXRTZXR0aW5nc2BdPlswXVxuICAgICYgUGFyYW1ldGVyczxFeHRyYWN0QXBpPEk+W2BzZXRTZXR0aW5nc2BdPlswXVxuICAgICYgUGFyYW1ldGVyczxFeHRyYWN0QXBpPEo+W2BzZXRTZXR0aW5nc2BdPlswXVxuICAgICYgUGFyYW1ldGVyczxFeHRyYWN0QXBpPEs+W2BzZXRTZXR0aW5nc2BdPlswXVxuICAgICYgUGFyYW1ldGVyczxFeHRyYWN0QXBpPEw+W2BzZXRTZXR0aW5nc2BdPlswXVxuICAgICYgUGFyYW1ldGVyczxFeHRyYWN0QXBpPE0+W2BzZXRTZXR0aW5nc2BdPlswXVxuICAgICYgUGFyYW1ldGVyczxFeHRyYWN0QXBpPE4+W2BzZXRTZXR0aW5nc2BdPlswXVxuICAgICYgUGFyYW1ldGVyczxFeHRyYWN0QXBpPE8+W2BzZXRTZXR0aW5nc2BdPlswXSxcbiAgICAmIEV4dHJhY3RBcGk8QT5bYF9fT3V0cHV0U2V0dGluZ3NgXVxuICAgICYgRXh0cmFjdEFwaTxCPltgX19PdXRwdXRTZXR0aW5nc2BdXG4gICAgJiBFeHRyYWN0QXBpPEM+W2BfX091dHB1dFNldHRpbmdzYF1cbiAgICAmIEV4dHJhY3RBcGk8RD5bYF9fT3V0cHV0U2V0dGluZ3NgXVxuICAgICYgRXh0cmFjdEFwaTxFPltgX19PdXRwdXRTZXR0aW5nc2BdXG4gICAgJiBFeHRyYWN0QXBpPEY+W2BfX091dHB1dFNldHRpbmdzYF1cbiAgICAmIEV4dHJhY3RBcGk8Rz5bYF9fT3V0cHV0U2V0dGluZ3NgXVxuICAgICYgRXh0cmFjdEFwaTxIPltgX19PdXRwdXRTZXR0aW5nc2BdXG4gICAgJiBFeHRyYWN0QXBpPEk+W2BfX091dHB1dFNldHRpbmdzYF1cbiAgICAmIEV4dHJhY3RBcGk8Sj5bYF9fT3V0cHV0U2V0dGluZ3NgXVxuICAgICYgRXh0cmFjdEFwaTxLPltgX19PdXRwdXRTZXR0aW5nc2BdXG4gICAgJiBFeHRyYWN0QXBpPEw+W2BfX091dHB1dFNldHRpbmdzYF1cbiAgICAmIEV4dHJhY3RBcGk8TT5bYF9fT3V0cHV0U2V0dGluZ3NgXVxuICAgICYgRXh0cmFjdEFwaTxOPltgX19PdXRwdXRTZXR0aW5nc2BdXG4gICAgJiBFeHRyYWN0QXBpPE8+W2BfX091dHB1dFNldHRpbmdzYF1cbiAgPlxuXG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZUVuaGFuY2VyPEEgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXI+KGE6IEEpOiBDb21wb3NlRW5oYW5jZXI8QT5cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlRW5oYW5jZXI8QSBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgQiBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlcj4oYTogQSwgYjogQik6IENvbXBvc2VFbmhhbmNlcjxBLCBCPlxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2VFbmhhbmNlcjxBIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBCIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBDIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyPihhOiBBLCBiOiBCLCBjOiBDKTogQ29tcG9zZUVuaGFuY2VyPEEsIEIsIEM+XG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZUVuaGFuY2VyPEEgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEIgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEMgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEQgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXI+KGE6IEEsIGI6IEIsIGM6IEMsIGQ6IEQpOiBDb21wb3NlRW5oYW5jZXI8QSwgQiwgQywgRD5cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlRW5oYW5jZXI8QSBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgQiBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgQyBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgRCBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgRSBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlcj4oYTogQSwgYjogQiwgYzogQywgZDogRCwgZTogRSk6IENvbXBvc2VFbmhhbmNlcjxBLCBCLCBDLCBELCBFPlxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2VFbmhhbmNlcjxBIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBCIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBDIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBEIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBFIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBGIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyPihhOiBBLCBiOiBCLCBjOiBDLCBkOiBELCBlOiBFLCBmOiBGKTogQ29tcG9zZUVuaGFuY2VyPEEsIEIsIEMsIEQsIEUsIEY+XG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZUVuaGFuY2VyPEEgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEIgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEMgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEQgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEUgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEYgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEcgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXI+KGE6IEEsIGI6IEIsIGM6IEMsIGQ6IEQsIGU6IEUsIGY6IEYsIGc6IEcpOiBDb21wb3NlRW5oYW5jZXI8QSwgQiwgQywgRCwgRSwgRiwgRz5cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlRW5oYW5jZXI8QSBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgQiBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgQyBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgRCBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgRSBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgRiBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgRyBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgSCBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlcj4oYTogQSwgYjogQiwgYzogQywgZDogRCwgZTogRSwgZjogRiwgZzogRywgaDogSCk6IENvbXBvc2VFbmhhbmNlcjxBLCBCLCBDLCBELCBFLCBGLCBHLCBIPlxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2VFbmhhbmNlcjxBIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBCIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBDIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBEIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBFIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBGIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBHIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBIIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBJIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyPihhOiBBLCBiOiBCLCBjOiBDLCBkOiBELCBlOiBFLCBmOiBGLCBnOiBHLCBoOiBILCBpOiBJKTogQ29tcG9zZUVuaGFuY2VyPEEsIEIsIEMsIEQsIEUsIEYsIEcsIEgsIEk+XG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZUVuaGFuY2VyPEEgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEIgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEMgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEQgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEUgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEYgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEcgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEggZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEkgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEogZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXI+KGE6IEEsIGI6IEIsIGM6IEMsIGQ6IEQsIGU6IEUsIGY6IEYsIGc6IEcsIGg6IEgsIGk6IEksIGo6IEopOiBDb21wb3NlRW5oYW5jZXI8QSwgQiwgQywgRCwgRSwgRiwgRywgSCwgSSwgSj5cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlRW5oYW5jZXI8QSBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgQiBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgQyBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgRCBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgRSBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgRiBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgRyBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgSCBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgSSBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgSiBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgSyBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlcj4oYTogQSwgYjogQiwgYzogQywgZDogRCwgZTogRSwgZjogRiwgZzogRywgaDogSCwgaTogSSwgajogSiwgazogSyk6IENvbXBvc2VFbmhhbmNlcjxBLCBCLCBDLCBELCBFLCBGLCBHLCBILCBJLCBKLCBLPlxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2VFbmhhbmNlcjxBIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBCIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBDIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBEIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBFIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBGIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBHIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBIIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBJIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBKIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBLIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBMIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyPihhOiBBLCBiOiBCLCBjOiBDLCBkOiBELCBlOiBFLCBmOiBGLCBnOiBHLCBoOiBILCBpOiBJLCBqOiBKLCBrOiBLLCBsOiBMKTogQ29tcG9zZUVuaGFuY2VyPEEsIEIsIEMsIEQsIEUsIEYsIEcsIEgsIEksIEosIEssIEw+XG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZUVuaGFuY2VyPEEgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEIgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEMgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEQgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEUgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEYgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEcgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEggZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEkgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEogZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEsgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIEwgZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXIsIE0gZXh0ZW5kcyBDb21wb3NhYmxlRW5oYW5jZXI+KGE6IEEsIGI6IEIsIGM6IEMsIGQ6IEQsIGU6IEUsIGY6IEYsIGc6IEcsIGg6IEgsIGk6IEksIGo6IEosIGs6IEssIGw6IEwsIG06IE0pOiBDb21wb3NlRW5oYW5jZXI8QSwgQiwgQywgRCwgRSwgRiwgRywgSCwgSSwgSiwgSywgTCwgTT5cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlRW5oYW5jZXI8QSBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgQiBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgQyBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgRCBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgRSBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgRiBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgRyBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgSCBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgSSBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgSiBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgSyBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgTCBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgTSBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlciwgTiBleHRlbmRzIENvbXBvc2FibGVFbmhhbmNlcj4oYTogQSwgYjogQiwgYzogQywgZDogRCwgZTogRSwgZjogRiwgZzogRywgaDogSCwgaTogSSwgajogSiwgazogSywgbDogTCwgbTogTSwgbjogTik6IENvbXBvc2VFbmhhbmNlcjxBLCBCLCBDLCBELCBFLCBGLCBHLCBILCBJLCBKLCBLLCBMLCBNLCBOPlxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2VFbmhhbmNlcjxBIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBCIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBDIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBEIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBFIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBGIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBHIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBIIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBJIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBKIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBLIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBMIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBNIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBOIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyLCBPIGV4dGVuZHMgQ29tcG9zYWJsZUVuaGFuY2VyPihhOiBBLCBiOiBCLCBjOiBDLCBkOiBELCBlOiBFLCBmOiBGLCBnOiBHLCBoOiBILCBpOiBJLCBqOiBKLCBrOiBLLCBsOiBMLCBtOiBNLCBuOiBOLCBvOiBPKTogQ29tcG9zZUVuaGFuY2VyPEEsIEIsIEMsIEQsIEUsIEYsIEcsIEgsIEksIEosIEssIEwsIE0sIE4sIE8+XG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZUVuaGFuY2VyKC4uLmZ1bmNzOiBhbnlbXSkge1xuICByZXR1cm4gY29tcG9zZSguLi5mdW5jcylcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/enhancers/composeEnhancer.ts\n");
|
|
80
|
+
|
|
81
|
+
/***/ }),
|
|
82
|
+
|
|
83
|
+
/***/ "./src/enhancers/fonts.ts":
|
|
84
|
+
/*!********************************!*\
|
|
85
|
+
!*** ./src/enhancers/fonts.ts ***!
|
|
86
|
+
\********************************/
|
|
87
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
88
|
+
|
|
89
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"fontsEnhancer\": () => (/* binding */ fontsEnhancer)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__);\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\nconst FONT_WEIGHT = [100, 200, 300, 400, 500, 600, 700, 800, 900];\nconst FONT_JUSTIFICATION = [`center`, `left`, `right`, `justify`];\nconst fontsEnhancer = (next) => (_a) => {\n var { fontScale = 1, lineHeight = `publisher`, fontWeight = `publisher`, fontJustification = `publisher` } = _a, options = __rest(_a, [\"fontScale\", \"lineHeight\", \"fontWeight\", \"fontJustification\"]);\n const settingsSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject({\n fontScale,\n lineHeight,\n fontWeight,\n fontJustification\n });\n const reader = next(options);\n const getStyle = () => `\n ${``}\n body {\n ${settingsSubject$.value.fontScale !== 1\n ? `font-size: ${settingsSubject$.value.fontScale}em !important;`\n : ``}\n ${settingsSubject$.value.lineHeight !== `publisher`\n ? `line-height: ${settingsSubject$.value.lineHeight} !important;`\n : ``}\n ${settingsSubject$.value.fontWeight !== `publisher`\n ? `font-weight: ${settingsSubject$.value.fontWeight} !important;`\n : ``}\n ${settingsSubject$.value.fontJustification !== `publisher`\n ? `text-align: ${settingsSubject$.value.fontJustification} !important;`\n : ``}\n }\n `;\n const applyChangeToSpineItem = (requireLayout) => {\n reader.manipulateSpineItems(({ removeStyle, addStyle, item }) => {\n if (item.renditionLayout !== `pre-paginated`) {\n removeStyle(`prose-reader-fonts`);\n addStyle(`prose-reader-fonts`, getStyle());\n }\n return requireLayout;\n });\n };\n reader.registerHook(`item.onLoad`, ({ removeStyle, addStyle, item }) => {\n if (item.renditionLayout !== `pre-paginated`) {\n removeStyle(`prose-reader-fonts`);\n addStyle(`prose-reader-fonts`, getStyle());\n }\n });\n const shouldRequireLayout = (source) => source\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.pairwise)(), (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.map)(([old, latest]) => {\n if (latest.fontScale !== old.fontScale)\n return true;\n if (latest.lineHeight !== old.lineHeight)\n return true;\n return false;\n }));\n settingsSubject$.asObservable()\n .pipe(shouldRequireLayout, (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)(applyChangeToSpineItem), (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.takeUntil)(reader.$.destroy$))\n .subscribe();\n return Object.assign(Object.assign({}, reader), { setSettings: (settings) => {\n const { fontJustification = settingsSubject$.value.fontJustification, fontScale = settingsSubject$.value.fontScale, fontWeight = settingsSubject$.value.fontWeight, lineHeight = settingsSubject$.value.lineHeight } = settings, passthroughSettings = __rest(settings, [\"fontJustification\", \"fontScale\", \"fontWeight\", \"lineHeight\"]);\n if (hasOneKey(settings, [`fontJustification`, `fontScale`, `fontWeight`, `lineHeight`])) {\n settingsSubject$.next({ fontJustification, fontScale, fontWeight, lineHeight });\n }\n reader.setSettings(passthroughSettings);\n }, $: Object.assign(Object.assign({}, reader.$), { settings$: (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.combineLatest)([reader.$.settings$, settingsSubject$])\n .pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_0__.map)(([innerSettings, settings]) => (Object.assign(Object.assign({}, innerSettings), settings)))) }) });\n};\nconst hasOneKey = (obj, keys) => keys.some(key => key in obj);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFJLENBQ0gseUNBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQ0FDOUIsYUFBYSxHQUNiLFFBQVEsRUFDWCxDQUFDLENBQ0osT0FFTjtBQUNILENBQUM7QUFFRCxNQUFNLFNBQVMsR0FBRyxDQUE2QixHQUFRLEVBQUUsSUFBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0Bwcm9zZS1yZWFkZXIvY29yZS8uL3NyYy9lbmhhbmNlcnMvZm9udHMudHM/YTU5NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgT2JzZXJ2ZWRWYWx1ZU9mLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiXG5pbXBvcnQgeyB0YXAsIHBhaXJ3aXNlIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCJcbmltcG9ydCB7IEVuaGFuY2VyIH0gZnJvbSBcIi4vdHlwZXNcIlxuXG5jb25zdCBGT05UX1dFSUdIVCA9IFsxMDAsIDIwMCwgMzAwLCA0MDAsIDUwMCwgNjAwLCA3MDAsIDgwMCwgOTAwXSBhcyBjb25zdFxuY29uc3QgRk9OVF9KVVNUSUZJQ0FUSU9OID0gW2BjZW50ZXJgLCBgbGVmdGAsIGByaWdodGAsIGBqdXN0aWZ5YF0gYXMgY29uc3RcblxudHlwZSBPcHRpb25zID0ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNjYWxlIHRoZSBmb250IHNpemUuIDEgbWVhbnMgdXNlIGRlZmF1bHQgcHVibGlzaGVyL2Jyb3dzZXIgZm9udCBzaXplLCAyIG1lYW5zIDIwMCVcbiAgICogMC41IDUwJSwgZXRjXG4gICAqL1xuICBmb250U2NhbGU/OiBudW1iZXIsXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0IHRoZSBsaW5lIGhlaWdodCBvZiB0aGUgdGV4dC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMVxuICAgKi9cbiAgbGluZUhlaWdodD86IG51bWJlciB8IGBwdWJsaXNoZXJgLFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldCBmb250IHdlaWdodCBvZiB0ZXh0XG4gICAqL1xuICBmb250V2VpZ2h0PzogdHlwZW9mIEZPTlRfV0VJR0hUW251bWJlcl0gfCBgcHVibGlzaGVyYCxcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXQgdGV4dCBhbGlnbiBqdXN0aWZpY2F0aW9uXG4gICAqL1xuICBmb250SnVzdGlmaWNhdGlvbj86IHR5cGVvZiBGT05UX0pVU1RJRklDQVRJT05bbnVtYmVyXSB8IGBwdWJsaXNoZXJgLFxufVxuXG50eXBlIE91dHB1dE9wdGlvbnMgPSBSZXF1aXJlZDxPcHRpb25zPlxuXG4vKipcbiAqIEBpbXBvcnRhbnRcbiAqIFdlIGRvbid0IGFwcGx5IGZvbnQgc2NhbGluZyBvbiBwcmUtcGFnaW5hdGVkIGJlY2F1c2UgaXQgY291bGQgcG90ZW50aWFsbHlcbiAqIGJyZWFrIHB1Ymxpc2hlciBzY2FsaW5nLiBTaW5jZSBpdCdzIHNwZWNpZmljYWxseSBtYWRlIGZvciB0aGUgZ2l2ZW4gZml4ZWQgbGF5b3V0XG4gKiB3ZSBzaG91bGQgdHJ1c3QgdGhlIHB1Ymxpc2hlciBhbmQgbm90IGJyZWFrIGl0cyByZW5kZXJpbmcuXG4gKiBAc2VlIDk3ODEyNTAyMTM2NjJcbiAqXG4gKiBTZXR0aW5nIHRoZSBmb250IHNjYWxlIG9uIGJvZHkgc3RpbGwgaGFzIGEgY2hhbmNlIHRvIGJyZWFrIHB1Ymxpc2hlciBwb3RlbnRpYWxcbiAqIGZvbnQgc2l6ZSBvbiBib2R5IGlmIHRoZXkgYWxyZWFkeSB1c2Ugc29tZXRoaW5nLlxuICogQHNlZSA5NzgyNzE0NDkzNzQzXG4gKi9cbmV4cG9ydCBjb25zdCBmb250c0VuaGFuY2VyOiBFbmhhbmNlcjxPcHRpb25zLCB7fSwgT3B0aW9ucywgT3V0cHV0T3B0aW9ucz4gPSAobmV4dCkgPT4gKHtcbiAgZm9udFNjYWxlID0gMSxcbiAgbGluZUhlaWdodCA9IGBwdWJsaXNoZXJgLFxuICBmb250V2VpZ2h0ID0gYHB1Ymxpc2hlcmAsXG4gIGZvbnRKdXN0aWZpY2F0aW9uID0gYHB1Ymxpc2hlcmAsXG4gIC4uLm9wdGlvbnNcbn0pID0+IHtcbiAgY29uc3Qgc2V0dGluZ3NTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T3V0cHV0T3B0aW9ucz4oe1xuICAgIGZvbnRTY2FsZSxcbiAgICBsaW5lSGVpZ2h0LFxuICAgIGZvbnRXZWlnaHQsXG4gICAgZm9udEp1c3RpZmljYXRpb25cbiAgfSlcbiAgY29uc3QgcmVhZGVyID0gbmV4dChvcHRpb25zKVxuXG4gIGNvbnN0IGdldFN0eWxlID0gKCkgPT4gYFxuICAgICR7LypcbiAgICAgIElkZWFsbHksIHdlIHdvdWxkIGxpa2UgdG8gdXNlICFpbXBvcnRhbnQgYnV0IGl0IGNvdWxkIGJyZWFrIHB1Ymxpc2hlciBzcGVjaWZpY1xuICAgICAgY2FzZXMuXG4gICAgICBBbHNvIHJpZ2h0IG5vdyB3ZSBkbyBub3QgYXBwbHkgaXQgdG8gKiBzaW5jZSBpdCB3b3VsZCBhbHNvIGJyZWFrIHB1Ymxpc2hlclxuICAgICAgbW9yZSBzcGVjaWZpYyBzY2FsaW5nIGRvd24gdGhlIHRyZWUuXG5cbiAgICAgIGJvZHkgKjpub3QoW2NsYXNzXj1cIm1qeC1cIl0pIHtcbiAgICAqL2BgfVxuICAgIGJvZHkge1xuICAgICAgJHtzZXR0aW5nc1N1YmplY3QkLnZhbHVlLmZvbnRTY2FsZSAhPT0gMVxuICAgICAgPyBgZm9udC1zaXplOiAke3NldHRpbmdzU3ViamVjdCQudmFsdWUuZm9udFNjYWxlfWVtICFpbXBvcnRhbnQ7YFxuICAgICAgOiBgYH1cbiAgICAgICR7c2V0dGluZ3NTdWJqZWN0JC52YWx1ZS5saW5lSGVpZ2h0ICE9PSBgcHVibGlzaGVyYFxuICAgICAgPyBgbGluZS1oZWlnaHQ6ICR7c2V0dGluZ3NTdWJqZWN0JC52YWx1ZS5saW5lSGVpZ2h0fSAhaW1wb3J0YW50O2BcbiAgICAgIDogYGB9XG4gICAgICAke3NldHRpbmdzU3ViamVjdCQudmFsdWUuZm9udFdlaWdodCAhPT0gYHB1Ymxpc2hlcmBcbiAgICAgID8gYGZvbnQtd2VpZ2h0OiAke3NldHRpbmdzU3ViamVjdCQudmFsdWUuZm9udFdlaWdodH0gIWltcG9ydGFudDtgXG4gICAgICA6IGBgfVxuICAgICAgJHtzZXR0aW5nc1N1YmplY3QkLnZhbHVlLmZvbnRKdXN0aWZpY2F0aW9uICE9PSBgcHVibGlzaGVyYFxuICAgICAgPyBgdGV4dC1hbGlnbjogJHtzZXR0aW5nc1N1YmplY3QkLnZhbHVlLmZvbnRKdXN0aWZpY2F0aW9ufSAhaW1wb3J0YW50O2BcbiAgICAgIDogYGB9XG4gICAgfVxuICBgXG5cbiAgLyoqXG4gICAqIFByb2dyYW1tYXRpY2FsbHkgdXBkYXRlIGV2ZXJ5IGxvYWRlZCBpdGVtc1xuICAgKi9cbiAgY29uc3QgYXBwbHlDaGFuZ2VUb1NwaW5lSXRlbSA9IChyZXF1aXJlTGF5b3V0OiBib29sZWFuKSA9PiB7XG4gICAgcmVhZGVyLm1hbmlwdWxhdGVTcGluZUl0ZW1zKCh7IHJlbW92ZVN0eWxlLCBhZGRTdHlsZSwgaXRlbSB9KSA9PiB7XG4gICAgICBpZiAoaXRlbS5yZW5kaXRpb25MYXlvdXQgIT09IGBwcmUtcGFnaW5hdGVkYCkge1xuICAgICAgICByZW1vdmVTdHlsZShgcHJvc2UtcmVhZGVyLWZvbnRzYClcbiAgICAgICAgYWRkU3R5bGUoYHByb3NlLXJlYWRlci1mb250c2AsIGdldFN0eWxlKCkpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXF1aXJlTGF5b3V0XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIHN1cmUgd2UgYXBwbHkgdGhlIHN0eWxlIHRvIGFueSBuZXcgaXRlbSBsb2FkZWQuXG4gICAqL1xuICByZWFkZXIucmVnaXN0ZXJIb29rKGBpdGVtLm9uTG9hZGAsICh7IHJlbW92ZVN0eWxlLCBhZGRTdHlsZSwgaXRlbSB9KSA9PiB7XG4gICAgaWYgKGl0ZW0ucmVuZGl0aW9uTGF5b3V0ICE9PSBgcHJlLXBhZ2luYXRlZGApIHtcbiAgICAgIHJlbW92ZVN0eWxlKGBwcm9zZS1yZWFkZXItZm9udHNgKVxuICAgICAgYWRkU3R5bGUoYHByb3NlLXJlYWRlci1mb250c2AsIGdldFN0eWxlKCkpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IHNob3VsZFJlcXVpcmVMYXlvdXQgPSA8VCBleHRlbmRzIE9ic2VydmVkVmFsdWVPZjx0eXBlb2Ygc2V0dGluZ3NTdWJqZWN0JD4+KHNvdXJjZTogT2JzZXJ2YWJsZTxUPikgPT4gc291cmNlXG4gICAgLnBpcGUoXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgbWFwKChbb2xkLCBsYXRlc3RdKSA9PiB7XG4gICAgICAgIGlmIChsYXRlc3QuZm9udFNjYWxlICE9PSBvbGQuZm9udFNjYWxlKSByZXR1cm4gdHJ1ZVxuICAgICAgICBpZiAobGF0ZXN0LmxpbmVIZWlnaHQgIT09IG9sZC5saW5lSGVpZ2h0KSByZXR1cm4gdHJ1ZVxuXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfSlcbiAgICApXG5cbiAgc2V0dGluZ3NTdWJqZWN0JC5hc09ic2VydmFibGUoKVxuICAgIC5waXBlKFxuICAgICAgc2hvdWxkUmVxdWlyZUxheW91dCxcbiAgICAgIHRhcChhcHBseUNoYW5nZVRvU3BpbmVJdGVtKSxcbiAgICAgIHRha2VVbnRpbChyZWFkZXIuJC5kZXN0cm95JClcbiAgICApXG4gICAgLnN1YnNjcmliZSgpXG5cbiAgcmV0dXJuIHtcbiAgICAuLi5yZWFkZXIsXG4gICAgLyoqXG4gICAgICogQWJzb3JiIGN1cnJlbnQgZW5oYW5jZXIgc2V0dGluZ3MgYW5kIHBhc3N0aHJvdWdoIHRoZSByZXN0IHRvIHJlYWRlclxuICAgICAqL1xuICAgIHNldFNldHRpbmdzOiAoc2V0dGluZ3MpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZm9udEp1c3RpZmljYXRpb24gPSBzZXR0aW5nc1N1YmplY3QkLnZhbHVlLmZvbnRKdXN0aWZpY2F0aW9uLFxuICAgICAgICBmb250U2NhbGUgPSBzZXR0aW5nc1N1YmplY3QkLnZhbHVlLmZvbnRTY2FsZSxcbiAgICAgICAgZm9udFdlaWdodCA9IHNldHRpbmdzU3ViamVjdCQudmFsdWUuZm9udFdlaWdodCxcbiAgICAgICAgbGluZUhlaWdodCA9IHNldHRpbmdzU3ViamVjdCQudmFsdWUubGluZUhlaWdodCxcbiAgICAgICAgLi4ucGFzc3Rocm91Z2hTZXR0aW5nc1xuICAgICAgfSA9IHNldHRpbmdzXG5cbiAgICAgIGlmIChoYXNPbmVLZXkoc2V0dGluZ3MsIFtgZm9udEp1c3RpZmljYXRpb25gLCBgZm9udFNjYWxlYCwgYGZvbnRXZWlnaHRgLCBgbGluZUhlaWdodGBdKSkge1xuICAgICAgICBzZXR0aW5nc1N1YmplY3QkLm5leHQoeyBmb250SnVzdGlmaWNhdGlvbiwgZm9udFNjYWxlLCBmb250V2VpZ2h0LCBsaW5lSGVpZ2h0IH0pXG4gICAgICB9XG4gICAgICByZWFkZXIuc2V0U2V0dGluZ3MocGFzc3Rocm91Z2hTZXR0aW5ncylcbiAgICB9LFxuICAgICQ6IHtcbiAgICAgIC4uLnJlYWRlci4kLFxuICAgICAgLyoqXG4gICAgICAgKiBDb21iaW5lIHJlYWRlciBzZXR0aW5ncyB3aXRoIGVuaGFuY2VyIHNldHRpbmdzXG4gICAgICAgKi9cbiAgICAgIHNldHRpbmdzJDogY29tYmluZUxhdGVzdChbcmVhZGVyLiQuc2V0dGluZ3MkLCBzZXR0aW5nc1N1YmplY3QkXSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChbaW5uZXJTZXR0aW5ncywgc2V0dGluZ3NdKSA9PiAoe1xuICAgICAgICAgICAgLi4uaW5uZXJTZXR0aW5ncyxcbiAgICAgICAgICAgIC4uLnNldHRpbmdzXG4gICAgICAgICAgfSkpXG4gICAgICAgIClcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgaGFzT25lS2V5ID0gPE9iaiwgS2V5IGV4dGVuZHMga2V5b2YgT2JqPihvYmo6IE9iaiwga2V5czogS2V5W10pID0+IGtleXMuc29tZShrZXkgPT4ga2V5IGluIG9iailcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/enhancers/fonts.ts\n");
|
|
90
|
+
|
|
91
|
+
/***/ }),
|
|
92
|
+
|
|
93
|
+
/***/ "./src/enhancers/hotkeys.ts":
|
|
94
|
+
/*!**********************************!*\
|
|
95
|
+
!*** ./src/enhancers/hotkeys.ts ***!
|
|
96
|
+
\**********************************/
|
|
97
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
98
|
+
|
|
99
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"hotkeysEnhancer\": () => (/* binding */ hotkeysEnhancer)\n/* harmony export */ });\nconst hotkeysEnhancer = (next) => (options) => {\n const reader = next(options);\n const onKeyPress = (e) => {\n if (e.key === `ArrowRight`) {\n reader.turnRight();\n }\n if (e.key === `ArrowLeft`) {\n reader.turnLeft();\n }\n };\n document.addEventListener(`keyup`, onKeyPress);\n reader.registerHook(`item.onLoad`, ({ frame }) => {\n var _a;\n (_a = frame.contentDocument) === null || _a === void 0 ? void 0 : _a.addEventListener(`keyup`, onKeyPress);\n return () => {\n var _a;\n (_a = frame.contentDocument) === null || _a === void 0 ? void 0 : _a.removeEventListener(`keyup`, onKeyPress);\n };\n });\n const destroy = () => {\n document.removeEventListener(`keyup`, onKeyPress);\n reader.destroy();\n };\n return Object.assign(Object.assign({}, reader), { destroy });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZW5oYW5jZXJzL2hvdGtleXMudHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUVPLE1BQU0sZUFBZSxHQUFxQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtJQUNyRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBRTVCLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBZ0IsRUFBRSxFQUFFO1FBQ3RDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxZQUFZLEVBQUU7WUFDMUIsTUFBTSxDQUFDLFNBQVMsRUFBRTtTQUNuQjtRQUVELElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUU7WUFDekIsTUFBTSxDQUFDLFFBQVEsRUFBRTtTQUNsQjtJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQztJQUU5QyxNQUFNLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTs7UUFDL0MsV0FBSyxDQUFDLGVBQWUsMENBQUUsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQztRQUU1RCxPQUFPLEdBQUcsRUFBRTs7WUFDVixXQUFLLENBQUMsZUFBZSwwQ0FBRSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUU7UUFDbkIsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7UUFDakQsTUFBTSxDQUFDLE9BQU8sRUFBRTtJQUNsQixDQUFDO0lBRUQsdUNBQ0ssTUFBTSxLQUNULE9BQU8sSUFDUjtBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvZW5oYW5jZXJzL2hvdGtleXMudHM/NWNhYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbmhhbmNlciB9IGZyb20gXCIuL3R5cGVzXCJcblxuZXhwb3J0IGNvbnN0IGhvdGtleXNFbmhhbmNlcjogRW5oYW5jZXI8e30sIHt9PiA9IChuZXh0KSA9PiAob3B0aW9ucykgPT4ge1xuICBjb25zdCByZWFkZXIgPSBuZXh0KG9wdGlvbnMpXG5cbiAgY29uc3Qgb25LZXlQcmVzcyA9IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGUua2V5ID09PSBgQXJyb3dSaWdodGApIHtcbiAgICAgIHJlYWRlci50dXJuUmlnaHQoKVxuICAgIH1cblxuICAgIGlmIChlLmtleSA9PT0gYEFycm93TGVmdGApIHtcbiAgICAgIHJlYWRlci50dXJuTGVmdCgpXG4gICAgfVxuICB9XG5cbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihga2V5dXBgLCBvbktleVByZXNzKVxuXG4gIHJlYWRlci5yZWdpc3Rlckhvb2soYGl0ZW0ub25Mb2FkYCwgKHsgZnJhbWUgfSkgPT4ge1xuICAgIGZyYW1lLmNvbnRlbnREb2N1bWVudD8uYWRkRXZlbnRMaXN0ZW5lcihga2V5dXBgLCBvbktleVByZXNzKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGZyYW1lLmNvbnRlbnREb2N1bWVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihga2V5dXBgLCBvbktleVByZXNzKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoYGtleXVwYCwgb25LZXlQcmVzcylcbiAgICByZWFkZXIuZGVzdHJveSgpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnJlYWRlcixcbiAgICBkZXN0cm95XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/enhancers/hotkeys.ts\n");
|
|
100
|
+
|
|
101
|
+
/***/ }),
|
|
102
|
+
|
|
103
|
+
/***/ "./src/enhancers/layoutEnhancer/createMovingSafePan$.ts":
|
|
104
|
+
/*!**************************************************************!*\
|
|
105
|
+
!*** ./src/enhancers/layoutEnhancer/createMovingSafePan$.ts ***!
|
|
106
|
+
\**************************************************************/
|
|
107
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
108
|
+
|
|
109
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createMovingSafePan$\": () => (/* binding */ createMovingSafePan$)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__);\n\n\nconst SHOULD_NOT_LAYOUT = false;\nconst createMovingSafePan$ = (reader) => {\n let iframeOverlayForAnimationsElement;\n reader.manipulateContainer((container) => {\n iframeOverlayForAnimationsElement = container.ownerDocument.createElement(`div`);\n iframeOverlayForAnimationsElement.style.cssText = `\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n visibility: hidden;\n `;\n container.appendChild(iframeOverlayForAnimationsElement);\n return SHOULD_NOT_LAYOUT;\n });\n const createResetLock$ = (source) => (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.scheduled)(source, rxjs__WEBPACK_IMPORTED_MODULE_0__.animationFrameScheduler)\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)(() => {\n iframeOverlayForAnimationsElement === null || iframeOverlayForAnimationsElement === void 0 ? void 0 : iframeOverlayForAnimationsElement.style.setProperty(`visibility`, `hidden`);\n }));\n const viewportFree$ = reader.$.viewportState$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)(data => data === `free`));\n const viewportBusy$ = reader.$.viewportState$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)(data => data === `busy`));\n const lockAfterViewportBusy$ = viewportBusy$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)(() => {\n iframeOverlayForAnimationsElement === null || iframeOverlayForAnimationsElement === void 0 ? void 0 : iframeOverlayForAnimationsElement.style.setProperty(`visibility`, `visible`);\n }));\n const resetLockViewportFree$ = createResetLock$(viewportFree$)\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.take)(1));\n const pageTurnMode$ = reader.context.$.settings$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.map)(() => reader.context.getSettings().computedPageTurnMode), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.distinctUntilChanged)());\n const handleViewportLock$ = pageTurnMode$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)((mode) => mode === `controlled`\n ? lockAfterViewportBusy$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(() => resetLockViewportFree$))\n : createResetLock$((0,rxjs__WEBPACK_IMPORTED_MODULE_0__.of)(undefined))), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(reader.$.destroy$));\n return handleViewportLock$;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZW5oYW5jZXJzL2xheW91dEVuaGFuY2VyL2NyZWF0ZU1vdmluZ1NhZmVQYW4kLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXlFO0FBQzBCO0FBR25HLE1BQU0saUJBQWlCLEdBQUcsS0FBSztBQVl4QixNQUFNLG9CQUFvQixHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUU7SUFDckQsSUFBSSxpQ0FBNkQ7SUFFakUsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7UUFDdkMsaUNBQWlDLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ2hGLGlDQUFpQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUc7Ozs7Ozs7S0FPakQ7UUFDRCxTQUFTLENBQUMsV0FBVyxDQUFDLGlDQUFpQyxDQUFDO1FBRXhELE9BQU8saUJBQWlCO0lBQzFCLENBQUMsQ0FBQztJQUVGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBSSxNQUFxQixFQUFFLEVBQUUsQ0FBQywrQ0FBUyxDQUFDLE1BQU0sRUFBRSx5REFBdUIsQ0FBQztTQUM5RixJQUFJLENBQ0gsbURBQUcsQ0FBQyxHQUFHLEVBQUU7UUFDUCxpQ0FBaUMsYUFBakMsaUNBQWlDLHVCQUFqQyxpQ0FBaUMsQ0FBRSxLQUFLLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUM7SUFDOUUsQ0FBQyxDQUFDLENBQ0g7SUFFSCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsc0RBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztJQUNuRixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsc0RBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztJQUVuRixNQUFNLHNCQUFzQixHQUFHLGFBQWE7U0FDekMsSUFBSSxDQUNILG1EQUFHLENBQUMsR0FBRyxFQUFFO1FBQ1AsaUNBQWlDLGFBQWpDLGlDQUFpQyx1QkFBakMsaUNBQWlDLENBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDO0lBQy9FLENBQUMsQ0FBQyxDQUNIO0lBRUgsTUFBTSxzQkFBc0IsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7U0FDM0QsSUFBSSxDQUNILG9EQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1I7SUFFSCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQzdDLElBQUksQ0FDSCxtREFBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsb0JBQW9CLENBQUMsRUFDNUQsb0VBQW9CLEVBQUUsQ0FDdkI7SUFFSCxNQUFNLG1CQUFtQixHQUFHLGFBQWE7U0FDdEMsSUFBSSxDQUNILHlEQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxZQUFZO1FBQ3ZDLENBQUMsQ0FBQyxzQkFBc0I7YUFDckIsSUFBSSxDQUNILHlEQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUMsQ0FDeEM7UUFDSCxDQUFDLENBQUMsZ0JBQWdCLENBQUMsd0NBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUNsQyxFQUNELHlEQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FDN0I7SUFFSCxPQUFPLG1CQUFtQjtBQUM1QixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL2VuaGFuY2Vycy9sYXlvdXRFbmhhbmNlci9jcmVhdGVNb3ZpbmdTYWZlUGFuJC50cz8yMWM3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLCBPYnNlcnZhYmxlLCBvZiwgc2NoZWR1bGVkIH0gZnJvbSBcInJ4anNcIlxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCJcbmltcG9ydCB7IFJlYWRlciB9IGZyb20gXCIuLi8uLi9yZWFkZXJcIlxuXG5jb25zdCBTSE9VTERfTk9UX0xBWU9VVCA9IGZhbHNlXG5cbi8qKlxuICogRm9yIHNvbWUgcmVhc29uIChidWcgLyBleHBlY3RlZCAvIGVuZ2luZSBsYXlvdXQgb3B0aW1pemF0aW9uKSB3aGVuIHRoZSB2aWV3cG9ydCBpcyBiZWluZyBhbmltYXRlZCBjbGlja2luZyBpbnNpZGUgaWZyYW1lXG4gKiBzb21ldGltZXMgcmV0dXJucyBpbnZhbGlkIGNsaWVudFggdmFsdWUuIFRoaXMgbWVhbnMgdGhhdCB3aGVuIHJhcGlkbHkgKG9yIG5vdCkgY2xpY2tpbmcgZHVyaW5nIGFuaW1hdGlvbiBvbiBpZnJhbWUgd2lsbCBvZnRlblxuICogdGltZSByZXR1cm5zIGludmFsaWQgdmFsdWUuIEluIG9yZGVyIHRvIHJlZHVjZSBwb3RlbnRpYWwgdW53YW50ZWQgYmVoYXZpb3Igb24gY29uc3VtZXIgc2lkZSwgd2UgdGVtcG9yYXJpbHkgaGlkZSB0aGUgaWZyYW1lIGJlaGluZFxuICogYW4gb3ZlcmxheS4gVGhhdCB3YXkgdGhlIG92ZXJsYXkgdGFrZSBvdmVyIGZvciB0aGUgcG9pbnRlciBldmVudCBhbmQgd2UgYWxsIGdvb2QuXG4gKlxuICogQGltcG9ydGFudFxuICogVGhpcyBvYnZpb3VzbHkgYmxvY2sgYW55IGludGVyYWN0aW9uIHdpdGggaWZyYW1lIGJ1dCB0aGVyZSBzaG91bGQgbm90IGJlIHN1Y2ggaW50ZXJhY3Rpb24gd2l0aCBpZnJhbWUgaW4gdGhlb3J5LlxuICogVGhlb3JldGljYWxseSBpZiB1c2VyIGRlY2lkZSB0byBpbnRlcmFjdCBkdXJpbmcgdGhlIGFuaW1hdGlvbiB0aGF0J3MgZWl0aGVyIHRvIHN0b3AgaXQgb3Igc3dpcGUgdGhlIHBhZ2VzLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlTW92aW5nU2FmZVBhbiQgPSAocmVhZGVyOiBSZWFkZXIpID0+IHtcbiAgbGV0IGlmcmFtZU92ZXJsYXlGb3JBbmltYXRpb25zRWxlbWVudDogSFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWRcblxuICByZWFkZXIubWFuaXB1bGF0ZUNvbnRhaW5lcigoY29udGFpbmVyKSA9PiB7XG4gICAgaWZyYW1lT3ZlcmxheUZvckFuaW1hdGlvbnNFbGVtZW50ID0gY29udGFpbmVyLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChgZGl2YClcbiAgICBpZnJhbWVPdmVybGF5Rm9yQW5pbWF0aW9uc0VsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IGBcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0b3A6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBgXG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGlmcmFtZU92ZXJsYXlGb3JBbmltYXRpb25zRWxlbWVudClcblxuICAgIHJldHVybiBTSE9VTERfTk9UX0xBWU9VVFxuICB9KVxuXG4gIGNvbnN0IGNyZWF0ZVJlc2V0TG9jayQgPSA8VD4oc291cmNlOiBPYnNlcnZhYmxlPFQ+KSA9PiBzY2hlZHVsZWQoc291cmNlLCBhbmltYXRpb25GcmFtZVNjaGVkdWxlcilcbiAgICAucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmcmFtZU92ZXJsYXlGb3JBbmltYXRpb25zRWxlbWVudD8uc3R5bGUuc2V0UHJvcGVydHkoYHZpc2liaWxpdHlgLCBgaGlkZGVuYClcbiAgICAgIH0pXG4gICAgKVxuXG4gIGNvbnN0IHZpZXdwb3J0RnJlZSQgPSByZWFkZXIuJC52aWV3cG9ydFN0YXRlJC5waXBlKGZpbHRlcihkYXRhID0+IGRhdGEgPT09IGBmcmVlYCkpXG4gIGNvbnN0IHZpZXdwb3J0QnVzeSQgPSByZWFkZXIuJC52aWV3cG9ydFN0YXRlJC5waXBlKGZpbHRlcihkYXRhID0+IGRhdGEgPT09IGBidXN5YCkpXG5cbiAgY29uc3QgbG9ja0FmdGVyVmlld3BvcnRCdXN5JCA9IHZpZXdwb3J0QnVzeSRcbiAgICAucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmcmFtZU92ZXJsYXlGb3JBbmltYXRpb25zRWxlbWVudD8uc3R5bGUuc2V0UHJvcGVydHkoYHZpc2liaWxpdHlgLCBgdmlzaWJsZWApXG4gICAgICB9KVxuICAgIClcblxuICBjb25zdCByZXNldExvY2tWaWV3cG9ydEZyZWUkID0gY3JlYXRlUmVzZXRMb2NrJCh2aWV3cG9ydEZyZWUkKVxuICAgIC5waXBlKFxuICAgICAgdGFrZSgxKVxuICAgIClcblxuICBjb25zdCBwYWdlVHVybk1vZGUkID0gcmVhZGVyLmNvbnRleHQuJC5zZXR0aW5ncyRcbiAgICAucGlwZShcbiAgICAgIG1hcCgoKSA9PiByZWFkZXIuY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkUGFnZVR1cm5Nb2RlKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApXG5cbiAgY29uc3QgaGFuZGxlVmlld3BvcnRMb2NrJCA9IHBhZ2VUdXJuTW9kZSRcbiAgICAucGlwZShcbiAgICAgIHN3aXRjaE1hcCgobW9kZSkgPT4gbW9kZSA9PT0gYGNvbnRyb2xsZWRgXG4gICAgICAgID8gbG9ja0FmdGVyVmlld3BvcnRCdXN5JFxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHJlc2V0TG9ja1ZpZXdwb3J0RnJlZSQpXG4gICAgICAgICAgKVxuICAgICAgICA6IGNyZWF0ZVJlc2V0TG9jayQob2YodW5kZWZpbmVkKSlcbiAgICAgICksXG4gICAgICB0YWtlVW50aWwocmVhZGVyLiQuZGVzdHJveSQpXG4gICAgKVxuXG4gIHJldHVybiBoYW5kbGVWaWV3cG9ydExvY2skXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/enhancers/layoutEnhancer/createMovingSafePan$.ts\n");
|
|
110
|
+
|
|
111
|
+
/***/ }),
|
|
112
|
+
|
|
113
|
+
/***/ "./src/enhancers/layoutEnhancer/layoutEnhancer.ts":
|
|
114
|
+
/*!********************************************************!*\
|
|
115
|
+
!*** ./src/enhancers/layoutEnhancer/layoutEnhancer.ts ***!
|
|
116
|
+
\********************************************************/
|
|
117
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
118
|
+
|
|
119
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"layoutEnhancer\": () => (/* binding */ layoutEnhancer)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _createMovingSafePan$__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createMovingSafePan$ */ \"./src/enhancers/layoutEnhancer/createMovingSafePan$.ts\");\n/* harmony import */ var _utils_rxjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/rxjs */ \"./src/utils/rxjs.ts\");\n/* harmony import */ var _utils_objects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/objects */ \"./src/utils/objects.ts\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\nconst SHOULD_NOT_LAYOUT = false;\nconst layoutEnhancer = (next) => (_a) => {\n var { pageHorizontalMargin = 24, pageVerticalMargin = 24 } = _a, options = __rest(_a, [\"pageHorizontalMargin\", \"pageVerticalMargin\"]);\n const reader = next(options);\n const settingsSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject({\n pageHorizontalMargin,\n pageVerticalMargin\n });\n reader.registerHook(`onViewportOffsetAdjust`, () => {\n let hasRedrawn = false;\n reader.manipulateSpineItems(({ frame }) => {\n if (!hasRedrawn && frame) {\n void (frame.getBoundingClientRect().left);\n hasRedrawn = true;\n }\n return SHOULD_NOT_LAYOUT;\n });\n });\n reader.registerHook(`item.onLayoutBeforeMeasurment`, ({ frame, minimumWidth, item, isImageType }) => {\n var _a, _b;\n const { pageHorizontalMargin = 0, pageVerticalMargin = 0 } = settingsSubject$.value;\n const pageSize = reader.context.getPageSize();\n if (item.renditionLayout === `reflowable` &&\n frame.getIsReady() &&\n !isImageType() &&\n !frame.getViewportDimensions()) {\n let columnWidth = pageSize.width - (pageHorizontalMargin * 2);\n const columnHeight = pageSize.height - (pageVerticalMargin * 2);\n let width = pageSize.width - (pageHorizontalMargin * 2);\n let columnGap = pageHorizontalMargin * 2;\n if (frame.isUsingVerticalWriting()) {\n width = minimumWidth - (pageHorizontalMargin * 2);\n columnWidth = columnHeight;\n columnGap = pageVerticalMargin * 2;\n }\n (_a = frame.getManipulableFrame()) === null || _a === void 0 ? void 0 : _a.removeStyle(`prose-layout-enhancer-css`);\n (_b = frame.getManipulableFrame()) === null || _b === void 0 ? void 0 : _b.addStyle(`prose-layout-enhancer-css`, `\n body {\n width: ${width}px !important;\n margin: ${pageVerticalMargin}px ${pageHorizontalMargin}px !important;\n column-gap: ${columnGap}px !important;\n column-width: ${columnWidth}px !important;\n height: ${columnHeight}px !important;\n }\n img, video, audio, object, svg {\n max-width: ${columnWidth}px !important;\n max-height: ${columnHeight}px !important;\n }\n table {\n max-width: ${columnWidth}px !important;\n }\n td {\n max-width: ${columnWidth}px;\n }\n `);\n }\n });\n let observer;\n if (options.layoutAutoResize === `container`) {\n observer = new ResizeObserver(() => {\n reader === null || reader === void 0 ? void 0 : reader.layout();\n });\n observer.observe(options.containerElement);\n }\n const movingSafePan$ = (0,_createMovingSafePan$__WEBPACK_IMPORTED_MODULE_2__.createMovingSafePan$)(reader);\n movingSafePan$.subscribe();\n settingsSubject$\n .pipe((0,_utils_rxjs__WEBPACK_IMPORTED_MODULE_3__.mapKeysTo)([`pageHorizontalMargin`, `pageVerticalMargin`]), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.distinctUntilChanged)(_utils_objects__WEBPACK_IMPORTED_MODULE_4__.isShallowEqual), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.skip)(1), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)(() => {\n reader.spine.layout();\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(reader.$.destroy$))\n .subscribe();\n return Object.assign(Object.assign({}, reader), { destroy: () => {\n reader.destroy();\n observer === null || observer === void 0 ? void 0 : observer.disconnect();\n }, setSettings: (_a) => {\n var { pageVerticalMargin, pageHorizontalMargin } = _a, rest = __rest(_a, [\"pageVerticalMargin\", \"pageHorizontalMargin\"]);\n if (pageHorizontalMargin !== undefined || pageVerticalMargin !== undefined) {\n settingsSubject$.next({\n pageHorizontalMargin: pageHorizontalMargin !== null && pageHorizontalMargin !== void 0 ? pageHorizontalMargin : settingsSubject$.value.pageHorizontalMargin,\n pageVerticalMargin: pageVerticalMargin !== null && pageVerticalMargin !== void 0 ? pageVerticalMargin : settingsSubject$.value.pageVerticalMargin\n });\n }\n reader.setSettings(rest);\n }, $: Object.assign(Object.assign({}, reader.$), { settings$: (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.combineLatest)([reader.$.settings$, settingsSubject$.asObservable()])\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.map)(([innerSettings, settings]) => (Object.assign(Object.assign({}, innerSettings), settings)))) }) });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZW5oYW5jZXJzL2xheW91dEVuaGFuY2VyL2xheW91dEVuaGFuY2VyLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcUQ7QUFDMkI7QUFFbkI7QUFDakI7QUFDUTtBQUVwRCxNQUFNLGlCQUFpQixHQUFHLEtBQUs7QUFTeEIsTUFBTSxjQUFjLEdBT2EsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBa0UsRUFBRSxFQUFFO1FBQXRFLEVBQUUsb0JBQW9CLEdBQUcsRUFBRSxFQUFFLGtCQUFrQixHQUFHLEVBQUUsT0FBYyxFQUFULE9BQU8sY0FBaEUsOENBQWtFLENBQUY7SUFDakgsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUM1QixNQUFNLGdCQUFnQixHQUFHLElBQUksaURBQWUsQ0FBaUI7UUFDM0Qsb0JBQW9CO1FBQ3BCLGtCQUFrQjtLQUNuQixDQUFDO0lBRUYsTUFBTSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUU7UUFDakQsSUFBSSxVQUFVLEdBQUcsS0FBSztRQXdCdEIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxVQUFVLElBQUksS0FBSyxFQUFFO2dCQUV4QixLQUFLLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUMsSUFBSSxDQUFDO2dCQUN6QyxVQUFVLEdBQUcsSUFBSTthQUNsQjtZQUVELE9BQU8saUJBQWlCO1FBQzFCLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztJQU1GLE1BQU0sQ0FBQyxZQUFZLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7O1FBQ2xHLE1BQU0sRUFBRSxvQkFBb0IsR0FBRyxDQUFDLEVBQUUsa0JBQWtCLEdBQUcsQ0FBQyxFQUFFLEdBQUcsZ0JBQWdC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RixrQkFBa0IsRUFBRSxrQkFBa0IsYUFBbEIsa0JBQWtCLGNBQWxCLGtCQUFrQixHQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxrQkFBa0I7aUJBQ3BGLENBQUM7YUFDSDtZQUVELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzFCLENBQUMsRUFDRCxDQUFDLGtDQUNJLE1BQU0sQ0FBQyxDQUFDLEtBQ1gsU0FBUyxFQUFFLG1EQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO2lCQUM1RSxJQUFJLENBQ0gsbURBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQ0FDOUIsYUFBYSxHQUNiLFFBQVEsRUFDWCxDQUFDLENBQ0osT0FFTjtBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvZW5oYW5jZXJzL2xheW91dEVuaGFuY2VyL2xheW91dEVuaGFuY2VyLnRzPzRkYjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0IH0gZnJvbSBcInJ4anNcIlxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgdGFrZVVudGlsLCB0YXAsIHNraXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIlxuaW1wb3J0IHsgRW5oYW5jZXIgfSBmcm9tIFwiLi4vdHlwZXNcIlxuaW1wb3J0IHsgY3JlYXRlTW92aW5nU2FmZVBhbiQgfSBmcm9tIFwiLi9jcmVhdGVNb3ZpbmdTYWZlUGFuJFwiXG5pbXBvcnQgeyBtYXBLZXlzVG8gfSBmcm9tIFwiLi4vLi4vdXRpbHMvcnhqc1wiXG5pbXBvcnQgeyBpc1NoYWxsb3dFcXVhbCB9IGZyb20gXCIuLi8uLi91dGlscy9vYmplY3RzXCJcblxuY29uc3QgU0hPVUxEX05PVF9MQVlPVVQgPSBmYWxzZVxuXG50eXBlIFNldHRpbmdzSW5wdXQgPSB7XG4gIHBhZ2VIb3Jpem9udGFsTWFyZ2luPzogbnVtYmVyLFxuICBwYWdlVmVydGljYWxNYXJnaW4/OiBudW1iZXIsXG59XG5cbnR5cGUgU2V0dGluZ3NPdXRwdXQgPSBSZXF1aXJlZDxTZXR0aW5nc0lucHV0PlxuXG5leHBvcnQgY29uc3QgbGF5b3V0RW5oYW5jZXI6IEVuaGFuY2VyPFNldHRpbmdzSW5wdXQgJiB7XG4gIC8qKlxuICAgKiBDYW4gYmUgdXNlZCB0byBsZXQgdGhlIHJlYWRlciBhdXRvbWF0aWNhbGx5IHJlc2l6ZS5cbiAgICogYGNvbnRhaW5lcmA6IG9ic2VydmUgYW5kIHJlc2l6ZSB0aGUgcmVhZGVyIHdoZW5ldmVyIHRoZSBjb250YWluZXIgcmVzaXplLlxuICAgKiBgZmFsc2VgOiBkbyBub3QgYXV0b21hdGljYWxseSByZXNpemUuXG4gICAqL1xuICBsYXlvdXRBdXRvUmVzaXplPzogYGNvbnRhaW5lcmAgfCBmYWxzZVxufSwge30sIFNldHRpbmdzSW5wdXQsIFNldHRpbmdzT3V0cHV0PiA9IChuZXh0KSA9PiAoeyBwYWdlSG9yaXpvbnRhbE1hcmdpbiA9IDI0LCBwYWdlVmVydGljYWxNYXJnaW4gPSAyNCwgLi4ub3B0aW9ucyB9KSA9PiB7XG4gIGNvbnN0IHJlYWRlciA9IG5leHQob3B0aW9ucylcbiAgY29uc3Qgc2V0dGluZ3NTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2V0dGluZ3NPdXRwdXQ+KHtcbiAgICBwYWdlSG9yaXpvbnRhbE1hcmdpbixcbiAgICBwYWdlVmVydGljYWxNYXJnaW5cbiAgfSlcblxuICByZWFkZXIucmVnaXN0ZXJIb29rKGBvblZpZXdwb3J0T2Zmc2V0QWRqdXN0YCwgKCkgPT4ge1xuICAgIGxldCBoYXNSZWRyYXduID0gZmFsc2VcblxuICAgIC8qKlxuICAgICAqIFdoZW4gYWRqdXN0aW5nIHRoZSBvZmZzZXQsIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgcG9pbnRlciBldmVudCBiZWluZyBkaXNwYXRjaGVkIHJpZ2h0IGFmdGVyXG4gICAgICogaGF2ZSBhIHdyb25nIGBjbGllbnRYYCAvIGBwYWdlWGAgZXRjLiBUaGlzIGlzIGJlY2F1c2UgZXZlbiBpZiB0aGUgaWZyYW1lIGxlZnQgdmFsdWUgKG9uY2UgcmVxdWVzdGVkKSBpcyBjb3JyZWN0LFxuICAgICAqIGl0IGRvZXMgbm90IHNlZW0gdG8gaGF2ZSBiZWVuIGNvcnJlY3RseSB0YWtlbiBieSB0aGUgYnJvd3NlciB3aGVuIGNyZWF0aW5nIHRoZSBldmVudC5cbiAgICAgKiBXaGF0IHdlIGRvIGhlcmUgaXMgdGhhdCBhZnRlciBhIHZpZXdwb3J0IGFkanVzdG1lbnQgd2UgaW1tZWRpYXRlbHkgZm9yY2UgYSByZWZsb3cgb24gdGhlIGVuZ2luZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogW3BvaW50ZXIgZXZlbnRdIC0+IGNsaWVudFggPSA1MCwgbGVmdCA9IDAsIHRyYW5zbGF0ZWQgY2xpZW50WCA9IDUwIChDT1JSRUNUKVxuICAgICAqIFt0cmFuc2xhdGUgdmlld3BvcnRdIC0+IGxlZnQgPSArMTAwcHhcbiAgICAgKiBbcG9pbnRlciBldmVudF0gLT4gY2xpZW50WCA9IH41MCwgbGVmdCA9IC0xMDAsIHRyYW5zbGF0ZWQgY2xpZW50WCA9IH4tNTAgKElOQ09SUkVDVClcbiAgICAgKiBbcG9pbnRlciBldmVudF0gLT4gY2xpZW50WCA9IDE1MCwgbGVmdCA9IC0xMDAsIHRyYW5zbGF0ZWQgY2xpZW50WCA9IDUwIChDT1JSRUNUKVxuICAgICAqXG4gICAgICogRm9yIHNvbWUgcmVhc29uIHRoZSBlbmdpbmUgbXVzdCBiZSBkb2luZyBzb21lIG9wdGltaXphdGlvbiBhbmQgdW5mb3J0dW5hdGVseSB0aGUgZmlyc3QgcG9pbnRlciBldmVudCBnZXRzIHRoZSBjbGllbnRYIHdyb25nLlxuICAgICAqXG4gICAgICogVGhlIGJ1ZyBjYW4gYmUgb2JzZXJ2ZWQgYnkgY29tbWVudGluZyB0aGlzIGNvZGUsIHVzaW5nIENQVSBzbG93ZG93biBhbmQgaW5jcmVhc2luZyB0aGUgdGhyb3R0bGUgb24gdGhlIGFkanVzdG1lbnQgc3RyZWFtLlxuICAgICAqIFRoZSBidWcgc2VlbXMgdG8gYWZmZWN0IG9ubHkgY2hyb21lIC8gZmlyZWZveC4gTm9yIHNhZmFyaS5cbiAgICAgKlxuICAgICAqIEFsc28gd2Ugb25seSBuZWVkIHRvIHVzZSBgZ2V0Qm91bmRpbmdDbGllbnRSZWN0YCBvbmNlLlxuICAgICAqXG4gICAgICogQHRvZG9cbiAgICAgKiBDb25zaWRlciBjcmVhdGluZyBhIGJ1ZyB0aWNrZXQgb24gYm90aCBjaHJvbWl1bSBhbmQgZ2Vja28gcHJvamVjdHMuXG4gICAgICovXG4gICAgcmVhZGVyLm1hbmlwdWxhdGVTcGluZUl0ZW1zKCh7IGZyYW1lIH0pID0+IHtcbiAgICAgIGlmICghaGFzUmVkcmF3biAmJiBmcmFtZSkge1xuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdm9pZCAqL1xuICAgICAgICB2b2lkIChmcmFtZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KVxuICAgICAgICBoYXNSZWRyYXduID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gU0hPVUxEX05PVF9MQVlPVVRcbiAgICB9KVxuICB9KVxuXG4gIC8qKlxuICAgKiBBcHBseSBtYXJnaW5zIHRvIGZyYW1lIGl0ZW1cbiAgICogQHRvZG8gbWVtb2l6ZVxuICAgKi9cbiAgcmVhZGVyLnJlZ2lzdGVySG9vayhgaXRlbS5vbkxheW91dEJlZm9yZU1lYXN1cm1lbnRgLCAoeyBmcmFtZSwgbWluaW11bVdpZHRoLCBpdGVtLCBpc0ltYWdlVHlwZSB9KSA9PiB7XG4gICAgY29uc3QgeyBwYWdlSG9yaXpvbnRhbE1hcmdpbiA9IDAsIHBhZ2VWZXJ0aWNhbE1hcmdpbiA9IDAgfSA9IHNldHRpbmdzU3ViamVjdCQudmFsdWVcbiAgICBjb25zdCBwYWdlU2l6ZSA9IHJlYWRlci5jb250ZXh0LmdldFBhZ2VTaXplKClcblxuICAgIGlmIChcbiAgICAgIGl0ZW0ucmVuZGl0aW9uTGF5b3V0ID09PSBgcmVmbG93YWJsZWAgJiZcbiAgICAgIGZyYW1lLmdldElzUmVhZHkoKSAmJlxuICAgICAgIWlzSW1hZ2VUeXBlKCkgJiZcbiAgICAgICFmcmFtZS5nZXRWaWV3cG9ydERpbWVuc2lvbnMoKVxuICAgICkge1xuICAgICAgbGV0IGNvbHVtbldpZHRoID0gcGFnZVNpemUud2lkdGggLSAocGFnZUhvcml6b250YWxNYXJnaW4gKiAyKVxuICAgICAgY29uc3QgY29sdW1uSGVpZ2h0ID0gcGFnZVNpemUuaGVpZ2h0IC0gKHBhZ2VWZXJ0aWNhbE1hcmdpbiAqIDIpXG4gICAgICBsZXQgd2lkdGggPSBwYWdlU2l6ZS53aWR0aCAtIChwYWdlSG9yaXpvbnRhbE1hcmdpbiAqIDIpXG4gICAgICBsZXQgY29sdW1uR2FwID0gcGFnZUhvcml6b250YWxNYXJnaW4gKiAyXG5cbiAgICAgIGlmIChmcmFtZS5pc1VzaW5nVmVydGljYWxXcml0aW5nKCkpIHtcbiAgICAgICAgd2lkdGggPSBtaW5pbXVtV2lkdGggLSAocGFnZUhvcml6b250YWxNYXJnaW4gKiAyKVxuICAgICAgICBjb2x1bW5XaWR0aCA9IGNvbHVtbkhlaWdodFxuICAgICAgICBjb2x1bW5HYXAgPSBwYWdlVmVydGljYWxNYXJnaW4gKiAyXG4gICAgICB9XG5cbiAgICAgIGZyYW1lLmdldE1hbmlwdWxhYmxlRnJhbWUoKT8ucmVtb3ZlU3R5bGUoYHByb3NlLWxheW91dC1lbmhhbmNlci1jc3NgKVxuICAgICAgZnJhbWUuZ2V0TWFuaXB1bGFibGVGcmFtZSgpPy5hZGRTdHlsZShgcHJvc2UtbGF5b3V0LWVuaGFuY2VyLWNzc2AsIGBcbiAgICAgICAgYm9keSB7XG4gICAgICAgICAgd2lkdGg6ICR7d2lkdGh9cHggIWltcG9ydGFudDtcbiAgICAgICAgICBtYXJnaW46ICR7cGFnZVZlcnRpY2FsTWFyZ2lufXB4ICR7cGFnZUhvcml6b250YWxNYXJnaW59cHggIWltcG9ydGFudDtcbiAgICAgICAgICBjb2x1bW4tZ2FwOiAke2NvbHVtbkdhcH1weCAhaW1wb3J0YW50O1xuICAgICAgICAgIGNvbHVtbi13aWR0aDogJHtjb2x1bW5XaWR0aH1weCAhaW1wb3J0YW50O1xuICAgICAgICAgIGhlaWdodDogJHtjb2x1bW5IZWlnaHR9cHggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgICBpbWcsIHZpZGVvLCBhdWRpbywgb2JqZWN0LCBzdmcge1xuICAgICAgICAgIG1heC13aWR0aDogJHtjb2x1bW5XaWR0aH1weCAhaW1wb3J0YW50O1xuICAgICAgICAgIG1heC1oZWlnaHQ6ICR7Y29sdW1uSGVpZ2h0fXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgdGFibGUge1xuICAgICAgICAgIG1heC13aWR0aDogJHtjb2x1bW5XaWR0aH1weCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIHRkIHtcbiAgICAgICAgICBtYXgtd2lkdGg6ICR7Y29sdW1uV2lkdGh9cHg7XG4gICAgICAgIH1cbiAgICAgIGApXG4gICAgfVxuICB9KVxuXG4gIC8vIEB0b2RvIGZpeCB0aGUgcGFuc3RhcnQgaXNzdWVcbiAgLy8gQHRvZG8gbWF5YmUgaW5jcmVhc2luZyB0aGUgaGFtbWVyIGRpc3RhbmNlIGJlZm9yZSB0cmlnZ2VyaW5nIHBhbiBhcyB3ZWxsXG4gIC8vIHJlYWRlci5yZWdpc3Rlckhvb2soYGl0ZW0ub25Mb2FkYCwgKHtmcmFtZX0pID0+IHtcbiAgLy8gICBmcmFtZS5jb250ZW50RG9jdW1lbnQ/LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcihgY29udGV4dG1lbnVgLCBlID0+IHtcbiAgLy8gICAgIGNvbnNvbGUubG9nKGBhZGApXG4gIC8vICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgLy8gICB9KVxuICAvLyB9KVxuXG4gIGxldCBvYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXIgfCB1bmRlZmluZWRcblxuICBpZiAob3B0aW9ucy5sYXlvdXRBdXRvUmVzaXplID09PSBgY29udGFpbmVyYCkge1xuICAgIG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgIHJlYWRlcj8ubGF5b3V0KClcbiAgICB9KVxuICAgIG9ic2VydmVyLm9ic2VydmUob3B0aW9ucy5jb250YWluZXJFbGVtZW50KVxuICB9XG5cbiAgY29uc3QgbW92aW5nU2FmZVBhbiQgPSBjcmVhdGVNb3ZpbmdTYWZlUGFuJChyZWFkZXIpXG5cbiAgbW92aW5nU2FmZVBhbiQuc3Vic2NyaWJlKClcblxuICBzZXR0aW5nc1N1YmplY3QkXG4gICAgLnBpcGUoXG4gICAgICBtYXBLZXlzVG8oW2BwYWdlSG9yaXpvbnRhbE1hcmdpbmAsIGBwYWdlVmVydGljYWxNYXJnaW5gXSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NoYWxsb3dFcXVhbCksXG4gICAgICBza2lwKDEpLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgcmVhZGVyLnNwaW5lLmxheW91dCgpXG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbChyZWFkZXIuJC5kZXN0cm95JClcbiAgICApXG4gICAgLnN1YnNjcmliZSgpXG5cbiAgcmV0dXJuIHtcbiAgICAuLi5yZWFkZXIsXG4gICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgcmVhZGVyLmRlc3Ryb3koKVxuICAgICAgb2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKVxuICAgIH0sXG4gICAgc2V0U2V0dGluZ3M6ICh7IHBhZ2VWZXJ0aWNhbE1hcmdpbiwgcGFnZUhvcml6b250YWxNYXJnaW4sIC4uLnJlc3QgfSkgPT4ge1xuICAgICAgaWYgKHBhZ2VIb3Jpem9udGFsTWFyZ2luICE9PSB1bmRlZmluZWQgfHwgcGFnZVZlcnRpY2FsTWFyZ2luICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2V0dGluZ3NTdWJqZWN0JC5uZXh0KHtcbiAgICAgICAgICBwYWdlSG9yaXpvbnRhbE1hcmdpbjogcGFnZUhvcml6b250YWxNYXJnaW4gPz8gc2V0dGluZ3NTdWJqZWN0JC52YWx1ZS5wYWdlSG9yaXpvbnRhbE1hcmdpbixcbiAgICAgICAgICBwYWdlVmVydGljYWxNYXJnaW46IHBhZ2VWZXJ0aWNhbE1hcmdpbiA/PyBzZXR0aW5nc1N1YmplY3QkLnZhbHVlLnBhZ2VWZXJ0aWNhbE1hcmdpblxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICByZWFkZXIuc2V0U2V0dGluZ3MocmVzdClcbiAgICB9LFxuICAgICQ6IHtcbiAgICAgIC4uLnJlYWRlci4kLFxuICAgICAgc2V0dGluZ3MkOiBjb21iaW5lTGF0ZXN0KFtyZWFkZXIuJC5zZXR0aW5ncyQsIHNldHRpbmdzU3ViamVjdCQuYXNPYnNlcnZhYmxlKCldKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKFtpbm5lclNldHRpbmdzLCBzZXR0aW5nc10pID0+ICh7XG4gICAgICAgICAgICAuLi5pbm5lclNldHRpbmdzLFxuICAgICAgICAgICAgLi4uc2V0dGluZ3NcbiAgICAgICAgICB9KSlcbiAgICAgICAgKVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/enhancers/layoutEnhancer/layoutEnhancer.ts\n");
|
|
120
|
+
|
|
121
|
+
/***/ }),
|
|
122
|
+
|
|
123
|
+
/***/ "./src/enhancers/links.ts":
|
|
124
|
+
/*!********************************!*\
|
|
125
|
+
!*** ./src/enhancers/links.ts ***!
|
|
126
|
+
\********************************/
|
|
127
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
128
|
+
|
|
129
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"linksEnhancer\": () => (/* binding */ linksEnhancer)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../report */ \"./src/report.ts\");\n\n\nconst linksEnhancer = (next) => (options) => {\n const reader = next(options);\n const subject = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const handleNavigationForClick = (element) => {\n var _a;\n if (!element.href)\n return;\n const hrefUrl = new URL(element.href);\n const hrefWithoutAnchor = `${hrefUrl.origin}${hrefUrl.pathname}`;\n const hasExistingSpineItem = (_a = reader.context.getManifest()) === null || _a === void 0 ? void 0 : _a.spineItems.some(item => item.href === hrefWithoutAnchor);\n if (hasExistingSpineItem) {\n reader.goToUrl(hrefUrl);\n }\n };\n reader.registerHook(`item.onLoad`, ({ frame }) => {\n if (frame.contentDocument) {\n Array.from(frame.contentDocument.querySelectorAll(`a`)).forEach(element => element.addEventListener(`click`, (e) => {\n if (e.target && `style` in e.target && `ELEMENT_NODE` in e.target) {\n _report__WEBPACK_IMPORTED_MODULE_1__.Report.warn(`prevented click on`, element, e);\n e.preventDefault();\n handleNavigationForClick(element);\n subject.next({ event: `linkClicked`, data: element });\n }\n }));\n }\n });\n return Object.assign(Object.assign({}, reader), { $: Object.assign(Object.assign({}, reader.$), { links$: subject.asObservable() }) });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZW5oYW5jZXJzL2xpbmtzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBMEM7QUFDUjtBQUszQixNQUFNLGFBQWEsR0FJckIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7SUFDekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUM1QixNQUFNLE9BQU8sR0FBRyxJQUFJLHlDQUFPLEVBQWU7SUFFMUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE9BQTBCLEVBQUUsRUFBRTs7UUFDOUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQUUsT0FBTTtRQUV6QixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ3JDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUU7UUFFaEUsTUFBTSxvQkFBb0IsR0FBRyxZQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSwwQ0FBRSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUIsQ0FBQztRQUNuSCxJQUFJLG9CQUFvQixFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQy9DLElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRTtZQUN6QixLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pILElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxjQUFjLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRTtvQkFDakUsZ0RBQVcsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO29CQUM3QyxDQUFDLENBQUMsY0FBYyxFQUFFO29CQUNsQix3QkFBd0IsQ0FBQyxPQUFPLENBQUM7b0JBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztpQkFDdEQ7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsdUNBQ0ssTUFBTSxLQUNULENBQUMsa0NBQ0ksTUFBTSxDQUFDLENBQUMsS0FDWCxNQUFNLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRSxPQUVqQztBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvZW5oYW5jZXJzL2xpbmtzLnRzP2NhZjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCJcbmltcG9ydCB7IFJlcG9ydCB9IGZyb20gXCIuLi9yZXBvcnRcIlxuaW1wb3J0IHsgRW5oYW5jZXIgfSBmcm9tIFwiLi90eXBlc1wiXG5cbnR5cGUgU3ViamVjdERhdGEgPSB7IGV2ZW50OiBgbGlua0NsaWNrZWRgLCBkYXRhOiBIVE1MQW5jaG9yRWxlbWVudCB9XG5cbmV4cG9ydCBjb25zdCBsaW5rc0VuaGFuY2VyOiBFbmhhbmNlcjx7fSwge1xuICAkOiB7XG4gICAgbGlua3MkOiBPYnNlcnZhYmxlPFN1YmplY3REYXRhPlxuICB9XG59PiA9IChuZXh0KSA9PiAob3B0aW9ucykgPT4ge1xuICBjb25zdCByZWFkZXIgPSBuZXh0KG9wdGlvbnMpXG4gIGNvbnN0IHN1YmplY3QgPSBuZXcgU3ViamVjdDxTdWJqZWN0RGF0YT4oKVxuXG4gIGNvbnN0IGhhbmRsZU5hdmlnYXRpb25Gb3JDbGljayA9IChlbGVtZW50OiBIVE1MQW5jaG9yRWxlbWVudCkgPT4ge1xuICAgIGlmICghZWxlbWVudC5ocmVmKSByZXR1cm5cblxuICAgIGNvbnN0IGhyZWZVcmwgPSBuZXcgVVJMKGVsZW1lbnQuaHJlZilcbiAgICBjb25zdCBocmVmV2l0aG91dEFuY2hvciA9IGAke2hyZWZVcmwub3JpZ2lufSR7aHJlZlVybC5wYXRobmFtZX1gXG4gICAgLy8gaW50ZXJuYWwgbGluaywgd2UgY2FuIGhhbmRsZVxuICAgIGNvbnN0IGhhc0V4aXN0aW5nU3BpbmVJdGVtID0gcmVhZGVyLmNvbnRleHQuZ2V0TWFuaWZlc3QoKT8uc3BpbmVJdGVtcy5zb21lKGl0ZW0gPT4gaXRlbS5ocmVmID09PSBocmVmV2l0aG91dEFuY2hvcilcbiAgICBpZiAoaGFzRXhpc3RpbmdTcGluZUl0ZW0pIHtcbiAgICAgIHJlYWRlci5nb1RvVXJsKGhyZWZVcmwpXG4gICAgfVxuICB9XG5cbiAgcmVhZGVyLnJlZ2lzdGVySG9vayhgaXRlbS5vbkxvYWRgLCAoeyBmcmFtZSB9KSA9PiB7XG4gICAgaWYgKGZyYW1lLmNvbnRlbnREb2N1bWVudCkge1xuICAgICAgQXJyYXkuZnJvbShmcmFtZS5jb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgYWApKS5mb3JFYWNoKGVsZW1lbnQgPT4gZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGBjbGlja2AsIChlKSA9PiB7XG4gICAgICAgIGlmIChlLnRhcmdldCAmJiBgc3R5bGVgIGluIGUudGFyZ2V0ICYmIGBFTEVNRU5UX05PREVgIGluIGUudGFyZ2V0KSB7XG4gICAgICAgICAgUmVwb3J0Lndhcm4oYHByZXZlbnRlZCBjbGljayBvbmAsIGVsZW1lbnQsIGUpXG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgaGFuZGxlTmF2aWdhdGlvbkZvckNsaWNrKGVsZW1lbnQpXG4gICAgICAgICAgc3ViamVjdC5uZXh0KHsgZXZlbnQ6IGBsaW5rQ2xpY2tlZGAsIGRhdGE6IGVsZW1lbnQgfSlcbiAgICAgICAgfVxuICAgICAgfSkpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgLi4ucmVhZGVyLFxuICAgICQ6IHtcbiAgICAgIC4uLnJlYWRlci4kLFxuICAgICAgbGlua3MkOiBzdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/enhancers/links.ts\n");
|
|
130
|
+
|
|
131
|
+
/***/ }),
|
|
132
|
+
|
|
133
|
+
/***/ "./src/enhancers/media.ts":
|
|
134
|
+
/*!********************************!*\
|
|
135
|
+
!*** ./src/enhancers/media.ts ***!
|
|
136
|
+
\********************************/
|
|
137
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
138
|
+
|
|
139
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"mediaEnhancer\": () => (/* binding */ mediaEnhancer)\n/* harmony export */ });\nconst mediaEnhancer = (next) => (options) => {\n const reader = next(options);\n const frameObserver = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n var _a;\n const frame = entry.target;\n const audios = Array.from(((_a = frame.contentDocument) === null || _a === void 0 ? void 0 : _a.body.getElementsByTagName(`audio`)) || []);\n if (!entry.isIntersecting) {\n audios.forEach(audioElement => {\n audioElement.pause();\n audioElement.currentTime = 0;\n });\n }\n else {\n audios.forEach(audioElement => {\n if (audioElement.hasAttribute(`autoplay`) && audioElement.paused && audioElement.readyState >= 2) {\n audioElement.play().catch(console.error);\n }\n });\n }\n });\n }, {\n threshold: 0.01\n });\n const elementObserver = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.target.tagName === `video`) {\n const video = entry.target;\n if (!entry.isIntersecting) {\n video.pause();\n video.currentTime = 0;\n }\n else {\n if (video.hasAttribute(`autoplay`)) {\n if (video.paused && video.readyState >= 2) {\n video.play().catch(console.error);\n }\n }\n }\n }\n });\n }, {\n threshold: 0.5\n });\n reader.registerHook(`item.onLoad`, ({ frame }) => {\n var _a;\n frameObserver.observe(frame);\n const videos = (_a = frame.contentDocument) === null || _a === void 0 ? void 0 : _a.body.getElementsByTagName(`video`);\n const unobserveElements = Array.from(videos || []).map(element => {\n elementObserver.observe(element);\n return () => elementObserver.unobserve(element);\n });\n return () => {\n frameObserver.unobserve(frame);\n unobserveElements.forEach(unobserve => unobserve());\n };\n });\n const destroy = () => {\n frameObserver.disconnect();\n elementObserver.disconnect();\n reader.destroy();\n };\n return Object.assign(Object.assign({}, reader), { destroy });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUVGLE9BQU8sR0FBRyxFQUFFO1lBQ1YsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDOUIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDckQsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRTtRQUNuQixhQUFhLENBQUMsVUFBVSxFQUFFO1FBQzFCLGVBQWUsQ0FBQyxVQUFVLEVBQUU7UUFDNUIsTUFBTSxDQUFDLE9BQU8sRUFBRTtJQUNsQixDQUFDO0lBRUQsdUNBQ0ssTUFBTSxLQUNULE9BQU8sSUFDUjtBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvZW5oYW5jZXJzL21lZGlhLnRzP2M3ZjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW5oYW5jZXIgfSBmcm9tIFwiLi90eXBlc1wiXG5cbmV4cG9ydCBjb25zdCBtZWRpYUVuaGFuY2VyOiBFbmhhbmNlcjx7fSwge1xuXG59PiA9IChuZXh0KSA9PiAob3B0aW9ucykgPT4ge1xuICBjb25zdCByZWFkZXIgPSBuZXh0KG9wdGlvbnMpXG5cbiAgY29uc3QgZnJhbWVPYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7XG4gICAgICBjb25zdCBmcmFtZSA9IGVudHJ5LnRhcmdldCBhcyBIVE1MSUZyYW1lRWxlbWVudFxuICAgICAgY29uc3QgYXVkaW9zID0gQXJyYXkuZnJvbShmcmFtZS5jb250ZW50RG9jdW1lbnQ/LmJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYGF1ZGlvYCkgfHwgW10pXG5cbiAgICAgIGlmICghZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgYXVkaW9zLmZvckVhY2goYXVkaW9FbGVtZW50ID0+IHtcbiAgICAgICAgICBhdWRpb0VsZW1lbnQucGF1c2UoKVxuICAgICAgICAgIGF1ZGlvRWxlbWVudC5jdXJyZW50VGltZSA9IDBcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF1ZGlvcy5mb3JFYWNoKGF1ZGlvRWxlbWVudCA9PiB7XG4gICAgICAgICAgaWYgKGF1ZGlvRWxlbWVudC5oYXNBdHRyaWJ1dGUoYGF1dG9wbGF5YCkgJiYgYXVkaW9FbGVtZW50LnBhdXNlZCAmJiBhdWRpb0VsZW1lbnQucmVhZHlTdGF0ZSA+PSAyKSB7XG4gICAgICAgICAgICBhdWRpb0VsZW1lbnQucGxheSgpLmNhdGNoKGNvbnNvbGUuZXJyb3IpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gIH0sIHtcbiAgICB0aHJlc2hvbGQ6IDAuMDFcbiAgfSlcblxuICBjb25zdCBlbGVtZW50T2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICBlbnRyaWVzLmZvckVhY2goZW50cnkgPT4ge1xuICAgICAgaWYgKGVudHJ5LnRhcmdldC50YWdOYW1lID09PSBgdmlkZW9gKSB7XG4gICAgICAgIGNvbnN0IHZpZGVvID0gZW50cnkudGFyZ2V0IGFzIEhUTUxWaWRlb0VsZW1lbnRcbiAgICAgICAgaWYgKCFlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICAgIHZpZGVvLnBhdXNlKClcbiAgICAgICAgICB2aWRlby5jdXJyZW50VGltZSA9IDBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodmlkZW8uaGFzQXR0cmlidXRlKGBhdXRvcGxheWApKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGNhbiBmYWlsIHdoZW4gd2UgcGxheSB0aGUgZmlyc3QgdGltZSBkdWUgdG8gdXNlciBub3QgaGF2aW5nIGludGVyYWN0ZWQgd2l0aFxuICAgICAgICAgICAgLy8gZG9jdW1lbnQgeWV0LiBCcm93c2VycyBwb2xpY3kuIGF1dG9wbGF5IHdpbGwgcGxheSBpdCB0aGUgZmlyc3QgdGltZSBhbnl3YXkuXG4gICAgICAgICAgICBpZiAodmlkZW8ucGF1c2VkICYmIHZpZGVvLnJlYWR5U3RhdGUgPj0gMikge1xuICAgICAgICAgICAgICB2aWRlby5wbGF5KCkuY2F0Y2goY29uc29sZS5lcnJvcilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICB9LCB7XG4gICAgdGhyZXNob2xkOiAwLjVcbiAgfSlcblxuICByZWFkZXIucmVnaXN0ZXJIb29rKGBpdGVtLm9uTG9hZGAsICh7IGZyYW1lIH0pID0+IHtcbiAgICBmcmFtZU9ic2VydmVyLm9ic2VydmUoZnJhbWUpXG5cbiAgICBjb25zdCB2aWRlb3MgPSBmcmFtZS5jb250ZW50RG9jdW1lbnQ/LmJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYHZpZGVvYClcblxuICAgIGNvbnN0IHVub2JzZXJ2ZUVsZW1lbnRzID0gQXJyYXkuZnJvbSh2aWRlb3MgfHwgW10pLm1hcChlbGVtZW50ID0+IHtcbiAgICAgIGVsZW1lbnRPYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpXG5cbiAgICAgIHJldHVybiAoKSA9PiBlbGVtZW50T2JzZXJ2ZXIudW5vYnNlcnZlKGVsZW1lbnQpXG4gICAgfSlcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBmcmFtZU9ic2VydmVyLnVub2JzZXJ2ZShmcmFtZSlcbiAgICAgIHVub2JzZXJ2ZUVsZW1lbnRzLmZvckVhY2godW5vYnNlcnZlID0+IHVub2JzZXJ2ZSgpKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgIGZyYW1lT2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gICAgZWxlbWVudE9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgIHJlYWRlci5kZXN0cm95KClcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ucmVhZGVyLFxuICAgIGRlc3Ryb3lcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/enhancers/media.ts\n");
|
|
140
|
+
|
|
141
|
+
/***/ }),
|
|
142
|
+
|
|
143
|
+
/***/ "./src/enhancers/navigation.ts":
|
|
144
|
+
/*!*************************************!*\
|
|
145
|
+
!*** ./src/enhancers/navigation.ts ***!
|
|
146
|
+
\*************************************/
|
|
147
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
148
|
+
|
|
149
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"navigationEnhancer\": () => (/* binding */ navigationEnhancer)\n/* harmony export */ });\nconst navigationEnhancer = (next) => (options) => {\n const reader = next(options);\n const goToNextSpineItem = () => {\n var _a, _b;\n const focusedSpineItemIndex = reader.getFocusedSpineItemIndex() || 0;\n const { end = focusedSpineItemIndex } = reader.locator.getSpineItemsFromReadingOrderPosition(reader.getCurrentNavigationPosition()) || {};\n const numberOfSpineItems = (_b = (_a = reader.context.getManifest()) === null || _a === void 0 ? void 0 : _a.spineItems.length) !== null && _b !== void 0 ? _b : 0;\n const nextItem = end + 1;\n if (nextItem < numberOfSpineItems) {\n reader.goToSpineItem(nextItem);\n }\n };\n const goToPreviousSpineItem = () => {\n const focusedSpineItemIndex = reader.getFocusedSpineItemIndex() || 0;\n const { begin = focusedSpineItemIndex } = reader.locator.getSpineItemsFromReadingOrderPosition(reader.getCurrentNavigationPosition()) || {};\n const nextItem = begin - 1;\n if (nextItem >= 0) {\n reader.goToSpineItem(nextItem);\n }\n };\n return Object.assign(Object.assign({}, reader), { goToLeftSpineItem: () => {\n if (reader.context.isRTL()) {\n return goToNextSpineItem();\n }\n return goToPreviousSpineItem();\n }, goToRightSpineItem: () => {\n if (reader.context.isRTL()) {\n return goToPreviousSpineItem();\n }\n return goToNextSpineItem();\n } });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZW5oYW5jZXJzL25hdmlnYXRpb24udHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUtPLE1BQU0sa0JBQWtCLEdBRzFCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO0lBQ3pCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFFNUIsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLEVBQUU7O1FBQzdCLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQztRQUNwRSxNQUFNLEVBQUUsR0FBRyxHQUFHLHFCQUFxQixFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxJQUFJLEVBQUU7UUFDekksTUFBTSxrQkFBa0IsR0FBRyxrQkFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsMENBQUUsVUFBVSxDQUFDLE1BQU0sbUNBQUksQ0FBQztRQUMvRSxNQUFNLFFBQVEsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUN4QixJQUFJLFFBQVEsR0FBRyxrQkFBa0IsRUFBRTtZQUNqQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRCxNQUFNLHFCQUFxQixHQUFHLEdBQUcsRUFBRTtRQUNqQyxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUM7UUFDcEUsTUFBTSxFQUFFLEtBQUssR0FBRyxxQkFBcUIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMscUNBQXFDLENBQUMsTUFBTSxDQUFDLDRCQUE0QixFQUFFLENBQUMsSUFBSSxFQUFFO1FBQzNJLE1BQU0sUUFBUSxHQUFHLEtBQUssR0FBRyxDQUFDO1FBQzFCLElBQUksUUFBUSxJQUFJLENBQUMsRUFBRTtZQUNqQixNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRCx1Q0FDSyxNQUFNLEtBQ1QsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1lBQ3RCLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDMUIsT0FBTyxpQkFBaUIsRUFBRTthQUMzQjtZQUVELE9BQU8scUJBQXFCLEVBQUU7UUFDaEMsQ0FBQyxFQUNELGtCQUFrQixFQUFFLEdBQUcsRUFBRTtZQUN2QixJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQzFCLE9BQU8scUJBQXFCLEVBQUU7YUFDL0I7WUFFRCxPQUFPLGlCQUFpQixFQUFFO1FBQzVCLENBQUMsSUFDRjtBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvZW5oYW5jZXJzL25hdmlnYXRpb24udHM/Y2VlNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE9mZmVyIGV4dHJhIGNvbnZlbmllbnQgbWV0aG9kcyBmb3IgbmF2aWdhdGlvbi5cbiAqL1xuaW1wb3J0IHsgRW5oYW5jZXIgfSBmcm9tIFwiLi90eXBlc1wiXG5cbmV4cG9ydCBjb25zdCBuYXZpZ2F0aW9uRW5oYW5jZXI6IEVuaGFuY2VyPHt9LCB7XG4gIGdvVG9MZWZ0U3BpbmVJdGVtOiAoKSA9PiB2b2lkLFxuICBnb1RvUmlnaHRTcGluZUl0ZW06ICgpID0+IHZvaWQsXG59PiA9IChuZXh0KSA9PiAob3B0aW9ucykgPT4ge1xuICBjb25zdCByZWFkZXIgPSBuZXh0KG9wdGlvbnMpXG5cbiAgY29uc3QgZ29Ub05leHRTcGluZUl0ZW0gPSAoKSA9PiB7XG4gICAgY29uc3QgZm9jdXNlZFNwaW5lSXRlbUluZGV4ID0gcmVhZGVyLmdldEZvY3VzZWRTcGluZUl0ZW1JbmRleCgpIHx8IDBcbiAgICBjb25zdCB7IGVuZCA9IGZvY3VzZWRTcGluZUl0ZW1JbmRleCB9ID0gcmVhZGVyLmxvY2F0b3IuZ2V0U3BpbmVJdGVtc0Zyb21SZWFkaW5nT3JkZXJQb3NpdGlvbihyZWFkZXIuZ2V0Q3VycmVudE5hdmlnYXRpb25Qb3NpdGlvbigpKSB8fCB7fVxuICAgIGNvbnN0IG51bWJlck9mU3BpbmVJdGVtcyA9IHJlYWRlci5jb250ZXh0LmdldE1hbmlmZXN0KCk/LnNwaW5lSXRlbXMubGVuZ3RoID8/IDBcbiAgICBjb25zdCBuZXh0SXRlbSA9IGVuZCArIDFcbiAgICBpZiAobmV4dEl0ZW0gPCBudW1iZXJPZlNwaW5lSXRlbXMpIHtcbiAgICAgIHJlYWRlci5nb1RvU3BpbmVJdGVtKG5leHRJdGVtKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGdvVG9QcmV2aW91c1NwaW5lSXRlbSA9ICgpID0+IHtcbiAgICBjb25zdCBmb2N1c2VkU3BpbmVJdGVtSW5kZXggPSByZWFkZXIuZ2V0Rm9jdXNlZFNwaW5lSXRlbUluZGV4KCkgfHwgMFxuICAgIGNvbnN0IHsgYmVnaW4gPSBmb2N1c2VkU3BpbmVJdGVtSW5kZXggfSA9IHJlYWRlci5sb2NhdG9yLmdldFNwaW5lSXRlbXNGcm9tUmVhZGluZ09yZGVyUG9zaXRpb24ocmVhZGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uUG9zaXRpb24oKSkgfHwge31cbiAgICBjb25zdCBuZXh0SXRlbSA9IGJlZ2luIC0gMVxuICAgIGlmIChuZXh0SXRlbSA+PSAwKSB7XG4gICAgICByZWFkZXIuZ29Ub1NwaW5lSXRlbShuZXh0SXRlbSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnJlYWRlcixcbiAgICBnb1RvTGVmdFNwaW5lSXRlbTogKCkgPT4ge1xuICAgICAgaWYgKHJlYWRlci5jb250ZXh0LmlzUlRMKCkpIHtcbiAgICAgICAgcmV0dXJuIGdvVG9OZXh0U3BpbmVJdGVtKClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGdvVG9QcmV2aW91c1NwaW5lSXRlbSgpXG4gICAgfSxcbiAgICBnb1RvUmlnaHRTcGluZUl0ZW06ICgpID0+IHtcbiAgICAgIGlmIChyZWFkZXIuY29udGV4dC5pc1JUTCgpKSB7XG4gICAgICAgIHJldHVybiBnb1RvUHJldmlvdXNTcGluZUl0ZW0oKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZ29Ub05leHRTcGluZUl0ZW0oKVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/enhancers/navigation.ts\n");
|
|
150
|
+
|
|
151
|
+
/***/ }),
|
|
152
|
+
|
|
153
|
+
/***/ "./src/enhancers/pagination.ts":
|
|
154
|
+
/*!*************************************!*\
|
|
155
|
+
!*** ./src/enhancers/pagination.ts ***!
|
|
156
|
+
\*************************************/
|
|
157
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
158
|
+
|
|
159
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"paginationEnhancer\": () => (/* binding */ paginationEnhancer),\n/* harmony export */ \"buildChapterInfoFromSpineItem\": () => (/* binding */ buildChapterInfoFromSpineItem)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _pagination__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../pagination */ \"./src/pagination.ts\");\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../report */ \"./src/report.ts\");\n/* harmony import */ var _utils_objects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/objects */ \"./src/utils/objects.ts\");\n\n\n\n\n\nconst NAMESPACE = `paginationEnhancer`;\nconst report = _report__WEBPACK_IMPORTED_MODULE_3__.Report.namespace(NAMESPACE);\nconst paginationEnhancer = (next) => (options) => {\n const reader = next(options);\n const chaptersInfo = {};\n const getChapterInfo = (item) => {\n const manifest = reader.context.getManifest();\n return item && manifest && buildChapterInfoFromSpineItem(manifest, item);\n };\n const mapPaginationInfoToExtendedInfo = (paginationInfo) => {\n var _a;\n const context = reader.context;\n const beginItem = paginationInfo.beginSpineItemIndex !== undefined\n ? reader.getSpineItem(paginationInfo.beginSpineItemIndex)\n : undefined;\n const endItem = paginationInfo.endSpineItemIndex !== undefined\n ? reader.getSpineItem(paginationInfo.endSpineItemIndex)\n : undefined;\n return {\n beginPageIndexInChapter: paginationInfo.beginPageIndex,\n beginNumberOfPagesInChapter: paginationInfo.beginNumberOfPages,\n beginChapterInfo: beginItem ? chaptersInfo[beginItem.item.id] : undefined,\n beginSpineItemIndex: paginationInfo.beginSpineItemIndex,\n beginCfi: paginationInfo.beginCfi,\n beginSpineItemReadingDirection: beginItem === null || beginItem === void 0 ? void 0 : beginItem.getReadingDirection(),\n endChapterInfo: endItem ? chaptersInfo[endItem.item.id] : undefined,\n endPageIndexInChapter: paginationInfo.endPageIndex,\n endNumberOfPagesInChapter: paginationInfo.endNumberOfPages,\n endSpineItemIndex: paginationInfo.endSpineItemIndex,\n endSpineItemReadingDirection: endItem === null || endItem === void 0 ? void 0 : endItem.getReadingDirection(),\n endCfi: paginationInfo.endCfi,\n percentageEstimateOfBook: endItem\n ? reader.progression.getPercentageEstimate(context, (_a = paginationInfo.endSpineItemIndex) !== null && _a !== void 0 ? _a : 0, paginationInfo.endNumberOfPages, paginationInfo.endPageIndex || 0, reader.getCurrentViewportPosition(), endItem)\n : 0,\n isUsingSpread: context.shouldDisplaySpread()\n };\n };\n const getSpineItemNumberOfPages = (spineItem) => {\n const writingMode = spineItem.spineItemFrame.getWritingMode();\n const { width, height } = spineItem.getElementDimensions();\n if (writingMode === `vertical-rl`) {\n return (0,_pagination__WEBPACK_IMPORTED_MODULE_2__.getNumberOfPages)(height, reader.context.getPageSize().height);\n }\n return (0,_pagination__WEBPACK_IMPORTED_MODULE_2__.getNumberOfPages)(width, reader.context.getPageSize().width);\n };\n const getTotalNumberOfPages = () => {\n const numberOfPagesPerItems = reader.getSpineItems().map((item) => {\n return getSpineItemNumberOfPages(item);\n }, 0);\n const totalNumberOfPages = numberOfPagesPerItems\n .reduce((acc, numberOfPagesForItem) => acc + numberOfPagesForItem, 0);\n return {\n numberOfPagesPerItems,\n totalNumberOfPages\n };\n };\n const mapPaginationInfoToTotalPagesInfo = ({ endSpineItemIndex, endPageIndex, beginSpineItemIndex, beginPageIndex }) => {\n const { totalNumberOfPages, numberOfPagesPerItems } = getTotalNumberOfPages();\n return {\n beginAbsolutePageIndex: numberOfPagesPerItems\n .slice(0, beginSpineItemIndex)\n .reduce((acc, numberOfPagesForItem) => acc + numberOfPagesForItem, beginPageIndex !== null && beginPageIndex !== void 0 ? beginPageIndex : 0),\n endAbsolutePageIndex: numberOfPagesPerItems\n .slice(0, endSpineItemIndex)\n .reduce((acc, numberOfPagesForItem) => acc + numberOfPagesForItem, endPageIndex !== null && endPageIndex !== void 0 ? endPageIndex : 0),\n numberOfTotalPages: totalNumberOfPages\n };\n };\n reader.registerHook(`item.onCreated`, ({ item }) => {\n chaptersInfo[item.id] = getChapterInfo(item);\n return () => { };\n });\n const paginationExtendedInfo = reader.$.pagination$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.map)(mapPaginationInfoToExtendedInfo), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.distinctUntilChanged)(_utils_objects__WEBPACK_IMPORTED_MODULE_4__.isShallowEqual));\n const totalPages$ = reader.$.layout$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.debounceTime)(10, rxjs__WEBPACK_IMPORTED_MODULE_0__.animationFrameScheduler), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.withLatestFrom)(reader.$.pagination$), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.map)(([, paginationInfo]) => mapPaginationInfoToTotalPagesInfo(paginationInfo)), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.distinctUntilChanged)(_utils_objects__WEBPACK_IMPORTED_MODULE_4__.isShallowEqual), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.startWith)({\n beginAbsolutePageIndex: 0,\n endAbsolutePageIndex: 0,\n numberOfTotalPages: 0\n }));\n return Object.assign(Object.assign({}, reader), { $: Object.assign(Object.assign({}, reader.$), { pagination$: (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.combineLatest)([paginationExtendedInfo, totalPages$])\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.map)(([a, b]) => (Object.assign(Object.assign({}, a), b))), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)((data) => {\n report.log(`pagination`, data);\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.shareReplay)(1)) }) });\n};\nconst buildChapterInfoFromSpineItem = (manifest, item) => {\n const { path } = item;\n return getChapterInfo(path, manifest.nav.toc);\n};\nconst getChapterInfo = (path, tocItems) => {\n return tocItems.reduce((acc, tocItem) => {\n const indexOfHash = tocItem.path.indexOf(`#`);\n const tocItemPathWithoutAnchor = indexOfHash > 0 ? tocItem.path.substr(0, indexOfHash) : tocItem.path;\n if (path.endsWith(tocItemPathWithoutAnchor)) {\n return {\n title: tocItem.title,\n path: tocItem.path\n };\n }\n const subInfo = getChapterInfo(path, tocItem.contents);\n if (subInfo) {\n return {\n subChapter: subInfo,\n title: tocItem.title,\n path: tocItem.path\n };\n }\n return acc;\n }, undefined);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QyxLQUFLO2dCQUNwQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7YUFDbkI7U0FDRjtRQUVELE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUV0RCxJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU87Z0JBQ0wsVUFBVSxFQUFFLE9BQU87Z0JBQ25CLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztnQkFDcEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO2FBQ25CO1NBQ0Y7UUFFRCxPQUFPLEdBQUc7SUFDWixDQUFDLEVBQUUsU0FBUyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0Bwcm9zZS1yZWFkZXIvY29yZS8uL3NyYy9lbmhhbmNlcnMvcGFnaW5hdGlvbi50cz9hM2E1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBPYnNlcnZlZFZhbHVlT2YgfSBmcm9tIFwicnhqc1wiXG5pbXBvcnQgeyBtYXAsIGRlYm91bmNlVGltZSwgdGFwLCBzdGFydFdpdGgsIHNoYXJlUmVwbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgd2l0aExhdGVzdEZyb20gfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIlxuaW1wb3J0IHsgRW5oYW5jZXIgfSBmcm9tIFwiLi90eXBlc1wiXG5pbXBvcnQgeyBTcGluZUl0ZW0gfSBmcm9tIFwiLi4vc3BpbmVJdGVtL2NyZWF0ZVNwaW5lSXRlbVwiXG5pbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gXCIuLi90eXBlc1wiXG5pbXBvcnQgeyBwcm9ncmVzc2lvbkVuaGFuY2VyIH0gZnJvbSBcIi4vcHJvZ3Jlc3Npb25cIlxuaW1wb3J0IHsgZ2V0TnVtYmVyT2ZQYWdlcyB9IGZyb20gXCIuLi9wYWdpbmF0aW9uXCJcbmltcG9ydCB7IFJlcG9ydCB9IGZyb20gXCIuLi9yZXBvcnRcIlxuaW1wb3J0IHsgaXNTaGFsbG93RXF1YWwgfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0c1wiXG5cbmNvbnN0IE5BTUVTUEFDRSA9IGBwYWdpbmF0aW9uRW5oYW5jZXJgXG5cbmNvbnN0IHJlcG9ydCA9IFJlcG9ydC5uYW1lc3BhY2UoTkFNRVNQQUNFKVxuXG4vKipcbiAqIEB0b2RvXG4gKiBVc2luZyByZWN1cnNpdmUgaGVyZSBwcm92b2tlIHRoaXMgZXJyb3JcbiAqIGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9cmVjdXJzaXZlK0V4cG9ydGVkK3ZhcmlhYmxlK2hhcytvcitpcyt1c2luZytuYW1lZnJvbStleHRlcm5hbCttb2R1bGUrYnV0K2Nhbm5vdCtiZStuYW1lZC4mcmx6PTFDNUNIRkFfZW4mc3hzcmY9QU9hZW12SzRjcmF5cGxpNDUtZlhmRlJkZk84MmliR1JvZyUzQTE2MzExMDY5Nzg3OTEmZWk9b3JjNFlaUFVMLTZ0bUFXSmdLVDREdyZvcT1yZWN1cnNpdmUrRXhwb3J0ZWQrdmFyaWFibGUraGFzK29yK2lzK3VzaW5nK25hbWVmcm9tK2V4dGVybmFsK21vZHVsZStidXQrY2Fubm90K2JlK25hbWVkLiZnc19sY3A9Q2dkbmQzTXRkMmw2RUFNNkJ3Z0FFRWNRc0FOS0JBaEJHQUJRamdkWWpnZGd0UXRvQW5BQ2VBQ0FBV0dJQVdHU0FRRXhtQUVBb0FFQnlBRUl3QUVCJnNjbGllbnQ9Z3dzLXdpeiZ2ZWQ9MGFoVUtFd2lUcmI2QXUtX3lBaFh1RnFZS0hRa0FDZjhRNGRVRENBNCZ1YWN0PTVcbiAqIE15IGd1ZXNzIGlzIHRoYXQgc29tZXRoaW5nIGlzIHdyb25nIGFuZCBJIGhhdmUgdG9vIG1hbnkgcmVjdXJzaXZlIC8gaW5mZXJyZWQgdHlwZXMgZXZlcnl3aGVyZSBhbmQgZXNwZWNpYWxseSBvbiB0aGUgZW5oYW5jZXIgdGhpbmd5LlxuICovXG50eXBlIENoYXB0ZXJJbmZvID0ge1xuICB0aXRsZTogc3RyaW5nXG4gIHN1YkNoYXB0ZXI/OiB7XG4gICAgdGl0bGU6IHN0cmluZ1xuICAgIHN1YkNoYXB0ZXI/OiB7XG4gICAgICB0aXRsZTogc3RyaW5nXG4gICAgICBzdWJDaGFwdGVyPzoge1xuICAgICAgICB0aXRsZTogc3RyaW5nXG4gICAgICAgIHBhdGg6IHN0cmluZ1xuICAgICAgfSxcbiAgICAgIHBhdGg6IHN0cmluZ1xuICAgIH0sXG4gICAgcGF0aDogc3RyaW5nXG4gIH0sXG4gIHBhdGg6IHN0cmluZ1xufVxuXG50eXBlIFBhZ2luYXRpb25JbmZvID0ge1xuICBiZWdpbkNoYXB0ZXJJbmZvOiBDaGFwdGVySW5mbyB8IHVuZGVmaW5lZFxuICBiZWdpblBhZ2VJbmRleEluQ2hhcHRlcjogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBiZWdpbk51bWJlck9mUGFnZXNJbkNoYXB0ZXI6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgYmVnaW5TcGluZUl0ZW1JbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBiZWdpbkNmaTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBiZWdpblNwaW5lSXRlbVJlYWRpbmdEaXJlY3Rpb246IGBydGxgIHwgYGx0cmAgfCB1bmRlZmluZWQsXG4gIGJlZ2luQWJzb2x1dGVQYWdlSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgZW5kQ2hhcHRlckluZm86IENoYXB0ZXJJbmZvIHwgdW5kZWZpbmVkXG4gIGVuZFBhZ2VJbmRleEluQ2hhcHRlcjogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBlbmROdW1iZXJPZlBhZ2VzSW5DaGFwdGVyOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIGVuZFNwaW5lSXRlbUluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIGVuZENmaTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBlbmRTcGluZUl0ZW1SZWFkaW5nRGlyZWN0aW9uOiBgcnRsYCB8IGBsdHJgIHwgdW5kZWZpbmVkLFxuICBlbmRBYnNvbHV0ZVBhZ2VJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBwZXJjZW50YWdlRXN0aW1hdGVPZkJvb2s6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgLyoqXG4gICAqIEB3YXJuaW5nXG4gICAqIFRoaXMgdmFsdWUgaXMgb25seSBjb3JyZWN0IGZvciBwcmUtcGFnaW5hdGVkIGJvb2tzIGFuZCBvclxuICAgKiBpZiB5b3UgcHJlbG9hZCB0aGUgZW50aXJlIGJvb2sgaW4gY2FzZSBvZiByZWZsb3cuIFRoaXMgaXMgYmVjYXVzZVxuICAgKiBpdGVtcyBnZXQgbG9hZGVkIHVubG9hZGVkIHdoZW4gbmF2aWdhdGluZyB0aHJvdWdoIHRoZSBib29rLCBtZWFuaW5nXG4gICAqIHdlIGNhbm5vdCBtZWFzdXJlIHRoZSBudW1iZXIgb2YgcGFnZXMgYWNjdXJhdGVseS5cbiAgICovXG4gIG51bWJlck9mVG90YWxQYWdlczogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBpc1VzaW5nU3ByZWFkOiBib29sZWFuLFxuICAvLyBudW1iZXJPZlNwaW5lSXRlbXM6IG51bWJlciB8IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgY29uc3QgcGFnaW5hdGlvbkVuaGFuY2VyOiBFbmhhbmNlcjx7fSwge1xuICAkOiB7XG4gICAgcGFnaW5hdGlvbiQ6IE9ic2VydmFibGU8UGFnaW5hdGlvbkluZm8+XG4gIH1cbn0sIHt9LCB7fSwgdHlwZW9mIHByb2dyZXNzaW9uRW5oYW5jZXI+ID0gKG5leHQpID0+IChvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHJlYWRlciA9IG5leHQob3B0aW9ucylcbiAgY29uc3QgY2hhcHRlcnNJbmZvOiB7IFtrZXk6IHN0cmluZ106IENoYXB0ZXJJbmZvIHwgdW5kZWZpbmVkIH0gPSB7fVxuXG4gIGNvbnN0IGdldENoYXB0ZXJJbmZvID0gKGl0ZW06IE1hbmlmZXN0W2BzcGluZUl0ZW1zYF1bbnVtYmVyXSkgPT4ge1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gcmVhZGVyLmNvbnRleHQuZ2V0TWFuaWZlc3QoKVxuICAgIHJldHVybiBpdGVtICYmIG1hbmlmZXN0ICYmIGJ1aWxkQ2hhcHRlckluZm9Gcm9tU3BpbmVJdGVtKG1hbmlmZXN0LCBpdGVtKVxuICB9XG5cbiAgY29uc3QgbWFwUGFnaW5hdGlvbkluZm9Ub0V4dGVuZGVkSW5mbyA9IChwYWdpbmF0aW9uSW5mbzogT2JzZXJ2ZWRWYWx1ZU9mPHR5cGVvZiByZWFkZXJbYCRgXVtgcGFnaW5hdGlvbiRgXT4pID0+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gcmVhZGVyLmNvbnRleHRcbiAgICBjb25zdCBiZWdpbkl0ZW0gPSBwYWdpbmF0aW9uSW5mby5iZWdpblNwaW5lSXRlbUluZGV4ICE9PSB1bmRlZmluZWRcbiAgICAgID8gcmVhZGVyLmdldFNwaW5lSXRlbShwYWdpbmF0aW9uSW5mby5iZWdpblNwaW5lSXRlbUluZGV4KVxuICAgICAgOiB1bmRlZmluZWRcbiAgICBjb25zdCBlbmRJdGVtID0gcGFnaW5hdGlvbkluZm8uZW5kU3BpbmVJdGVtSW5kZXggIT09IHVuZGVmaW5lZFxuICAgICAgPyByZWFkZXIuZ2V0U3BpbmVJdGVtKHBhZ2luYXRpb25JbmZvLmVuZFNwaW5lSXRlbUluZGV4KVxuICAgICAgOiB1bmRlZmluZWRcblxuICAgIHJldHVybiB7XG4gICAgICBiZWdpblBhZ2VJbmRleEluQ2hhcHRlcjogcGFnaW5hdGlvbkluZm8uYmVnaW5QYWdlSW5kZXgsXG4gICAgICBiZWdpbk51bWJlck9mUGFnZXNJbkNoYXB0ZXI6IHBhZ2luYXRpb25JbmZvLmJlZ2luTnVtYmVyT2ZQYWdlcyxcbiAgICAgIGJlZ2luQ2hhcHRlckluZm86IGJlZ2luSXRlbSA/IGNoYXB0ZXJzSW5mb1tiZWdpbkl0ZW0uaXRlbS5pZF0gOiB1bmRlZmluZWQsXG4gICAgICAvLyBjaGFwdGVySW5kZXg6IG51bWJlcjtcbiAgICAgIC8vIHBhZ2VzOiBudW1iZXI7XG4gICAgICAvLyBwYWdlSW5kZXhJbkJvb2s6IG51bWJlcjtcbiAgICAgIC8vIHBhZ2VJbmRleEluQ2hhcHRlcjogbnVtYmVyO1xuICAgICAgLy8gcGFnZXNPZkNoYXB0ZXI6IG51bWJlcjtcbiAgICAgIC8vIHBhZ2VQZXJjZW50YWdlSW5DaGFwdGVyOiBudW1iZXI7XG4gICAgICAvLyBvZmZzZXRQZXJjZW50YWdlSW5DaGFwdGVyOiBudW1iZXI7XG4gICAgICAvLyBkb21JbmRleDogbnVtYmVyO1xuICAgICAgLy8gY2hhck9mZnNldDogbnVtYmVyO1xuICAgICAgLy8gc2VyaWFsaXplU3RyaW5nPzogc3RyaW5nO1xuICAgICAgYmVnaW5TcGluZUl0ZW1JbmRleDogcGFnaW5hdGlvbkluZm8uYmVnaW5TcGluZUl0ZW1JbmRleCxcbiAgICAgIC8vIHNwaW5lSXRlbVBhdGg6IGJlZ2luSXRlbT8uaXRlbS5wYXRoLFxuICAgICAgLy8gc3BpbmVJdGVtSWQ6IGJlZ2luSXRlbT8uaXRlbS5pZCxcbiAgICAgIGJlZ2luQ2ZpOiBwYWdpbmF0aW9uSW5mby5iZWdpbkNmaSxcbiAgICAgIGJlZ2luU3BpbmVJdGVtUmVhZGluZ0RpcmVjdGlvbjogYmVnaW5JdGVtPy5nZXRSZWFkaW5nRGlyZWN0aW9uKCksXG4gICAgICBlbmRDaGFwdGVySW5mbzogZW5kSXRlbSA/IGNoYXB0ZXJzSW5mb1tlbmRJdGVtLml0ZW0uaWRdIDogdW5kZWZpbmVkLFxuICAgICAgZW5kUGFnZUluZGV4SW5DaGFwdGVyOiBwYWdpbmF0aW9uSW5mby5lbmRQYWdlSW5kZXgsXG4gICAgICBlbmROdW1iZXJPZlBhZ2VzSW5DaGFwdGVyOiBwYWdpbmF0aW9uSW5mby5lbmROdW1iZXJPZlBhZ2VzLFxuICAgICAgZW5kU3BpbmVJdGVtSW5kZXg6IHBhZ2luYXRpb25JbmZvLmVuZFNwaW5lSXRlbUluZGV4LFxuICAgICAgLy8gc3BpbmVJdGVtUGF0aDogZW5kSXRlbT8uaXRlbS5wYXRoLFxuICAgICAgLy8gc3BpbmVJdGVtSWQ6IGVuZEl0ZW0/Lml0ZW0uaWQsXG4gICAgICBlbmRTcGluZUl0ZW1SZWFkaW5nRGlyZWN0aW9uOiBlbmRJdGVtPy5nZXRSZWFkaW5nRGlyZWN0aW9uKCksXG4gICAgICBlbmRDZmk6IHBhZ2luYXRpb25JbmZvLmVuZENmaSxcbiAgICAgIC8vIGVuZDogUmVhZGluZ0xvY2F0aW9uO1xuICAgICAgLy8gc3BpbmVJdGVtUmVhZGluZ0RpcmVjdGlvbjogZm9jdXNlZFNwaW5lSXRlbT8uZ2V0UmVhZGluZ0RpcmVjdGlvbigpLFxuICAgICAgLyoqXG4gICAgICAgKiBUaGlzIHBlcmNlbnRhZ2UgaXMgYmFzZWQgb2YgdGhlIHdlaWdodCAoa2IpIG9mIGV2ZXJ5IGl0ZW1zIGFuZCB0aGUgbnVtYmVyIG9mIHBhZ2VzLlxuICAgICAgICogSXQgaXMgbm90IGFjY3VyYXRlIGJ1dCBnaXZlcyBhIGdlbmVyYWwgZ29vZCBpZGVhIG9mIHRoZSBvdmVyYWxsIHByb2dyZXNzLlxuICAgICAgICogSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgcHJvZ3Jlc3Mgb25seSBmb3IgcmVmbG93IGJvb2tzLiBGb3IgcHJlLXBhZ2luYXRlZCBib29rc1xuICAgICAgICogdGhlIG51bWJlciBvZiBwYWdlcyBhbmQgY3VycmVudCBpbmRleCBjYW4gYmUgdXNlZCBpbnN0ZWFkIHNpbmNlIDEgcGFnZSA9IDEgY2hhcHRlci5cbiAgICAgICAqL1xuICAgICAgcGVyY2VudGFnZUVzdGltYXRlT2ZCb29rOiBlbmRJdGVtXG4gICAgICAgID8gcmVhZGVyLnByb2dyZXNzaW9uLmdldFBlcmNlbnRhZ2VFc3RpbWF0ZShcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIHBhZ2luYXRpb25JbmZvLmVuZFNwaW5lSXRlbUluZGV4ID8/IDAsXG4gICAgICAgICAgcGFnaW5hdGlvbkluZm8uZW5kTnVtYmVyT2ZQYWdlcyxcbiAgICAgICAgICBwYWdpbmF0aW9uSW5mby5lbmRQYWdlSW5kZXggfHwgMCxcbiAgICAgICAgICByZWFkZXIuZ2V0Q3VycmVudFZpZXdwb3J0UG9zaXRpb24oKSxcbiAgICAgICAgICBlbmRJdGVtXG4gICAgICAgIClcbiAgICAgICAgOiAwLFxuICAgICAgaXNVc2luZ1NwcmVhZDogY29udGV4dC5zaG91bGREaXNwbGF5U3ByZWFkKClcbiAgICAgIC8vIGNoYXB0ZXJzT2ZCb29rOiBudW1iZXI7XG4gICAgICAvLyBjaGFwdGVyOiBzdHJpbmc7XG4gICAgICAvLyBoYXNOZXh0Q2hhcHRlcjogKHJlYWRlci5zcGluZS5zcGluZUl0ZW1JbmRleCB8fCAwKSA8IChtYW5pZmVzdC5yZWFkaW5nT3JkZXIubGVuZ3RoIC0gMSksXG4gICAgICAvLyBoYXNQcmV2aW91c0NoYXB0ZXI6IChyZWFkZXIuc3BpbmUuc3BpbmVJdGVtSW5kZXggfHwgMCkgPCAobWFuaWZlc3QucmVhZGluZ09yZGVyLmxlbmd0aCAtIDEpLFxuICAgICAgLy8gbnVtYmVyT2ZTcGluZUl0ZW1zOiBjb250ZXh0LmdldE1hbmlmZXN0KCk/LnJlYWRpbmdPcmRlci5sZW5ndGgsXG4gICAgfVxuICB9XG5cbiAgY29uc3QgZ2V0U3BpbmVJdGVtTnVtYmVyT2ZQYWdlcyA9IChzcGluZUl0ZW06IFNwaW5lSXRlbSkgPT4ge1xuICAgIC8vIHByZS1wYWdpbmF0ZWQgYWx3YXlzIGFyZSBvbmx5IG9uZSBwYWdlXG4gICAgLy8gaWYgKCFzcGluZUl0ZW0uaXNSZWZsb3dhYmxlKSByZXR1cm4gMVxuXG4gICAgY29uc3Qgd3JpdGluZ01vZGUgPSBzcGluZUl0ZW0uc3BpbmVJdGVtRnJhbWUuZ2V0V3JpdGluZ01vZGUoKVxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gc3BpbmVJdGVtLmdldEVsZW1lbnREaW1lbnNpb25zKClcblxuICAgIGlmICh3cml0aW5nTW9kZSA9PT0gYHZlcnRpY2FsLXJsYCkge1xuICAgICAgcmV0dXJuIGdldE51bWJlck9mUGFnZXMoaGVpZ2h0LCByZWFkZXIuY29udGV4dC5nZXRQYWdlU2l6ZSgpLmhlaWdodClcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0TnVtYmVyT2ZQYWdlcyh3aWR0aCwgcmVhZGVyLmNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aClcbiAgfVxuXG4gIGNvbnN0IGdldFRvdGFsTnVtYmVyT2ZQYWdlcyA9ICgpID0+IHtcbiAgICBjb25zdCBudW1iZXJPZlBhZ2VzUGVySXRlbXMgPSByZWFkZXIuZ2V0U3BpbmVJdGVtcygpLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIGdldFNwaW5lSXRlbU51bWJlck9mUGFnZXMoaXRlbSlcbiAgICB9LCAwKVxuXG4gICAgY29uc3QgdG90YWxOdW1iZXJPZlBhZ2VzID0gbnVtYmVyT2ZQYWdlc1Blckl0ZW1zXG4gICAgICAucmVkdWNlKChhY2MsIG51bWJlck9mUGFnZXNGb3JJdGVtKSA9PiBhY2MgKyBudW1iZXJPZlBhZ2VzRm9ySXRlbSwgMClcblxuICAgIHJldHVybiB7XG4gICAgICBudW1iZXJPZlBhZ2VzUGVySXRlbXMsXG4gICAgICB0b3RhbE51bWJlck9mUGFnZXNcbiAgICB9XG4gICAgLy8gQHRvZG8gdHJpZ2dlciBjaGFuZ2UgdG8gcGFnaW5hdGlvbiBpbmZvICgrIG1lbW8gaWYgbnVtYmVyIGlzIHNhbWUpXG4gIH1cblxuICBjb25zdCBtYXBQYWdpbmF0aW9uSW5mb1RvVG90YWxQYWdlc0luZm8gPSAoeyBlbmRTcGluZUl0ZW1JbmRleCwgZW5kUGFnZUluZGV4LCBiZWdpblNwaW5lSXRlbUluZGV4LCBiZWdpblBhZ2VJbmRleCB9OiBPYnNlcnZlZFZhbHVlT2Y8dHlwZW9mIHJlYWRlcltgJGBdW2BwYWdpbmF0aW9uJGBdPikgPT4ge1xuICAgIGNvbnN0IHsgdG90YWxOdW1iZXJPZlBhZ2VzLCBudW1iZXJPZlBhZ2VzUGVySXRlbXMgfSA9IGdldFRvdGFsTnVtYmVyT2ZQYWdlcygpXG5cbiAgICByZXR1cm4ge1xuICAgICAgYmVnaW5BYnNvbHV0ZVBhZ2VJbmRleDogbnVtYmVyT2ZQYWdlc1Blckl0ZW1zXG4gICAgICAgIC5zbGljZSgwLCBiZWdpblNwaW5lSXRlbUluZGV4KVxuICAgICAgICAucmVkdWNlKChhY2MsIG51bWJlck9mUGFnZXNGb3JJdGVtKSA9PiBhY2MgKyBudW1iZXJPZlBhZ2VzRm9ySXRlbSwgYmVnaW5QYWdlSW5kZXggPz8gMCksXG4gICAgICBlbmRBYnNvbHV0ZVBhZ2VJbmRleDogbnVtYmVyT2ZQYWdlc1Blckl0ZW1zXG4gICAgICAgIC5zbGljZSgwLCBlbmRTcGluZUl0ZW1JbmRleClcbiAgICAgICAgLnJlZHVjZSgoYWNjLCBudW1iZXJPZlBhZ2VzRm9ySXRlbSkgPT4gYWNjICsgbnVtYmVyT2ZQYWdlc0Zvckl0ZW0sIGVuZFBhZ2VJbmRleCA/PyAwKSxcbiAgICAgIC8qKlxuICAgICAgICogVGhpcyBtYXkgYmUgbm90IGFjY3VyYXRlIGZvciByZWZsb3dhYmxlIGR1ZSB0byBkeW5hbWljIGxvYWQgLyB1bmxvYWQuXG4gICAgICAgKi9cbiAgICAgIG51bWJlck9mVG90YWxQYWdlczogdG90YWxOdW1iZXJPZlBhZ2VzXG4gICAgfVxuICB9XG5cbiAgcmVhZGVyLnJlZ2lzdGVySG9vayhgaXRlbS5vbkNyZWF0ZWRgLCAoeyBpdGVtIH0pID0+IHtcbiAgICBjaGFwdGVyc0luZm9baXRlbS5pZF0gPSBnZXRDaGFwdGVySW5mbyhpdGVtKVxuXG4gICAgcmV0dXJuICgpID0+IHsgfVxuICB9KVxuXG4gIGNvbnN0IHBhZ2luYXRpb25FeHRlbmRlZEluZm8gPSByZWFkZXIuJC5wYWdpbmF0aW9uJFxuICAgIC5waXBlKFxuICAgICAgbWFwKG1hcFBhZ2luYXRpb25JbmZvVG9FeHRlbmRlZEluZm8pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNTaGFsbG93RXF1YWwpXG4gICAgKVxuXG4gIGNvbnN0IHRvdGFsUGFnZXMkID0gcmVhZGVyLiQubGF5b3V0JFxuICAgIC5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDEwLCBhbmltYXRpb25GcmFtZVNjaGVkdWxlciksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShyZWFkZXIuJC5wYWdpbmF0aW9uJCksXG4gICAgICBtYXAoKFssIHBhZ2luYXRpb25JbmZvXSkgPT4gbWFwUGFnaW5hdGlvbkluZm9Ub1RvdGFsUGFnZXNJbmZvKHBhZ2luYXRpb25JbmZvKSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NoYWxsb3dFcXVhbCksXG4gICAgICBzdGFydFdpdGgoe1xuICAgICAgICBiZWdpbkFic29sdXRlUGFnZUluZGV4OiAwLFxuICAgICAgICBlbmRBYnNvbHV0ZVBhZ2VJbmRleDogMCxcbiAgICAgICAgbnVtYmVyT2ZUb3RhbFBhZ2VzOiAwXG4gICAgICB9KVxuICAgIClcblxuICByZXR1cm4ge1xuICAgIC4uLnJlYWRlcixcbiAgICAkOiB7XG4gICAgICAuLi5yZWFkZXIuJCxcbiAgICAgIHBhZ2luYXRpb24kOiBjb21iaW5lTGF0ZXN0KFtwYWdpbmF0aW9uRXh0ZW5kZWRJbmZvLCB0b3RhbFBhZ2VzJF0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoW2EsIGJdKSA9PiAoeyAuLi5hLCAuLi5iIH0pKSxcbiAgICAgICAgICB0YXAoKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHJlcG9ydC5sb2coYHBhZ2luYXRpb25gLCBkYXRhKVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgIClcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGJ1aWxkQ2hhcHRlckluZm9Gcm9tU3BpbmVJdGVtID0gKG1hbmlmZXN0OiBNYW5pZmVzdCwgaXRlbTogTWFuaWZlc3RbYHNwaW5lSXRlbXNgXVtudW1iZXJdKSA9PiB7XG4gIGNvbnN0IHsgcGF0aCB9ID0gaXRlbVxuXG4gIHJldHVybiBnZXRDaGFwdGVySW5mbyhwYXRoLCBtYW5pZmVzdC5uYXYudG9jKVxufVxuXG5jb25zdCBnZXRDaGFwdGVySW5mbyA9IChwYXRoOiBzdHJpbmcsIHRvY0l0ZW1zOiBNYW5pZmVzdFtgbmF2YF1bYHRvY2BdKTogQ2hhcHRlckluZm8gfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gdG9jSXRlbXMucmVkdWNlKChhY2M6IENoYXB0ZXJJbmZvIHwgdW5kZWZpbmVkLCB0b2NJdGVtKSA9PiB7XG4gICAgY29uc3QgaW5kZXhPZkhhc2ggPSB0b2NJdGVtLnBhdGguaW5kZXhPZihgI2ApXG4gICAgY29uc3QgdG9jSXRlbVBhdGhXaXRob3V0QW5jaG9yID0gaW5kZXhPZkhhc2ggPiAwID8gdG9jSXRlbS5wYXRoLnN1YnN0cigwLCBpbmRleE9mSGFzaCkgOiB0b2NJdGVtLnBhdGhcbiAgICBpZiAocGF0aC5lbmRzV2l0aCh0b2NJdGVtUGF0aFdpdGhvdXRBbmNob3IpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdG9jSXRlbS50aXRsZSxcbiAgICAgICAgcGF0aDogdG9jSXRlbS5wYXRoXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc3ViSW5mbyA9IGdldENoYXB0ZXJJbmZvKHBhdGgsIHRvY0l0ZW0uY29udGVudHMpXG5cbiAgICBpZiAoc3ViSW5mbykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3ViQ2hhcHRlcjogc3ViSW5mbyxcbiAgICAgICAgdGl0bGU6IHRvY0l0ZW0udGl0bGUsXG4gICAgICAgIHBhdGg6IHRvY0l0ZW0ucGF0aFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhY2NcbiAgfSwgdW5kZWZpbmVkKVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/enhancers/pagination.ts\n");
|
|
160
|
+
|
|
161
|
+
/***/ }),
|
|
162
|
+
|
|
163
|
+
/***/ "./src/enhancers/progression.ts":
|
|
164
|
+
/*!**************************************!*\
|
|
165
|
+
!*** ./src/enhancers/progression.ts ***!
|
|
166
|
+
\**************************************/
|
|
167
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
168
|
+
|
|
169
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"progressionEnhancer\": () => (/* binding */ progressionEnhancer)\n/* harmony export */ });\nconst progressionEnhancer = (next) => (options) => {\n const reader = next(options);\n const getPercentageEstimate = (context, currentSpineIndex, numberOfPages, pageIndex, currentPosition, currentItem) => {\n var _a, _b, _c, _d, _e, _f;\n const isGloballyPrePaginated = ((_a = context.getManifest()) === null || _a === void 0 ? void 0 : _a.renditionLayout) === `pre-paginated`;\n const readingOrderLength = ((_b = context.getManifest()) === null || _b === void 0 ? void 0 : _b.spineItems.length) || 0;\n const estimateBeforeThisItem = ((_c = context.getManifest()) === null || _c === void 0 ? void 0 : _c.spineItems.slice(0, currentSpineIndex).reduce((acc, item) => acc + item.progressionWeight, 0)) || 0;\n const currentItemWeight = ((_e = (_d = context.getManifest()) === null || _d === void 0 ? void 0 : _d.spineItems[currentSpineIndex]) === null || _e === void 0 ? void 0 : _e.progressionWeight) || 0;\n let progressWithinThisItem = (pageIndex + 1) * (currentItemWeight / numberOfPages);\n if (!isGloballyPrePaginated && currentItem.isReflowable && !currentItem.isReady()) {\n progressWithinThisItem = 0;\n }\n let totalProgress = estimateBeforeThisItem + progressWithinThisItem;\n if (((_f = context.getManifest()) === null || _f === void 0 ? void 0 : _f.renditionFlow) === `scrolled-continuous`) {\n if (currentItem.isReady()) {\n progressWithinThisItem = getScrollPercentageWithinItem(context, currentPosition, currentItem);\n }\n else {\n progressWithinThisItem = 0;\n }\n totalProgress = getTotalProgressFromPercentages(estimateBeforeThisItem, currentItemWeight, progressWithinThisItem);\n }\n if ((currentSpineIndex === readingOrderLength - 1) && (pageIndex === numberOfPages - 1) && totalProgress > 0.99) {\n return 1;\n }\n return totalProgress;\n };\n const getTotalProgressFromPercentages = (estimateBeforeThisItem, currentItemWeight, progressWithinThisItem) => {\n return estimateBeforeThisItem + (currentItemWeight * progressWithinThisItem);\n };\n const getScrollPercentageWithinItem = (context, currentPosition, currentItem) => {\n const { height, width } = currentItem.getElementDimensions();\n const { topStart, leftStart } = reader.getAbsolutePositionOf(currentItem);\n if (context.getSettings().computedPageTurnDirection === `vertical`) {\n return Math.max(0, Math.min(1, ((currentPosition.y - topStart) + context.getVisibleAreaRect().height) / height));\n }\n else {\n return Math.max(0, Math.min(1, ((currentPosition.x - leftStart) + context.getVisibleAreaRect().width) / width));\n }\n };\n return Object.assign(Object.assign({}, reader), { progression: {\n getPercentageEstimate,\n getScrollPercentageWithinItem\n } });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1NBQ2pIO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1NBQ2hIO0lBQ0gsQ0FBQztJQUVELHVDQUNLLE1BQU0sS0FDVCxXQUFXLEVBQUU7WUFDWCxxQkFBcUI7WUFDckIsNkJBQTZCO1NBQzlCLElBQ0Y7QUFDSCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL2VuaGFuY2Vycy9wcm9ncmVzc2lvbi50cz82MDI0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi4vY29udGV4dFwiXG5pbXBvcnQgeyBFbmhhbmNlciB9IGZyb20gXCIuL3R5cGVzXCJcbmltcG9ydCB7IFNwaW5lSXRlbSB9IGZyb20gXCIuLi9zcGluZUl0ZW0vY3JlYXRlU3BpbmVJdGVtXCJcblxuLyoqXG4gKiBIZWxwIGRlYWxpbmcgd2l0aCBwcm9ncmVzc2lvbiB0aHJvdWdoIHRoZSBib29rXG4gKi9cbmV4cG9ydCBjb25zdCBwcm9ncmVzc2lvbkVuaGFuY2VyOiBFbmhhbmNlcjx7fSwge1xuICBwcm9ncmVzc2lvbjoge1xuICAgIGdldFBlcmNlbnRhZ2VFc3RpbWF0ZTogKFxuICAgICAgY29udGV4dDogQ29udGV4dCxcbiAgICAgIGN1cnJlbnRTcGluZUluZGV4OiBudW1iZXIsXG4gICAgICBudW1iZXJPZlBhZ2VzOiBudW1iZXIsXG4gICAgICBwYWdlSW5kZXg6IG51bWJlcixcbiAgICAgIGN1cnJlbnRQb3NpdGlvbjogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9LFxuICAgICAgY3VycmVudEl0ZW06IFNwaW5lSXRlbVxuICAgICkgPT4gbnVtYmVyLFxuICAgIGdldFNjcm9sbFBlcmNlbnRhZ2VXaXRoaW5JdGVtOiAoY29udGV4dDogQ29udGV4dCwgY3VycmVudFBvc2l0aW9uOiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0sIGN1cnJlbnRJdGVtOiBTcGluZUl0ZW0pID0+IG51bWJlclxuICB9XG59PiA9IChuZXh0KSA9PiAob3B0aW9ucykgPT4ge1xuICBjb25zdCByZWFkZXIgPSBuZXh0KG9wdGlvbnMpXG5cbiAgY29uc3QgZ2V0UGVyY2VudGFnZUVzdGltYXRlID0gKFxuICAgIGNvbnRleHQ6IENvbnRleHQsXG4gICAgY3VycmVudFNwaW5lSW5kZXg6IG51bWJlcixcbiAgICBudW1iZXJPZlBhZ2VzOiBudW1iZXIsXG4gICAgcGFnZUluZGV4OiBudW1iZXIsXG4gICAgY3VycmVudFBvc2l0aW9uOiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0sXG4gICAgY3VycmVudEl0ZW06IFNwaW5lSXRlbVxuICApID0+IHtcbiAgICBjb25zdCBpc0dsb2JhbGx5UHJlUGFnaW5hdGVkID0gY29udGV4dC5nZXRNYW5pZmVzdCgpPy5yZW5kaXRpb25MYXlvdXQgPT09IGBwcmUtcGFnaW5hdGVkYFxuICAgIGNvbnN0IHJlYWRpbmdPcmRlckxlbmd0aCA9IGNvbnRleHQuZ2V0TWFuaWZlc3QoKT8uc3BpbmVJdGVtcy5sZW5ndGggfHwgMFxuICAgIGNvbnN0IGVzdGltYXRlQmVmb3JlVGhpc0l0ZW0gPSBjb250ZXh0LmdldE1hbmlmZXN0KCk/LnNwaW5lSXRlbXNcbiAgICAgIC5zbGljZSgwLCBjdXJyZW50U3BpbmVJbmRleClcbiAgICAgIC5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjICsgaXRlbS5wcm9ncmVzc2lvbldlaWdodCwgMCkgfHwgMFxuICAgIGNvbnN0IGN1cnJlbnRJdGVtV2VpZ2h0ID0gY29udGV4dC5nZXRNYW5pZmVzdCgpPy5zcGluZUl0ZW1zW2N1cnJlbnRTcGluZUluZGV4XT8ucHJvZ3Jlc3Npb25XZWlnaHQgfHwgMFxuICAgIC8vIGNvbnN0IG5leHRJdGVtID0gY29udGV4dC5tYW5pZmVzdC5yZWFkaW5nT3JkZXJbY3VycmVudFNwaW5lSW5kZXggKyAxXVxuICAgIC8vIGNvbnN0IG5leHRJdGVtV2VpZ2h0ID0gbmV4dEl0ZW0gPyBuZXh0SXRlbS5wcm9ncmVzc2lvbldlaWdodCA6IDFcbiAgICAvLyBjb25zdCBwcm9ncmVzc1dlaWdodEdhcCA9IChjdXJyZW50SXRlbVdlaWdodCArIGVzdGltYXRlQmVmb3JlVGhpc0l0ZW0pIC0gZXN0aW1hdGVCZWZvcmVUaGlzSXRlbVxuXG4gICAgbGV0IHByb2dyZXNzV2l0aGluVGhpc0l0ZW0gPSAocGFnZUluZGV4ICsgMSkgKiAoY3VycmVudEl0ZW1XZWlnaHQgLyBudW1iZXJPZlBhZ2VzKVxuXG4gICAgaWYgKCFpc0dsb2JhbGx5UHJlUGFnaW5hdGVkICYmIGN1cnJlbnRJdGVtLmlzUmVmbG93YWJsZSAmJiAhY3VycmVudEl0ZW0uaXNSZWFkeSgpKSB7XG4gICAgICBwcm9ncmVzc1dpdGhpblRoaXNJdGVtID0gMFxuICAgIH1cblxuICAgIGxldCB0b3RhbFByb2dyZXNzID0gZXN0aW1hdGVCZWZvcmVUaGlzSXRlbSArIHByb2dyZXNzV2l0aGluVGhpc0l0ZW1cblxuICAgIGlmIChjb250ZXh0LmdldE1hbmlmZXN0KCk/LnJlbmRpdGlvbkZsb3cgPT09IGBzY3JvbGxlZC1jb250aW51b3VzYCkge1xuICAgICAgaWYgKGN1cnJlbnRJdGVtLmlzUmVhZHkoKSkge1xuICAgICAgICBwcm9ncmVzc1dpdGhpblRoaXNJdGVtID0gZ2V0U2Nyb2xsUGVyY2VudGFnZVdpdGhpbkl0ZW0oY29udGV4dCwgY3VycmVudFBvc2l0aW9uLCBjdXJyZW50SXRlbSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRoYXQgd2F5IHdlIGF2b2lkIGhhdmluZyBhIHByb2dyZXNzIG9mIDEganVzdCBiZWNhdXNlIHRoZSBpdGVtIGlzIG5vdCBsb2FkZWQgYW5kIGNvdmVyIGFsbCBzY3JlZW4gZHVlIHRvIHNtYWxsZXIgc2l6ZS5cbiAgICAgICAgLy8gVGhlcmVmb3JlIGl0IGVmZmVjdGl2ZWx5IHByZXZlbnQganVtcCBmcm9tIDMwJSB0byAyNSUgZm9yIGV4YW1wbGUuXG4gICAgICAgIHByb2dyZXNzV2l0aGluVGhpc0l0ZW0gPSAwXG4gICAgICB9XG4gICAgICB0b3RhbFByb2dyZXNzID0gZ2V0VG90YWxQcm9ncmVzc0Zyb21QZXJjZW50YWdlcyhlc3RpbWF0ZUJlZm9yZVRoaXNJdGVtLCBjdXJyZW50SXRlbVdlaWdodCwgcHJvZ3Jlc3NXaXRoaW5UaGlzSXRlbSlcbiAgICB9XG5cbiAgICAvLyBiZWNhdXNlIHRoZSByb3VuZGluZyBvZiB3ZWlnaHQgdXNlIGEgbG90IG9mIGRlY2ltYWxzIHdlIHdpbGwgZW5kIHVwIHdpdGhcbiAgICAvLyBzb21ldGhpbmcgbGlrZSAwLjk5OTg3OCBmb3IgdGhlIGxhc3QgcGFnZVxuICAgIGlmICgoY3VycmVudFNwaW5lSW5kZXggPT09IHJlYWRpbmdPcmRlckxlbmd0aCAtIDEpICYmIChwYWdlSW5kZXggPT09IG51bWJlck9mUGFnZXMgLSAxKSAmJiB0b3RhbFByb2dyZXNzID4gMC45OSkge1xuICAgICAgcmV0dXJuIDFcbiAgICB9XG5cbiAgICByZXR1cm4gdG90YWxQcm9ncmVzc1xuICB9XG5cbiAgY29uc3QgZ2V0VG90YWxQcm9ncmVzc0Zyb21QZXJjZW50YWdlcyA9IChlc3RpbWF0ZUJlZm9yZVRoaXNJdGVtOiBudW1iZXIsIGN1cnJlbnRJdGVtV2VpZ2h0OiBudW1iZXIsIHByb2dyZXNzV2l0aGluVGhpc0l0ZW06IG51bWJlcikgPT4ge1xuICAgIHJldHVybiBlc3RpbWF0ZUJlZm9yZVRoaXNJdGVtICsgKGN1cnJlbnRJdGVtV2VpZ2h0ICogcHJvZ3Jlc3NXaXRoaW5UaGlzSXRlbSlcbiAgfVxuXG4gIGNvbnN0IGdldFNjcm9sbFBlcmNlbnRhZ2VXaXRoaW5JdGVtID0gKGNvbnRleHQ6IENvbnRleHQsIGN1cnJlbnRQb3NpdGlvbjogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9LCBjdXJyZW50SXRlbTogU3BpbmVJdGVtKSA9PiB7XG4gICAgY29uc3QgeyBoZWlnaHQsIHdpZHRoIH0gPSBjdXJyZW50SXRlbS5nZXRFbGVtZW50RGltZW5zaW9ucygpXG5cbiAgICBjb25zdCB7IHRvcFN0YXJ0LCBsZWZ0U3RhcnQgfSA9IHJlYWRlci5nZXRBYnNvbHV0ZVBvc2l0aW9uT2YoY3VycmVudEl0ZW0pXG5cbiAgICBpZiAoY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkUGFnZVR1cm5EaXJlY3Rpb24gPT09IGB2ZXJ0aWNhbGApIHtcbiAgICAgIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCAoKGN1cnJlbnRQb3NpdGlvbi55IC0gdG9wU3RhcnQpICsgY29udGV4dC5nZXRWaXNpYmxlQXJlYVJlY3QoKS5oZWlnaHQpIC8gaGVpZ2h0KSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWluKDEsICgoY3VycmVudFBvc2l0aW9uLnggLSBsZWZ0U3RhcnQpICsgY29udGV4dC5nZXRWaXNpYmxlQXJlYVJlY3QoKS53aWR0aCkgLyB3aWR0aCkpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5yZWFkZXIsXG4gICAgcHJvZ3Jlc3Npb246IHtcbiAgICAgIGdldFBlcmNlbnRhZ2VFc3RpbWF0ZSxcbiAgICAgIGdldFNjcm9sbFBlcmNlbnRhZ2VXaXRoaW5JdGVtXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/enhancers/progression.ts\n");
|
|
170
|
+
|
|
171
|
+
/***/ }),
|
|
172
|
+
|
|
173
|
+
/***/ "./src/enhancers/resources/index.ts":
|
|
174
|
+
/*!******************************************!*\
|
|
175
|
+
!*** ./src/enhancers/resources/index.ts ***!
|
|
176
|
+
\******************************************/
|
|
177
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
178
|
+
|
|
179
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"resourcesEnhancer\": () => (/* binding */ resourcesEnhancer)\n/* harmony export */ });\n/* harmony import */ var _resourcesManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./resourcesManager */ \"./src/enhancers/resources/resourcesManager.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nconst resourcesEnhancer = (next) => (options) => {\n const reader = next(options);\n const resourceManager = (0,_resourcesManager__WEBPACK_IMPORTED_MODULE_0__.createResourcesManager)(reader.context);\n const load = (manifest, loadOptions) => {\n reader.load(manifest, Object.assign({}, loadOptions));\n };\n reader.registerHook(`item.onGetResource`, (fetcher) => (item) => __awaiter(void 0, void 0, void 0, function* () {\n return resourceManager.get(item, fetcher);\n }));\n const destroy = () => {\n resourceManager.destroy();\n reader.destroy();\n };\n return Object.assign(Object.assign({}, reader), { destroy,\n load });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZW5oYW5jZXJzL3Jlc291cmNlcy9pbmRleC50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUMyRDtBQUVwRCxNQUFNLGlCQUFpQixHQUV6QixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtJQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzVCLE1BQU0sZUFBZSxHQUFHLHlFQUFzQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFNOUQsTUFBTSxJQUFJLEdBQXVCLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxFQUFFO1FBQ3pELE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxvQkFDZixXQUFXLEVBQ2Q7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBTyxJQUFJLEVBQUUsRUFBRTtRQUNwRSxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztJQUMzQyxDQUFDLEVBQUM7SUFFRixNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUU7UUFDbkIsZUFBZSxDQUFDLE9BQU8sRUFBRTtRQUN6QixNQUFNLENBQUMsT0FBTyxFQUFFO0lBQ2xCLENBQUM7SUFFRCx1Q0FDSyxNQUFNLEtBQ1QsT0FBTztRQUNQLElBQUksSUFDTDtBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvZW5oYW5jZXJzL3Jlc291cmNlcy9pbmRleC50cz9lOTNmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVuaGFuY2VyIH0gZnJvbSBcIi4uL3R5cGVzXCJcbmltcG9ydCB7IGNyZWF0ZVJlc291cmNlc01hbmFnZXIgfSBmcm9tIFwiLi9yZXNvdXJjZXNNYW5hZ2VyXCJcblxuZXhwb3J0IGNvbnN0IHJlc291cmNlc0VuaGFuY2VyOiBFbmhhbmNlcjx7fSwge1xuXG59PiA9IChuZXh0KSA9PiAob3B0aW9ucykgPT4ge1xuICBjb25zdCByZWFkZXIgPSBuZXh0KG9wdGlvbnMpXG4gIGNvbnN0IHJlc291cmNlTWFuYWdlciA9IGNyZWF0ZVJlc291cmNlc01hbmFnZXIocmVhZGVyLmNvbnRleHQpXG5cbiAgLyoqXG4gICAqIFdlIHdpbGwgc2VydmUgcmVzb3VyY2VzIGZyb20gY2FjaGUgaWYgdGhleSBleGlzdCBvdGhlcndpc2UgZmV0Y2ggaXQgbm9ybWFsbHkuXG4gICAqIFRoZSByZXNvdXJjZSBtYW5hZ2VyIHVzZSB0aGUgcHJvdmlkZWQgdXNlciBvcHRpb24gdG8gZmV0Y2ggcmVzb3VyY2UgaWYgaXQgZXhpc3RzXG4gICAqL1xuICBjb25zdCBsb2FkOiB0eXBlb2YgcmVhZGVyLmxvYWQgPSAobWFuaWZlc3QsIGxvYWRPcHRpb25zKSA9PiB7XG4gICAgcmVhZGVyLmxvYWQobWFuaWZlc3QsIHtcbiAgICAgIC4uLmxvYWRPcHRpb25zXG4gICAgfSlcbiAgfVxuXG4gIHJlYWRlci5yZWdpc3Rlckhvb2soYGl0ZW0ub25HZXRSZXNvdXJjZWAsIChmZXRjaGVyKSA9PiBhc3luYyAoaXRlbSkgPT4ge1xuICAgIHJldHVybiByZXNvdXJjZU1hbmFnZXIuZ2V0KGl0ZW0sIGZldGNoZXIpXG4gIH0pXG5cbiAgY29uc3QgZGVzdHJveSA9ICgpID0+IHtcbiAgICByZXNvdXJjZU1hbmFnZXIuZGVzdHJveSgpXG4gICAgcmVhZGVyLmRlc3Ryb3koKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5yZWFkZXIsXG4gICAgZGVzdHJveSxcbiAgICBsb2FkXG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/enhancers/resources/index.ts\n");
|
|
180
|
+
|
|
181
|
+
/***/ }),
|
|
182
|
+
|
|
183
|
+
/***/ "./src/enhancers/resources/indexedDB.ts":
|
|
184
|
+
/*!**********************************************!*\
|
|
185
|
+
!*** ./src/enhancers/resources/indexedDB.ts ***!
|
|
186
|
+
\**********************************************/
|
|
187
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
188
|
+
|
|
189
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"openDatabase\": () => (/* binding */ openDatabase)\n/* harmony export */ });\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nconst createDatabase = (db) => {\n const put = (key, data) => {\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([`store`], `readwrite`);\n transaction.onerror = function (event) {\n reject(event);\n };\n transaction.oncomplete = function () {\n resolve();\n };\n const objectStore = transaction.objectStore(`store`);\n const listener = objectStore.put(data, key);\n listener.onsuccess = () => {\n resolve();\n };\n listener.onerror = (event) => {\n reject(event);\n };\n });\n };\n const get = (key) => {\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([`store`], `readwrite`);\n const objectStore = transaction.objectStore(`store`);\n const request = objectStore.get(key);\n request.onsuccess = () => {\n let value = request.result;\n if (value === undefined) {\n value = null;\n }\n resolve(value);\n };\n transaction.onerror = function () {\n reject(request.error);\n };\n });\n };\n const remove = (key) => {\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([`store`], `readwrite`);\n const objectStore = transaction.objectStore(`store`);\n const request = objectStore.delete(key);\n transaction.onerror = function () {\n reject(request.error);\n };\n transaction.oncomplete = function () {\n resolve();\n };\n transaction.onabort = function () {\n var _a;\n const err = request.error\n ? request.error\n : (_a = request.transaction) === null || _a === void 0 ? void 0 : _a.error;\n reject(err);\n };\n });\n };\n const keys = () => {\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([`store`], `readonly`);\n transaction.onerror = function (event) {\n reject(event);\n };\n const objectStore = transaction.objectStore(`store`);\n const request = objectStore.openKeyCursor();\n const keys = [];\n request.onsuccess = () => {\n const cursor = request.result;\n if (!cursor) {\n resolve(keys);\n return;\n }\n keys.push(cursor.key);\n cursor.continue();\n };\n request.onerror = () => {\n reject(request.error);\n };\n });\n };\n return {\n put,\n keys,\n get,\n remove\n };\n};\nconst openDatabase = (name) => __awaiter(void 0, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n const request = window.indexedDB.open(name);\n request.onerror = function (event) {\n reject(event);\n };\n request.onsuccess = function () {\n resolve(createDatabase(request.result));\n };\n request.onupgradeneeded = () => {\n request.result.createObjectStore(`store`);\n };\n });\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZW5oYW5jZXJzL3Jlc291cmNlcy9pbmRleGVkREIudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLE1BQU0sY0FBYyxHQUFHLENBQUMsRUFBMEIsRUFBRSxFQUFFO0lBQ3BELE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBVyxFQUFFLElBQVUsRUFBRSxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDM0MsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFdBQVcsQ0FBQztZQUUxRCxXQUFXLENBQUMsT0FBTyxHQUFHLFVBQVUsS0FBSztnQkFDbkMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxXQUFXLENBQUMsVUFBVSxHQUFHO2dCQUN2QixPQUFPLEVBQUU7WUFDWCxDQUFDO1lBRUQsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7WUFDcEQsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1lBRTNDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFO2dCQUN4QixPQUFPLEVBQUU7WUFDWCxDQUFDO1lBRUQsUUFBUSxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUMzQixNQUFNLENBQUMsS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO1FBQzFCLE9BQU8sSUFBSSxPQUFPLENBQWMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbEQsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFdBQVcsQ0FBQztZQUMxRCxNQUFNLFdBQVcsR0FB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QU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUUzQyxPQUFPLENBQUMsT0FBTyxHQUFHLFVBQVUsS0FBSztZQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sQ0FBQyxTQUFTLEdBQUc7WUFDbEIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELE9BQU8sQ0FBQyxlQUFlLEdBQUcsR0FBRyxFQUFFO1lBQzdCLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL2VuaGFuY2Vycy9yZXNvdXJjZXMvaW5kZXhlZERCLnRzPzVlY2EiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY3JlYXRlRGF0YWJhc2UgPSAoZGI6IGdsb2JhbFRoaXMuSURCRGF0YWJhc2UpID0+IHtcbiAgY29uc3QgcHV0ID0gKGtleTogc3RyaW5nLCBkYXRhOiBCbG9iKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oW2BzdG9yZWBdLCBgcmVhZHdyaXRlYClcblxuICAgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICByZWplY3QoZXZlbnQpXG4gICAgICB9XG5cbiAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlc29sdmUoKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKGBzdG9yZWApXG4gICAgICBjb25zdCBsaXN0ZW5lciA9IG9iamVjdFN0b3JlLnB1dChkYXRhLCBrZXkpXG5cbiAgICAgIGxpc3RlbmVyLm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpXG4gICAgICB9XG5cbiAgICAgIGxpc3RlbmVyLm9uZXJyb3IgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgcmVqZWN0KGV2ZW50KVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBnZXQgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8QmxvYiB8IG51bGw+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oW2BzdG9yZWBdLCBgcmVhZHdyaXRlYClcbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoYHN0b3JlYClcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoa2V5KVxuXG4gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgbGV0IHZhbHVlID0gcmVxdWVzdC5yZXN1bHRcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YWx1ZSA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKHZhbHVlKVxuICAgICAgfVxuXG4gICAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZWplY3QocmVxdWVzdC5lcnJvcilcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcmVtb3ZlID0gKGtleTogZ2xvYmFsVGhpcy5JREJWYWxpZEtleSkgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFtgc3RvcmVgXSwgYHJlYWR3cml0ZWApXG5cbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoYHN0b3JlYClcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoa2V5KVxuXG4gICAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZWplY3QocmVxdWVzdC5lcnJvcilcbiAgICAgIH1cblxuICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmVzb2x2ZSgpXG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSByZXF1ZXN0IHdpbGwgYmUgYWxzbyBiZSBhYm9ydGVkIGlmIHdlJ3ZlIGV4Y2VlZGVkIG91ciBzdG9yYWdlXG4gICAgICAvLyBzcGFjZS5cbiAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGVyciA9IHJlcXVlc3QuZXJyb3JcbiAgICAgICAgICA/IHJlcXVlc3QuZXJyb3JcbiAgICAgICAgICA6IHJlcXVlc3QudHJhbnNhY3Rpb24/LmVycm9yXG4gICAgICAgIHJlamVjdChlcnIpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGtleXMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGdsb2JhbFRoaXMuSURCVmFsaWRLZXlbXT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbYHN0b3JlYF0sIGByZWFkb25seWApXG5cbiAgICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgcmVqZWN0KGV2ZW50KVxuICAgICAgfVxuXG4gICAgICAvLyB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gICByZXNvbHZlKClcbiAgICAgIC8vIH07XG5cbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoYHN0b3JlYClcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuS2V5Q3Vyc29yKClcbiAgICAgIGNvbnN0IGtleXM6IGdsb2JhbFRoaXMuSURCVmFsaWRLZXlbXSA9IFtdXG5cbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdFxuXG4gICAgICAgIGlmICghY3Vyc29yKSB7XG4gICAgICAgICAgcmVzb2x2ZShrZXlzKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAga2V5cy5wdXNoKGN1cnNvci5rZXkpXG4gICAgICAgIGN1cnNvci5jb250aW51ZSgpXG4gICAgICB9XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgcmVqZWN0KHJlcXVlc3QuZXJyb3IpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHV0LFxuICAgIGtleXMsXG4gICAgZ2V0LFxuICAgIHJlbW92ZVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBvcGVuRGF0YWJhc2UgPSBhc3luYyAobmFtZTogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVEYXRhYmFzZT4+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKG5hbWUpXG5cbiAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHJlamVjdChldmVudClcbiAgICB9XG5cbiAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlc29sdmUoY3JlYXRlRGF0YWJhc2UocmVxdWVzdC5yZXN1bHQpKVxuICAgIH1cblxuICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gKCkgPT4ge1xuICAgICAgcmVxdWVzdC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoYHN0b3JlYClcbiAgICB9XG4gIH0pXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/enhancers/resources/indexedDB.ts\n");
|
|
190
|
+
|
|
191
|
+
/***/ }),
|
|
192
|
+
|
|
193
|
+
/***/ "./src/enhancers/resources/resourcesManager.ts":
|
|
194
|
+
/*!*****************************************************!*\
|
|
195
|
+
!*** ./src/enhancers/resources/resourcesManager.ts ***!
|
|
196
|
+
\*****************************************************/
|
|
197
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
198
|
+
|
|
199
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createResourcesManager\": () => (/* binding */ createResourcesManager)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../report */ \"./src/report.ts\");\n/* harmony import */ var _indexedDB__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./indexedDB */ \"./src/enhancers/resources/indexedDB.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\nconst createResourcesManager = (context) => {\n let uniqueID = Date.now().toString();\n const cache$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const retrieveItem = (itemIndexOrId) => {\n var _a, _b;\n if (typeof itemIndexOrId === `string` || typeof itemIndexOrId === `object`) {\n const id = typeof itemIndexOrId === `object` ? itemIndexOrId.id : undefined;\n return (_a = context.getManifest()) === null || _a === void 0 ? void 0 : _a.spineItems.find((entry) => entry.id === id);\n }\n else {\n return (_b = context.getManifest()) === null || _b === void 0 ? void 0 : _b.spineItems[itemIndexOrId];\n }\n };\n const get = (itemIndexOrId, fetchResource) => __awaiter(void 0, void 0, void 0, function* () {\n const item = retrieveItem(itemIndexOrId);\n if (!item)\n return new Response(`Item not found`, { status: 404 });\n const db = yield (0,_indexedDB__WEBPACK_IMPORTED_MODULE_3__.openDatabase)(`prose-reader`);\n const cacheData = yield db.get(`${uniqueID}_${item.id}`);\n if (cacheData) {\n return new Response(cacheData, { status: 200 });\n }\n const data = (fetchResource && (yield fetchResource(item))) || (yield fetch(item.href));\n cache(item, data.clone());\n return data;\n });\n const cache = (itemIndexOrId, data) => {\n cache$.next({ id: itemIndexOrId, data });\n };\n cache$.asObservable()\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.mergeMap)(({ id, data }) => {\n const item = retrieveItem(id);\n if (!item)\n return rxjs__WEBPACK_IMPORTED_MODULE_0__.EMPTY;\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.from)((0,rxjs__WEBPACK_IMPORTED_MODULE_0__.forkJoin)([(0,_indexedDB__WEBPACK_IMPORTED_MODULE_3__.openDatabase)(`prose-reader`), (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.from)(data.blob())]))\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(([db, blob]) => {\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.from)(db.put(`${uniqueID}_${item.id}`, blob));\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.catchError)(error => {\n _report__WEBPACK_IMPORTED_MODULE_2__.Report.error(error);\n return rxjs__WEBPACK_IMPORTED_MODULE_0__.EMPTY;\n }));\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(context.$.destroy$))\n .subscribe();\n const onLoad$ = context.$.load$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)(() => {\n uniqueID = Date.now().toString();\n }));\n (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.merge)(onLoad$)\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(() => {\n _report__WEBPACK_IMPORTED_MODULE_2__.Report.log(`Cleanup up old cache...`);\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.from)((0,_indexedDB__WEBPACK_IMPORTED_MODULE_3__.openDatabase)(`prose-reader`))\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(db => (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.from)(db.keys())\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.map)(keys => keys.filter(key => !key.toString().startsWith(uniqueID))), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)((keysToRemove) => {\n const promises = keysToRemove.map(key => db.remove(key));\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.from)(Promise.all(promises));\n }))), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.catchError)(error => {\n _report__WEBPACK_IMPORTED_MODULE_2__.Report.error(error);\n return rxjs__WEBPACK_IMPORTED_MODULE_0__.EMPTY;\n }));\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(context.$.destroy$))\n .subscribe();\n const destroy = () => {\n cache$.complete();\n };\n return {\n get,\n destroy\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZW5oYW5jZXJzL3Jlc291cmNlcy9yZXNvdXJjZXNNYW5hZ2VyLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHNEQ7QUFDeUI7QUFFaEQ7QUFFSztBQUVuQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFO0lBQ3pELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSx5Q0FBTyxFQUErRTtJQUV6RyxNQUFNLFlBQVksR0FBRyxDQUFDLGFBQWtFLEVBQUUsRUFBRTs7UUFDMUYsSUFBSSxPQUFPLGFBQWEsS0FBSyxRQUFRLElBQUksT0FBTyxhQUFhLEtBQUssUUFBUSxFQUFFO1lBQzFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sYUFBYSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUMzRSxPQUFPLGFBQU8sQ0FBQyxXQUFXLEVBQUUsMENBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDMUU7YUFBTTtZQUNMLE9BQU8sYUFBTyxDQUFDLFdBQVcsRUFBRSwwQ0FBRSxVQUFVLENBQUMsYUFBYSxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLENBQU8sYUFBa0UsRUFBRSxhQUEyRSxFQUFFLEVBQUU7UUFDcEssTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUV4QyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFakUsTUFBTSxFQUFFLEdBQUcsTUFBTSx3REFBWSxDQUFDLGNBQWMsQ0FBQztRQUM3QyxNQUFNLFNBQVMsR0FB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LENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQ0gsQ0FDSixFQUNELDBEQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsaURBQVksQ0FBQyxLQUFLLENBQUM7WUFFbkIsT0FBTyx1Q0FBSztRQUNkLENBQUMsQ0FBQyxDQUNIO0lBQ0wsQ0FBQyxDQUFDLEVBQ0YseURBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUM5QjtTQUNBLFNBQVMsRUFBRTtJQUVkLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRTtRQUNuQixNQUFNLENBQUMsUUFBUSxFQUFFO0lBQ25CLENBQUM7SUFFRCxPQUFPO1FBQ0wsR0FBRztRQUNILE9BQU87S0FDUjtBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvZW5oYW5jZXJzL3Jlc291cmNlcy9yZXNvdXJjZXNNYW5hZ2VyLnRzP2JlMzgiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdG9kbyB3ZWIgd29ya2VyXG4gKi9cbmltcG9ydCB7IEVNUFRZLCBmb3JrSm9pbiwgZnJvbSwgbWVyZ2UsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIG1lcmdlTWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCJcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi4vLi4vY29udGV4dFwiXG5pbXBvcnQgeyBSZXBvcnQgfSBmcm9tIFwiLi4vLi4vcmVwb3J0XCJcbmltcG9ydCB7IE1hbmlmZXN0IH0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB7IG9wZW5EYXRhYmFzZSB9IGZyb20gXCIuL2luZGV4ZWREQlwiXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVSZXNvdXJjZXNNYW5hZ2VyID0gKGNvbnRleHQ6IENvbnRleHQpID0+IHtcbiAgbGV0IHVuaXF1ZUlEID0gRGF0ZS5ub3coKS50b1N0cmluZygpXG4gIGNvbnN0IGNhY2hlJCA9IG5ldyBTdWJqZWN0PHsgaWQ6IG51bWJlciB8IFBpY2s8TWFuaWZlc3RbYHNwaW5lSXRlbXNgXVtudW1iZXJdLCBgaWRgPiwgZGF0YTogUmVzcG9uc2UgfT4oKVxuXG4gIGNvbnN0IHJldHJpZXZlSXRlbSA9IChpdGVtSW5kZXhPcklkOiBudW1iZXIgfCBQaWNrPE1hbmlmZXN0W2BzcGluZUl0ZW1zYF1bbnVtYmVyXSwgYGlkYD4pID0+IHtcbiAgICBpZiAodHlwZW9mIGl0ZW1JbmRleE9ySWQgPT09IGBzdHJpbmdgIHx8IHR5cGVvZiBpdGVtSW5kZXhPcklkID09PSBgb2JqZWN0YCkge1xuICAgICAgY29uc3QgaWQgPSB0eXBlb2YgaXRlbUluZGV4T3JJZCA9PT0gYG9iamVjdGAgPyBpdGVtSW5kZXhPcklkLmlkIDogdW5kZWZpbmVkXG4gICAgICByZXR1cm4gY29udGV4dC5nZXRNYW5pZmVzdCgpPy5zcGluZUl0ZW1zLmZpbmQoKGVudHJ5KSA9PiBlbnRyeS5pZCA9PT0gaWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjb250ZXh0LmdldE1hbmlmZXN0KCk/LnNwaW5lSXRlbXNbaXRlbUluZGV4T3JJZF1cbiAgICB9XG4gIH1cblxuICBjb25zdCBnZXQgPSBhc3luYyAoaXRlbUluZGV4T3JJZDogbnVtYmVyIHwgUGljazxNYW5pZmVzdFtgc3BpbmVJdGVtc2BdW251bWJlcl0sIGBpZGA+LCBmZXRjaFJlc291cmNlPzogKGl0ZW06IE1hbmlmZXN0W2BzcGluZUl0ZW1zYF1bbnVtYmVyXSkgPT4gUHJvbWlzZTxSZXNwb25zZT4pID0+IHtcbiAgICBjb25zdCBpdGVtID0gcmV0cmlldmVJdGVtKGl0ZW1JbmRleE9ySWQpXG5cbiAgICBpZiAoIWl0ZW0pIHJldHVybiBuZXcgUmVzcG9uc2UoYEl0ZW0gbm90IGZvdW5kYCwgeyBzdGF0dXM6IDQwNCB9KVxuXG4gICAgY29uc3QgZGIgPSBhd2FpdCBvcGVuRGF0YWJhc2UoYHByb3NlLXJlYWRlcmApXG4gICAgY29uc3QgY2FjaGVEYXRhID0gYXdhaXQgZGIuZ2V0KGAke3VuaXF1ZUlEfV8ke2l0ZW0uaWR9YClcblxuICAgIGlmIChjYWNoZURhdGEpIHtcbiAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoY2FjaGVEYXRhLCB7IHN0YXR1czogMjAwIH0pXG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IChmZXRjaFJlc291cmNlICYmIGF3YWl0IGZldGNoUmVzb3VyY2UoaXRlbSkpIHx8IGF3YWl0IGZldGNoKGl0ZW0uaHJlZilcblxuICAgIGNhY2hlKGl0ZW0sIGRhdGEuY2xvbmUoKSlcblxuICAgIHJldHVybiBkYXRhXG4gIH1cblxuICBjb25zdCBjYWNoZSA9IChpdGVtSW5kZXhPcklkOiBudW1iZXIgfCBQaWNrPE1hbmlmZXN0W2BzcGluZUl0ZW1zYF1bbnVtYmVyXSwgYGlkYD4sIGRhdGE6IFJlc3BvbnNlKSA9PiB7XG4gICAgY2FjaGUkLm5leHQoeyBpZDogaXRlbUluZGV4T3JJZCwgZGF0YSB9KVxuICB9XG5cbiAgY2FjaGUkLmFzT2JzZXJ2YWJsZSgpXG4gICAgLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoeyBpZCwgZGF0YSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSByZXRyaWV2ZUl0ZW0oaWQpXG5cbiAgICAgICAgaWYgKCFpdGVtKSByZXR1cm4gRU1QVFlcblxuICAgICAgICByZXR1cm4gZnJvbShmb3JrSm9pbihbb3BlbkRhdGFiYXNlKGBwcm9zZS1yZWFkZXJgKSwgZnJvbShkYXRhLmJsb2IoKSldKSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoW2RiLCBibG9iXSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gZnJvbShkYi5wdXQoYCR7dW5pcXVlSUR9XyR7aXRlbS5pZH1gLCBibG9iKSlcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgICAgIFJlcG9ydC5lcnJvcihlcnJvcilcblxuICAgICAgICAgICAgICByZXR1cm4gRU1QVFlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwoY29udGV4dC4kLmRlc3Ryb3kkKVxuICAgIClcbiAgICAuc3Vic2NyaWJlKClcblxuICBjb25zdCBvbkxvYWQkID0gY29udGV4dC4kLmxvYWQkXG4gICAgLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB1bmlxdWVJRCA9IERhdGUubm93KCkudG9TdHJpbmcoKVxuICAgICAgfSlcbiAgICApXG5cbiAgLyoqXG4gICAqIENsZWFudXAgb2xkIGNhY2hlIG9uIHN0YXJ0dXAgaWYgbmVlZGVkXG4gICAqIEB0b2RvXG4gICAqIGRvIG9uIGZpcnN0IHRpbWUgYW5kIG9ubHkgdGhlbiBvbiBzdWJzZXF1ZW50IGxvYWRcbiAgICovXG4gIG1lcmdlKG9uTG9hZCQpXG4gICAgLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICBSZXBvcnQubG9nKGBDbGVhbnVwIHVwIG9sZCBjYWNoZS4uLmApXG5cbiAgICAgICAgcmV0dXJuIGZyb20ob3BlbkRhdGFiYXNlKGBwcm9zZS1yZWFkZXJgKSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcChkYiA9PlxuICAgICAgICAgICAgICBmcm9tKGRiLmtleXMoKSlcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcChrZXlzID0+IGtleXMuZmlsdGVyKGtleSA9PiAha2V5LnRvU3RyaW5nKCkuc3RhcnRzV2l0aCh1bmlxdWVJRCkpKSxcbiAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoa2V5c1RvUmVtb3ZlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb21pc2VzID0ga2V5c1RvUmVtb3ZlLm1hcChrZXkgPT4gZGIucmVtb3ZlKGtleSkpXG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyb20oUHJvbWlzZS5hbGwocHJvbWlzZXMpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgICAgIFJlcG9ydC5lcnJvcihlcnJvcilcblxuICAgICAgICAgICAgICByZXR1cm4gRU1QVFlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwoY29udGV4dC4kLmRlc3Ryb3kkKVxuICAgIClcbiAgICAuc3Vic2NyaWJlKClcblxuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgIGNhY2hlJC5jb21wbGV0ZSgpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGdldCxcbiAgICBkZXN0cm95XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/enhancers/resources/resourcesManager.ts\n");
|
|
200
|
+
|
|
201
|
+
/***/ }),
|
|
202
|
+
|
|
203
|
+
/***/ "./src/enhancers/theme.ts":
|
|
204
|
+
/*!********************************!*\
|
|
205
|
+
!*** ./src/enhancers/theme.ts ***!
|
|
206
|
+
\********************************/
|
|
207
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
208
|
+
|
|
209
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"themeEnhancer\": () => (/* binding */ themeEnhancer)\n/* harmony export */ });\nconst defaultThemes = [\n {\n name: `bright`,\n backgroundColor: `white`\n },\n {\n name: `sepia`,\n backgroundColor: `#eaddc7`,\n foregroundColor: `black`\n },\n {\n name: `night`,\n backgroundColor: `#191717`,\n foregroundColor: `#f1ebeb`\n }\n];\nconst themeEnhancer = (next) => (options) => {\n const { theme } = options;\n const reader = next(options);\n let currentTheme = theme;\n const getStyle = () => {\n const foundTheme = defaultThemes.find(entry => entry.name === currentTheme);\n return `\n body {\n ${foundTheme !== undefined\n ? `background-color: ${foundTheme.backgroundColor} !important;`\n : ``}\n }\n ${(foundTheme === null || foundTheme === void 0 ? void 0 : foundTheme.foregroundColor)\n ? `\n body * {\n ${``}\n color: ${foundTheme.foregroundColor};\n }\n `\n : ``}\n `;\n };\n const applyChangeToSpineItemElement = ({ container, loadingElement }) => {\n const foundTheme = defaultThemes.find(entry => entry.name === currentTheme);\n if (foundTheme) {\n container.style.setProperty(`background-color`, foundTheme.backgroundColor);\n loadingElement.style.setProperty(`background-color`, foundTheme.backgroundColor);\n }\n return () => { };\n };\n const applyChangeToSpineItem = () => {\n reader.manipulateSpineItems(({ removeStyle, addStyle, container, loadingElement }) => {\n removeStyle(`prose-reader-theme`);\n addStyle(`prose-reader-theme`, getStyle());\n applyChangeToSpineItemElement({ container, loadingElement });\n return false;\n });\n };\n reader.registerHook(`item.onLoad`, ({ removeStyle, addStyle }) => {\n removeStyle(`prose-reader-theme`);\n addStyle(`prose-reader-theme`, getStyle());\n });\n reader.registerHook(`item.onCreated`, applyChangeToSpineItemElement);\n return Object.assign(Object.assign({}, reader), { setTheme: (theme) => {\n currentTheme = theme;\n applyChangeToSpineItem();\n }, getTheme: () => currentTheme });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QzdCO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0Bwcm9zZS1yZWFkZXIvY29yZS8uL3NyYy9lbmhhbmNlcnMvdGhlbWUudHM/ZjViOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbmhhbmNlciB9IGZyb20gXCIuL3R5cGVzXCJcblxuY29uc3QgZGVmYXVsdFRoZW1lcyA9IFtcbiAge1xuICAgIG5hbWU6IGBicmlnaHRgIGFzIGNvbnN0LFxuICAgIGJhY2tncm91bmRDb2xvcjogYHdoaXRlYFxuICB9LFxuICB7XG4gICAgbmFtZTogYHNlcGlhYCBhcyBjb25zdCxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGAjZWFkZGM3YCxcbiAgICBmb3JlZ3JvdW5kQ29sb3I6IGBibGFja2BcbiAgfSxcbiAge1xuICAgIG5hbWU6IGBuaWdodGAgYXMgY29uc3QsXG4gICAgYmFja2dyb3VuZENvbG9yOiBgIzE5MTcxN2AsXG4gICAgZm9yZWdyb3VuZENvbG9yOiBgI2YxZWJlYmBcbiAgfVxuXVxuXG5leHBvcnQgdHlwZSBUaGVtZSA9ICh0eXBlb2YgZGVmYXVsdFRoZW1lc1tudW1iZXJdKVtgbmFtZWBdXG5cbmV4cG9ydCBjb25zdCB0aGVtZUVuaGFuY2VyOiBFbmhhbmNlcjx7XG4gIHRoZW1lPzogVGhlbWUsXG59LCB7XG4gIHNldFRoZW1lOiAodGhlbWU6IFRoZW1lIHwgdW5kZWZpbmVkKSA9PiB2b2lkLFxuICBnZXRUaGVtZTogKCkgPT4gVGhlbWUgfCB1bmRlZmluZWQsXG59PiA9IChuZXh0KSA9PiAob3B0aW9ucykgPT4ge1xuICBjb25zdCB7IHRoZW1lIH0gPSBvcHRpb25zXG4gIGNvbnN0IHJlYWRlciA9IG5leHQob3B0aW9ucylcbiAgbGV0IGN1cnJlbnRUaGVtZSA9IHRoZW1lXG5cbiAgY29uc3QgZ2V0U3R5bGUgPSAoKSA9PiB7XG4gICAgY29uc3QgZm91bmRUaGVtZSA9IGRlZmF1bHRUaGVtZXMuZmluZChlbnRyeSA9PiBlbnRyeS5uYW1lID09PSBjdXJyZW50VGhlbWUpXG5cbiAgICByZXR1cm4gYFxuICAgICAgYm9keSB7XG4gICAgICAgICR7Zm91bmRUaGVtZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gYGJhY2tncm91bmQtY29sb3I6ICR7Zm91bmRUaGVtZS5iYWNrZ3JvdW5kQ29sb3J9ICFpbXBvcnRhbnQ7YFxuICAgICAgICA6IGBgfVxuICAgICAgfVxuICAgICAgJHtmb3VuZFRoZW1lPy5mb3JlZ3JvdW5kQ29sb3JcbiAgICAgICAgPyBgXG4gICAgICAgICAgYm9keSAqIHtcbiAgICAgICAgICAgICR7LypcbiAgICAgICAgICAgICAgSWRlYWxseSwgd2Ugd291bGQgbGlrZSB0byB1c2UgIWltcG9ydGFudCBidXQgaXQgY291bGQgYnJlYWsgcHVibGlzaGVyIHNwZWNpZmljXG4gICAgICAgICAgICAgIGNhc2VzXG4gICAgICAgICAgICAqL2BgfVxuICAgICAgICAgICAgY29sb3I6ICR7Zm91bmRUaGVtZS5mb3JlZ3JvdW5kQ29sb3J9O1xuICAgICAgICAgIH1cbiAgICAgICAgYFxuICAgICAgICA6IGBgfVxuICAgIGBcbiAgfVxuXG4gIGNvbnN0IGFwcGx5Q2hhbmdlVG9TcGluZUl0ZW1FbGVtZW50ID0gKHsgY29udGFpbmVyLCBsb2FkaW5nRWxlbWVudCB9OiB7IGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIGxvYWRpbmdFbGVtZW50OiBIVE1MRWxlbWVudCB9KSA9PiB7XG4gICAgY29uc3QgZm91bmRUaGVtZSA9IGRlZmF1bHRUaGVtZXMuZmluZChlbnRyeSA9PiBlbnRyeS5uYW1lID09PSBjdXJyZW50VGhlbWUpXG4gICAgaWYgKGZvdW5kVGhlbWUpIHtcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5zZXRQcm9wZXJ0eShgYmFja2dyb3VuZC1jb2xvcmAsIGZvdW5kVGhlbWUuYmFja2dyb3VuZENvbG9yKVxuICAgICAgbG9hZGluZ0VsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYGJhY2tncm91bmQtY29sb3JgLCBmb3VuZFRoZW1lLmJhY2tncm91bmRDb2xvcilcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge31cbiAgfVxuXG4gIGNvbnN0IGFwcGx5Q2hhbmdlVG9TcGluZUl0ZW0gPSAoKSA9PiB7XG4gICAgcmVhZGVyLm1hbmlwdWxhdGVTcGluZUl0ZW1zKCh7IHJlbW92ZVN0eWxlLCBhZGRTdHlsZSwgY29udGFpbmVyLCBsb2FkaW5nRWxlbWVudCB9KSA9PiB7XG4gICAgICByZW1vdmVTdHlsZShgcHJvc2UtcmVhZGVyLXRoZW1lYClcbiAgICAgIGFkZFN0eWxlKGBwcm9zZS1yZWFkZXItdGhlbWVgLCBnZXRTdHlsZSgpKVxuICAgICAgYXBwbHlDaGFuZ2VUb1NwaW5lSXRlbUVsZW1lbnQoeyBjb250YWluZXIsIGxvYWRpbmdFbGVtZW50IH0pXG5cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogTWFrZSBzdXJlIHRvIGFwcGx5IHRoZW1lIG9uIGl0ZW0gbG9hZFxuICAgKi9cbiAgcmVhZGVyLnJlZ2lzdGVySG9vayhgaXRlbS5vbkxvYWRgLCAoeyByZW1vdmVTdHlsZSwgYWRkU3R5bGUgfSkgPT4ge1xuICAgIHJlbW92ZVN0eWxlKGBwcm9zZS1yZWFkZXItdGhlbWVgKVxuICAgIGFkZFN0eWxlKGBwcm9zZS1yZWFkZXItdGhlbWVgLCBnZXRTdHlsZSgpKVxuICB9KVxuXG4gIC8qKlxuICAgKiBNYWtlIHN1cmUgdG8gYXBwbHkgdGhlbWUgb24gaXRlbSBjb250YWluZXIgKGZpeGVkIGxheW91dClcbiAgICogJiBsb2FkaW5nIGVsZW1lbnRcbiAgICovXG4gIHJlYWRlci5yZWdpc3Rlckhvb2soYGl0ZW0ub25DcmVhdGVkYCwgYXBwbHlDaGFuZ2VUb1NwaW5lSXRlbUVsZW1lbnQpXG5cbiAgcmV0dXJuIHtcbiAgICAuLi5yZWFkZXIsXG4gICAgc2V0VGhlbWU6ICh0aGVtZTogVGhlbWUgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgIGN1cnJlbnRUaGVtZSA9IHRoZW1lXG4gICAgICBhcHBseUNoYW5nZVRvU3BpbmVJdGVtKClcbiAgICB9LFxuICAgIGdldFRoZW1lOiAoKSA9PiBjdXJyZW50VGhlbWVcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/enhancers/theme.ts\n");
|
|
210
|
+
|
|
211
|
+
/***/ }),
|
|
212
|
+
|
|
213
|
+
/***/ "./src/enhancers/utils.ts":
|
|
214
|
+
/*!********************************!*\
|
|
215
|
+
!*** ./src/enhancers/utils.ts ***!
|
|
216
|
+
\********************************/
|
|
217
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
218
|
+
|
|
219
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"utilsEnhancer\": () => (/* binding */ utilsEnhancer)\n/* harmony export */ });\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/dom */ \"./src/utils/dom.ts\");\n\nconst utilsEnhancer = (next) => (options) => {\n const reader = next(options);\n const isOrIsWithinValidLink = (target) => {\n if ((0,_utils_dom__WEBPACK_IMPORTED_MODULE_0__.isHtmlElement)(target)) {\n const link = target.nodeName === `a` ? target : target.closest(`a`);\n if (link === null || link === void 0 ? void 0 : link.getAttribute(`href`)) {\n return true;\n }\n }\n return false;\n };\n return Object.assign(Object.assign({}, reader), { utils: {\n isOrIsWithinValidLink\n } });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZW5oYW5jZXJzL3V0aWxzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQzRDO0FBRXJDLE1BQU0sYUFBYSxHQUlyQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtJQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBRTVCLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxNQUF1QixFQUFFLEVBQUU7UUFDeEQsSUFBSSx5REFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ25FLElBQUksSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDOUIsT0FBTyxJQUFJO2FBQ1o7U0FDRjtRQUVELE9BQU8sS0FBSztJQUNkLENBQUM7SUFFRCx1Q0FDSyxNQUFNLEtBQ1QsS0FBSyxFQUFFO1lBQ0wscUJBQXFCO1NBQ3RCLElBQ0Y7QUFDSCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL2VuaGFuY2Vycy91dGlscy50cz82MGViIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVuaGFuY2VyIH0gZnJvbSBcIi4vdHlwZXNcIlxuaW1wb3J0IHsgaXNIdG1sRWxlbWVudCB9IGZyb20gXCIuLi91dGlscy9kb21cIlxuXG5leHBvcnQgY29uc3QgdXRpbHNFbmhhbmNlcjogRW5oYW5jZXI8e30sIHtcbiAgdXRpbHM6IHtcbiAgICBpc09ySXNXaXRoaW5WYWxpZExpbms6ICh0YXJnZXQ6IEV2ZW50W2B0YXJnZXRgXSkgPT4gYm9vbGVhblxuICB9XG59PiA9IChuZXh0KSA9PiAob3B0aW9ucykgPT4ge1xuICBjb25zdCByZWFkZXIgPSBuZXh0KG9wdGlvbnMpXG5cbiAgY29uc3QgaXNPcklzV2l0aGluVmFsaWRMaW5rID0gKHRhcmdldDogRXZlbnRbYHRhcmdldGBdKSA9PiB7XG4gICAgaWYgKGlzSHRtbEVsZW1lbnQodGFyZ2V0KSkge1xuICAgICAgY29uc3QgbGluayA9IHRhcmdldC5ub2RlTmFtZSA9PT0gYGFgID8gdGFyZ2V0IDogdGFyZ2V0LmNsb3Nlc3QoYGFgKVxuICAgICAgaWYgKGxpbms/LmdldEF0dHJpYnV0ZShgaHJlZmApKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnJlYWRlcixcbiAgICB1dGlsczoge1xuICAgICAgaXNPcklzV2l0aGluVmFsaWRMaW5rXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/enhancers/utils.ts\n");
|
|
220
|
+
|
|
221
|
+
/***/ }),
|
|
222
|
+
|
|
223
|
+
/***/ "./src/enhancers/webkit.ts":
|
|
224
|
+
/*!*********************************!*\
|
|
225
|
+
!*** ./src/enhancers/webkit.ts ***!
|
|
226
|
+
\*********************************/
|
|
227
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
228
|
+
|
|
229
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"webkitEnhancer\": () => (/* binding */ webkitEnhancer)\n/* harmony export */ });\nconst IS_SAFARI = navigator.userAgent.indexOf(``) > -1 && navigator.userAgent.indexOf(`Chrome`) <= -1;\nconst webkitEnhancer = (next) => (options) => {\n const transformFlickerFixHooks = [\n {\n name: `spine.onBeforeContainerCreated`,\n fn: element => {\n element.style.cssText = `\n ${element.style.cssText}\n -webkit-transform-style: preserve-3d;\n `;\n return element;\n }\n },\n {\n name: `item.onBeforeContainerCreated`,\n fn: element => {\n element.style.cssText = `\n ${element.style.cssText}\n -webkit-transform-style: preserve-3d;\n -webkit-backface-visibility: hidden;\n `;\n return element;\n }\n }\n ];\n const reader = next(Object.assign(Object.assign({}, options), IS_SAFARI && {\n hooks: [...options.hooks || [], ...transformFlickerFixHooks]\n }));\n return reader;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZW5oYW5jZXJzL3dlYmtpdC50cy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBTUEsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBSzlGLE1BQU0sY0FBYyxHQUV0QixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtJQU16QixNQUFNLHdCQUF3QixHQUE0QjtRQUN4RDtZQUNFLElBQUksRUFBRSxnQ0FBZ0M7WUFDdEMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHO1lBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTzs7U0FFeEI7Z0JBRUQsT0FBTyxPQUFPO1lBQ2hCLENBQUM7U0FDRjtRQUNEO1lBQ0UsSUFBSSxFQUFFLCtCQUErQjtZQUNyQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUc7WUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPOzs7U0FHeEI7Z0JBRUQsT0FBTyxPQUFPO1lBQ2hCLENBQUM7U0FDRjtLQUNGO0lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxpQ0FDZCxPQUFPLEdBQ1AsU0FBUyxJQUFJO1FBQ2QsS0FBSyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLHdCQUF3QixDQUFDO0tBQzdELEVBQ0Q7SUFFRixPQUFPLE1BQU07QUFDZixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL2VuaGFuY2Vycy93ZWJraXQudHM/YmQ4OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbmhhbmNlciB9IGZyb20gXCIuL3R5cGVzXCJcblxuLyoqXG4gKiBJZGVhbGx5IHdlIHdhbnQgdG8gdGFyZ2V0IGFsbCB3ZWJraXQgYnJvd3NlciBidXQgYWZhaWsgdGhlcmUgYXJlIG5vIHJlbGlhYmxlIHdheSB0byBkbyBpdC5cbiAqIFdlIHdpbGwgZml4IGF0IGxlYXN0IHNhZmFyaVxuICovXG5jb25zdCBJU19TQUZBUkkgPSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoYGApID4gLTEgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKGBDaHJvbWVgKSA8PSAtMVxuXG4vKipcbiAqIEFsbCBmaXhlcyByZWxhdGl2ZSB0byB3ZWJraXRcbiAqL1xuZXhwb3J0IGNvbnN0IHdlYmtpdEVuaGFuY2VyOiBFbmhhbmNlcjx7fSwge1xuXG59PiA9IChuZXh0KSA9PiAob3B0aW9ucykgPT4ge1xuICAvKipcbiAgICogVGhlc2UgaG9va3MgYXJlIHVzZWQgdG8gZml4IHRoZSBmbGlja2VyaW5nIG9uIHNhZmFyaSB0aGF0IG9jY3VycyB3aGVuIHVzaW5nIHRyYW5zZm9ybVxuICAgKiBhbmQgbW9yZSBnZW5lcmFsbHkgR1BVIHRyYW5zZm9ybWF0aW9uLiBJIGFtIG5vdCBzdXJlIHdoYXQgaXMgdGhlIGltcGFjdCBvbiBwZXJmb3JtYW5jZSBzb1xuICAgKiB3ZSBvbmx5IHVzZSB0aGVtIG9uIG5lZWRlZCBlbmdpbmUgKHdlYmtpdCkuXG4gICAqL1xuICBjb25zdCB0cmFuc2Zvcm1GbGlja2VyRml4SG9va3M6IHR5cGVvZiBvcHRpb25zW2Bob29rc2BdID0gW1xuICAgIHtcbiAgICAgIG5hbWU6IGBzcGluZS5vbkJlZm9yZUNvbnRhaW5lckNyZWF0ZWRgLFxuICAgICAgZm46IGVsZW1lbnQgPT4ge1xuICAgICAgICBlbGVtZW50LnN0eWxlLmNzc1RleHQgPSBgXG4gICAgICAgICAgJHtlbGVtZW50LnN0eWxlLmNzc1RleHR9XG4gICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgICBgXG5cbiAgICAgICAgcmV0dXJuIGVsZW1lbnRcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IGBpdGVtLm9uQmVmb3JlQ29udGFpbmVyQ3JlYXRlZGAsXG4gICAgICBmbjogZWxlbWVudCA9PiB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IGBcbiAgICAgICAgICAke2VsZW1lbnQuc3R5bGUuY3NzVGV4dH1cbiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgICAgICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIGBcblxuICAgICAgICByZXR1cm4gZWxlbWVudFxuICAgICAgfVxuICAgIH1cbiAgXVxuXG4gIGNvbnN0IHJlYWRlciA9IG5leHQoe1xuICAgIC4uLm9wdGlvbnMsXG4gICAgLi4uSVNfU0FGQVJJICYmIHtcbiAgICAgIGhvb2tzOiBbLi4ub3B0aW9ucy5ob29rcyB8fCBbXSwgLi4udHJhbnNmb3JtRmxpY2tlckZpeEhvb2tzXVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gcmVhZGVyXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/enhancers/webkit.ts\n");
|
|
230
|
+
|
|
231
|
+
/***/ }),
|
|
232
|
+
|
|
233
|
+
/***/ "./src/enhancers/zoom.ts":
|
|
234
|
+
/*!*******************************!*\
|
|
235
|
+
!*** ./src/enhancers/zoom.ts ***!
|
|
236
|
+
\*******************************/
|
|
237
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
238
|
+
|
|
239
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"zoomEnhancer\": () => (/* binding */ zoomEnhancer)\n/* harmony export */ });\nconst SHOULD_NOT_LAYOUT = false;\nconst zoomEnhancer = (next) => (options) => {\n const reader = next(options);\n let imageMagnifierContainer;\n let imgLastPosition = { x: 0, y: 0 };\n let movingLastDelta = { x: 0, y: 0 };\n let lastScale = 1;\n const enter = (imgElement) => {\n reader.manipulateContainer((container) => {\n imageMagnifierContainer = container.ownerDocument.createElement(`div`);\n imageMagnifierContainer.style.cssText = `\n top: 0;\n left: 0;\n display: block;\n position: absolute;\n z-index: 1;\n background: black;\n width: 100%;\n height: 100%;\n `;\n const clonedImgElement = imgElement.cloneNode();\n clonedImgElement.src = imgElement.src;\n clonedImgElement.style.setProperty(`height`, `100%`);\n clonedImgElement.style.setProperty(`width`, `100%`);\n clonedImgElement.style.setProperty(`object-fit`, `contain`);\n clonedImgElement.style.setProperty(`pointer-events`, `none`);\n imageMagnifierContainer.appendChild(clonedImgElement);\n container.appendChild(imageMagnifierContainer);\n imgLastPosition = { x: 0, y: 0 };\n lastScale = 1;\n return SHOULD_NOT_LAYOUT;\n });\n };\n const exit = () => {\n reader.manipulateContainer(() => {\n imageMagnifierContainer === null || imageMagnifierContainer === void 0 ? void 0 : imageMagnifierContainer.remove();\n imageMagnifierContainer = undefined;\n return SHOULD_NOT_LAYOUT;\n });\n };\n const move = (delta, { isFirst, isLast }) => {\n const imgElement = imageMagnifierContainer === null || imageMagnifierContainer === void 0 ? void 0 : imageMagnifierContainer.querySelector(`img`);\n if (isFirst) {\n movingLastDelta = { x: 0, y: 0 };\n }\n if (delta) {\n const correctedX = delta.x - ((movingLastDelta === null || movingLastDelta === void 0 ? void 0 : movingLastDelta.x) || 0);\n const correctedY = delta.y - ((movingLastDelta === null || movingLastDelta === void 0 ? void 0 : movingLastDelta.y) || 0);\n imgLastPosition = { x: imgLastPosition.x + correctedX, y: imgLastPosition.y + correctedY };\n imgElement === null || imgElement === void 0 ? void 0 : imgElement.style.setProperty(`transform`, `translate3d(${imgLastPosition.x}px, ${imgLastPosition.y}px, 0px) scale3d(${lastScale}, ${lastScale}, 1)`);\n movingLastDelta = delta;\n }\n if (isLast) {\n movingLastDelta = undefined;\n }\n };\n const scale = (scale) => {\n const imgElement = imageMagnifierContainer === null || imageMagnifierContainer === void 0 ? void 0 : imageMagnifierContainer.querySelector(`img`);\n const roundedScale = Math.ceil(scale * 100) / 100;\n const newScale = Math.max(roundedScale, 1);\n if (roundedScale < 1) {\n imgLastPosition = { x: 0, y: 0 };\n }\n imgElement === null || imgElement === void 0 ? void 0 : imgElement.style.setProperty(`transform`, `translate3d(${imgLastPosition.x}px, ${imgLastPosition.y}px, 0px) scale3d(${newScale}, ${newScale}, 1)`);\n lastScale = newScale;\n };\n const isEnabled = () => !!imageMagnifierContainer;\n const destroy = () => {\n imageMagnifierContainer === null || imageMagnifierContainer === void 0 ? void 0 : imageMagnifierContainer.remove();\n imageMagnifierContainer = undefined;\n reader.destroy();\n };\n return Object.assign(Object.assign({}, reader), { destroy, zoom: {\n enter,\n exit,\n move,\n isEnabled,\n scale\n } });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QXZCLHVCQUF1QixDQUFFLE1BQU0sRUFBRTtRQUNqQyx1QkFBdUIsR0FBRyxTQUFTO1FBQ25DLE1BQU0sQ0FBQyxPQUFPLEVBQUU7SUFDbEIsQ0FBQztJQUVELHVDQUNLLE1BQU0sS0FDVCxPQUFPLEVBQ1AsSUFBSSxFQUFFO1lBQ0osS0FBSztZQUNMLElBQUk7WUFDSixJQUFJO1lBQ0osU0FBUztZQUNULEtBQUs7U0FDTixJQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0Bwcm9zZS1yZWFkZXIvY29yZS8uL3NyYy9lbmhhbmNlcnMvem9vbS50cz84MGQ0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVuaGFuY2VyIH0gZnJvbSBcIi4vdHlwZXNcIlxuXG5jb25zdCBTSE9VTERfTk9UX0xBWU9VVCA9IGZhbHNlXG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IHpvb21FbmhhbmNlcjogRW5oYW5jZXI8e30sIHtcbiAgem9vbToge1xuICAgIGVudGVyOiAoaW1nRWxlbWVudDogSFRNTEltYWdlRWxlbWVudCkgPT4gdm9pZFxuICAgIGV4aXQ6ICgpID0+IHZvaWQsXG4gICAgbW92ZTogKHBvc2l0aW9uOiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0gfCB1bmRlZmluZWQsIGRldGFpbHM6IHsgaXNGaXJzdDogYm9vbGVhbiwgaXNMYXN0OiBib29sZWFuIH0pID0+IHZvaWQsXG4gICAgaXNFbmFibGVkOiAoKSA9PiBib29sZWFuLFxuICAgIHNjYWxlOiAoc2NhbGU6IG51bWJlcikgPT4gdm9pZCxcbiAgfVxufT4gPSAobmV4dCkgPT4gKG9wdGlvbnMpID0+IHtcbiAgY29uc3QgcmVhZGVyID0gbmV4dChvcHRpb25zKVxuICBsZXQgaW1hZ2VNYWduaWZpZXJDb250YWluZXI6IEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkXG4gIGxldCBpbWdMYXN0UG9zaXRpb246IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfSA9IHsgeDogMCwgeTogMCB9XG4gIGxldCBtb3ZpbmdMYXN0RGVsdGE6IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfSB8IHVuZGVmaW5lZCA9IHsgeDogMCwgeTogMCB9XG4gIGxldCBsYXN0U2NhbGUgPSAxXG5cbiAgY29uc3QgZW50ZXIgPSAoaW1nRWxlbWVudDogSFRNTEltYWdlRWxlbWVudCkgPT4ge1xuICAgIHJlYWRlci5tYW5pcHVsYXRlQ29udGFpbmVyKChjb250YWluZXIpID0+IHtcbiAgICAgIGltYWdlTWFnbmlmaWVyQ29udGFpbmVyID0gY29udGFpbmVyLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChgZGl2YClcbiAgICAgIGltYWdlTWFnbmlmaWVyQ29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSBgXG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgYmFja2dyb3VuZDogYmxhY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBgXG4gICAgICBjb25zdCBjbG9uZWRJbWdFbGVtZW50ID0gaW1nRWxlbWVudC5jbG9uZU5vZGUoKSBhcyBIVE1MSW1hZ2VFbGVtZW50XG4gICAgICBjbG9uZWRJbWdFbGVtZW50LnNyYyA9IGltZ0VsZW1lbnQuc3JjXG4gICAgICBjbG9uZWRJbWdFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGBoZWlnaHRgLCBgMTAwJWApXG4gICAgICBjbG9uZWRJbWdFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGB3aWR0aGAsIGAxMDAlYClcbiAgICAgIGNsb25lZEltZ0VsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYG9iamVjdC1maXRgLCBgY29udGFpbmApXG4gICAgICAvLyBjb252ZW5pZW50IHNvIHRoYXQgdXNlciBkb2VzIG5vdCB0cmlnZ2VyIHpvb20gYWdhaW4gaWYgZm9yIGV4YW1wbGUgaGUgaXMgbGlzdGVuaW5nIHRvIHByZXNzXG4gICAgICAvLyBvbiBpbWcgZWxlbWVudC4gQW55IHByZXNzIGV2ZW50IG9uIHRoZSB6b29tIGNvbnRhaW5lciB3aWxsIG5vdCBoYXZlIHRoZSBpbWcgYXMgdGFyZ2V0LlxuICAgICAgY2xvbmVkSW1nRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShgcG9pbnRlci1ldmVudHNgLCBgbm9uZWApXG5cbiAgICAgIGltYWdlTWFnbmlmaWVyQ29udGFpbmVyLmFwcGVuZENoaWxkKGNsb25lZEltZ0VsZW1lbnQpXG4gICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaW1hZ2VNYWduaWZpZXJDb250YWluZXIpXG5cbiAgICAgIGltZ0xhc3RQb3NpdGlvbiA9IHsgeDogMCwgeTogMCB9XG4gICAgICBsYXN0U2NhbGUgPSAxXG5cbiAgICAgIHJldHVybiBTSE9VTERfTk9UX0xBWU9VVFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBleGl0ID0gKCkgPT4ge1xuICAgIHJlYWRlci5tYW5pcHVsYXRlQ29udGFpbmVyKCgpID0+IHtcbiAgICAgIGltYWdlTWFnbmlmaWVyQ29udGFpbmVyPy5yZW1vdmUoKVxuICAgICAgaW1hZ2VNYWduaWZpZXJDb250YWluZXIgPSB1bmRlZmluZWRcblxuICAgICAgcmV0dXJuIFNIT1VMRF9OT1RfTEFZT1VUXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IG1vdmUgPSAoZGVsdGE6IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfSB8IHVuZGVmaW5lZCwgeyBpc0ZpcnN0LCBpc0xhc3QgfTogeyBpc0ZpcnN0OiBib29sZWFuLCBpc0xhc3Q6IGJvb2xlYW4gfSkgPT4ge1xuICAgIGNvbnN0IGltZ0VsZW1lbnQgPSBpbWFnZU1hZ25pZmllckNvbnRhaW5lcj8ucXVlcnlTZWxlY3RvcihgaW1nYClcblxuICAgIGlmIChpc0ZpcnN0KSB7XG4gICAgICBtb3ZpbmdMYXN0RGVsdGEgPSB7IHg6IDAsIHk6IDAgfVxuICAgIH1cblxuICAgIGlmIChkZWx0YSkge1xuICAgICAgY29uc3QgY29ycmVjdGVkWCA9IGRlbHRhLnggLSAobW92aW5nTGFzdERlbHRhPy54IHx8IDApXG4gICAgICBjb25zdCBjb3JyZWN0ZWRZID0gZGVsdGEueSAtIChtb3ZpbmdMYXN0RGVsdGE/LnkgfHwgMClcblxuICAgICAgaW1nTGFzdFBvc2l0aW9uID0geyB4OiBpbWdMYXN0UG9zaXRpb24ueCArIGNvcnJlY3RlZFgsIHk6IGltZ0xhc3RQb3NpdGlvbi55ICsgY29ycmVjdGVkWSB9XG5cbiAgICAgIGltZ0VsZW1lbnQ/LnN0eWxlLnNldFByb3BlcnR5KGB0cmFuc2Zvcm1gLCBgdHJhbnNsYXRlM2QoJHtpbWdMYXN0UG9zaXRpb24ueH1weCwgJHtpbWdMYXN0UG9zaXRpb24ueX1weCwgMHB4KSBzY2FsZTNkKCR7bGFzdFNjYWxlfSwgJHtsYXN0U2NhbGV9LCAxKWApXG5cbiAgICAgIG1vdmluZ0xhc3REZWx0YSA9IGRlbHRhXG4gICAgfVxuXG4gICAgaWYgKGlzTGFzdCkge1xuICAgICAgbW92aW5nTGFzdERlbHRhID0gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NhbGUgPSAoc2NhbGU6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGltZ0VsZW1lbnQgPSBpbWFnZU1hZ25pZmllckNvbnRhaW5lcj8ucXVlcnlTZWxlY3RvcihgaW1nYClcbiAgICBjb25zdCByb3VuZGVkU2NhbGUgPSBNYXRoLmNlaWwoc2NhbGUgKiAxMDApIC8gMTAwXG4gICAgY29uc3QgbmV3U2NhbGUgPSBNYXRoLm1heChyb3VuZGVkU2NhbGUsIDEpXG5cbiAgICAvLyBpZiB1c2VyIHpvb20gb3V0IHRoYXQgbXVjaCwgd2UgcmVzZXQgaW1nIHBvc2l0aW9uXG4gICAgaWYgKHJvdW5kZWRTY2FsZSA8IDEpIHtcbiAgICAgIGltZ0xhc3RQb3NpdGlvbiA9IHsgeDogMCwgeTogMCB9XG4gICAgfVxuXG4gICAgaW1nRWxlbWVudD8uc3R5bGUuc2V0UHJvcGVydHkoYHRyYW5zZm9ybWAsIGB0cmFuc2xhdGUzZCgke2ltZ0xhc3RQb3NpdGlvbi54fXB4LCAke2ltZ0xhc3RQb3NpdGlvbi55fXB4LCAwcHgpIHNjYWxlM2QoJHtuZXdTY2FsZX0sICR7bmV3U2NhbGV9LCAxKWApXG4gICAgbGFzdFNjYWxlID0gbmV3U2NhbGVcbiAgfVxuXG4gIGNvbnN0IGlzRW5hYmxlZCA9ICgpID0+ICEhaW1hZ2VNYWduaWZpZXJDb250YWluZXJcblxuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgIGltYWdlTWFnbmlmaWVyQ29udGFpbmVyPy5yZW1vdmUoKVxuICAgIGltYWdlTWFnbmlmaWVyQ29udGFpbmVyID0gdW5kZWZpbmVkXG4gICAgcmVhZGVyLmRlc3Ryb3koKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5yZWFkZXIsXG4gICAgZGVzdHJveSxcbiAgICB6b29tOiB7XG4gICAgICBlbnRlcixcbiAgICAgIGV4aXQsXG4gICAgICBtb3ZlLFxuICAgICAgaXNFbmFibGVkLFxuICAgICAgc2NhbGVcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/enhancers/zoom.ts\n");
|
|
240
|
+
|
|
241
|
+
/***/ }),
|
|
242
|
+
|
|
243
|
+
/***/ "./src/frames.ts":
|
|
244
|
+
/*!***********************!*\
|
|
245
|
+
!*** ./src/frames.ts ***!
|
|
246
|
+
\***********************/
|
|
247
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
248
|
+
|
|
249
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createRemoveStyleHelper\": () => (/* binding */ createRemoveStyleHelper),\n/* harmony export */ \"createAddStyleHelper\": () => (/* binding */ createAddStyleHelper),\n/* harmony export */ \"getAttributeValueFromString\": () => (/* binding */ getAttributeValueFromString),\n/* harmony export */ \"getOriginalFrameEventFromDocumentEvent\": () => (/* binding */ getOriginalFrameEventFromDocumentEvent),\n/* harmony export */ \"attachOriginalFrameEventToDocumentEvent\": () => (/* binding */ attachOriginalFrameEventToDocumentEvent)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ \"./src/constants.ts\");\n\nconst createRemoveStyleHelper = (frameElement) => (id) => {\n if (frameElement &&\n frameElement.contentDocument &&\n frameElement.contentDocument.head) {\n const styleElement = frameElement.contentDocument.getElementById(id);\n if (styleElement) {\n styleElement.remove();\n }\n }\n};\nconst createAddStyleHelper = (frameElement) => (id, style, prepend = false) => {\n if (frameElement &&\n frameElement.contentDocument &&\n frameElement.contentDocument.head) {\n const userStyle = document.createElement(`style`);\n userStyle.id = id;\n userStyle.innerHTML = style;\n if (prepend) {\n frameElement.contentDocument.head.prepend(userStyle);\n }\n else {\n frameElement.contentDocument.head.appendChild(userStyle);\n }\n }\n};\nconst getAttributeValueFromString = (string, key) => {\n const regExp = new RegExp(key + `\\\\s*=\\\\s*([0-9.]+)`, `i`);\n const match = string.match(regExp) || [];\n const firstMatch = match[1] || `0`;\n return (match && parseFloat(firstMatch)) || 0;\n};\nconst getOriginalFrameEventFromDocumentEvent = (event) => {\n return event[_constants__WEBPACK_IMPORTED_MODULE_0__.__UNSAFE_REFERENCE_ORIGINAL_IFRAME_EVENT_KEY];\n};\nconst attachOriginalFrameEventToDocumentEvent = (event, frameEvent) => {\n Object.defineProperty(event, _constants__WEBPACK_IMPORTED_MODULE_0__.__UNSAFE_REFERENCE_ORIGINAL_IFRAME_EVENT_KEY, { value: frameEvent, enumerable: true });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZnJhbWVzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUEwRTtBQUVuRSxNQUFNLHVCQUF1QixHQUFHLENBQUMsWUFBMkMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFVLEVBQUUsRUFBRTtJQUNyRyxJQUNFLFlBQVk7UUFDWixZQUFZLENBQUMsZUFBZTtRQUM1QixZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksRUFDakM7UUFDQSxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDcEUsSUFBSSxZQUFZLEVBQUU7WUFDaEIsWUFBWSxDQUFDLE1BQU0sRUFBRTtTQUN0QjtLQUNGO0FBQ0gsQ0FBQztBQUVNLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxZQUEyQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQVUsRUFBRSxLQUFhLEVBQUUsT0FBTyxHQUFHLEtBQUssRUFBRSxFQUFFO0lBQ2xJLElBQ0UsWUFBWTtRQUNaLFlBQVksQ0FBQyxlQUFlO1FBQzVCLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUNqQztRQUNBLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxFQUFFLEdBQUcsRUFBRTtRQUNqQixTQUFTLENBQUMsU0FBUyxHQUFHLEtBQUs7UUFDM0IsSUFBSSxPQUFPLEVBQUU7WUFDWCxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1NBQ3JEO2FBQU07WUFDTCxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO1NBQ3pEO0tBQ0Y7QUFDSCxDQUFDO0FBRU0sTUFBTSwyQkFBMkIsR0FBRyxDQUFDLE1BQWMsRUFBRSxHQUFXLEVBQUUsRUFBRTtJQUN6RSxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEdBQUcsb0JBQW9CLEVBQUUsR0FBRyxDQUFDO0lBQzFELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtJQUN4QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRztJQUVsQyxPQUFPLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDL0MsQ0FBQztBQUVNLE1BQU0sc0NBQXNDLEdBQUcsQ0FBa0IsS0FBUSxFQUFpQixFQUFFO0lBRWpHLE9BQU8sS0FBSyxDQUFDLG9GQUE0QyxDQUFDO0FBQzVELENBQUM7QUFFTSxNQUFNLHVDQUF1QyxHQUFHLENBQWtCLEtBQVEsRUFBRSxVQUFhLEVBQUUsRUFBRTtJQUNsRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxvRkFBNEMsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3JILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvZnJhbWVzLnRzPzE0MzYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19VTlNBRkVfUkVGRVJFTkNFX09SSUdJTkFMX0lGUkFNRV9FVkVOVF9LRVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIlxuXG5leHBvcnQgY29uc3QgY3JlYXRlUmVtb3ZlU3R5bGVIZWxwZXIgPSAoZnJhbWVFbGVtZW50OiBIVE1MSUZyYW1lRWxlbWVudCB8IHVuZGVmaW5lZCkgPT4gKGlkOiBzdHJpbmcpID0+IHtcbiAgaWYgKFxuICAgIGZyYW1lRWxlbWVudCAmJlxuICAgIGZyYW1lRWxlbWVudC5jb250ZW50RG9jdW1lbnQgJiZcbiAgICBmcmFtZUVsZW1lbnQuY29udGVudERvY3VtZW50LmhlYWRcbiAgKSB7XG4gICAgY29uc3Qgc3R5bGVFbGVtZW50ID0gZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZClcbiAgICBpZiAoc3R5bGVFbGVtZW50KSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlKClcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFkZFN0eWxlSGVscGVyID0gKGZyYW1lRWxlbWVudDogSFRNTElGcmFtZUVsZW1lbnQgfCB1bmRlZmluZWQpID0+IChpZDogc3RyaW5nLCBzdHlsZTogc3RyaW5nLCBwcmVwZW5kID0gZmFsc2UpID0+IHtcbiAgaWYgKFxuICAgIGZyYW1lRWxlbWVudCAmJlxuICAgIGZyYW1lRWxlbWVudC5jb250ZW50RG9jdW1lbnQgJiZcbiAgICBmcmFtZUVsZW1lbnQuY29udGVudERvY3VtZW50LmhlYWRcbiAgKSB7XG4gICAgY29uc3QgdXNlclN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgc3R5bGVgKVxuICAgIHVzZXJTdHlsZS5pZCA9IGlkXG4gICAgdXNlclN0eWxlLmlubmVySFRNTCA9IHN0eWxlXG4gICAgaWYgKHByZXBlbmQpIHtcbiAgICAgIGZyYW1lRWxlbWVudC5jb250ZW50RG9jdW1lbnQuaGVhZC5wcmVwZW5kKHVzZXJTdHlsZSlcbiAgICB9IGVsc2Uge1xuICAgICAgZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHVzZXJTdHlsZSlcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldEF0dHJpYnV0ZVZhbHVlRnJvbVN0cmluZyA9IChzdHJpbmc6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChrZXkgKyBgXFxcXHMqPVxcXFxzKihbMC05Ll0rKWAsIGBpYClcbiAgY29uc3QgbWF0Y2ggPSBzdHJpbmcubWF0Y2gocmVnRXhwKSB8fCBbXVxuICBjb25zdCBmaXJzdE1hdGNoID0gbWF0Y2hbMV0gfHwgYDBgXG5cbiAgcmV0dXJuIChtYXRjaCAmJiBwYXJzZUZsb2F0KGZpcnN0TWF0Y2gpKSB8fCAwXG59XG5cbmV4cG9ydCBjb25zdCBnZXRPcmlnaW5hbEZyYW1lRXZlbnRGcm9tRG9jdW1lbnRFdmVudCA9IDxFIGV4dGVuZHMgRXZlbnQ+KGV2ZW50OiBFKTogRSB8IHVuZGVmaW5lZCA9PiB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIGV2ZW50W19fVU5TQUZFX1JFRkVSRU5DRV9PUklHSU5BTF9JRlJBTUVfRVZFTlRfS0VZXVxufVxuXG5leHBvcnQgY29uc3QgYXR0YWNoT3JpZ2luYWxGcmFtZUV2ZW50VG9Eb2N1bWVudEV2ZW50ID0gPEUgZXh0ZW5kcyBFdmVudD4oZXZlbnQ6IEUsIGZyYW1lRXZlbnQ6IEUpID0+IHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV2ZW50LCBfX1VOU0FGRV9SRUZFUkVOQ0VfT1JJR0lOQUxfSUZSQU1FX0VWRU5UX0tFWSwgeyB2YWx1ZTogZnJhbWVFdmVudCwgZW51bWVyYWJsZTogdHJ1ZSB9KVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/frames.ts\n");
|
|
250
|
+
|
|
251
|
+
/***/ }),
|
|
252
|
+
|
|
253
|
+
/***/ "./src/index.ts":
|
|
254
|
+
/*!**********************!*\
|
|
255
|
+
!*** ./src/index.ts ***!
|
|
256
|
+
\**********************/
|
|
257
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
258
|
+
|
|
259
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"compose\": () => (/* reexport safe */ _utils_compose__WEBPACK_IMPORTED_MODULE_1__.compose),\n/* harmony export */ \"createReader\": () => (/* reexport safe */ _createReaderWithEnhancer__WEBPACK_IMPORTED_MODULE_0__.createReaderWithEnhancer),\n/* harmony export */ \"Report\": () => (/* reexport safe */ _report__WEBPACK_IMPORTED_MODULE_2__.Report),\n/* harmony export */ \"composeEnhancer\": () => (/* reexport safe */ _enhancers_composeEnhancer__WEBPACK_IMPORTED_MODULE_3__.composeEnhancer),\n/* harmony export */ \"groupBy\": () => (/* reexport safe */ _utils_objects__WEBPACK_IMPORTED_MODULE_4__.groupBy),\n/* harmony export */ \"isShallowEqual\": () => (/* reexport safe */ _utils_objects__WEBPACK_IMPORTED_MODULE_4__.isShallowEqual)\n/* harmony export */ });\n/* harmony import */ var _createReaderWithEnhancer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createReaderWithEnhancer */ \"./src/createReaderWithEnhancer.ts\");\n/* harmony import */ var _utils_compose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/compose */ \"./src/utils/compose.ts\");\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./report */ \"./src/report.ts\");\n/* harmony import */ var _enhancers_composeEnhancer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./enhancers/composeEnhancer */ \"./src/enhancers/composeEnhancer.ts\");\n/* harmony import */ var _utils_objects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/objects */ \"./src/utils/objects.ts\");\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvaW5kZXgudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFLbUM7QUFJTTtBQVV4QztBQWFnQztBQUU0QjtBQUNKIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL2luZGV4LnRzP2ZmYjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY3JlYXRlUmVhZGVyV2l0aEVuaGFuY2VyIGFzIGNyZWF0ZVJlYWRlcixcbiAgUmVhZGVyLFxuICBDb3JlRW5oYW5jZXIsXG4gIEV4dGVybmFsRW5oYW5jZXIgYXMgRW5oYW5jZXJcbn0gZnJvbSAnLi9jcmVhdGVSZWFkZXJXaXRoRW5oYW5jZXInXG5pbXBvcnQgeyBjcmVhdGVTZWxlY3Rpb24gfSBmcm9tICcuL3NlbGVjdGlvbidcbi8vIGltcG9ydCB7IEVuaGFuY2VyIGFzIElubmVyRW5oYW5jZXIgfSBmcm9tICcuL2VuaGFuY2Vycy90eXBlcydcbi8vIGV4cG9ydCB7IEVuaGFuY2VyIH0gZnJvbSAnLi9lbmhhbmNlcnMvdHlwZXMnXG5leHBvcnQgeyBjb21wb3NlIH0gZnJvbSAnLi91dGlscy9jb21wb3NlJ1xuZXhwb3J0IHsgQ29tcG9zZUVuaGFuY2VyIH0gZnJvbSAnLi9lbmhhbmNlcnMvY29tcG9zZUVuaGFuY2VyJ1xuXG5leHBvcnQgeyBNYW5pZmVzdCB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCB7XG4gIGNyZWF0ZVJlYWRlcixcbiAgUmVhZGVyLFxuICBFbmhhbmNlclxuICAvLyBDb3JlRW5oYW5jZXJcbn1cblxuLy8gZXhwb3J0IHR5cGUgRW5oYW5jZXI8XG4vLyAgIE9wdGlvbnMgPSB7fSxcbi8vICAgQXBpID0ge30sXG4vLyAgIFNldHRpbmdzID0ge30sXG4vLyAgIE91dHB1dFNldHRpbmdzID0gU2V0dGluZ3MsXG4vLyAgIC8vIERlcGVuZHNPbiBleHRlbmRzIEVuaGFuY2VyID0gUmVhZGVyV2l0aEVuaGFuY2VyRW5oYW5jZXJcbi8vICAgRGVwZW5kc09uIGV4dGVuZHMgUmVhZGVyV2l0aEVuaGFuY2VyRW5oYW5jZXIgPSBSZWFkZXJXaXRoRW5oYW5jZXJFbmhhbmNlclxuLy8gPiA9IElubmVyRW5oYW5jZXI8T3B0aW9ucywgQXBpLCBTZXR0aW5ncywgT3V0cHV0U2V0dGluZ3MsIERlcGVuZHNPbj5cblxuZXhwb3J0IHR5cGUgUmVhZGVyU2VsZWN0aW9uID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlU2VsZWN0aW9uPlxuXG5leHBvcnQgeyBSZXBvcnQgfSBmcm9tICcuL3JlcG9ydCdcblxuZXhwb3J0IHsgY29tcG9zZUVuaGFuY2VyIH0gZnJvbSAnLi9lbmhhbmNlcnMvY29tcG9zZUVuaGFuY2VyJ1xuZXhwb3J0IHsgZ3JvdXBCeSwgaXNTaGFsbG93RXF1YWwgfSBmcm9tICcuL3V0aWxzL29iamVjdHMnXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/index.ts\n");
|
|
260
|
+
|
|
261
|
+
/***/ }),
|
|
262
|
+
|
|
263
|
+
/***/ "./src/pagination.ts":
|
|
264
|
+
/*!***************************!*\
|
|
265
|
+
!*** ./src/pagination.ts ***!
|
|
266
|
+
\***************************/
|
|
267
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
268
|
+
|
|
269
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createPagination\": () => (/* binding */ createPagination),\n/* harmony export */ \"getItemOffsetFromPageIndex\": () => (/* binding */ getItemOffsetFromPageIndex),\n/* harmony export */ \"getNumberOfPages\": () => (/* binding */ getNumberOfPages),\n/* harmony export */ \"getClosestValidOffsetFromApproximateOffsetInPages\": () => (/* binding */ getClosestValidOffsetFromApproximateOffsetInPages)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./report */ \"./src/report.ts\");\n/* harmony import */ var _utils_objects__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/objects */ \"./src/utils/objects.ts\");\n\n\n\nconst NAMESPACE = `pagination`;\nconst createPagination = ({ context }) => {\n const paginationSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject({\n beginPageIndex: undefined,\n beginNumberOfPages: 0,\n beginCfi: undefined,\n beginSpineItemIndex: undefined,\n endPageIndex: undefined,\n endNumberOfPages: 0,\n endCfi: undefined,\n endSpineItemIndex: undefined\n });\n const getSpineItemNumberOfPages = (spineItem) => {\n const writingMode = spineItem.spineItemFrame.getWritingMode();\n const { width, height } = spineItem.getElementDimensions();\n if (writingMode === `vertical-rl`) {\n return getNumberOfPages(height, context.getPageSize().height);\n }\n return getNumberOfPages(width, context.getPageSize().width);\n };\n const getInfoForUpdate = (info) => {\n const numberOfPages = getSpineItemNumberOfPages(info.spineItem);\n const cfi = undefined;\n return {\n numberOfPages,\n pageIndex: info.pageIndex,\n cfi: info.cfi\n };\n };\n const updateBeginAndEnd = _report__WEBPACK_IMPORTED_MODULE_1__.Report.measurePerformance(`${NAMESPACE} updateBeginAndEnd`, 1, (begin, end) => {\n const beginInfo = getInfoForUpdate(begin);\n const endInfo = getInfoForUpdate(end);\n const newValues = {\n beginPageIndex: beginInfo.pageIndex,\n beginNumberOfPages: beginInfo.numberOfPages,\n beginCfi: beginInfo.cfi,\n beginSpineItemIndex: begin.spineItemIndex,\n endPageIndex: endInfo.pageIndex,\n endNumberOfPages: endInfo.numberOfPages,\n endCfi: endInfo.cfi,\n endSpineItemIndex: end.spineItemIndex\n };\n paginationSubject$.next(Object.assign(Object.assign({}, paginationSubject$.value), newValues));\n }, { disable: true });\n const getInfo = () => paginationSubject$.value;\n const info$ = paginationSubject$\n .asObservable()\n .pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_0__.distinctUntilChanged)(_utils_objects__WEBPACK_IMPORTED_MODULE_2__.isShallowEqual));\n const destroy = () => {\n paginationSubject$.complete();\n };\n return {\n destroy,\n updateBeginAndEnd,\n getInfo,\n $: {\n info$\n }\n };\n};\nconst getItemOffsetFromPageIndex = (pageWidth, pageIndex, itemWidth) => {\n const lastPageOffset = itemWidth - pageWidth;\n const logicalOffset = (itemWidth * (pageIndex * pageWidth)) / itemWidth;\n return Math.max(0, Math.min(lastPageOffset, logicalOffset));\n};\nconst getNumberOfPages = (itemWidth, pageWidth) => {\n if ((pageWidth || 0) === 0 || (itemWidth || 0) === 0)\n return 1;\n return Math.floor(Math.max(1, itemWidth / pageWidth));\n};\nconst getClosestValidOffsetFromApproximateOffsetInPages = (offset, pageWidth, itemWidth) => {\n const numberOfPages = getNumberOfPages(itemWidth, pageWidth);\n const offsetValues = [...Array(numberOfPages)].map((_, i) => i * pageWidth);\n if (offset >= (numberOfPages * pageWidth))\n return offsetValues[offsetValues.length - 1] || 0;\n return offsetValues.find(offsetRange => offset < (offsetRange + pageWidth)) || 0;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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NUYsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNsRixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL3BhZ2luYXRpb24udHM/YjNkZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSBcInJ4anNcIlxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIlxuaW1wb3J0IHsgU3BpbmVJdGVtIH0gZnJvbSBcIi4vc3BpbmVJdGVtL2NyZWF0ZVNwaW5lSXRlbVwiXG5pbXBvcnQgeyBTcGluZUl0ZW1NYW5hZ2VyIH0gZnJvbSBcIi4vc3BpbmVJdGVtTWFuYWdlclwiXG5pbXBvcnQgeyBSZXBvcnQgfSBmcm9tIFwiLi9yZXBvcnRcIlxuaW1wb3J0IHsgaXNTaGFsbG93RXF1YWwgfSBmcm9tIFwiLi91dGlscy9vYmplY3RzXCJcblxuY29uc3QgTkFNRVNQQUNFID0gYHBhZ2luYXRpb25gXG5cbnR5cGUgUGFnaW5hdGlvbkluZm8gPSB7XG4gIGJlZ2luUGFnZUluZGV4OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgYmVnaW5OdW1iZXJPZlBhZ2VzOiBudW1iZXJcbiAgYmVnaW5DZmk6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBiZWdpblNwaW5lSXRlbUluZGV4OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgZW5kUGFnZUluZGV4OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgZW5kTnVtYmVyT2ZQYWdlczogbnVtYmVyXG4gIGVuZENmaTogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGVuZFNwaW5lSXRlbUluZGV4OiBudW1iZXIgfCB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBhZ2luYXRpb24gPSAoeyBjb250ZXh0IH06IHsgY29udGV4dDogQ29udGV4dCwgc3BpbmVJdGVtTWFuYWdlcjogU3BpbmVJdGVtTWFuYWdlciB9KSA9PiB7XG4gIGNvbnN0IHBhZ2luYXRpb25TdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGFnaW5hdGlvbkluZm8+KHtcbiAgICBiZWdpblBhZ2VJbmRleDogdW5kZWZpbmVkLFxuICAgIGJlZ2luTnVtYmVyT2ZQYWdlczogMCxcbiAgICBiZWdpbkNmaTogdW5kZWZpbmVkLFxuICAgIGJlZ2luU3BpbmVJdGVtSW5kZXg6IHVuZGVmaW5lZCxcbiAgICBlbmRQYWdlSW5kZXg6IHVuZGVmaW5lZCxcbiAgICBlbmROdW1iZXJPZlBhZ2VzOiAwLFxuICAgIGVuZENmaTogdW5kZWZpbmVkLFxuICAgIGVuZFNwaW5lSXRlbUluZGV4OiB1bmRlZmluZWRcbiAgfSlcblxuICBjb25zdCBnZXRTcGluZUl0ZW1OdW1iZXJPZlBhZ2VzID0gKHNwaW5lSXRlbTogU3BpbmVJdGVtKSA9PiB7XG4gICAgLy8gcHJlLXBhZ2luYXRlZCBhbHdheXMgYXJlIG9ubHkgb25lIHBhZ2VcbiAgICAvLyBpZiAoIXNwaW5lSXRlbS5pc1JlZmxvd2FibGUpIHJldHVybiAxXG5cbiAgICBjb25zdCB3cml0aW5nTW9kZSA9IHNwaW5lSXRlbS5zcGluZUl0ZW1GcmFtZS5nZXRXcml0aW5nTW9kZSgpXG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBzcGluZUl0ZW0uZ2V0RWxlbWVudERpbWVuc2lvbnMoKVxuXG4gICAgaWYgKHdyaXRpbmdNb2RlID09PSBgdmVydGljYWwtcmxgKSB7XG4gICAgICByZXR1cm4gZ2V0TnVtYmVyT2ZQYWdlcyhoZWlnaHQsIGNvbnRleHQuZ2V0UGFnZVNpemUoKS5oZWlnaHQpXG4gICAgfVxuXG4gICAgcmV0dXJuIGdldE51bWJlck9mUGFnZXMod2lkdGgsIGNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aClcbiAgfVxuXG4gIGNvbnN0IGdldEluZm9Gb3JVcGRhdGUgPSAoaW5mbzoge1xuICAgIHNwaW5lSXRlbTogU3BpbmVJdGVtLFxuICAgIC8vIHNwaW5lSXRlbVBvc2l0aW9uOiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0sXG4gICAgcGFnZUluZGV4OiBudW1iZXIsXG4gICAgY2ZpOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgb3B0aW9uczoge1xuICAgICAgaXNBdEVuZE9mQ2hhcHRlcj86IGJvb2xlYW4sXG4gICAgICAvLyBjZmk/OiBzdHJpbmdcbiAgICB9XG4gIH0pID0+IHtcbiAgICBjb25zdCBudW1iZXJPZlBhZ2VzID0gZ2V0U3BpbmVJdGVtTnVtYmVyT2ZQYWdlcyhpbmZvLnNwaW5lSXRlbSlcbiAgICAvLyBjb25zdCBwYWdlSW5kZXggPSBzcGluZUl0ZW1Mb2NhdG9yLmdldFNwaW5lSXRlbVBhZ2VJbmRleEZyb21Qb3NpdGlvbihpbmZvLnNwaW5lSXRlbVBvc2l0aW9uLCBpbmZvLnNwaW5lSXRlbSlcbiAgICBjb25zdCBjZmk6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuXG4gICAgLy8gQHRvZG8gdXBkYXRlIHBhZ2luYXRpb24gY2ZpIHdoZW5ldmVyIGlmcmFtZSBpcyByZWFkeSAoY2F1c2UgZXZlbiBvZmZzZXQgbWF5IG5vdCBjaGFuZ2UgYnV0IHdlIHN0aWxsIG5lZWQgdG8gZ2V0IHRoZSBpZnJhbWUgZm9yIGNmaSlcbiAgICAvLyBAdG9kbyB1cGRhdGUgY2ZpIGFsc28gd2hlbmV2ZXIgYSByZXNpemUgb2NjdXJzIGluIHRoZSBpZnJhbWVcbiAgICAvLyAtIGxvYWRcbiAgICAvLyAtIGZvbnQgbG9hZGVkXG4gICAgLy8gLSByZXNpemVcbiAgICAvLyBmdXR1cmUgY2hhbmdlcyB3b3VsZCBwb3RlbnRpYWxseSBvbmx5IGJlIHJlc2l6ZSAoZWFzeSB0byB0cmFjaykgYW5kIGZvbnQgc2l6ZSBmYW1pbHkgY2hhbmdlLlxuICAgIC8vIHRvIHRyYWNrIHRoYXQgd2UgY2FuIGhhdmUgYSBoaWRkZW4gdGV4dCBlbGVtZW50IGFuZCB0cmFjayBpdCBhbmQgc2VuZCBldmVudCBiYWNrXG4gICAgLy8gY29uc29sZS53YXJuKHR5cGVvZiBpbmZvLm9wdGlvbnMuY2ZpKVxuICAgIC8vIGlmIChpbmZvLm9wdGlvbnMuY2ZpID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyAgIGNmaSA9IHNwaW5lSXRlbUxvY2F0b3IuZ2V0Q2ZpKHBhZ2VJbmRleCwgaW5mby5zcGluZUl0ZW0pXG4gICAgLy8gICBSZXBvcnQubG9nKGBwYWdpbmF0aW9uYCwgYGNmaWAsIHBhZ2VJbmRleCwgY2ZpKVxuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICBjZmkgPSBpbmZvLm9wdGlvbnMuY2ZpXG4gICAgLy8gfVxuXG4gICAgLy8gY2ZpID0gaW5mby5vcHRpb25zLmNmaVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG51bWJlck9mUGFnZXMsXG4gICAgICBwYWdlSW5kZXg6IGluZm8ucGFnZUluZGV4LFxuICAgICAgY2ZpOiBpbmZvLmNmaVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZUJlZ2luQW5kRW5kID0gUmVwb3J0Lm1lYXN1cmVQZXJmb3JtYW5jZShgJHtOQU1FU1BBQ0V9IHVwZGF0ZUJlZ2luQW5kRW5kYCwgMSwgKFxuICAgIGJlZ2luOiBQYXJhbWV0ZXJzPHR5cGVvZiBnZXRJbmZvRm9yVXBkYXRlPlswXSAmIHtcbiAgICAgIHNwaW5lSXRlbUluZGV4OiBudW1iZXIsXG4gICAgfSxcbiAgICBlbmQ6IFBhcmFtZXRlcnM8dHlwZW9mIGdldEluZm9Gb3JVcGRhdGU+WzBdICYge1xuICAgICAgc3BpbmVJdGVtSW5kZXg6IG51bWJlcixcbiAgICB9XG4gICkgPT4ge1xuICAgIGNvbnN0IGJlZ2luSW5mbyA9IGdldEluZm9Gb3JVcGRhdGUoYmVnaW4pXG4gICAgY29uc3QgZW5kSW5mbyA9IGdldEluZm9Gb3JVcGRhdGUoZW5kKVxuXG4gICAgY29uc3QgbmV3VmFsdWVzID0ge1xuICAgICAgYmVnaW5QYWdlSW5kZXg6IGJlZ2luSW5mby5wYWdlSW5kZXgsXG4gICAgICBiZWdpbk51bWJlck9mUGFnZXM6IGJlZ2luSW5mby5udW1iZXJPZlBhZ2VzLFxuICAgICAgYmVnaW5DZmk6IGJlZ2luSW5mby5jZmksXG4gICAgICBiZWdpblNwaW5lSXRlbUluZGV4OiBiZWdpbi5zcGluZUl0ZW1JbmRleCxcbiAgICAgIGVuZFBhZ2VJbmRleDogZW5kSW5mby5wYWdlSW5kZXgsXG4gICAgICBlbmROdW1iZXJPZlBhZ2VzOiBlbmRJbmZvLm51bWJlck9mUGFnZXMsXG4gICAgICBlbmRDZmk6IGVuZEluZm8uY2ZpLFxuICAgICAgZW5kU3BpbmVJdGVtSW5kZXg6IGVuZC5zcGluZUl0ZW1JbmRleFxuICAgIH1cblxuICAgIHBhZ2luYXRpb25TdWJqZWN0JC5uZXh0KHtcbiAgICAgIC4uLnBhZ2luYXRpb25TdWJqZWN0JC52YWx1ZSxcbiAgICAgIC4uLm5ld1ZhbHVlc1xuICAgIH0pXG4gIH0sIHsgZGlzYWJsZTogdHJ1ZSB9KVxuXG4gIGNvbnN0IGdldEluZm8gPSAoKSA9PiBwYWdpbmF0aW9uU3ViamVjdCQudmFsdWVcblxuICBjb25zdCBpbmZvJCA9IHBhZ2luYXRpb25TdWJqZWN0JFxuICAgIC5hc09ic2VydmFibGUoKVxuICAgIC5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNTaGFsbG93RXF1YWwpXG4gICAgKVxuXG4gIGNvbnN0IGRlc3Ryb3kgPSAoKSA9PiB7XG4gICAgcGFnaW5hdGlvblN1YmplY3QkLmNvbXBsZXRlKClcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGVzdHJveSxcbiAgICB1cGRhdGVCZWdpbkFuZEVuZCxcbiAgICBnZXRJbmZvLFxuICAgICQ6IHtcbiAgICAgIGluZm8kXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIFBhZ2luYXRpb24gPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVQYWdpbmF0aW9uPlxuXG5leHBvcnQgY29uc3QgZ2V0SXRlbU9mZnNldEZyb21QYWdlSW5kZXggPSAocGFnZVdpZHRoOiBudW1iZXIsIHBhZ2VJbmRleDogbnVtYmVyLCBpdGVtV2lkdGg6IG51bWJlcikgPT4ge1xuICBjb25zdCBsYXN0UGFnZU9mZnNldCA9IGl0ZW1XaWR0aCAtIHBhZ2VXaWR0aFxuICBjb25zdCBsb2dpY2FsT2Zmc2V0ID0gKGl0ZW1XaWR0aCAqIChwYWdlSW5kZXggKiBwYWdlV2lkdGgpKSAvIGl0ZW1XaWR0aFxuXG4gIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbihsYXN0UGFnZU9mZnNldCwgbG9naWNhbE9mZnNldCkpXG59XG5cbmV4cG9ydCBjb25zdCBnZXROdW1iZXJPZlBhZ2VzID0gKGl0ZW1XaWR0aDogbnVtYmVyLCBwYWdlV2lkdGg6IG51bWJlcikgPT4ge1xuICBpZiAoKHBhZ2VXaWR0aCB8fCAwKSA9PT0gMCB8fCAoaXRlbVdpZHRoIHx8IDApID09PSAwKSByZXR1cm4gMVxuICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLm1heCgxLCBpdGVtV2lkdGggLyBwYWdlV2lkdGgpKVxufVxuXG5leHBvcnQgY29uc3QgZ2V0Q2xvc2VzdFZhbGlkT2Zmc2V0RnJvbUFwcHJveGltYXRlT2Zmc2V0SW5QYWdlcyA9IChvZmZzZXQ6IG51bWJlciwgcGFnZVdpZHRoOiBudW1iZXIsIGl0ZW1XaWR0aDogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IG51bWJlck9mUGFnZXMgPSBnZXROdW1iZXJPZlBhZ2VzKGl0ZW1XaWR0aCwgcGFnZVdpZHRoKVxuICBjb25zdCBvZmZzZXRWYWx1ZXMgPSBbLi4uQXJyYXkobnVtYmVyT2ZQYWdlcyldLm1hcCgoXywgaSkgPT4gaSAqIHBhZ2VXaWR0aClcblxuICBpZiAob2Zmc2V0ID49IChudW1iZXJPZlBhZ2VzICogcGFnZVdpZHRoKSkgcmV0dXJuIG9mZnNldFZhbHVlc1tvZmZzZXRWYWx1ZXMubGVuZ3RoIC0gMV0gfHwgMFxuXG4gIHJldHVybiBvZmZzZXRWYWx1ZXMuZmluZChvZmZzZXRSYW5nZSA9PiBvZmZzZXQgPCAob2Zmc2V0UmFuZ2UgKyBwYWdlV2lkdGgpKSB8fCAwXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/pagination.ts\n");
|
|
270
|
+
|
|
271
|
+
/***/ }),
|
|
272
|
+
|
|
273
|
+
/***/ "./src/reader.ts":
|
|
274
|
+
/*!***********************!*\
|
|
275
|
+
!*** ./src/reader.ts ***!
|
|
276
|
+
\***********************/
|
|
277
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
278
|
+
|
|
279
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createReader\": () => (/* binding */ createReader)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./report */ \"./src/report.ts\");\n/* harmony import */ var _context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./context */ \"./src/context.ts\");\n/* harmony import */ var _pagination__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pagination */ \"./src/pagination.ts\");\n/* harmony import */ var _spine_createSpine__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./spine/createSpine */ \"./src/spine/createSpine.ts\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _spineItemManager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./spineItemManager */ \"./src/spineItemManager.ts\");\n/* harmony import */ var _utils_objects__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/objects */ \"./src/utils/objects.ts\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\n\n\nconst IFRAME_EVENT_BRIDGE_ELEMENT_ID = `proseReaderIframeEventBridgeElement`;\nconst createReader = (_a) => {\n var { containerElement, hooks: initialHooks } = _a, settings = __rest(_a, [\"containerElement\", \"hooks\"]);\n const stateSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject({\n supportedPageTurnAnimation: [`fade`, `none`, `slide`],\n supportedPageTurnMode: [`controlled`, `scrollable`],\n supportedPageTurnDirection: [`horizontal`, `vertical`],\n supportedComputedPageTurnDirection: [`horizontal`, `vertical`]\n });\n const readySubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const destroy$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const selectionSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const hooksSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject(initialHooks || []);\n const context = (0,_context__WEBPACK_IMPORTED_MODULE_2__.createContext)(settings);\n const spineItemManager = (0,_spineItemManager__WEBPACK_IMPORTED_MODULE_6__.createSpineItemManager)({ context });\n const pagination = (0,_pagination__WEBPACK_IMPORTED_MODULE_3__.createPagination)({ context, spineItemManager });\n const element = createWrapperElement(containerElement);\n const iframeEventBridgeElement = createIframeEventBridgeElement(containerElement);\n const spine = (0,_spine_createSpine__WEBPACK_IMPORTED_MODULE_4__.createSpine)({\n parentElement: element,\n iframeEventBridgeElement,\n context,\n pagination,\n spineItemManager,\n hooks$: hooksSubject$\n });\n containerElement.appendChild(element);\n element.appendChild(iframeEventBridgeElement);\n const layout = () => {\n const dimensions = {\n width: containerElement.offsetWidth,\n height: containerElement.offsetHeight\n };\n const margin = 0;\n const marginTop = 0;\n const marginBottom = 0;\n const isReflow = true;\n const containerElementWidth = dimensions.width;\n const containerElementEvenWidth = containerElementWidth % 2 === 0 || isReflow\n ? containerElementWidth\n : containerElementWidth - 1;\n element.style.setProperty(`overflow`, `hidden`);\n element.style.height = `${dimensions.height - marginTop - marginBottom}px`;\n element.style.width = `${containerElementEvenWidth - 2 * margin}px`;\n if (margin > 0 || marginTop > 0 || marginBottom > 0) {\n element.style.margin = `${marginTop}px ${margin}px ${marginBottom}px`;\n }\n const elementRect = element.getBoundingClientRect();\n context.setVisibleAreaRect(elementRect.x, elementRect.y, containerElementEvenWidth, dimensions.height);\n spine.layout();\n };\n const load = (manifest, loadOptions = {}) => {\n if (context.getManifest()) {\n _report__WEBPACK_IMPORTED_MODULE_1__.Report.warn(`loading a new book is not supported yet`);\n return;\n }\n _report__WEBPACK_IMPORTED_MODULE_1__.Report.log(`load`, { manifest, loadOptions });\n context.load(manifest, loadOptions);\n layout();\n if (!loadOptions.cfi) {\n spine.viewportNavigator.goToSpineItem(0, { animate: false });\n }\n else {\n spine.viewportNavigator.goToCfi(loadOptions.cfi, { animate: false });\n }\n readySubject$.next();\n };\n const registerHook = (name, fn) => {\n hooksSubject$.next([...hooksSubject$.getValue(), { name, fn }]);\n };\n const manipulateContainer = (cb) => {\n cb(element);\n };\n spine.$.$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_5__.tap)(event => {\n if (event.type === `onSelectionChange`) {\n selectionSubject$.next(event.data);\n }\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_5__.takeUntil)(destroy$))\n .subscribe();\n (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.merge)(context.$.load$, context.$.settings$, context.$.hasVerticalWriting$)\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_5__.mapTo)(undefined), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_5__.withLatestFrom)(context.$.hasVerticalWriting$), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_5__.map)(([, hasVerticalWriting]) => {\n const settings = context.getSettings();\n const manifest = context.getManifest();\n return {\n hasVerticalWriting,\n renditionFlow: manifest === null || manifest === void 0 ? void 0 : manifest.renditionFlow,\n renditionLayout: manifest === null || manifest === void 0 ? void 0 : manifest.renditionLayout,\n computedPageTurnMode: settings.computedPageTurnMode\n };\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_5__.distinctUntilChanged)(_utils_objects__WEBPACK_IMPORTED_MODULE_7__.isShallowEqual), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_5__.map)(({ hasVerticalWriting, renditionFlow, renditionLayout, computedPageTurnMode }) => (Object.assign(Object.assign({}, stateSubject$.value), { supportedPageTurnMode: renditionFlow === `scrolled-continuous`\n ? [`scrollable`]\n : !context.areAllItemsPrePaginated() ? [`controlled`] : [`controlled`, `scrollable`], supportedPageTurnAnimation: renditionFlow === `scrolled-continuous` || computedPageTurnMode === `scrollable`\n ? [`none`]\n : hasVerticalWriting\n ? [`fade`, `none`]\n : [`fade`, `none`, `slide`], supportedPageTurnDirection: computedPageTurnMode === `scrollable`\n ? [`vertical`]\n : renditionLayout === `reflowable`\n ? [`horizontal`]\n : [`horizontal`, `vertical`] }))), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_5__.takeUntil)(destroy$))\n .subscribe(stateSubject$);\n const destroy = () => {\n hooksSubject$.next([]);\n hooksSubject$.complete();\n pagination.destroy();\n context.destroy();\n spine === null || spine === void 0 ? void 0 : spine.destroy();\n element.remove();\n iframeEventBridgeElement.remove();\n readySubject$.complete();\n stateSubject$.complete();\n selectionSubject$.complete();\n destroy$.next();\n destroy$.complete();\n };\n const reader = {\n context,\n registerHook,\n spine,\n manipulateSpineItems: spine.manipulateSpineItems,\n manipulateContainer,\n moveTo: spine.viewportNavigator.moveTo,\n turnLeft: spine.viewportNavigator.turnLeft,\n turnRight: spine.viewportNavigator.turnRight,\n goToPageOfCurrentChapter: spine.viewportNavigator.goToPageOfCurrentChapter,\n goToPage: spine.viewportNavigator.goToPage,\n goToUrl: spine.viewportNavigator.goToUrl,\n goToCfi: spine.viewportNavigator.goToCfi,\n goToSpineItem: spine.viewportNavigator.goToSpineItem,\n getFocusedSpineItemIndex: spineItemManager.getFocusedSpineItemIndex,\n getSpineItem: spineItemManager.get,\n getSpineItems: spineItemManager.getAll,\n getAbsolutePositionOf: spineItemManager.getAbsolutePositionOf,\n getSelection: spine.getSelection,\n isSelecting: spine.isSelecting,\n normalizeEventForViewport: spine.normalizeEventForViewport,\n getCfiMetaInformation: spine.cfiLocator.getCfiMetaInformation,\n resolveCfi: spine.cfiLocator.resolveCfi,\n generateCfi: spine.cfiLocator.generateFromRange,\n locator: spine.locator,\n getCurrentNavigationPosition: spine.viewportNavigator.getCurrentNavigationPosition,\n getCurrentViewportPosition: spine.viewportNavigator.getCurrentViewportPosition,\n layout,\n load,\n destroy,\n setSettings: context.setSettings,\n $: {\n pagination$: pagination.$.info$,\n settings$: context.$.settings$,\n state$: stateSubject$.asObservable(),\n ready$: readySubject$.asObservable(),\n selection$: selectionSubject$.asObservable(),\n viewportState$: spine.$.viewportState$,\n layout$: spine.$.layout$,\n destroy$\n },\n __debug: {\n pagination,\n context,\n spineItemManager\n }\n };\n return reader;\n};\nconst createWrapperElement = (containerElement) => {\n const element = containerElement.ownerDocument.createElement(`div`);\n element.style.cssText = `\n background-color: white;\n position: relative;\n `;\n return element;\n};\nconst createIframeEventBridgeElement = (containerElement) => {\n const iframeEventBridgeElement = containerElement.ownerDocument.createElement(`div`);\n iframeEventBridgeElement.id = IFRAME_EVENT_BRIDGE_ELEMENT_ID;\n iframeEventBridgeElement.style.cssText = `\n position: absolute;\n height: 100%;\n width: 100%;\n top: 0;\n left: 0;\n z-index: -1;\n `;\n return iframeEventBridgeElement;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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dkUsTUFBTSx3QkFBd0IsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUNwRix3QkFBd0IsQ0FBQyxFQUFFLEdBQUcsOEJBQThCO0lBQzVELHdCQUF3QixDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUc7Ozs7Ozs7R0FPeEM7SUFFRCxPQUFPLHdCQUF3QjtBQUNqQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL3JlYWRlci50cz85OGM2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWVyZ2UsIE9ic2VydmFibGUsIE9ic2VydmVkVmFsdWVPZiwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCJcbmltcG9ydCB7IFJlcG9ydCB9IGZyb20gXCIuL3JlcG9ydFwiXG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0IGFzIGNyZWF0ZUJvb2tDb250ZXh0IH0gZnJvbSBcIi4vY29udGV4dFwiXG5pbXBvcnQgeyBjcmVhdGVQYWdpbmF0aW9uLCBQYWdpbmF0aW9uIH0gZnJvbSBcIi4vcGFnaW5hdGlvblwiXG5pbXBvcnQgeyBjcmVhdGVTcGluZSwgU3BpbmUgfSBmcm9tIFwiLi9zcGluZS9jcmVhdGVTcGluZVwiXG5pbXBvcnQgeyBMb2FkT3B0aW9ucywgTWFuaWZlc3QgfSBmcm9tIFwiLi90eXBlc1wiXG5pbXBvcnQgeyBfX1VOU0FGRV9SRUZFUkVOQ0VfT1JJR0lOQUxfSUZSQU1FX0VWRU5UX0tFWSB9IGZyb20gXCIuL2NvbnN0YW50c1wiXG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHdpdGhMYXRlc3RGcm9tLCBtYXBUbywgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCJcbmltcG9ydCB7IGNyZWF0ZVNlbGVjdGlvbiB9IGZyb20gXCIuL3NlbGVjdGlvblwiXG5pbXBvcnQgeyBjcmVhdGVTcGluZUl0ZW1NYW5hZ2VyLCBTcGluZUl0ZW1NYW5hZ2VyIH0gZnJvbSBcIi4vc3BpbmVJdGVtTWFuYWdlclwiXG5pbXBvcnQgeyBIb29rLCBSZWdpc3Rlckhvb2sgfSBmcm9tIFwiLi90eXBlcy9Ib29rXCJcbmltcG9ydCB7IGlzU2hhbGxvd0VxdWFsIH0gZnJvbSBcIi4vdXRpbHMvb2JqZWN0c1wiXG5cbnR5cGUgQ29udGV4dCA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUJvb2tDb250ZXh0PlxudHlwZSBDb250ZXh0U2V0dGluZ3MgPSBQYXJhbWV0ZXJzPENvbnRleHRbYHNldFNldHRpbmdzYF0+WzBdXG5cbmNvbnN0IElGUkFNRV9FVkVOVF9CUklER0VfRUxFTUVOVF9JRCA9IGBwcm9zZVJlYWRlcklmcmFtZUV2ZW50QnJpZGdlRWxlbWVudGBcblxudHlwZSBDcmVhdGVSZWFkZXJPcHRpb25zID0ge1xuICBob29rcz86IEhvb2tbXVxuICBjb250YWluZXJFbGVtZW50OiBIVE1MRWxlbWVudCxcbn0gJiBQaWNrPFxuICBDb250ZXh0U2V0dGluZ3MsXG4gIHwgYGZvcmNlU2luZ2xlUGFnZU1vZGVgXG4gIHwgYHBhZ2VUdXJuQW5pbWF0aW9uYFxuICB8IGBwYWdlVHVybkRpcmVjdGlvbmBcbiAgfCBgcGFnZVR1cm5Nb2RlYFxuPlxuXG5leHBvcnQgdHlwZSBSZWFkZXIgPSB7XG4gIC8vIGlubmVyUGFnaW5hdGlvbjogUGFnaW5hdGlvbixcbiAgY29udGV4dDogQ29udGV4dCxcbiAgcmVnaXN0ZXJIb29rOiBSZWdpc3Rlckhvb2ssXG4gIHNwaW5lOiBTcGluZSxcbiAgbWFuaXB1bGF0ZVNwaW5lSXRlbXM6IFNwaW5lW2BtYW5pcHVsYXRlU3BpbmVJdGVtc2BdLFxuICBtYW5pcHVsYXRlQ29udGFpbmVyOiAoY2I6IChjb250YWluZXI6IEhUTUxFbGVtZW50KSA9PiBib29sZWFuKSA9PiB2b2lkLFxuICBtb3ZlVG86IFNwaW5lW2B2aWV3cG9ydE5hdmlnYXRvcmBdW2Btb3ZlVG9gXSxcbiAgdHVybkxlZnQ6IFNwaW5lW2B2aWV3cG9ydE5hdmlnYXRvcmBdW2B0dXJuTGVmdGBdLFxuICB0dXJuUmlnaHQ6IFNwaW5lW2B2aWV3cG9ydE5hdmlnYXRvcmBdW2B0dXJuUmlnaHRgXSxcbiAgZ29Ub1BhZ2VPZkN1cnJlbnRDaGFwdGVyOiBTcGluZVtgdmlld3BvcnROYXZpZ2F0b3JgXVtgZ29Ub1BhZ2VPZkN1cnJlbnRDaGFwdGVyYF0sXG4gIGdvVG9QYWdlOiBTcGluZVtgdmlld3BvcnROYXZpZ2F0b3JgXVtgZ29Ub1BhZ2VgXSxcbiAgZ29Ub1VybDogU3BpbmVbYHZpZXdwb3J0TmF2aWdhdG9yYF1bYGdvVG9VcmxgXSxcbiAgZ29Ub0NmaTogU3BpbmVbYHZpZXdwb3J0TmF2aWdhdG9yYF1bYGdvVG9DZmlgXSxcbiAgZ29Ub1NwaW5lSXRlbTogU3BpbmVbYHZpZXdwb3J0TmF2aWdhdG9yYF1bYGdvVG9TcGluZUl0ZW1gXSxcbiAgZ2V0Rm9jdXNlZFNwaW5lSXRlbUluZGV4OiBTcGluZUl0ZW1NYW5hZ2VyW2BnZXRGb2N1c2VkU3BpbmVJdGVtSW5kZXhgXSxcbiAgZ2V0U3BpbmVJdGVtOiBTcGluZUl0ZW1NYW5hZ2VyW2BnZXRgXSxcbiAgZ2V0U3BpbmVJdGVtczogU3BpbmVJdGVtTWFuYWdlcltgZ2V0QWxsYF0sXG4gIGdldEFic29sdXRlUG9zaXRpb25PZjogU3BpbmVJdGVtTWFuYWdlcltgZ2V0QWJzb2x1dGVQb3NpdGlvbk9mYF0sXG4gIGdldFNlbGVjdGlvbjogU3BpbmVbYGdldFNlbGVjdGlvbmBdLFxuICBpc1NlbGVjdGluZzogU3BpbmVbYGlzU2VsZWN0aW5nYF0sXG4gIG5vcm1hbGl6ZUV2ZW50Rm9yVmlld3BvcnQ6IFNwaW5lW2Bub3JtYWxpemVFdmVudEZvclZpZXdwb3J0YF0sXG4gIGdldENmaU1ldGFJbmZvcm1hdGlvbjogU3BpbmVbYGNmaUxvY2F0b3JgXVtgZ2V0Q2ZpTWV0YUluZm9ybWF0aW9uYF0sXG4gIHJlc29sdmVDZmk6IFNwaW5lW2BjZmlMb2NhdG9yYF1bYHJlc29sdmVDZmlgXSxcbiAgZ2VuZXJhdGVDZmk6IFNwaW5lW2BjZmlMb2NhdG9yYF1bYGdlbmVyYXRlRnJvbVJhbmdlYF0sXG4gIGxvY2F0b3I6IFNwaW5lW2Bsb2NhdG9yYF0sXG4gIGdldEN1cnJlbnROYXZpZ2F0aW9uUG9zaXRpb246IFNwaW5lW2B2aWV3cG9ydE5hdmlnYXRvcmBdW2BnZXRDdXJyZW50TmF2aWdhdGlvblBvc2l0aW9uYF0sXG4gIGdldEN1cnJlbnRWaWV3cG9ydFBvc2l0aW9uOiBTcGluZVtgdmlld3BvcnROYXZpZ2F0b3JgXVtgZ2V0Q3VycmVudFZpZXdwb3J0UG9zaXRpb25gXSxcbiAgbGF5b3V0OiAoKSA9PiB2b2lkLFxuICBsb2FkOiAobWFuaWZlc3Q6IE1hbmlmZXN0LCBsb2FkT3B0aW9ucz86IExvYWRPcHRpb25zKSA9PiB2b2lkLFxuICBkZXN0cm95OiAoKSA9PiB2b2lkLFxuICBzZXRTZXR0aW5nczogQ29udGV4dFtgc2V0U2V0dGluZ3NgXSxcbiAgJDoge1xuICAgIHBhZ2luYXRpb24kOiBQYWdpbmF0aW9uW2AkYF1bYGluZm8kYF1cbiAgICBzZXR0aW5ncyQ6IENvbnRleHRbYCRgXVtgc2V0dGluZ3MkYF0sXG4gICAgc3RhdGUkOiBPYnNlcnZhYmxlPHtcbiAgICAgIHN1cHBvcnRlZFBhZ2VUdXJuQW5pbWF0aW9uOiBOb25OdWxsYWJsZTxDb250ZXh0U2V0dGluZ3NbYHBhZ2VUdXJuQW5pbWF0aW9uYF0+W11cbiAgICAgIHN1cHBvcnRlZFBhZ2VUdXJuTW9kZTogTm9uTnVsbGFibGU8Q29udGV4dFNldHRpbmdzW2BwYWdlVHVybk1vZGVgXT5bXVxuICAgICAgc3VwcG9ydGVkUGFnZVR1cm5EaXJlY3Rpb246IE5vbk51bGxhYmxlPENvbnRleHRTZXR0aW5nc1tgcGFnZVR1cm5EaXJlY3Rpb25gXT5bXVxuICAgICAgc3VwcG9ydGVkQ29tcHV0ZWRQYWdlVHVybkRpcmVjdGlvbjogTm9uTnVsbGFibGU8Q29udGV4dFNldHRpbmdzW2BwYWdlVHVybkRpcmVjdGlvbmBdPltdXG4gICAgfT4sXG4gICAgLyoqXG4gICAgICogRGlzcGF0Y2hlZCB3aGVuIHRoZSByZWFkZXIgaGFzIGxvYWRlZCBhIGJvb2sgYW5kIGlzIGRpc3BsYXllZCBhIGJvb2suXG4gICAgICogVXNpbmcgbmF2aWdhdGlvbiBBUEkgYW5kIGdldHRpbmcgaW5mb3JtYXRpb24gYWJvdXQgY3VycmVudCBjb250ZW50IHdpbGxcbiAgICAgKiBoYXZlIGFuIGVmZmVjdC5cbiAgICAgKiBJdCBjYW4gdHlwaWNhbGx5IGJlIHVzZWQgdG8gaGlkZSBhIGxvYWRpbmcgaW5kaWNhdG9yLlxuICAgICAqL1xuICAgIHJlYWR5JDogT2JzZXJ2YWJsZTx2b2lkPixcbiAgICAvKipcbiAgICAgKiBEaXNwYXRjaGVkIHdoZW4gYSBjaGFuZ2UgaW4gc2VsZWN0aW9uIGhhcHBlbnNcbiAgICAgKi9cbiAgICBzZWxlY3Rpb24kOiBPYnNlcnZhYmxlPFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZVNlbGVjdGlvbj4gfCBudWxsPixcbiAgICB2aWV3cG9ydFN0YXRlJDogU3BpbmVbYCRgXVtgdmlld3BvcnRTdGF0ZSRgXSxcbiAgICBsYXlvdXQkOiBTcGluZVtgJGBdW2BsYXlvdXQkYF0sXG4gICAgZGVzdHJveSQ6IE9ic2VydmFibGU8dm9pZD4sXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVSZWFkZXIgPSAoeyBjb250YWluZXJFbGVtZW50LCBob29rczogaW5pdGlhbEhvb2tzLCAuLi5zZXR0aW5ncyB9OiBDcmVhdGVSZWFkZXJPcHRpb25zKTogUmVhZGVyID0+IHtcbiAgY29uc3Qgc3RhdGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8e1xuICAgIHN1cHBvcnRlZFBhZ2VUdXJuQW5pbWF0aW9uOiBOb25OdWxsYWJsZTxDb250ZXh0U2V0dGluZ3NbYHBhZ2VUdXJuQW5pbWF0aW9uYF0+W11cbiAgICBzdXBwb3J0ZWRQYWdlVHVybk1vZGU6IE5vbk51bGxhYmxlPENvbnRleHRTZXR0aW5nc1tgcGFnZVR1cm5Nb2RlYF0+W11cbiAgICBzdXBwb3J0ZWRQYWdlVHVybkRpcmVjdGlvbjogTm9uTnVsbGFibGU8Q29udGV4dFNldHRpbmdzW2BwYWdlVHVybkRpcmVjdGlvbmBdPltdXG4gICAgc3VwcG9ydGVkQ29tcHV0ZWRQYWdlVHVybkRpcmVjdGlvbjogTm9uTnVsbGFibGU8Q29udGV4dFNldHRpbmdzW2BwYWdlVHVybkRpcmVjdGlvbmBdPltdXG4gIH0+KHtcbiAgICBzdXBwb3J0ZWRQYWdlVHVybkFuaW1hdGlvbjogW2BmYWRlYCwgYG5vbmVgLCBgc2xpZGVgXSxcbiAgICBzdXBwb3J0ZWRQYWdlVHVybk1vZGU6IFtgY29udHJvbGxlZGAsIGBzY3JvbGxhYmxlYF0sXG4gICAgc3VwcG9ydGVkUGFnZVR1cm5EaXJlY3Rpb246IFtgaG9yaXpvbnRhbGAsIGB2ZXJ0aWNhbGBdLFxuICAgIHN1cHBvcnRlZENvbXB1dGVkUGFnZVR1cm5EaXJlY3Rpb246IFtgaG9yaXpvbnRhbGAsIGB2ZXJ0aWNhbGBdXG4gIH0pXG4gIGNvbnN0IHJlYWR5U3ViamVjdCQgPSBuZXcgU3ViamVjdDx2b2lkPigpXG4gIGNvbnN0IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuICBjb25zdCBzZWxlY3Rpb25TdWJqZWN0JCA9IG5ldyBTdWJqZWN0PFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZVNlbGVjdGlvbj4gfCBudWxsPigpXG4gIGNvbnN0IGhvb2tzU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEhvb2tbXT4oaW5pdGlhbEhvb2tzIHx8IFtdKVxuICBjb25zdCBjb250ZXh0ID0gY3JlYXRlQm9va0NvbnRleHQoc2V0dGluZ3MpXG4gIGNvbnN0IHNwaW5lSXRlbU1hbmFnZXIgPSBjcmVhdGVTcGluZUl0ZW1NYW5hZ2VyKHsgY29udGV4dCB9KVxuICBjb25zdCBwYWdpbmF0aW9uID0gY3JlYXRlUGFnaW5hdGlvbih7IGNvbnRleHQsIHNwaW5lSXRlbU1hbmFnZXIgfSlcbiAgY29uc3QgZWxlbWVudCA9IGNyZWF0ZVdyYXBwZXJFbGVtZW50KGNvbnRhaW5lckVsZW1lbnQpXG4gIGNvbnN0IGlmcmFtZUV2ZW50QnJpZGdlRWxlbWVudCA9IGNyZWF0ZUlmcmFtZUV2ZW50QnJpZGdlRWxlbWVudChjb250YWluZXJFbGVtZW50KVxuICBjb25zdCBzcGluZSA9IGNyZWF0ZVNwaW5lKHtcbiAgICBwYXJlbnRFbGVtZW50OiBlbGVtZW50LFxuICAgIGlmcmFtZUV2ZW50QnJpZGdlRWxlbWVudCxcbiAgICBjb250ZXh0LFxuICAgIHBhZ2luYXRpb24sXG4gICAgc3BpbmVJdGVtTWFuYWdlcixcbiAgICBob29rcyQ6IGhvb2tzU3ViamVjdCRcbiAgfSlcblxuICBjb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpXG4gIGVsZW1lbnQuYXBwZW5kQ2hpbGQoaWZyYW1lRXZlbnRCcmlkZ2VFbGVtZW50KVxuXG4gIGNvbnN0IGxheW91dCA9ICgpID0+IHtcbiAgICBjb25zdCBkaW1lbnNpb25zID0ge1xuICAgICAgd2lkdGg6IGNvbnRhaW5lckVsZW1lbnQub2Zmc2V0V2lkdGgsXG4gICAgICBoZWlnaHQ6IGNvbnRhaW5lckVsZW1lbnQub2Zmc2V0SGVpZ2h0XG4gICAgfVxuICAgIGNvbnN0IG1hcmdpbiA9IDBcbiAgICBjb25zdCBtYXJnaW5Ub3AgPSAwXG4gICAgY29uc3QgbWFyZ2luQm90dG9tID0gMFxuICAgIGNvbnN0IGlzUmVmbG93ID0gdHJ1ZSAvLyBAdG9kb1xuICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnRXaWR0aCA9IGRpbWVuc2lvbnMud2lkdGhcbiAgICBjb25zdCBjb250YWluZXJFbGVtZW50RXZlbldpZHRoID1cbiAgICAgIGNvbnRhaW5lckVsZW1lbnRXaWR0aCAlIDIgPT09IDAgfHwgaXNSZWZsb3dcbiAgICAgICAgPyBjb250YWluZXJFbGVtZW50V2lkdGhcbiAgICAgICAgOiBjb250YWluZXJFbGVtZW50V2lkdGggLSAxIC8vIEB0b2RvIGNhcmVmdWwgd2l0aCB0aGUgLTEsIGR1bm5vIHdoeSBpdCdzIGhlcmUgeWV0XG5cbiAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGBvdmVyZmxvd2AsIGBoaWRkZW5gKVxuICAgIGVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7ZGltZW5zaW9ucy5oZWlnaHQgLSBtYXJnaW5Ub3AgLSBtYXJnaW5Cb3R0b219cHhgXG4gICAgZWxlbWVudC5zdHlsZS53aWR0aCA9IGAke2NvbnRhaW5lckVsZW1lbnRFdmVuV2lkdGggLSAyICogbWFyZ2lufXB4YFxuXG4gICAgaWYgKG1hcmdpbiA+IDAgfHwgbWFyZ2luVG9wID4gMCB8fCBtYXJnaW5Cb3R0b20gPiAwKSB7XG4gICAgICBlbGVtZW50LnN0eWxlLm1hcmdpbiA9IGAke21hcmdpblRvcH1weCAke21hcmdpbn1weCAke21hcmdpbkJvdHRvbX1weGBcbiAgICB9XG4gICAgY29uc3QgZWxlbWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgICBjb250ZXh0LnNldFZpc2libGVBcmVhUmVjdChcbiAgICAgIGVsZW1lbnRSZWN0LngsXG4gICAgICBlbGVtZW50UmVjdC55LFxuICAgICAgY29udGFpbmVyRWxlbWVudEV2ZW5XaWR0aCxcbiAgICAgIGRpbWVuc2lvbnMuaGVpZ2h0XG4gICAgKVxuXG4gICAgc3BpbmUubGF5b3V0KClcbiAgfVxuXG4gIGNvbnN0IGxvYWQgPSAoXG4gICAgbWFuaWZlc3Q6IE1hbmlmZXN0LFxuICAgIGxvYWRPcHRpb25zOiBMb2FkT3B0aW9ucyA9IHt9XG4gICkgPT4ge1xuICAgIGlmIChjb250ZXh0LmdldE1hbmlmZXN0KCkpIHtcbiAgICAgIFJlcG9ydC53YXJuKGBsb2FkaW5nIGEgbmV3IGJvb2sgaXMgbm90IHN1cHBvcnRlZCB5ZXRgKVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBSZXBvcnQubG9nKGBsb2FkYCwgeyBtYW5pZmVzdCwgbG9hZE9wdGlvbnMgfSlcblxuICAgIGNvbnRleHQubG9hZChtYW5pZmVzdCwgbG9hZE9wdGlvbnMpXG5cbiAgICAvLyBtYW5pZmVzdC5yZWFkaW5nT3JkZXIuZm9yRWFjaCgoXywgaW5kZXgpID0+IHJlc291cmNlc01hbmFnZXIuY2FjaGUoaW5kZXgpKVxuXG4gICAgbGF5b3V0KClcblxuICAgIGlmICghbG9hZE9wdGlvbnMuY2ZpKSB7XG4gICAgICBzcGluZS52aWV3cG9ydE5hdmlnYXRvci5nb1RvU3BpbmVJdGVtKDAsIHsgYW5pbWF0ZTogZmFsc2UgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgc3BpbmUudmlld3BvcnROYXZpZ2F0b3IuZ29Ub0NmaShsb2FkT3B0aW9ucy5jZmksIHsgYW5pbWF0ZTogZmFsc2UgfSlcbiAgICB9XG5cbiAgICByZWFkeVN1YmplY3QkLm5leHQoKVxuICB9XG5cbiAgY29uc3QgcmVnaXN0ZXJIb29rOiBSZWdpc3Rlckhvb2sgPSAobmFtZSwgZm4pID0+IHtcbiAgICBob29rc1N1YmplY3QkLm5leHQoWy4uLmhvb2tzU3ViamVjdCQuZ2V0VmFsdWUoKSwgeyBuYW1lLCBmbiB9IGFzIEhvb2tdKVxuICB9XG5cbiAgY29uc3QgbWFuaXB1bGF0ZUNvbnRhaW5lciA9IChjYjogKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpID0+IGJvb2xlYW4pID0+IHtcbiAgICAvLyBAdG9kbyByZS1sYXlvdXQgYmFzZWQgb24gcmV0dXJuXG4gICAgY2IoZWxlbWVudClcbiAgfVxuXG4gIHNwaW5lLiQuJFxuICAgIC5waXBlKFxuICAgICAgdGFwKGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IGBvblNlbGVjdGlvbkNoYW5nZWApIHtcbiAgICAgICAgICBzZWxlY3Rpb25TdWJqZWN0JC5uZXh0KGV2ZW50LmRhdGEpXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsKGRlc3Ryb3kkKVxuICAgIClcbiAgICAuc3Vic2NyaWJlKClcblxuICBtZXJnZShcbiAgICBjb250ZXh0LiQubG9hZCQsXG4gICAgY29udGV4dC4kLnNldHRpbmdzJCxcbiAgICBjb250ZXh0LiQuaGFzVmVydGljYWxXcml0aW5nJFxuICApXG4gICAgLnBpcGUoXG4gICAgICBtYXBUbyh1bmRlZmluZWQpLFxuICAgICAgd2l0aExhdGVzdEZyb20oY29udGV4dC4kLmhhc1ZlcnRpY2FsV3JpdGluZyQpLFxuICAgICAgbWFwKChbLCBoYXNWZXJ0aWNhbFdyaXRpbmddKSA9PiB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gY29udGV4dC5nZXRTZXR0aW5ncygpXG4gICAgICAgIGNvbnN0IG1hbmlmZXN0ID0gY29udGV4dC5nZXRNYW5pZmVzdCgpXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBoYXNWZXJ0aWNhbFdyaXRpbmcsXG4gICAgICAgICAgcmVuZGl0aW9uRmxvdzogbWFuaWZlc3Q/LnJlbmRpdGlvbkZsb3csXG4gICAgICAgICAgcmVuZGl0aW9uTGF5b3V0OiBtYW5pZmVzdD8ucmVuZGl0aW9uTGF5b3V0LFxuICAgICAgICAgIGNvbXB1dGVkUGFnZVR1cm5Nb2RlOiBzZXR0aW5ncy5jb21wdXRlZFBhZ2VUdXJuTW9kZVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzU2hhbGxvd0VxdWFsKSxcbiAgICAgIG1hcCgoeyBoYXNWZXJ0aWNhbFdyaXRpbmcsIHJlbmRpdGlvbkZsb3csIHJlbmRpdGlvbkxheW91dCwgY29tcHV0ZWRQYWdlVHVybk1vZGUgfSk6IE9ic2VydmVkVmFsdWVPZjx0eXBlb2Ygc3RhdGVTdWJqZWN0JD4gPT4gKHtcbiAgICAgICAgLi4uc3RhdGVTdWJqZWN0JC52YWx1ZSxcbiAgICAgICAgc3VwcG9ydGVkUGFnZVR1cm5Nb2RlOlxuICAgICAgICAgIHJlbmRpdGlvbkZsb3cgPT09IGBzY3JvbGxlZC1jb250aW51b3VzYFxuICAgICAgICAgICAgPyBbYHNjcm9sbGFibGVgXVxuICAgICAgICAgICAgOiAhY29udGV4dC5hcmVBbGxJdGVtc1ByZVBhZ2luYXRlZCgpID8gW2Bjb250cm9sbGVkYF0gOiBbYGNvbnRyb2xsZWRgLCBgc2Nyb2xsYWJsZWBdLFxuICAgICAgICBzdXBwb3J0ZWRQYWdlVHVybkFuaW1hdGlvbjpcbiAgICAgICAgICByZW5kaXRpb25GbG93ID09PSBgc2Nyb2xsZWQtY29udGludW91c2AgfHwgY29tcHV0ZWRQYWdlVHVybk1vZGUgPT09IGBzY3JvbGxhYmxlYFxuICAgICAgICAgICAgPyBbYG5vbmVgXVxuICAgICAgICAgICAgOiBoYXNWZXJ0aWNhbFdyaXRpbmdcbiAgICAgICAgICAgICAgPyBbYGZhZGVgLCBgbm9uZWBdXG4gICAgICAgICAgICAgIDogW2BmYWRlYCwgYG5vbmVgLCBgc2xpZGVgXSxcbiAgICAgICAgc3VwcG9ydGVkUGFnZVR1cm5EaXJlY3Rpb246XG4gICAgICAgICAgY29tcHV0ZWRQYWdlVHVybk1vZGUgPT09IGBzY3JvbGxhYmxlYFxuICAgICAgICAgICAgPyBbYHZlcnRpY2FsYF1cbiAgICAgICAgICAgIDogcmVuZGl0aW9uTGF5b3V0ID09PSBgcmVmbG93YWJsZWBcbiAgICAgICAgICAgICAgPyBbYGhvcml6b250YWxgXVxuICAgICAgICAgICAgICA6IFtgaG9yaXpvbnRhbGAsIGB2ZXJ0aWNhbGBdXG4gICAgICB9KSksXG4gICAgICB0YWtlVW50aWwoZGVzdHJveSQpXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoc3RhdGVTdWJqZWN0JClcblxuICAvKipcbiAgICogRnJlZSB1cCByZXNvdXJjZXMsIGFuZCBkaXNwb3NlIHRoZSB3aG9sZSByZWFkZXIuXG4gICAqIFlvdSBzaG91bGQgY2FsbCB0aGlzIG1ldGhvZCBpZiB5b3UgbGVhdmUgdGhlIHJlYWRlci5cbiAgICpcbiAgICogVGhpcyBpcyBub3QgcG9zc2libGUgdG8gdXNlIGFueSBvZiB0aGUgcmVhZGVyIGZlYXR1cmVzIG9uY2UgaXRcbiAgICogaGFzIGJlZW4gZGVzdHJveWVkLiBJZiB5b3UgbmVlZCB0byBvcGVuIGEgbmV3IGJvb2sgeW91IG5lZWQgdG9cbiAgICogZWl0aGVyIGNyZWF0ZSBhIG5ldyByZWFkZXIgb3IgY2FsbCBgbG9hZGAgd2l0aCBhIGRpZmZlcmVudCBtYW5pZmVzdFxuICAgKiBpbnN0ZWFkIG9mIGRlc3Ryb3lpbmcgaXQuXG4gICAqL1xuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgIGhvb2tzU3ViamVjdCQubmV4dChbXSlcbiAgICBob29rc1N1YmplY3QkLmNvbXBsZXRlKClcbiAgICBwYWdpbmF0aW9uLmRlc3Ryb3koKVxuICAgIGNvbnRleHQuZGVzdHJveSgpXG4gICAgc3BpbmU/LmRlc3Ryb3koKVxuICAgIGVsZW1lbnQucmVtb3ZlKClcbiAgICBpZnJhbWVFdmVudEJyaWRnZUVsZW1lbnQucmVtb3ZlKClcbiAgICByZWFkeVN1YmplY3QkLmNvbXBsZXRlKClcbiAgICBzdGF0ZVN1YmplY3QkLmNvbXBsZXRlKClcbiAgICBzZWxlY3Rpb25TdWJqZWN0JC5jb21wbGV0ZSgpXG4gICAgZGVzdHJveSQubmV4dCgpXG4gICAgZGVzdHJveSQuY29tcGxldGUoKVxuICB9XG5cbiAgY29uc3QgcmVhZGVyID0ge1xuICAgIC8vIGlubmVyUGFnaW5hdGlvbjogcGFnaW5hdGlvbixcbiAgICAvLyBwYWdpbmF0aW9uLFxuICAgIGNvbnRleHQsXG4gICAgcmVnaXN0ZXJIb29rLFxuICAgIHNwaW5lLFxuICAgIG1hbmlwdWxhdGVTcGluZUl0ZW1zOiBzcGluZS5tYW5pcHVsYXRlU3BpbmVJdGVtcyxcbiAgICBtYW5pcHVsYXRlQ29udGFpbmVyLFxuICAgIG1vdmVUbzogc3BpbmUudmlld3BvcnROYXZpZ2F0b3IubW92ZVRvLFxuICAgIHR1cm5MZWZ0OiBzcGluZS52aWV3cG9ydE5hdmlnYXRvci50dXJuTGVmdCxcbiAgICB0dXJuUmlnaHQ6IHNwaW5lLnZpZXdwb3J0TmF2aWdhdG9yLnR1cm5SaWdodCxcbiAgICBnb1RvUGFnZU9mQ3VycmVudENoYXB0ZXI6IHNwaW5lLnZpZXdwb3J0TmF2aWdhdG9yLmdvVG9QYWdlT2ZDdXJyZW50Q2hhcHRlcixcbiAgICBnb1RvUGFnZTogc3BpbmUudmlld3BvcnROYXZpZ2F0b3IuZ29Ub1BhZ2UsXG4gICAgZ29Ub1VybDogc3BpbmUudmlld3BvcnROYXZpZ2F0b3IuZ29Ub1VybCxcbiAgICBnb1RvQ2ZpOiBzcGluZS52aWV3cG9ydE5hdmlnYXRvci5nb1RvQ2ZpLFxuICAgIGdvVG9TcGluZUl0ZW06IHNwaW5lLnZpZXdwb3J0TmF2aWdhdG9yLmdvVG9TcGluZUl0ZW0sXG4gICAgZ2V0Rm9jdXNlZFNwaW5lSXRlbUluZGV4OiBzcGluZUl0ZW1NYW5hZ2VyLmdldEZvY3VzZWRTcGluZUl0ZW1JbmRleCxcbiAgICBnZXRTcGluZUl0ZW06IHNwaW5lSXRlbU1hbmFnZXIuZ2V0LFxuICAgIGdldFNwaW5lSXRlbXM6IHNwaW5lSXRlbU1hbmFnZXIuZ2V0QWxsLFxuICAgIGdldEFic29sdXRlUG9zaXRpb25PZjogc3BpbmVJdGVtTWFuYWdlci5nZXRBYnNvbHV0ZVBvc2l0aW9uT2YsXG4gICAgZ2V0U2VsZWN0aW9uOiBzcGluZS5nZXRTZWxlY3Rpb24sXG4gICAgaXNTZWxlY3Rpbmc6IHNwaW5lLmlzU2VsZWN0aW5nLFxuICAgIG5vcm1hbGl6ZUV2ZW50Rm9yVmlld3BvcnQ6IHNwaW5lLm5vcm1hbGl6ZUV2ZW50Rm9yVmlld3BvcnQsXG4gICAgZ2V0Q2ZpTWV0YUluZm9ybWF0aW9uOiBzcGluZS5jZmlMb2NhdG9yLmdldENmaU1ldGFJbmZvcm1hdGlvbixcbiAgICByZXNvbHZlQ2ZpOiBzcGluZS5jZmlMb2NhdG9yLnJlc29sdmVDZmksXG4gICAgZ2VuZXJhdGVDZmk6IHNwaW5lLmNmaUxvY2F0b3IuZ2VuZXJhdGVGcm9tUmFuZ2UsXG4gICAgbG9jYXRvcjogc3BpbmUubG9jYXRvcixcbiAgICBnZXRDdXJyZW50TmF2aWdhdGlvblBvc2l0aW9uOiBzcGluZS52aWV3cG9ydE5hdmlnYXRvci5nZXRDdXJyZW50TmF2aWdhdGlvblBvc2l0aW9uLFxuICAgIGdldEN1cnJlbnRWaWV3cG9ydFBvc2l0aW9uOiBzcGluZS52aWV3cG9ydE5hdmlnYXRvci5nZXRDdXJyZW50Vmlld3BvcnRQb3NpdGlvbixcbiAgICBsYXlvdXQsXG4gICAgbG9hZCxcbiAgICBkZXN0cm95LFxuICAgIHNldFNldHRpbmdzOiBjb250ZXh0LnNldFNldHRpbmdzLFxuICAgICQ6IHtcbiAgICAgIHBhZ2luYXRpb24kOiBwYWdpbmF0aW9uLiQuaW5mbyQsXG4gICAgICBzZXR0aW5ncyQ6IGNvbnRleHQuJC5zZXR0aW5ncyQsXG4gICAgICBzdGF0ZSQ6IHN0YXRlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCksXG4gICAgICAvKipcbiAgICAgICAqIERpc3BhdGNoZWQgd2hlbiB0aGUgcmVhZGVyIGhhcyBsb2FkZWQgYSBib29rIGFuZCBpcyBkaXNwbGF5ZWQgYSBib29rLlxuICAgICAgICogVXNpbmcgbmF2aWdhdGlvbiBBUEkgYW5kIGdldHRpbmcgaW5mb3JtYXRpb24gYWJvdXQgY3VycmVudCBjb250ZW50IHdpbGxcbiAgICAgICAqIGhhdmUgYW4gZWZmZWN0LlxuICAgICAgICogSXQgY2FuIHR5cGljYWxseSBiZSB1c2VkIHRvIGhpZGUgYSBsb2FkaW5nIGluZGljYXRvci5cbiAgICAgICAqL1xuICAgICAgcmVhZHkkOiByZWFkeVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXNwYXRjaGVkIHdoZW4gYSBjaGFuZ2UgaW4gc2VsZWN0aW9uIGhhcHBlbnNcbiAgICAgICAqL1xuICAgICAgc2VsZWN0aW9uJDogc2VsZWN0aW9uU3ViamVjdCQuYXNPYnNlcnZhYmxlKCksXG4gICAgICB2aWV3cG9ydFN0YXRlJDogc3BpbmUuJC52aWV3cG9ydFN0YXRlJCxcbiAgICAgIGxheW91dCQ6IHNwaW5lLiQubGF5b3V0JCxcbiAgICAgIGRlc3Ryb3kkXG4gICAgfSxcbiAgICBfX2RlYnVnOiB7XG4gICAgICBwYWdpbmF0aW9uLFxuICAgICAgY29udGV4dCxcbiAgICAgIHNwaW5lSXRlbU1hbmFnZXJcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVhZGVyXG59XG5cbmNvbnN0IGNyZWF0ZVdyYXBwZXJFbGVtZW50ID0gKGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gIGNvbnN0IGVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChgZGl2YClcbiAgZWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gYFxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYFxuXG4gIHJldHVybiBlbGVtZW50XG59XG5cbmNvbnN0IGNyZWF0ZUlmcmFtZUV2ZW50QnJpZGdlRWxlbWVudCA9IChjb250YWluZXJFbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuICBjb25zdCBpZnJhbWVFdmVudEJyaWRnZUVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChgZGl2YClcbiAgaWZyYW1lRXZlbnRCcmlkZ2VFbGVtZW50LmlkID0gSUZSQU1FX0VWRU5UX0JSSURHRV9FTEVNRU5UX0lEXG4gIGlmcmFtZUV2ZW50QnJpZGdlRWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gYFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgei1pbmRleDogLTE7XG4gIGBcblxuICByZXR1cm4gaWZyYW1lRXZlbnRCcmlkZ2VFbGVtZW50XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/reader.ts\n");
|
|
280
|
+
|
|
281
|
+
/***/ }),
|
|
282
|
+
|
|
283
|
+
/***/ "./src/report.ts":
|
|
284
|
+
/*!***********************!*\
|
|
285
|
+
!*** ./src/report.ts ***!
|
|
286
|
+
\***********************/
|
|
287
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
288
|
+
|
|
289
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Report\": () => (/* binding */ Report)\n/* harmony export */ });\nconst ROOT_NAMESPACE = `@prose-reader/core`;\nconst wrap = (str) => `[${str}]`;\nconst time = (name, targetDuration = 0) => {\n let tick = 0;\n const t0 = performance.now();\n return () => {\n tick++;\n const t1 = performance.now();\n Report.logMetric({ name: `${name} - tick ${tick}`, duration: t1 - t0 }, targetDuration);\n };\n};\nconst createReport = (namespace) => ({\n log: (...data) => {\n if (window.__PROSE_READER_DEBUG) {\n if (namespace)\n console.log(wrap(ROOT_NAMESPACE), wrap(namespace), ...data);\n else\n console.log(wrap(ROOT_NAMESPACE), ...data);\n }\n },\n warn: (...data) => {\n if (window.__PROSE_READER_DEBUG) {\n if (namespace)\n console.warn(wrap(ROOT_NAMESPACE), wrap(namespace), ...data);\n else\n console.warn(wrap(ROOT_NAMESPACE), ...data);\n }\n },\n error: (...data) => {\n console.error(...data);\n },\n time,\n logMetric: (performanceEntry, targetDuration = 0) => {\n if (window.__PROSE_READER_DEBUG) {\n if (performanceEntry.duration <= targetDuration) {\n }\n else {\n console.warn(`[prose-reader] [metric] `, `${performanceEntry.name} took ${performanceEntry.duration}ms which is above the ${targetDuration}ms target for this function`);\n }\n }\n },\n measurePerformance: (name, targetDuration = 10, functionToMeasure, { disable } = {}) => {\n if (disable || !window.__PROSE_READER_DEBUG)\n return functionToMeasure;\n return (...args) => {\n const t0 = performance.now();\n const response = functionToMeasure(...args);\n if (response && response.then) {\n return response.then((res) => {\n const t1 = performance.now();\n Report.logMetric({ name, duration: t1 - t0 }, targetDuration);\n return res;\n });\n }\n const t1 = performance.now();\n Report.logMetric({ name, duration: t1 - t0 }, targetDuration);\n return response;\n };\n }\n});\nconst Report = (Object.assign(Object.assign({}, createReport()), { namespace: (namespace) => createReport(namespace) }));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEdBQVEsRUFBRSxFQUFFO29CQUNoQyxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO29CQUM1QixNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsY0FBYyxDQUFDO29CQUM3RCxPQUFPLEdBQUc7Z0JBQ1osQ0FBQyxDQUFDO2FBQ0g7WUFFRCxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQzVCLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxjQUFjLENBQUM7WUFFN0QsT0FBTyxRQUFRO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQztBQUVLLE1BQU0sTUFBTSxHQUFHLGlDQUNqQixZQUFZLEVBQUUsS0FDakIsU0FBUyxFQUFFLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUN6RCIsInNvdXJjZXMiOlsid2VicGFjazovL0Bwcm9zZS1yZWFkZXIvY29yZS8uL3NyYy9yZXBvcnQudHM/MDRhMCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBST09UX05BTUVTUEFDRSA9IGBAcHJvc2UtcmVhZGVyL2NvcmVgXG5cbmNvbnN0IHdyYXAgPSAoc3RyOiBzdHJpbmcpID0+IGBbJHtzdHJ9XWBcblxuY29uc3QgdGltZSA9IChuYW1lOiBzdHJpbmcsIHRhcmdldER1cmF0aW9uID0gMCkgPT4ge1xuICBsZXQgdGljayA9IDBcbiAgY29uc3QgdDAgPSBwZXJmb3JtYW5jZS5ub3coKVxuICAvLyBjb25zdCB0MCA9IERhdGUubm93KClcbiAgLy8gY29uc29sZS50aW1lKG5hbWUpXG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICB0aWNrKytcbiAgICBjb25zdCB0MSA9IHBlcmZvcm1hbmNlLm5vdygpXG4gICAgLy8gY29uc3QgdDEgPSBEYXRlLm5vdygpXG4gICAgLy8gY29uc29sZS50aW1lRW5kKG5hbWUpXG4gICAgUmVwb3J0LmxvZ01ldHJpYyh7IG5hbWU6IGAke25hbWV9IC0gdGljayAke3RpY2t9YCwgZHVyYXRpb246IHQxIC0gdDAgfSwgdGFyZ2V0RHVyYXRpb24pXG4gIH1cbn1cblxuY29uc3QgY3JlYXRlUmVwb3J0ID0gKG5hbWVzcGFjZT86IHN0cmluZykgPT4gKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgbG9nOiAoLi4uZGF0YTogYW55W10pID0+IHtcbiAgICBpZiAod2luZG93Ll9fUFJPU0VfUkVBREVSX0RFQlVHKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgaWYgKG5hbWVzcGFjZSkgY29uc29sZS5sb2cod3JhcChST09UX05BTUVTUEFDRSksIHdyYXAobmFtZXNwYWNlKSwgLi4uZGF0YSlcbiAgICAgIGVsc2UgY29uc29sZS5sb2cod3JhcChST09UX05BTUVTUEFDRSksIC4uLmRhdGEpXG4gICAgfVxuICB9LFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICB3YXJuOiAoLi4uZGF0YTogYW55W10pID0+IHtcbiAgICBpZiAod2luZG93Ll9fUFJPU0VfUkVBREVSX0RFQlVHKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgaWYgKG5hbWVzcGFjZSkgY29uc29sZS53YXJuKHdyYXAoUk9PVF9OQU1FU1BBQ0UpLCB3cmFwKG5hbWVzcGFjZSksIC4uLmRhdGEpXG4gICAgICBlbHNlIGNvbnNvbGUud2Fybih3cmFwKFJPT1RfTkFNRVNQQUNFKSwgLi4uZGF0YSlcbiAgICB9XG4gIH0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGVycm9yOiAoLi4uZGF0YTogYW55W10pID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUuZXJyb3IoLi4uZGF0YSlcbiAgfSxcbiAgLy8gdGltZTogKGxhYmVsPzogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gIC8vICAgaWYgKHdpbmRvdy5fX1BST1NFX1JFQURFUl9ERUJVRykge1xuICAvLyAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgLy8gICAgIGNvbnNvbGUudGltZShgW3Byb3NlLXJlYWRlcl0gW21ldHJpY10gJHtsYWJlbH1gKTtcbiAgLy8gICB9XG4gIC8vIH0sXG4gIC8vIHRpbWVFbmQ6IChsYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4ge1xuICAvLyAgIGlmICh3aW5kb3cuX19QUk9TRV9SRUFERVJfREVCVUcpIHtcbiAgLy8gICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIC8vICAgICBjb25zb2xlLnRpbWVFbmQoYFtwcm9zZS1yZWFkZXJdIFttZXRyaWNdICR7bGFiZWx9YCk7XG4gIC8vICAgfVxuICAvLyB9LFxuICB0aW1lLFxuICBsb2dNZXRyaWM6IChwZXJmb3JtYW5jZUVudHJ5OiBQZXJmb3JtYW5jZUVudHJ5IHwgeyBuYW1lOiBzdHJpbmc7IGR1cmF0aW9uOiBudW1iZXIgfSwgdGFyZ2V0RHVyYXRpb24gPSAwKSA9PiB7XG4gICAgLy8gY29uc3QgZHVyYXRpb24gPSB0eXBlb2YgcGVyZm9ybWFuY2VFbnRyeSA9PT0gJ251bWJlcicgPyBwZXJmb3JtYW5jZUVudHJ5IDogcGVyZm9ybWFuY2VFbnRyeS5kdXJhdGlvbjtcbiAgICBpZiAod2luZG93Ll9fUFJPU0VfUkVBREVSX0RFQlVHKSB7XG4gICAgICBpZiAocGVyZm9ybWFuY2VFbnRyeS5kdXJhdGlvbiA8PSB0YXJnZXREdXJhdGlvbikge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgW3Byb3NlLXJlYWRlcl0gW21ldHJpY10gYCwgYCR7cGVyZm9ybWFuY2VFbnRyeS5uYW1lfSB0b29rICR7ZHVyYXRpb259bXNgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgW3Byb3NlLXJlYWRlcl0gW21ldHJpY10gYCxcbiAgICAgICAgICBgJHtwZXJmb3JtYW5jZUVudHJ5Lm5hbWV9IHRvb2sgJHtwZXJmb3JtYW5jZUVudHJ5LmR1cmF0aW9ufW1zIHdoaWNoIGlzIGFib3ZlIHRoZSAke3RhcmdldER1cmF0aW9ufW1zIHRhcmdldCBmb3IgdGhpcyBmdW5jdGlvbmBcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgbWVhc3VyZVBlcmZvcm1hbmNlOiA8RiBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PihuYW1lOiBzdHJpbmcsIHRhcmdldER1cmF0aW9uID0gMTAsIGZ1bmN0aW9uVG9NZWFzdXJlOiBGLCB7IGRpc2FibGUgfTogeyBkaXNhYmxlPzogYm9vbGVhbiB9ID0ge30pID0+IHtcbiAgICBpZiAoZGlzYWJsZSB8fCAhd2luZG93Ll9fUFJPU0VfUkVBREVSX0RFQlVHKSByZXR1cm4gZnVuY3Rpb25Ub01lYXN1cmVcblxuICAgIHJldHVybiAoLi4uYXJnczogUGFyYW1ldGVyczxGPik6IFJldHVyblR5cGU8Rj4gPT4ge1xuICAgICAgY29uc3QgdDAgPSBwZXJmb3JtYW5jZS5ub3coKVxuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBmdW5jdGlvblRvTWVhc3VyZSguLi4oYXJncyBhcyBhbnkpKVxuXG4gICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudGhlbikge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB0MSA9IHBlcmZvcm1hbmNlLm5vdygpXG4gICAgICAgICAgUmVwb3J0LmxvZ01ldHJpYyh7IG5hbWUsIGR1cmF0aW9uOiB0MSAtIHQwIH0sIHRhcmdldER1cmF0aW9uKVxuICAgICAgICAgIHJldHVybiByZXNcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgdDEgPSBwZXJmb3JtYW5jZS5ub3coKVxuICAgICAgUmVwb3J0LmxvZ01ldHJpYyh7IG5hbWUsIGR1cmF0aW9uOiB0MSAtIHQwIH0sIHRhcmdldER1cmF0aW9uKVxuXG4gICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICB9XG4gIH1cbn0pXG5cbmV4cG9ydCBjb25zdCBSZXBvcnQgPSAoe1xuICAuLi5jcmVhdGVSZXBvcnQoKSxcbiAgbmFtZXNwYWNlOiAobmFtZXNwYWNlOiBzdHJpbmcpID0+IGNyZWF0ZVJlcG9ydChuYW1lc3BhY2UpXG59KVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/report.ts\n");
|
|
290
|
+
|
|
291
|
+
/***/ }),
|
|
292
|
+
|
|
293
|
+
/***/ "./src/selection.ts":
|
|
294
|
+
/*!**************************!*\
|
|
295
|
+
!*** ./src/selection.ts ***!
|
|
296
|
+
\**************************/
|
|
297
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
298
|
+
|
|
299
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createSelection\": () => (/* binding */ createSelection)\n/* harmony export */ });\n/* harmony import */ var _cfi__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cfi */ \"./src/cfi.ts\");\n\nconst createSelection = (selection, item) => {\n const text = selection.toString();\n return {\n toString: () => text,\n getAnchorCfi: () => {\n if (selection.anchorNode) {\n return _cfi__WEBPACK_IMPORTED_MODULE_0__.CFI.generate(selection.anchorNode, selection.anchorOffset, `|[prose~anchor~${encodeURIComponent(item.id)}]`);\n }\n },\n getFocusCfi: () => {\n if (selection.focusNode) {\n return _cfi__WEBPACK_IMPORTED_MODULE_0__.CFI.generate(selection.focusNode, selection.focusOffset, `|[prose~anchor~${encodeURIComponent(item.id)}]`);\n }\n }\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc2VsZWN0aW9uLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTJCO0FBR3BCLE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBb0IsRUFBRSxJQUFvQyxFQUFFLEVBQUU7SUFDNUYsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRTtJQUVqQyxPQUFPO1FBQ0wsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUk7UUFDcEIsWUFBWSxFQUFFLEdBQUcsRUFBRTtZQUNqQixJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3hCLE9BQU8sOENBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO2FBQ3BIO1FBQ0gsQ0FBQztRQUNELFdBQVcsRUFBRSxHQUFHLEVBQUU7WUFDaEIsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFO2dCQUN2QixPQUFPLDhDQUFZLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLGtCQUFrQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQzthQUNsSDtRQUNILENBQUM7S0FDRjtBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvc2VsZWN0aW9uLnRzP2QzN2YiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ0ZJIH0gZnJvbSBcIi4vY2ZpXCJcbmltcG9ydCB7IE1hbmlmZXN0IH0gZnJvbSBcIi4vdHlwZXNcIlxuXG5leHBvcnQgY29uc3QgY3JlYXRlU2VsZWN0aW9uID0gKHNlbGVjdGlvbjogU2VsZWN0aW9uLCBpdGVtOiBNYW5pZmVzdFtgc3BpbmVJdGVtc2BdW251bWJlcl0pID0+IHtcbiAgY29uc3QgdGV4dCA9IHNlbGVjdGlvbi50b1N0cmluZygpXG5cbiAgcmV0dXJuIHtcbiAgICB0b1N0cmluZzogKCkgPT4gdGV4dCxcbiAgICBnZXRBbmNob3JDZmk6ICgpID0+IHtcbiAgICAgIGlmIChzZWxlY3Rpb24uYW5jaG9yTm9kZSkge1xuICAgICAgICByZXR1cm4gQ0ZJLmdlbmVyYXRlKHNlbGVjdGlvbi5hbmNob3JOb2RlLCBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0LCBgfFtwcm9zZX5hbmNob3J+JHtlbmNvZGVVUklDb21wb25lbnQoaXRlbS5pZCl9XWApXG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRGb2N1c0NmaTogKCkgPT4ge1xuICAgICAgaWYgKHNlbGVjdGlvbi5mb2N1c05vZGUpIHtcbiAgICAgICAgcmV0dXJuIENGSS5nZW5lcmF0ZShzZWxlY3Rpb24uZm9jdXNOb2RlLCBzZWxlY3Rpb24uZm9jdXNPZmZzZXQsIGB8W3Byb3NlfmFuY2hvcn4ke2VuY29kZVVSSUNvbXBvbmVudChpdGVtLmlkKX1dYClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/selection.ts\n");
|
|
300
|
+
|
|
301
|
+
/***/ }),
|
|
302
|
+
|
|
303
|
+
/***/ "./src/settings.ts":
|
|
304
|
+
/*!*************************!*\
|
|
305
|
+
!*** ./src/settings.ts ***!
|
|
306
|
+
\*************************/
|
|
307
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
308
|
+
|
|
309
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createSettings\": () => (/* binding */ createSettings)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./report */ \"./src/report.ts\");\n/* harmony import */ var _utils_objects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/objects */ \"./src/utils/objects.ts\");\n\n\n\n\nconst createSettings = (initialSettings) => {\n const mergedSettings = Object.assign({ forceSinglePageMode: false, pageTurnAnimation: `none`, computedPageTurnAnimation: `none`, pageTurnDirection: `horizontal`, computedPageTurnDirection: `horizontal`, pageTurnAnimationDuration: undefined, computedPageTurnAnimationDuration: 0, pageTurnMode: `controlled`, computedPageTurnMode: `controlled`, computedSnapAnimationDuration: 300 }, initialSettings);\n updateComputedSettings(undefined, mergedSettings, false);\n const settingsSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject(mergedSettings);\n const setSettings = (newSettings, options) => {\n if (Object.keys(newSettings).length === 0)\n return;\n const newMergedSettings = Object.assign(Object.assign({}, settingsSubject$.value), newSettings);\n updateComputedSettings(options.manifest, newMergedSettings, options.hasVerticalWritingSubject);\n settingsSubject$.next(newMergedSettings);\n };\n const recompute = (options) => {\n const newMergedSettings = Object.assign({}, settingsSubject$.value);\n updateComputedSettings(options.manifest, newMergedSettings, options.hasVerticalWritingSubject);\n settingsSubject$.next(newMergedSettings);\n };\n const destroy = () => {\n settingsSubject$.complete();\n };\n return {\n getSettings: () => settingsSubject$.value,\n setSettings,\n recompute,\n destroy,\n $: {\n settings$: settingsSubject$\n .asObservable()\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.distinctUntilChanged)(_utils_objects__WEBPACK_IMPORTED_MODULE_3__.isShallowEqual))\n }\n };\n};\nconst areAllItemsPrePaginated = (manifest) => !(manifest === null || manifest === void 0 ? void 0 : manifest.spineItems.some(item => item.renditionLayout === `reflowable`));\nconst updateComputedSettings = (newManifest, settings, hasVerticalWriting) => {\n settings.computedPageTurnDirection = settings.pageTurnDirection;\n settings.computedPageTurnAnimation = settings.pageTurnAnimation;\n settings.computedPageTurnMode = `controlled`;\n if ((newManifest === null || newManifest === void 0 ? void 0 : newManifest.renditionFlow) === `scrolled-continuous`) {\n settings.computedPageTurnMode = `scrollable`;\n settings.computedPageTurnDirection = `vertical`;\n }\n else if (newManifest && settings.pageTurnMode === `scrollable` && (newManifest.renditionLayout !== `pre-paginated` || !areAllItemsPrePaginated(newManifest))) {\n _report__WEBPACK_IMPORTED_MODULE_2__.Report.warn(`pageTurnMode ${settings.pageTurnMode} incompatible with current book, switching back to default`);\n settings.computedPageTurnAnimation = `none`;\n settings.computedPageTurnMode = `controlled`;\n }\n else if (settings.pageTurnMode === `scrollable`) {\n settings.computedPageTurnMode = `scrollable`;\n settings.computedPageTurnDirection = `vertical`;\n }\n if (hasVerticalWriting && settings.computedPageTurnAnimation === `slide`) {\n _report__WEBPACK_IMPORTED_MODULE_2__.Report.warn(`pageTurnAnimation ${settings.computedPageTurnAnimation} incompatible with current book, switching back to default`);\n settings.computedPageTurnAnimation = `none`;\n }\n if (settings.computedPageTurnMode === `scrollable`) {\n settings.computedPageTurnAnimationDuration = 0;\n settings.computedPageTurnAnimation = `none`;\n }\n else {\n settings.computedPageTurnAnimationDuration = settings.pageTurnAnimationDuration !== undefined\n ? settings.pageTurnAnimationDuration\n : 2000;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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WSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsS0FBSyxlQUFlLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFO1FBQzlKLGdEQUFXLENBQUMsZ0JBQWdCLFFBQVEsQ0FBQyxZQUFZLDREQUE0RCxDQUFDO1FBQzlHLFFBQVEsQ0FBQyx5QkFBeUIsR0FBRyxNQUFNO1FBQzNDLFFBQVEsQ0FBQyxvQkFBb0IsR0FBRyxZQUFZO0tBQzdDO1NBQU0sSUFBSSxRQUFRLENBQUMsWUFBWSxLQUFLLFlBQVksRUFBRTtRQUNqRCxRQUFRLENBQUMsb0JBQW9CLEdBQUcsWUFBWTtRQUM1QyxRQUFRLENBQUMseUJBQXlCLEdBQUcsVUFBVTtLQUNoRDtJQUdELElBQUksa0JBQWtCLElBQUksUUFBUSxDQUFDLHlCQUF5QixLQUFLLE9BQU8sRUFBRTtRQUN4RSxnREFBVyxDQUFDLHFCQUFxQixRQUFRLENBQUMseUJBQXlCLDREQUE0RCxDQUFDO1FBQ2hJLFFBQVEsQ0FBQyx5QkFBeUIsR0FBRyxNQUFNO0tBQzVDO0lBR0QsSUFBSSxRQUFRLENBQUMsb0JBQW9CLEtBQUssWUFBWSxFQUFFO1FBQ2xELFFBQVEsQ0FBQyxpQ0FBaUMsR0FBRyxDQUFDO1FBQzlDLFFBQVEsQ0FBQyx5QkFBeUIsR0FBRyxNQUFNO0tBQzVDO1NBQU07UUFDTCxRQUFRLENBQUMsaUNBQWlDLEdBQUcsUUFBUSxDQUFDLHlCQUF5QixLQUFLLFNBQVM7WUFDM0YsQ0FBQyxDQUFDLFFBQVEsQ0FBQyx5QkFBeUI7WUFDcEMsQ0FBQyxDQUFDLElBQUk7S0FDVDtBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvc2V0dGluZ3MudHM/OGI5OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tIFwicnhqc1wiXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiXG5pbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gXCIuL3R5cGVzXCJcbmltcG9ydCB7IFJlcG9ydCB9IGZyb20gXCIuL3JlcG9ydFwiXG5pbXBvcnQgeyBpc1NoYWxsb3dFcXVhbCB9IGZyb20gXCIuL3V0aWxzL29iamVjdHNcIlxuXG5leHBvcnQgdHlwZSBQdWJsaWNTZXR0aW5ncyA9IHtcbiAgZm9yY2VTaW5nbGVQYWdlTW9kZTogYm9vbGVhbixcbiAgcGFnZVR1cm5BbmltYXRpb246IGBub25lYCB8IGBmYWRlYCB8IGBzbGlkZWAsXG4gIHBhZ2VUdXJuQW5pbWF0aW9uRHVyYXRpb246IHVuZGVmaW5lZCB8IG51bWJlclxuICBwYWdlVHVybkRpcmVjdGlvbjogYHZlcnRpY2FsYCB8IGBob3Jpem9udGFsYCxcbiAgcGFnZVR1cm5Nb2RlOiBgY29udHJvbGxlZGAgfCBgc2Nyb2xsYWJsZWAsXG59XG5cbi8qKlxuICogUmVwcmVzZW50IHRoZSBzZXR0aW5ncyB0aGF0IGFyZSBkZXJpdmVkIGZyb20gdXNlciBzZXR0aW5ncy5cbiAqIEJlY2F1c2Ugc29tZSBvZiB0aGUgdXNlciBzZXR0aW5ncyBjYW4gc29tZXRpbWUgYmUgaW52YWxpZCBiYXNlZCBvbiBzb21lXG4gKiBjb250ZXh0IHdlIG5lZWQgdG8gdXNlIHRoZSBjb21wdXRlZCBvbmUgaW50ZXJuYWxseS5cbiAqIEZvciBleGFtcGxlIGlmIHRoZSB1c2VyIGRlY2lkZSB0byB1c2UgaG9yaXpvbnRhbCBwYWdlIHR1cm4gZGlyZWN0aW9uIHdpdGggc2Nyb2xsZWQgY29udGVudFxuICogd2Ugd2lsbCBvdmVyd3JpdGUgaXQgYW5kIGZvcmNlIGl0IHRvIHZlcnRpY2FsIChncmFudGVkIHdlIG9ubHkgc3VwcG9ydCB2ZXJ0aWNhbCkuXG4gKi9cbnR5cGUgSW5uZXJTZXR0aW5ncyA9IFB1YmxpY1NldHRpbmdzICYge1xuICBjb21wdXRlZFBhZ2VUdXJuTW9kZTogUHVibGljU2V0dGluZ3NbYHBhZ2VUdXJuTW9kZWBdLFxuICBjb21wdXRlZFBhZ2VUdXJuRGlyZWN0aW9uOiBQdWJsaWNTZXR0aW5nc1tgcGFnZVR1cm5EaXJlY3Rpb25gXSxcbiAgY29tcHV0ZWRQYWdlVHVybkFuaW1hdGlvbjogUHVibGljU2V0dGluZ3NbYHBhZ2VUdXJuQW5pbWF0aW9uYF0sXG4gIGNvbXB1dGVkUGFnZVR1cm5BbmltYXRpb25EdXJhdGlvbjogbnVtYmVyLFxuICBjb21wdXRlZFNuYXBBbmltYXRpb25EdXJhdGlvbjogbnVtYmVyLFxufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlU2V0dGluZ3MgPSAoaW5pdGlhbFNldHRpbmdzOiBQYXJ0aWFsPFB1YmxpY1NldHRpbmdzPikgPT4ge1xuICBjb25zdCBtZXJnZWRTZXR0aW5nczogSW5uZXJTZXR0aW5ncyA9IHtcbiAgICBmb3JjZVNpbmdsZVBhZ2VNb2RlOiBmYWxzZSxcbiAgICBwYWdlVHVybkFuaW1hdGlvbjogYG5vbmVgLFxuICAgIGNvbXB1dGVkUGFnZVR1cm5BbmltYXRpb246IGBub25lYCxcbiAgICBwYWdlVHVybkRpcmVjdGlvbjogYGhvcml6b250YWxgLFxuICAgIGNvbXB1dGVkUGFnZVR1cm5EaXJlY3Rpb246IGBob3Jpem9udGFsYCxcbiAgICBwYWdlVHVybkFuaW1hdGlvbkR1cmF0aW9uOiB1bmRlZmluZWQsXG4gICAgY29tcHV0ZWRQYWdlVHVybkFuaW1hdGlvbkR1cmF0aW9uOiAwLFxuICAgIHBhZ2VUdXJuTW9kZTogYGNvbnRyb2xsZWRgLFxuICAgIGNvbXB1dGVkUGFnZVR1cm5Nb2RlOiBgY29udHJvbGxlZGAsXG4gICAgY29tcHV0ZWRTbmFwQW5pbWF0aW9uRHVyYXRpb246IDMwMCxcbiAgICAuLi5pbml0aWFsU2V0dGluZ3NcbiAgfVxuXG4gIHVwZGF0ZUNvbXB1dGVkU2V0dGluZ3ModW5kZWZpbmVkLCBtZXJnZWRTZXR0aW5ncywgZmFsc2UpXG5cbiAgY29uc3Qgc2V0dGluZ3NTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3QobWVyZ2VkU2V0dGluZ3MpXG5cbiAgY29uc3Qgc2V0U2V0dGluZ3MgPSAobmV3U2V0dGluZ3M6IFBhcnRpYWw8UHVibGljU2V0dGluZ3M+LCBvcHRpb25zOiB7IGhhc1ZlcnRpY2FsV3JpdGluZ1N1YmplY3Q6IGJvb2xlYW4sIG1hbmlmZXN0OiBNYW5pZmVzdCB8IHVuZGVmaW5lZCB9KSA9PiB7XG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld1NldHRpbmdzKS5sZW5ndGggPT09IDApIHJldHVyblxuXG4gICAgY29uc3QgbmV3TWVyZ2VkU2V0dGluZ3MgPSB7IC4uLnNldHRpbmdzU3ViamVjdCQudmFsdWUsIC4uLm5ld1NldHRpbmdzIH1cblxuICAgIHVwZGF0ZUNvbXB1dGVkU2V0dGluZ3Mob3B0aW9ucy5tYW5pZmVzdCwgbmV3TWVyZ2VkU2V0dGluZ3MsIG9wdGlvbnMuaGFzVmVydGljYWxXcml0aW5nU3ViamVjdClcblxuICAgIHNldHRpbmdzU3ViamVjdCQubmV4dChuZXdNZXJnZWRTZXR0aW5ncylcbiAgfVxuXG4gIGNvbnN0IHJlY29tcHV0ZSA9IChvcHRpb25zOiB7IGhhc1ZlcnRpY2FsV3JpdGluZ1N1YmplY3Q6IGJvb2xlYW4sIG1hbmlmZXN0OiBNYW5pZmVzdCB8IHVuZGVmaW5lZCB9KSA9PiB7XG4gICAgY29uc3QgbmV3TWVyZ2VkU2V0dGluZ3MgPSB7IC4uLnNldHRpbmdzU3ViamVjdCQudmFsdWUgfVxuXG4gICAgdXBkYXRlQ29tcHV0ZWRTZXR0aW5ncyhvcHRpb25zLm1hbmlmZXN0LCBuZXdNZXJnZWRTZXR0aW5ncywgb3B0aW9ucy5oYXNWZXJ0aWNhbFdyaXRpbmdTdWJqZWN0KVxuXG4gICAgc2V0dGluZ3NTdWJqZWN0JC5uZXh0KG5ld01lcmdlZFNldHRpbmdzKVxuICB9XG5cbiAgY29uc3QgZGVzdHJveSA9ICgpID0+IHtcbiAgICBzZXR0aW5nc1N1YmplY3QkLmNvbXBsZXRlKClcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZ2V0U2V0dGluZ3M6ICgpID0+IHNldHRpbmdzU3ViamVjdCQudmFsdWUsXG4gICAgc2V0U2V0dGluZ3MsXG4gICAgcmVjb21wdXRlLFxuICAgIGRlc3Ryb3ksXG4gICAgJDoge1xuICAgICAgc2V0dGluZ3MkOiBzZXR0aW5nc1N1YmplY3QkXG4gICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NoYWxsb3dFcXVhbCkpXG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGFyZUFsbEl0ZW1zUHJlUGFnaW5hdGVkID0gKG1hbmlmZXN0OiBNYW5pZmVzdCB8IHVuZGVmaW5lZCkgPT4gIW1hbmlmZXN0Py5zcGluZUl0ZW1zLnNvbWUoaXRlbSA9PiBpdGVtLnJlbmRpdGlvbkxheW91dCA9PT0gYHJlZmxvd2FibGVgKVxuXG5jb25zdCB1cGRhdGVDb21wdXRlZFNldHRpbmdzID0gKG5ld01hbmlmZXN0OiBNYW5pZmVzdCB8IHVuZGVmaW5lZCwgc2V0dGluZ3M6IElubmVyU2V0dGluZ3MsIGhhc1ZlcnRpY2FsV3JpdGluZzogYm9vbGVhbikgPT4ge1xuICBzZXR0aW5ncy5jb21wdXRlZFBhZ2VUdXJuRGlyZWN0aW9uID0gc2V0dGluZ3MucGFnZVR1cm5EaXJlY3Rpb25cbiAgc2V0dGluZ3MuY29tcHV0ZWRQYWdlVHVybkFuaW1hdGlvbiA9IHNldHRpbmdzLnBhZ2VUdXJuQW5pbWF0aW9uXG4gIHNldHRpbmdzLmNvbXB1dGVkUGFnZVR1cm5Nb2RlID0gYGNvbnRyb2xsZWRgXG5cbiAgLy8gV2UgZm9yY2Ugc2Nyb2xsIG1vZGUgZm9yIHNvbWUgYm9va3NcbiAgaWYgKG5ld01hbmlmZXN0Py5yZW5kaXRpb25GbG93ID09PSBgc2Nyb2xsZWQtY29udGludW91c2ApIHtcbiAgICBzZXR0aW5ncy5jb21wdXRlZFBhZ2VUdXJuTW9kZSA9IGBzY3JvbGxhYmxlYFxuICAgIHNldHRpbmdzLmNvbXB1dGVkUGFnZVR1cm5EaXJlY3Rpb24gPSBgdmVydGljYWxgXG4gIH0gZWxzZSBpZiAobmV3TWFuaWZlc3QgJiYgc2V0dGluZ3MucGFnZVR1cm5Nb2RlID09PSBgc2Nyb2xsYWJsZWAgJiYgKG5ld01hbmlmZXN0LnJlbmRpdGlvbkxheW91dCAhPT0gYHByZS1wYWdpbmF0ZWRgIHx8ICFhcmVBbGxJdGVtc1ByZVBhZ2luYXRlZChuZXdNYW5pZmVzdCkpKSB7XG4gICAgUmVwb3J0Lndhcm4oYHBhZ2VUdXJuTW9kZSAke3NldHRpbmdzLnBhZ2VUdXJuTW9kZX0gaW5jb21wYXRpYmxlIHdpdGggY3VycmVudCBib29rLCBzd2l0Y2hpbmcgYmFjayB0byBkZWZhdWx0YClcbiAgICBzZXR0aW5ncy5jb21wdXRlZFBhZ2VUdXJuQW5pbWF0aW9uID0gYG5vbmVgXG4gICAgc2V0dGluZ3MuY29tcHV0ZWRQYWdlVHVybk1vZGUgPSBgY29udHJvbGxlZGBcbiAgfSBlbHNlIGlmIChzZXR0aW5ncy5wYWdlVHVybk1vZGUgPT09IGBzY3JvbGxhYmxlYCkge1xuICAgIHNldHRpbmdzLmNvbXB1dGVkUGFnZVR1cm5Nb2RlID0gYHNjcm9sbGFibGVgXG4gICAgc2V0dGluZ3MuY29tcHV0ZWRQYWdlVHVybkRpcmVjdGlvbiA9IGB2ZXJ0aWNhbGBcbiAgfVxuXG4gIC8vIHNvbWUgc2V0dGluZ3MgYXJlIG5vdCBhdmFpbGFibGUgZm9yIHZlcnRpY2FsIHdyaXRpbmdcbiAgaWYgKGhhc1ZlcnRpY2FsV3JpdGluZyAmJiBzZXR0aW5ncy5jb21wdXRlZFBhZ2VUdXJuQW5pbWF0aW9uID09PSBgc2xpZGVgKSB7XG4gICAgUmVwb3J0Lndhcm4oYHBhZ2VUdXJuQW5pbWF0aW9uICR7c2V0dGluZ3MuY29tcHV0ZWRQYWdlVHVybkFuaW1hdGlvbn0gaW5jb21wYXRpYmxlIHdpdGggY3VycmVudCBib29rLCBzd2l0Y2hpbmcgYmFjayB0byBkZWZhdWx0YClcbiAgICBzZXR0aW5ncy5jb21wdXRlZFBhZ2VUdXJuQW5pbWF0aW9uID0gYG5vbmVgXG4gIH1cblxuICAvLyBmb3Igbm93IHdlIG9ubHkgc3VwcG9ydCBhbmltYXRpb24gbm9uZSBmb3Igc2Nyb2xsYWJsZVxuICBpZiAoc2V0dGluZ3MuY29tcHV0ZWRQYWdlVHVybk1vZGUgPT09IGBzY3JvbGxhYmxlYCkge1xuICAgIHNldHRpbmdzLmNvbXB1dGVkUGFnZVR1cm5BbmltYXRpb25EdXJhdGlvbiA9IDBcbiAgICBzZXR0aW5ncy5jb21wdXRlZFBhZ2VUdXJuQW5pbWF0aW9uID0gYG5vbmVgXG4gIH0gZWxzZSB7XG4gICAgc2V0dGluZ3MuY29tcHV0ZWRQYWdlVHVybkFuaW1hdGlvbkR1cmF0aW9uID0gc2V0dGluZ3MucGFnZVR1cm5BbmltYXRpb25EdXJhdGlvbiAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHNldHRpbmdzLnBhZ2VUdXJuQW5pbWF0aW9uRHVyYXRpb25cbiAgICAgIDogMjAwMFxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/settings.ts\n");
|
|
310
|
+
|
|
311
|
+
/***/ }),
|
|
312
|
+
|
|
313
|
+
/***/ "./src/spine/cfiLocator.ts":
|
|
314
|
+
/*!*********************************!*\
|
|
315
|
+
!*** ./src/spine/cfiLocator.ts ***!
|
|
316
|
+
\*********************************/
|
|
317
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
318
|
+
|
|
319
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createCfiLocator\": () => (/* binding */ createCfiLocator)\n/* harmony export */ });\n/* harmony import */ var _cfi__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../cfi */ \"./src/cfi.ts\");\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../report */ \"./src/report.ts\");\n\n\nconst createCfiLocator = ({ spineItemManager, spineItemLocator }) => {\n const getItemAnchor = (spineItem) => `|[prose~anchor~${encodeURIComponent(spineItem.item.id)}]`;\n const getCfi = _report__WEBPACK_IMPORTED_MODULE_1__.Report.measurePerformance(`getCfi`, 10, (pageIndex, spineItem) => {\n var _a, _b, _c;\n const nodeOrRange = spineItemLocator.getFirstNodeOrRangeAtPage(pageIndex, spineItem);\n const doc = (_c = (_b = (_a = spineItem.spineItemFrame.getManipulableFrame()) === null || _a === void 0 ? void 0 : _a.frame) === null || _b === void 0 ? void 0 : _b.contentWindow) === null || _c === void 0 ? void 0 : _c.document;\n const itemAnchor = getItemAnchor(spineItem);\n const offset = `|[prose~offset~${(nodeOrRange === null || nodeOrRange === void 0 ? void 0 : nodeOrRange.offset) || 0}]`;\n if (nodeOrRange && doc) {\n const cfiString = _cfi__WEBPACK_IMPORTED_MODULE_0__.CFI.generate(nodeOrRange.node, 0, `${itemAnchor}${offset}`);\n return cfiString;\n }\n return getRootCfi(spineItem);\n });\n const getRootCfi = (spineItem) => {\n const itemAnchor = getItemAnchor(spineItem);\n return `epubcfi(/0${itemAnchor}) `;\n };\n const getSpineItemFromCfi = (cfi) => {\n const { itemId } = (0,_cfi__WEBPACK_IMPORTED_MODULE_0__.extractProseMetadataFromCfi)(cfi);\n if (itemId) {\n const { itemId } = (0,_cfi__WEBPACK_IMPORTED_MODULE_0__.extractProseMetadataFromCfi)(cfi);\n const spineItem = (itemId ? spineItemManager.get(itemId) : undefined) || spineItemManager.get(0);\n return spineItem;\n }\n return undefined;\n };\n const getCfiMetaInformation = (cfi) => {\n const spineItem = getSpineItemFromCfi(cfi);\n if (spineItem) {\n return {\n spineItemIndex: spineItemManager.getSpineItemIndex(spineItem)\n };\n }\n return undefined;\n };\n const resolveCfi = (cfiString) => {\n var _a, _b, _c;\n if (!cfiString)\n return undefined;\n const spineItem = getSpineItemFromCfi(cfiString);\n const spineItemIndex = spineItemManager.getSpineItemIndex(spineItem) || 0;\n if (!spineItem)\n return undefined;\n const { cleanedCfi, offset } = (0,_cfi__WEBPACK_IMPORTED_MODULE_0__.extractProseMetadataFromCfi)(cfiString);\n const cfi = new _cfi__WEBPACK_IMPORTED_MODULE_0__.CFI(cleanedCfi, {});\n const doc = (_c = (_b = (_a = spineItem.spineItemFrame.getManipulableFrame()) === null || _a === void 0 ? void 0 : _a.frame) === null || _b === void 0 ? void 0 : _b.contentWindow) === null || _c === void 0 ? void 0 : _c.document;\n console.warn(doc);\n if (doc) {\n try {\n const { node, offset: resolvedOffset } = cfi.resolve(doc, {});\n console.warn(`ASSDF`, node, resolvedOffset);\n return { node, offset: offset !== null && offset !== void 0 ? offset : resolvedOffset, spineItemIndex };\n }\n catch (e) {\n _report__WEBPACK_IMPORTED_MODULE_1__.Report.error(e);\n return {\n spineItemIndex\n };\n }\n }\n return {\n spineItemIndex\n };\n };\n const generateFromRange = ({ startNode, start, end, endNode }, item) => {\n const startCFI = _cfi__WEBPACK_IMPORTED_MODULE_0__.CFI.generate(startNode, start, `|[prose~anchor~${encodeURIComponent(item.id)}]`);\n const endCFI = _cfi__WEBPACK_IMPORTED_MODULE_0__.CFI.generate(endNode, end, `|[prose~anchor~${encodeURIComponent(item.id)}]`);\n return { start: startCFI, end: endCFI };\n };\n return {\n getSpineItemFromCfi,\n getCfiMetaInformation,\n getCfi,\n getRootCfi,\n resolveCfi,\n generateFromRange\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RCxPQUFPO1FBQ0wsbUJBQW1CO1FBQ25CLHFCQUFxQjtRQUNyQixNQUFNO1FBQ04sVUFBVTtRQUNWLFVBQVU7UUFDVixpQkFBaUI7S0FDbEI7QUFDSCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL3NwaW5lL2NmaUxvY2F0b3IudHM/MjhhYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDRkksIGV4dHJhY3RQcm9zZU1ldGFkYXRhRnJvbUNmaSB9IGZyb20gXCIuLi9jZmlcIlxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi9jb250ZXh0XCJcbmltcG9ydCB7IFNwaW5lSXRlbSB9IGZyb20gXCIuLi9zcGluZUl0ZW0vY3JlYXRlU3BpbmVJdGVtXCJcbmltcG9ydCB7IGNyZWF0ZUxvY2F0aW9uUmVzb2x2ZXIgfSBmcm9tIFwiLi4vc3BpbmVJdGVtL2xvY2F0aW9uUmVzb2x2ZXJcIlxuaW1wb3J0IHsgU3BpbmVJdGVtTWFuYWdlciB9IGZyb20gXCIuLi9zcGluZUl0ZW1NYW5hZ2VyXCJcbmltcG9ydCB7IFJlcG9ydCB9IGZyb20gXCIuLi9yZXBvcnRcIlxuaW1wb3J0IHsgTWFuaWZlc3QgfSBmcm9tIFwiLi4vdHlwZXNcIlxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ2ZpTG9jYXRvciA9ICh7IHNwaW5lSXRlbU1hbmFnZXIsIHNwaW5lSXRlbUxvY2F0b3IgfToge1xuICBzcGluZUl0ZW1NYW5hZ2VyOiBTcGluZUl0ZW1NYW5hZ2VyLFxuICBjb250ZXh0OiBDb250ZXh0LFxuICBzcGluZUl0ZW1Mb2NhdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVMb2NhdGlvblJlc29sdmVyPlxufSkgPT4ge1xuICBjb25zdCBnZXRJdGVtQW5jaG9yID0gKHNwaW5lSXRlbTogU3BpbmVJdGVtKSA9PiBgfFtwcm9zZX5hbmNob3J+JHtlbmNvZGVVUklDb21wb25lbnQoc3BpbmVJdGVtLml0ZW0uaWQpfV1gXG5cbiAgLyoqXG4gICAqIEhlYXZ5IGNmaSBob29rdXAuIFVzZSBpdCB0byBoYXZlIGEgcmVmaW5lZCwgcHJlY2lzZSBjZmkgYW5jaG9yLiBJdCByZXF1aXJlcyB0aGUgY29udGVudCB0byBiZSBsb2FkZWQgb3RoZXJ3aXNlXG4gICAqIGl0IHdpbGwgcmV0dXJuIGEgcm9vdCBjZmkuXG4gICAqXG4gICAqIEB0b2RvIG9wdGltaXplXG4gICAqL1xuICBjb25zdCBnZXRDZmkgPSBSZXBvcnQubWVhc3VyZVBlcmZvcm1hbmNlKGBnZXRDZmlgLCAxMCwgKHBhZ2VJbmRleDogbnVtYmVyLCBzcGluZUl0ZW06IFNwaW5lSXRlbSkgPT4ge1xuICAgIGNvbnN0IG5vZGVPclJhbmdlID0gc3BpbmVJdGVtTG9jYXRvci5nZXRGaXJzdE5vZGVPclJhbmdlQXRQYWdlKHBhZ2VJbmRleCwgc3BpbmVJdGVtKVxuICAgIGNvbnN0IGRvYyA9IHNwaW5lSXRlbS5zcGluZUl0ZW1GcmFtZS5nZXRNYW5pcHVsYWJsZUZyYW1lKCk/LmZyYW1lPy5jb250ZW50V2luZG93Py5kb2N1bWVudFxuXG4gICAgY29uc3QgaXRlbUFuY2hvciA9IGdldEl0ZW1BbmNob3Ioc3BpbmVJdGVtKVxuICAgIC8vIGJlY2F1c2UgdGhlIGN1cnJlbnQgY2ZpIGxpYnJhcnkgZG9lcyBub3Qgd29ya3Mgd2VsbCB3aXRoIG9mZnNldCB3ZSBhcmUganVzdCB1c2luZyBjdXN0b21cbiAgICAvLyBmb3JtYXQgYW5kIGRvIGl0IG1hbnVhbGx5IGFmdGVyIHJlc29sdmluZyB0aGUgbm9kZVxuICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZyZWFkLWluay9lcHViLWNmaS1yZXNvbHZlci9pc3N1ZXMvOFxuICAgIGNvbnN0IG9mZnNldCA9IGB8W3Byb3Nlfm9mZnNldH4ke25vZGVPclJhbmdlPy5vZmZzZXQgfHwgMH1dYFxuXG4gICAgaWYgKG5vZGVPclJhbmdlICYmIGRvYykge1xuICAgICAgY29uc3QgY2ZpU3RyaW5nID0gQ0ZJLmdlbmVyYXRlKG5vZGVPclJhbmdlLm5vZGUsIDAsIGAke2l0ZW1BbmNob3J9JHtvZmZzZXR9YClcblxuICAgICAgcmV0dXJuIGNmaVN0cmluZ1xuICAgIH1cblxuICAgIHJldHVybiBnZXRSb290Q2ZpKHNwaW5lSXRlbSlcbiAgfSlcblxuICAvKipcbiAgICogVmVyeSBsaWdodCBjZmkgbG9va3VwLiBVc2UgaXQgd2hlbiB5b3UgbmVlZCB0byBhbmNob3IgdXNlciB0byBjb3JyZWN0IGl0ZW1cbiAgICogYnV0IGRvIG5vdCB3YW50IHRvIGhhdmUgaGVhdnkgZG9tIGxvb2t1cC4gVGhpcyBpcyB1c2VmdWwgYXMgcHJlLWNmaSBiZWZvcmUgdGhlIGNvbnRlbnRcbiAgICogaXMgbG9hZGVkIGZvciBleGFtcGxlLlxuICAgKi9cbiAgY29uc3QgZ2V0Um9vdENmaSA9IChzcGluZUl0ZW06IFNwaW5lSXRlbSkgPT4ge1xuICAgIGNvbnN0IGl0ZW1BbmNob3IgPSBnZXRJdGVtQW5jaG9yKHNwaW5lSXRlbSlcblxuICAgIHJldHVybiBgZXB1YmNmaSgvMCR7aXRlbUFuY2hvcn0pIGBcbiAgfVxuXG4gIGNvbnN0IGdldFNwaW5lSXRlbUZyb21DZmkgPSAoY2ZpOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB7IGl0ZW1JZCB9ID0gZXh0cmFjdFByb3NlTWV0YWRhdGFGcm9tQ2ZpKGNmaSlcblxuICAgIGlmIChpdGVtSWQpIHtcbiAgICAgIGNvbnN0IHsgaXRlbUlkIH0gPSBleHRyYWN0UHJvc2VNZXRhZGF0YUZyb21DZmkoY2ZpKVxuICAgICAgY29uc3Qgc3BpbmVJdGVtID0gKGl0ZW1JZCA/IHNwaW5lSXRlbU1hbmFnZXIuZ2V0KGl0ZW1JZCkgOiB1bmRlZmluZWQpIHx8IHNwaW5lSXRlbU1hbmFnZXIuZ2V0KDApXG5cbiAgICAgIHJldHVybiBzcGluZUl0ZW1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBjb25zdCBnZXRDZmlNZXRhSW5mb3JtYXRpb24gPSAoY2ZpOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBzcGluZUl0ZW0gPSBnZXRTcGluZUl0ZW1Gcm9tQ2ZpKGNmaSlcblxuICAgIGlmIChzcGluZUl0ZW0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNwaW5lSXRlbUluZGV4OiBzcGluZUl0ZW1NYW5hZ2VyLmdldFNwaW5lSXRlbUluZGV4KHNwaW5lSXRlbSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbm9kZSBhbmQgb2Zmc2V0IGZvciB0aGUgZ2l2ZW4gY2ZpLlxuICAgKi9cbiAgY29uc3QgcmVzb2x2ZUNmaSA9IChjZmlTdHJpbmc6IHN0cmluZykgPT4ge1xuICAgIGlmICghY2ZpU3RyaW5nKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb25zdCBzcGluZUl0ZW0gPSBnZXRTcGluZUl0ZW1Gcm9tQ2ZpKGNmaVN0cmluZylcbiAgICBjb25zdCBzcGluZUl0ZW1JbmRleCA9IHNwaW5lSXRlbU1hbmFnZXIuZ2V0U3BpbmVJdGVtSW5kZXgoc3BpbmVJdGVtKSB8fCAwXG5cbiAgICBpZiAoIXNwaW5lSXRlbSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgeyBjbGVhbmVkQ2ZpLCBvZmZzZXQgfSA9IGV4dHJhY3RQcm9zZU1ldGFkYXRhRnJvbUNmaShjZmlTdHJpbmcpXG4gICAgY29uc3QgY2ZpID0gbmV3IENGSShjbGVhbmVkQ2ZpLCB7fSlcblxuICAgIGNvbnN0IGRvYyA9IHNwaW5lSXRlbS5zcGluZUl0ZW1GcmFtZS5nZXRNYW5pcHVsYWJsZUZyYW1lKCk/LmZyYW1lPy5jb250ZW50V2luZG93Py5kb2N1bWVudFxuXG4gICAgY29uc29sZS53YXJuKGRvYylcblxuICAgIGlmIChkb2MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgbm9kZSwgb2Zmc2V0OiByZXNvbHZlZE9mZnNldCB9ID0gY2ZpLnJlc29sdmUoZG9jLCB7fSlcblxuICAgICAgICBjb25zb2xlLndhcm4oYEFTU0RGYCwgbm9kZSwgcmVzb2x2ZWRPZmZzZXQpXG4gICAgICAgIHJldHVybiB7IG5vZGUsIG9mZnNldDogb2Zmc2V0ID8/IHJlc29sdmVkT2Zmc2V0LCBzcGluZUl0ZW1JbmRleCB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIFJlcG9ydC5lcnJvcihlKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3BpbmVJdGVtSW5kZXhcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzcGluZUl0ZW1JbmRleFxuICAgIH1cbiAgfVxuXG4gIC8vIGNvbnN0IHJlc29sdmVDZmkgPSAoY2ZpOiBzdHJpbmcpID0+IHtcbiAgLy8gICBjb25zdCB7IHNwaW5lSXRlbUluZGV4ID0gLTEgfSA9IGdldENmaU1ldGFJbmZvcm1hdGlvbihjZmkpIHx8IHt9XG4gIC8vICAgY29uc3Qgc3BpbmVJdGVtID0gc3BpbmVJdGVtTWFuYWdlci5nZXQoc3BpbmVJdGVtSW5kZXgpXG5cbiAgLy8gICBpZiAoc3BpbmVJdGVtKSB7XG4gIC8vICAgICBsZXQgcG9zaXRpb246IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICAvLyAgICAgY29uc3QgeyBub2RlLCBvZmZzZXQgPSAwIH0gPSBzcGluZUl0ZW1Mb2NhdG9yLnJlc29sdmVDZmkoY2ZpLCBzcGluZUl0ZW0pIHx8IHt9XG4gIC8vICAgICBpZiAobm9kZSkge1xuICAvLyAgICAgICBwb3NpdGlvbiA9IHNwaW5lSXRlbUxvY2F0b3IuZ2V0U3BpbmVJdGVtUG9zaXRpb25Gcm9tTm9kZShub2RlLCBvZmZzZXQsIHNwaW5lSXRlbSlcbiAgLy8gICAgIH1cbiAgLy8gICAgIGNvbnN0IHBhZ2VJbmRleCA9IHBvc2l0aW9uID8gc3BpbmVJdGVtTG9jYXRvci5nZXRTcGluZUl0ZW1QYWdlSW5kZXhGcm9tUG9zaXRpb24ocG9zaXRpb24sIHNwaW5lSXRlbSkgOiB1bmRlZmluZWRcblxuICAvLyAgICAgcmV0dXJuIHtcbiAgLy8gICAgICAgc3BpbmVJdGVtSW5kZXgsXG4gIC8vICAgICAgIHBhZ2VJbmRleCxcbiAgLy8gICAgICAgbm9kZSxcbiAgLy8gICAgICAgb2Zmc2V0LFxuICAvLyAgICAgfVxuICAvLyAgIH1cblxuICAvLyAgIHJldHVybiB1bmRlZmluZWRcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBAdG9kbyB0aGUgcGFja2FnZSBkb2VzIG5vdCBzdXBwb3J0IGNyZWF0aW5nIGZvciByYW5nZSBhdCB0aGUgbW9tZW50IEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZyZWFkLWluay9lcHViLWNmaS1yZXNvbHZlci9pc3N1ZXMvM1xuICAgKiBzbyB3ZSB1c2UgdHdvIGNmaSBmb3Igc3RhcnQgYW5kIGVuZC5cbiAgICovXG4gIGNvbnN0IGdlbmVyYXRlRnJvbVJhbmdlID0gKHsgc3RhcnROb2RlLCBzdGFydCwgZW5kLCBlbmROb2RlIH06IHsgc3RhcnROb2RlOiBOb2RlLCBzdGFydDogbnVtYmVyLCBlbmROb2RlOiBOb2RlLCBlbmQ6IG51bWJlciB9LCBpdGVtOiBNYW5pZmVzdFtgc3BpbmVJdGVtc2BdW251bWJlcl0pID0+IHtcbiAgICBjb25zdCBzdGFydENGSSA9IENGSS5nZW5lcmF0ZShzdGFydE5vZGUsIHN0YXJ0LCBgfFtwcm9zZX5hbmNob3J+JHtlbmNvZGVVUklDb21wb25lbnQoaXRlbS5pZCl9XWApXG4gICAgY29uc3QgZW5kQ0ZJID0gQ0ZJLmdlbmVyYXRlKGVuZE5vZGUsIGVuZCwgYHxbcHJvc2V+YW5jaG9yfiR7ZW5jb2RlVVJJQ29tcG9uZW50KGl0ZW0uaWQpfV1gKVxuXG4gICAgcmV0dXJuIHsgc3RhcnQ6IHN0YXJ0Q0ZJLCBlbmQ6IGVuZENGSSB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGdldFNwaW5lSXRlbUZyb21DZmksXG4gICAgZ2V0Q2ZpTWV0YUluZm9ybWF0aW9uLFxuICAgIGdldENmaSxcbiAgICBnZXRSb290Q2ZpLFxuICAgIHJlc29sdmVDZmksXG4gICAgZ2VuZXJhdGVGcm9tUmFuZ2VcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/spine/cfiLocator.ts\n");
|
|
320
|
+
|
|
321
|
+
/***/ }),
|
|
322
|
+
|
|
323
|
+
/***/ "./src/spine/createSpine.ts":
|
|
324
|
+
/*!**********************************!*\
|
|
325
|
+
!*** ./src/spine/createSpine.ts ***!
|
|
326
|
+
\**********************************/
|
|
327
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
328
|
+
|
|
329
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createSpine\": () => (/* binding */ createSpine)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../report */ \"./src/report.ts\");\n/* harmony import */ var _viewportNavigator_viewportNavigator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./viewportNavigator/viewportNavigator */ \"./src/spine/viewportNavigator/viewportNavigator.ts\");\n/* harmony import */ var _spineItem_createSpineItem__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../spineItem/createSpineItem */ \"./src/spineItem/createSpineItem.ts\");\n/* harmony import */ var _spineItem_locationResolver__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../spineItem/locationResolver */ \"./src/spineItem/locationResolver.ts\");\n/* harmony import */ var _locationResolver__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./locationResolver */ \"./src/spine/locationResolver.ts\");\n/* harmony import */ var _cfiLocator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./cfiLocator */ \"./src/spine/cfiLocator.ts\");\n/* harmony import */ var _eventsHelper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./eventsHelper */ \"./src/spine/eventsHelper.ts\");\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../selection */ \"./src/selection.ts\");\n/* harmony import */ var _utils_objects__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/objects */ \"./src/utils/objects.ts\");\n/* harmony import */ var _utils_rxjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/rxjs */ \"./src/utils/rxjs.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\n\n\n\n\nconst NAMESPACE = `spine`;\nconst createSpine = ({ parentElement, context, pagination, iframeEventBridgeElement, spineItemManager, hooks$ }) => {\n const layoutSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const subject = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const doc = parentElement.ownerDocument;\n const containerElement = createContainerElement(doc, hooks$);\n parentElement.appendChild(containerElement);\n const spineItemLocator = (0,_spineItem_locationResolver__WEBPACK_IMPORTED_MODULE_5__.createLocationResolver)({ context });\n const locator = (0,_locationResolver__WEBPACK_IMPORTED_MODULE_6__.createLocationResolver)({ context, spineItemManager, spineItemLocator });\n const cfiLocator = (0,_cfiLocator__WEBPACK_IMPORTED_MODULE_7__.createCfiLocator)({ spineItemManager, context, spineItemLocator });\n const viewportNavigator = (0,_viewportNavigator_viewportNavigator__WEBPACK_IMPORTED_MODULE_3__.createViewportNavigator)({ context, pagination, spineItemManager, element: containerElement, cfiLocator, locator, hooks$ });\n const eventsHelper = (0,_eventsHelper__WEBPACK_IMPORTED_MODULE_8__.createEventsHelper)({ context, spineItemManager, iframeEventBridgeElement, locator });\n let selectionSubscription;\n let hookDestroyItemOnCreateFunctions = [];\n const reload = () => {\n var _a;\n (_a = context.getManifest()) === null || _a === void 0 ? void 0 : _a.spineItems.map((resource) => __awaiter(void 0, void 0, void 0, function* () {\n const spineItem = (0,_spineItem_createSpineItem__WEBPACK_IMPORTED_MODULE_4__.createSpineItem)({\n item: resource,\n containerElement: containerElement,\n iframeEventBridgeElement,\n context,\n hooks$,\n viewportState$: viewportNavigator.$.state$\n });\n spineItemManager.add(spineItem);\n }));\n hooks$.getValue().forEach(hook => {\n if (hook.name === `item.onCreated`) {\n spineItemManager.getAll().forEach(item => {\n const destroyFnOrStream = hook.fn({\n container: item.element,\n loadingElement: item.loadingElement,\n item: item.item\n });\n if (destroyFnOrStream) {\n if (`subscribe` in destroyFnOrStream) {\n hookDestroyItemOnCreateFunctions.push(destroyFnOrStream.subscribe());\n }\n else {\n hookDestroyItemOnCreateFunctions.push(destroyFnOrStream);\n }\n }\n });\n }\n });\n };\n const manipulateSpineItems = (cb) => {\n let shouldLayout = false;\n spineItemManager.getAll().forEach((item, index) => {\n shouldLayout = item.manipulateSpineItem((opts) => cb(Object.assign({ index }, opts))) || shouldLayout;\n });\n if (shouldLayout) {\n spineItemManager.layout();\n }\n };\n context.$.load$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)(reload), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(context.$.destroy$))\n .subscribe();\n const layoutOnSettingChanges$ = context.$.settings$\n .pipe((0,_utils_rxjs__WEBPACK_IMPORTED_MODULE_11__.mapKeysTo)([`computedPageTurnDirection`, `computedPageTurnMode`]), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.distinctUntilChanged)(_utils_objects__WEBPACK_IMPORTED_MODULE_10__.isShallowEqual), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.skip)(1));\n const waitForViewportFree$ = viewportNavigator.$.state$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)(v => v === `free`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.take)(1));\n const layout$ = (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.merge)(layoutSubject$, layoutOnSettingChanges$)\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)(() => {\n if (context.getSettings().computedPageTurnMode === `scrollable`) {\n containerElement.style.overflow = `hidden`;\n containerElement.style.overflowY = `scroll`;\n }\n else {\n containerElement.style.removeProperty(`overflow`);\n containerElement.style.removeProperty(`overflowY`);\n }\n viewportNavigator.layout();\n spineItemManager.layout();\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.share)());\n layout$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(context.$.destroy$))\n .subscribe();\n const adjustPagination$ = (position) => {\n return waitForViewportFree$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)(_report__WEBPACK_IMPORTED_MODULE_2__.Report.measurePerformance(`${NAMESPACE} adjustPagination`, 1, () => {\n var _a, _b;\n const spineItemsFromPosition = locator.getSpineItemsFromReadingOrderPosition(position);\n const beginSpineItem = spineItemsFromPosition ? spineItemManager.get(spineItemsFromPosition.begin) : undefined;\n const endSpineItem = spineItemsFromPosition ? spineItemManager.get(spineItemsFromPosition.end) : undefined;\n const beginLastCfi = pagination.getInfo().beginCfi;\n const endLastCfi = pagination.getInfo().endCfi;\n const shouldUpdateBeginCfi = pagination.getInfo().beginSpineItemIndex !== (spineItemsFromPosition === null || spineItemsFromPosition === void 0 ? void 0 : spineItemsFromPosition.begin) ||\n beginLastCfi === undefined ||\n (beginLastCfi === null || beginLastCfi === void 0 ? void 0 : beginLastCfi.startsWith(`epubcfi(/0`));\n const shouldUpdateEndCfi = pagination.getInfo().endSpineItemIndex !== (spineItemsFromPosition === null || spineItemsFromPosition === void 0 ? void 0 : spineItemsFromPosition.end) ||\n endLastCfi === undefined ||\n (endLastCfi === null || endLastCfi === void 0 ? void 0 : endLastCfi.startsWith(`epubcfi(/0`));\n if (beginSpineItem && endSpineItem && spineItemsFromPosition) {\n const beginPosition = locator.getSpineItemPositionFromSpinePosition(spineItemsFromPosition.beginPosition, beginSpineItem);\n const beginPageIndex = spineItemLocator.getSpineItemPageIndexFromPosition(beginPosition, beginSpineItem);\n const endPosition = locator.getSpineItemPositionFromSpinePosition(spineItemsFromPosition.endPosition, endSpineItem);\n const endPageIndex = spineItemLocator.getSpineItemPageIndexFromPosition(endPosition, endSpineItem);\n pagination.updateBeginAndEnd({\n spineItem: beginSpineItem,\n spineItemIndex: (_a = spineItemManager.getSpineItemIndex(beginSpineItem)) !== null && _a !== void 0 ? _a : 0,\n pageIndex: spineItemLocator.getSpineItemPageIndexFromPosition(beginPosition, beginSpineItem),\n cfi: shouldUpdateBeginCfi ? cfiLocator.getCfi(beginPageIndex, beginSpineItem) : beginLastCfi,\n options: {\n isAtEndOfChapter: false\n }\n }, {\n spineItem: endSpineItem,\n spineItemIndex: (_b = spineItemManager.getSpineItemIndex(endSpineItem)) !== null && _b !== void 0 ? _b : 0,\n pageIndex: spineItemLocator.getSpineItemPageIndexFromPosition(endPosition, endSpineItem),\n cfi: shouldUpdateEndCfi ? cfiLocator.getCfi(endPageIndex, endSpineItem) : endLastCfi,\n options: {\n isAtEndOfChapter: false\n }\n });\n }\n _report__WEBPACK_IMPORTED_MODULE_2__.Report.log(NAMESPACE, `adjustPagination$`);\n }, { disable: true })));\n };\n const adjustNavigationAfterLayout$ = spineItemManager.$.layout$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(() => waitForViewportFree$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(() => {\n const focusedSpineItem = spineItemManager.getFocusedSpineItem();\n if (!focusedSpineItem)\n return rxjs__WEBPACK_IMPORTED_MODULE_0__.EMPTY;\n return viewportNavigator.adjustNavigation(focusedSpineItem);\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(viewportNavigator.$.navigation$))), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.share)());\n adjustNavigationAfterLayout$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(({ adjustedSpinePosition }) => {\n return adjustPagination$(adjustedSpinePosition)\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(viewportNavigator.$.navigation$));\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(context.$.destroy$))\n .subscribe();\n (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.merge)(spineItemManager.$.focus$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)((event) => {\n const spineItem = event.data;\n const fingerTracker$ = spineItem.fingerTracker.$;\n const selectionTracker$ = spineItem.selectionTracker.$;\n selectionSubscription === null || selectionSubscription === void 0 ? void 0 : selectionSubscription.unsubscribe();\n selectionSubscription = (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.merge)(selectionTracker$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)(event => event.event === `selectionchange`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)(event => {\n subject.next({ type: `onSelectionChange`, data: event.data ? (0,_selection__WEBPACK_IMPORTED_MODULE_9__.createSelection)(event.data, spineItem.item) : null });\n })), selectionTracker$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)(({ event }) => event === `selectstart`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(_ => fingerTracker$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)(({ event }) => event === `fingermove`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.debounce)(() => (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.interval)(1000)), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(fingerTracker$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)(({ event }) => event === `fingerout`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)(() => {\n }))), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)(({ data }) => {\n if (data) {\n }\n })))))\n .subscribe();\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.catchError)(e => {\n _report__WEBPACK_IMPORTED_MODULE_2__.Report.error(e);\n return rxjs__WEBPACK_IMPORTED_MODULE_0__.EMPTY;\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(context.$.destroy$)))\n .subscribe();\n const itemUpdateOnNavigation$ = viewportNavigator.$.navigation$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)((data) => {\n var _a, _b;\n const time = _report__WEBPACK_IMPORTED_MODULE_2__.Report.time(`${NAMESPACE} navigation`, 1);\n const currentSpineItem = spineItemManager.getFocusedSpineItem();\n const spineItemsFromPosition = locator.getSpineItemsFromReadingOrderPosition(data.position);\n let beginSpineItem = spineItemsFromPosition ? spineItemManager.get(spineItemsFromPosition.begin) : undefined;\n let endSpineItem = spineItemsFromPosition ? spineItemManager.get(spineItemsFromPosition.end) : undefined;\n beginSpineItem = beginSpineItem || currentSpineItem;\n endSpineItem = endSpineItem || currentSpineItem;\n const spineItemToFocus = data.position.spineItem || beginSpineItem;\n if (spineItemToFocus && spineItemToFocus !== currentSpineItem) {\n spineItemManager.focus(spineItemToFocus);\n }\n else if (!spineItemToFocus) {\n spineItemManager.focus(0);\n }\n if (spineItemToFocus && beginSpineItem && endSpineItem && spineItemsFromPosition) {\n const lastExpectedNavigation = viewportNavigator.getLastUserExpectedNavigation();\n const beginItemIndex = (_a = spineItemManager.getSpineItemIndex(beginSpineItem)) !== null && _a !== void 0 ? _a : 0;\n const beginPosition = locator.getSpineItemPositionFromSpinePosition(spineItemsFromPosition.beginPosition, beginSpineItem);\n const beginPageIndex = spineItemLocator.getSpineItemPageIndexFromPosition(beginPosition, beginSpineItem);\n const endPosition = locator.getSpineItemPositionFromSpinePosition(spineItemsFromPosition.endPosition, endSpineItem);\n const endPageIndex = spineItemLocator.getSpineItemPageIndexFromPosition(endPosition, endSpineItem);\n const endItemIndex = (_b = spineItemManager.getSpineItemIndex(endSpineItem)) !== null && _b !== void 0 ? _b : 0;\n console.warn(`HERE`, pagination.getInfo(), beginItemIndex);\n pagination.updateBeginAndEnd({\n spineItem: beginSpineItem,\n spineItemIndex: beginItemIndex,\n pageIndex: beginPageIndex,\n cfi: (lastExpectedNavigation === null || lastExpectedNavigation === void 0 ? void 0 : lastExpectedNavigation.type) === `navigate-from-cfi` && spineItemToFocus === beginSpineItem\n ? lastExpectedNavigation.data\n : data.triggeredBy === `adjust` && context.getSettings().computedPageTurnMode === `controlled`\n ? pagination.getInfo().beginCfi\n : beginItemIndex !== pagination.getInfo().beginSpineItemIndex\n ? cfiLocator.getRootCfi(beginSpineItem)\n : cfiLocator.getRootCfi(beginSpineItem),\n options: {\n isAtEndOfChapter: false\n }\n }, {\n spineItem: endSpineItem,\n spineItemIndex: endItemIndex,\n pageIndex: endPageIndex,\n cfi: (lastExpectedNavigation === null || lastExpectedNavigation === void 0 ? void 0 : lastExpectedNavigation.type) === `navigate-from-cfi` && spineItemToFocus === endSpineItem\n ? lastExpectedNavigation.data\n : data.triggeredBy === `adjust` && context.getSettings().computedPageTurnMode === `controlled`\n ? pagination.getInfo().endCfi\n : endItemIndex !== pagination.getInfo().endSpineItemIndex\n ? cfiLocator.getRootCfi(endSpineItem)\n : cfiLocator.getRootCfi(endSpineItem),\n options: {\n isAtEndOfChapter: false\n }\n });\n _report__WEBPACK_IMPORTED_MODULE_2__.Report.log(NAMESPACE, `itemUpdateOnNavigation$`, { spineItemHasChanged: spineItemToFocus !== currentSpineItem, item: spineItemToFocus, spineItemToFocus, index: spineItemManager.getSpineItemIndex(spineItemToFocus), offset: data, endSpineItem, beginSpineItem, lastExpectedNavigation, spineItemsFromPosition });\n }\n time();\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.share)(), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(context.$.destroy$));\n itemUpdateOnNavigation$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)((data) => {\n return adjustPagination$(data.position)\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(spineItemManager.$.layout$));\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(context.$.destroy$))\n .subscribe();\n (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.merge)(itemUpdateOnNavigation$, adjustNavigationAfterLayout$)\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(() => {\n return waitForViewportFree$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.map)(() => {\n const focusedSpineItemIndex = spineItemManager.getFocusedSpineItemIndex();\n _report__WEBPACK_IMPORTED_MODULE_2__.Report.log(NAMESPACE, `update contents`, { focusedSpineItemIndex });\n if (focusedSpineItemIndex === undefined)\n return;\n const { begin = focusedSpineItemIndex, end = focusedSpineItemIndex } = locator.getSpineItemsFromReadingOrderPosition(viewportNavigator.getCurrentNavigationPosition()) || {};\n if (begin !== focusedSpineItemIndex && end !== focusedSpineItemIndex) {\n _report__WEBPACK_IMPORTED_MODULE_2__.Report.warn(`Current viewport is not in sync with focus item, load from focus item rather than viewport`);\n spineItemManager.loadContents([focusedSpineItemIndex, focusedSpineItemIndex]);\n }\n else {\n spineItemManager.loadContents([begin, end]);\n }\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.take)(1));\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(context.$.destroy$)).subscribe();\n return {\n viewportNavigator,\n element: containerElement,\n locator,\n spineItemLocator,\n cfiLocator,\n normalizeEventForViewport: eventsHelper.normalizeEventForViewport,\n manipulateSpineItems,\n layout: () => layoutSubject$.next(),\n destroy: () => {\n viewportNavigator.destroy();\n hookDestroyItemOnCreateFunctions.forEach((fn) => {\n if (`unsubscribe` in fn) {\n fn.unsubscribe();\n }\n else {\n fn();\n }\n });\n hookDestroyItemOnCreateFunctions = [];\n spineItemManager.destroy();\n selectionSubscription === null || selectionSubscription === void 0 ? void 0 : selectionSubscription.unsubscribe();\n containerElement.remove();\n },\n isSelecting: () => { var _a; return (_a = spineItemManager.getFocusedSpineItem()) === null || _a === void 0 ? void 0 : _a.selectionTracker.isSelecting(); },\n getSelection: () => { var _a; return (_a = spineItemManager.getFocusedSpineItem()) === null || _a === void 0 ? void 0 : _a.selectionTracker.getSelection(); },\n $: {\n $: subject.asObservable(),\n viewportState$: viewportNavigator.$.state$,\n layout$: spineItemManager.$.layout$\n }\n };\n};\nconst createContainerElement = (doc, hooks$) => {\n const element = doc.createElement(`div`);\n element.style.cssText = `\n height: 100%;\n position: relative;\n `;\n element.style.transformOrigin = `0 0`;\n return hooks$.getValue().reduce((element, hook) => {\n if (hook.name === `spine.onBeforeContainerCreated`) {\n return hook.fn(element);\n }\n return element;\n }, element);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SCxDQUFDO0FBRUQsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEdBQWEsRUFBRSxNQUErQixFQUFFLEVBQUU7SUFDaEYsTUFBTSxPQUFPLEdBQWdCLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ3JELE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHOzs7R0FHdkI7SUFVRCxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxLQUFLO0lBRXJDLE9BQU8sTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUNoRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssZ0NBQWdDLEVBQUU7WUFDbEQsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQztTQUN4QjtRQUVELE9BQU8sT0FBTztJQUNoQixDQUFDLEVBQUUsT0FBTyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0Bwcm9zZS1yZWFkZXIvY29yZS8uL3NyYy9zcGluZS9jcmVhdGVTcGluZS50cz8yN2FkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgRU1QVFksIGludGVydmFsLCBtZXJnZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIlxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2UsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc2hhcmUsIHNraXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIlxuaW1wb3J0IHsgUmVwb3J0IH0gZnJvbSBcIi4uL3JlcG9ydFwiXG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4uL2NvbnRleHRcIlxuaW1wb3J0IHsgY3JlYXRlVmlld3BvcnROYXZpZ2F0b3IgfSBmcm9tIFwiLi92aWV3cG9ydE5hdmlnYXRvci92aWV3cG9ydE5hdmlnYXRvclwiXG5pbXBvcnQgeyBQYWdpbmF0aW9uIH0gZnJvbSBcIi4uL3BhZ2luYXRpb25cIlxuaW1wb3J0IHsgY3JlYXRlU3BpbmVJdGVtIH0gZnJvbSBcIi4uL3NwaW5lSXRlbS9jcmVhdGVTcGluZUl0ZW1cIlxuaW1wb3J0IHsgY3JlYXRlTG9jYXRpb25SZXNvbHZlciBhcyBjcmVhdGVTcGluZUl0ZW1Mb2NhdG9yIH0gZnJvbSBcIi4uL3NwaW5lSXRlbS9sb2NhdGlvblJlc29sdmVyXCJcbmltcG9ydCB7IFNwaW5lSXRlbU1hbmFnZXIgfSBmcm9tIFwiLi4vc3BpbmVJdGVtTWFuYWdlclwiXG5pbXBvcnQgeyBjcmVhdGVMb2NhdGlvblJlc29sdmVyIH0gZnJvbSBcIi4vbG9jYXRpb25SZXNvbHZlclwiXG5pbXBvcnQgeyBjcmVhdGVDZmlMb2NhdG9yIH0gZnJvbSBcIi4vY2ZpTG9jYXRvclwiXG5pbXBvcnQgeyBjcmVhdGVFdmVudHNIZWxwZXIgfSBmcm9tIFwiLi9ldmVudHNIZWxwZXJcIlxuaW1wb3J0IHsgY3JlYXRlU2VsZWN0aW9uIH0gZnJvbSBcIi4uL3NlbGVjdGlvblwiXG5pbXBvcnQgeyBWaWV3cG9ydE5hdmlnYXRpb25FbnRyeSB9IGZyb20gXCIuL25hdmlnYXRpb25SZXNvbHZlclwiXG5pbXBvcnQgeyBpc1NoYWxsb3dFcXVhbCB9IGZyb20gXCIuLi91dGlscy9vYmplY3RzXCJcbmltcG9ydCB7IEhvb2sgfSBmcm9tIFwiLi4vdHlwZXMvSG9va1wiXG5pbXBvcnQgeyBtYXBLZXlzVG8gfSBmcm9tIFwiLi4vdXRpbHMvcnhqc1wiXG5cbmNvbnN0IE5BTUVTUEFDRSA9IGBzcGluZWBcblxudHlwZSBTcGluZUl0ZW0gPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVTcGluZUl0ZW0+XG50eXBlIFJlcXVpcmVMYXlvdXQgPSBib29sZWFuXG50eXBlIE1hbmlwdWxhYmxlU3BpbmVJdGVtQ2FsbGJhY2sgPSBQYXJhbWV0ZXJzPFNwaW5lSXRlbVtgbWFuaXB1bGF0ZVNwaW5lSXRlbWBdPlswXVxudHlwZSBNYW5pcHVsYWJsZVNwaW5lSXRlbUNhbGxiYWNrUGF5bG9hZCA9IFBhcmFtZXRlcnM8TWFuaXB1bGFibGVTcGluZUl0ZW1DYWxsYmFjaz5bMF1cblxudHlwZSBFdmVudCA9IHsgdHlwZTogYG9uU2VsZWN0aW9uQ2hhbmdlYCwgZGF0YTogUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlU2VsZWN0aW9uPiB8IG51bGwgfVxuXG5leHBvcnQgY29uc3QgY3JlYXRlU3BpbmUgPSAoeyBwYXJlbnRFbGVtZW50LCBjb250ZXh0LCBwYWdpbmF0aW9uLCBpZnJhbWVFdmVudEJyaWRnZUVsZW1lbnQsIHNwaW5lSXRlbU1hbmFnZXIsIGhvb2tzJCB9OiB7XG4gIHBhcmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBpZnJhbWVFdmVudEJyaWRnZUVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBjb250ZXh0OiBDb250ZXh0LFxuICBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uLFxuICBzcGluZUl0ZW1NYW5hZ2VyOiBTcGluZUl0ZW1NYW5hZ2VyLFxuICBob29rcyQ6IEJlaGF2aW9yU3ViamVjdDxIb29rW10+XG59KSA9PiB7XG4gIGNvbnN0IGxheW91dFN1YmplY3QkID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8RXZlbnQ+KClcbiAgY29uc3QgZG9jID0gcGFyZW50RWxlbWVudC5vd25lckRvY3VtZW50XG4gIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQgPSBjcmVhdGVDb250YWluZXJFbGVtZW50KGRvYywgaG9va3MkKVxuICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNvbnRhaW5lckVsZW1lbnQpXG4gIGNvbnN0IHNwaW5lSXRlbUxvY2F0b3IgPSBjcmVhdGVTcGluZUl0ZW1Mb2NhdG9yKHsgY29udGV4dCB9KVxuICBjb25zdCBsb2NhdG9yID0gY3JlYXRlTG9jYXRpb25SZXNvbHZlcih7IGNvbnRleHQsIHNwaW5lSXRlbU1hbmFnZXIsIHNwaW5lSXRlbUxvY2F0b3IgfSlcbiAgY29uc3QgY2ZpTG9jYXRvciA9IGNyZWF0ZUNmaUxvY2F0b3IoeyBzcGluZUl0ZW1NYW5hZ2VyLCBjb250ZXh0LCBzcGluZUl0ZW1Mb2NhdG9yIH0pXG4gIGNvbnN0IHZpZXdwb3J0TmF2aWdhdG9yID0gY3JlYXRlVmlld3BvcnROYXZpZ2F0b3IoeyBjb250ZXh0LCBwYWdpbmF0aW9uLCBzcGluZUl0ZW1NYW5hZ2VyLCBlbGVtZW50OiBjb250YWluZXJFbGVtZW50LCBjZmlMb2NhdG9yLCBsb2NhdG9yLCBob29rcyQgfSlcbiAgY29uc3QgZXZlbnRzSGVscGVyID0gY3JlYXRlRXZlbnRzSGVscGVyKHsgY29udGV4dCwgc3BpbmVJdGVtTWFuYWdlciwgaWZyYW1lRXZlbnRCcmlkZ2VFbGVtZW50LCBsb2NhdG9yIH0pXG4gIGxldCBzZWxlY3Rpb25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZFxuICBsZXQgaG9va0Rlc3Ryb3lJdGVtT25DcmVhdGVGdW5jdGlvbnM6ICgoKCkgPT4gdm9pZCkgfCBTdWJzY3JpcHRpb24pW10gPSBbXVxuXG4gIC8qKlxuICAgKiBAdG9kbyBoYW5kbGUgcmVsb2FkXG4gICAqL1xuICBjb25zdCByZWxvYWQgPSAoKSA9PiB7XG4gICAgY29udGV4dC5nZXRNYW5pZmVzdCgpPy5zcGluZUl0ZW1zLm1hcChhc3luYyAocmVzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHNwaW5lSXRlbSA9IGNyZWF0ZVNwaW5lSXRlbSh7XG4gICAgICAgIGl0ZW06IHJlc291cmNlLFxuICAgICAgICBjb250YWluZXJFbGVtZW50OiBjb250YWluZXJFbGVtZW50LFxuICAgICAgICBpZnJhbWVFdmVudEJyaWRnZUVsZW1lbnQsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGhvb2tzJCxcbiAgICAgICAgdmlld3BvcnRTdGF0ZSQ6IHZpZXdwb3J0TmF2aWdhdG9yLiQuc3RhdGUkXG4gICAgICB9KVxuICAgICAgc3BpbmVJdGVtTWFuYWdlci5hZGQoc3BpbmVJdGVtKVxuICAgIH0pXG4gICAgaG9va3MkLmdldFZhbHVlKCkuZm9yRWFjaChob29rID0+IHtcbiAgICAgIGlmIChob29rLm5hbWUgPT09IGBpdGVtLm9uQ3JlYXRlZGApIHtcbiAgICAgICAgc3BpbmVJdGVtTWFuYWdlci5nZXRBbGwoKS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgIGNvbnN0IGRlc3Ryb3lGbk9yU3RyZWFtID0gaG9vay5mbih7XG4gICAgICAgICAgICBjb250YWluZXI6IGl0ZW0uZWxlbWVudCxcbiAgICAgICAgICAgIGxvYWRpbmdFbGVtZW50OiBpdGVtLmxvYWRpbmdFbGVtZW50LFxuICAgICAgICAgICAgaXRlbTogaXRlbS5pdGVtXG4gICAgICAgICAgfSlcbiAgICAgICAgICBpZiAoZGVzdHJveUZuT3JTdHJlYW0pIHtcbiAgICAgICAgICAgIGlmIChgc3Vic2NyaWJlYCBpbiBkZXN0cm95Rm5PclN0cmVhbSkge1xuICAgICAgICAgICAgICBob29rRGVzdHJveUl0ZW1PbkNyZWF0ZUZ1bmN0aW9ucy5wdXNoKGRlc3Ryb3lGbk9yU3RyZWFtLnN1YnNjcmliZSgpKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaG9va0Rlc3Ryb3lJdGVtT25DcmVhdGVGdW5jdGlvbnMucHVzaChkZXN0cm95Rm5PclN0cmVhbSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IG1hbmlwdWxhdGVTcGluZUl0ZW1zID0gKGNiOiAocGF5bG9hZDogTWFuaXB1bGFibGVTcGluZUl0ZW1DYWxsYmFja1BheWxvYWQgJiB7IGluZGV4OiBudW1iZXIgfSkgPT4gUmVxdWlyZUxheW91dCkgPT4ge1xuICAgIGxldCBzaG91bGRMYXlvdXQgPSBmYWxzZVxuICAgIHNwaW5lSXRlbU1hbmFnZXIuZ2V0QWxsKCkuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIHNob3VsZExheW91dCA9IGl0ZW0ubWFuaXB1bGF0ZVNwaW5lSXRlbSgob3B0cykgPT4gY2IoeyBpbmRleCwgLi4ub3B0cyB9KSkgfHwgc2hvdWxkTGF5b3V0XG4gICAgfSlcblxuICAgIGlmIChzaG91bGRMYXlvdXQpIHtcbiAgICAgIHNwaW5lSXRlbU1hbmFnZXIubGF5b3V0KClcbiAgICB9XG4gIH1cblxuICBjb250ZXh0LiQubG9hZCRcbiAgICAucGlwZShcbiAgICAgIHRhcChyZWxvYWQpLFxuICAgICAgdGFrZVVudGlsKGNvbnRleHQuJC5kZXN0cm95JClcbiAgICApXG4gICAgLnN1YnNjcmliZSgpXG5cbiAgLyoqXG4gICAqIFdhdGNoIGZvciBzZXR0aW5ncyB1cGRhdGUgdGhhdCByZXF1aXJlIGNoYW5nZXNcbiAgICogb24gdGhpcyBsYXllci5cbiAgICpcbiAgICogQGltcG9ydGFudFxuICAgKiBUcnkgbm90IHRvIGhhdmUgZHVwbGljYXRlIHdpdGggb3RoZXIgbG93ZXIgY29tcG9uZW50cyB0aGF0IGFsc28gbGlzdGVuIHRvIHNldHRpbmdzIGNoYW5nZSBhbmQgcmUtbGF5b3V0XG4gICAqIG9uIHRoZSBzYW1lIHNldHRpbmdzLlxuICAgKi9cbiAgY29uc3QgbGF5b3V0T25TZXR0aW5nQ2hhbmdlcyQgPSBjb250ZXh0LiQuc2V0dGluZ3MkXG4gICAgLnBpcGUoXG4gICAgICBtYXBLZXlzVG8oW2Bjb21wdXRlZFBhZ2VUdXJuRGlyZWN0aW9uYCwgYGNvbXB1dGVkUGFnZVR1cm5Nb2RlYF0pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNTaGFsbG93RXF1YWwpLFxuICAgICAgc2tpcCgxKVxuICAgIClcblxuICBjb25zdCB3YWl0Rm9yVmlld3BvcnRGcmVlJCA9IHZpZXdwb3J0TmF2aWdhdG9yLiQuc3RhdGUkLnBpcGUoZmlsdGVyKHYgPT4gdiA9PT0gYGZyZWVgKSwgdGFrZSgxKSlcblxuICBjb25zdCBsYXlvdXQkID0gbWVyZ2UobGF5b3V0U3ViamVjdCQsIGxheW91dE9uU2V0dGluZ0NoYW5nZXMkKVxuICAgIC5waXBlKFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRleHQuZ2V0U2V0dGluZ3MoKS5jb21wdXRlZFBhZ2VUdXJuTW9kZSA9PT0gYHNjcm9sbGFibGVgKSB7XG4gICAgICAgICAgY29udGFpbmVyRWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9IGBoaWRkZW5gXG4gICAgICAgICAgY29udGFpbmVyRWxlbWVudC5zdHlsZS5vdmVyZmxvd1kgPSBgc2Nyb2xsYFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRhaW5lckVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoYG92ZXJmbG93YClcbiAgICAgICAgICBjb250YWluZXJFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KGBvdmVyZmxvd1lgKVxuICAgICAgICB9XG5cbiAgICAgICAgdmlld3BvcnROYXZpZ2F0b3IubGF5b3V0KClcbiAgICAgICAgc3BpbmVJdGVtTWFuYWdlci5sYXlvdXQoKVxuICAgICAgfSksXG4gICAgICBzaGFyZSgpXG4gICAgKVxuXG4gIGxheW91dCRcbiAgICAucGlwZShcbiAgICAgIHRha2VVbnRpbChjb250ZXh0LiQuZGVzdHJveSQpXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKVxuXG4gIC8qKlxuICAgKiBUaGlzIGFkanVzdG1lbnQgaXMgdXNlZCB0byB1cGRhdGUgdGhlIHBhZ2luYXRpb24gd2l0aCB0aGUgbW9zdCB1cCB0byBkYXRlIHZhbHVlcyB3ZSBjYW4uXG4gICAqIEl0IG5lZWRzIHRvIGJlIHJhbiBvbmx5IHdoZW4gdmlld3BvcnQgaXMgZnJlZSBiZWNhdXNlIHNvbWUgb3BlcmF0aW9uIHN1Y2ggYXMgbG9va2luZyB1cCBjZmkgY2FuXG4gICAqIGJlIHJlYWxseSBoZWF2eS5cbiAgICpcbiAgICogVGhlIGNmaSB3aWxsIG9ubHkgYmUgdXBkYXRlZCBpZiBpdCBuZWVkcyB0byBiZTpcbiAgICogLSBjZmkgaXMgYSByb290IHRhcmdldFxuICAgKiAtIGNmaSBpcyB1bmRlZmluZWRcbiAgICogLSBpdGVtcyBhcmUgZGlmZmVyZW50XG4gICAqL1xuICBjb25zdCBhZGp1c3RQYWdpbmF0aW9uJCA9IChwb3NpdGlvbjogVmlld3BvcnROYXZpZ2F0aW9uRW50cnkpID0+IHtcbiAgICByZXR1cm4gd2FpdEZvclZpZXdwb3J0RnJlZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoUmVwb3J0Lm1lYXN1cmVQZXJmb3JtYW5jZShgJHtOQU1FU1BBQ0V9IGFkanVzdFBhZ2luYXRpb25gLCAxLCAoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3BpbmVJdGVtc0Zyb21Qb3NpdGlvbiA9IGxvY2F0b3IuZ2V0U3BpbmVJdGVtc0Zyb21SZWFkaW5nT3JkZXJQb3NpdGlvbihwb3NpdGlvbilcbiAgICAgICAgICBjb25zdCBiZWdpblNwaW5lSXRlbSA9IHNwaW5lSXRlbXNGcm9tUG9zaXRpb24gPyBzcGluZUl0ZW1NYW5hZ2VyLmdldChzcGluZUl0ZW1zRnJvbVBvc2l0aW9uLmJlZ2luKSA6IHVuZGVmaW5lZFxuICAgICAgICAgIGNvbnN0IGVuZFNwaW5lSXRlbSA9IHNwaW5lSXRlbXNGcm9tUG9zaXRpb24gPyBzcGluZUl0ZW1NYW5hZ2VyLmdldChzcGluZUl0ZW1zRnJvbVBvc2l0aW9uLmVuZCkgOiB1bmRlZmluZWRcbiAgICAgICAgICBjb25zdCBiZWdpbkxhc3RDZmkgPSBwYWdpbmF0aW9uLmdldEluZm8oKS5iZWdpbkNmaVxuICAgICAgICAgIGNvbnN0IGVuZExhc3RDZmkgPSBwYWdpbmF0aW9uLmdldEluZm8oKS5lbmRDZmlcblxuICAgICAgICAgIGNvbnN0IHNob3VsZFVwZGF0ZUJlZ2luQ2ZpID1cbiAgICAgICAgICAgIHBhZ2luYXRpb24uZ2V0SW5mbygpLmJlZ2luU3BpbmVJdGVtSW5kZXggIT09IHNwaW5lSXRlbXNGcm9tUG9zaXRpb24/LmJlZ2luIHx8XG4gICAgICAgICAgICBiZWdpbkxhc3RDZmkgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYmVnaW5MYXN0Q2ZpPy5zdGFydHNXaXRoKGBlcHViY2ZpKC8wYClcblxuICAgICAgICAgIGNvbnN0IHNob3VsZFVwZGF0ZUVuZENmaSA9XG4gICAgICAgICAgICBwYWdpbmF0aW9uLmdldEluZm8oKS5lbmRTcGluZUl0ZW1JbmRleCAhPT0gc3BpbmVJdGVtc0Zyb21Qb3NpdGlvbj8uZW5kIHx8XG4gICAgICAgICAgICBlbmRMYXN0Q2ZpID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGVuZExhc3RDZmk/LnN0YXJ0c1dpdGgoYGVwdWJjZmkoLzBgKVxuXG4gICAgICAgICAgaWYgKGJlZ2luU3BpbmVJdGVtICYmIGVuZFNwaW5lSXRlbSAmJiBzcGluZUl0ZW1zRnJvbVBvc2l0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBiZWdpblBvc2l0aW9uID0gbG9jYXRvci5nZXRTcGluZUl0ZW1Qb3NpdGlvbkZyb21TcGluZVBvc2l0aW9uKHNwaW5lSXRlbXNGcm9tUG9zaXRpb24uYmVnaW5Qb3NpdGlvbiwgYmVnaW5TcGluZUl0ZW0pXG4gICAgICAgICAgICBjb25zdCBiZWdpblBhZ2VJbmRleCA9IHNwaW5lSXRlbUxvY2F0b3IuZ2V0U3BpbmVJdGVtUGFnZUluZGV4RnJvbVBvc2l0aW9uKGJlZ2luUG9zaXRpb24sIGJlZ2luU3BpbmVJdGVtKVxuICAgICAgICAgICAgY29uc3QgZW5kUG9zaXRpb24gPSBsb2NhdG9yLmdldFNwaW5lSXRlbVBvc2l0aW9uRnJvbVNwaW5lUG9zaXRpb24oc3BpbmVJdGVtc0Zyb21Qb3NpdGlvbi5lbmRQb3NpdGlvbiwgZW5kU3BpbmVJdGVtKVxuICAgICAgICAgICAgY29uc3QgZW5kUGFnZUluZGV4ID0gc3BpbmVJdGVtTG9jYXRvci5nZXRTcGluZUl0ZW1QYWdlSW5kZXhGcm9tUG9zaXRpb24oZW5kUG9zaXRpb24sIGVuZFNwaW5lSXRlbSlcblxuICAgICAgICAgICAgcGFnaW5hdGlvbi51cGRhdGVCZWdpbkFuZEVuZCh7XG4gICAgICAgICAgICAgIHNwaW5lSXRlbTogYmVnaW5TcGluZUl0ZW0sXG4gICAgICAgICAgICAgIHNwaW5lSXRlbUluZGV4OiBzcGluZUl0ZW1NYW5hZ2VyLmdldFNwaW5lSXRlbUluZGV4KGJlZ2luU3BpbmVJdGVtKSA/PyAwLFxuICAgICAgICAgICAgICBwYWdlSW5kZXg6IHNwaW5lSXRlbUxvY2F0b3IuZ2V0U3BpbmVJdGVtUGFnZUluZGV4RnJvbVBvc2l0aW9uKGJlZ2luUG9zaXRpb24sIGJlZ2luU3BpbmVJdGVtKSxcbiAgICAgICAgICAgICAgY2ZpOiBzaG91bGRVcGRhdGVCZWdpbkNmaSA/IGNmaUxvY2F0b3IuZ2V0Q2ZpKGJlZ2luUGFnZUluZGV4LCBiZWdpblNwaW5lSXRlbSkgOiBiZWdpbkxhc3RDZmksXG4gICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBpc0F0RW5kT2ZDaGFwdGVyOiBmYWxzZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgIHNwaW5lSXRlbTogZW5kU3BpbmVJdGVtLFxuICAgICAgICAgICAgICBzcGluZUl0ZW1JbmRleDogc3BpbmVJdGVtTWFuYWdlci5nZXRTcGluZUl0ZW1JbmRleChlbmRTcGluZUl0ZW0pID8/IDAsXG4gICAgICAgICAgICAgIHBhZ2VJbmRleDogc3BpbmVJdGVtTG9jYXRvci5nZXRTcGluZUl0ZW1QYWdlSW5kZXhGcm9tUG9zaXRpb24oZW5kUG9zaXRpb24sIGVuZFNwaW5lSXRlbSksXG4gICAgICAgICAgICAgIGNmaTogc2hvdWxkVXBkYXRlRW5kQ2ZpID8gY2ZpTG9jYXRvci5nZXRDZmkoZW5kUGFnZUluZGV4LCBlbmRTcGluZUl0ZW0pIDogZW5kTGFzdENmaSxcbiAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIGlzQXRFbmRPZkNoYXB0ZXI6IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgUmVwb3J0LmxvZyhOQU1FU1BBQ0UsIGBhZGp1c3RQYWdpbmF0aW9uJGApXG4gICAgICAgIH0sIHsgZGlzYWJsZTogdHJ1ZSB9KSlcbiAgICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgY2FzZXMgY292ZXJlZCBieSB0aGlzIG9ic2VydmVyXG4gICAqIC0gTGF5b3V0IGNoYW5nZWQgZm9yIGl0ZW1zXG4gICAqICAtIHZpZXdwb3J0IGlzIGZyZWVcbiAgICogICAgLSB3ZSBhZGp1c3QgdGhlIG5hdmlnYXRpb25cbiAgICogICAgLSB3ZSB1cGRhdGUgdGhlIHBhZ2luYXRpb25cbiAgICogIC0gdmlld3BvcnQgaXMgYnVzeSAob25nb2luZyBuYXZpZ2F0aW9uLCBhbmltYXRpb24sIGV0YylcbiAgICogICAgLSB3ZSB3YWl0IGZvciB2aWV3cG9ydCBmcmVlXG4gICAqICAgIC0gd2UgYWRqdXN0IHBhZ2luYXRpb25cbiAgICogICAgLSB3ZSB1cGRhdGUgcGFnaW5hdGlvblxuICAgKlxuICAgKiBPbmNlIG5hdmlnYXRpb24gaXMgYWRqdXN0ZWQgd2UgdXBkYXRlIHRoZSBwYWdpbmF0aW9uIHJlZ2FyZGxlc3MgaWYgdGhlXG4gICAqIGFkanVzdG1lbnQgd2FzIG5lZWRlZCBvciBub3QuIFRoaXMgaXMgYmVjYXVzZSB0aGUgbGF5b3V0IG1heSBoYXZlIGNoYW5nZS4gSW4gc29tZSBjYXNlLCB0aGUgY29udGVudFxuICAgKiBtYXkgaGF2ZSBjaGFuZ2VkIGJ1dCBieSBjaGFuZ2UgdGhlIHZpZXdwb3J0IHBvc2l0aW9uIGlzIHN0aWxsIHRoZSBzYW1lLiBJdCBkb2VzIG5vdCBtZWFuIHRoZSBhY3R1YWwgY29udGVudFxuICAgKiBpcyB0aGUgc2FtZS5cbiAgICpcbiAgICogQGltcG9ydGFudFxuICAgKiBBZGp1c3RtZW50IGFuZCBwYWdpbmF0aW9uIHVwZGF0ZSBhcmUgY2FuY2VsbGVkIGFzIHNvb24gYXMgYW5vdGhlciBuYXZpZ2F0aW9uIGhhcHBlbnMuIChpdCB3aWxsIGFscmVhZHkgYmUgaGFuZGxlZCB0aGVyZSkuXG4gICAqIGFkanVzdE5hdmlnYXRpb24kIGNhbiB0cmlnZ2VyIGEgbmF2aWdhdGlvbiBpZiBhZGp1c3RtZW50IGlzIG5lZWRlZCB3aGljaCB3aWxsIGluIHRlcm0gY2FuY2VsIHRoZSBpbm5lciBzdHJlYW0uXG4gICAqXG4gICAqIEB0b2RvXG4gICAqIFJpZ2h0IG5vdyB3ZSByZWFjdCB0byBsaXRlcmFsbHkgZXZlcnkgbGF5b3V0IGFuZCBzb21lIHRpbWUgd2UgbWlnaHQgbm90IG5lZWQgdG8gdXBkYXRlIHBhZ2luYXRpb24gKGV4IHByZS1wYWdpbmF0ZWQgZWxlbWVudCBnb3QgdW5sb2FkKS5cbiAgICogTWF5YmUgd2Ugc2hvdWxkIG9ubHkgbGlzdGVuIHRvIGN1cnJlbnQgaXRlbXMgdmlzaWJsZSBvbmx5ID9cbiAgICovXG4gIGNvbnN0IGFkanVzdE5hdmlnYXRpb25BZnRlckxheW91dCQgPSBzcGluZUl0ZW1NYW5hZ2VyLiQubGF5b3V0JFxuICAgIC5waXBlKFxuICAgICAgLyoqXG4gICAgICAgKiBAaW1wb3J0YW50XG4gICAgICAgKiBDYXJlZnVsIHdpdGggdXNpbmcgZGVib3VuY2UgLyB0aHJvdHRsZSBoZXJlIHNpbmNlIGl0IGNhbiBkZWNyZWFzZSB1c2VyIGV4cGVyaWVuY2VcbiAgICAgICAqIHdoZW4gbGF5b3V0IGhhcHBlbnMgaXQgY2FuIG1lYW5zIGFuIGl0ZW0gYmVmb3JlIHRoZSBjdXJyZW50IG9uZSBoYXMgYmVlbiB1bmxvYWRlZCwgYXQgY3VycmVudCBjb2RlXG4gICAgICAgKiB3ZSB1bmxvYWQgYW5kIHNpemUgYmFjayBlYWNoIGl0ZW0gdG8gdGhlIHNjcmVlbiBzbyBpdCB3aWxsIGhhdmUgdGhlIGVmZmVjdCBvZiBmbGlja2VyIGZvciB1c2VyLlxuICAgICAgICogQ29uc2lkZXIgdGhpcyB3b3JrZmxvdzpcbiAgICAgICAqIC0gdXNlciBuYXZpZ2F0ZSB0byBwYWdlIDJcbiAgICAgICAqIC0gdmlld3BvcnQgbW92ZSB0byBpdGVtIDJcbiAgICAgICAqIC0gcGFnZSAxIHVubG9hZCBhbmQgZ29lcyBiYWNrIGZyb20gMjAwMHB4IHRvIDUwMHB4XG4gICAgICAgKiAtIGxheW91dCB0cmlnZ2VyZWRcbiAgICAgICAqIC0gdmlld3BvcnQgaXMgbm93IG9uIGFuIGl0ZW0gZmFyIGFmdGVyIGl0ZW0gMiBiZWNhdXNlIGl0ZW0gMSBzaHJpbmsgKFBST0JMRU0pXG4gICAgICAgKiAtIHNvbWV0aW1lIGFmdGVyIHZpZXdwb3J0IGlzIGFkanVzdGVkIGJhY2sgdG8gaXRlbSAyLlxuICAgICAgICpcbiAgICAgICAqIFR3byBzb2x1dGlvbiB0byBmaXggdGhpcyBpc3N1ZTpcbiAgICAgICAqIC0gbWF5YmUgbGF0ZXIgdHJ5IHRvIGltcGxlbWVudCBhIGRpZmZlcmVudCBzdHJhdGVneSBhbmQgbmV2ZXIgc2hyaW5rIGJhY2sgaXRlbSB1bmxlc3MgdGhleSBhcmUgbG9hZGVkXG4gICAgICAgKiAtIGRvIG5vdCB1c2UgZGVib3VuY2UgLyB0aHJvdHRsZSBhbmQgbmF2aWdhdGUgYmFjayB0byB0aGUgaXRlbSByaWdodCBvbiB0aGUgc2FtZSB0aWNrXG4gICAgICAgKi9cbiAgICAgIC8vIGRlYm91bmNlVGltZSgxMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgIHdhaXRGb3JWaWV3cG9ydEZyZWUkXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmb2N1c2VkU3BpbmVJdGVtID0gc3BpbmVJdGVtTWFuYWdlci5nZXRGb2N1c2VkU3BpbmVJdGVtKClcblxuICAgICAgICAgICAgICBpZiAoIWZvY3VzZWRTcGluZUl0ZW0pIHJldHVybiBFTVBUWVxuXG4gICAgICAgICAgICAgIHJldHVybiB2aWV3cG9ydE5hdmlnYXRvci5hZGp1c3ROYXZpZ2F0aW9uKGZvY3VzZWRTcGluZUl0ZW0pXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh2aWV3cG9ydE5hdmlnYXRvci4kLm5hdmlnYXRpb24kKVxuICAgICAgICAgIClcbiAgICAgICksXG4gICAgICBzaGFyZSgpXG4gICAgKVxuXG4gIGFkanVzdE5hdmlnYXRpb25BZnRlckxheW91dCRcbiAgICAucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoeyBhZGp1c3RlZFNwaW5lUG9zaXRpb24gfSkgPT4ge1xuICAgICAgICByZXR1cm4gYWRqdXN0UGFnaW5hdGlvbiQoYWRqdXN0ZWRTcGluZVBvc2l0aW9uKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHZpZXdwb3J0TmF2aWdhdG9yLiQubmF2aWdhdGlvbiQpXG4gICAgICAgICAgKVxuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwoY29udGV4dC4kLmRlc3Ryb3kkKVxuICAgIClcbiAgICAuc3Vic2NyaWJlKClcblxuICBtZXJnZShcbiAgICBzcGluZUl0ZW1NYW5hZ2VyLiQuZm9jdXMkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChldmVudCkgPT4ge1xuICAgICAgICAgIC8vIEB0b2RvIHRyYWNrIHRhaWwgYXMgd2VsbCAoc2VsZWN0aW9uLCBmaW5nZXIgZXRjKVxuXG4gICAgICAgICAgY29uc3Qgc3BpbmVJdGVtID0gZXZlbnQuZGF0YVxuICAgICAgICAgIGNvbnN0IGZpbmdlclRyYWNrZXIkID0gc3BpbmVJdGVtLmZpbmdlclRyYWNrZXIuJFxuICAgICAgICAgIGNvbnN0IHNlbGVjdGlvblRyYWNrZXIkID0gc3BpbmVJdGVtLnNlbGVjdGlvblRyYWNrZXIuJFxuXG4gICAgICAgICAgc2VsZWN0aW9uU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpXG4gICAgICAgICAgc2VsZWN0aW9uU3Vic2NyaXB0aW9uID0gbWVyZ2UoXG4gICAgICAgICAgICBzZWxlY3Rpb25UcmFja2VyJFxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQuZXZlbnQgPT09IGBzZWxlY3Rpb25jaGFuZ2VgKSxcbiAgICAgICAgICAgICAgICB0YXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgc3ViamVjdC5uZXh0KHsgdHlwZTogYG9uU2VsZWN0aW9uQ2hhbmdlYCwgZGF0YTogZXZlbnQuZGF0YSA/IGNyZWF0ZVNlbGVjdGlvbihldmVudC5kYXRhLCBzcGluZUl0ZW0uaXRlbSkgOiBudWxsIH0pXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNlbGVjdGlvblRyYWNrZXIkXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoeyBldmVudCB9KSA9PiBldmVudCA9PT0gYHNlbGVjdHN0YXJ0YCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKF8gPT4gZmluZ2VyVHJhY2tlciRcbiAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHsgZXZlbnQgfSkgPT4gZXZlbnQgPT09IGBmaW5nZXJtb3ZlYCksXG4gICAgICAgICAgICAgICAgICAgIGRlYm91bmNlKCgpID0+IGludGVydmFsKDEwMDApKSxcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKGZpbmdlclRyYWNrZXIkXG4gICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHsgZXZlbnQgfSkgPT4gZXZlbnQgPT09IGBmaW5nZXJvdXRgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICB0YXAoKHsgZGF0YSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgZmluZ2VyUG9zaXRpb24gPSB0cmFuc2xhdGVGcmFtZVBvc2l0aW9uSW50b1BhZ2UoY29udGV4dCwgcGFnaW5hdGlvbiwgZGF0YSwgc3BpbmVJdGVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGZpbmdlclBvc2l0aW9uLnggPj0gY29udGV4dC5nZXRQYWdlU2l6ZSgpLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHZpZXdwb3J0TmF2aWdhdG9yLnR1cm5SaWdodCh7IGFsbG93U3BpbmVJdGVtQ2hhbmdlOiBmYWxzZSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfSBlbHNlIGlmIChmaW5nZXJQb3NpdGlvbi54IDw9IGNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICB2aWV3cG9ydE5hdmlnYXRvci50dXJuTGVmdCh7IGFsbG93U3BpbmVJdGVtQ2hhbmdlOiBmYWxzZSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKClcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XG4gICAgICAgICAgUmVwb3J0LmVycm9yKGUpXG5cbiAgICAgICAgICByZXR1cm4gRU1QVFlcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbChjb250ZXh0LiQuZGVzdHJveSQpXG4gICAgICApXG4gIClcbiAgICAuc3Vic2NyaWJlKClcblxuICBjb25zdCBpdGVtVXBkYXRlT25OYXZpZ2F0aW9uJCA9IHZpZXdwb3J0TmF2aWdhdG9yLiQubmF2aWdhdGlvbiRcbiAgICAucGlwZShcbiAgICAgIHRhcCgoZGF0YSkgPT4ge1xuICAgICAgICBjb25zdCB0aW1lID0gUmVwb3J0LnRpbWUoYCR7TkFNRVNQQUNFfSBuYXZpZ2F0aW9uYCwgMSlcbiAgICAgICAgY29uc3QgY3VycmVudFNwaW5lSXRlbSA9IHNwaW5lSXRlbU1hbmFnZXIuZ2V0Rm9jdXNlZFNwaW5lSXRlbSgpXG4gICAgICAgIGNvbnN0IHNwaW5lSXRlbXNGcm9tUG9zaXRpb24gPSBsb2NhdG9yLmdldFNwaW5lSXRlbXNGcm9tUmVhZGluZ09yZGVyUG9zaXRpb24oZGF0YS5wb3NpdGlvbilcbiAgICAgICAgbGV0IGJlZ2luU3BpbmVJdGVtID0gc3BpbmVJdGVtc0Zyb21Qb3NpdGlvbiA/IHNwaW5lSXRlbU1hbmFnZXIuZ2V0KHNwaW5lSXRlbXNGcm9tUG9zaXRpb24uYmVnaW4pIDogdW5kZWZpbmVkXG4gICAgICAgIGxldCBlbmRTcGluZUl0ZW0gPSBzcGluZUl0ZW1zRnJvbVBvc2l0aW9uID8gc3BpbmVJdGVtTWFuYWdlci5nZXQoc3BpbmVJdGVtc0Zyb21Qb3NpdGlvbi5lbmQpIDogdW5kZWZpbmVkXG4gICAgICAgIGJlZ2luU3BpbmVJdGVtID0gYmVnaW5TcGluZUl0ZW0gfHwgY3VycmVudFNwaW5lSXRlbVxuICAgICAgICBlbmRTcGluZUl0ZW0gPSBlbmRTcGluZUl0ZW0gfHwgY3VycmVudFNwaW5lSXRlbVxuXG4gICAgICAgIC8vIEluIHRoZW9yeSB0aGUgaXRlbSB0byBmb2N1cyBzaG91bGQgYmUgZWl0aGVyIGJlZ2luIG9yIGVuZC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBuYXZpZ2F0aW9uIHNob3VsZCBhdCBsZWFzdCB0YWtlIHVzIG9uIHRvcFxuICAgICAgICAvLyBvZiBpdC4gSG93ZXZlciB0aGlzIGlzIHRoZSB0aGVvcnksIGR1ZSB0byB3cm9uZyBsYXlvdXQgLyBtaXNzaW5nIGFkanVzdG1lbnQgaXQgY291bGQgYmUgZGlmZmVyZW50LlxuICAgICAgICAvLyBJbiBjYXNlIG9mIG5vIGl0ZW0gdG8gZm9jdXMgaXMgZGV0ZWN0ZWQgd2Ugd2lsbCBqdXN0IGZhbGxiYWNrIHRvIDBcbiAgICAgICAgY29uc3Qgc3BpbmVJdGVtVG9Gb2N1cyA9IGRhdGEucG9zaXRpb24uc3BpbmVJdGVtIHx8IGJlZ2luU3BpbmVJdGVtXG5cbiAgICAgICAgaWYgKHNwaW5lSXRlbVRvRm9jdXMgJiYgc3BpbmVJdGVtVG9Gb2N1cyAhPT0gY3VycmVudFNwaW5lSXRlbSkge1xuICAgICAgICAgIHNwaW5lSXRlbU1hbmFnZXIuZm9jdXMoc3BpbmVJdGVtVG9Gb2N1cylcbiAgICAgICAgfSBlbHNlIGlmICghc3BpbmVJdGVtVG9Gb2N1cykge1xuICAgICAgICAgIC8vIHdlIGRlZmF1bHQgdG8gaXRlbSAwIHNvIGlmIGFueXRoaW5nIHdyb25nIGhhcHBlbnMgZHVyaW5nIG5hdmlnYXRpb24gd2UgY2FuIGZhbGxiYWNrIHRvIGEgdmFsaWQgaXRlbVxuICAgICAgICAgIHNwaW5lSXRlbU1hbmFnZXIuZm9jdXMoMClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzcGluZUl0ZW1Ub0ZvY3VzICYmIGJlZ2luU3BpbmVJdGVtICYmIGVuZFNwaW5lSXRlbSAmJiBzcGluZUl0ZW1zRnJvbVBvc2l0aW9uKSB7XG4gICAgICAgICAgY29uc3QgbGFzdEV4cGVjdGVkTmF2aWdhdGlvbiA9IHZpZXdwb3J0TmF2aWdhdG9yLmdldExhc3RVc2VyRXhwZWN0ZWROYXZpZ2F0aW9uKClcbiAgICAgICAgICBjb25zdCBiZWdpbkl0ZW1JbmRleCA9IHNwaW5lSXRlbU1hbmFnZXIuZ2V0U3BpbmVJdGVtSW5kZXgoYmVnaW5TcGluZUl0ZW0pID8/IDBcbiAgICAgICAgICBjb25zdCBiZWdpblBvc2l0aW9uID0gbG9jYXRvci5nZXRTcGluZUl0ZW1Qb3NpdGlvbkZyb21TcGluZVBvc2l0aW9uKHNwaW5lSXRlbXNGcm9tUG9zaXRpb24uYmVnaW5Qb3NpdGlvbiwgYmVnaW5TcGluZUl0ZW0pXG4gICAgICAgICAgY29uc3QgYmVnaW5QYWdlSW5kZXggPSBzcGluZUl0ZW1Mb2NhdG9yLmdldFNwaW5lSXRlbVBhZ2VJbmRleEZyb21Qb3NpdGlvbihiZWdpblBvc2l0aW9uLCBiZWdpblNwaW5lSXRlbSlcbiAgICAgICAgICBjb25zdCBlbmRQb3NpdGlvbiA9IGxvY2F0b3IuZ2V0U3BpbmVJdGVtUG9zaXRpb25Gcm9tU3BpbmVQb3NpdGlvbihzcGluZUl0ZW1zRnJvbVBvc2l0aW9uLmVuZFBvc2l0aW9uLCBlbmRTcGluZUl0ZW0pXG4gICAgICAgICAgY29uc3QgZW5kUGFnZUluZGV4ID0gc3BpbmVJdGVtTG9jYXRvci5nZXRTcGluZUl0ZW1QYWdlSW5kZXhGcm9tUG9zaXRpb24oZW5kUG9zaXRpb24sIGVuZFNwaW5lSXRlbSlcbiAgICAgICAgICBjb25zdCBlbmRJdGVtSW5kZXggPSBzcGluZUl0ZW1NYW5hZ2VyLmdldFNwaW5lSXRlbUluZGV4KGVuZFNwaW5lSXRlbSkgPz8gMFxuXG4gICAgICAgICAgY29uc29sZS53YXJuKGBIRVJFYCwgcGFnaW5hdGlvbi5nZXRJbmZvKCksIGJlZ2luSXRlbUluZGV4KVxuXG4gICAgICAgICAgcGFnaW5hdGlvbi51cGRhdGVCZWdpbkFuZEVuZCh7XG4gICAgICAgICAgICBzcGluZUl0ZW06IGJlZ2luU3BpbmVJdGVtLFxuICAgICAgICAgICAgc3BpbmVJdGVtSW5kZXg6IGJlZ2luSXRlbUluZGV4LFxuICAgICAgICAgICAgcGFnZUluZGV4OiBiZWdpblBhZ2VJbmRleCxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmVjYXVzZSB0aGUgc3RhcnQgb2YgYSBuYXZpZ2F0aW9uIG1heSBpbnZvbHZlIGFuaW1hdGlvbnMgYW5kIGludGVyYWN0aW9ucyB3ZSBkb24ndCByZXNvbHZlIGhlYXZ5IENGSSBoZXJlLlxuICAgICAgICAgICAgICogV2UgZG8gd2FudCB0byBoYXZlIGNlcnRhaW4gaW5mb3JtYXRpb24gY29ycmVjdCBpbiB0aGUgcGFnaW5hdGlvbiByaWdodCBhZnRlciBhIG5hdmlnYXRpb24gKHNhbWUgdGljaykgYnV0IHdlIGp1c3RcbiAgICAgICAgICAgICAqIGRlZmVyIGhlYXZ5IG5vbiB2aXRhbCBzdHVmZiBmb3IgbGF0ZXIuXG4gICAgICAgICAgICAgKiBUaGVyZSBhcmUgb25seSA0IGRpZmZlcmVudCBjZmkgdXBkYXRlIGF0IHRoaXMgc3RhZ2U6XG4gICAgICAgICAgICAgKiAtIG5hdmlnYXRpb24gY29tZXMgZnJvbSBjZmksIHdlIHNpbXBseSBhZmZlY3QgdGhlIGNmaSB0byB0aGUgcGFnaW5hdGlvblxuICAgICAgICAgICAgICogLSBuYXZpZ2F0aW9uIGNvbWVzIGZyb20gYWRqdXN0bWVudCB3aXRoIGNvbnRyb2xsZWQgbW9kZSwgd2UgZG9uJ3QgdXBkYXRlIHRoZSBjZmksIGp1c3QgcGFzcyB0aGUgcHJldmlvdXMgb25lXG4gICAgICAgICAgICAgKiAtIG5hdmlnYXRpb24gY29tZXMgZnJvbSBhZGp1c3RtZW50IHdpdGggZnJlZSBtb2RlLCB3ZSB3aWxsIHVwZGF0ZSB3aXRoIHJvb3QgY2ZpIGlmIG5lZWRlZCBiZWNhdXNlIHdlIGNvdWxkIGJlIG9uIG5ldyBwYWdlXG4gICAgICAgICAgICAgKiAtIG5hdmlnYXRpb24gaXMgbm90IGZyb20gYWRqdXN0bWVudCwgdGhpcyBtZWFucyB3ZSBhcmUgb24gZWl0aGVyIG5ldyBwYWdlIG9yIG5ldyByZWFkaW5nIGl0ZW0sIHdlIHVzZSBsaWdodCBjZmkgd2l0aCByb290IChubyBkb20gbG9va3VwKVxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIFRoZSBjZmkgaXMgbGF0ZXIgYWRqdXN0ZWQgd2l0aCBoZWF2eSBkb20gbG9va3VwIG9uY2UgdGhlIHZpZXdwb3J0IGlzIGZyZWUuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNmaTpcbiAgICAgICAgICAgICAgbGFzdEV4cGVjdGVkTmF2aWdhdGlvbj8udHlwZSA9PT0gYG5hdmlnYXRlLWZyb20tY2ZpYCAmJiBzcGluZUl0ZW1Ub0ZvY3VzID09PSBiZWdpblNwaW5lSXRlbVxuICAgICAgICAgICAgICAgID8gbGFzdEV4cGVjdGVkTmF2aWdhdGlvbi5kYXRhXG4gICAgICAgICAgICAgICAgOiBkYXRhLnRyaWdnZXJlZEJ5ID09PSBgYWRqdXN0YCAmJiBjb250ZXh0LmdldFNldHRpbmdzKCkuY29tcHV0ZWRQYWdlVHVybk1vZGUgPT09IGBjb250cm9sbGVkYFxuICAgICAgICAgICAgICAgICAgPyBwYWdpbmF0aW9uLmdldEluZm8oKS5iZWdpbkNmaVxuICAgICAgICAgICAgICAgICAgOiBiZWdpbkl0ZW1JbmRleCAhPT0gcGFnaW5hdGlvbi5nZXRJbmZvKCkuYmVnaW5TcGluZUl0ZW1JbmRleFxuICAgICAgICAgICAgICAgICAgICA/IGNmaUxvY2F0b3IuZ2V0Um9vdENmaShiZWdpblNwaW5lSXRlbSlcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRvZG8gY2hlY2sgP1xuICAgICAgICAgICAgICAgICAgICA6IGNmaUxvY2F0b3IuZ2V0Um9vdENmaShiZWdpblNwaW5lSXRlbSksXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIGlzQXRFbmRPZkNoYXB0ZXI6IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwge1xuICAgICAgICAgICAgc3BpbmVJdGVtOiBlbmRTcGluZUl0ZW0sXG4gICAgICAgICAgICBzcGluZUl0ZW1JbmRleDogZW5kSXRlbUluZGV4LFxuICAgICAgICAgICAgcGFnZUluZGV4OiBlbmRQYWdlSW5kZXgsXG4gICAgICAgICAgICBjZmk6IGxhc3RFeHBlY3RlZE5hdmlnYXRpb24/LnR5cGUgPT09IGBuYXZpZ2F0ZS1mcm9tLWNmaWAgJiYgc3BpbmVJdGVtVG9Gb2N1cyA9PT0gZW5kU3BpbmVJdGVtXG4gICAgICAgICAgICAgID8gbGFzdEV4cGVjdGVkTmF2aWdhdGlvbi5kYXRhXG4gICAgICAgICAgICAgIDogZGF0YS50cmlnZ2VyZWRCeSA9PT0gYGFkanVzdGAgJiYgY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkUGFnZVR1cm5Nb2RlID09PSBgY29udHJvbGxlZGBcbiAgICAgICAgICAgICAgICA/IHBhZ2luYXRpb24uZ2V0SW5mbygpLmVuZENmaVxuICAgICAgICAgICAgICAgIDogZW5kSXRlbUluZGV4ICE9PSBwYWdpbmF0aW9uLmdldEluZm8oKS5lbmRTcGluZUl0ZW1JbmRleFxuICAgICAgICAgICAgICAgICAgPyBjZmlMb2NhdG9yLmdldFJvb3RDZmkoZW5kU3BpbmVJdGVtKVxuICAgICAgICAgICAgICAgICAgLy8gQHRvZG8gY2hlY2sgP1xuICAgICAgICAgICAgICAgICAgOiBjZmlMb2NhdG9yLmdldFJvb3RDZmkoZW5kU3BpbmVJdGVtKSxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgaXNBdEVuZE9mQ2hhcHRlcjogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgUmVwb3J0LmxvZyhOQU1FU1BBQ0UsIGBpdGVtVXBkYXRlT25OYXZpZ2F0aW9uJGAsIHsgc3BpbmVJdGVtSGFzQ2hhbmdlZDogc3BpbmVJdGVtVG9Gb2N1cyAhPT0gY3VycmVudFNwaW5lSXRlbSwgaXRlbTogc3BpbmVJdGVtVG9Gb2N1cywgc3BpbmVJdGVtVG9Gb2N1cywgaW5kZXg6IHNwaW5lSXRlbU1hbmFnZXIuZ2V0U3BpbmVJdGVtSW5kZXgoc3BpbmVJdGVtVG9Gb2N1cyksIG9mZnNldDogZGF0YSwgZW5kU3BpbmVJdGVtLCBiZWdpblNwaW5lSXRlbSwgbGFzdEV4cGVjdGVkTmF2aWdhdGlvbiwgc3BpbmVJdGVtc0Zyb21Qb3NpdGlvbiB9KVxuICAgICAgICB9XG5cbiAgICAgICAgdGltZSgpXG4gICAgICB9KSxcbiAgICAgIHNoYXJlKCksXG4gICAgICB0YWtlVW50aWwoY29udGV4dC4kLmRlc3Ryb3kkKVxuICAgIClcblxuICAvKipcbiAgICogQWRqdXN0IGhlYXZpZXIgcGFnaW5hdGlvbiBvbmNlIHRoZSBuYXZpZ2F0aW9uIGFuZCBpdGVtcyBhcmUgdXBkYXRlZC5cbiAgICogVGhpcyBpcyBhbHNvIGNhbmNlbGxlZCBpZiB0aGUgbGF5b3V0IGNoYW5nZXMsIGJlY2F1c2UgdGhlIGxheW91dCB3aWxsXG4gICAqIHRyaWdnZXIgYSBuZXcgbmF2aWdhdGlvbiBhZGp1c3RtZW50IGFuZCBwYWdpbmF0aW9uIGFnYWluLlxuICAgKi9cbiAgaXRlbVVwZGF0ZU9uTmF2aWdhdGlvbiRcbiAgICAucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4gYWRqdXN0UGFnaW5hdGlvbiQoZGF0YS5wb3NpdGlvbilcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbChzcGluZUl0ZW1NYW5hZ2VyLiQubGF5b3V0JClcbiAgICAgICAgICApXG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbChjb250ZXh0LiQuZGVzdHJveSQpXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKVxuXG4gIC8qKlxuICAgKiBMb2FkaW5nIGFuZCB1bmxvYWRpbmcgY29udGVudCBoYXMgdHdvIGltcG9ydGFudCBpc3N1ZXMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWRcbiAgICogLSBGb3IgcmVmbG93IGJvb2sgaXQgd2lsbCB1bi1zeW5jIHRoZSB2aWV3cG9ydFxuICAgKiAtIExvYWRpbmcgLyB1bmxvYWQgaXMgQ1BVIGludGVuc2l2ZS5cbiAgICpcbiAgICogQmVjYXVzZSBvZiB0aGVzZXMgdHdvIHJlYXNvbiB3ZSBvbmx5IGxvYWQvdW5sb2FkIHdoZW4gdGhlIGFkanVzdG1lbnQgaXMgZG9uZS4gVGhpcyBlbnN1cmUgYSBzbW9vdGggdHJhbnNpdGlvbiBmb3IgdGhlIHNlY29uZCBwb2ludC5cbiAgICogRm9yIHRoZSBmaXJzdCBwb2ludCBpdCBhdm9pZCBoYXZpbmcgY29udGVudCBiZWluZyB1bi1zeW5jIHdoaWxlIHRoZSB0cmFuc2l0aW9uIGlzIGhhcHBlbmluZy4gVGhhdCB3YXkgd2UgYXZvaWQgYSBuZXcgY2hhcHRlclxuICAgKiB0byBzdWRkZW5seSBiZWluZyBkaXNwbGF5ZWQgdW5kZXIgdGhlIHRyYW5zaXRpb24uIFRoZSBmaXJzdCBpc3N1ZSBpcyBvbmx5IGEgcHJvYmxlbSBmb3IgcmVmbG93IGJvb2sgYXMgcGFnaW5hdGVkIHdpbGwgbm90XG4gICAqIHVuLXN5bmMgdGhlIHZpZXdwb3J0LlxuICAgKiBUaGUgZmxvdyBmb3IgdGhlIGZpcnN0IHBvaW50IGlzIGFzIGZvbGxvdzpcbiAgICogW25hdmlnYXRlXSAtPiBbdHJhbnNpdGlvbl0gLT4gW25ldyBwb3NpdGlvbl0gLT4gW2lmcmFtZSB1bmxvYWQvbG9hZF0gLT4gKGV2ZW50dWFsIGFkanVzdG1lbnQpLlxuICAgKlxuICAgKiBJdCB3b3VsZCBuZSBuaWNlIHRvIGJlIGFibGUgdG8gbG9hZC91bmxvYWQgd2l0aG91dCBoYXZpbmcgdG8gd29ycnkgYWJvdXQgdmlld3BvcnQgbWlzLWFkanVzdG1lbnQgYnV0IGR1ZSB0byB0aGUgY3VycmVudCBpZnJhbWUgYW5kIHZpZXdwb3J0XG4gICAqIGxheW91dCBtZXRob2Qgd2UgaGF2ZSB0byB0YWtlIGl0IGludG8gY29uc2lkZXJhdGlvbi5cbiAgICovXG4gIG1lcmdlKFxuICAgIC8qKlxuICAgICAqIFdlIHdhbnQgdG8gdXBkYXRlIGNvbnRlbnQgYWZ0ZXIgbmF2aWdhdGlvbiBzaW5jZSB3ZSBhcmUgYXQgYSBkaWZmZXJlbnQgcGxhY2UuXG4gICAgICogV2UgYWxzbyB3YWl0IGZvciBuYXZpZ2F0ZWQgaXRlbXMgdG8gYmUgdXBkYXRlZCBzbyB0aGF0IHdlIGhhdmUgYWNjZXNzIHRvIGNvcnJlY3QgZm9jdXMuXG4gICAgICogd2hpY2ggaXMgd2h5IHdlIHVzZSB0aGlzIG9ic2VydmVyIHJhdGhlciB0aGFuIGBuYXZpZ2F0aW9uJGAuXG4gICAgICovXG4gICAgaXRlbVVwZGF0ZU9uTmF2aWdhdGlvbiQsXG4gICAgLyoqXG4gICAgICogVGhpcyBvbmUgbWFrZSBzdXJlIHdlIGFsc28gbGlzdGVuIGZvciBsYXlvdXQgY2hhbmdlIGFuZCB0aGF0IHdlIGV4ZWN1dGUgdGhlIGNvZGUgb25jZSB0aGUgbmF2aWdhdGlvblxuICAgICAqIGhhcyBiZWVuIGFkanVzdGVkICh3aGV0aGVyIGl0J3MgbmVlZGVkIG9yIG5vdCkuXG4gICAgICovXG4gICAgYWRqdXN0TmF2aWdhdGlvbkFmdGVyTGF5b3V0JFxuICApXG4gICAgLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gd2FpdEZvclZpZXdwb3J0RnJlZSRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGZvY3VzZWRTcGluZUl0ZW1JbmRleCA9IHNwaW5lSXRlbU1hbmFnZXIuZ2V0Rm9jdXNlZFNwaW5lSXRlbUluZGV4KClcblxuICAgICAgICAgICAgICBSZXBvcnQubG9nKE5BTUVTUEFDRSwgYHVwZGF0ZSBjb250ZW50c2AsIHsgZm9jdXNlZFNwaW5lSXRlbUluZGV4IH0pXG5cbiAgICAgICAgICAgICAgaWYgKGZvY3VzZWRTcGluZUl0ZW1JbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm5cblxuICAgICAgICAgICAgICBjb25zdCB7IGJlZ2luID0gZm9jdXNlZFNwaW5lSXRlbUluZGV4LCBlbmQgPSBmb2N1c2VkU3BpbmVJdGVtSW5kZXggfSA9IGxvY2F0b3IuZ2V0U3BpbmVJdGVtc0Zyb21SZWFkaW5nT3JkZXJQb3NpdGlvbih2aWV3cG9ydE5hdmlnYXRvci5nZXRDdXJyZW50TmF2aWdhdGlvblBvc2l0aW9uKCkpIHx8IHt9XG5cbiAgICAgICAgICAgICAgaWYgKGJlZ2luICE9PSBmb2N1c2VkU3BpbmVJdGVtSW5kZXggJiYgZW5kICE9PSBmb2N1c2VkU3BpbmVJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBSZXBvcnQud2FybihgQ3VycmVudCB2aWV3cG9ydCBpcyBub3QgaW4gc3luYyB3aXRoIGZvY3VzIGl0ZW0sIGxvYWQgZnJvbSBmb2N1cyBpdGVtIHJhdGhlciB0aGFuIHZpZXdwb3J0YClcbiAgICAgICAgICAgICAgICBzcGluZUl0ZW1NYW5hZ2VyLmxvYWRDb250ZW50cyhbZm9jdXNlZFNwaW5lSXRlbUluZGV4LCBmb2N1c2VkU3BpbmVJdGVtSW5kZXhdKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNwaW5lSXRlbU1hbmFnZXIubG9hZENvbnRlbnRzKFtiZWdpbiwgZW5kXSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YWtlKDEpXG4gICAgICAgICAgKVxuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwoY29udGV4dC4kLmRlc3Ryb3kkKVxuICAgICkuc3Vic2NyaWJlKClcblxuICByZXR1cm4ge1xuICAgIHZpZXdwb3J0TmF2aWdhdG9yLFxuICAgIGVsZW1lbnQ6IGNvbnRhaW5lckVsZW1lbnQsXG4gICAgbG9jYXRvcixcbiAgICBzcGluZUl0ZW1Mb2NhdG9yLFxuICAgIGNmaUxvY2F0b3IsXG4gICAgbm9ybWFsaXplRXZlbnRGb3JWaWV3cG9ydDogZXZlbnRzSGVscGVyLm5vcm1hbGl6ZUV2ZW50Rm9yVmlld3BvcnQsXG4gICAgbWFuaXB1bGF0ZVNwaW5lSXRlbXMsXG4gICAgbGF5b3V0OiAoKSA9PiBsYXlvdXRTdWJqZWN0JC5uZXh0KCksXG4gICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgdmlld3BvcnROYXZpZ2F0b3IuZGVzdHJveSgpXG4gICAgICBob29rRGVzdHJveUl0ZW1PbkNyZWF0ZUZ1bmN0aW9ucy5mb3JFYWNoKChmbikgPT4ge1xuICAgICAgICBpZiAoYHVuc3Vic2NyaWJlYCBpbiBmbikge1xuICAgICAgICAgIGZuLnVuc3Vic2NyaWJlKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmbigpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICBob29rRGVzdHJveUl0ZW1PbkNyZWF0ZUZ1bmN0aW9ucyA9IFtdXG4gICAgICBzcGluZUl0ZW1NYW5hZ2VyLmRlc3Ryb3koKVxuICAgICAgc2VsZWN0aW9uU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpXG4gICAgICBjb250YWluZXJFbGVtZW50LnJlbW92ZSgpXG4gICAgfSxcbiAgICBpc1NlbGVjdGluZzogKCkgPT4gc3BpbmVJdGVtTWFuYWdlci5nZXRGb2N1c2VkU3BpbmVJdGVtKCk/LnNlbGVjdGlvblRyYWNrZXIuaXNTZWxlY3RpbmcoKSxcbiAgICBnZXRTZWxlY3Rpb246ICgpID0+IHNwaW5lSXRlbU1hbmFnZXIuZ2V0Rm9jdXNlZFNwaW5lSXRlbSgpPy5zZWxlY3Rpb25UcmFja2VyLmdldFNlbGVjdGlvbigpLFxuICAgICQ6IHtcbiAgICAgICQ6IHN1YmplY3QuYXNPYnNlcnZhYmxlKCksXG4gICAgICB2aWV3cG9ydFN0YXRlJDogdmlld3BvcnROYXZpZ2F0b3IuJC5zdGF0ZSQsXG4gICAgICBsYXlvdXQkOiBzcGluZUl0ZW1NYW5hZ2VyLiQubGF5b3V0JFxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBjcmVhdGVDb250YWluZXJFbGVtZW50ID0gKGRvYzogRG9jdW1lbnQsIGhvb2tzJDogQmVoYXZpb3JTdWJqZWN0PEhvb2tbXT4pID0+IHtcbiAgY29uc3QgZWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudChgZGl2YClcbiAgZWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gYFxuICAgIGhlaWdodDogMTAwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGBcbiAgLyoqXG4gICAqIEJld2FyZSBvZiB0aGlzIHByb3BlcnR5LCBkbyBub3QgdHJ5IHRvIGNoYW5nZSBhbnl0aGluZyBlbHNlIG9yIHJlbW92ZSBpdC5cbiAgICogVGhpcyBpcyBlYXJseSBmb3JjZWQgb3B0aW1pemF0aW9uIGFuZCBpcyB1c2VkIGZvciB0aGlzIHNwZWNpZmljIGNvbnRleHQuXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3dpbGwtY2hhbmdlXG4gICAqXG4gICAqIEBpbXBvcnRhbnRcbiAgICogVGhpcyBzZWVtcyB0byBiZSByZXNwb25zaWJsZSBmb3IgdGhlIHNjcmVlbiBmcmVlemUgaXNzdWVcbiAgICovXG4gIC8vIGVsZW1lbnQuc3R5bGUud2lsbENoYW5nZSA9IGB0cmFuc2Zvcm1gXG4gIGVsZW1lbnQuc3R5bGUudHJhbnNmb3JtT3JpZ2luID0gYDAgMGBcblxuICByZXR1cm4gaG9va3MkLmdldFZhbHVlKCkucmVkdWNlKChlbGVtZW50LCBob29rKSA9PiB7XG4gICAgaWYgKGhvb2submFtZSA9PT0gYHNwaW5lLm9uQmVmb3JlQ29udGFpbmVyQ3JlYXRlZGApIHtcbiAgICAgIHJldHVybiBob29rLmZuKGVsZW1lbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnRcbiAgfSwgZWxlbWVudClcbn1cblxuZXhwb3J0IHR5cGUgU3BpbmUgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVTcGluZT5cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/spine/createSpine.ts\n");
|
|
330
|
+
|
|
331
|
+
/***/ }),
|
|
332
|
+
|
|
333
|
+
/***/ "./src/spine/eventsHelper.ts":
|
|
334
|
+
/*!***********************************!*\
|
|
335
|
+
!*** ./src/spine/eventsHelper.ts ***!
|
|
336
|
+
\***********************************/
|
|
337
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
338
|
+
|
|
339
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createEventsHelper\": () => (/* binding */ createEventsHelper)\n/* harmony export */ });\n/* harmony import */ var _frames__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../frames */ \"./src/frames.ts\");\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/dom */ \"./src/utils/dom.ts\");\n\n\nconst createEventsHelper = ({ iframeEventBridgeElement, locator }) => {\n const normalizeEventForViewport = (event) => {\n var _a;\n const eventIsComingFromBridge = event.target === iframeEventBridgeElement;\n const iframeOriginalEvent = (0,_frames__WEBPACK_IMPORTED_MODULE_0__.getOriginalFrameEventFromDocumentEvent)(event);\n const originalFrame = (_a = iframeOriginalEvent === null || iframeOriginalEvent === void 0 ? void 0 : iframeOriginalEvent.view) === null || _a === void 0 ? void 0 : _a.frameElement;\n if (!eventIsComingFromBridge || !iframeOriginalEvent || !originalFrame)\n return event;\n const spineItem = locator.getSpineItemFromIframe(originalFrame);\n if (!spineItem)\n return event;\n if ((0,_utils_dom__WEBPACK_IMPORTED_MODULE_1__.isPointerEvent)(event)) {\n const { clientX, clientY } = spineItem.translateFramePositionIntoPage(event);\n const newEvent = new PointerEvent(event.type, Object.assign(Object.assign({}, event), { clientX,\n clientY }));\n Object.defineProperty(newEvent, `target`, { value: iframeOriginalEvent.target, enumerable: true });\n return newEvent;\n }\n if ((0,_utils_dom__WEBPACK_IMPORTED_MODULE_1__.isMouseEvent)(event)) {\n const { clientX, clientY } = spineItem.translateFramePositionIntoPage(event);\n const newEvent = new MouseEvent(event.type, Object.assign(Object.assign({}, event), { clientX,\n clientY }));\n Object.defineProperty(newEvent, `target`, { value: iframeOriginalEvent.target, enumerable: true });\n return newEvent;\n }\n if ((0,_utils_dom__WEBPACK_IMPORTED_MODULE_1__.isTouchEvent)(event)) {\n const touches = Array.from(event.touches).map((touch) => {\n const { clientX, clientY } = spineItem.translateFramePositionIntoPage(touch);\n return new Touch({\n identifier: touch.identifier,\n target: touch.target,\n clientX,\n clientY\n });\n });\n const newEvent = new TouchEvent(event.type, {\n touches,\n changedTouches: touches,\n targetTouches: touches\n });\n Object.defineProperty(newEvent, `target`, { value: iframeOriginalEvent.target, enumerable: true });\n return newEvent;\n }\n return event;\n };\n return {\n normalizeEventForViewport\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RCxPQUFPO1FBQ0wseUJBQXlCO0tBQzFCO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0Bwcm9zZS1yZWFkZXIvY29yZS8uL3NyYy9zcGluZS9ldmVudHNIZWxwZXIudHM/ZTJhNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4uL2NvbnRleHRcIlxuaW1wb3J0IHsgZ2V0T3JpZ2luYWxGcmFtZUV2ZW50RnJvbURvY3VtZW50RXZlbnQgfSBmcm9tIFwiLi4vZnJhbWVzXCJcbmltcG9ydCB7IFNwaW5lSXRlbU1hbmFnZXIgfSBmcm9tIFwiLi4vc3BpbmVJdGVtTWFuYWdlclwiXG5pbXBvcnQgeyBpc01vdXNlRXZlbnQsIGlzUG9pbnRlckV2ZW50LCBpc1RvdWNoRXZlbnQgfSBmcm9tIFwiLi4vdXRpbHMvZG9tXCJcbmltcG9ydCB7IGNyZWF0ZUxvY2F0aW9uUmVzb2x2ZXIgfSBmcm9tIFwiLi9sb2NhdGlvblJlc29sdmVyXCJcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUV2ZW50c0hlbHBlciA9ICh7IGlmcmFtZUV2ZW50QnJpZGdlRWxlbWVudCwgbG9jYXRvciB9OiB7XG4gIGlmcmFtZUV2ZW50QnJpZGdlRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIHNwaW5lSXRlbU1hbmFnZXI6IFNwaW5lSXRlbU1hbmFnZXIsXG4gIGNvbnRleHQ6IENvbnRleHQsXG4gIGxvY2F0b3I6IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUxvY2F0aW9uUmVzb2x2ZXI+XG59KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZUV2ZW50Rm9yVmlld3BvcnQgPSA8RSBleHRlbmRzIChNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCB8IFBvaW50ZXJFdmVudCk+KGV2ZW50OiBFKSA9PiB7XG4gICAgY29uc3QgZXZlbnRJc0NvbWluZ0Zyb21CcmlkZ2UgPSBldmVudC50YXJnZXQgPT09IGlmcmFtZUV2ZW50QnJpZGdlRWxlbWVudFxuICAgIGNvbnN0IGlmcmFtZU9yaWdpbmFsRXZlbnQgPSBnZXRPcmlnaW5hbEZyYW1lRXZlbnRGcm9tRG9jdW1lbnRFdmVudChldmVudClcbiAgICBjb25zdCBvcmlnaW5hbEZyYW1lID0gaWZyYW1lT3JpZ2luYWxFdmVudD8udmlldz8uZnJhbWVFbGVtZW50XG5cbiAgICBpZiAoIWV2ZW50SXNDb21pbmdGcm9tQnJpZGdlIHx8ICFpZnJhbWVPcmlnaW5hbEV2ZW50IHx8ICFvcmlnaW5hbEZyYW1lKSByZXR1cm4gZXZlbnRcblxuICAgIGNvbnN0IHNwaW5lSXRlbSA9IGxvY2F0b3IuZ2V0U3BpbmVJdGVtRnJvbUlmcmFtZShvcmlnaW5hbEZyYW1lKVxuXG4gICAgaWYgKCFzcGluZUl0ZW0pIHJldHVybiBldmVudFxuXG4gICAgaWYgKGlzUG9pbnRlckV2ZW50KGV2ZW50KSkge1xuICAgICAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBzcGluZUl0ZW0udHJhbnNsYXRlRnJhbWVQb3NpdGlvbkludG9QYWdlKGV2ZW50KVxuXG4gICAgICBjb25zdCBuZXdFdmVudCA9IG5ldyBQb2ludGVyRXZlbnQoZXZlbnQudHlwZSwge1xuICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgY2xpZW50WCxcbiAgICAgICAgY2xpZW50WVxuICAgICAgfSkgYXMgRVxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3RXZlbnQsIGB0YXJnZXRgLCB7IHZhbHVlOiBpZnJhbWVPcmlnaW5hbEV2ZW50LnRhcmdldCwgZW51bWVyYWJsZTogdHJ1ZSB9KVxuXG4gICAgICByZXR1cm4gbmV3RXZlbnRcbiAgICB9XG5cbiAgICBpZiAoaXNNb3VzZUV2ZW50KGV2ZW50KSkge1xuICAgICAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBzcGluZUl0ZW0udHJhbnNsYXRlRnJhbWVQb3NpdGlvbkludG9QYWdlKGV2ZW50KVxuXG4gICAgICBjb25zdCBuZXdFdmVudCA9IG5ldyBNb3VzZUV2ZW50KGV2ZW50LnR5cGUsIHtcbiAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgIGNsaWVudFgsXG4gICAgICAgIGNsaWVudFlcbiAgICAgIH0pIGFzIEVcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld0V2ZW50LCBgdGFyZ2V0YCwgeyB2YWx1ZTogaWZyYW1lT3JpZ2luYWxFdmVudC50YXJnZXQsIGVudW1lcmFibGU6IHRydWUgfSlcblxuICAgICAgcmV0dXJuIG5ld0V2ZW50XG4gICAgfVxuXG4gICAgaWYgKGlzVG91Y2hFdmVudChldmVudCkpIHtcbiAgICAgIGNvbnN0IHRvdWNoZXMgPSBBcnJheS5mcm9tKGV2ZW50LnRvdWNoZXMpLm1hcChcbiAgICAgICAgKHRvdWNoKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBzcGluZUl0ZW0udHJhbnNsYXRlRnJhbWVQb3NpdGlvbkludG9QYWdlKHRvdWNoKVxuXG4gICAgICAgICAgcmV0dXJuIG5ldyBUb3VjaCh7XG4gICAgICAgICAgICBpZGVudGlmaWVyOiB0b3VjaC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgdGFyZ2V0OiB0b3VjaC50YXJnZXQsXG4gICAgICAgICAgICBjbGllbnRYLFxuICAgICAgICAgICAgY2xpZW50WVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIClcblxuICAgICAgY29uc3QgbmV3RXZlbnQgPSBuZXcgVG91Y2hFdmVudChldmVudC50eXBlLCB7XG4gICAgICAgIHRvdWNoZXMsXG4gICAgICAgIGNoYW5nZWRUb3VjaGVzOiB0b3VjaGVzLFxuICAgICAgICB0YXJnZXRUb3VjaGVzOiB0b3VjaGVzXG4gICAgICB9KSBhcyBFXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdFdmVudCwgYHRhcmdldGAsIHsgdmFsdWU6IGlmcmFtZU9yaWdpbmFsRXZlbnQudGFyZ2V0LCBlbnVtZXJhYmxlOiB0cnVlIH0pXG5cbiAgICAgIHJldHVybiBuZXdFdmVudFxuICAgIH1cblxuICAgIHJldHVybiBldmVudFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBub3JtYWxpemVFdmVudEZvclZpZXdwb3J0XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/spine/eventsHelper.ts\n");
|
|
340
|
+
|
|
341
|
+
/***/ }),
|
|
342
|
+
|
|
343
|
+
/***/ "./src/spine/locationResolver.ts":
|
|
344
|
+
/*!***************************************!*\
|
|
345
|
+
!*** ./src/spine/locationResolver.ts ***!
|
|
346
|
+
\***************************************/
|
|
347
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
348
|
+
|
|
349
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createLocationResolver\": () => (/* binding */ createLocationResolver)\n/* harmony export */ });\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../report */ \"./src/report.ts\");\n\nconst createLocationResolver = ({ spineItemManager, context, spineItemLocator }) => {\n const getSpineItemPositionFromSpinePosition = _report__WEBPACK_IMPORTED_MODULE_0__.Report.measurePerformance(`getSpineItemPositionFromSpinePosition`, 10, (position, spineItem) => {\n const { leftEnd, leftStart, topStart, topEnd } = spineItemManager.getAbsolutePositionOf(spineItem);\n if (context.isRTL()) {\n return {\n x: (leftEnd - position.x) - context.getPageSize().width,\n y: Math.max(0, position.y - topStart)\n };\n }\n return {\n x: Math.max(0, position.x - leftStart),\n y: Math.max(0, position.y - topStart)\n };\n }, { disable: true });\n const getSpinePositionFromSpineItemPosition = (spineItemPosition, spineItem) => {\n const { leftEnd, leftStart, topStart, topEnd } = spineItemManager.getAbsolutePositionOf(spineItem);\n if (context.isRTL()) {\n return {\n x: (leftEnd - spineItemPosition.x) - context.getPageSize().width,\n y: topStart + spineItemPosition.y\n };\n }\n return {\n x: leftStart + spineItemPosition.x,\n y: topStart + spineItemPosition.y\n };\n };\n const getSpineItemFromPosition = _report__WEBPACK_IMPORTED_MODULE_0__.Report.measurePerformance(`getSpineItemFromOffset`, 10, (position) => {\n const spineItem = spineItemManager.getSpineItemAtPosition(position);\n return spineItem;\n }, { disable: true });\n const getSpinePositionFromSpineItem = (spineItem) => {\n return getSpinePositionFromSpineItemPosition({ x: 0, y: 0 }, spineItem);\n };\n const getSpinePositionFromSpineItemAnchor = (anchor, spineItem) => {\n const spineItemOffset = spineItemLocator.getSpineItemOffsetFromAnchor(anchor, spineItem);\n const position = getSpinePositionFromSpineItemPosition({ x: spineItemOffset, y: 0 }, spineItem);\n return position;\n };\n const getSpineItemsFromReadingOrderPosition = (position) => {\n var _a;\n const beginItem = getSpineItemFromPosition(position) || spineItemManager.getFocusedSpineItem();\n const beginItemIndex = spineItemManager.getSpineItemIndex(beginItem);\n if (beginItemIndex === undefined)\n return undefined;\n let endPosition = position;\n if (context.shouldDisplaySpread()) {\n endPosition = { x: position.x + context.getPageSize().width, y: position.y };\n }\n const endItemIndex = (_a = spineItemManager.getSpineItemIndex(getSpineItemFromPosition(endPosition) || spineItemManager.getFocusedSpineItem())) !== null && _a !== void 0 ? _a : beginItemIndex;\n const [left = beginItemIndex, right = beginItemIndex] = [beginItemIndex, endItemIndex].sort((a, b) => a - b);\n return {\n begin: beginItemIndex,\n beginPosition: position,\n end: endItemIndex,\n endPosition: endPosition,\n left,\n right\n };\n };\n const getSpineItemFromIframe = (iframe) => {\n return spineItemManager.getAll().find(item => item.spineItemFrame.getFrameElement() === iframe);\n };\n const getSpineItemPageIndexFromNode = (node, offset, spineItemOrIndex) => {\n if (typeof spineItemOrIndex === `number`) {\n const spineItem = spineItemManager.get(spineItemOrIndex);\n return spineItem ? spineItemLocator.getSpineItemPageIndexFromNode(node, offset || 0, spineItem) : undefined;\n }\n return spineItemLocator.getSpineItemPageIndexFromNode(node, offset || 0, spineItemOrIndex);\n };\n return {\n getSpinePositionFromSpineItemPosition,\n getSpinePositionFromSpineItem,\n getSpinePositionFromSpineItemAnchor,\n getSpineItemPositionFromSpinePosition,\n getSpineItemFromPosition,\n getSpineItemFromIframe,\n getSpineItemPageIndexFromNode,\n getSpineItemsFromReadingOrderPosition\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3BpbmUvbG9jYXRpb25SZXNvbHZlci50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUlrQztBQUszQixNQUFNLHNCQUFzQixHQUFHLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBSW5GLEVBQUUsRUFBRTtJQUNILE1BQU0scUNBQXFDLEdBQUcsOERBQXlCLENBQUMsdUNBQXVDLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBdUIsRUFBRSxTQUFvQixFQUFxQixFQUFFO1FBQ3hMLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUM7UUFlbEcsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsT0FBTztnQkFDTCxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLO2dCQUV2RCxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7YUFDdEM7U0FDRjtRQUVELE9BQU87WUFRTCxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7WUFDdEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0lBWXJCLE1BQU0scUNBQXFDLEdBQUcsQ0FBQyxpQkFBb0MsRUFBRSxTQUFvQixFQUFpQixFQUFFO1FBQzFILE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUM7UUFlbEcsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsT0FBTztnQkFDTCxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUs7Z0JBRWhFLENBQUMsRUFBRSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsQ0FBQzthQUNsQztTQUNGO1FBR0QsT0FBTztZQUNMLENBQUMsRUFBRSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztZQUNsQyxDQUFDLEVBQUUsUUFBUSxHQUFHLGlCQUFpQixDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBS0QsTUFBTSx3QkFBd0IsR0FBRyw4REFBeUIsQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUF1QixFQUFFLEVBQUU7UUFDbkgsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDO1FBRW5FLE9BQU8sU0FBUztJQUNsQixDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFFckIsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLFNBQW9CLEVBQUUsRUFBRTtRQUM3RCxPQUFPLHFDQUFxQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxNQUFNLG1DQUFtQyxHQUFHLENBQUMsTUFBYyxFQUFFLFNBQW9CLEVBQUUsRUFBRTtRQUNuRixNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO1FBRXhGLE1BQU0sUUFBUSxHQUFHLHFDQUFxQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDO1FBRS9GLE9BQU8sUUFBUTtJQUNqQixDQUFDO0lBRUQsTUFBTSxxQ0FBcUMsR0FBRyxDQUFDLFFBQXVCLEVBT3hELEVBQUU7O1FBQ2QsTUFBTSxTQUFTLEdBQUcsd0JBQXdCLENBQUMsUUFBUSxDQUFDLElBQUksZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUU7UUFDOUYsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDO1FBRXBFLElBQUksY0FBYyxLQUFLLFNBQVM7WUFBRSxPQUFPLFNBQVM7UUFFbEQsSUFBSSxXQUFXLEdBQUcsUUFBUTtRQUUxQixJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFO1lBQ2pDLFdBQVcsR0FBRyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUU7U0FDN0U7UUFFRCxNQUFNLFlBQVksR0FBRyxzQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FDckQsd0JBQXdCLENBQUMsV0FBVyxDQUFDLElBQUksZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUUsQ0FDaEYsbUNBQUksY0FBYztRQUVuQixNQUFNLENBQUMsSUFBSSxHQUFHLGNBQWMsRUFBRSxLQUFLLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUc1RyxPQUFPO1lBQ0wsS0FBSyxFQUFFLGNBQWM7WUFDckIsYUFBYSxFQUFFLFFBQVE7WUFDdkIsR0FBRyxFQUFFLFlBQVk7WUFDakIsV0FBVyxFQUFFLFdBQVc7WUFDeEIsSUFBSTtZQUNKLEtBQUs7U0FDTjtJQUNILENBQUM7SUFFRCxNQUFNLHNCQUFzQixHQUFHLENBQUMsTUFBZSxFQUFFLEVBQUU7UUFDakQsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxLQUFLLE1BQU0sQ0FBQztJQUNqRyxDQUFDO0lBRUQsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLElBQVUsRUFBRSxNQUEwQixFQUFFLGdCQUFvQyxFQUFFLEVBQUU7UUFDckgsSUFBSSxPQUFPLGdCQUFnQixLQUFLLFFBQVEsRUFBRTtZQUN4QyxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7WUFDeEQsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQzVHO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztJQUM1RixDQUFDO0lBRUQsT0FBTztRQUNMLHFDQUFxQztRQUNyQyw2QkFBNkI7UUFDN0IsbUNBQW1DO1FBQ25DLHFDQUFxQztRQUNyQyx3QkFBd0I7UUFDeEIsc0JBQXNCO1FBQ3RCLDZCQUE2QjtRQUM3QixxQ0FBcUM7S0FDdEM7QUFDSCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL3NwaW5lL2xvY2F0aW9uUmVzb2x2ZXIudHM/ZDQxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4uL2NvbnRleHRcIlxuaW1wb3J0IHsgU3BpbmVJdGVtIH0gZnJvbSBcIi4uL3NwaW5lSXRlbS9jcmVhdGVTcGluZUl0ZW1cIlxuaW1wb3J0IHsgY3JlYXRlTG9jYXRpb25SZXNvbHZlciBhcyBjcmVhdGVTcGluZUl0ZW1Mb2NhdG9yIH0gZnJvbSBcIi4uL3NwaW5lSXRlbS9sb2NhdGlvblJlc29sdmVyXCJcbmltcG9ydCB7IFNwaW5lSXRlbU1hbmFnZXIgfSBmcm9tIFwiLi4vc3BpbmVJdGVtTWFuYWdlclwiXG5pbXBvcnQgeyBSZXBvcnQgfSBmcm9tIFwiLi4vcmVwb3J0XCJcblxudHlwZSBTcGluZVBvc2l0aW9uID0geyB4OiBudW1iZXIsIHk6IG51bWJlciB9XG50eXBlIFNwaW5lSXRlbVBvc2l0aW9uID0geyB4OiBudW1iZXIsIHk6IG51bWJlciwgb3V0c2lkZU9mQm91bmRhcmllcz86IGJvb2xlYW4gfVxuXG5leHBvcnQgY29uc3QgY3JlYXRlTG9jYXRpb25SZXNvbHZlciA9ICh7IHNwaW5lSXRlbU1hbmFnZXIsIGNvbnRleHQsIHNwaW5lSXRlbUxvY2F0b3IgfToge1xuICBzcGluZUl0ZW1NYW5hZ2VyOiBTcGluZUl0ZW1NYW5hZ2VyLFxuICBjb250ZXh0OiBDb250ZXh0LFxuICBzcGluZUl0ZW1Mb2NhdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVTcGluZUl0ZW1Mb2NhdG9yPlxufSkgPT4ge1xuICBjb25zdCBnZXRTcGluZUl0ZW1Qb3NpdGlvbkZyb21TcGluZVBvc2l0aW9uID0gUmVwb3J0Lm1lYXN1cmVQZXJmb3JtYW5jZShgZ2V0U3BpbmVJdGVtUG9zaXRpb25Gcm9tU3BpbmVQb3NpdGlvbmAsIDEwLCAocG9zaXRpb246IFNwaW5lUG9zaXRpb24sIHNwaW5lSXRlbTogU3BpbmVJdGVtKTogU3BpbmVJdGVtUG9zaXRpb24gPT4ge1xuICAgIGNvbnN0IHsgbGVmdEVuZCwgbGVmdFN0YXJ0LCB0b3BTdGFydCwgdG9wRW5kIH0gPSBzcGluZUl0ZW1NYW5hZ2VyLmdldEFic29sdXRlUG9zaXRpb25PZihzcGluZUl0ZW0pXG5cbiAgICAvKipcbiAgICAgKiBGb3IgdGhpcyBjYXNlIHRoZSBnbG9iYWwgb2Zmc2V0IG1vdmUgZnJvbSByaWdodCB0byBsZWZ0IGJ1dCB0aGlzIHNwZWNpZmljIGl0ZW1cbiAgICAgKiByZWFkcyBmcm9tIGxlZnQgdG8gcmlnaHQuIFRoaXMgbWVhbnMgdGhhdCB3aGVuIHRoZSBvZmZzZXQgaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpdGVtXG4gICAgICogaXQgaXMgaW4gZmFjdCBhdCBoaXMgZW5kLiBUaGlzIGJlaGF2aW9yIGNhbiBiZSBvYnNlcnZlZCBpbiBgaGFydWtvYCBhYm91dCBjaGFwdGVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZ2xvYmFsIG9mZnNldFxuICAgICAqIGl0ZW0gb2Zmc2V0IC0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgKiBbaXRlbTIgKHBhZ2UwIC0gcGFnZTEgLSBwYWdlMildIFtpdGVtMSAocGFnZTEgLSBwYWdlMCldIFtpdGVtMCAocGFnZTApXVxuICAgICAqL1xuICAgIC8vIGlmIChjb250ZXh0LmlzUlRMKCkgJiYgaXRlbVJlYWRpbmdEaXJlY3Rpb24gPT09ICdsdHInKSB7XG4gICAgLy8gICByZXR1cm4gKGVuZCAtIHJlYWRpbmdPcmRlclZpZXdPZmZzZXQpIC0gY29udGV4dC5nZXRQYWdlU2l6ZSgpLndpZHRoXG4gICAgLy8gfVxuXG4gICAgaWYgKGNvbnRleHQuaXNSVEwoKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogKGxlZnRFbmQgLSBwb3NpdGlvbi54KSAtIGNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aCxcbiAgICAgICAgLy8geTogKHRvcEVuZCAtIHBvc2l0aW9uLnkpIC0gY29udGV4dC5nZXRQYWdlU2l6ZSgpLmhlaWdodCxcbiAgICAgICAgeTogTWF0aC5tYXgoMCwgcG9zaXRpb24ueSAtIHRvcFN0YXJ0KVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAvKipcbiAgICAgICAqIHdoZW4gdXNpbmcgc3ByZWFkIHRoZSBpdGVtIGNvdWxkIGJlIG9uIHRoZSByaWdodCBhbmQgdGhlcmVmb3JlIHdpbGwgYmUgbmVnYXRpdmVcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiA0MDAgKHBvc2l0aW9uID0gdmlld3BvcnQpLCBwYWdlIG9mIDIwMFxuICAgICAgICogNDAwIC0gNjAwID0gLTIwMC5cbiAgICAgICAqIEhvd2V2ZXIgd2UgY2FuIGFzc3VtZSB3ZSBhcmUgYXQgMCwgYmVjYXVzZSB3ZSBpbiBmYWN0IGNhbiBzZWUgdGhlIGJlZ2lubmluZyBvZiB0aGUgaXRlbVxuICAgICAgICovXG4gICAgICB4OiBNYXRoLm1heCgwLCBwb3NpdGlvbi54IC0gbGVmdFN0YXJ0KSxcbiAgICAgIHk6IE1hdGgubWF4KDAsIHBvc2l0aW9uLnkgLSB0b3BTdGFydClcbiAgICB9XG4gIH0sIHsgZGlzYWJsZTogdHJ1ZSB9KVxuXG4gIC8qKlxuICAgKiBCZSBjYXJlZnVsIHdoZW4gdXNpbmcgd2l0aCBzcHJlYWQgd2l0aCBSVEwsIHRoaXMgd2lsbCByZXR1cm4gdGhlIHBvc2l0aW9uIGZvciBvbmUgcGFnZSBzaXplLiBUaGlzIGlzIGluIG9yZGVyIHRvIHByZXZlbnQgd3JvbmcgcG9zaXRpb24gd2hlblxuICAgKiBhbiBpdGVtIGlzIG5vdCB0YWtpbmcgdGhlIGVudGlyZSBzcHJlYWQuIFRoYXQgd2F5IHdlIGFsd2F5cyBoYXZlIGEgdmFsaWQgcG9zaXRpb24gZm9yIHRoZSBnaXZlbiBpdGVtLiBIb3dldmVyIHlvdSBuZWVkIHRvIGFkanVzdCBpdFxuICAgKiB3aGVuIG9uIHNwcmVhZCBtb2RlIHRvIGJlIHN1cmUgdG8gcG9zaXRpb24gdGhlIHZpZXdwb3J0IG9uIHRoZSBlZGdlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBbICAgIGl0ZW0tYSAgIHwgICBpdGVtLWEgICBdXG4gICAqIDQwMCAgICAgICAgICAyMDAgICAgICAgICAgIDBcbiAgICogd2lsbCByZXR1cm4gMjAwLCB3aGljaCBwcm9iYWJseSBuZWVkcyB0byBiZSBhZGp1c3RlZCBhcyAwXG4gICAqL1xuICBjb25zdCBnZXRTcGluZVBvc2l0aW9uRnJvbVNwaW5lSXRlbVBvc2l0aW9uID0gKHNwaW5lSXRlbVBvc2l0aW9uOiBTcGluZUl0ZW1Qb3NpdGlvbiwgc3BpbmVJdGVtOiBTcGluZUl0ZW0pOiBTcGluZVBvc2l0aW9uID0+IHtcbiAgICBjb25zdCB7IGxlZnRFbmQsIGxlZnRTdGFydCwgdG9wU3RhcnQsIHRvcEVuZCB9ID0gc3BpbmVJdGVtTWFuYWdlci5nZXRBYnNvbHV0ZVBvc2l0aW9uT2Yoc3BpbmVJdGVtKVxuXG4gICAgLyoqXG4gICAgICogRm9yIHRoaXMgY2FzZSB0aGUgZ2xvYmFsIG9mZnNldCBtb3ZlIGZyb20gcmlnaHQgdG8gbGVmdCBidXQgdGhpcyBzcGVjaWZpYyBpdGVtXG4gICAgICogcmVhZHMgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBUaGlzIG1lYW5zIHRoYXQgd2hlbiB0aGUgb2Zmc2V0IGlzIGF0IHRoZSBzdGFydCBvZiB0aGUgaXRlbVxuICAgICAqIGl0IGlzIGluIGZhY3QgYXQgaGlzIGVuZC4gVGhpcyBiZWhhdmlvciBjYW4gYmUgb2JzZXJ2ZWQgaW4gYGhhcnVrb2AgYWJvdXQgY2hhcHRlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGdsb2JhbCBvZmZzZXRcbiAgICAgKiBpdGVtIG9mZnNldCAtLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgICogW2l0ZW0yIChwYWdlMCAtIHBhZ2UxIC0gcGFnZTIpXSBbaXRlbTEgKHBhZ2UxIC0gcGFnZTApXSBbaXRlbTAgKHBhZ2UwKV1cbiAgICAgKi9cbiAgICAvLyBpZiAoY29udGV4dC5pc1JUTCgpICYmIGl0ZW1SZWFkaW5nRGlyZWN0aW9uID09PSAnbHRyJykge1xuICAgIC8vICAgcmV0dXJuIChlbmQgLSBzcGluZUl0ZW1PZmZzZXQpIC0gY29udGV4dC5nZXRQYWdlU2l6ZSgpLndpZHRoXG4gICAgLy8gfVxuXG4gICAgaWYgKGNvbnRleHQuaXNSVEwoKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogKGxlZnRFbmQgLSBzcGluZUl0ZW1Qb3NpdGlvbi54KSAtIGNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aCxcbiAgICAgICAgLy8geTogKHRvcEVuZCAtIHNwaW5lSXRlbVBvc2l0aW9uLnkpIC0gY29udGV4dC5nZXRQYWdlU2l6ZSgpLmhlaWdodCxcbiAgICAgICAgeTogdG9wU3RhcnQgKyBzcGluZUl0ZW1Qb3NpdGlvbi55XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY29uc29sZS53YXJuKHsgbGVmdEVuZCwgbGVmdFN0YXJ0LCB0b3BTdGFydCwgdG9wRW5kIH0pXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IGxlZnRTdGFydCArIHNwaW5lSXRlbVBvc2l0aW9uLngsXG4gICAgICB5OiB0b3BTdGFydCArIHNwaW5lSXRlbVBvc2l0aW9uLnlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyB3aWxsIHJldHJpZXZlIHRoZSBjbG9zZXN0IGl0ZW0gdG8gdGhlIHggLyB5IHBvc2l0aW9uIGVkZ2UgcmVsYXRpdmUgdG8gdGhlIHJlYWRpbmcgZGlyZWN0aW9uLlxuICAgKi9cbiAgY29uc3QgZ2V0U3BpbmVJdGVtRnJvbVBvc2l0aW9uID0gUmVwb3J0Lm1lYXN1cmVQZXJmb3JtYW5jZShgZ2V0U3BpbmVJdGVtRnJvbU9mZnNldGAsIDEwLCAocG9zaXRpb246IFNwaW5lUG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzcGluZUl0ZW0gPSBzcGluZUl0ZW1NYW5hZ2VyLmdldFNwaW5lSXRlbUF0UG9zaXRpb24ocG9zaXRpb24pXG5cbiAgICByZXR1cm4gc3BpbmVJdGVtXG4gIH0sIHsgZGlzYWJsZTogdHJ1ZSB9KVxuXG4gIGNvbnN0IGdldFNwaW5lUG9zaXRpb25Gcm9tU3BpbmVJdGVtID0gKHNwaW5lSXRlbTogU3BpbmVJdGVtKSA9PiB7XG4gICAgcmV0dXJuIGdldFNwaW5lUG9zaXRpb25Gcm9tU3BpbmVJdGVtUG9zaXRpb24oeyB4OiAwLCB5OiAwIH0sIHNwaW5lSXRlbSlcbiAgfVxuXG4gIGNvbnN0IGdldFNwaW5lUG9zaXRpb25Gcm9tU3BpbmVJdGVtQW5jaG9yID0gKGFuY2hvcjogc3RyaW5nLCBzcGluZUl0ZW06IFNwaW5lSXRlbSkgPT4ge1xuICAgIGNvbnN0IHNwaW5lSXRlbU9mZnNldCA9IHNwaW5lSXRlbUxvY2F0b3IuZ2V0U3BpbmVJdGVtT2Zmc2V0RnJvbUFuY2hvcihhbmNob3IsIHNwaW5lSXRlbSlcblxuICAgIGNvbnN0IHBvc2l0aW9uID0gZ2V0U3BpbmVQb3NpdGlvbkZyb21TcGluZUl0ZW1Qb3NpdGlvbih7IHg6IHNwaW5lSXRlbU9mZnNldCwgeTogMCB9LCBzcGluZUl0ZW0pXG5cbiAgICByZXR1cm4gcG9zaXRpb25cbiAgfVxuXG4gIGNvbnN0IGdldFNwaW5lSXRlbXNGcm9tUmVhZGluZ09yZGVyUG9zaXRpb24gPSAocG9zaXRpb246IFNwaW5lUG9zaXRpb24pOiB7XG4gICAgbGVmdDogbnVtYmVyLFxuICAgIHJpZ2h0OiBudW1iZXIsXG4gICAgYmVnaW46IG51bWJlcixcbiAgICBiZWdpblBvc2l0aW9uOiBTcGluZVBvc2l0aW9uXG4gICAgZW5kOiBudW1iZXJcbiAgICBlbmRQb3NpdGlvbjogU3BpbmVQb3NpdGlvblxuICB9IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBiZWdpbkl0ZW0gPSBnZXRTcGluZUl0ZW1Gcm9tUG9zaXRpb24ocG9zaXRpb24pIHx8IHNwaW5lSXRlbU1hbmFnZXIuZ2V0Rm9jdXNlZFNwaW5lSXRlbSgpXG4gICAgY29uc3QgYmVnaW5JdGVtSW5kZXggPSBzcGluZUl0ZW1NYW5hZ2VyLmdldFNwaW5lSXRlbUluZGV4KGJlZ2luSXRlbSlcblxuICAgIGlmIChiZWdpbkl0ZW1JbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBsZXQgZW5kUG9zaXRpb24gPSBwb3NpdGlvblxuXG4gICAgaWYgKGNvbnRleHQuc2hvdWxkRGlzcGxheVNwcmVhZCgpKSB7XG4gICAgICBlbmRQb3NpdGlvbiA9IHsgeDogcG9zaXRpb24ueCArIGNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aCwgeTogcG9zaXRpb24ueSB9XG4gICAgfVxuXG4gICAgY29uc3QgZW5kSXRlbUluZGV4ID0gc3BpbmVJdGVtTWFuYWdlci5nZXRTcGluZUl0ZW1JbmRleChcbiAgICAgIGdldFNwaW5lSXRlbUZyb21Qb3NpdGlvbihlbmRQb3NpdGlvbikgfHwgc3BpbmVJdGVtTWFuYWdlci5nZXRGb2N1c2VkU3BpbmVJdGVtKClcbiAgICApID8/IGJlZ2luSXRlbUluZGV4XG5cbiAgICBjb25zdCBbbGVmdCA9IGJlZ2luSXRlbUluZGV4LCByaWdodCA9IGJlZ2luSXRlbUluZGV4XSA9IFtiZWdpbkl0ZW1JbmRleCwgZW5kSXRlbUluZGV4XS5zb3J0KChhLCBiKSA9PiBhIC0gYilcbiAgICAvLyBjb25zdCBbbGVmdCA9IGJlZ2luSXRlbUluZGV4LCByaWdodCA9IGJlZ2luSXRlbUluZGV4XSA9IFtiZWdpbkl0ZW1JbmRleCwgZW5kSXRlbUluZGV4XS5zb3J0KClcblxuICAgIHJldHVybiB7XG4gICAgICBiZWdpbjogYmVnaW5JdGVtSW5kZXgsXG4gICAgICBiZWdpblBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICAgIGVuZDogZW5kSXRlbUluZGV4LFxuICAgICAgZW5kUG9zaXRpb246IGVuZFBvc2l0aW9uLFxuICAgICAgbGVmdCxcbiAgICAgIHJpZ2h0XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZ2V0U3BpbmVJdGVtRnJvbUlmcmFtZSA9IChpZnJhbWU6IEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gc3BpbmVJdGVtTWFuYWdlci5nZXRBbGwoKS5maW5kKGl0ZW0gPT4gaXRlbS5zcGluZUl0ZW1GcmFtZS5nZXRGcmFtZUVsZW1lbnQoKSA9PT0gaWZyYW1lKVxuICB9XG5cbiAgY29uc3QgZ2V0U3BpbmVJdGVtUGFnZUluZGV4RnJvbU5vZGUgPSAobm9kZTogTm9kZSwgb2Zmc2V0OiBudW1iZXIgfCB1bmRlZmluZWQsIHNwaW5lSXRlbU9ySW5kZXg6IFNwaW5lSXRlbSB8IG51bWJlcikgPT4ge1xuICAgIGlmICh0eXBlb2Ygc3BpbmVJdGVtT3JJbmRleCA9PT0gYG51bWJlcmApIHtcbiAgICAgIGNvbnN0IHNwaW5lSXRlbSA9IHNwaW5lSXRlbU1hbmFnZXIuZ2V0KHNwaW5lSXRlbU9ySW5kZXgpXG4gICAgICByZXR1cm4gc3BpbmVJdGVtID8gc3BpbmVJdGVtTG9jYXRvci5nZXRTcGluZUl0ZW1QYWdlSW5kZXhGcm9tTm9kZShub2RlLCBvZmZzZXQgfHwgMCwgc3BpbmVJdGVtKSA6IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiBzcGluZUl0ZW1Mb2NhdG9yLmdldFNwaW5lSXRlbVBhZ2VJbmRleEZyb21Ob2RlKG5vZGUsIG9mZnNldCB8fCAwLCBzcGluZUl0ZW1PckluZGV4KVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXRTcGluZVBvc2l0aW9uRnJvbVNwaW5lSXRlbVBvc2l0aW9uLFxuICAgIGdldFNwaW5lUG9zaXRpb25Gcm9tU3BpbmVJdGVtLFxuICAgIGdldFNwaW5lUG9zaXRpb25Gcm9tU3BpbmVJdGVtQW5jaG9yLFxuICAgIGdldFNwaW5lSXRlbVBvc2l0aW9uRnJvbVNwaW5lUG9zaXRpb24sXG4gICAgZ2V0U3BpbmVJdGVtRnJvbVBvc2l0aW9uLFxuICAgIGdldFNwaW5lSXRlbUZyb21JZnJhbWUsXG4gICAgZ2V0U3BpbmVJdGVtUGFnZUluZGV4RnJvbU5vZGUsXG4gICAgZ2V0U3BpbmVJdGVtc0Zyb21SZWFkaW5nT3JkZXJQb3NpdGlvblxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/spine/locationResolver.ts\n");
|
|
350
|
+
|
|
351
|
+
/***/ }),
|
|
352
|
+
|
|
353
|
+
/***/ "./src/spine/navigationResolver.ts":
|
|
354
|
+
/*!*****************************************!*\
|
|
355
|
+
!*** ./src/spine/navigationResolver.ts ***!
|
|
356
|
+
\*****************************************/
|
|
357
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
358
|
+
|
|
359
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createNavigationResolver\": () => (/* binding */ createNavigationResolver)\n/* harmony export */ });\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../report */ \"./src/report.ts\");\n/* harmony import */ var _spineItem_navigationResolver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../spineItem/navigationResolver */ \"./src/spineItem/navigationResolver.ts\");\n\n\nconst NAMESPACE = `spineNavigator`;\nconst createNavigationResolver = ({ context, spineItemManager, cfiLocator, locator }) => {\n const spineItemNavigator = (0,_spineItem_navigationResolver__WEBPACK_IMPORTED_MODULE_1__.createNavigationResolver)({ context });\n const arePositionsDifferent = (a, b) => a.x !== b.x || a.y !== b.y;\n const areNavigationDifferent = (a, b) => arePositionsDifferent(a, b) || ((!!a.spineItem && !!b.spineItem) && (a.spineItem !== b.spineItem));\n const wrapPositionWithSafeEdge = _report__WEBPACK_IMPORTED_MODULE_0__.Report.measurePerformance(`${NAMESPACE} wrapPositionWithSafeEdge`, 1, (position) => {\n const lastSpineItem = spineItemManager.get(spineItemManager.getLength() - 1);\n const distanceOfLastSpineItem = spineItemManager.getAbsolutePositionOf(lastSpineItem || 0);\n const maximumXOffset = distanceOfLastSpineItem.leftEnd - context.getPageSize().width;\n const maximumYOffset = distanceOfLastSpineItem.topEnd - context.getPageSize().height;\n return {\n x: Math.min(Math.max(0, position.x), maximumXOffset),\n y: Math.min(Math.max(0, position.y), maximumYOffset)\n };\n }, { disable: true });\n const getAdjustedPositionForSpread = ({ x, y }) => {\n const isOffsetNotAtEdge = (x % context.getVisibleAreaRect().width) !== 0;\n const correctedX = isOffsetNotAtEdge ? x - context.getPageSize().width : x;\n return { x: correctedX, y };\n };\n const getNavigationForCfi = (cfi) => {\n const spineItem = cfiLocator.getSpineItemFromCfi(cfi);\n const { node, offset = 0 } = cfiLocator.resolveCfi(cfi) || {};\n if (!spineItem) {\n _report__WEBPACK_IMPORTED_MODULE_0__.Report.warn(NAMESPACE, `unable to detect item id from cfi ${cfi}`);\n }\n else {\n const spineItemNavigation = node ? spineItemNavigator.getNavigationFromNode(spineItem, node, offset) : { x: 0, y: 0 };\n const readingPosition = locator.getSpinePositionFromSpineItemPosition(spineItemNavigation, spineItem);\n return Object.assign(Object.assign({}, getAdjustedPositionForSpread(readingPosition)), { spineItem });\n }\n return { x: 0, y: 0 };\n };\n const getNavigationForPage = (pageIndex, spineItem) => {\n if (!spineItem) {\n const xPositionForPageIndex = pageIndex * context.getPageSize().width;\n return getNavigationForPosition({ x: xPositionForPageIndex, y: 0 });\n }\n const spineItemNavigation = spineItemNavigator.getNavigationForPage(pageIndex, spineItem);\n const readingOffset = locator.getSpinePositionFromSpineItemPosition(spineItemNavigation, spineItem);\n return getAdjustedPositionForSpread(readingOffset);\n };\n const getNavigationForLastPage = (spineItem) => {\n const spineItemNavigation = spineItemNavigator.getNavigationForLastPage(spineItem);\n const position = locator.getSpinePositionFromSpineItemPosition(spineItemNavigation, spineItem);\n return getAdjustedPositionForSpread(position);\n };\n const getNavigationForSpineIndexOrId = (indexOrId) => {\n const spineItem = spineItemManager.get(indexOrId);\n if (spineItem) {\n const position = locator.getSpinePositionFromSpineItem(spineItem);\n return Object.assign(Object.assign({}, getAdjustedPositionForSpread(position)), { spineItem });\n }\n return { x: 0, y: 0 };\n };\n const getNavigationForRightSinglePage = (position) => {\n const pageTurnDirection = context.getSettings().computedPageTurnDirection;\n const spineItem = locator.getSpineItemFromPosition(position) || spineItemManager.getFocusedSpineItem();\n const defaultNavigation = position;\n if (!spineItem) {\n return defaultNavigation;\n }\n const spineItemPosition = locator.getSpineItemPositionFromSpinePosition(position, spineItem);\n const spineItemNavigationForRightPage = spineItemNavigator.getNavigationForRightPage(spineItemPosition, spineItem);\n const isNewNavigationInCurrentItem = !spineItemPosition.outsideOfBoundaries && arePositionsDifferent(spineItemNavigationForRightPage, spineItemPosition);\n if (!isNewNavigationInCurrentItem) {\n return wrapPositionWithSafeEdge(context.isRTL()\n ? pageTurnDirection === `horizontal`\n ? { x: position.x - context.getPageSize().width, y: 0 }\n : { y: position.y + context.getPageSize().height, x: 0 }\n : pageTurnDirection === `horizontal`\n ? { x: position.x + context.getPageSize().width, y: 0 }\n : { y: position.y + context.getPageSize().height, x: 0 });\n }\n else {\n const readingOrderPosition = locator.getSpinePositionFromSpineItemPosition(spineItemNavigationForRightPage, spineItem);\n return readingOrderPosition;\n }\n };\n const getNavigationForLeftSinglePage = (position) => {\n const pageTurnDirection = context.getSettings().computedPageTurnDirection;\n const spineItem = locator.getSpineItemFromPosition(position) || spineItemManager.getFocusedSpineItem();\n const defaultNavigation = Object.assign(Object.assign({}, position), { spineItem });\n if (!spineItem) {\n return defaultNavigation;\n }\n const spineItemPosition = locator.getSpineItemPositionFromSpinePosition(position, spineItem);\n const spineItemNavigation = spineItemNavigator.getNavigationForLeftPage(spineItemPosition, spineItem);\n const isNewNavigationInCurrentItem = !spineItemPosition.outsideOfBoundaries && arePositionsDifferent(spineItemNavigation, spineItemPosition);\n if (!isNewNavigationInCurrentItem) {\n return wrapPositionWithSafeEdge(context.isRTL()\n ? pageTurnDirection === `horizontal`\n ? { x: position.x + context.getPageSize().width, y: 0 }\n : { y: position.y - context.getPageSize().height, x: 0 }\n : pageTurnDirection === `horizontal`\n ? { x: position.x - context.getPageSize().width, y: 0 }\n : { y: position.y - context.getPageSize().height, x: 0 });\n }\n else {\n const readingOrderPosition = locator.getSpinePositionFromSpineItemPosition(spineItemNavigation, spineItem);\n return readingOrderPosition;\n }\n };\n const getNavigationForRightPage = (position) => {\n const spineItemOnPosition = locator.getSpineItemFromPosition(position) || spineItemManager.getFocusedSpineItem();\n let navigation = getNavigationForRightSinglePage(position);\n if ((spineItemOnPosition === null || spineItemOnPosition === void 0 ? void 0 : spineItemOnPosition.isUsingVerticalWriting()) && position.x === navigation.x) {\n return getAdjustedPositionForSpread(navigation);\n }\n if (context.shouldDisplaySpread()) {\n if ((spineItemOnPosition === null || spineItemOnPosition === void 0 ? void 0 : spineItemOnPosition.isUsingVerticalWriting()) && position.x !== navigation.x) {\n return getAdjustedPositionForSpread(wrapPositionWithSafeEdge(context.isRTL()\n ? Object.assign(Object.assign({}, navigation), { x: navigation.x - context.getPageSize().width }) : Object.assign(Object.assign({}, navigation), { x: navigation.x + context.getPageSize().width })));\n }\n if (context.getSettings().computedPageTurnDirection === `vertical` && position.y !== navigation.y) {\n return getAdjustedPositionForSpread(navigation);\n }\n navigation = getNavigationForRightSinglePage(navigation);\n }\n return getAdjustedPositionForSpread(navigation);\n };\n const getNavigationForLeftPage = (position) => {\n const spineItemOnPosition = locator.getSpineItemFromPosition(position) || spineItemManager.getFocusedSpineItem();\n let navigation = getNavigationForLeftSinglePage(position);\n if ((spineItemOnPosition === null || spineItemOnPosition === void 0 ? void 0 : spineItemOnPosition.isUsingVerticalWriting()) && position.x === navigation.x) {\n return getAdjustedPositionForSpread(navigation);\n }\n if (context.shouldDisplaySpread()) {\n if ((spineItemOnPosition === null || spineItemOnPosition === void 0 ? void 0 : spineItemOnPosition.isUsingVerticalWriting()) && position.x !== navigation.x) {\n return getAdjustedPositionForSpread(wrapPositionWithSafeEdge(context.isRTL()\n ? Object.assign(Object.assign({}, navigation), { x: navigation.x + context.getPageSize().width }) : Object.assign(Object.assign({}, navigation), { x: navigation.x - context.getPageSize().width })));\n }\n if (context.getSettings().computedPageTurnDirection === `vertical` && position.y !== navigation.y) {\n return getAdjustedPositionForSpread(navigation);\n }\n navigation = getNavigationForLeftSinglePage(navigation);\n }\n return getAdjustedPositionForSpread(navigation);\n };\n const getNavigationForUrl = (url) => {\n var _a;\n let validUrl;\n try {\n validUrl = url instanceof URL ? url : new URL(url);\n }\n catch (e) {\n _report__WEBPACK_IMPORTED_MODULE_0__.Report.error(e);\n }\n if (validUrl) {\n const urlWithoutAnchor = `${validUrl.origin}${validUrl.pathname}`;\n const existingSpineItem = (_a = context.getManifest()) === null || _a === void 0 ? void 0 : _a.spineItems.find(item => item.href === urlWithoutAnchor);\n if (existingSpineItem) {\n const spineItem = spineItemManager.get(existingSpineItem.id);\n if (spineItem) {\n const position = getNavigationForAnchor(validUrl.hash, spineItem);\n return Object.assign(Object.assign({}, getAdjustedPositionForSpread(position)), { url: validUrl });\n }\n }\n }\n return undefined;\n };\n const getNavigationForAnchor = (anchor, spineItem) => {\n const position = locator.getSpinePositionFromSpineItemAnchor(anchor, spineItem);\n return getAdjustedPositionForSpread(position);\n };\n const getNavigationForPosition = (viewportPosition) => {\n const spineItem = locator.getSpineItemFromPosition(viewportPosition);\n if (spineItem) {\n const spineItemPosition = locator.getSpineItemPositionFromSpinePosition(viewportPosition, spineItem);\n const spineItemValidPosition = spineItemNavigator.getNavigationForPosition(spineItem, spineItemPosition);\n const viewportNavigation = locator.getSpinePositionFromSpineItemPosition(spineItemValidPosition, spineItem);\n return getAdjustedPositionForSpread(viewportNavigation);\n }\n return { x: 0, y: 0 };\n };\n const getMostPredominantNavigationForPosition = (viewportPosition) => {\n const pageTurnDirection = context.getSettings().computedPageTurnDirection;\n const triggerPercentage = 0.5;\n const triggerXPosition = pageTurnDirection === `horizontal`\n ? viewportPosition.x + (context.getVisibleAreaRect().width * triggerPercentage)\n : 0;\n const triggerYPosition = pageTurnDirection === `horizontal`\n ? 0\n : viewportPosition.y + (context.getVisibleAreaRect().height * triggerPercentage);\n const midScreenPositionSafePosition = wrapPositionWithSafeEdge({ x: triggerXPosition, y: triggerYPosition });\n return getNavigationForPosition(midScreenPositionSafePosition);\n };\n const isNavigationGoingForwardFrom = (to, from) => {\n const pageTurnDirection = context.getSettings().computedPageTurnDirection;\n if (pageTurnDirection === `vertical`) {\n return to.y > from.y;\n }\n return to.x > from.x;\n };\n return {\n getNavigationForCfi,\n getNavigationForPage,\n getNavigationForLastPage,\n getNavigationForSpineIndexOrId,\n getNavigationForRightPage,\n getNavigationForLeftPage,\n getNavigationForUrl,\n getNavigationForAnchor,\n getNavigationForPosition,\n getMostPredominantNavigationForPosition,\n wrapPositionWithSafeEdge,\n isNavigationGoingForwardFrom,\n areNavigationDifferent,\n arePositionsDifferent\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3BpbmUvbmF2aWdhdGlvblJlc29sdmVyLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFrQztBQUlvRTtBQVF0RyxNQUFNLFNBQVMsR0FBRyxnQkFBZ0I7QUFFM0IsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxPQUFPLEVBS3hGLEVBQUUsRUFBRTtJQUNILE1BQU0sa0JBQWtCLEdBQUcsdUZBQXdCLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUVoRSxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBMEIsRUFBRSxDQUEwQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUVwSCxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBMEIsRUFBRSxDQUEwQixFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU3TCxNQUFNLHdCQUF3QixHQUFHLDhEQUF5QixDQUFDLEdBQUcsU0FBUywyQkFBMkIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUEyQixFQUFFLEVBQUU7UUFFckksTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM1RSxNQUFNLHVCQUF1QixHQUFHLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUM7UUFDMUYsTUFBTSxjQUFjLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLO1FBQ3BGLE1BQU0sY0FBYyxHQUFHLHVCQUF1QixDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTTtRQUVwRixPQUFPO1lBQ0wsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQztZQUNwRCxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDO1NBQ3JEO0lBQ0gsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0lBRXJCLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQTJCLEVBQTJCLEVBQUU7UUFDbEcsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3hFLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUU7SUFDN0IsQ0FBQztJQUVELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxHQUFXLEVBQTJCLEVBQUU7UUFDbkUsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQztRQUNyRCxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7UUFFN0QsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLGdEQUFXLENBQUMsU0FBUyxFQUFFLHFDQUFxQyxHQUFHLEVBQUUsQ0FBQztTQUNuRTthQUFNO1lBQ0wsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3JILE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLENBQUM7WUFHckcsdUNBQVksNEJBQTRCLENBQUMsZUFBZSxDQUFDLEtBQUUsU0FBUyxJQUFFO1NBQ3ZFO1FBRUQsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN2QixDQUFDO0lBRUQsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLFNBQWlCLEVBQUUsU0FBcUIsRUFBMkIsRUFBRTtRQUdqRyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2QsTUFBTSxxQkFBcUIsR0FBRyxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUs7WUFDckUsT0FBTyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDcEU7UUFFRCxNQUFNLG1CQUFtQixHQUFHLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7UUFDekYsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLHFDQUFxQyxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQztRQUVuRyxPQUFPLDRCQUE0QixDQUFDLGFBQWEsQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLFNBQW9CLEVBQTJCLEVBQUU7UUFDakYsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQUM7UUFDbEYsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLHFDQUFxQyxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQztRQUU5RixPQUFPLDRCQUE0QixDQUFDLFFBQVEsQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLFNBQTBCLEVBQTJCLEVBQUU7UUFDN0YsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUNqRCxJQUFJLFNBQVMsRUFBRTtZQUNiLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTLENBQUM7WUFFakUsdUNBQVksNEJBQTRCLENBQUMsUUFBUSxDQUFDLEtBQUUsU0FBUyxJQUFFO1NBQ2hFO1FBRUQsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN2QixDQUFDO0lBRUQsTUFBTSwrQkFBK0IsR0FBRyxDQUFDLFFBQTJCLEVBQTJCLEVBQUU7UUFDL0YsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMseUJBQXlCO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxtQkFBbUIsRUFBRTtRQUN0RyxNQUFNLGlCQUFpQixHQUFHLFFBQVE7UUFFbEMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLE9BQU8saUJBQWlCO1NBQ3pCO1FBR0QsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMscUNBQXFDLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQztRQUU1RixNQUFNLCtCQUErQixHQUFHLGtCQUFrQixDQUFDLHlCQUF5QixDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQztRQUVsSCxNQUFNLDRCQUE0QixHQUFHLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLElBQUkscUJBQXFCLENBQUMsK0JBQStCLEVBQUUsaUJBQWlCLENBQUM7UUFHeEosSUFBSSxDQUFDLDRCQUE0QixFQUFFO1lBQ2pDLE9BQU8sd0JBQXdCLENBQzdCLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2IsQ0FBQyxDQUFDLGlCQUFpQixLQUFLLFlBQVk7b0JBQ2xDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtvQkFDdkQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUMxRCxDQUFDLENBQUMsaUJBQWlCLEtBQUssWUFBWTtvQkFDbEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUN2RCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDN0Q7U0FDRjthQUFNO1lBQ0wsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMscUNBQXFDLENBQUMsK0JBQStCLEVBQUUsU0FBUyxDQUFDO1lBRXRILE9BQU8sb0JBQW9CO1NBQzVCO0lBQ0gsQ0FBQztJQUVELE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxRQUEyQixFQUEyQixFQUFFO1FBQzlGLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLHlCQUF5QjtRQUN6RSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLElBQUksZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUU7UUFDdEcsTUFBTSxpQkFBaUIsbUNBQVEsUUFBUSxLQUFFLFNBQVMsR0FBRTtRQUVwRCxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2QsT0FBTyxpQkFBaUI7U0FDekI7UUFFRCxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDO1FBQzVGLE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDO1FBQ3JHLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsSUFBSSxxQkFBcUIsQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQztRQUU1SSxJQUFJLENBQUMsNEJBQTRCLEVBQUU7WUFDakMsT0FBTyx3QkFBd0IsQ0FDN0IsT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDYixDQUFDLENBQUMsaUJBQWlCLEtBQUssWUFBWTtvQkFDbEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUN2RCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQzFELENBQUMsQ0FBQyxpQkFBaUIsS0FBSyxZQUFZO29CQUNsQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7b0JBQ3ZELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUM3RDtTQUNGO2FBQU07WUFDTCxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLENBQUM7WUFFMUcsT0FBTyxvQkFBb0I7U0FDNUI7SUFDSCxDQUFDO0lBU0QsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLFFBQTJCLEVBQTJCLEVBQUU7UUFDekYsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLElBQUksZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUU7UUFFaEgsSUFBSSxVQUFVLEdBQUcsK0JBQStCLENBQUMsUUFBUSxDQUFDO1FBRzFELElBQUksb0JBQW1CLGFBQW5CLG1CQUFtQix1QkFBbkIsbUJBQW1CLENBQUUsc0JBQXNCLEVBQUUsS0FBSSxRQUFRLENBQUMsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDLEVBQUU7WUFDaEYsT0FBTyw0QkFBNEIsQ0FBQyxVQUFVLENBQUM7U0FDaEQ7UUFFRCxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFO1lBS2pDLElBQUksb0JBQW1CLGFBQW5CLG1CQUFtQix1QkFBbkIsbUJBQW1CLENBQUUsc0JBQXNCLEVBQUUsS0FBSSxRQUFRLENBQUMsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2hGLE9BQU8sNEJBQTRCLENBQ2pDLHdCQUF3QixDQUN0QixPQUFPLENBQUMsS0FBSyxFQUFFO29CQUNiLENBQUMsaUNBQ00sVUFBVSxLQUNiLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLElBRWpELENBQUMsaUNBQ00sVUFBVSxLQUNiLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEdBQzlDLENBQ04sQ0FDRjthQUNGO1lBTUQsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMseUJBQXlCLEtBQUssVUFBVSxJQUFJLFFBQVEsQ0FBQyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsRUFBRTtnQkFDakcsT0FBTyw0QkFBNEIsQ0FBQyxVQUFVLENBQUM7YUFDaEQ7WUFFRCxVQUFVLEdBQUcsK0JBQStCLENBQUMsVUFBVSxDQUFDO1NBQ3pEO1FBRUQsT0FBTyw0QkFBNEIsQ0FBQyxVQUFVLENBQUM7SUFDakQsQ0FBQztJQVNELE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxRQUEyQixFQUEyQixFQUFFO1FBQ3hGLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFO1FBRWhILElBQUksVUFBVSxHQUFHLDhCQUE4QixDQUFDLFFBQVEsQ0FBQztRQUd6RCxJQUFJLG9CQUFtQixhQUFuQixtQkFBbUIsdUJBQW5CLG1CQUFtQixDQUFFLHNCQUFzQixFQUFFLEtBQUksUUFBUSxDQUFDLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQyxFQUFFO1lBQ2hGLE9BQU8sNEJBQTRCLENBQUMsVUFBVSxDQUFDO1NBQ2hEO1FBRUQsSUFBSSxPQUFPLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUtqQyxJQUFJLG9CQUFtQixhQUFuQixtQkFBbUIsdUJBQW5CLG1CQUFtQixDQUFFLHNCQUFzQixFQUFFLEtBQUksUUFBUSxDQUFDLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQyxFQUFFO2dCQUNoRixPQUFPLDRCQUE0QixDQUNqQyx3QkFBd0IsQ0FDdEIsT0FBTyxDQUFDLEtBQUssRUFBRTtvQkFDYixDQUFDLGlDQUFNLFVBQVUsS0FBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxJQUNoRSxDQUFDLGlDQUFNLFVBQVUsS0FBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxHQUFFLENBQ3JFLENBQ0Y7YUFDRjtZQU1ELElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLHlCQUF5QixLQUFLLFVBQVUsSUFBSSxRQUFRLENBQUMsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pHLE9BQU8sNEJBQTRCLENBQUMsVUFBVSxDQUFDO2FBQ2hEO1lBRUQsVUFBVSxHQUFHLDhCQUE4QixDQUFDLFVBQVUsQ0FBQztTQUN4RDtRQUVELE9BQU8sNEJBQTRCLENBQUMsVUFBVSxDQUFDO0lBQ2pELENBQUM7SUFFRCxNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBaUIsRUFBc0QsRUFBRTs7UUFDcEcsSUFBSSxRQUF5QjtRQUM3QixJQUFJO1lBQ0YsUUFBUSxHQUFHLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDO1NBQ25EO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixpREFBWSxDQUFDLENBQUMsQ0FBQztTQUNoQjtRQUNELElBQUksUUFBUSxFQUFFO1lBQ1osTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRTtZQUNqRSxNQUFNLGlCQUFpQixHQUFHLGFBQU8sQ0FBQyxXQUFXLEVBQUUsMENBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUM7WUFDeEcsSUFBSSxpQkFBaUIsRUFBRTtnQkFDckIsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztnQkFDNUQsSUFBSSxTQUFTLEVBQUU7b0JBQ2IsTUFBTSxRQUFRLEdBQUcsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7b0JBRWpFLHVDQUFZLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxLQUFFLEdBQUcsRUFBRSxRQUFRLElBQUU7aUJBQ3BFO2FBQ0Y7U0FDRjtRQUVELE9BQU8sU0FBUztJQUNsQixDQUFDO0lBRUQsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLE1BQWMsRUFBRSxTQUFvQixFQUFFLEVBQUU7UUFDdEUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUM7UUFFL0UsT0FBTyw0QkFBNEIsQ0FBQyxRQUFRLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxnQkFBa0MsRUFBRSxFQUFFO1FBQ3RFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUVwRSxJQUFJLFNBQVMsRUFBRTtZQUNiLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLHFDQUFxQyxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQztZQUNwRyxNQUFNLHNCQUFzQixHQUFHLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQztZQUN4RyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQyxzQkFBc0IsRUFBRSxTQUFTLENBQUM7WUFFM0csT0FBTyw0QkFBNEIsQ0FBQyxrQkFBa0IsQ0FBQztTQUN4RDtRQUVELE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdkIsQ0FBQztJQU1ELE1BQU0sdUNBQXVDLEdBQUcsQ0FBQyxnQkFBa0MsRUFBRSxFQUFFO1FBQ3JGLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLHlCQUF5QjtRQUl6RSxNQUFNLGlCQUFpQixHQUFHLEdBQUc7UUFDN0IsTUFBTSxnQkFBZ0IsR0FBRyxpQkFBaUIsS0FBSyxZQUFZO1lBQ3pELENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUM7WUFDL0UsQ0FBQyxDQUFDLENBQUM7UUFDTCxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixLQUFLLFlBQVk7WUFDekQsQ0FBQyxDQUFDLENBQUM7WUFDSCxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsTUFBTSxHQUFHLGlCQUFpQixDQUFDO1FBQ2xGLE1BQU0sNkJBQTZCLEdBQUcsd0JBQXdCLENBQUMsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUM7UUFDNUcsT0FBTyx3QkFBd0IsQ0FBQyw2QkFBNkIsQ0FBQztJQUNoRSxDQUFDO0lBRUQsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLEVBQW9CLEVBQUUsSUFBc0IsRUFBRSxFQUFFO1FBQ3BGLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLHlCQUF5QjtRQUV6RSxJQUFJLGlCQUFpQixLQUFLLFVBQVUsRUFBRTtZQUNwQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDckI7UUFFRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELE9BQU87UUFDTCxtQkFBbUI7UUFDbkIsb0JBQW9CO1FBQ3BCLHdCQUF3QjtRQUN4Qiw4QkFBOEI7UUFDOUIseUJBQXlCO1FBQ3pCLHdCQUF3QjtRQUN4QixtQkFBbUI7UUFDbkIsc0JBQXNCO1FBQ3RCLHdCQUF3QjtRQUN4Qix1Q0FBdUM7UUFDdkMsd0JBQXdCO1FBQ3hCLDRCQUE0QjtRQUM1QixzQkFBc0I7UUFDdEIscUJBQXFCO0tBQ3RCO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0Bwcm9zZS1yZWFkZXIvY29yZS8uL3NyYy9zcGluZS9uYXZpZ2F0aW9uUmVzb2x2ZXIudHM/YjcyMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXBvcnQgfSBmcm9tIFwiLi4vcmVwb3J0XCJcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi4vY29udGV4dFwiXG5pbXBvcnQgeyBTcGluZUl0ZW1NYW5hZ2VyIH0gZnJvbSBcIi4uL3NwaW5lSXRlbU1hbmFnZXJcIlxuaW1wb3J0IHsgU3BpbmVJdGVtIH0gZnJvbSBcIi4uL3NwaW5lSXRlbS9jcmVhdGVTcGluZUl0ZW1cIlxuaW1wb3J0IHsgY3JlYXRlTmF2aWdhdGlvblJlc29sdmVyIGFzIGNyZWF0ZVNwaW5lSXRlbU5hdmlnYXRvciB9IGZyb20gXCIuLi9zcGluZUl0ZW0vbmF2aWdhdGlvblJlc29sdmVyXCJcbmltcG9ydCB7IGNyZWF0ZUxvY2F0aW9uUmVzb2x2ZXIgfSBmcm9tIFwiLi9sb2NhdGlvblJlc29sdmVyXCJcbmltcG9ydCB7IGNyZWF0ZUNmaUxvY2F0b3IgfSBmcm9tIFwiLi9jZmlMb2NhdG9yXCJcblxuZXhwb3J0IHR5cGUgVmlld3BvcnROYXZpZ2F0aW9uRW50cnkgPSB7IHg6IG51bWJlciwgeTogbnVtYmVyLCBzcGluZUl0ZW0/OiBTcGluZUl0ZW0gfVxudHlwZSBWaWV3cG9ydFBvc2l0aW9uID0geyB4OiBudW1iZXIsIHk6IG51bWJlciB9XG50eXBlIFNwaW5lSXRlbVBvc2l0aW9uID0geyB4OiBudW1iZXIsIHk6IG51bWJlciB9XG5cbmNvbnN0IE5BTUVTUEFDRSA9IGBzcGluZU5hdmlnYXRvcmBcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU5hdmlnYXRpb25SZXNvbHZlciA9ICh7IGNvbnRleHQsIHNwaW5lSXRlbU1hbmFnZXIsIGNmaUxvY2F0b3IsIGxvY2F0b3IgfToge1xuICBjb250ZXh0OiBDb250ZXh0LFxuICBzcGluZUl0ZW1NYW5hZ2VyOiBTcGluZUl0ZW1NYW5hZ2VyLFxuICBjZmlMb2NhdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDZmlMb2NhdG9yPixcbiAgbG9jYXRvcjogUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlTG9jYXRpb25SZXNvbHZlcj5cbn0pID0+IHtcbiAgY29uc3Qgc3BpbmVJdGVtTmF2aWdhdG9yID0gY3JlYXRlU3BpbmVJdGVtTmF2aWdhdG9yKHsgY29udGV4dCB9KVxuXG4gIGNvbnN0IGFyZVBvc2l0aW9uc0RpZmZlcmVudCA9IChhOiBWaWV3cG9ydE5hdmlnYXRpb25FbnRyeSwgYjogVmlld3BvcnROYXZpZ2F0aW9uRW50cnkpID0+IGEueCAhPT0gYi54IHx8IGEueSAhPT0gYi55XG5cbiAgY29uc3QgYXJlTmF2aWdhdGlvbkRpZmZlcmVudCA9IChhOiBWaWV3cG9ydE5hdmlnYXRpb25FbnRyeSwgYjogVmlld3BvcnROYXZpZ2F0aW9uRW50cnkpID0+IGFyZVBvc2l0aW9uc0RpZmZlcmVudChhLCBiKSB8fCAoKCEhYS5zcGluZUl0ZW0gJiYgISFiLnNwaW5lSXRlbSkgJiYgKGEuc3BpbmVJdGVtICE9PSBiLnNwaW5lSXRlbSkpXG5cbiAgY29uc3Qgd3JhcFBvc2l0aW9uV2l0aFNhZmVFZGdlID0gUmVwb3J0Lm1lYXN1cmVQZXJmb3JtYW5jZShgJHtOQU1FU1BBQ0V9IHdyYXBQb3NpdGlvbldpdGhTYWZlRWRnZWAsIDEsIChwb3NpdGlvbjogU3BpbmVJdGVtUG9zaXRpb24pID0+IHtcbiAgICAvLyBAdG9kbyB1c2UgY29udGFpbmVyIHdpZHRoIGluc3RlYWQgdG8gaW5jcmVhc2UgcGVyZm9ybWFuY2VzXG4gICAgY29uc3QgbGFzdFNwaW5lSXRlbSA9IHNwaW5lSXRlbU1hbmFnZXIuZ2V0KHNwaW5lSXRlbU1hbmFnZXIuZ2V0TGVuZ3RoKCkgLSAxKVxuICAgIGNvbnN0IGRpc3RhbmNlT2ZMYXN0U3BpbmVJdGVtID0gc3BpbmVJdGVtTWFuYWdlci5nZXRBYnNvbHV0ZVBvc2l0aW9uT2YobGFzdFNwaW5lSXRlbSB8fCAwKVxuICAgIGNvbnN0IG1heGltdW1YT2Zmc2V0ID0gZGlzdGFuY2VPZkxhc3RTcGluZUl0ZW0ubGVmdEVuZCAtIGNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aFxuICAgIGNvbnN0IG1heGltdW1ZT2Zmc2V0ID0gZGlzdGFuY2VPZkxhc3RTcGluZUl0ZW0udG9wRW5kIC0gY29udGV4dC5nZXRQYWdlU2l6ZSgpLmhlaWdodFxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IE1hdGgubWluKE1hdGgubWF4KDAsIHBvc2l0aW9uLngpLCBtYXhpbXVtWE9mZnNldCksXG4gICAgICB5OiBNYXRoLm1pbihNYXRoLm1heCgwLCBwb3NpdGlvbi55KSwgbWF4aW11bVlPZmZzZXQpXG4gICAgfVxuICB9LCB7IGRpc2FibGU6IHRydWUgfSlcblxuICBjb25zdCBnZXRBZGp1c3RlZFBvc2l0aW9uRm9yU3ByZWFkID0gKHsgeCwgeSB9OiBWaWV3cG9ydE5hdmlnYXRpb25FbnRyeSk6IFZpZXdwb3J0TmF2aWdhdGlvbkVudHJ5ID0+IHtcbiAgICBjb25zdCBpc09mZnNldE5vdEF0RWRnZSA9ICh4ICUgY29udGV4dC5nZXRWaXNpYmxlQXJlYVJlY3QoKS53aWR0aCkgIT09IDBcbiAgICBjb25zdCBjb3JyZWN0ZWRYID0gaXNPZmZzZXROb3RBdEVkZ2UgPyB4IC0gY29udGV4dC5nZXRQYWdlU2l6ZSgpLndpZHRoIDogeFxuXG4gICAgcmV0dXJuIHsgeDogY29ycmVjdGVkWCwgeSB9XG4gIH1cblxuICBjb25zdCBnZXROYXZpZ2F0aW9uRm9yQ2ZpID0gKGNmaTogc3RyaW5nKTogVmlld3BvcnROYXZpZ2F0aW9uRW50cnkgPT4ge1xuICAgIGNvbnN0IHNwaW5lSXRlbSA9IGNmaUxvY2F0b3IuZ2V0U3BpbmVJdGVtRnJvbUNmaShjZmkpXG4gICAgY29uc3QgeyBub2RlLCBvZmZzZXQgPSAwIH0gPSBjZmlMb2NhdG9yLnJlc29sdmVDZmkoY2ZpKSB8fCB7fVxuXG4gICAgaWYgKCFzcGluZUl0ZW0pIHtcbiAgICAgIFJlcG9ydC53YXJuKE5BTUVTUEFDRSwgYHVuYWJsZSB0byBkZXRlY3QgaXRlbSBpZCBmcm9tIGNmaSAke2NmaX1gKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzcGluZUl0ZW1OYXZpZ2F0aW9uID0gbm9kZSA/IHNwaW5lSXRlbU5hdmlnYXRvci5nZXROYXZpZ2F0aW9uRnJvbU5vZGUoc3BpbmVJdGVtLCBub2RlLCBvZmZzZXQpIDogeyB4OiAwLCB5OiAwIH1cbiAgICAgIGNvbnN0IHJlYWRpbmdQb3NpdGlvbiA9IGxvY2F0b3IuZ2V0U3BpbmVQb3NpdGlvbkZyb21TcGluZUl0ZW1Qb3NpdGlvbihzcGluZUl0ZW1OYXZpZ2F0aW9uLCBzcGluZUl0ZW0pXG5cbiAgICAgIC8vIHZlcnkgaW1wb3J0YW50IHRvIGFsd2F5cyByZXR1cm4gYSByZWFkaW5nIGl0ZW0gc2luY2Ugd2Ugd2FudCB0byBmb2N1cyBvbiB0aGF0IHBhcnRpY3VsYXIgb25lXG4gICAgICByZXR1cm4geyAuLi5nZXRBZGp1c3RlZFBvc2l0aW9uRm9yU3ByZWFkKHJlYWRpbmdQb3NpdGlvbiksIHNwaW5lSXRlbSB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgeDogMCwgeTogMCB9XG4gIH1cblxuICBjb25zdCBnZXROYXZpZ2F0aW9uRm9yUGFnZSA9IChwYWdlSW5kZXg6IG51bWJlciwgc3BpbmVJdGVtPzogU3BpbmVJdGVtKTogVmlld3BvcnROYXZpZ2F0aW9uRW50cnkgPT4ge1xuICAgIC8vIGxvb2t1cCBmb3IgZW50aXJlIGJvb2tcbiAgICAvLyBUaGlzIGlzIHJlbGlhYmxlIGZvciBwcmUtcGFnaW5hdGVkLCBkbyBub3QgdXNlIGl0IGZvciByZWZsb3dhYmxlIGJvb2tcbiAgICBpZiAoIXNwaW5lSXRlbSkge1xuICAgICAgY29uc3QgeFBvc2l0aW9uRm9yUGFnZUluZGV4ID0gcGFnZUluZGV4ICogY29udGV4dC5nZXRQYWdlU2l6ZSgpLndpZHRoXG4gICAgICByZXR1cm4gZ2V0TmF2aWdhdGlvbkZvclBvc2l0aW9uKHsgeDogeFBvc2l0aW9uRm9yUGFnZUluZGV4LCB5OiAwIH0pXG4gICAgfVxuXG4gICAgY29uc3Qgc3BpbmVJdGVtTmF2aWdhdGlvbiA9IHNwaW5lSXRlbU5hdmlnYXRvci5nZXROYXZpZ2F0aW9uRm9yUGFnZShwYWdlSW5kZXgsIHNwaW5lSXRlbSlcbiAgICBjb25zdCByZWFkaW5nT2Zmc2V0ID0gbG9jYXRvci5nZXRTcGluZVBvc2l0aW9uRnJvbVNwaW5lSXRlbVBvc2l0aW9uKHNwaW5lSXRlbU5hdmlnYXRpb24sIHNwaW5lSXRlbSlcblxuICAgIHJldHVybiBnZXRBZGp1c3RlZFBvc2l0aW9uRm9yU3ByZWFkKHJlYWRpbmdPZmZzZXQpXG4gIH1cblxuICBjb25zdCBnZXROYXZpZ2F0aW9uRm9yTGFzdFBhZ2UgPSAoc3BpbmVJdGVtOiBTcGluZUl0ZW0pOiBWaWV3cG9ydE5hdmlnYXRpb25FbnRyeSA9PiB7XG4gICAgY29uc3Qgc3BpbmVJdGVtTmF2aWdhdGlvbiA9IHNwaW5lSXRlbU5hdmlnYXRvci5nZXROYXZpZ2F0aW9uRm9yTGFzdFBhZ2Uoc3BpbmVJdGVtKVxuICAgIGNvbnN0IHBvc2l0aW9uID0gbG9jYXRvci5nZXRTcGluZVBvc2l0aW9uRnJvbVNwaW5lSXRlbVBvc2l0aW9uKHNwaW5lSXRlbU5hdmlnYXRpb24sIHNwaW5lSXRlbSlcblxuICAgIHJldHVybiBnZXRBZGp1c3RlZFBvc2l0aW9uRm9yU3ByZWFkKHBvc2l0aW9uKVxuICB9XG5cbiAgY29uc3QgZ2V0TmF2aWdhdGlvbkZvclNwaW5lSW5kZXhPcklkID0gKGluZGV4T3JJZDogbnVtYmVyIHwgc3RyaW5nKTogVmlld3BvcnROYXZpZ2F0aW9uRW50cnkgPT4ge1xuICAgIGNvbnN0IHNwaW5lSXRlbSA9IHNwaW5lSXRlbU1hbmFnZXIuZ2V0KGluZGV4T3JJZClcbiAgICBpZiAoc3BpbmVJdGVtKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9IGxvY2F0b3IuZ2V0U3BpbmVQb3NpdGlvbkZyb21TcGluZUl0ZW0oc3BpbmVJdGVtKVxuXG4gICAgICByZXR1cm4geyAuLi5nZXRBZGp1c3RlZFBvc2l0aW9uRm9yU3ByZWFkKHBvc2l0aW9uKSwgc3BpbmVJdGVtIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyB4OiAwLCB5OiAwIH1cbiAgfVxuXG4gIGNvbnN0IGdldE5hdmlnYXRpb25Gb3JSaWdodFNpbmdsZVBhZ2UgPSAocG9zaXRpb246IFNwaW5lSXRlbVBvc2l0aW9uKTogVmlld3BvcnROYXZpZ2F0aW9uRW50cnkgPT4ge1xuICAgIGNvbnN0IHBhZ2VUdXJuRGlyZWN0aW9uID0gY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkUGFnZVR1cm5EaXJlY3Rpb25cbiAgICBjb25zdCBzcGluZUl0ZW0gPSBsb2NhdG9yLmdldFNwaW5lSXRlbUZyb21Qb3NpdGlvbihwb3NpdGlvbikgfHwgc3BpbmVJdGVtTWFuYWdlci5nZXRGb2N1c2VkU3BpbmVJdGVtKClcbiAgICBjb25zdCBkZWZhdWx0TmF2aWdhdGlvbiA9IHBvc2l0aW9uXG5cbiAgICBpZiAoIXNwaW5lSXRlbSkge1xuICAgICAgcmV0dXJuIGRlZmF1bHROYXZpZ2F0aW9uXG4gICAgfVxuXG4gICAgLy8gdHJhbnNsYXRlIHZpZXdwb3J0IHBvc2l0aW9uIGludG8gcmVhZGluZyBpdGVtIGxvY2FsIHBvc2l0aW9uXG4gICAgY29uc3Qgc3BpbmVJdGVtUG9zaXRpb24gPSBsb2NhdG9yLmdldFNwaW5lSXRlbVBvc2l0aW9uRnJvbVNwaW5lUG9zaXRpb24ocG9zaXRpb24sIHNwaW5lSXRlbSlcbiAgICAvLyBnZXQgcmVhZGluZyBpdGVtIGxvY2FsIHBvc2l0aW9uIGZvciByaWdodCBwYWdlXG4gICAgY29uc3Qgc3BpbmVJdGVtTmF2aWdhdGlvbkZvclJpZ2h0UGFnZSA9IHNwaW5lSXRlbU5hdmlnYXRvci5nZXROYXZpZ2F0aW9uRm9yUmlnaHRQYWdlKHNwaW5lSXRlbVBvc2l0aW9uLCBzcGluZUl0ZW0pXG4gICAgLy8gY2hlY2sgYm90aCBwb3NpdGlvbiB0byBzZWUgaWYgd2UgbW92ZWQgb3V0IG9mIGl0XG4gICAgY29uc3QgaXNOZXdOYXZpZ2F0aW9uSW5DdXJyZW50SXRlbSA9ICFzcGluZUl0ZW1Qb3NpdGlvbi5vdXRzaWRlT2ZCb3VuZGFyaWVzICYmIGFyZVBvc2l0aW9uc0RpZmZlcmVudChzcGluZUl0ZW1OYXZpZ2F0aW9uRm9yUmlnaHRQYWdlLCBzcGluZUl0ZW1Qb3NpdGlvbilcblxuICAgIC8vIGNvbnNvbGUud2Fybih7IHNwaW5lSXRlbVBvc2l0aW9uLCBzcGluZUl0ZW1OYXZpZ2F0aW9uRm9yUmlnaHRQYWdlLCBpc05ld05hdmlnYXRpb25JbkN1cnJlbnRJdGVtIH0pXG4gICAgaWYgKCFpc05ld05hdmlnYXRpb25JbkN1cnJlbnRJdGVtKSB7XG4gICAgICByZXR1cm4gd3JhcFBvc2l0aW9uV2l0aFNhZmVFZGdlKFxuICAgICAgICBjb250ZXh0LmlzUlRMKClcbiAgICAgICAgICA/IHBhZ2VUdXJuRGlyZWN0aW9uID09PSBgaG9yaXpvbnRhbGBcbiAgICAgICAgICAgID8geyB4OiBwb3NpdGlvbi54IC0gY29udGV4dC5nZXRQYWdlU2l6ZSgpLndpZHRoLCB5OiAwIH1cbiAgICAgICAgICAgIDogeyB5OiBwb3NpdGlvbi55ICsgY29udGV4dC5nZXRQYWdlU2l6ZSgpLmhlaWdodCwgeDogMCB9XG4gICAgICAgICAgOiBwYWdlVHVybkRpcmVjdGlvbiA9PT0gYGhvcml6b250YWxgXG4gICAgICAgICAgICA/IHsgeDogcG9zaXRpb24ueCArIGNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aCwgeTogMCB9XG4gICAgICAgICAgICA6IHsgeTogcG9zaXRpb24ueSArIGNvbnRleHQuZ2V0UGFnZVNpemUoKS5oZWlnaHQsIHg6IDAgfVxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWFkaW5nT3JkZXJQb3NpdGlvbiA9IGxvY2F0b3IuZ2V0U3BpbmVQb3NpdGlvbkZyb21TcGluZUl0ZW1Qb3NpdGlvbihzcGluZUl0ZW1OYXZpZ2F0aW9uRm9yUmlnaHRQYWdlLCBzcGluZUl0ZW0pXG5cbiAgICAgIHJldHVybiByZWFkaW5nT3JkZXJQb3NpdGlvblxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGdldE5hdmlnYXRpb25Gb3JMZWZ0U2luZ2xlUGFnZSA9IChwb3NpdGlvbjogU3BpbmVJdGVtUG9zaXRpb24pOiBWaWV3cG9ydE5hdmlnYXRpb25FbnRyeSA9PiB7XG4gICAgY29uc3QgcGFnZVR1cm5EaXJlY3Rpb24gPSBjb250ZXh0LmdldFNldHRpbmdzKCkuY29tcHV0ZWRQYWdlVHVybkRpcmVjdGlvblxuICAgIGNvbnN0IHNwaW5lSXRlbSA9IGxvY2F0b3IuZ2V0U3BpbmVJdGVtRnJvbVBvc2l0aW9uKHBvc2l0aW9uKSB8fCBzcGluZUl0ZW1NYW5hZ2VyLmdldEZvY3VzZWRTcGluZUl0ZW0oKVxuICAgIGNvbnN0IGRlZmF1bHROYXZpZ2F0aW9uID0geyAuLi5wb3NpdGlvbiwgc3BpbmVJdGVtIH1cblxuICAgIGlmICghc3BpbmVJdGVtKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdE5hdmlnYXRpb25cbiAgICB9XG5cbiAgICBjb25zdCBzcGluZUl0ZW1Qb3NpdGlvbiA9IGxvY2F0b3IuZ2V0U3BpbmVJdGVtUG9zaXRpb25Gcm9tU3BpbmVQb3NpdGlvbihwb3NpdGlvbiwgc3BpbmVJdGVtKVxuICAgIGNvbnN0IHNwaW5lSXRlbU5hdmlnYXRpb24gPSBzcGluZUl0ZW1OYXZpZ2F0b3IuZ2V0TmF2aWdhdGlvbkZvckxlZnRQYWdlKHNwaW5lSXRlbVBvc2l0aW9uLCBzcGluZUl0ZW0pXG4gICAgY29uc3QgaXNOZXdOYXZpZ2F0aW9uSW5DdXJyZW50SXRlbSA9ICFzcGluZUl0ZW1Qb3NpdGlvbi5vdXRzaWRlT2ZCb3VuZGFyaWVzICYmIGFyZVBvc2l0aW9uc0RpZmZlcmVudChzcGluZUl0ZW1OYXZpZ2F0aW9uLCBzcGluZUl0ZW1Qb3NpdGlvbilcblxuICAgIGlmICghaXNOZXdOYXZpZ2F0aW9uSW5DdXJyZW50SXRlbSkge1xuICAgICAgcmV0dXJuIHdyYXBQb3NpdGlvbldpdGhTYWZlRWRnZShcbiAgICAgICAgY29udGV4dC5pc1JUTCgpXG4gICAgICAgICAgPyBwYWdlVHVybkRpcmVjdGlvbiA9PT0gYGhvcml6b250YWxgXG4gICAgICAgICAgICA/IHsgeDogcG9zaXRpb24ueCArIGNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aCwgeTogMCB9XG4gICAgICAgICAgICA6IHsgeTogcG9zaXRpb24ueSAtIGNvbnRleHQuZ2V0UGFnZVNpemUoKS5oZWlnaHQsIHg6IDAgfVxuICAgICAgICAgIDogcGFnZVR1cm5EaXJlY3Rpb24gPT09IGBob3Jpem9udGFsYFxuICAgICAgICAgICAgPyB7IHg6IHBvc2l0aW9uLnggLSBjb250ZXh0LmdldFBhZ2VTaXplKCkud2lkdGgsIHk6IDAgfVxuICAgICAgICAgICAgOiB7IHk6IHBvc2l0aW9uLnkgLSBjb250ZXh0LmdldFBhZ2VTaXplKCkuaGVpZ2h0LCB4OiAwIH1cbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVhZGluZ09yZGVyUG9zaXRpb24gPSBsb2NhdG9yLmdldFNwaW5lUG9zaXRpb25Gcm9tU3BpbmVJdGVtUG9zaXRpb24oc3BpbmVJdGVtTmF2aWdhdGlvbiwgc3BpbmVJdGVtKVxuXG4gICAgICByZXR1cm4gcmVhZGluZ09yZGVyUG9zaXRpb25cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmVyeSBuYWl2ZSBhcHByb2FjaCBmb3Igc3ByZWFkLiBJdCBjb3VsZCBiZSBvcHRpbWl6ZWQgYnV0IGJ5IHVzaW5nIHRoaXMgYXBwcm9hY2hcbiAgICogd2UgZG8gbm90IGFkZCBjb21wbGV4aXR5IHRvIHRoZSBjb2RlIGFuZCB1c2UgdGhlIGN1cnJlbnQgbG9naWMgdG8gaGFuZGxlIGl0IGNvcnJlY3RseS5cbiAgICpcbiAgICogQGltcG9ydGFudFxuICAgKiBTcGVjaWFsIGNhc2UgZm9yIHZlcnRpY2FsIGNvbnRlbnQsIHJlYWQgY29udGVudFxuICAgKi9cbiAgY29uc3QgZ2V0TmF2aWdhdGlvbkZvclJpZ2h0UGFnZSA9IChwb3NpdGlvbjogU3BpbmVJdGVtUG9zaXRpb24pOiBWaWV3cG9ydE5hdmlnYXRpb25FbnRyeSA9PiB7XG4gICAgY29uc3Qgc3BpbmVJdGVtT25Qb3NpdGlvbiA9IGxvY2F0b3IuZ2V0U3BpbmVJdGVtRnJvbVBvc2l0aW9uKHBvc2l0aW9uKSB8fCBzcGluZUl0ZW1NYW5hZ2VyLmdldEZvY3VzZWRTcGluZUl0ZW0oKVxuXG4gICAgbGV0IG5hdmlnYXRpb24gPSBnZXROYXZpZ2F0aW9uRm9yUmlnaHRTaW5nbGVQYWdlKHBvc2l0aW9uKVxuXG4gICAgLy8gd2hlbiB3ZSBtb3ZlIHdpdGhpbmcgdmVydGljYWwgY29udGVudCwgYmVjYXVzZSBvbmx5IHkgbW92ZXMsIHdlIGRvbid0IG5lZWQgdHdvIG5hdmlnYXRpb25cbiAgICBpZiAoc3BpbmVJdGVtT25Qb3NpdGlvbj8uaXNVc2luZ1ZlcnRpY2FsV3JpdGluZygpICYmIHBvc2l0aW9uLnggPT09IG5hdmlnYXRpb24ueCkge1xuICAgICAgcmV0dXJuIGdldEFkanVzdGVkUG9zaXRpb25Gb3JTcHJlYWQobmF2aWdhdGlvbilcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dC5zaG91bGREaXNwbGF5U3ByZWFkKCkpIHtcbiAgICAgIC8vIGluIGNhc2Ugb2Ygc3ByZWFkIHRoZSBlbnRpcmUgc2NyZWVuIGlzIHRha2VuIGFzIG9uZSByZWFsIHBhZ2UgZm9yIHZlcnRpY2FsIGNvbnRlbnRcbiAgICAgIC8vIGluIG9yZGVyIHRvIG1vdmUgb3V0IGZyb20gaXQgd2UgYWRkIGFuIGV4dHJhIHBhZ2Ugd2lkdGguXG4gICAgICAvLyB1c2luZyBgZ2V0TmF2aWdhdGlvbkZvckxlZnRTaW5nbGVQYWdlYCBhZ2FpbiB3b3VsZCBrZWVwIHggYXMgaXQgaXMgYW5kIHdyb25nbHkgbW92ZSB5XG4gICAgICAvLyBmb3IgdGhlIG5leHQgaXRlbSBpbiBjYXNlIGl0J3MgYWxzbyBhIHZlcnRpY2FsIGNvbnRlbnRcbiAgICAgIGlmIChzcGluZUl0ZW1PblBvc2l0aW9uPy5pc1VzaW5nVmVydGljYWxXcml0aW5nKCkgJiYgcG9zaXRpb24ueCAhPT0gbmF2aWdhdGlvbi54KSB7XG4gICAgICAgIHJldHVybiBnZXRBZGp1c3RlZFBvc2l0aW9uRm9yU3ByZWFkKFxuICAgICAgICAgIHdyYXBQb3NpdGlvbldpdGhTYWZlRWRnZShcbiAgICAgICAgICAgIGNvbnRleHQuaXNSVEwoKVxuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIC4uLm5hdmlnYXRpb24sXG4gICAgICAgICAgICAgICAgICB4OiBuYXZpZ2F0aW9uLnggLSBjb250ZXh0LmdldFBhZ2VTaXplKCkud2lkdGhcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgLi4ubmF2aWdhdGlvbixcbiAgICAgICAgICAgICAgICAgIHg6IG5hdmlnYXRpb24ueCArIGNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBJbiB2YXNlIHdlIG1vdmUgdmVydGljYWxseSBhbmQgdGhlIHkgaXMgYWxyZWFkeSBkaWZmZXJlbnQsIHdlIGRvbid0IG5lZWQgYSBzZWNvbmQgbmF2aWdhdGlvblxuICAgICAgICogc2luY2Ugd2UgYWxyZWFkeSBqdW1wZWQgdG8gYSBuZXcgc2NyZWVuXG4gICAgICAgKi9cbiAgICAgIGlmIChjb250ZXh0LmdldFNldHRpbmdzKCkuY29tcHV0ZWRQYWdlVHVybkRpcmVjdGlvbiA9PT0gYHZlcnRpY2FsYCAmJiBwb3NpdGlvbi55ICE9PSBuYXZpZ2F0aW9uLnkpIHtcbiAgICAgICAgcmV0dXJuIGdldEFkanVzdGVkUG9zaXRpb25Gb3JTcHJlYWQobmF2aWdhdGlvbilcbiAgICAgIH1cblxuICAgICAgbmF2aWdhdGlvbiA9IGdldE5hdmlnYXRpb25Gb3JSaWdodFNpbmdsZVBhZ2UobmF2aWdhdGlvbilcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0QWRqdXN0ZWRQb3NpdGlvbkZvclNwcmVhZChuYXZpZ2F0aW9uKVxuICB9XG5cbiAgLyoqXG4gICAqIFZlcnkgbmFpdmUgYXBwcm9hY2ggZm9yIHNwcmVhZC4gSXQgY291bGQgYmUgb3B0aW1pemVkIGJ1dCBieSB1c2luZyB0aGlzIGFwcHJvYWNoXG4gICAqIHdlIGRvIG5vdCBhZGQgY29tcGxleGl0eSB0byB0aGUgY29kZSBhbmQgdXNlIHRoZSBjdXJyZW50IGxvZ2ljIHRvIGhhbmRsZSBpdCBjb3JyZWN0bHkuXG4gICAqXG4gICAqIEBpbXBvcnRhbnRcbiAgICogU3BlY2lhbCBjYXNlIGZvciB2ZXJ0aWNhbCBjb250ZW50LCByZWFkIGNvbnRlbnRcbiAgICovXG4gIGNvbnN0IGdldE5hdmlnYXRpb25Gb3JMZWZ0UGFnZSA9IChwb3NpdGlvbjogU3BpbmVJdGVtUG9zaXRpb24pOiBWaWV3cG9ydE5hdmlnYXRpb25FbnRyeSA9PiB7XG4gICAgY29uc3Qgc3BpbmVJdGVtT25Qb3NpdGlvbiA9IGxvY2F0b3IuZ2V0U3BpbmVJdGVtRnJvbVBvc2l0aW9uKHBvc2l0aW9uKSB8fCBzcGluZUl0ZW1NYW5hZ2VyLmdldEZvY3VzZWRTcGluZUl0ZW0oKVxuXG4gICAgbGV0IG5hdmlnYXRpb24gPSBnZXROYXZpZ2F0aW9uRm9yTGVmdFNpbmdsZVBhZ2UocG9zaXRpb24pXG5cbiAgICAvLyB3aGVuIHdlIG1vdmUgd2l0aGluZyB2ZXJ0aWNhbCBjb250ZW50LCBiZWNhdXNlIG9ubHkgeSBtb3Zlcywgd2UgZG9uJ3QgbmVlZCB0d28gbmF2aWdhdGlvblxuICAgIGlmIChzcGluZUl0ZW1PblBvc2l0aW9uPy5pc1VzaW5nVmVydGljYWxXcml0aW5nKCkgJiYgcG9zaXRpb24ueCA9PT0gbmF2aWdhdGlvbi54KSB7XG4gICAgICByZXR1cm4gZ2V0QWRqdXN0ZWRQb3NpdGlvbkZvclNwcmVhZChuYXZpZ2F0aW9uKVxuICAgIH1cblxuICAgIGlmIChjb250ZXh0LnNob3VsZERpc3BsYXlTcHJlYWQoKSkge1xuICAgICAgLy8gaW4gY2FzZSBvZiBzcHJlYWQgdGhlIGVudGlyZSBzY3JlZW4gaXMgdGFrZW4gYXMgb25lIHJlYWwgcGFnZSBmb3IgdmVydGljYWwgY29udGVudFxuICAgICAgLy8gaW4gb3JkZXIgdG8gbW92ZSBvdXQgZnJvbSBpdCB3ZSBhZGQgYW4gZXh0cmEgcGFnZSB3aWR0aC5cbiAgICAgIC8vIHVzaW5nIGBnZXROYXZpZ2F0aW9uRm9yTGVmdFNpbmdsZVBhZ2VgIGFnYWluIHdvdWxkIGtlZXAgeCBhcyBpdCBpcyBhbmQgd3JvbmdseSBtb3ZlIHlcbiAgICAgIC8vIGZvciB0aGUgbmV4dCBpdGVtIGluIGNhc2UgaXQncyBhbHNvIGEgdmVydGljYWwgY29udGVudFxuICAgICAgaWYgKHNwaW5lSXRlbU9uUG9zaXRpb24/LmlzVXNpbmdWZXJ0aWNhbFdyaXRpbmcoKSAmJiBwb3NpdGlvbi54ICE9PSBuYXZpZ2F0aW9uLngpIHtcbiAgICAgICAgcmV0dXJuIGdldEFkanVzdGVkUG9zaXRpb25Gb3JTcHJlYWQoXG4gICAgICAgICAgd3JhcFBvc2l0aW9uV2l0aFNhZmVFZGdlKFxuICAgICAgICAgICAgY29udGV4dC5pc1JUTCgpXG4gICAgICAgICAgICAgID8geyAuLi5uYXZpZ2F0aW9uLCB4OiBuYXZpZ2F0aW9uLnggKyBjb250ZXh0LmdldFBhZ2VTaXplKCkud2lkdGggfVxuICAgICAgICAgICAgICA6IHsgLi4ubmF2aWdhdGlvbiwgeDogbmF2aWdhdGlvbi54IC0gY29udGV4dC5nZXRQYWdlU2l6ZSgpLndpZHRoIH1cbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBJbiB2YXNlIHdlIG1vdmUgdmVydGljYWxseSBhbmQgdGhlIHkgaXMgYWxyZWFkeSBkaWZmZXJlbnQsIHdlIGRvbid0IG5lZWQgYSBzZWNvbmQgbmF2aWdhdGlvblxuICAgICAgICogc2luY2Ugd2UgYWxyZWFkeSBqdW1wZWQgdG8gYSBuZXcgc2NyZWVuXG4gICAgICAgKi9cbiAgICAgIGlmIChjb250ZXh0LmdldFNldHRpbmdzKCkuY29tcHV0ZWRQYWdlVHVybkRpcmVjdGlvbiA9PT0gYHZlcnRpY2FsYCAmJiBwb3NpdGlvbi55ICE9PSBuYXZpZ2F0aW9uLnkpIHtcbiAgICAgICAgcmV0dXJuIGdldEFkanVzdGVkUG9zaXRpb25Gb3JTcHJlYWQobmF2aWdhdGlvbilcbiAgICAgIH1cblxuICAgICAgbmF2aWdhdGlvbiA9IGdldE5hdmlnYXRpb25Gb3JMZWZ0U2luZ2xlUGFnZShuYXZpZ2F0aW9uKVxuICAgIH1cblxuICAgIHJldHVybiBnZXRBZGp1c3RlZFBvc2l0aW9uRm9yU3ByZWFkKG5hdmlnYXRpb24pXG4gIH1cblxuICBjb25zdCBnZXROYXZpZ2F0aW9uRm9yVXJsID0gKHVybDogc3RyaW5nIHwgVVJMKTogVmlld3BvcnROYXZpZ2F0aW9uRW50cnkgJiB7IHVybDogVVJMIH0gfCB1bmRlZmluZWQgPT4ge1xuICAgIGxldCB2YWxpZFVybDogVVJMIHwgdW5kZWZpbmVkXG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkVXJsID0gdXJsIGluc3RhbmNlb2YgVVJMID8gdXJsIDogbmV3IFVSTCh1cmwpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgUmVwb3J0LmVycm9yKGUpXG4gICAgfVxuICAgIGlmICh2YWxpZFVybCkge1xuICAgICAgY29uc3QgdXJsV2l0aG91dEFuY2hvciA9IGAke3ZhbGlkVXJsLm9yaWdpbn0ke3ZhbGlkVXJsLnBhdGhuYW1lfWBcbiAgICAgIGNvbnN0IGV4aXN0aW5nU3BpbmVJdGVtID0gY29udGV4dC5nZXRNYW5pZmVzdCgpPy5zcGluZUl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmhyZWYgPT09IHVybFdpdGhvdXRBbmNob3IpXG4gICAgICBpZiAoZXhpc3RpbmdTcGluZUl0ZW0pIHtcbiAgICAgICAgY29uc3Qgc3BpbmVJdGVtID0gc3BpbmVJdGVtTWFuYWdlci5nZXQoZXhpc3RpbmdTcGluZUl0ZW0uaWQpXG4gICAgICAgIGlmIChzcGluZUl0ZW0pIHtcbiAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGdldE5hdmlnYXRpb25Gb3JBbmNob3IodmFsaWRVcmwuaGFzaCwgc3BpbmVJdGVtKVxuXG4gICAgICAgICAgcmV0dXJuIHsgLi4uZ2V0QWRqdXN0ZWRQb3NpdGlvbkZvclNwcmVhZChwb3NpdGlvbiksIHVybDogdmFsaWRVcmwgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgY29uc3QgZ2V0TmF2aWdhdGlvbkZvckFuY2hvciA9IChhbmNob3I6IHN0cmluZywgc3BpbmVJdGVtOiBTcGluZUl0ZW0pID0+IHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGxvY2F0b3IuZ2V0U3BpbmVQb3NpdGlvbkZyb21TcGluZUl0ZW1BbmNob3IoYW5jaG9yLCBzcGluZUl0ZW0pXG5cbiAgICByZXR1cm4gZ2V0QWRqdXN0ZWRQb3NpdGlvbkZvclNwcmVhZChwb3NpdGlvbilcbiAgfVxuXG4gIGNvbnN0IGdldE5hdmlnYXRpb25Gb3JQb3NpdGlvbiA9ICh2aWV3cG9ydFBvc2l0aW9uOiBWaWV3cG9ydFBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3BpbmVJdGVtID0gbG9jYXRvci5nZXRTcGluZUl0ZW1Gcm9tUG9zaXRpb24odmlld3BvcnRQb3NpdGlvbilcblxuICAgIGlmIChzcGluZUl0ZW0pIHtcbiAgICAgIGNvbnN0IHNwaW5lSXRlbVBvc2l0aW9uID0gbG9jYXRvci5nZXRTcGluZUl0ZW1Qb3NpdGlvbkZyb21TcGluZVBvc2l0aW9uKHZpZXdwb3J0UG9zaXRpb24sIHNwaW5lSXRlbSlcbiAgICAgIGNvbnN0IHNwaW5lSXRlbVZhbGlkUG9zaXRpb24gPSBzcGluZUl0ZW1OYXZpZ2F0b3IuZ2V0TmF2aWdhdGlvbkZvclBvc2l0aW9uKHNwaW5lSXRlbSwgc3BpbmVJdGVtUG9zaXRpb24pXG4gICAgICBjb25zdCB2aWV3cG9ydE5hdmlnYXRpb24gPSBsb2NhdG9yLmdldFNwaW5lUG9zaXRpb25Gcm9tU3BpbmVJdGVtUG9zaXRpb24oc3BpbmVJdGVtVmFsaWRQb3NpdGlvbiwgc3BpbmVJdGVtKVxuXG4gICAgICByZXR1cm4gZ2V0QWRqdXN0ZWRQb3NpdGlvbkZvclNwcmVhZCh2aWV3cG9ydE5hdmlnYXRpb24pXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgeDogMCwgeTogMCB9XG4gIH1cblxuICAvKipcbiAgICogVXNlZnVsIHdoZW4geW91IHdhbnQgdG8gZ2V0IGEgbmF2aWdhdGlvbiBmcm9tIGEgc2Nyb2xsIHBvc2l0aW9uLiBJdCB1c2VzIHRyaWdnZXIgcG9pbnRzIHNvIGl0IHdpbGxcbiAgICogdHJ5IHRvIGdldCB0aGUgbW9zdCB2aXNpYmxlIC8gcmVsZXZhbnQgZWxlbWVudCBhcyBuYXZpZ2F0aW9uIHJlZmVyZW5jZVxuICAgKi9cbiAgY29uc3QgZ2V0TW9zdFByZWRvbWluYW50TmF2aWdhdGlvbkZvclBvc2l0aW9uID0gKHZpZXdwb3J0UG9zaXRpb246IFZpZXdwb3J0UG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBwYWdlVHVybkRpcmVjdGlvbiA9IGNvbnRleHQuZ2V0U2V0dGluZ3MoKS5jb21wdXRlZFBhZ2VUdXJuRGlyZWN0aW9uXG4gICAgLy8gQHRvZG8gbW92aW5nRm9yd2FyZCBkb2VzIG5vdCB3b3JrIHNhbWUgd2l0aCBmcmVlLXNjcm9sbCwgdHJ5IHRvIGZpbmQgYSByZWxpYWJsZSB3YXkgdG8gZGV0ZWN0XG4gICAgLy8gY29uc3QgbW92aW5nRm9yd2FyZCA9IG5hdmlnYXRvci5pc05hdmlnYXRpb25Hb2luZ0ZvcndhcmRGcm9tKG5hdmlnYXRpb24sIGN1cnJlbnROYXZpZ2F0aW9uUG9zaXRpb24pXG4gICAgLy8gY29uc3QgdHJpZ2dlclBlcmNlbnRhZ2UgPSBtb3ZpbmdGb3J3YXJkID8gMC43IDogMC4zXG4gICAgY29uc3QgdHJpZ2dlclBlcmNlbnRhZ2UgPSAwLjVcbiAgICBjb25zdCB0cmlnZ2VyWFBvc2l0aW9uID0gcGFnZVR1cm5EaXJlY3Rpb24gPT09IGBob3Jpem9udGFsYFxuICAgICAgPyB2aWV3cG9ydFBvc2l0aW9uLnggKyAoY29udGV4dC5nZXRWaXNpYmxlQXJlYVJlY3QoKS53aWR0aCAqIHRyaWdnZXJQZXJjZW50YWdlKVxuICAgICAgOiAwXG4gICAgY29uc3QgdHJpZ2dlcllQb3NpdGlvbiA9IHBhZ2VUdXJuRGlyZWN0aW9uID09PSBgaG9yaXpvbnRhbGBcbiAgICAgID8gMFxuICAgICAgOiB2aWV3cG9ydFBvc2l0aW9uLnkgKyAoY29udGV4dC5nZXRWaXNpYmxlQXJlYVJlY3QoKS5oZWlnaHQgKiB0cmlnZ2VyUGVyY2VudGFnZSlcbiAgICBjb25zdCBtaWRTY3JlZW5Qb3NpdGlvblNhZmVQb3NpdGlvbiA9IHdyYXBQb3NpdGlvbldpdGhTYWZlRWRnZSh7IHg6IHRyaWdnZXJYUG9zaXRpb24sIHk6IHRyaWdnZXJZUG9zaXRpb24gfSlcbiAgICByZXR1cm4gZ2V0TmF2aWdhdGlvbkZvclBvc2l0aW9uKG1pZFNjcmVlblBvc2l0aW9uU2FmZVBvc2l0aW9uKVxuICB9XG5cbiAgY29uc3QgaXNOYXZpZ2F0aW9uR29pbmdGb3J3YXJkRnJvbSA9ICh0bzogVmlld3BvcnRQb3NpdGlvbiwgZnJvbTogVmlld3BvcnRQb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHBhZ2VUdXJuRGlyZWN0aW9uID0gY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkUGFnZVR1cm5EaXJlY3Rpb25cblxuICAgIGlmIChwYWdlVHVybkRpcmVjdGlvbiA9PT0gYHZlcnRpY2FsYCkge1xuICAgICAgcmV0dXJuIHRvLnkgPiBmcm9tLnlcbiAgICB9XG5cbiAgICByZXR1cm4gdG8ueCA+IGZyb20ueFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXROYXZpZ2F0aW9uRm9yQ2ZpLFxuICAgIGdldE5hdmlnYXRpb25Gb3JQYWdlLFxuICAgIGdldE5hdmlnYXRpb25Gb3JMYXN0UGFnZSxcbiAgICBnZXROYXZpZ2F0aW9uRm9yU3BpbmVJbmRleE9ySWQsXG4gICAgZ2V0TmF2aWdhdGlvbkZvclJpZ2h0UGFnZSxcbiAgICBnZXROYXZpZ2F0aW9uRm9yTGVmdFBhZ2UsXG4gICAgZ2V0TmF2aWdhdGlvbkZvclVybCxcbiAgICBnZXROYXZpZ2F0aW9uRm9yQW5jaG9yLFxuICAgIGdldE5hdmlnYXRpb25Gb3JQb3NpdGlvbixcbiAgICBnZXRNb3N0UHJlZG9taW5hbnROYXZpZ2F0aW9uRm9yUG9zaXRpb24sXG4gICAgd3JhcFBvc2l0aW9uV2l0aFNhZmVFZGdlLFxuICAgIGlzTmF2aWdhdGlvbkdvaW5nRm9yd2FyZEZyb20sXG4gICAgYXJlTmF2aWdhdGlvbkRpZmZlcmVudCxcbiAgICBhcmVQb3NpdGlvbnNEaWZmZXJlbnRcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/spine/navigationResolver.ts\n");
|
|
360
|
+
|
|
361
|
+
/***/ }),
|
|
362
|
+
|
|
363
|
+
/***/ "./src/spine/viewportNavigator/manualViewportNavigator.ts":
|
|
364
|
+
/*!****************************************************************!*\
|
|
365
|
+
!*** ./src/spine/viewportNavigator/manualViewportNavigator.ts ***!
|
|
366
|
+
\****************************************************************/
|
|
367
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
368
|
+
|
|
369
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createManualViewportNavigator\": () => (/* binding */ createManualViewportNavigator)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../report */ \"./src/report.ts\");\n\n\n\nconst NAMESPACE = `manualViewportNavigator`;\nconst createManualViewportNavigator = ({ navigator, spineItemManager, currentNavigationSubject$, locator, context }) => {\n const stateSubject$ = (new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject(`end`));\n const navigationTriggerSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const turnLeft = ({ allowSpineItemChange = true } = {}) => navigationTriggerSubject$.next({ type: `leftPage`, data: { allowSpineItemChange } });\n const turnRight = ({ allowSpineItemChange = true } = {}) => {\n navigationTriggerSubject$.next({ type: `rightPage`, data: { allowSpineItemChange } });\n };\n const goToPageOfCurrentChapter = (pageIndex) => navigationTriggerSubject$.next({ type: `chapterPage`, data: { pageIndex } });\n const goToPage = (pageIndex) => navigationTriggerSubject$.next({ type: `pageIndex`, data: { pageIndex } });\n const goToCfi = (cfi, options = { animate: true }) => navigationTriggerSubject$.next({ type: `cfi`, data: Object.assign({ cfi }, options) });\n const goToUrl = (url) => navigationTriggerSubject$.next({ type: `url`, data: url });\n const goToSpineItem = (indexOrId, options = { animate: true }) => {\n navigationTriggerSubject$.next({ type: `spineItem`, data: Object.assign({ indexOrId }, options) });\n };\n const urlNavigation$ = navigationTriggerSubject$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)((e) => e.type === `url`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(({ data }) => {\n const navigation = navigator.getNavigationForUrl(data);\n if (navigation) {\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.of)(Object.assign(Object.assign({}, navigation), { animate: true, lastUserExpectedNavigation: { type: `navigate-from-anchor`, data: navigation.url.hash } }));\n }\n return rxjs__WEBPACK_IMPORTED_MODULE_0__.EMPTY;\n }));\n const spineItemNavigation$ = navigationTriggerSubject$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)((e) => e.type === `spineItem`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(({ data: { animate, indexOrId } }) => {\n const navigation = navigator.getNavigationForSpineIndexOrId(indexOrId);\n const lastUserExpectedNavigation = { type: `navigate-from-previous-item` };\n _report__WEBPACK_IMPORTED_MODULE_2__.Report.log(NAMESPACE, `goToSpineItem`, { indexOrId, animate, navigation });\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.of)(Object.assign(Object.assign({}, navigation), { animate, lastUserExpectedNavigation }));\n }));\n const cfiNavigation$ = navigationTriggerSubject$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)((e) => e.type === `cfi`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.map)(({ data: { animate, cfi } }) => {\n const navigation = navigator.getNavigationForCfi(cfi);\n _report__WEBPACK_IMPORTED_MODULE_2__.Report.log(NAMESPACE, `goToCfi`, { cfi, animate, navigation });\n return (Object.assign(Object.assign({}, navigation), { animate, lastUserExpectedNavigation: { type: `navigate-from-cfi`, data: cfi } }));\n }));\n const chapterPageNavigation$ = navigationTriggerSubject$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)((e) => e.type === `chapterPage`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(({ data: { pageIndex } }) => {\n const spineItem = spineItemManager.getFocusedSpineItem();\n if (spineItem) {\n const navigation = navigator.getNavigationForPage(pageIndex, spineItem);\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.of)(Object.assign(Object.assign({}, navigation), { lastUserExpectedNavigation: undefined, animate: true }));\n }\n return rxjs__WEBPACK_IMPORTED_MODULE_0__.EMPTY;\n }));\n const pageNavigation$ = navigationTriggerSubject$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)((e) => e.type === `pageIndex`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)(_ => {\n var _a;\n if (((_a = context.getManifest()) === null || _a === void 0 ? void 0 : _a.renditionLayout) === `reflowable`) {\n _report__WEBPACK_IMPORTED_MODULE_2__.Report.warn(`This method only works for pre-paginated content`);\n return false;\n }\n return true;\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(({ data: { pageIndex } }) => {\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.of)(Object.assign(Object.assign({}, navigator.getNavigationForPage(pageIndex)), { lastUserExpectedNavigation: undefined, animate: true }));\n }));\n const turnPageTo$ = _report__WEBPACK_IMPORTED_MODULE_2__.Report.measurePerformance(`turnTo`, 10, (navigation, { allowSpineItemChange = true } = {}) => {\n const currentSpineItem = spineItemManager.getFocusedSpineItem();\n if (!currentSpineItem)\n return rxjs__WEBPACK_IMPORTED_MODULE_0__.EMPTY;\n const newSpineItem = locator.getSpineItemFromPosition(navigation) || currentSpineItem;\n const spineItemHasChanged = newSpineItem !== currentSpineItem;\n if (spineItemHasChanged) {\n if (allowSpineItemChange) {\n if (spineItemManager.comparePositionOf(newSpineItem, currentSpineItem) === `before`) {\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.of)(Object.assign(Object.assign({}, navigation), { lastUserExpectedNavigation: { type: `navigate-from-next-item` }, animate: true }));\n }\n else {\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.of)(Object.assign(Object.assign({}, navigation), { lastUserExpectedNavigation: { type: `navigate-from-previous-item` }, animate: true }));\n }\n }\n }\n else {\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.of)(Object.assign(Object.assign({}, navigation), { lastUserExpectedNavigation: undefined, animate: true }));\n }\n return rxjs__WEBPACK_IMPORTED_MODULE_0__.EMPTY;\n });\n const leftPageNavigation$ = navigationTriggerSubject$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)((e) => e.type === `leftPage`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.withLatestFrom)(currentNavigationSubject$), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(([{ data: { allowSpineItemChange } }, currentNavigation]) => {\n const navigation = navigator.getNavigationForLeftPage(currentNavigation);\n return turnPageTo$(navigation, { allowSpineItemChange });\n }));\n const rightPageNavigation$ = navigationTriggerSubject$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)((e) => e.type === `rightPage`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.withLatestFrom)(currentNavigationSubject$), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(([{ data: { allowSpineItemChange } }, currentNavigation]) => {\n const navigation = navigator.getNavigationForRightPage(currentNavigation);\n return turnPageTo$(navigation, { allowSpineItemChange });\n }));\n const navigation$ = (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.merge)(urlNavigation$, spineItemNavigation$, chapterPageNavigation$, leftPageNavigation$, rightPageNavigation$, (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.merge)(cfiNavigation$, pageNavigation$))\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.withLatestFrom)(currentNavigationSubject$), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)(([navigation, currentNavigation]) => navigator.areNavigationDifferent(navigation, currentNavigation)), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.map)(([navigation]) => navigation));\n return {\n destroy: () => { },\n adjustReadingOffset: (_) => {\n return false;\n },\n turnLeft,\n turnRight,\n goToCfi,\n goToPageOfCurrentChapter,\n goToSpineItem,\n goToUrl,\n goToPage,\n $: {\n state$: stateSubject$.asObservable(),\n navigation$\n }\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3BpbmUvdmlld3BvcnROYXZpZ2F0b3IvbWFudWFsVmlld3BvcnROYXZpZ2F0b3IudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWlFO0FBQ1c7QUFHdkM7QUFJckMsTUFBTSxTQUFTLEdBQUcseUJBQXlCO0FBVXBDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSx5QkFBeUIsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQU92SCxFQUFFLEVBQUU7SUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksaURBQWUsQ0FBa0IsS0FBSyxDQUFDLENBQUM7SUFDbkUsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLHlDQUFPLEVBUTFDO0lBRUgsTUFBTSxRQUFRLEdBQUcsQ0FBQyxFQUFFLG9CQUFvQixHQUFHLElBQUksS0FBeUMsRUFBRSxFQUFFLEVBQUUsQ0FDNUYseUJBQXlCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLENBQUM7SUFFdEYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFFLG9CQUFvQixHQUFHLElBQUksS0FBeUMsRUFBRSxFQUFFLEVBQUU7UUFDN0YseUJBQXlCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLENBQUM7SUFDdkYsQ0FBQztJQUdELE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxTQUFpQixFQUFFLEVBQUUsQ0FDckQseUJBQXlCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDO0lBRTlFLE1BQU0sUUFBUSxHQUFHLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQ3JDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFB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RUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUNsQztJQUVILE9BQU87UUFDTCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztRQUNsQixtQkFBbUIsRUFBRSxDQUFDLENBQTJCLEVBQUUsRUFBRTtZQUNuRCxPQUFPLEtBQUs7UUFDZCxDQUFDO1FBQ0QsUUFBUTtRQUNSLFNBQVM7UUFDVCxPQUFPO1FBQ1Asd0JBQXdCO1FBQ3hCLGFBQWE7UUFDYixPQUFPO1FBQ1AsUUFBUTtRQUNSLENBQUMsRUFBRTtZQUNELE1BQU0sRUFBRSxhQUFhLENBQUMsWUFBWSxFQUFFO1lBQ3BDLFdBQVc7U0FDWjtLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0Bwcm9zZS1yZWFkZXIvY29yZS8uL3NyYy9zcGluZS92aWV3cG9ydE5hdmlnYXRvci9tYW51YWxWaWV3cG9ydE5hdmlnYXRvci50cz9iZmRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgRU1QVFksIG1lcmdlLCBvZiwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCJcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCwgd2l0aExhdGVzdEZyb20gfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIlxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi8uLi9jb250ZXh0XCJcbmltcG9ydCB7IFNwaW5lSXRlbU1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vc3BpbmVJdGVtTWFuYWdlclwiXG5pbXBvcnQgeyBSZXBvcnQgfSBmcm9tIFwiLi4vLi4vcmVwb3J0XCJcbmltcG9ydCB7IGNyZWF0ZU5hdmlnYXRpb25SZXNvbHZlciwgVmlld3BvcnROYXZpZ2F0aW9uRW50cnkgfSBmcm9tIFwiLi4vbmF2aWdhdGlvblJlc29sdmVyXCJcbmltcG9ydCB7IGNyZWF0ZUxvY2F0aW9uUmVzb2x2ZXIgfSBmcm9tIFwiLi4vbG9jYXRpb25SZXNvbHZlclwiXG5cbmNvbnN0IE5BTUVTUEFDRSA9IGBtYW51YWxWaWV3cG9ydE5hdmlnYXRvcmBcblxudHlwZSBVcmxOYXZpZ2F0aW9uID0geyB0eXBlOiBgdXJsYCwgZGF0YTogc3RyaW5nIHwgVVJMIH1cbnR5cGUgU3BpbmVJdGVtTmF2aWdhdGlvbiA9IHsgdHlwZTogYHNwaW5lSXRlbWAsIGRhdGE6IHsgaW5kZXhPcklkOiBudW1iZXIgfCBzdHJpbmcsIGFuaW1hdGU6IGJvb2xlYW4gfSB9XG50eXBlIENmaU5hdmlnYXRpb24gPSB7IHR5cGU6IGBjZmlgLCBkYXRhOiB7IGNmaTogc3RyaW5nLCBhbmltYXRlOiBib29sZWFuIH0gfVxudHlwZSBDaGFwdGVyUGFnZU5hdmlnYXRpb24gPSB7IHR5cGU6IGBjaGFwdGVyUGFnZWAsIGRhdGE6IHsgcGFnZUluZGV4OiBudW1iZXIgfSB9XG50eXBlIFBhZ2VJbmRleE5hdmlnYXRpb24gPSB7IHR5cGU6IGBwYWdlSW5kZXhgLCBkYXRhOiB7IHBhZ2VJbmRleDogbnVtYmVyIH0gfVxudHlwZSBMZWZ0UGFnZU5hdmlnYXRpb24gPSB7IHR5cGU6IGBsZWZ0UGFnZWAsIGRhdGE6IHsgYWxsb3dTcGluZUl0ZW1DaGFuZ2U6IGJvb2xlYW4gfSB9XG50eXBlIFJpZ2h0UGFnZU5hdmlnYXRpb24gPSB7IHR5cGU6IGByaWdodFBhZ2VgLCBkYXRhOiB7IGFsbG93U3BpbmVJdGVtQ2hhbmdlOiBib29sZWFuIH0gfVxuXG5leHBvcnQgY29uc3QgY3JlYXRlTWFudWFsVmlld3BvcnROYXZpZ2F0b3IgPSAoeyBuYXZpZ2F0b3IsIHNwaW5lSXRlbU1hbmFnZXIsIGN1cnJlbnROYXZpZ2F0aW9uU3ViamVjdCQsIGxvY2F0b3IsIGNvbnRleHQgfToge1xuICBjb250ZXh0OiBDb250ZXh0LFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgbmF2aWdhdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVOYXZpZ2F0aW9uUmVzb2x2ZXI+LFxuICBjdXJyZW50TmF2aWdhdGlvblN1YmplY3QkOiBCZWhhdmlvclN1YmplY3Q8Vmlld3BvcnROYXZpZ2F0aW9uRW50cnk+LFxuICBzcGluZUl0ZW1NYW5hZ2VyOiBTcGluZUl0ZW1NYW5hZ2VyLFxuICBsb2NhdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVMb2NhdGlvblJlc29sdmVyPixcbn0pID0+IHtcbiAgY29uc3Qgc3RhdGVTdWJqZWN0JCA9IChuZXcgQmVoYXZpb3JTdWJqZWN0PGBzdGFydGAgfCBgZW5kYD4oYGVuZGApKVxuICBjb25zdCBuYXZpZ2F0aW9uVHJpZ2dlclN1YmplY3QkID0gbmV3IFN1YmplY3Q8XG4gICAgfCBVcmxOYXZpZ2F0aW9uXG4gICAgfCBTcGluZUl0ZW1OYXZpZ2F0aW9uXG4gICAgfCBDZmlOYXZpZ2F0aW9uXG4gICAgfCBDaGFwdGVyUGFnZU5hdmlnYXRpb25cbiAgICB8IFBhZ2VJbmRleE5hdmlnYXRpb25cbiAgICB8IExlZnRQYWdlTmF2aWdhdGlvblxuICAgIHwgUmlnaHRQYWdlTmF2aWdhdGlvblxuICA+KClcblxuICBjb25zdCB0dXJuTGVmdCA9ICh7IGFsbG93U3BpbmVJdGVtQ2hhbmdlID0gdHJ1ZSB9OiB7IGFsbG93U3BpbmVJdGVtQ2hhbmdlPzogYm9vbGVhbiB9ID0ge30pID0+XG4gICAgbmF2aWdhdGlvblRyaWdnZXJTdWJqZWN0JC5uZXh0KHsgdHlwZTogYGxlZnRQYWdlYCwgZGF0YTogeyBhbGxvd1NwaW5lSXRlbUNoYW5nZSB9IH0pXG5cbiAgY29uc3QgdHVyblJpZ2h0ID0gKHsgYWxsb3dTcGluZUl0ZW1DaGFuZ2UgPSB0cnVlIH06IHsgYWxsb3dTcGluZUl0ZW1DaGFuZ2U/OiBib29sZWFuIH0gPSB7fSkgPT4ge1xuICAgIG5hdmlnYXRpb25UcmlnZ2VyU3ViamVjdCQubmV4dCh7IHR5cGU6IGByaWdodFBhZ2VgLCBkYXRhOiB7IGFsbG93U3BpbmVJdGVtQ2hhbmdlIH0gfSlcbiAgfVxuXG4gIC8vIEB0b2RvIGl0J3Mgd3JvbmcgYmVjYXVzZSB3ZSBjYW4gYmUgaW4gdHdvIGRpZmZlcmVudCBjaGFwdGVyIG9uIHNhbWUgcGFnZSBmb3Igc3ByZWFkXG4gIGNvbnN0IGdvVG9QYWdlT2ZDdXJyZW50Q2hhcHRlciA9IChwYWdlSW5kZXg6IG51bWJlcikgPT5cbiAgICBuYXZpZ2F0aW9uVHJpZ2dlclN1YmplY3QkLm5leHQoeyB0eXBlOiBgY2hhcHRlclBhZ2VgLCBkYXRhOiB7IHBhZ2VJbmRleCB9IH0pXG5cbiAgY29uc3QgZ29Ub1BhZ2UgPSAocGFnZUluZGV4OiBudW1iZXIpID0+XG4gICAgbmF2aWdhdGlvblRyaWdnZXJTdWJqZWN0JC5uZXh0KHsgdHlwZTogYHBhZ2VJbmRleGAsIGRhdGE6IHsgcGFnZUluZGV4IH0gfSlcblxuICBjb25zdCBnb1RvQ2ZpID0gKGNmaTogc3RyaW5nLCBvcHRpb25zOiB7IGFuaW1hdGU6IGJvb2xlYW4gfSA9IHsgYW5pbWF0ZTogdHJ1ZSB9KSA9PlxuICAgIG5hdmlnYXRpb25UcmlnZ2VyU3ViamVjdCQubmV4dCh7IHR5cGU6IGBjZmlgLCBkYXRhOiB7IGNmaSwgLi4ub3B0aW9ucyB9IH0pXG5cbiAgY29uc3QgZ29Ub1VybCA9ICh1cmw6IHN0cmluZyB8IFVSTCkgPT5cbiAgICBuYXZpZ2F0aW9uVHJpZ2dlclN1YmplY3QkLm5leHQoeyB0eXBlOiBgdXJsYCwgZGF0YTogdXJsIH0pXG5cbiAgY29uc3QgZ29Ub1NwaW5lSXRlbSA9IChpbmRleE9ySWQ6IG51bWJlciB8IHN0cmluZywgb3B0aW9uczogeyBhbmltYXRlOiBib29sZWFuIH0gPSB7IGFuaW1hdGU6IHRydWUgfSkgPT4ge1xuICAgIG5hdmlnYXRpb25UcmlnZ2VyU3ViamVjdCQubmV4dCh7IHR5cGU6IGBzcGluZUl0ZW1gLCBkYXRhOiB7IGluZGV4T3JJZCwgLi4ub3B0aW9ucyB9IH0pXG4gIH1cblxuICBjb25zdCB1cmxOYXZpZ2F0aW9uJCA9IG5hdmlnYXRpb25UcmlnZ2VyU3ViamVjdCRcbiAgICAucGlwZShcbiAgICAgIGZpbHRlcigoZSk6IGUgaXMgVXJsTmF2aWdhdGlvbiA9PiBlLnR5cGUgPT09IGB1cmxgKSxcbiAgICAgIHN3aXRjaE1hcCgoeyBkYXRhIH0pID0+IHtcbiAgICAgICAgY29uc3QgbmF2aWdhdGlvbiA9IG5hdmlnYXRvci5nZXROYXZpZ2F0aW9uRm9yVXJsKGRhdGEpXG5cbiAgICAgICAgaWYgKG5hdmlnYXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gb2YoeyAuLi5uYXZpZ2F0aW9uLCBhbmltYXRlOiB0cnVlLCBsYXN0VXNlckV4cGVjdGVkTmF2aWdhdGlvbjogeyB0eXBlOiBgbmF2aWdhdGUtZnJvbS1hbmNob3JgIGFzIGNvbnN0LCBkYXRhOiBuYXZpZ2F0aW9uLnVybC5oYXNoIH0gfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBFTVBUWVxuICAgICAgfSlcbiAgICApXG5cbiAgY29uc3Qgc3BpbmVJdGVtTmF2aWdhdGlvbiQgPSBuYXZpZ2F0aW9uVHJpZ2dlclN1YmplY3QkXG4gICAgLnBpcGUoXG4gICAgICBmaWx0ZXIoKGUpOiBlIGlzIFNwaW5lSXRlbU5hdmlnYXRpb24gPT4gZS50eXBlID09PSBgc3BpbmVJdGVtYCksXG4gICAgICBzd2l0Y2hNYXAoKHsgZGF0YTogeyBhbmltYXRlLCBpbmRleE9ySWQgfSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IG5hdmlnYXRpb24gPSBuYXZpZ2F0b3IuZ2V0TmF2aWdhdGlvbkZvclNwaW5lSW5kZXhPcklkKGluZGV4T3JJZClcblxuICAgICAgICAvLyBhbHdheXMgd2FudCB0byBiZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpdGVtXG4gICAgICAgIGNvbnN0IGxhc3RVc2VyRXhwZWN0ZWROYXZpZ2F0aW9uID0geyB0eXBlOiBgbmF2aWdhdGUtZnJvbS1wcmV2aW91cy1pdGVtYCBhcyBjb25zdCB9XG5cbiAgICAgICAgUmVwb3J0LmxvZyhOQU1FU1BBQ0UsIGBnb1RvU3BpbmVJdGVtYCwgeyBpbmRleE9ySWQsIGFuaW1hdGUsIG5hdmlnYXRpb24gfSlcblxuICAgICAgICByZXR1cm4gb2YoeyAuLi5uYXZpZ2F0aW9uLCBhbmltYXRlLCBsYXN0VXNlckV4cGVjdGVkTmF2aWdhdGlvbiB9KVxuICAgICAgfSlcbiAgICApXG5cbiAgY29uc3QgY2ZpTmF2aWdhdGlvbiQgPSBuYXZpZ2F0aW9uVHJpZ2dlclN1YmplY3QkXG4gICAgLnBpcGUoXG4gICAgICBmaWx0ZXIoKGUpOiBlIGlzIENmaU5hdmlnYXRpb24gPT4gZS50eXBlID09PSBgY2ZpYCksXG4gICAgICBtYXAoKHsgZGF0YTogeyBhbmltYXRlLCBjZmkgfSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IG5hdmlnYXRpb24gPSBuYXZpZ2F0b3IuZ2V0TmF2aWdhdGlvbkZvckNmaShjZmkpXG5cbiAgICAgICAgUmVwb3J0LmxvZyhOQU1FU1BBQ0UsIGBnb1RvQ2ZpYCwgeyBjZmksIGFuaW1hdGUsIG5hdmlnYXRpb24gfSlcblxuICAgICAgICByZXR1cm4gKHtcbiAgICAgICAgICAuLi5uYXZpZ2F0aW9uLCBhbmltYXRlLCBsYXN0VXNlckV4cGVjdGVkTmF2aWdhdGlvbjogeyB0eXBlOiBgbmF2aWdhdGUtZnJvbS1jZmlgIGFzIGNvbnN0LCBkYXRhOiBjZmkgfVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICApXG5cbiAgY29uc3QgY2hhcHRlclBhZ2VOYXZpZ2F0aW9uJCA9IG5hdmlnYXRpb25UcmlnZ2VyU3ViamVjdCRcbiAgICAucGlwZShcbiAgICAgIGZpbHRlcigoZSk6IGUgaXMgQ2hhcHRlclBhZ2VOYXZpZ2F0aW9uID0+IGUudHlwZSA9PT0gYGNoYXB0ZXJQYWdlYCksXG4gICAgICBzd2l0Y2hNYXAoKHsgZGF0YTogeyBwYWdlSW5kZXggfSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHNwaW5lSXRlbSA9IHNwaW5lSXRlbU1hbmFnZXIuZ2V0Rm9jdXNlZFNwaW5lSXRlbSgpXG5cbiAgICAgICAgaWYgKHNwaW5lSXRlbSkge1xuICAgICAgICAgIGNvbnN0IG5hdmlnYXRpb24gPSBuYXZpZ2F0b3IuZ2V0TmF2aWdhdGlvbkZvclBhZ2UocGFnZUluZGV4LCBzcGluZUl0ZW0pXG5cbiAgICAgICAgICByZXR1cm4gb2YoeyAuLi5uYXZpZ2F0aW9uLCBsYXN0VXNlckV4cGVjdGVkTmF2aWdhdGlvbjogdW5kZWZpbmVkLCBhbmltYXRlOiB0cnVlIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRU1QVFlcbiAgICAgIH0pXG4gICAgKVxuXG4gIGNvbnN0IHBhZ2VOYXZpZ2F0aW9uJCA9IG5hdmlnYXRpb25UcmlnZ2VyU3ViamVjdCRcbiAgICAucGlwZShcbiAgICAgIGZpbHRlcigoZSk6IGUgaXMgUGFnZUluZGV4TmF2aWdhdGlvbiA9PiBlLnR5cGUgPT09IGBwYWdlSW5kZXhgKSxcbiAgICAgIGZpbHRlcihfID0+IHtcbiAgICAgICAgaWYgKGNvbnRleHQuZ2V0TWFuaWZlc3QoKT8ucmVuZGl0aW9uTGF5b3V0ID09PSBgcmVmbG93YWJsZWApIHtcbiAgICAgICAgICBSZXBvcnQud2FybihgVGhpcyBtZXRob2Qgb25seSB3b3JrcyBmb3IgcHJlLXBhZ2luYXRlZCBjb250ZW50YClcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoeyBkYXRhOiB7IHBhZ2VJbmRleCB9IH0pID0+IHtcbiAgICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgICAuLi5uYXZpZ2F0b3IuZ2V0TmF2aWdhdGlvbkZvclBhZ2UocGFnZUluZGV4KSxcbiAgICAgICAgICBsYXN0VXNlckV4cGVjdGVkTmF2aWdhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgIGFuaW1hdGU6IHRydWVcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgKVxuXG4gIGNvbnN0IHR1cm5QYWdlVG8kID0gUmVwb3J0Lm1lYXN1cmVQZXJmb3JtYW5jZShgdHVyblRvYCwgMTAsIChuYXZpZ2F0aW9uOiBWaWV3cG9ydE5hdmlnYXRpb25FbnRyeSwgeyBhbGxvd1NwaW5lSXRlbUNoYW5nZSA9IHRydWUgfTogeyBhbGxvd1NwaW5lSXRlbUNoYW5nZT86IGJvb2xlYW4gfSA9IHt9KSA9PiB7XG4gICAgY29uc3QgY3VycmVudFNwaW5lSXRlbSA9IHNwaW5lSXRlbU1hbmFnZXIuZ2V0Rm9jdXNlZFNwaW5lSXRlbSgpXG5cbiAgICBpZiAoIWN1cnJlbnRTcGluZUl0ZW0pIHJldHVybiBFTVBUWVxuXG4gICAgY29uc3QgbmV3U3BpbmVJdGVtID0gbG9jYXRvci5nZXRTcGluZUl0ZW1Gcm9tUG9zaXRpb24obmF2aWdhdGlvbikgfHwgY3VycmVudFNwaW5lSXRlbVxuICAgIGNvbnN0IHNwaW5lSXRlbUhhc0NoYW5nZWQgPSBuZXdTcGluZUl0ZW0gIT09IGN1cnJlbnRTcGluZUl0ZW1cblxuICAgIGlmIChzcGluZUl0ZW1IYXNDaGFuZ2VkKSB7XG4gICAgICBpZiAoYWxsb3dTcGluZUl0ZW1DaGFuZ2UpIHtcbiAgICAgICAgaWYgKHNwaW5lSXRlbU1hbmFnZXIuY29tcGFyZVBvc2l0aW9uT2YobmV3U3BpbmVJdGVtLCBjdXJyZW50U3BpbmVJdGVtKSA9PT0gYGJlZm9yZWApIHtcbiAgICAgICAgICByZXR1cm4gb2YoeyAuLi5uYXZpZ2F0aW9uLCBsYXN0VXNlckV4cGVjdGVkTmF2aWdhdGlvbjogeyB0eXBlOiBgbmF2aWdhdGUtZnJvbS1uZXh0LWl0ZW1gIGFzIGNvbnN0IH0sIGFuaW1hdGU6IHRydWUgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gb2YoeyAuLi5uYXZpZ2F0aW9uLCBsYXN0VXNlckV4cGVjdGVkTmF2aWdhdGlvbjogeyB0eXBlOiBgbmF2aWdhdGUtZnJvbS1wcmV2aW91cy1pdGVtYCBhcyBjb25zdCB9LCBhbmltYXRlOiB0cnVlIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKHsgLi4ubmF2aWdhdGlvbiwgbGFzdFVzZXJFeHBlY3RlZE5hdmlnYXRpb246IHVuZGVmaW5lZCwgYW5pbWF0ZTogdHJ1ZSB9KVxuICAgIH1cblxuICAgIHJldHVybiBFTVBUWVxuICB9KVxuXG4gIGNvbnN0IGxlZnRQYWdlTmF2aWdhdGlvbiQgPSBuYXZpZ2F0aW9uVHJpZ2dlclN1YmplY3QkXG4gICAgLnBpcGUoXG4gICAgICBmaWx0ZXIoKGUpOiBlIGlzIExlZnRQYWdlTmF2aWdhdGlvbiA9PiBlLnR5cGUgPT09IGBsZWZ0UGFnZWApLFxuICAgICAgd2l0aExhdGVzdEZyb20oY3VycmVudE5hdmlnYXRpb25TdWJqZWN0JCksXG4gICAgICBzd2l0Y2hNYXAoKFt7IGRhdGE6IHsgYWxsb3dTcGluZUl0ZW1DaGFuZ2UgfSB9LCBjdXJyZW50TmF2aWdhdGlvbl0pID0+IHtcbiAgICAgICAgY29uc3QgbmF2aWdhdGlvbiA9IG5hdmlnYXRvci5nZXROYXZpZ2F0aW9uRm9yTGVmdFBhZ2UoY3VycmVudE5hdmlnYXRpb24pXG5cbiAgICAgICAgcmV0dXJuIHR1cm5QYWdlVG8kKG5hdmlnYXRpb24sIHsgYWxsb3dTcGluZUl0ZW1DaGFuZ2UgfSlcbiAgICAgIH0pXG4gICAgKVxuXG4gIGNvbnN0IHJpZ2h0UGFnZU5hdmlnYXRpb24kID0gbmF2aWdhdGlvblRyaWdnZXJTdWJqZWN0JFxuICAgIC5waXBlKFxuICAgICAgZmlsdGVyKChlKTogZSBpcyBSaWdodFBhZ2VOYXZpZ2F0aW9uID0+IGUudHlwZSA9PT0gYHJpZ2h0UGFnZWApLFxuICAgICAgd2l0aExhdGVzdEZyb20oY3VycmVudE5hdmlnYXRpb25TdWJqZWN0JCksXG4gICAgICBzd2l0Y2hNYXAoKFt7IGRhdGE6IHsgYWxsb3dTcGluZUl0ZW1DaGFuZ2UgfSB9LCBjdXJyZW50TmF2aWdhdGlvbl0pID0+IHtcbiAgICAgICAgY29uc3QgbmF2aWdhdGlvbiA9IG5hdmlnYXRvci5nZXROYXZpZ2F0aW9uRm9yUmlnaHRQYWdlKGN1cnJlbnROYXZpZ2F0aW9uKVxuXG4gICAgICAgIHJldHVybiB0dXJuUGFnZVRvJChuYXZpZ2F0aW9uLCB7IGFsbG93U3BpbmVJdGVtQ2hhbmdlIH0pXG4gICAgICB9KVxuICAgIClcblxuICBjb25zdCBuYXZpZ2F0aW9uJCA9IG1lcmdlKFxuICAgIHVybE5hdmlnYXRpb24kLFxuICAgIHNwaW5lSXRlbU5hdmlnYXRpb24kLFxuICAgIGNoYXB0ZXJQYWdlTmF2aWdhdGlvbiQsXG4gICAgbGVmdFBhZ2VOYXZpZ2F0aW9uJCxcbiAgICByaWdodFBhZ2VOYXZpZ2F0aW9uJCxcbiAgICAvLyBmb3Igc29tZSByZWFzb24gYWZ0ZXIgdG9vIG11Y2ggaXRlbSB0cyBjb21wbGFpbnNcbiAgICBtZXJnZShcbiAgICAgIGNmaU5hdmlnYXRpb24kLFxuICAgICAgcGFnZU5hdmlnYXRpb24kXG4gICAgKVxuICApXG4gICAgLnBpcGUoXG4gICAgICAvKipcbiAgICAgICAqIElkZWFsbHkgd2hlbiBtYW51YWxseSBuYXZpZ2F0aW5nIHdlIGV4cGVjdCB0aGUgbmF2aWdhdGlvbiB0byBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgcHJldmlvdXMgb25lLlxuICAgICAgICogVGhpcyBpcyBiZWNhdXNlIG1hbnVhbCBuYXZpZ2F0aW9uIGlzIG5vdCB1c2VkIHdpdGggc2Nyb2xsIHdoZXJlIHlvdSBjYW4gbW92ZSB3aXRoaW4gdGhlIHNhbWUgaXRlbS4gQSBtYW51YWxcbiAgICAgICAqIG5hdmlnYXRpb24gd291bGQgdGhlb3JldGljYWxseSBhbHdheXMgbW92ZSB0byBkaWZmZXJlbnQgaXRlbXMuXG4gICAgICAgKi9cbiAgICAgIHdpdGhMYXRlc3RGcm9tKGN1cnJlbnROYXZpZ2F0aW9uU3ViamVjdCQpLFxuICAgICAgZmlsdGVyKChbbmF2aWdhdGlvbiwgY3VycmVudE5hdmlnYXRpb25dKSA9PiBuYXZpZ2F0b3IuYXJlTmF2aWdhdGlvbkRpZmZlcmVudChuYXZpZ2F0aW9uLCBjdXJyZW50TmF2aWdhdGlvbikpLFxuICAgICAgbWFwKChbbmF2aWdhdGlvbl0pID0+IG5hdmlnYXRpb24pXG4gICAgKVxuXG4gIHJldHVybiB7XG4gICAgZGVzdHJveTogKCkgPT4geyB9LFxuICAgIGFkanVzdFJlYWRpbmdPZmZzZXQ6IChfOiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0pID0+IHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0sXG4gICAgdHVybkxlZnQsXG4gICAgdHVyblJpZ2h0LFxuICAgIGdvVG9DZmksXG4gICAgZ29Ub1BhZ2VPZkN1cnJlbnRDaGFwdGVyLFxuICAgIGdvVG9TcGluZUl0ZW0sXG4gICAgZ29Ub1VybCxcbiAgICBnb1RvUGFnZSxcbiAgICAkOiB7XG4gICAgICBzdGF0ZSQ6IHN0YXRlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCksXG4gICAgICBuYXZpZ2F0aW9uJFxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/spine/viewportNavigator/manualViewportNavigator.ts\n");
|
|
370
|
+
|
|
371
|
+
/***/ }),
|
|
372
|
+
|
|
373
|
+
/***/ "./src/spine/viewportNavigator/panViewportNavigator.ts":
|
|
374
|
+
/*!*************************************************************!*\
|
|
375
|
+
!*** ./src/spine/viewportNavigator/panViewportNavigator.ts ***!
|
|
376
|
+
\*************************************************************/
|
|
377
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
378
|
+
|
|
379
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createPanViewportNavigator\": () => (/* binding */ createPanViewportNavigator)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../report */ \"./src/report.ts\");\n\n\n\nconst NAMESPACE = `panViewportNavigator`;\nconst createPanViewportNavigator = ({ getCurrentViewportPosition, navigator, spineItemManager, locator, context, currentNavigationSubject$ }) => {\n const navigationTriggerSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const stateSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject(`end`);\n let movingLastDelta = { x: 0, y: 0 };\n let movingLastPosition = { x: 0, y: 0 };\n const moveToSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const moveTo = _report__WEBPACK_IMPORTED_MODULE_2__.Report.measurePerformance(`${NAMESPACE} moveTo`, 5, (delta, { final, start } = {}) => {\n if (context.getSettings().computedPageTurnMode === `scrollable`) {\n _report__WEBPACK_IMPORTED_MODULE_2__.Report.warn(`pan control is not available on free page turn mode`);\n return;\n }\n const pageTurnDirection = context.getSettings().computedPageTurnDirection;\n if (start) {\n stateSubject$.next(`start`);\n movingLastDelta = { x: 0, y: 0 };\n movingLastPosition = getCurrentViewportPosition();\n }\n let navigation = currentNavigationSubject$.value;\n if (delta) {\n const correctedX = delta.x - ((movingLastDelta === null || movingLastDelta === void 0 ? void 0 : movingLastDelta.x) || 0);\n const correctedY = delta.y - ((movingLastDelta === null || movingLastDelta === void 0 ? void 0 : movingLastDelta.y) || 0);\n navigation = navigator.wrapPositionWithSafeEdge({\n x: pageTurnDirection === `horizontal`\n ? context.isRTL()\n ? movingLastPosition.x + correctedX\n : movingLastPosition.x - correctedX\n : 0,\n y: pageTurnDirection === `horizontal` ? 0 : movingLastPosition.y - correctedY\n });\n movingLastDelta = delta;\n }\n else {\n navigation = getCurrentViewportPosition();\n }\n movingLastPosition = navigation;\n if (final) {\n movingLastDelta = { x: 0, y: 0 };\n snapTo({\n from: currentNavigationSubject$.value,\n to: navigation,\n pan: movingLastPosition\n });\n stateSubject$.next(`end`);\n return;\n }\n moveToSubject$.next({ position: navigation });\n }, { disable: false });\n const snapTo = (data) => {\n navigationTriggerSubject$.next({ type: `snap`, data });\n };\n const getLastUserExpectedNavigation = _report__WEBPACK_IMPORTED_MODULE_2__.Report.measurePerformance(`turnTo`, 10, (navigation, { allowSpineItemChange = true } = {}) => {\n const currentSpineItem = spineItemManager.getFocusedSpineItem();\n if (!currentSpineItem)\n return undefined;\n const newSpineItem = locator.getSpineItemFromPosition(navigation) || currentSpineItem;\n const spineItemHasChanged = newSpineItem !== currentSpineItem;\n if (spineItemHasChanged) {\n if (allowSpineItemChange) {\n if (spineItemManager.comparePositionOf(newSpineItem, currentSpineItem) === `before`) {\n return { type: `navigate-from-next-item` };\n }\n else {\n return { type: `navigate-from-previous-item` };\n }\n }\n }\n else {\n return undefined;\n }\n });\n const snapNavigation$ = navigationTriggerSubject$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)((e) => e.type === `snap`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(({ data: { from, to } }) => {\n const pageTurnDirection = context.getSettings().computedPageTurnDirection;\n const movingForward = navigator.isNavigationGoingForwardFrom(to, from);\n const triggerPercentage = movingForward ? 0.7 : 0.3;\n const triggerXPosition = pageTurnDirection === `horizontal`\n ? to.x + (context.getVisibleAreaRect().width * triggerPercentage)\n : 0;\n const triggerYPosition = pageTurnDirection === `horizontal`\n ? 0\n : to.y + (context.getVisibleAreaRect().height * triggerPercentage);\n const midScreenPositionSafePosition = navigator.wrapPositionWithSafeEdge({ x: triggerXPosition, y: triggerYPosition });\n const finalNavigation = navigator.getNavigationForPosition(midScreenPositionSafePosition);\n const lastUserExpectedNavigation = getLastUserExpectedNavigation(finalNavigation);\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.of)(Object.assign(Object.assign({}, finalNavigation), { lastUserExpectedNavigation }));\n }));\n const destroy = () => {\n moveToSubject$.complete();\n stateSubject$.complete();\n };\n return {\n moveTo,\n destroy,\n adjustReadingOffset: (_) => {\n return false;\n },\n $: {\n moveToSubject$,\n state$: stateSubject$.asObservable(),\n navigation$: (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.merge)(snapNavigation$)\n }\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3BpbmUvdmlld3BvcnROYXZpZ2F0b3IvcGFuVmlld3BvcnROYXZpZ2F0b3IudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQTBEO0FBQ1I7QUFHYjtBQUtyQyxNQUFNLFNBQVMsR0FBRyxzQkFBc0I7QUFJakMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLEVBQUUsMEJBQTBCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBUWhKLEVBQUUsRUFBRTtJQUNILE1BQU0seUJBQXlCLEdBQUcsSUFBSSx5Q0FBTyxFQUUxQztJQUNILE1BQU0sYUFBYSxHQUFHLElBQUksaURBQWUsQ0FBa0IsS0FBSyxDQUFDO0lBQ2pFLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3BDLElBQUksa0JBQWtCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdkMsTUFBTSxjQUFjLEdBQUcsSUFBSSx5Q0FBTyxFQUF5QztJQUszRSxNQUFNLE1BQU0sR0FBRyw4REFBeUIsQ0FBQyxHQUFHLFNBQVMsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQTJDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUEyQyxFQUFFLEVBQUUsRUFBRTtRQUM5SyxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxvQkFBb0IsS0FBSyxZQUFZLEVBQUU7WUFDL0QsZ0RBQVcsQ0FBQyxxREFBcUQsQ0FBQztZQUNsRSxPQUFNO1NBQ1A7UUFFRCxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyx5QkFBeUI7UUFFekUsSUFBSSxLQUFLLEVBQUU7WUFDVCxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUMzQixlQUFlLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFD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RTtRQUNuQixjQUFjLENBQUMsUUFBUSxFQUFFO1FBQ3pCLGFBQWEsQ0FBQyxRQUFRLEVBQUU7SUFDMUIsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNO1FBQ04sT0FBTztRQUNQLG1CQUFtQixFQUFFLENBQUMsQ0FBMkIsRUFBRSxFQUFFO1lBQ25ELE9BQU8sS0FBSztRQUNkLENBQUM7UUFDRCxDQUFDLEVBQUU7WUFDRCxjQUFjO1lBQ2QsTUFBTSxFQUFFLGFBQWEsQ0FBQyxZQUFZLEVBQUU7WUFDcEMsV0FBVyxFQUFFLDJDQUFLLENBQ2hCLGVBQWUsQ0FDaEI7U0FDRjtLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0Bwcm9zZS1yZWFkZXIvY29yZS8uL3NyYy9zcGluZS92aWV3cG9ydE5hdmlnYXRvci9wYW5WaWV3cG9ydE5hdmlnYXRvci50cz9kMWZlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWVyZ2UsIG9mLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIlxuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIlxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi8uLi9jb250ZXh0XCJcbmltcG9ydCB7IFNwaW5lSXRlbU1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vc3BpbmVJdGVtTWFuYWdlclwiXG5pbXBvcnQgeyBSZXBvcnQgfSBmcm9tIFwiLi4vLi4vcmVwb3J0XCJcbmltcG9ydCB7IGNyZWF0ZU5hdmlnYXRpb25SZXNvbHZlciwgVmlld3BvcnROYXZpZ2F0aW9uRW50cnkgfSBmcm9tIFwiLi4vbmF2aWdhdGlvblJlc29sdmVyXCJcbmltcG9ydCB7IGNyZWF0ZUxvY2F0aW9uUmVzb2x2ZXIgfSBmcm9tIFwiLi4vbG9jYXRpb25SZXNvbHZlclwiXG5pbXBvcnQgeyBWaWV3cG9ydFBvc2l0aW9uIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcblxuY29uc3QgTkFNRVNQQUNFID0gYHBhblZpZXdwb3J0TmF2aWdhdG9yYFxuXG50eXBlIFNuYXBOYXZpZ2F0aW9uID0geyB0eXBlOiBgc25hcGAsIGRhdGE6IHsgZnJvbTogVmlld3BvcnROYXZpZ2F0aW9uRW50cnksIHRvOiBWaWV3cG9ydE5hdmlnYXRpb25FbnRyeSwgcGFuOiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0gfSB9XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQYW5WaWV3cG9ydE5hdmlnYXRvciA9ICh7IGdldEN1cnJlbnRWaWV3cG9ydFBvc2l0aW9uLCBuYXZpZ2F0b3IsIHNwaW5lSXRlbU1hbmFnZXIsIGxvY2F0b3IsIGNvbnRleHQsIGN1cnJlbnROYXZpZ2F0aW9uU3ViamVjdCQgfToge1xuICBjb250ZXh0OiBDb250ZXh0LFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgbmF2aWdhdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVOYXZpZ2F0aW9uUmVzb2x2ZXI+LFxuICBjdXJyZW50TmF2aWdhdGlvblN1YmplY3QkOiBCZWhhdmlvclN1YmplY3Q8Vmlld3BvcnROYXZpZ2F0aW9uRW50cnk+LFxuICBzcGluZUl0ZW1NYW5hZ2VyOiBTcGluZUl0ZW1NYW5hZ2VyLFxuICBsb2NhdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVMb2NhdGlvblJlc29sdmVyPixcbiAgZ2V0Q3VycmVudFZpZXdwb3J0UG9zaXRpb246ICgpID0+IFZpZXdwb3J0UG9zaXRpb25cbn0pID0+IHtcbiAgY29uc3QgbmF2aWdhdGlvblRyaWdnZXJTdWJqZWN0JCA9IG5ldyBTdWJqZWN0PFxuICAgIHwgU25hcE5hdmlnYXRpb25cbiAgPigpXG4gIGNvbnN0IHN0YXRlU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGBlbmRgIHwgYHN0YXJ0YD4oYGVuZGApXG4gIGxldCBtb3ZpbmdMYXN0RGVsdGEgPSB7IHg6IDAsIHk6IDAgfVxuICBsZXQgbW92aW5nTGFzdFBvc2l0aW9uID0geyB4OiAwLCB5OiAwIH1cbiAgY29uc3QgbW92ZVRvU3ViamVjdCQgPSBuZXcgU3ViamVjdDx7IHBvc2l0aW9uOiBWaWV3cG9ydE5hdmlnYXRpb25FbnRyeSB9PigpXG5cbiAgLyoqXG4gICAqIEBwcm90b3R5cGVcbiAgICovXG4gIGNvbnN0IG1vdmVUbyA9IFJlcG9ydC5tZWFzdXJlUGVyZm9ybWFuY2UoYCR7TkFNRVNQQUNFfSBtb3ZlVG9gLCA1LCAoZGVsdGE6IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfSB8IHVuZGVmaW5lZCwgeyBmaW5hbCwgc3RhcnQgfTogeyBzdGFydD86IGJvb2xlYW4sIGZpbmFsPzogYm9vbGVhbiB9ID0ge30pID0+IHtcbiAgICBpZiAoY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkUGFnZVR1cm5Nb2RlID09PSBgc2Nyb2xsYWJsZWApIHtcbiAgICAgIFJlcG9ydC53YXJuKGBwYW4gY29udHJvbCBpcyBub3QgYXZhaWxhYmxlIG9uIGZyZWUgcGFnZSB0dXJuIG1vZGVgKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgcGFnZVR1cm5EaXJlY3Rpb24gPSBjb250ZXh0LmdldFNldHRpbmdzKCkuY29tcHV0ZWRQYWdlVHVybkRpcmVjdGlvblxuXG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICBzdGF0ZVN1YmplY3QkLm5leHQoYHN0YXJ0YClcbiAgICAgIG1vdmluZ0xhc3REZWx0YSA9IHsgeDogMCwgeTogMCB9XG4gICAgICBtb3ZpbmdMYXN0UG9zaXRpb24gPSBnZXRDdXJyZW50Vmlld3BvcnRQb3NpdGlvbigpXG4gICAgfVxuXG4gICAgbGV0IG5hdmlnYXRpb24gPSBjdXJyZW50TmF2aWdhdGlvblN1YmplY3QkLnZhbHVlXG5cbiAgICBpZiAoZGVsdGEpIHtcbiAgICAgIGNvbnN0IGNvcnJlY3RlZFggPSBkZWx0YS54IC0gKG1vdmluZ0xhc3REZWx0YT8ueCB8fCAwKVxuICAgICAgY29uc3QgY29ycmVjdGVkWSA9IGRlbHRhLnkgLSAobW92aW5nTGFzdERlbHRhPy55IHx8IDApXG5cbiAgICAgIG5hdmlnYXRpb24gPSBuYXZpZ2F0b3Iud3JhcFBvc2l0aW9uV2l0aFNhZmVFZGdlKHtcbiAgICAgICAgeDogcGFnZVR1cm5EaXJlY3Rpb24gPT09IGBob3Jpem9udGFsYFxuICAgICAgICAgID8gY29udGV4dC5pc1JUTCgpXG4gICAgICAgICAgICA/IG1vdmluZ0xhc3RQb3NpdGlvbi54ICsgY29ycmVjdGVkWFxuICAgICAgICAgICAgOiBtb3ZpbmdMYXN0UG9zaXRpb24ueCAtIGNvcnJlY3RlZFhcbiAgICAgICAgICA6IDAsXG4gICAgICAgIHk6IHBhZ2VUdXJuRGlyZWN0aW9uID09PSBgaG9yaXpvbnRhbGAgPyAwIDogbW92aW5nTGFzdFBvc2l0aW9uLnkgLSBjb3JyZWN0ZWRZXG4gICAgICB9KVxuXG4gICAgICBtb3ZpbmdMYXN0RGVsdGEgPSBkZWx0YVxuICAgIH0gZWxzZSB7XG4gICAgICBuYXZpZ2F0aW9uID0gZ2V0Q3VycmVudFZpZXdwb3J0UG9zaXRpb24oKVxuICAgIH1cblxuICAgIG1vdmluZ0xhc3RQb3NpdGlvbiA9IG5hdmlnYXRpb25cblxuICAgIGlmIChmaW5hbCkge1xuICAgICAgbW92aW5nTGFzdERlbHRhID0geyB4OiAwLCB5OiAwIH1cblxuICAgICAgc25hcFRvKHtcbiAgICAgICAgZnJvbTogY3VycmVudE5hdmlnYXRpb25TdWJqZWN0JC52YWx1ZSxcbiAgICAgICAgdG86IG5hdmlnYXRpb24sXG4gICAgICAgIHBhbjogbW92aW5nTGFzdFBvc2l0aW9uXG4gICAgICB9KVxuICAgICAgc3RhdGVTdWJqZWN0JC5uZXh0KGBlbmRgKVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBtb3ZlVG9TdWJqZWN0JC5uZXh0KHsgcG9zaXRpb246IG5hdmlnYXRpb24gfSlcbiAgfSwgeyBkaXNhYmxlOiBmYWxzZSB9KVxuXG4gIGNvbnN0IHNuYXBUbyA9IChkYXRhOiBTbmFwTmF2aWdhdGlvbltgZGF0YWBdKSA9PiB7XG4gICAgbmF2aWdhdGlvblRyaWdnZXJTdWJqZWN0JC5uZXh0KHsgdHlwZTogYHNuYXBgLCBkYXRhIH0pXG4gIH1cblxuICBjb25zdCBnZXRMYXN0VXNlckV4cGVjdGVkTmF2aWdhdGlvbiA9IFJlcG9ydC5tZWFzdXJlUGVyZm9ybWFuY2UoYHR1cm5Ub2AsIDEwLCAobmF2aWdhdGlvbjogVmlld3BvcnROYXZpZ2F0aW9uRW50cnksIHsgYWxsb3dTcGluZUl0ZW1DaGFuZ2UgPSB0cnVlIH06IHsgYWxsb3dTcGluZUl0ZW1DaGFuZ2U/OiBib29sZWFuIH0gPSB7fSkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTcGluZUl0ZW0gPSBzcGluZUl0ZW1NYW5hZ2VyLmdldEZvY3VzZWRTcGluZUl0ZW0oKVxuXG4gICAgaWYgKCFjdXJyZW50U3BpbmVJdGVtKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb25zdCBuZXdTcGluZUl0ZW0gPSBsb2NhdG9yLmdldFNwaW5lSXRlbUZyb21Qb3NpdGlvbihuYXZpZ2F0aW9uKSB8fCBjdXJyZW50U3BpbmVJdGVtXG4gICAgY29uc3Qgc3BpbmVJdGVtSGFzQ2hhbmdlZCA9IG5ld1NwaW5lSXRlbSAhPT0gY3VycmVudFNwaW5lSXRlbVxuXG4gICAgaWYgKHNwaW5lSXRlbUhhc0NoYW5nZWQpIHtcbiAgICAgIGlmIChhbGxvd1NwaW5lSXRlbUNoYW5nZSkge1xuICAgICAgICBpZiAoc3BpbmVJdGVtTWFuYWdlci5jb21wYXJlUG9zaXRpb25PZihuZXdTcGluZUl0ZW0sIGN1cnJlbnRTcGluZUl0ZW0pID09PSBgYmVmb3JlYCkge1xuICAgICAgICAgIHJldHVybiB7IHR5cGU6IGBuYXZpZ2F0ZS1mcm9tLW5leHQtaXRlbWAgYXMgY29uc3QgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB7IHR5cGU6IGBuYXZpZ2F0ZS1mcm9tLXByZXZpb3VzLWl0ZW1gIGFzIGNvbnN0IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IHNuYXBOYXZpZ2F0aW9uJCA9IG5hdmlnYXRpb25UcmlnZ2VyU3ViamVjdCRcbiAgICAucGlwZShcbiAgICAgIGZpbHRlcigoZSk6IGUgaXMgU25hcE5hdmlnYXRpb24gPT4gZS50eXBlID09PSBgc25hcGApLFxuICAgICAgc3dpdGNoTWFwKCh7IGRhdGE6IHsgZnJvbSwgdG8gfSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhZ2VUdXJuRGlyZWN0aW9uID0gY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkUGFnZVR1cm5EaXJlY3Rpb25cbiAgICAgICAgY29uc3QgbW92aW5nRm9yd2FyZCA9IG5hdmlnYXRvci5pc05hdmlnYXRpb25Hb2luZ0ZvcndhcmRGcm9tKHRvLCBmcm9tKVxuICAgICAgICBjb25zdCB0cmlnZ2VyUGVyY2VudGFnZSA9IG1vdmluZ0ZvcndhcmQgPyAwLjcgOiAwLjNcbiAgICAgICAgY29uc3QgdHJpZ2dlclhQb3NpdGlvbiA9IHBhZ2VUdXJuRGlyZWN0aW9uID09PSBgaG9yaXpvbnRhbGBcbiAgICAgICAgICA/IHRvLnggKyAoY29udGV4dC5nZXRWaXNpYmxlQXJlYVJlY3QoKS53aWR0aCAqIHRyaWdnZXJQZXJjZW50YWdlKVxuICAgICAgICAgIDogMFxuICAgICAgICBjb25zdCB0cmlnZ2VyWVBvc2l0aW9uID0gcGFnZVR1cm5EaXJlY3Rpb24gPT09IGBob3Jpem9udGFsYFxuICAgICAgICAgID8gMFxuICAgICAgICAgIDogdG8ueSArIChjb250ZXh0LmdldFZpc2libGVBcmVhUmVjdCgpLmhlaWdodCAqIHRyaWdnZXJQZXJjZW50YWdlKVxuICAgICAgICBjb25zdCBtaWRTY3JlZW5Qb3NpdGlvblNhZmVQb3NpdGlvbiA9IG5hdmlnYXRvci53cmFwUG9zaXRpb25XaXRoU2FmZUVkZ2UoeyB4OiB0cmlnZ2VyWFBvc2l0aW9uLCB5OiB0cmlnZ2VyWVBvc2l0aW9uIH0pXG4gICAgICAgIGNvbnN0IGZpbmFsTmF2aWdhdGlvbiA9IG5hdmlnYXRvci5nZXROYXZpZ2F0aW9uRm9yUG9zaXRpb24obWlkU2NyZWVuUG9zaXRpb25TYWZlUG9zaXRpb24pXG4gICAgICAgIGNvbnN0IGxhc3RVc2VyRXhwZWN0ZWROYXZpZ2F0aW9uID0gZ2V0TGFzdFVzZXJFeHBlY3RlZE5hdmlnYXRpb24oZmluYWxOYXZpZ2F0aW9uKVxuXG4gICAgICAgIC8vIEB0b2RvIHJldHVybiBhbiBhbmltYXRpb24gaW50ZXJwb2xhdGlvbiBiYXNlZCBvbiB0aGUgZGlzdGFuY2VcblxuICAgICAgICByZXR1cm4gb2YoeyAuLi5maW5hbE5hdmlnYXRpb24sIGxhc3RVc2VyRXhwZWN0ZWROYXZpZ2F0aW9uIH0pXG4gICAgICB9KVxuICAgIClcblxuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgIG1vdmVUb1N1YmplY3QkLmNvbXBsZXRlKClcbiAgICBzdGF0ZVN1YmplY3QkLmNvbXBsZXRlKClcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW92ZVRvLFxuICAgIGRlc3Ryb3ksXG4gICAgYWRqdXN0UmVhZGluZ09mZnNldDogKF86IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfSkgPT4ge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSxcbiAgICAkOiB7XG4gICAgICBtb3ZlVG9TdWJqZWN0JCxcbiAgICAgIHN0YXRlJDogc3RhdGVTdWJqZWN0JC5hc09ic2VydmFibGUoKSxcbiAgICAgIG5hdmlnYXRpb24kOiBtZXJnZShcbiAgICAgICAgc25hcE5hdmlnYXRpb24kXG4gICAgICApXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/spine/viewportNavigator/panViewportNavigator.ts\n");
|
|
380
|
+
|
|
381
|
+
/***/ }),
|
|
382
|
+
|
|
383
|
+
/***/ "./src/spine/viewportNavigator/scrollViewportNavigator.ts":
|
|
384
|
+
/*!****************************************************************!*\
|
|
385
|
+
!*** ./src/spine/viewportNavigator/scrollViewportNavigator.ts ***!
|
|
386
|
+
\****************************************************************/
|
|
387
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
388
|
+
|
|
389
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createScrollViewportNavigator\": () => (/* binding */ createScrollViewportNavigator)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__);\n\n\nconst SCROLL_FINISHED_DEBOUNCE_TIMEOUT = 200;\nconst createScrollViewportNavigator = ({ context, element, navigator, currentNavigationSubject$ }) => {\n let lastScrollWasProgrammaticallyTriggered = false;\n const onlyUserScrollFilter = (source) => source.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)(() => {\n if (lastScrollWasProgrammaticallyTriggered) {\n lastScrollWasProgrammaticallyTriggered = false;\n return false;\n }\n return true;\n }));\n const adjustReadingOffset = ({ x, y }) => {\n if (context.getSettings().computedPageTurnMode === `scrollable`) {\n lastScrollWasProgrammaticallyTriggered = true;\n element.scrollTo({ left: x, top: y });\n return true;\n }\n return false;\n };\n const runOnFreePageTurnModeOnly$ = (source) => context.$.settings$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.map)(() => context.getSettings().computedPageTurnMode), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.distinctUntilChanged)(), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)((mode) => (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.iif)(() => mode === `controlled`, rxjs__WEBPACK_IMPORTED_MODULE_0__.EMPTY, source)));\n const userScroll$ = runOnFreePageTurnModeOnly$((0,rxjs__WEBPACK_IMPORTED_MODULE_0__.fromEvent)(element, `scroll`))\n .pipe(onlyUserScrollFilter, (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.share)(), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(context.$.destroy$));\n const navigationOnScroll$ = userScroll$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.debounceTime)(SCROLL_FINISHED_DEBOUNCE_TIMEOUT, rxjs__WEBPACK_IMPORTED_MODULE_0__.animationFrameScheduler), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.withLatestFrom)(currentNavigationSubject$), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)(() => {\n const navigation = navigator.getMostPredominantNavigationForPosition({ x: element.scrollLeft, y: element.scrollTop });\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.of)({ position: navigation, animate: false, lastUserExpectedNavigation: undefined });\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.share)());\n const userScrollEnd$ = userScroll$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.debounceTime)(SCROLL_FINISHED_DEBOUNCE_TIMEOUT, rxjs__WEBPACK_IMPORTED_MODULE_0__.animationFrameScheduler), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.share)(), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(context.$.destroy$));\n const state$ = (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.merge)(userScroll$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.map)(() => `start`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.distinctUntilChanged)()), userScrollEnd$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.map)(() => `end`)))\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.startWith)(`end`));\n return {\n destroy: () => { },\n adjustReadingOffset,\n $: {\n state$,\n navigation$: navigationOnScroll$\n }\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3BpbmUvdmlld3BvcnROYXZpZ2F0b3Ivc2Nyb2xsVmlld3BvcnROYXZpZ2F0b3IudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBdUk7QUFDTTtBQUk3SSxNQUFNLGdDQUFnQyxHQUFHLEdBQUc7QUFFckMsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUseUJBQXlCLEVBS3JHLEVBQUUsRUFBRTtJQUNILElBQUksc0NBQXNDLEdBQUcsS0FBSztJQUVsRCxNQUFNLG9CQUFvQixHQUFHLENBQUksTUFBcUIsRUFBaUIsRUFBRSxDQUN2RSxNQUFNLENBQUMsSUFBSSxDQUFDLHNEQUFNLENBQUMsR0FBRyxFQUFFO1FBQ3RCLElBQUksc0NBQXNDLEVBQUU7WUFDMUMsc0NBQXNDLEdBQUcsS0FBSztZQUM5QyxPQUFPLEtBQUs7U0FDYjtRQUVELE9BQU8sSUFBSTtJQUNiLENBQUMsQ0FBQyxDQUFDO0lBRUwsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBNEIsRUFBRSxFQUFFO1FBQ2pFLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLG9CQUFvQixLQUFLLFlBQVksRUFBRTtZQUMvRCxzQ0FBc0MsR0FBRyxJQUFJO1lBQzdDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUVyQyxPQUFPLElBQUk7U0FDWjtRQUVELE9BQU8sS0FBSztJQUNkLENBQUM7SUFFRCxNQUFNLDBCQUEwQixHQUFHLENBQUksTUFBcUIsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ2pGLElBQUksQ0FDSCxtREFBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUNyRCxvRUFBb0IsRUFBRSxFQUN0Qix5REFBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDakIseUNBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLHVDQUFLLEVBQUUsTUFBTSxDQUFDLENBQ2hELENBQ0Y7SUFFSCxNQUFNLFdBQVcsR0FBRywwQkFBMEIsQ0FBQywrQ0FBUyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN6RSxJQUFJLENBQ0gsb0JBQW9CLEVBQ3BCLHFEQUFLLEVBQUUsRUFDUCx5REFBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQzlCO0lBRUgsTUFBTSxtQkFBbUIsR0FBRyxXQUFXO1NBQ3BDLElBQUksQ0FDSCw0REFBWSxDQUFDLGdDQUFnQyxFQUFFLHlEQUF1QixDQUFDLEVBQ3ZFLDhEQUFjLENBQUMseUJBQXlCLENBQUMsRUFDekMseURBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsdUNBQXVDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBTXJILE9BQU8sd0NBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUM1RixDQUFDLENBQUMsRUFDRixxREFBSyxFQUFFLENBQ1I7SUFFSCxNQUFNLGNBQWMsR0FBRyxXQUFXO1NBQy9CLElBQUksQ0FDSCw0REFBWSxDQUFDLGdDQUFnQyxFQUFFLHlEQUF1QixDQUFDLEVBQ3ZFLHFEQUFLLEVBQUUsRUFDUCx5REFBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQzlCO0lBRUgsTUFBTSxNQUFNLEdBQUcsMkNBQUssQ0FDbEIsV0FBVztTQUNSLElBQUksQ0FDSCxtREFBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQWdCLENBQUMsRUFDM0Isb0VBQW9CLEVBQUUsQ0FDdkIsRUFDSCxjQUFjO1NBQ1gsSUFBSSxDQUNILG1EQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBYyxDQUFDLENBQzFCLENBQ0o7U0FDRSxJQUFJLENBQ0gseURBQVMsQ0FBQyxLQUFLLENBQUMsQ0FDakI7SUFFSCxPQUFPO1FBQ0wsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7UUFDbEIsbUJBQW1CO1FBQ25CLENBQUMsRUFBRTtZQUNELE1BQU07WUFDTixXQUFXLEVBQUUsbUJBQW1CO1NBQ2pDO0tBQ0Y7QUFDSCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL3NwaW5lL3ZpZXdwb3J0TmF2aWdhdG9yL3Njcm9sbFZpZXdwb3J0TmF2aWdhdG9yLnRzP2Q5YzciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIEJlaGF2aW9yU3ViamVjdCwgRU1QVFksIGZyb21FdmVudCwgaWlmLCBtZXJnZSwgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzaGFyZSwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHdpdGhMYXRlc3RGcm9tLCBzdGFydFdpdGgsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiXG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4uLy4uL2NvbnRleHRcIlxuaW1wb3J0IHsgY3JlYXRlTmF2aWdhdGlvblJlc29sdmVyLCBWaWV3cG9ydE5hdmlnYXRpb25FbnRyeSB9IGZyb20gXCIuLi9uYXZpZ2F0aW9uUmVzb2x2ZXJcIlxuXG5jb25zdCBTQ1JPTExfRklOSVNIRURfREVCT1VOQ0VfVElNRU9VVCA9IDIwMFxuXG5leHBvcnQgY29uc3QgY3JlYXRlU2Nyb2xsVmlld3BvcnROYXZpZ2F0b3IgPSAoeyBjb250ZXh0LCBlbGVtZW50LCBuYXZpZ2F0b3IsIGN1cnJlbnROYXZpZ2F0aW9uU3ViamVjdCQgfToge1xuICBjb250ZXh0OiBDb250ZXh0LFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgbmF2aWdhdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVOYXZpZ2F0aW9uUmVzb2x2ZXI+LFxuICBjdXJyZW50TmF2aWdhdGlvblN1YmplY3QkOiBCZWhhdmlvclN1YmplY3Q8Vmlld3BvcnROYXZpZ2F0aW9uRW50cnk+XG59KSA9PiB7XG4gIGxldCBsYXN0U2Nyb2xsV2FzUHJvZ3JhbW1hdGljYWxseVRyaWdnZXJlZCA9IGZhbHNlXG5cbiAgY29uc3Qgb25seVVzZXJTY3JvbGxGaWx0ZXIgPSA8VD4oc291cmNlOiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiA9PlxuICAgIHNvdXJjZS5waXBlKGZpbHRlcigoKSA9PiB7XG4gICAgICBpZiAobGFzdFNjcm9sbFdhc1Byb2dyYW1tYXRpY2FsbHlUcmlnZ2VyZWQpIHtcbiAgICAgICAgbGFzdFNjcm9sbFdhc1Byb2dyYW1tYXRpY2FsbHlUcmlnZ2VyZWQgPSBmYWxzZVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9KSlcblxuICBjb25zdCBhZGp1c3RSZWFkaW5nT2Zmc2V0ID0gKHsgeCwgeSB9OiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0pID0+IHtcbiAgICBpZiAoY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkUGFnZVR1cm5Nb2RlID09PSBgc2Nyb2xsYWJsZWApIHtcbiAgICAgIGxhc3RTY3JvbGxXYXNQcm9ncmFtbWF0aWNhbGx5VHJpZ2dlcmVkID0gdHJ1ZVxuICAgICAgZWxlbWVudC5zY3JvbGxUbyh7IGxlZnQ6IHgsIHRvcDogeSB9KVxuXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgcnVuT25GcmVlUGFnZVR1cm5Nb2RlT25seSQgPSA8VD4oc291cmNlOiBPYnNlcnZhYmxlPFQ+KSA9PiBjb250ZXh0LiQuc2V0dGluZ3MkXG4gICAgLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkUGFnZVR1cm5Nb2RlKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzd2l0Y2hNYXAoKG1vZGUpID0+XG4gICAgICAgIGlpZigoKSA9PiBtb2RlID09PSBgY29udHJvbGxlZGAsIEVNUFRZLCBzb3VyY2UpXG4gICAgICApXG4gICAgKVxuXG4gIGNvbnN0IHVzZXJTY3JvbGwkID0gcnVuT25GcmVlUGFnZVR1cm5Nb2RlT25seSQoZnJvbUV2ZW50KGVsZW1lbnQsIGBzY3JvbGxgKSlcbiAgICAucGlwZShcbiAgICAgIG9ubHlVc2VyU2Nyb2xsRmlsdGVyLFxuICAgICAgc2hhcmUoKSxcbiAgICAgIHRha2VVbnRpbChjb250ZXh0LiQuZGVzdHJveSQpXG4gICAgKVxuXG4gIGNvbnN0IG5hdmlnYXRpb25PblNjcm9sbCQgPSB1c2VyU2Nyb2xsJFxuICAgIC5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKFNDUk9MTF9GSU5JU0hFRF9ERUJPVU5DRV9USU1FT1VULCBhbmltYXRpb25GcmFtZVNjaGVkdWxlciksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShjdXJyZW50TmF2aWdhdGlvblN1YmplY3QkKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5hdmlnYXRpb24gPSBuYXZpZ2F0b3IuZ2V0TW9zdFByZWRvbWluYW50TmF2aWdhdGlvbkZvclBvc2l0aW9uKHsgeDogZWxlbWVudC5zY3JvbGxMZWZ0LCB5OiBlbGVtZW50LnNjcm9sbFRvcCB9KVxuICAgICAgICAvKipcbiAgICAgICAgICogQmVjYXVzZSBzY3JvbGwgbmF2aWdhdGlvbiBpcyBhbHdheXMgZGlmZmVyZW50OiB3ZSBjYW4gc2Nyb2xsIHRocm91Z2ggdGhlIHNhbWUgaXRlbSBidXQgYXQgZGlmZmVyZW50IHByb2dyZXNzXG4gICAgICAgICAqIHdlIGFsd2F5cyByZXR1cm4gc29tZXRoaW5nIGZyb20gdGhlIG9ic2VydmFibGUuIFNvIGZvciBleGFtcGxlIGlmIHdlIGhhdmUgb25seSBvbmUgbG9uZyBoZWlnaHQgaXRlbSAod2VidG9vbilcbiAgICAgICAgICogd2UgYXJlIGFibGUgdG8gdXBkYXRlIHRoZSBnZW5lcmFsIHByb2dyZXNzXG4gICAgICAgICAqL1xuICAgICAgICByZXR1cm4gb2YoeyBwb3NpdGlvbjogbmF2aWdhdGlvbiwgYW5pbWF0ZTogZmFsc2UsIGxhc3RVc2VyRXhwZWN0ZWROYXZpZ2F0aW9uOiB1bmRlZmluZWQgfSlcbiAgICAgIH0pLFxuICAgICAgc2hhcmUoKVxuICAgIClcblxuICBjb25zdCB1c2VyU2Nyb2xsRW5kJCA9IHVzZXJTY3JvbGwkXG4gICAgLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoU0NST0xMX0ZJTklTSEVEX0RFQk9VTkNFX1RJTUVPVVQsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSxcbiAgICAgIHNoYXJlKCksXG4gICAgICB0YWtlVW50aWwoY29udGV4dC4kLmRlc3Ryb3kkKVxuICAgIClcblxuICBjb25zdCBzdGF0ZSQgPSBtZXJnZShcbiAgICB1c2VyU2Nyb2xsJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiBgc3RhcnRgIGFzIGNvbnN0KSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgKSxcbiAgICB1c2VyU2Nyb2xsRW5kJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiBgZW5kYCBhcyBjb25zdClcbiAgICAgIClcbiAgKVxuICAgIC5waXBlKFxuICAgICAgc3RhcnRXaXRoKGBlbmRgKVxuICAgIClcblxuICByZXR1cm4ge1xuICAgIGRlc3Ryb3k6ICgpID0+IHsgfSxcbiAgICBhZGp1c3RSZWFkaW5nT2Zmc2V0LFxuICAgICQ6IHtcbiAgICAgIHN0YXRlJCxcbiAgICAgIG5hdmlnYXRpb24kOiBuYXZpZ2F0aW9uT25TY3JvbGwkXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/spine/viewportNavigator/scrollViewportNavigator.ts\n");
|
|
390
|
+
|
|
391
|
+
/***/ }),
|
|
392
|
+
|
|
393
|
+
/***/ "./src/spine/viewportNavigator/viewportNavigator.ts":
|
|
394
|
+
/*!**********************************************************!*\
|
|
395
|
+
!*** ./src/spine/viewportNavigator/viewportNavigator.ts ***!
|
|
396
|
+
\**********************************************************/
|
|
397
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
398
|
+
|
|
399
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createViewportNavigator\": () => (/* binding */ createViewportNavigator)\n/* harmony export */ });\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../report */ \"./src/report.ts\");\n/* harmony import */ var _navigationResolver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../navigationResolver */ \"./src/spine/navigationResolver.ts\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _scrollViewportNavigator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./scrollViewportNavigator */ \"./src/spine/viewportNavigator/scrollViewportNavigator.ts\");\n/* harmony import */ var _manualViewportNavigator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./manualViewportNavigator */ \"./src/spine/viewportNavigator/manualViewportNavigator.ts\");\n/* harmony import */ var _panViewportNavigator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./panViewportNavigator */ \"./src/spine/viewportNavigator/panViewportNavigator.ts\");\n\n\n\n\n\n\n\nconst NAMESPACE = `viewportNavigator`;\nconst createViewportNavigator = ({ spineItemManager, context, pagination, element, cfiLocator, locator, hooks$ }) => {\n let currentViewportPositionMemoUnused;\n let currentNavigationPosition = { x: -1, y: 0 };\n const currentNavigationSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_2__.BehaviorSubject(currentNavigationPosition);\n const navigator = (0,_navigationResolver__WEBPACK_IMPORTED_MODULE_1__.createNavigationResolver)({ context, spineItemManager, cfiLocator, locator });\n const adjustNavigationSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_2__.Subject();\n const getCurrentViewportPosition = _report__WEBPACK_IMPORTED_MODULE_0__.Report.measurePerformance(`${NAMESPACE} getCurrentViewportPosition`, 1, () => {\n if (currentViewportPositionMemoUnused && (currentViewportPositionMemoUnused === null || currentViewportPositionMemoUnused === void 0 ? void 0 : currentViewportPositionMemoUnused.x) !== (~~(Math.abs(element.getBoundingClientRect().x) * 10) / 10)) {\n }\n if (context.getSettings().computedPageTurnMode === `scrollable`) {\n const newValue = { x: element.scrollLeft, y: element.scrollTop };\n currentViewportPositionMemoUnused = newValue;\n return currentViewportPositionMemoUnused;\n }\n const { x, y } = element.getBoundingClientRect();\n const newValue = {\n x: ~~(Math.abs(x) * 10) / 10,\n y: ~~(Math.abs(y) * 10) / 10\n };\n currentViewportPositionMemoUnused = newValue;\n return currentViewportPositionMemoUnused;\n });\n const panViewportNavigator = (0,_panViewportNavigator__WEBPACK_IMPORTED_MODULE_6__.createPanViewportNavigator)({\n context,\n element,\n navigator,\n spineItemManager,\n locator,\n getCurrentViewportPosition,\n currentNavigationSubject$\n });\n const scrollViewportNavigator = (0,_scrollViewportNavigator__WEBPACK_IMPORTED_MODULE_4__.createScrollViewportNavigator)({ context, element, navigator, currentNavigationSubject$ });\n const manualViewportNavigator = (0,_manualViewportNavigator__WEBPACK_IMPORTED_MODULE_5__.createManualViewportNavigator)({ context, element, navigator, currentNavigationSubject$, spineItemManager, locator });\n const viewportNavigators = [scrollViewportNavigator, panViewportNavigator, manualViewportNavigator];\n const viewportNavigatorsSharedState$ = (0,rxjs__WEBPACK_IMPORTED_MODULE_2__.merge)(...viewportNavigators.map(({ $: { state$ } }) => state$));\n let lastUserExpectedNavigation;\n const makeItHot = (source$) => {\n source$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.takeUntil)(context.$.destroy$)).subscribe();\n return source$;\n };\n const adjustReadingOffset = _report__WEBPACK_IMPORTED_MODULE_0__.Report.measurePerformance(`adjustReadingOffset`, 2, ({ x, y }, hooks) => {\n currentViewportPositionMemoUnused = undefined;\n const isAdjusted = viewportNavigators.reduce((isAdjusted, navigator) => {\n return navigator.adjustReadingOffset({ x, y }) || isAdjusted;\n }, false);\n if (!isAdjusted) {\n if (context.isRTL()) {\n element.style.transform = `translate3d(${x}px, -${y}px, 0)`;\n }\n else {\n element.style.transform = `translate3d(-${x}px, -${y}px, 0)`;\n }\n }\n hooks.forEach(hook => {\n if (hook.name === `onViewportOffsetAdjust`) {\n hook.fn();\n }\n });\n }, { disable: true });\n const adjustNavigation = (spineItem) => {\n const lastCfi = pagination.getInfo().beginCfi;\n let adjustedSpinePosition = currentNavigationPosition;\n const offsetInSpineItem = 0;\n if (context.getSettings().computedPageTurnMode === `scrollable`) {\n adjustedSpinePosition = navigator.getMostPredominantNavigationForPosition(getCurrentViewportPosition());\n }\n else if ((lastUserExpectedNavigation === null || lastUserExpectedNavigation === void 0 ? void 0 : lastUserExpectedNavigation.type) === `navigate-from-cfi`) {\n adjustedSpinePosition = navigator.getNavigationForCfi(lastUserExpectedNavigation.data);\n _report__WEBPACK_IMPORTED_MODULE_0__.Report.log(NAMESPACE, `adjustNavigation`, `navigate-from-cfi`, `use last cfi`);\n }\n else if ((lastUserExpectedNavigation === null || lastUserExpectedNavigation === void 0 ? void 0 : lastUserExpectedNavigation.type) === `navigate-from-next-item`) {\n adjustedSpinePosition = navigator.getNavigationForLastPage(spineItem);\n _report__WEBPACK_IMPORTED_MODULE_0__.Report.log(NAMESPACE, `adjustNavigation`, `navigate-from-next-item`, {});\n }\n else if ((lastUserExpectedNavigation === null || lastUserExpectedNavigation === void 0 ? void 0 : lastUserExpectedNavigation.type) === `navigate-from-previous-item`) {\n adjustedSpinePosition = navigator.getNavigationForPage(0, spineItem);\n _report__WEBPACK_IMPORTED_MODULE_0__.Report.log(NAMESPACE, `adjustNavigation`, `navigate-from-previous-item`, {});\n }\n else if ((lastUserExpectedNavigation === null || lastUserExpectedNavigation === void 0 ? void 0 : lastUserExpectedNavigation.type) === `navigate-from-anchor`) {\n const anchor = lastUserExpectedNavigation.data;\n adjustedSpinePosition = navigator.getNavigationForAnchor(anchor, spineItem);\n }\n else if (lastCfi) {\n adjustedSpinePosition = navigator.getNavigationForCfi(lastCfi);\n _report__WEBPACK_IMPORTED_MODULE_0__.Report.log(NAMESPACE, `adjustNavigation`, `use last cfi`);\n }\n else {\n const currentPageIndex = pagination.getInfo().beginPageIndex || 0;\n adjustedSpinePosition = navigator.getNavigationForPage(currentPageIndex, spineItem);\n _report__WEBPACK_IMPORTED_MODULE_0__.Report.log(NAMESPACE, `adjustNavigation`, `use guess strategy`, {});\n }\n const areDifferent = navigator.arePositionsDifferent(adjustedSpinePosition, currentNavigationPosition);\n _report__WEBPACK_IMPORTED_MODULE_0__.Report.log(NAMESPACE, `adjustNavigation`, { areDifferent, offsetInSpineItem, expectedSpineOffset: adjustedSpinePosition, currentNavigationPosition, lastUserExpectedNavigation });\n if (areDifferent) {\n adjustNavigationSubject$.next({ position: adjustedSpinePosition, animate: false });\n }\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_2__.of)({ previousNavigationPosition: currentNavigationPosition, adjustedSpinePosition, areDifferent });\n };\n const layout = () => {\n currentViewportPositionMemoUnused = undefined;\n if (context.getSettings().computedPageTurnMode === `scrollable`) {\n element.style.removeProperty(`transform`);\n element.style.removeProperty(`transition`);\n }\n };\n const navigation$ = (0,rxjs__WEBPACK_IMPORTED_MODULE_2__.merge)(panViewportNavigator.$.navigation$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.map)((event) => (Object.assign(Object.assign({}, event), { position: { x: event.x, y: event.y, spineItem: event.spineItem }, animation: `snap`, triggeredBy: `manual` })))), manualViewportNavigator.$.navigation$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.map)((event) => (Object.assign(Object.assign({}, event), { position: { x: event.x, y: event.y, spineItem: event.spineItem }, animation: event.animate ? `turn` : false, triggeredBy: `manual` })))), adjustNavigationSubject$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.map)((event) => (Object.assign(Object.assign({}, event), { triggeredBy: `adjust`, animation: event.animate ? `turn` : false })))), scrollViewportNavigator.$.navigation$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.map)((event) => (Object.assign(Object.assign({}, event), { triggeredBy: `scroll`, animation: event.animate ? `turn` : false })))))\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.tap)((event) => {\n if (`lastUserExpectedNavigation` in event) {\n lastUserExpectedNavigation = event.lastUserExpectedNavigation;\n }\n currentNavigationPosition = event.position;\n currentNavigationSubject$.next(currentNavigationPosition);\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.share)(), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.takeUntil)(context.$.destroy$));\n const navigationWhichRequireManualAdjust$ = navigation$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.filter)(({ triggeredBy }) => {\n if (triggeredBy === `scroll` ||\n (context.getSettings().computedPageTurnMode === `scrollable` && triggeredBy === `adjust`)) {\n return false;\n }\n else {\n return true;\n }\n }));\n const manualAdjust$ = (0,rxjs__WEBPACK_IMPORTED_MODULE_2__.merge)(panViewportNavigator.$.moveToSubject$.asObservable()\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.map)(event => (Object.assign(Object.assign({}, event), { animation: false })))), navigationWhichRequireManualAdjust$)\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.map)(({ animation, position }) => {\n const shouldAnimate = !(!animation ||\n (animation === `turn` && context.getSettings().computedPageTurnAnimation === `none`));\n return {\n type: `manualAdjust`,\n shouldAnimate,\n animation,\n position\n };\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.share)());\n const processManualAdjust$ = (0,rxjs__WEBPACK_IMPORTED_MODULE_2__.merge)(manualAdjust$)\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.startWith)(undefined), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.pairwise)(), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.tap)(([prevEvent, currentEvent]) => {\n if ((prevEvent === null || prevEvent === void 0 ? void 0 : prevEvent.type) === `manualAdjust` && (currentEvent === null || currentEvent === void 0 ? void 0 : currentEvent.type) !== `manualAdjust`) {\n element.style.setProperty(`transition`, `none`);\n element.style.setProperty(`opacity`, `1`);\n }\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.switchMap)(([, currentEvent]) => {\n if ((currentEvent === null || currentEvent === void 0 ? void 0 : currentEvent.type) !== `manualAdjust`)\n return rxjs__WEBPACK_IMPORTED_MODULE_2__.EMPTY;\n const animationDuration = currentEvent.animation === `snap`\n ? context.getSettings().computedSnapAnimationDuration\n : context.getSettings().computedPageTurnAnimationDuration;\n const pageTurnAnimation = currentEvent.animation === `snap`\n ? `slide`\n : context.getSettings().computedPageTurnAnimation;\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_2__.of)(currentEvent)\n .pipe(currentEvent.shouldAnimate ? (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.delay)(1, rxjs__WEBPACK_IMPORTED_MODULE_2__.animationFrameScheduler) : rxjs__WEBPACK_IMPORTED_MODULE_2__.identity, (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.tap)((data) => {\n const noAdjustmentNeeded = false;\n if (data.shouldAnimate && !noAdjustmentNeeded) {\n if (pageTurnAnimation === `fade`) {\n element.style.setProperty(`transition`, `opacity ${animationDuration / 2}ms`);\n element.style.setProperty(`opacity`, `0`);\n }\n else if (currentEvent.animation === `snap` || pageTurnAnimation === `slide`) {\n element.style.setProperty(`transition`, `transform ${animationDuration}ms`);\n element.style.setProperty(`opacity`, `1`);\n }\n }\n else {\n element.style.setProperty(`transition`, `none`);\n element.style.setProperty(`opacity`, `1`);\n }\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.withLatestFrom)(hooks$), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.tap)(([data, hooks]) => {\n if (pageTurnAnimation !== `fade`) {\n adjustReadingOffset(data.position, hooks);\n }\n }), currentEvent.shouldAnimate ? (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.delay)(animationDuration / 2, rxjs__WEBPACK_IMPORTED_MODULE_2__.animationFrameScheduler) : rxjs__WEBPACK_IMPORTED_MODULE_2__.identity, (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.tap)(([data, hooks]) => {\n if (pageTurnAnimation === `fade`) {\n adjustReadingOffset(data.position, hooks);\n element.style.setProperty(`opacity`, `1`);\n }\n }), currentEvent.shouldAnimate ? (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.delay)(animationDuration / 2, rxjs__WEBPACK_IMPORTED_MODULE_2__.animationFrameScheduler) : rxjs__WEBPACK_IMPORTED_MODULE_2__.identity, (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.tap)(([data, hooks]) => {\n if (pageTurnAnimation === `fade`) {\n adjustReadingOffset(data.position, hooks);\n }\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.takeUntil)(viewportNavigatorsSharedState$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.filter)(state => state === `start`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.skip)(1))));\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.share)(), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.takeUntil)(context.$.destroy$));\n const adjustmentState$ = (0,rxjs__WEBPACK_IMPORTED_MODULE_2__.merge)((0,rxjs__WEBPACK_IMPORTED_MODULE_2__.merge)(manualAdjust$)\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.map)(() => `start`)), (0,rxjs__WEBPACK_IMPORTED_MODULE_2__.merge)(processManualAdjust$)\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.map)(() => `end`)));\n const state$ = (0,rxjs__WEBPACK_IMPORTED_MODULE_2__.combineLatest)([\n ...viewportNavigators.map(({ $: { state$ } }) => state$),\n adjustmentState$\n ])\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.map)((states) => states.every(state => state === `end`) ? `free` : `busy`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.distinctUntilChanged)(), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.shareReplay)(1), makeItHot);\n const destroy = () => {\n adjustNavigationSubject$.complete();\n viewportNavigators.forEach(navigator => navigator.destroy());\n };\n return {\n destroy,\n layout,\n getCurrentNavigationPosition: () => currentNavigationPosition,\n getCurrentViewportPosition,\n turnLeft: manualViewportNavigator.turnLeft,\n turnRight: manualViewportNavigator.turnRight,\n goToPage: manualViewportNavigator.goToPage,\n goToSpineItem: manualViewportNavigator.goToSpineItem,\n goToUrl: manualViewportNavigator.goToUrl,\n goToCfi: manualViewportNavigator.goToCfi,\n goToPageOfCurrentChapter: manualViewportNavigator.goToPageOfCurrentChapter,\n adjustNavigation,\n moveTo: panViewportNavigator.moveTo,\n getLastUserExpectedNavigation: () => lastUserExpectedNavigation,\n $: {\n state$,\n navigation$\n }\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3BpbmUvdmlld3BvcnROYXZpZ2F0b3Ivdmlld3BvcnROYXZpZ2F0b3IudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFxQztBQUtvRDtBQUNzQztBQUVvQztBQUUxRjtBQUNBO0FBRU47QUFFbkUsTUFBTSxTQUFTLEdBQUcsbUJBQW1CO0FBRTlCLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQVFwSCxFQUFFLEVBQUU7SUFDSCxJQUFJLGlDQUF1RTtJQVEzRSxJQUFJLHlCQUF5QixHQUE0QixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3hFLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxpREFBZSxDQUFDLHlCQUF5QixDQUFDO0lBQ2hGLE1BQU0sU0FBUyxHQUFHLDZFQUF3QixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM5RixNQUFNLHdCQUF3QixHQUFHLElBQUkseUNBQU8sRUFBMkQ7SUFPdkcsTUFBTSwwQkFBMEIsR0FBRyw4REFBeUIsQ0FBQyxHQUFHLFNBQVMsNkJBQTZCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTtRQUM5RyxJQUFJLGlDQUFpQyxJQUFJLGtDQUFpQyxhQUFqQyxpQ0FBaUMsdUJBQWpDLGlDQUFpQyxDQUFFLENBQUMsTUFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUU7U0FFOUk7UUFHRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxvQkFBb0IsS0FBSyxZQUFZLEVBQUU7WUFDL0QsTUFBTSxRQUFRLEdBQUcsRUFB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Q0FBQztJQUVELE9BQU87UUFDTCxPQUFPO1FBQ1AsTUFBTTtRQUNOLDRCQUE0QixFQUFFLEdBQUcsRUFBRSxDQUFDLHlCQUF5QjtRQUM3RCwwQkFBMEI7UUFDMUIsUUFBUSxFQUFFLHVCQUF1QixDQUFDLFFBQVE7UUFDMUMsU0FBUyxFQUFFLHVCQUF1QixDQUFDLFNBQVM7UUFDNUMsUUFBUSxFQUFFLHVCQUF1QixDQUFDLFFBQVE7UUFDMUMsYUFBYSxFQUFFLHVCQUF1QixDQUFDLGFBQWE7UUFDcEQsT0FBTyxFQUFFLHVCQUF1QixDQUFDLE9BQU87UUFDeEMsT0FBTyxFQUFFLHVCQUF1QixDQUFDLE9BQU87UUFDeEMsd0JBQXdCLEVBQUUsdUJBQXVCLENBQUMsd0JBQXdCO1FBQzFFLGdCQUFnQjtRQUNoQixNQUFNLEVBQUUsb0JBQW9CLENBQUMsTUFBTTtRQUNuQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUUsQ0FBQywwQkFBMEI7UUFDL0QsQ0FBQyxFQUFFO1lBQ0QsTUFBTTtZQUNOLFdBQVc7U0FDWjtLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0Bwcm9zZS1yZWFkZXIvY29yZS8uL3NyYy9zcGluZS92aWV3cG9ydE5hdmlnYXRvci92aWV3cG9ydE5hdmlnYXRvci50cz9iMzNhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9ydCB9IGZyb20gXCIuLi8uLi9yZXBvcnRcIlxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi8uLi9jb250ZXh0XCJcbmltcG9ydCB7IFBhZ2luYXRpb24gfSBmcm9tIFwiLi4vLi4vcGFnaW5hdGlvblwiXG5pbXBvcnQgeyBTcGluZUl0ZW1NYW5hZ2VyIH0gZnJvbSBcIi4uLy4uL3NwaW5lSXRlbU1hbmFnZXJcIlxuaW1wb3J0IHsgY3JlYXRlTG9jYXRpb25SZXNvbHZlciB9IGZyb20gXCIuLi9sb2NhdGlvblJlc29sdmVyXCJcbmltcG9ydCB7IGNyZWF0ZU5hdmlnYXRpb25SZXNvbHZlciwgVmlld3BvcnROYXZpZ2F0aW9uRW50cnkgfSBmcm9tIFwiLi4vbmF2aWdhdGlvblJlc29sdmVyXCJcbmltcG9ydCB7IGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLCBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBpZGVudGl0eSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIlxuaW1wb3J0IHsgU3BpbmVJdGVtIH0gZnJvbSBcIi4uLy4uL3NwaW5lSXRlbS9jcmVhdGVTcGluZUl0ZW1cIlxuaW1wb3J0IHsgZGVsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgcGFpcndpc2UsIHNoYXJlLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSwgc2tpcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiXG5pbXBvcnQgeyBjcmVhdGVDZmlMb2NhdG9yIH0gZnJvbSBcIi4uL2NmaUxvY2F0b3JcIlxuaW1wb3J0IHsgY3JlYXRlU2Nyb2xsVmlld3BvcnROYXZpZ2F0b3IgfSBmcm9tIFwiLi9zY3JvbGxWaWV3cG9ydE5hdmlnYXRvclwiXG5pbXBvcnQgeyBjcmVhdGVNYW51YWxWaWV3cG9ydE5hdmlnYXRvciB9IGZyb20gXCIuL21hbnVhbFZpZXdwb3J0TmF2aWdhdG9yXCJcbmltcG9ydCB7IEhvb2sgfSBmcm9tIFwiLi4vLi4vdHlwZXMvSG9va1wiXG5pbXBvcnQgeyBjcmVhdGVQYW5WaWV3cG9ydE5hdmlnYXRvciB9IGZyb20gXCIuL3BhblZpZXdwb3J0TmF2aWdhdG9yXCJcblxuY29uc3QgTkFNRVNQQUNFID0gYHZpZXdwb3J0TmF2aWdhdG9yYFxuXG5leHBvcnQgY29uc3QgY3JlYXRlVmlld3BvcnROYXZpZ2F0b3IgPSAoeyBzcGluZUl0ZW1NYW5hZ2VyLCBjb250ZXh0LCBwYWdpbmF0aW9uLCBlbGVtZW50LCBjZmlMb2NhdG9yLCBsb2NhdG9yLCBob29rcyQgfToge1xuICBzcGluZUl0ZW1NYW5hZ2VyOiBTcGluZUl0ZW1NYW5hZ2VyLFxuICBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uLFxuICBjb250ZXh0OiBDb250ZXh0LFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgY2ZpTG9jYXRvcjogUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQ2ZpTG9jYXRvcj5cbiAgbG9jYXRvcjogUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlTG9jYXRpb25SZXNvbHZlcj4sXG4gIGhvb2tzJDogT2JzZXJ2YWJsZTxIb29rW10+XG59KSA9PiB7XG4gIGxldCBjdXJyZW50Vmlld3BvcnRQb3NpdGlvbk1lbW9VbnVzZWQ6IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfSB8IHVuZGVmaW5lZFxuICAvKipcbiAgICogVGhpcyBwb3NpdGlvbiBjb3JyZXNwb25kIHRvIHRoZSBjdXJyZW50IG5hdmlnYXRpb24gcG9zaXRpb24uXG4gICAqIFRoaXMgaXMgYWx3YXlzIHN5bmMgd2l0aCBuYXZpZ2F0aW9uIGFuZCBhZGp1c3RtZW50IGJ1dCBJUyBOT1QgbmVjZXNzYXJpbHlcbiAgICogc3luY2VkIHdpdGggY3VycmVudCB2aWV3cG9ydC4gVGhpcyBpcyBiZWNhdXNlIHZpZXdwb3J0IGNhbiBiZSBhbmltYXRlZC5cbiAgICogVGhpcyB2YWx1ZSBtYXkgYmUgdXNlZCB0byBhZGp1c3QgLyBnZXQgY3VycmVudCB2YWxpZCBpbmZvIGFib3V0IHdoYXQgc2hvdWxkIGJlIHZpc2libGUuXG4gICAqIFRoaXMgRE9FUyBOT1QgcmVmbGVjdCBuZWNlc3NhcmlseSB3aGF0IGlzIHZpc2libGUgZm9yIHRoZSB1c2VyIGF0IGluc3RhbnQgVC5cbiAgICovXG4gIGxldCBjdXJyZW50TmF2aWdhdGlvblBvc2l0aW9uOiBWaWV3cG9ydE5hdmlnYXRpb25FbnRyeSA9IHsgeDogLTEsIHk6IDAgfVxuICBjb25zdCBjdXJyZW50TmF2aWdhdGlvblN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdChjdXJyZW50TmF2aWdhdGlvblBvc2l0aW9uKVxuICBjb25zdCBuYXZpZ2F0b3IgPSBjcmVhdGVOYXZpZ2F0aW9uUmVzb2x2ZXIoeyBjb250ZXh0LCBzcGluZUl0ZW1NYW5hZ2VyLCBjZmlMb2NhdG9yLCBsb2NhdG9yIH0pXG4gIGNvbnN0IGFkanVzdE5hdmlnYXRpb25TdWJqZWN0JCA9IG5ldyBTdWJqZWN0PHsgcG9zaXRpb246IFZpZXdwb3J0TmF2aWdhdGlvbkVudHJ5LCBhbmltYXRlOiBib29sZWFuIH0+KClcblxuICAvKipcbiAgICogS2VlcCBpbiBtaW5kIHRoYXQgdGhlIHZpZXdwb3J0IHBvc2l0aW9uIElTIE5PVCBuZWNlc3NhcmlseSB0aGUgY3VycmVudCBuYXZpZ2F0aW9uIHBvc2l0aW9uLlxuICAgKiBCZWNhdXNlIHRoZXJlIGNvdWxkIGJlIGFuIGFuaW1hdGlvbiBydW5uaW5nIHRoZSB2aWV3cG9ydCBtYXkgYmUgbGF0ZS4gVG8gcmV0cmlldmUgdGhlIGN1cnJlbnQgcG9zaXRpb25cbiAgICogdXNlIHRoZSBkZWRpY2F0ZWQgcHJvcGVydHkuXG4gICAqL1xuICBjb25zdCBnZXRDdXJyZW50Vmlld3BvcnRQb3NpdGlvbiA9IFJlcG9ydC5tZWFzdXJlUGVyZm9ybWFuY2UoYCR7TkFNRVNQQUNFfSBnZXRDdXJyZW50Vmlld3BvcnRQb3NpdGlvbmAsIDEsICgpID0+IHtcbiAgICBpZiAoY3VycmVudFZpZXdwb3J0UG9zaXRpb25NZW1vVW51c2VkICYmIGN1cnJlbnRWaWV3cG9ydFBvc2l0aW9uTWVtb1VudXNlZD8ueCAhPT0gKH5+KE1hdGguYWJzKGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueCkgKiAxMCkgLyAxMCkpIHtcbiAgICAgIC8vIGNvbnNvbGUuZXJyb3IoYEZPT09PT2AsIGN1cnJlbnRWaWV3cG9ydFBvc2l0aW9uTWVtbz8ueCwgfn4oTWF0aC5hYnMoZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS54KSAqIDEwKSAvIDEwKVxuICAgIH1cbiAgICAvLyBpZiAoY3VycmVudFZpZXdwb3J0UG9zaXRpb25NZW1vKSByZXR1cm4gY3VycmVudFZpZXdwb3J0UG9zaXRpb25NZW1vXG5cbiAgICBpZiAoY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkUGFnZVR1cm5Nb2RlID09PSBgc2Nyb2xsYWJsZWApIHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0geyB4OiBlbGVtZW50LnNjcm9sbExlZnQsIHk6IGVsZW1lbnQuc2Nyb2xsVG9wIH1cbiAgICAgIGN1cnJlbnRWaWV3cG9ydFBvc2l0aW9uTWVtb1VudXNlZCA9IG5ld1ZhbHVlXG5cbiAgICAgIHJldHVybiBjdXJyZW50Vmlld3BvcnRQb3NpdGlvbk1lbW9VbnVzZWRcbiAgICB9XG5cbiAgICBjb25zdCB7IHgsIHkgfSA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcblxuICAgIGNvbnN0IG5ld1ZhbHVlID0ge1xuICAgICAgLy8gd2Ugd2FudCB0byByb3VuZCB0byBmaXJzdCBkZWNpbWFsIGJlY2F1c2UgaXQncyBwb3NzaWJsZSB0byBoYXZlIGhhbGYgcGl4ZWxcbiAgICAgIC8vIGhvd2V2ZXIgYnJvd3NlciBlbmdpbmUgY2FuIGFsc28gZ2l2ZXMgYmFjayB4Lnl5eXkgYmFzZWQgb24gdGhlaXIgcHJlY2lzaW9uXG4gICAgICAvLyBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEzODQ3MDUzL2RpZmZlcmVuY2UtYmV0d2Vlbi1hbmQtbWF0aC1mbG9vciBmb3Igfn5cbiAgICAgIHg6IH5+KE1hdGguYWJzKHgpICogMTApIC8gMTAsXG4gICAgICB5OiB+fihNYXRoLmFicyh5KSAqIDEwKSAvIDEwXG4gICAgfVxuICAgIGN1cnJlbnRWaWV3cG9ydFBvc2l0aW9uTWVtb1VudXNlZCA9IG5ld1ZhbHVlXG5cbiAgICByZXR1cm4gY3VycmVudFZpZXdwb3J0UG9zaXRpb25NZW1vVW51c2VkXG4gIH0pXG5cbiAgY29uc3QgcGFuVmlld3BvcnROYXZpZ2F0b3IgPSBjcmVhdGVQYW5WaWV3cG9ydE5hdmlnYXRvcih7XG4gICAgY29udGV4dCxcbiAgICBlbGVtZW50LFxuICAgIG5hdmlnYXRvcixcbiAgICBzcGluZUl0ZW1NYW5hZ2VyLFxuICAgIGxvY2F0b3IsXG4gICAgZ2V0Q3VycmVudFZpZXdwb3J0UG9zaXRpb24sXG4gICAgY3VycmVudE5hdmlnYXRpb25TdWJqZWN0JFxuICB9KVxuICBjb25zdCBzY3JvbGxWaWV3cG9ydE5hdmlnYXRvciA9IGNyZWF0ZVNjcm9sbFZpZXdwb3J0TmF2aWdhdG9yKHsgY29udGV4dCwgZWxlbWVudCwgbmF2aWdhdG9yLCBjdXJyZW50TmF2aWdhdGlvblN1YmplY3QkIH0pXG4gIGNvbnN0IG1hbnVhbFZpZXdwb3J0TmF2aWdhdG9yID0gY3JlYXRlTWFudWFsVmlld3BvcnROYXZpZ2F0b3IoeyBjb250ZXh0LCBlbGVtZW50LCBuYXZpZ2F0b3IsIGN1cnJlbnROYXZpZ2F0aW9uU3ViamVjdCQsIHNwaW5lSXRlbU1hbmFnZXIsIGxvY2F0b3IgfSlcblxuICBjb25zdCB2aWV3cG9ydE5hdmlnYXRvcnMgPSBbc2Nyb2xsVmlld3BvcnROYXZpZ2F0b3IsIHBhblZpZXdwb3J0TmF2aWdhdG9yLCBtYW51YWxWaWV3cG9ydE5hdmlnYXRvcl1cbiAgY29uc3Qgdmlld3BvcnROYXZpZ2F0b3JzU2hhcmVkU3RhdGUkID0gbWVyZ2UoLi4udmlld3BvcnROYXZpZ2F0b3JzLm1hcCgoeyAkOiB7IHN0YXRlJCB9IH0pID0+IHN0YXRlJCkpXG5cbiAgbGV0IGxhc3RVc2VyRXhwZWN0ZWROYXZpZ2F0aW9uOlxuICAgIHwgdW5kZWZpbmVkXG4gICAgLy8gYWx3YXlzIGFkanVzdCBhdCB0aGUgZmlyc3QgcGFnZVxuICAgIHwgeyB0eXBlOiBgbmF2aWdhdGUtZnJvbS1wcmV2aW91cy1pdGVtYCB9XG4gICAgLy8gYWx3YXlzIGFkanVzdCBhdCB0aGUgbGFzdCBwYWdlXG4gICAgfCB7IHR5cGU6IGBuYXZpZ2F0ZS1mcm9tLW5leHQtaXRlbWAgfVxuICAgIC8vIGFsd2F5cyBhZGp1c3QgdXNpbmcgdGhpcyBjZmlcbiAgICB8IHsgdHlwZTogYG5hdmlnYXRlLWZyb20tY2ZpYCwgZGF0YTogc3RyaW5nIH1cbiAgICAvLyBhbHdheXMgYWRqdXN0IHVzaW5nIHRoaXMgYW5jaG9yXG4gICAgfCB7IHR5cGU6IGBuYXZpZ2F0ZS1mcm9tLWFuY2hvcmAsIGRhdGE6IHN0cmluZyB9XG5cbiAgY29uc3QgbWFrZUl0SG90ID0gPFQ+KHNvdXJjZSQ6IE9ic2VydmFibGU8VD4pID0+IHtcbiAgICBzb3VyY2UkLnBpcGUodGFrZVVudGlsKGNvbnRleHQuJC5kZXN0cm95JCkpLnN1YnNjcmliZSgpXG5cbiAgICByZXR1cm4gc291cmNlJFxuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjIxMTEyNTYvdHJhbnNsYXRlM2QtdnMtdHJhbnNsYXRlLXBlcmZvcm1hbmNlXG4gICAqIGZvciByZW1hcmsgYWJvdXQgZmxpY2tlciAvIGZvbnRzIHNtb290aGluZ1xuICAgKi9cbiAgY29uc3QgYWRqdXN0UmVhZGluZ09mZnNldCA9IFJlcG9ydC5tZWFzdXJlUGVyZm9ybWFuY2UoYGFkanVzdFJlYWRpbmdPZmZzZXRgLCAyLCAoeyB4LCB5IH06IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfSwgaG9va3M6IEhvb2tbXSkgPT4ge1xuICAgIGN1cnJlbnRWaWV3cG9ydFBvc2l0aW9uTWVtb1VudXNlZCA9IHVuZGVmaW5lZFxuXG4gICAgY29uc3QgaXNBZGp1c3RlZCA9IHZpZXdwb3J0TmF2aWdhdG9ycy5yZWR1Y2UoKGlzQWRqdXN0ZWQsIG5hdmlnYXRvcikgPT4ge1xuICAgICAgcmV0dXJuIG5hdmlnYXRvci5hZGp1c3RSZWFkaW5nT2Zmc2V0KHsgeCwgeSB9KSB8fCBpc0FkanVzdGVkXG4gICAgfSwgZmFsc2UpXG5cbiAgICBpZiAoIWlzQWRqdXN0ZWQpIHtcbiAgICAgIGlmIChjb250ZXh0LmlzUlRMKCkpIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoJHt4fXB4LCAtJHt5fXB4LCAwKWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKC0ke3h9cHgsIC0ke3l9cHgsIDApYFxuICAgICAgfVxuICAgIH1cblxuICAgIGhvb2tzLmZvckVhY2goaG9vayA9PiB7XG4gICAgICBpZiAoaG9vay5uYW1lID09PSBgb25WaWV3cG9ydE9mZnNldEFkanVzdGApIHtcbiAgICAgICAgaG9vay5mbigpXG4gICAgICB9XG4gICAgfSlcbiAgfSwgeyBkaXNhYmxlOiB0cnVlIH0pXG5cbiAgLyoqXG4gICAqIFZlcmlmeSB0aGF0IGN1cnJlbnQgb2Zmc2V0IGlzIHdpdGhpbiB0aGUgY3VycmVudCByZWFkaW5nIGl0ZW0gYW5kIGlzIGF0XG4gICAqIGRlc2lyZWQgcGFnaW5hdGlvbi5cbiAgICogSWYgaXQgaXMgbm90LCB0aGVuIHdlIGFkanVzdCB0aGUgb2Zmc2V0LlxuICAgKiBUaGUgb2Zmc2V0IGNvdWxkIGJlIHdyb25nIGluIHRoZSBjYXNlIG9mIHRoZXJlIGhhcyBiZWVuIHJlLWxheW91dC5cbiAgICogSW4gdGhpcyBjYXNlIHdlIGFsd2F5cyBuZWVkIHRvIG1ha2Ugc3VyZSB0byBiZSBzeW5jaHJvbml6ZWQgd2l0aCBwYWdpbmF0aW9uLlxuICAgKiBQYWdpbmF0aW9uIGlzIGluIHRoZW9yeSBhbHdheXMgcmlnaHQgYmVjYXVzZSB3aGVuIHdlIG1vdmUgdGhlIG9mZnNldCB3ZSBkaXJlY3RseSB1cGRhdGVcbiAgICogdGhlIHBhZ2luYXRpb24uIEl0J3MgYWZ0ZXIsIHdoZW4gcmUtbGF5b3V0IGhhcHBlbnMgZm9yIHZhcmlvdXMgcmVhc29uIHRoYXQgdGhlIHBhZ2UgY2FuIGJlIGF0XG4gICAqIHRoZSB3cm9uZyBvZmZzZXRcbiAgICogQHRvZG8gdGhpcyBpcyBiZWluZyBjYWxsZWQgYSBsb3QsIHRyeSB0byBvcHRpbWl6ZVxuICAgKi9cbiAgY29uc3QgYWRqdXN0TmF2aWdhdGlvbiA9IChzcGluZUl0ZW06IFNwaW5lSXRlbSkgPT4ge1xuICAgIC8vIEB0b2RvIHdlIHNob3VsZCBnZXQgdGhlIGNmaSBvZiBmb2N1c2VkIGl0ZW0sIGlmIGZvY3VzZWQgaXRlbSBpcyBub3QgaW5zaWRlIHBhZ2luYXRpb24gdGhlbiBnbyB0byBzcGluZSBpbmRleFxuICAgIGNvbnN0IGxhc3RDZmkgPSBwYWdpbmF0aW9uLmdldEluZm8oKS5iZWdpbkNmaVxuICAgIGxldCBhZGp1c3RlZFNwaW5lUG9zaXRpb24gPSBjdXJyZW50TmF2aWdhdGlvblBvc2l0aW9uXG4gICAgY29uc3Qgb2Zmc2V0SW5TcGluZUl0ZW0gPSAwXG5cbiAgICBpZiAoY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkUGFnZVR1cm5Nb2RlID09PSBgc2Nyb2xsYWJsZWApIHtcbiAgICAgIGFkanVzdGVkU3BpbmVQb3NpdGlvbiA9IG5hdmlnYXRvci5nZXRNb3N0UHJlZG9taW5hbnROYXZpZ2F0aW9uRm9yUG9zaXRpb24oZ2V0Q3VycmVudFZpZXdwb3J0UG9zaXRpb24oKSlcbiAgICB9IGVsc2UgaWYgKGxhc3RVc2VyRXhwZWN0ZWROYXZpZ2F0aW9uPy50eXBlID09PSBgbmF2aWdhdGUtZnJvbS1jZmlgKSB7XG4gICAgICAvKipcbiAgICAgKiBXaGVuIGBuYXZpZ2F0ZS1mcm9tLWNmaWAgd2UgYWx3YXlzIHRyeSB0byByZXRyaWV2ZSBvZmZzZXQgZnJvbSBjZmkgbm9kZSBhbmQgbmF2aWdhdGVcbiAgICAgKiB0byB0aGVyZVxuICAgICAqL1xuICAgICAgYWRqdXN0ZWRTcGluZVBvc2l0aW9uID0gbmF2aWdhdG9yLmdldE5hdmlnYXRpb25Gb3JDZmkobGFzdFVzZXJFeHBlY3RlZE5hdmlnYXRpb24uZGF0YSlcbiAgICAgIFJlcG9ydC5sb2coTkFNRVNQQUNFLCBgYWRqdXN0TmF2aWdhdGlvbmAsIGBuYXZpZ2F0ZS1mcm9tLWNmaWAsIGB1c2UgbGFzdCBjZmlgKVxuICAgIH0gZWxzZSBpZiAobGFzdFVzZXJFeHBlY3RlZE5hdmlnYXRpb24/LnR5cGUgPT09IGBuYXZpZ2F0ZS1mcm9tLW5leHQtaXRlbWApIHtcbiAgICAgIC8qKlxuICAgICAgICogV2hlbiBgbmF2aWdhdGUtZnJvbS1uZXh0LWl0ZW1gIHdlIGFsd2F5cyB0cnkgdG8gZ2V0IHRoZSBvZmZzZXQgb2YgdGhlIGxhc3QgcGFnZSwgdGhhdCB3YXlcbiAgICAgICAqIHdlIGVuc3VyZSByZWFkZXIgaXMgYWx3YXlzIHJlZGlyZWN0ZWQgdG8gbGFzdCBwYWdlXG4gICAgICAgKi9cbiAgICAgIGFkanVzdGVkU3BpbmVQb3NpdGlvbiA9IG5hdmlnYXRvci5nZXROYXZpZ2F0aW9uRm9yTGFzdFBhZ2Uoc3BpbmVJdGVtKVxuICAgICAgUmVwb3J0LmxvZyhOQU1FU1BBQ0UsIGBhZGp1c3ROYXZpZ2F0aW9uYCwgYG5hdmlnYXRlLWZyb20tbmV4dC1pdGVtYCwge30pXG4gICAgfSBlbHNlIGlmIChsYXN0VXNlckV4cGVjdGVkTmF2aWdhdGlvbj8udHlwZSA9PT0gYG5hdmlnYXRlLWZyb20tcHJldmlvdXMtaXRlbWApIHtcbiAgICAgIC8qKlxuICAgICAgICogV2hlbiBgbmF2aWdhdGUtZnJvbS1wcmV2aW91cy1pdGVtJ2BcbiAgICAgICAqIHdlIGFsd2F5cyB0cnkgc3RheSBvbiB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgaXRlbVxuICAgICAgICovXG4gICAgICBhZGp1c3RlZFNwaW5lUG9zaXRpb24gPSBuYXZpZ2F0b3IuZ2V0TmF2aWdhdGlvbkZvclBhZ2UoMCwgc3BpbmVJdGVtKVxuICAgICAgUmVwb3J0LmxvZyhOQU1FU1BBQ0UsIGBhZGp1c3ROYXZpZ2F0aW9uYCwgYG5hdmlnYXRlLWZyb20tcHJldmlvdXMtaXRlbWAsIHt9KVxuICAgIH0gZWxzZSBpZiAobGFzdFVzZXJFeHBlY3RlZE5hdmlnYXRpb24/LnR5cGUgPT09IGBuYXZpZ2F0ZS1mcm9tLWFuY2hvcmApIHtcbiAgICAgIC8qKlxuICAgICAgICogV2hlbiBgbmF2aWdhdGUtZnJvbS1hbmNob3JgIHdlIGp1c3Qgc3RheSBvbiB0aGUgY3VycmVudCByZWFkaW5nIGl0ZW0gYW5kIHRyeSB0byBnZXRcbiAgICAgICAqIHRoZSBvZmZzZXQgb2YgdGhhdCBhbmNob3IuXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IGFuY2hvciA9IGxhc3RVc2VyRXhwZWN0ZWROYXZpZ2F0aW9uLmRhdGFcbiAgICAgIGFkanVzdGVkU3BpbmVQb3NpdGlvbiA9IG5hdmlnYXRvci5nZXROYXZpZ2F0aW9uRm9yQW5jaG9yKGFuY2hvciwgc3BpbmVJdGVtKVxuICAgIH0gZWxzZSBpZiAobGFzdENmaSkge1xuICAgICAgLy8gQHRvZG8sIGlnbm9yZSBjZmkgaWYgdGhlIGN1cnJlbnQgZm9jdXMgaXRlbVxuICAgICAgLyoqXG4gICAgICAgKiBXaGVuIHRoZXJlIGlzIG5vIGxhc3QgbmF2aWdhdGlvbiB0aGVuIHdlIGZpcnN0IGxvb2sgZm9yIGFueSBleGlzdGluZyBDRkkuIElmIHRoZXJlIGlzIGEgY2ZpIHdlIHRyeSB0byByZXRyaWV2ZVxuICAgICAgICogdGhlIG9mZnNldCBhbmQgbmF2aWdhdGUgdGhlIHVzZXIgdG8gaXRcbiAgICAgICAqIEB0b2RvIGhhbmRsZSB2ZXJ0aWNhbCB3cml0aW5nLCB3ZSBhcmUgYWx3YXlzIHJlZGlyZWN0ZWQgdG8gcGFnZSAxIGN1cnJlbnRseVxuICAgICAgICovXG4gICAgICBhZGp1c3RlZFNwaW5lUG9zaXRpb24gPSBuYXZpZ2F0b3IuZ2V0TmF2aWdhdGlvbkZvckNmaShsYXN0Q2ZpKVxuICAgICAgUmVwb3J0LmxvZyhOQU1FU1BBQ0UsIGBhZGp1c3ROYXZpZ2F0aW9uYCwgYHVzZSBsYXN0IGNmaWApXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEB0b2RvIHdlIHNob3VsZCBnZXQgdGhlIHBhZ2UgaW5kZXggb2YgdGhlIGZvY3VzZWQgaXRlbSwgaWYgZm9jdXMgaXRlbSBpcyBub3QgaW5zaWRlIHBhZ2luYXRpb24gdGhlbiBnbyB0byBzcGluZSBpbmRleFxuICAgICAgLyoqXG4gICAgICAgKiBMYXN0IHJlc29ydCBjYXNlLCB0aGVyZSBpcyBubyBDRkkgc28gd2UgY2hlY2sgdGhlIGN1cnJlbnQgcGFnZSBhbmQgdHJ5IHRvIG5hdmlnYXRlIHRvIHRoZSBjbG9zZXN0IG9uZVxuICAgICAgICovXG4gICAgICAvLyBAdG9kbyBnZXQgeCBvZiBmaXJzdCB2aXNpYmxlIGVsZW1lbnQgYW5kIHRyeSB0byBnZXQgdGhlIHBhZ2UgZm9yIHRoaXMgZWxlbWVudFxuICAgICAgLy8gdXNpbmcgdGhlIGxhc3QgcGFnZSBpcyBub3QgYWNjdXJhdGUgc2luY2Ugd2UgY291bGQgaGF2ZSBsZXNzIHBhZ2VzXG4gICAgICBjb25zdCBjdXJyZW50UGFnZUluZGV4ID0gcGFnaW5hdGlvbi5nZXRJbmZvKCkuYmVnaW5QYWdlSW5kZXggfHwgMFxuICAgICAgYWRqdXN0ZWRTcGluZVBvc2l0aW9uID0gbmF2aWdhdG9yLmdldE5hdmlnYXRpb25Gb3JQYWdlKGN1cnJlbnRQYWdlSW5kZXgsIHNwaW5lSXRlbSlcbiAgICAgIFJlcG9ydC5sb2coTkFNRVNQQUNFLCBgYWRqdXN0TmF2aWdhdGlvbmAsIGB1c2UgZ3Vlc3Mgc3RyYXRlZ3lgLCB7fSlcbiAgICB9XG5cbiAgICBjb25zdCBhcmVEaWZmZXJlbnQgPSBuYXZpZ2F0b3IuYXJlUG9zaXRpb25zRGlmZmVyZW50KGFkanVzdGVkU3BpbmVQb3NpdGlvbiwgY3VycmVudE5hdmlnYXRpb25Qb3NpdGlvbilcblxuICAgIFJlcG9ydC5sb2coTkFNRVNQQUNFLCBgYWRqdXN0TmF2aWdhdGlvbmAsIHsgYXJlRGlmZmVyZW50LCBvZmZzZXRJblNwaW5lSXRlbSwgZXhwZWN0ZWRTcGluZU9mZnNldDogYWRqdXN0ZWRTcGluZVBvc2l0aW9uLCBjdXJyZW50TmF2aWdhdGlvblBvc2l0aW9uLCBsYXN0VXNlckV4cGVjdGVkTmF2aWdhdGlvbiB9KVxuXG4gICAgaWYgKGFyZURpZmZlcmVudCkge1xuICAgICAgYWRqdXN0TmF2aWdhdGlvblN1YmplY3QkLm5leHQoeyBwb3NpdGlvbjogYWRqdXN0ZWRTcGluZVBvc2l0aW9uLCBhbmltYXRlOiBmYWxzZSB9KVxuICAgIH1cblxuICAgIHJldHVybiBvZih7IHByZXZpb3VzTmF2aWdhdGlvblBvc2l0aW9uOiBjdXJyZW50TmF2aWdhdGlvblBvc2l0aW9uLCBhZGp1c3RlZFNwaW5lUG9zaXRpb24sIGFyZURpZmZlcmVudCB9KVxuICB9XG5cbiAgY29uc3QgbGF5b3V0ID0gKCkgPT4ge1xuICAgIGN1cnJlbnRWaWV3cG9ydFBvc2l0aW9uTWVtb1VudXNlZCA9IHVuZGVmaW5lZFxuXG4gICAgaWYgKGNvbnRleHQuZ2V0U2V0dGluZ3MoKS5jb21wdXRlZFBhZ2VUdXJuTW9kZSA9PT0gYHNjcm9sbGFibGVgKSB7XG4gICAgICBlbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KGB0cmFuc2Zvcm1gKVxuICAgICAgZWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShgdHJhbnNpdGlvbmApXG4gICAgfVxuICB9XG5cbiAgY29uc3QgbmF2aWdhdGlvbiQ6IE9ic2VydmFibGU8e1xuICAgIHBvc2l0aW9uOiB7IHg6IG51bWJlciwgeTogbnVtYmVyLCBzcGluZUl0ZW0/OiBTcGluZUl0ZW0gfSxcbiAgICB0cmlnZ2VyZWRCeTogYG1hbnVhbGAgfCBgYWRqdXN0YCB8IGBzY3JvbGxgLFxuICAgIGFuaW1hdGlvbjogZmFsc2UgfCBgdHVybmAgfCBgc25hcGBcbiAgfT4gPSBtZXJnZShcbiAgICBwYW5WaWV3cG9ydE5hdmlnYXRvci4kLm5hdmlnYXRpb24kXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChldmVudCkgPT4gKHtcbiAgICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgICBwb3NpdGlvbjogeyB4OiBldmVudC54LCB5OiBldmVudC55LCBzcGluZUl0ZW06IGV2ZW50LnNwaW5lSXRlbSB9LFxuICAgICAgICAgIGFuaW1hdGlvbjogYHNuYXBgIGFzIGNvbnN0LFxuICAgICAgICAgIHRyaWdnZXJlZEJ5OiBgbWFudWFsYCBhcyBjb25zdFxuICAgICAgICB9KSlcbiAgICAgICksXG4gICAgbWFudWFsVmlld3BvcnROYXZpZ2F0b3IuJC5uYXZpZ2F0aW9uJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZXZlbnQpID0+ICh7XG4gICAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgICAgcG9zaXRpb246IHsgeDogZXZlbnQueCwgeTogZXZlbnQueSwgc3BpbmVJdGVtOiBldmVudC5zcGluZUl0ZW0gfSxcbiAgICAgICAgICBhbmltYXRpb246IGV2ZW50LmFuaW1hdGUgPyBgdHVybmAgYXMgY29uc3QgOiBmYWxzZSBhcyBmYWxzZSxcbiAgICAgICAgICB0cmlnZ2VyZWRCeTogYG1hbnVhbGAgYXMgY29uc3RcbiAgICAgICAgfSkpXG4gICAgICApLFxuICAgIGFkanVzdE5hdmlnYXRpb25TdWJqZWN0JFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZXZlbnQpID0+ICh7XG4gICAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgICAgdHJpZ2dlcmVkQnk6IGBhZGp1c3RgIGFzIGNvbnN0LFxuICAgICAgICAgIGFuaW1hdGlvbjogZXZlbnQuYW5pbWF0ZSA/IGB0dXJuYCBhcyBjb25zdCA6IGZhbHNlIGFzIGZhbHNlXG4gICAgICAgIH0pKVxuICAgICAgKSxcbiAgICBzY3JvbGxWaWV3cG9ydE5hdmlnYXRvci4kLm5hdmlnYXRpb24kXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChldmVudCkgPT4gKHtcbiAgICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgICB0cmlnZ2VyZWRCeTogYHNjcm9sbGAgYXMgY29uc3QsXG4gICAgICAgICAgYW5pbWF0aW9uOiBldmVudC5hbmltYXRlID8gYHR1cm5gIGFzIGNvbnN0IDogZmFsc2UgYXMgZmFsc2VcbiAgICAgICAgfSkpXG4gICAgICApXG4gIClcbiAgICAucGlwZShcbiAgICAgIHRhcCgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGBsYXN0VXNlckV4cGVjdGVkTmF2aWdhdGlvbmAgaW4gZXZlbnQpIHtcbiAgICAgICAgICBsYXN0VXNlckV4cGVjdGVkTmF2aWdhdGlvbiA9IGV2ZW50Lmxhc3RVc2VyRXhwZWN0ZWROYXZpZ2F0aW9uXG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudE5hdmlnYXRpb25Qb3NpdGlvbiA9IGV2ZW50LnBvc2l0aW9uXG4gICAgICAgIGN1cnJlbnROYXZpZ2F0aW9uU3ViamVjdCQubmV4dChjdXJyZW50TmF2aWdhdGlvblBvc2l0aW9uKVxuICAgICAgfSksXG4gICAgICBzaGFyZSgpLFxuICAgICAgdGFrZVVudGlsKGNvbnRleHQuJC5kZXN0cm95JClcbiAgICApXG5cbiAgLyoqXG4gICAqIFR5cGljYWxseSBhbGwgbWFudWFsIG5hdmlnYXRpb24gKHVzZXIgdHVybiwgdXNlciBlbmQgb2YgcGFuLCBldGMpLlxuICAgKiBXZSB0cnkgdG8gZmlsdGVyIG91dCBhbGwgbmF2aWdhdGlvbiB0aGF0IGFyZSBhc3luY2hyb25lIHN1Y2ggYXMgc2Nyb2xsaW5nLlxuICAgKiBUaGlzIGlzIGJlY2F1c2Ugd2UgZG8gbm90IHdhbnQgdG8gdHJpZ2dlciBhZGp1c3QgZm9yIHRoZW0gc2luY2UgdGhleSBhbHJlYWR5IGFkanVzdFxuICAgKiB0aGUgdmlld3BvcnQgb24gdGhlaXIgb3duLlxuICAgKi9cbiAgY29uc3QgbmF2aWdhdGlvbldoaWNoUmVxdWlyZU1hbnVhbEFkanVzdCQgPSBuYXZpZ2F0aW9uJFxuICAgIC5waXBlKFxuICAgICAgZmlsdGVyKCh7IHRyaWdnZXJlZEJ5IH0pID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRyaWdnZXJlZEJ5ID09PSBgc2Nyb2xsYCB8fFxuICAgICAgICAgIChjb250ZXh0LmdldFNldHRpbmdzKCkuY29tcHV0ZWRQYWdlVHVybk1vZGUgPT09IGBzY3JvbGxhYmxlYCAmJiB0cmlnZ2VyZWRCeSA9PT0gYGFkanVzdGApXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuXG4gIGNvbnN0IG1hbnVhbEFkanVzdCQgPSBtZXJnZShcbiAgICBwYW5WaWV3cG9ydE5hdmlnYXRvci4kLm1vdmVUb1N1YmplY3QkLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKGV2ZW50ID0+ICh7IC4uLmV2ZW50LCBhbmltYXRpb246IGZhbHNlIGFzIGZhbHNlIH0pKVxuICAgICAgKSxcbiAgICBuYXZpZ2F0aW9uV2hpY2hSZXF1aXJlTWFudWFsQWRqdXN0JFxuICApXG4gICAgLnBpcGUoXG4gICAgICBtYXAoKHsgYW5pbWF0aW9uLCBwb3NpdGlvbiB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHNob3VsZEFuaW1hdGUgPVxuICAgICAgICAgICEoXG4gICAgICAgICAgICAhYW5pbWF0aW9uIHx8XG4gICAgICAgICAgICAoYW5pbWF0aW9uID09PSBgdHVybmAgJiYgY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkUGFnZVR1cm5BbmltYXRpb24gPT09IGBub25lYClcbiAgICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBgbWFudWFsQWRqdXN0YCBhcyBjb25zdCxcbiAgICAgICAgICBzaG91bGRBbmltYXRlLFxuICAgICAgICAgIGFuaW1hdGlvbixcbiAgICAgICAgICBwb3NpdGlvblxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHNoYXJlKClcbiAgICApXG5cbiAgY29uc3QgcHJvY2Vzc01hbnVhbEFkanVzdCQgPSBtZXJnZShcbiAgICBtYW51YWxBZGp1c3QkXG4gIClcbiAgICAucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgcGFpcndpc2UoKSxcbiAgICAgIHRhcCgoW3ByZXZFdmVudCwgY3VycmVudEV2ZW50XSkgPT4ge1xuICAgICAgICAvLyBjbGVhbnVwIHBvdGVudGlhbCBwcmV2aW91cyBtYW51YWwgYWRqdXN0XG4gICAgICAgIGlmIChwcmV2RXZlbnQ/LnR5cGUgPT09IGBtYW51YWxBZGp1c3RgICYmIGN1cnJlbnRFdmVudD8udHlwZSAhPT0gYG1hbnVhbEFkanVzdGApIHtcbiAgICAgICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGB0cmFuc2l0aW9uYCwgYG5vbmVgKVxuICAgICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYG9wYWNpdHlgLCBgMWApXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKChbLCBjdXJyZW50RXZlbnRdKSA9PiB7XG4gICAgICAgIGlmIChjdXJyZW50RXZlbnQ/LnR5cGUgIT09IGBtYW51YWxBZGp1c3RgKSByZXR1cm4gRU1QVFlcblxuICAgICAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9IGN1cnJlbnRFdmVudC5hbmltYXRpb24gPT09IGBzbmFwYFxuICAgICAgICAgID8gY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkU25hcEFuaW1hdGlvbkR1cmF0aW9uXG4gICAgICAgICAgOiBjb250ZXh0LmdldFNldHRpbmdzKCkuY29tcHV0ZWRQYWdlVHVybkFuaW1hdGlvbkR1cmF0aW9uXG4gICAgICAgIGNvbnN0IHBhZ2VUdXJuQW5pbWF0aW9uID0gY3VycmVudEV2ZW50LmFuaW1hdGlvbiA9PT0gYHNuYXBgXG4gICAgICAgICAgPyBgc2xpZGVgIGFzIGNvbnN0XG4gICAgICAgICAgOiBjb250ZXh0LmdldFNldHRpbmdzKCkuY29tcHV0ZWRQYWdlVHVybkFuaW1hdGlvblxuXG4gICAgICAgIHJldHVybiBvZihjdXJyZW50RXZlbnQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBpbXBvcnRhbnRcbiAgICAgICAgICAgICAqIE9wdGltaXphdGlvbjpcbiAgICAgICAgICAgICAqIFdoZW4gdGhlIGFkanVzdG1lbnQgZG9lcyBub3QgbmVlZCBhbmltYXRpb24gaXQgbWVhbnMgd2Ugd2FudCB0byBiZSB0aGVyZSBhcyBmYXN0IGFzIHBvc3NpYmxlXG4gICAgICAgICAgICAgKiBPbmUgZXhhbXBsZSBpcyB3aGVuIHdlIGFkanVzdCBwb3NpdGlvbiBhZnRlciBsYXlvdXQuIEluIHRoaXMgY2FzZSB3ZSBkb24ndCB3YW50IHRvIGhhdmUgZmxpY2tlciBvciBzZWVcbiAgICAgICAgICAgICAqIGFueXRoaW5nIGZvciB4IG1zIHdoaWxlIHdlIGVmZmVjdGl2ZWx5IGFkanVzdC4gV2Ugd2FudCBpdCB0byBiZSBpbW1lZGlhdGUuXG4gICAgICAgICAgICAgKiBIb3dldmVyIHdoZW4gdXNlciBpcyByZXBlYXRlZGx5IHR1cm5pbmcgcGFnZSwgd2UgY2FuIGltcHJvdmUgc21vb3RobmVzcyBieSBkZWxheWluZyBhIGJpdCB0aGUgYWRqdXN0bWVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjdXJyZW50RXZlbnQuc2hvdWxkQW5pbWF0ZSA/IGRlbGF5KDEsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSA6IGlkZW50aXR5LFxuICAgICAgICAgICAgdGFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgIC8vIGNvbnN0IG5vQWRqdXN0bWVudE5lZWRlZCA9ICFhcmVOYXZpZ2F0aW9uRGlmZmVyZW50KGRhdGEucG9zaXRpb24sIGdldEN1cnJlbnRWaWV3cG9ydFBvc2l0aW9uKCkpXG4gICAgICAgICAgICAgIGNvbnN0IG5vQWRqdXN0bWVudE5lZWRlZCA9IGZhbHNlXG5cbiAgICAgICAgICAgICAgaWYgKGRhdGEuc2hvdWxkQW5pbWF0ZSAmJiAhbm9BZGp1c3RtZW50TmVlZGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhZ2VUdXJuQW5pbWF0aW9uID09PSBgZmFkZWApIHtcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYHRyYW5zaXRpb25gLCBgb3BhY2l0eSAke2FuaW1hdGlvbkR1cmF0aW9uIC8gMn1tc2ApXG4gICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGBvcGFjaXR5YCwgYDBgKVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEV2ZW50LmFuaW1hdGlvbiA9PT0gYHNuYXBgIHx8IHBhZ2VUdXJuQW5pbWF0aW9uID09PSBgc2xpZGVgKSB7XG4gICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGB0cmFuc2l0aW9uYCwgYHRyYW5zZm9ybSAke2FuaW1hdGlvbkR1cmF0aW9ufW1zYClcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYG9wYWNpdHlgLCBgMWApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYHRyYW5zaXRpb25gLCBgbm9uZWApXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShgb3BhY2l0eWAsIGAxYClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBpbXBvcnRhbnRcbiAgICAgICAgICAgICAqIFdlIGFsd2F5cyBuZWVkIHRvIGFkanVzdCB0aGUgcmVhZGluZyBvZmZzZXQuIEV2ZW4gaWYgdGhlIGN1cnJlbnQgdmlld3BvcnQgdmFsdWVcbiAgICAgICAgICAgICAqIGlzIHRoZSBzYW1lIGFzIHRoZSBwYXlsb2FkIHBvc2l0aW9uLiBUaGlzIGlzIGJlY2F1c2UgYW4gYWxyZWFkeSBydW5uaW5nIGFuaW1hdGlvbiBjb3VsZFxuICAgICAgICAgICAgICogYmUgYWN0aXZlLCBtZWFuaW5nIHRoZSB2aWV3cG9ydCBpcyBzdGlsbCBhZGp1c3RpbmcgaXRzZWxmIChhZnRlciBhbmltYXRpb24gZHVyYXRpb24pLiBTbyB3ZVxuICAgICAgICAgICAgICogbmVlZCB0byBhZGp1c3QgdG8gYW5jaG9yIHRvIHRoZSBwYXlsb2FkIHBvc2l0aW9uLiBUaGlzIGlzIGJlY2F1c2Ugd2UgdXNlIHZpZXdwb3J0IGNvbXB1dGVkIHBvc2l0aW9uLFxuICAgICAgICAgICAgICogbm90IHRoZSB2YWx1ZSBzZXQgYnkgYHNldFByb3BlcnR5YFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB3aXRoTGF0ZXN0RnJvbShob29rcyQpLFxuICAgICAgICAgICAgdGFwKChbZGF0YSwgaG9va3NdKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChwYWdlVHVybkFuaW1hdGlvbiAhPT0gYGZhZGVgKSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0UmVhZGluZ09mZnNldChkYXRhLnBvc2l0aW9uLCBob29rcylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjdXJyZW50RXZlbnQuc2hvdWxkQW5pbWF0ZSA/IGRlbGF5KGFuaW1hdGlvbkR1cmF0aW9uIC8gMiwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpIDogaWRlbnRpdHksXG4gICAgICAgICAgICB0YXAoKFtkYXRhLCBob29rc10pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHBhZ2VUdXJuQW5pbWF0aW9uID09PSBgZmFkZWApIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RSZWFkaW5nT2Zmc2V0KGRhdGEucG9zaXRpb24sIGhvb2tzKVxuICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYG9wYWNpdHlgLCBgMWApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY3VycmVudEV2ZW50LnNob3VsZEFuaW1hdGUgPyBkZWxheShhbmltYXRpb25EdXJhdGlvbiAvIDIsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSA6IGlkZW50aXR5LFxuICAgICAgICAgICAgdGFwKChbZGF0YSwgaG9va3NdKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChwYWdlVHVybkFuaW1hdGlvbiA9PT0gYGZhZGVgKSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0UmVhZGluZ09mZnNldChkYXRhLnBvc2l0aW9uLCBob29rcylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YWtlVW50aWwoXG4gICAgICAgICAgICAgIHZpZXdwb3J0TmF2aWdhdG9yc1NoYXJlZFN0YXRlJC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihzdGF0ZSA9PiBzdGF0ZSA9PT0gYHN0YXJ0YCksXG4gICAgICAgICAgICAgICAgc2tpcCgxKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgfSksXG4gICAgICBzaGFyZSgpLFxuICAgICAgdGFrZVVudGlsKGNvbnRleHQuJC5kZXN0cm95JClcbiAgICApXG5cbiAgLyoqXG4gICAqIE9ic2VydmUgdGhlIHN0YXRlIG9mIGFkanVzdG1lbnQuXG4gICAqIFRoaXMgaXMgdXNlZCB0byBrbm93IHdoZXRoZXIgdGhlIHZpZXdwb3J0IGlzIGJlaW5nIGFkanVzdGVkIGJ5IHdoYXRldmVyIG1lYW5zLlxuICAgKi9cbiAgY29uc3QgYWRqdXN0bWVudFN0YXRlJCA9IG1lcmdlKFxuICAgIG1lcmdlKG1hbnVhbEFkanVzdCQpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCgpID0+IGBzdGFydGAgYXMgY29uc3QpXG4gICAgICApLFxuICAgIG1lcmdlKFxuICAgICAgcHJvY2Vzc01hbnVhbEFkanVzdCRcbiAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCgpID0+IGBlbmRgIGFzIGNvbnN0KVxuICAgICAgKVxuICApXG5cbiAgLyoqXG4gICAqIE9ic2VydmUgdGhlIHZpZXdwb3J0IHN0YXRlLlxuICAgKiBTb21lIGFjdGlvbnMgc3VjaCBhcyBhZGp1c3RtZW50LCB1c2VyIHBhbiBtb3ZpbmcsIGV0YyBzZXQgdGhlIHZpZXdwb3J0IGFzIGJ1c3kgYmVjYXVzZSB0aGV5IHJlcXVpcmVcbiAgICogaGlnaCByZXNwb25zaXZlbmVzcyBpbiBvcmRlciB0byBhdm9pZCBzdHV0dGVyaW5nIG9yIGZwcyBkcm9wLiBUaGlzIG9ic2VydmFibGUgbGV0IHlvdSBrbm93IHdoZW4gaXNcbiAgICogYSBnb29kIHRpbWUgdG8gcGVyZm9ybSBoZWF2eSBvcGVyYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zXG4gICAqIGZyZWUgbWVhbnMgdGhlIHZpZXdwb3J0IGlzIG5vdCBtb3Zpbmcgc28gaXQncyBzYWZlIHRvIGRvIGNvbXB1dGF0aW9uXG4gICAqIGJ1c3kgbWVhbnMgdGhlIHZpZXdwb3J0IGlzIGVpdGhlciBjb250cm9sbGVkIG9yIGFuaW1hdGVkLCBldGMuXG4gICAqL1xuICBjb25zdCBzdGF0ZSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAuLi52aWV3cG9ydE5hdmlnYXRvcnMubWFwKCh7ICQ6IHsgc3RhdGUkIH0gfSkgPT4gc3RhdGUkKSxcbiAgICBhZGp1c3RtZW50U3RhdGUkXG4gIF0pXG4gICAgLnBpcGUoXG4gICAgICBtYXAoKHN0YXRlcykgPT4gc3RhdGVzLmV2ZXJ5KHN0YXRlID0+IHN0YXRlID09PSBgZW5kYCkgPyBgZnJlZWAgOiBgYnVzeWApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICAgLyoqXG4gICAgICAgKiBAaW1wb3J0YW50XG4gICAgICAgKiBTaW5jZSBzdGF0ZSQgaXMgYmVpbmcgdXBkYXRlZCBmcm9tIG5hdmlnYXRpb24kIGFuZCBvdGhlciBleHBvcnRlZCBzdHJlYW1zIHdlIG5lZWQgaXQgdG8gYmVcbiAgICAgICAqIGhvdCBzbyBpdCBhbHdheXMgaGF2ZSB0aGUgY29ycmVjdCB2YWx1ZSBubyBtYXR0ZXIgd2hlbiBzb21lb25lIHN1YnNjcmliZSBsYXRlci5cbiAgICAgICAqIFdlIGNhbm5vdCB3YWl0IGZvciB0aGUgY29sZCBzdHJlYW0gdG8gc3RhcnQgYWZ0ZXIgYSBuYXZpZ2F0aW9uIGFscmVhZHkgaGFwcGVuZWQgZm9yIGV4YW1wbGUuXG4gICAgICAgKi9cbiAgICAgIG1ha2VJdEhvdFxuICAgIClcblxuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgIGFkanVzdE5hdmlnYXRpb25TdWJqZWN0JC5jb21wbGV0ZSgpXG4gICAgdmlld3BvcnROYXZpZ2F0b3JzLmZvckVhY2gobmF2aWdhdG9yID0+IG5hdmlnYXRvci5kZXN0cm95KCkpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRlc3Ryb3ksXG4gICAgbGF5b3V0LFxuICAgIGdldEN1cnJlbnROYXZpZ2F0aW9uUG9zaXRpb246ICgpID0+IGN1cnJlbnROYXZpZ2F0aW9uUG9zaXRpb24sXG4gICAgZ2V0Q3VycmVudFZpZXdwb3J0UG9zaXRpb24sXG4gICAgdHVybkxlZnQ6IG1hbnVhbFZpZXdwb3J0TmF2aWdhdG9yLnR1cm5MZWZ0LFxuICAgIHR1cm5SaWdodDogbWFudWFsVmlld3BvcnROYXZpZ2F0b3IudHVyblJpZ2h0LFxuICAgIGdvVG9QYWdlOiBtYW51YWxWaWV3cG9ydE5hdmlnYXRvci5nb1RvUGFnZSxcbiAgICBnb1RvU3BpbmVJdGVtOiBtYW51YWxWaWV3cG9ydE5hdmlnYXRvci5nb1RvU3BpbmVJdGVtLFxuICAgIGdvVG9Vcmw6IG1hbnVhbFZpZXdwb3J0TmF2aWdhdG9yLmdvVG9VcmwsXG4gICAgZ29Ub0NmaTogbWFudWFsVmlld3BvcnROYXZpZ2F0b3IuZ29Ub0NmaSxcbiAgICBnb1RvUGFnZU9mQ3VycmVudENoYXB0ZXI6IG1hbnVhbFZpZXdwb3J0TmF2aWdhdG9yLmdvVG9QYWdlT2ZDdXJyZW50Q2hhcHRlcixcbiAgICBhZGp1c3ROYXZpZ2F0aW9uLFxuICAgIG1vdmVUbzogcGFuVmlld3BvcnROYXZpZ2F0b3IubW92ZVRvLFxuICAgIGdldExhc3RVc2VyRXhwZWN0ZWROYXZpZ2F0aW9uOiAoKSA9PiBsYXN0VXNlckV4cGVjdGVkTmF2aWdhdGlvbixcbiAgICAkOiB7XG4gICAgICBzdGF0ZSQsXG4gICAgICBuYXZpZ2F0aW9uJFxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/spine/viewportNavigator/viewportNavigator.ts\n");
|
|
400
|
+
|
|
401
|
+
/***/ }),
|
|
402
|
+
|
|
403
|
+
/***/ "./src/spineItem/commonSpineItem.ts":
|
|
404
|
+
/*!******************************************!*\
|
|
405
|
+
!*** ./src/spineItem/commonSpineItem.ts ***!
|
|
406
|
+
\******************************************/
|
|
407
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
408
|
+
|
|
409
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createCommonSpineItem\": () => (/* binding */ createCommonSpineItem)\n/* harmony export */ });\n/* harmony import */ var _frameItem_frameItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./frameItem/frameItem */ \"./src/spineItem/frameItem/frameItem.ts\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _trackers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./trackers */ \"./src/spineItem/trackers.ts\");\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/dom */ \"./src/utils/dom.ts\");\n/* harmony import */ var _frames__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../frames */ \"./src/frames.ts\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\nconst pointerEvents = [\n `pointercancel`,\n `pointerdown`,\n `pointerenter`,\n `pointerleave`,\n `pointermove`,\n `pointerout`,\n `pointerover`,\n `pointerup`\n];\nconst mouseEvents = [\n `mousedown`,\n `mouseup`,\n `mouseenter`,\n `mouseleave`,\n `mousemove`,\n `mouseout`,\n `mouseover`\n];\nconst passthroughEvents = [...pointerEvents, ...mouseEvents];\nconst createCommonSpineItem = ({ item, context, parentElement, iframeEventBridgeElement, hooks$, viewportState$ }) => {\n var _a;\n const destroySubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_1__.Subject();\n const isReflowable = false;\n const contentLayoutChangeSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_1__.Subject();\n const containerElement = createContainerElement(parentElement, item, hooks$);\n const loadingElement = createLoadingElement(parentElement, item, context);\n const overlayElement = createOverlayElement(parentElement, item);\n const fingerTracker = (0,_trackers__WEBPACK_IMPORTED_MODULE_2__.createFingerTracker)();\n const selectionTracker = (0,_trackers__WEBPACK_IMPORTED_MODULE_2__.createSelectionTracker)();\n const frameHooks = createFrameHooks(iframeEventBridgeElement, fingerTracker, selectionTracker);\n const spineItemFrame = (0,_frameItem_frameItem__WEBPACK_IMPORTED_MODULE_0__.createFrameItem)({\n parent: containerElement,\n item,\n context,\n fetchResource: (_a = context.getLoadOptions()) === null || _a === void 0 ? void 0 : _a.fetchResource,\n hooks$: hooks$.asObservable()\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_5__.map)(hooks => [...hooks, ...frameHooks])),\n viewportState$\n });\n containerElement.appendChild(loadingElement);\n containerElement.appendChild(overlayElement);\n parentElement.appendChild(containerElement);\n let memoizedElementDimensions;\n const getElementDimensions = () => {\n if (memoizedElementDimensions) {\n return memoizedElementDimensions;\n }\n const rect = containerElement.getBoundingClientRect();\n const normalizedValues = Object.assign(Object.assign({}, rect), { width: Math.round(rect.width * 10) / 10, height: Math.round(rect.height * 10) / 10 });\n memoizedElementDimensions = normalizedValues;\n return memoizedElementDimensions;\n };\n const isImageType = () => { var _a; return (_a = item.mediaType) === null || _a === void 0 ? void 0 : _a.startsWith(`image/`); };\n const injectStyle = (cssText) => {\n var _a, _b;\n (_a = spineItemFrame.getManipulableFrame()) === null || _a === void 0 ? void 0 : _a.removeStyle(`prose-reader-css`);\n (_b = spineItemFrame.getManipulableFrame()) === null || _b === void 0 ? void 0 : _b.addStyle(`prose-reader-css`, cssText);\n };\n const adjustPositionOfElement = ({ right, left, top }) => {\n if (right !== undefined) {\n containerElement.style.right = `${right}px`;\n }\n else {\n containerElement.style.removeProperty(`right`);\n }\n if (left !== undefined) {\n containerElement.style.left = `${left}px`;\n }\n else {\n containerElement.style.removeProperty(`left`);\n }\n if (top !== undefined) {\n containerElement.style.top = `${top}px`;\n }\n else {\n containerElement.style.removeProperty(`top`);\n }\n };\n const getViewPortInformation = () => {\n var _a;\n const { width: pageWidth, height: pageHeight } = context.getPageSize();\n const viewportDimensions = spineItemFrame.getViewportDimensions();\n const frameElement = (_a = spineItemFrame.getManipulableFrame()) === null || _a === void 0 ? void 0 : _a.frame;\n if (containerElement && (frameElement === null || frameElement === void 0 ? void 0 : frameElement.contentDocument) && (frameElement === null || frameElement === void 0 ? void 0 : frameElement.contentWindow) && viewportDimensions) {\n const computedWidthScale = pageWidth / viewportDimensions.width;\n const computedScale = Math.min(computedWidthScale, pageHeight / viewportDimensions.height);\n return { computedScale, computedWidthScale, viewportDimensions };\n }\n return Object.assign({ computedScale: 1, computedWidthScale: 1 }, viewportDimensions);\n };\n const loadContent = () => spineItemFrame.load();\n const unloadContent = () => spineItemFrame.unload();\n const getBoundingRectOfElementFromSelector = (selector) => {\n var _a, _b, _c, _d, _e;\n const frame = (_a = spineItemFrame.getManipulableFrame()) === null || _a === void 0 ? void 0 : _a.frame;\n if (frame && selector) {\n if (selector.startsWith(`#`)) {\n return (_c = (_b = frame.contentDocument) === null || _b === void 0 ? void 0 : _b.getElementById(selector.replace(`#`, ``))) === null || _c === void 0 ? void 0 : _c.getBoundingClientRect();\n }\n return (_e = (_d = frame.contentDocument) === null || _d === void 0 ? void 0 : _d.querySelector(selector)) === null || _e === void 0 ? void 0 : _e.getBoundingClientRect();\n }\n };\n const setLayoutDirty = () => {\n memoizedElementDimensions = undefined;\n };\n const layout = ({ height, width }) => {\n containerElement.style.width = `${width}px`;\n containerElement.style.height = `${height}px`;\n loadingElement.style.setProperty(`max-width`, `${context.getVisibleAreaRect().width}px`);\n setLayoutDirty();\n };\n const translateFramePositionIntoPage = (position) => {\n var _a;\n const { left = 0, top = 0 } = ((_a = spineItemFrame.getFrameElement()) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) || {};\n const { computedScale = 1 } = getViewPortInformation() || {};\n const adjustedX = position.clientX * computedScale + left;\n const adjustedY = position.clientY * computedScale + top;\n return {\n clientX: adjustedX,\n clientY: adjustedY\n };\n };\n const getResource = () => __awaiter(void 0, void 0, void 0, function* () {\n const loadOptions = context.getLoadOptions();\n const lastFetch = (_) => {\n if (loadOptions === null || loadOptions === void 0 ? void 0 : loadOptions.fetchResource) {\n return loadOptions.fetchResource(item);\n }\n return fetch(item.href);\n };\n const finalFetch = hooks$.getValue().reduce((acc, hook) => {\n if (hook.name === `item.onGetResource`) {\n return hook.fn(acc);\n }\n return acc;\n }, lastFetch);\n return yield finalFetch(item);\n });\n const manipulateSpineItem = (cb) => {\n const manipulableFrame = spineItemFrame.getManipulableFrame();\n if (manipulableFrame)\n return cb(Object.assign(Object.assign({}, manipulableFrame), { container: containerElement, loadingElement, item, overlayElement }));\n return cb({ container: containerElement, loadingElement, item, frame: undefined, removeStyle: () => { }, addStyle: () => { }, overlayElement });\n };\n const executeOnLayoutBeforeMeasurmentHook = (options) => hooks$.getValue().forEach(hook => {\n if (hook.name === `item.onLayoutBeforeMeasurment`) {\n hook.fn(Object.assign({ frame: spineItemFrame, container: containerElement, item,\n isImageType }, options));\n }\n });\n spineItemFrame.$.contentLayoutChange$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_5__.withLatestFrom)(spineItemFrame.$.isReady$), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_5__.takeUntil)(destroySubject$))\n .subscribe(([data, isReady]) => {\n if (data.isFirstLayout && isReady) {\n loadingElement.style.visibility = `hidden`;\n }\n contentLayoutChangeSubject$.next({ isFirstLayout: data.isFirstLayout, isReady });\n });\n spineItemFrame.$.unload$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_5__.tap)(() => {\n if (loadingElement && loadingElement.style.visibility !== `visible`) {\n loadingElement.style.visibility = `visible`;\n }\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_5__.takeUntil)(destroySubject$))\n .subscribe();\n return {\n load: () => {\n setLayoutDirty();\n },\n layout,\n adjustPositionOfElement,\n createLoadingElement,\n getElementDimensions,\n getHtmlFromResource: spineItemFrame.getHtmlFromResource,\n getResource,\n translateFramePositionIntoPage,\n setLayoutDirty,\n injectStyle,\n loadContent,\n unloadContent,\n spineItemFrame,\n element: containerElement,\n loadingElement,\n isReflowable,\n getBoundingRectOfElementFromSelector,\n getViewPortInformation,\n isImageType,\n isReady: spineItemFrame.getIsReady,\n destroy: () => {\n destroySubject$.next();\n loadingElement.onload = () => { };\n loadingElement.remove();\n containerElement.remove();\n spineItemFrame === null || spineItemFrame === void 0 ? void 0 : spineItemFrame.destroy();\n fingerTracker.destroy();\n selectionTracker.destroy();\n destroySubject$.complete();\n },\n isUsingVerticalWriting: () => { var _a; return (_a = spineItemFrame.getWritingMode()) === null || _a === void 0 ? void 0 : _a.startsWith(`vertical`); },\n getReadingDirection: () => {\n return spineItemFrame.getReadingDirection() || context.getReadingDirection();\n },\n manipulateSpineItem,\n executeOnLayoutBeforeMeasurmentHook,\n selectionTracker,\n fingerTracker,\n $: {\n contentLayoutChangeSubject$: contentLayoutChangeSubject$.asObservable(),\n loaded$: spineItemFrame.$.loaded$\n }\n };\n};\nconst createContainerElement = (containerElement, item, hooks$) => {\n const element = containerElement.ownerDocument.createElement(`div`);\n element.classList.add(`spineItem`);\n element.classList.add(`spineItem-${item.renditionLayout}`);\n element.style.cssText = `\n position: absolute;\n overflow: hidden;\n `;\n return hooks$.getValue().reduce((element, hook) => {\n if (hook.name === `item.onBeforeContainerCreated`) {\n return hook.fn(element);\n }\n return element;\n }, element);\n};\nconst createLoadingElement = (containerElement, item, context) => {\n const loadingElement = containerElement.ownerDocument.createElement(`div`);\n loadingElement.classList.add(`loading`);\n loadingElement.style.cssText = `\n height: 100%;\n width: 100%;\n max-width: ${context.getVisibleAreaRect().width}px;\n text-align: center;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n position: absolute;\n left: 0;\n top: 0;\n background-color: white;\n `;\n const logoElement = containerElement.ownerDocument.createElement(`div`);\n logoElement.innerText = `prose`;\n logoElement.style.cssText = `\n font-size: 4em;\n color: #cacaca;\n `;\n const detailsElement = containerElement.ownerDocument.createElement(`div`);\n detailsElement.innerText = `loading ${item.id}`;\n detailsElement.style.cssText = `\n font-size: 1.2em;\n color: rgb(202, 202, 202);\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n max-width: 300px;\n width: 80%;\n `;\n loadingElement.appendChild(logoElement);\n loadingElement.appendChild(detailsElement);\n return loadingElement;\n};\nconst createOverlayElement = (containerElement, item) => {\n const element = containerElement.ownerDocument.createElement(`div`);\n element.classList.add(`spineItemOverlay`);\n element.classList.add(`spineItemOverlay-${item.renditionLayout}`);\n element.style.cssText = `\n position: absolute;\n width: 100%;\n height: 100%;\n pointer-events: none;\n background-color: transparent;\n `;\n return element;\n};\nconst createFrameHooks = (iframeEventBridgeElement, fingerTracker, selectionTracker) => {\n return [\n {\n name: `item.onLoad`,\n fn: ({ frame }) => {\n const unregister = passthroughEvents.map(event => {\n var _a;\n const listener = (e) => {\n let convertedEvent = e;\n if ((0,_utils_dom__WEBPACK_IMPORTED_MODULE_3__.isPointerEvent)(e)) {\n convertedEvent = new PointerEvent(e.type, e);\n }\n if ((0,_utils_dom__WEBPACK_IMPORTED_MODULE_3__.isMouseEvent)(e)) {\n convertedEvent = new MouseEvent(e.type, e);\n }\n if (convertedEvent !== e) {\n (0,_frames__WEBPACK_IMPORTED_MODULE_4__.attachOriginalFrameEventToDocumentEvent)(convertedEvent, e);\n iframeEventBridgeElement.dispatchEvent(convertedEvent);\n }\n };\n (_a = frame.contentDocument) === null || _a === void 0 ? void 0 : _a.addEventListener(event, listener);\n return () => {\n var _a;\n (_a = frame.contentDocument) === null || _a === void 0 ? void 0 : _a.removeEventListener(event, listener);\n };\n });\n selectionTracker.track(frame);\n fingerTracker.track(frame);\n return () => {\n unregister.forEach(cb => cb());\n };\n }\n }\n ];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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d0JBRUQsSUFBSSxjQUFjLEtBQUssQ0FBQyxFQUFFOzRCQUN4QixnRkFBdUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDOzRCQUMxRCx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO3lCQUN2RDtvQkFDSCxDQUFDO29CQUVELFdBQUssQ0FBQyxlQUFlLDBDQUFFLGdCQUFnQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUM7b0JBRXhELE9BQU8sR0FBRyxFQUFFOzt3QkFDVixXQUFLLENBQUMsZUFBZSwwQ0FBRSxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO29CQUM3RCxDQUFDO2dCQUNILENBQUMsQ0FBQztnQkFFRixnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUM3QixhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFFMUIsT0FBTyxHQUFHLEVBQUU7b0JBQ1YsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNoQyxDQUFDO1lBQ0gsQ0FBQztTQUNGO0tBQ0Y7QUFDSCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL3NwaW5lSXRlbS9jb21tb25TcGluZUl0ZW0udHM/ODRkNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4uL2NvbnRleHRcIlxuaW1wb3J0IHsgY3JlYXRlRnJhbWVJdGVtLCBTcGluZUl0ZW1GcmFtZSB9IGZyb20gXCIuL2ZyYW1lSXRlbS9mcmFtZUl0ZW1cIlxuaW1wb3J0IHsgTWFuaWZlc3QgfSBmcm9tIFwiLi4vdHlwZXNcIlxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIlxuaW1wb3J0IHsgY3JlYXRlRmluZ2VyVHJhY2tlciwgY3JlYXRlU2VsZWN0aW9uVHJhY2tlciB9IGZyb20gXCIuL3RyYWNrZXJzXCJcbmltcG9ydCB7IGlzTW91c2VFdmVudCwgaXNQb2ludGVyRXZlbnQgfSBmcm9tIFwiLi4vdXRpbHMvZG9tXCJcbmltcG9ydCB7IGF0dGFjaE9yaWdpbmFsRnJhbWVFdmVudFRvRG9jdW1lbnRFdmVudCB9IGZyb20gXCIuLi9mcmFtZXNcIlxuaW1wb3J0IHsgSG9vayB9IGZyb20gXCIuLi90eXBlcy9Ib29rXCJcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsLCB0YXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCJcbmltcG9ydCB7IGNyZWF0ZUZyYW1lTWFuaXB1bGF0b3IgfSBmcm9tIFwiLi9mcmFtZUl0ZW0vY3JlYXRlRnJhbWVNYW5pcHVsYXRvclwiXG5cbmNvbnN0IHBvaW50ZXJFdmVudHMgPSBbXG4gIGBwb2ludGVyY2FuY2VsYCBhcyBjb25zdCxcbiAgYHBvaW50ZXJkb3duYCBhcyBjb25zdCxcbiAgYHBvaW50ZXJlbnRlcmAgYXMgY29uc3QsXG4gIGBwb2ludGVybGVhdmVgIGFzIGNvbnN0LFxuICBgcG9pbnRlcm1vdmVgIGFzIGNvbnN0LFxuICBgcG9pbnRlcm91dGAgYXMgY29uc3QsXG4gIGBwb2ludGVyb3ZlcmAgYXMgY29uc3QsXG4gIGBwb2ludGVydXBgIGFzIGNvbnN0XG5dXG5cbmNvbnN0IG1vdXNlRXZlbnRzID0gW1xuICBgbW91c2Vkb3duYCBhcyBjb25zdCxcbiAgYG1vdXNldXBgIGFzIGNvbnN0LFxuICBgbW91c2VlbnRlcmAgYXMgY29uc3QsXG4gIGBtb3VzZWxlYXZlYCBhcyBjb25zdCxcbiAgYG1vdXNlbW92ZWAgYXMgY29uc3QsXG4gIGBtb3VzZW91dGAgYXMgY29uc3QsXG4gIGBtb3VzZW92ZXJgIGFzIGNvbnN0XG5dXG5cbmNvbnN0IHBhc3N0aHJvdWdoRXZlbnRzID0gWy4uLnBvaW50ZXJFdmVudHMsIC4uLm1vdXNlRXZlbnRzXVxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29tbW9uU3BpbmVJdGVtID0gKHsgaXRlbSwgY29udGV4dCwgcGFyZW50RWxlbWVudCwgaWZyYW1lRXZlbnRCcmlkZ2VFbGVtZW50LCBob29rcyQsIHZpZXdwb3J0U3RhdGUkIH06IHtcbiAgaXRlbTogTWFuaWZlc3RbYHNwaW5lSXRlbXNgXVtudW1iZXJdLFxuICBwYXJlbnRFbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgaWZyYW1lRXZlbnRCcmlkZ2VFbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgY29udGV4dDogQ29udGV4dCxcbiAgaG9va3MkOiBCZWhhdmlvclN1YmplY3Q8SG9va1tdPixcbiAgdmlld3BvcnRTdGF0ZSQ6IE9ic2VydmFibGU8YGZyZWVgIHwgYGJ1c3lgPlxufSkgPT4ge1xuICBjb25zdCBkZXN0cm95U3ViamVjdCQgPSBuZXcgU3ViamVjdDx2b2lkPigpXG4gIGNvbnN0IGlzUmVmbG93YWJsZSA9IGZhbHNlXG4gIGNvbnN0IGNvbnRlbnRMYXlvdXRDaGFuZ2VTdWJqZWN0JCA9IG5ldyBTdWJqZWN0PHsgaXNGaXJzdExheW91dDogYm9vbGVhbiwgaXNSZWFkeTogYm9vbGVhbiB9PigpXG4gIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQgPSBjcmVhdGVDb250YWluZXJFbGVtZW50KHBhcmVudEVsZW1lbnQsIGl0ZW0sIGhvb2tzJClcbiAgY29uc3QgbG9hZGluZ0VsZW1lbnQgPSBjcmVhdGVMb2FkaW5nRWxlbWVudChwYXJlbnRFbGVtZW50LCBpdGVtLCBjb250ZXh0KVxuICBjb25zdCBvdmVybGF5RWxlbWVudCA9IGNyZWF0ZU92ZXJsYXlFbGVtZW50KHBhcmVudEVsZW1lbnQsIGl0ZW0pXG4gIGNvbnN0IGZpbmdlclRyYWNrZXIgPSBjcmVhdGVGaW5nZXJUcmFja2VyKClcbiAgY29uc3Qgc2VsZWN0aW9uVHJhY2tlciA9IGNyZWF0ZVNlbGVjdGlvblRyYWNrZXIoKVxuICBjb25zdCBmcmFtZUhvb2tzID0gY3JlYXRlRnJhbWVIb29rcyhpZnJhbWVFdmVudEJyaWRnZUVsZW1lbnQsIGZpbmdlclRyYWNrZXIsIHNlbGVjdGlvblRyYWNrZXIpXG4gIGNvbnN0IHNwaW5lSXRlbUZyYW1lID0gY3JlYXRlRnJhbWVJdGVtKHtcbiAgICBwYXJlbnQ6IGNvbnRhaW5lckVsZW1lbnQsXG4gICAgaXRlbSxcbiAgICBjb250ZXh0LFxuICAgIGZldGNoUmVzb3VyY2U6IGNvbnRleHQuZ2V0TG9hZE9wdGlvbnMoKT8uZmV0Y2hSZXNvdXJjZSxcbiAgICBob29rcyQ6IGhvb2tzJC5hc09ic2VydmFibGUoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChob29rcyA9PiBbLi4uaG9va3MsIC4uLmZyYW1lSG9va3NdKVxuICAgICAgKSxcbiAgICB2aWV3cG9ydFN0YXRlJFxuICB9KVxuICAvLyBsZXQgbGF5b3V0SW5mb3JtYXRpb246IHsgYmxhbmtQYWdlUG9zaXRpb246IGBiZWZvcmVgIHwgYGFmdGVyYCB8IGBub25lYCwgbWluaW11bVdpZHRoOiBudW1iZXIgfSA9IHsgYmxhbmtQYWdlUG9zaXRpb246IGBub25lYCwgbWluaW11bVdpZHRoOiBjb250ZXh0LmdldFBhZ2VTaXplKCkud2lkdGggfVxuXG4gIGNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQobG9hZGluZ0VsZW1lbnQpXG4gIGNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQob3ZlcmxheUVsZW1lbnQpXG4gIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGFpbmVyRWxlbWVudClcblxuICAvLyBEbyBub3QgbWVtb2l6ZSB4LHksdG9wLGxlZnQgYXMgdGhleSBjaGFuZ2UgcmVsYXRpdmVseSB0byB0aGUgdmlld3BvcnQgYWxsIHRoZSB0aW1lXG4gIGxldCBtZW1vaXplZEVsZW1lbnREaW1lbnNpb25zOiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0gfCB1bmRlZmluZWRcblxuICAvLyBAdG9kbyB1c2Ugc3BpbmUgaXRlbSBtYW5hZ2VyIGdsb2JhbCBsYXlvdXQgcmVmZXJlbmNlIGlmIHBvc3NpYmxlXG4gIC8vIEB0b2RvIGdldEFic29sdXRlUG9zaXRpb25PZiAoZm9yIHdpZHRoIGFuZCBoZWlnaHQpXG4gIGNvbnN0IGdldEVsZW1lbnREaW1lbnNpb25zID0gKCkgPT4ge1xuICAgIGlmIChtZW1vaXplZEVsZW1lbnREaW1lbnNpb25zKSB7XG4gICAgICByZXR1cm4gbWVtb2l6ZWRFbGVtZW50RGltZW5zaW9uc1xuICAgIH1cblxuICAgIGNvbnN0IHJlY3QgPSBjb250YWluZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlcyA9IHtcbiAgICAgIC4uLnJlY3QsXG4gICAgICAvLyB3ZSB3YW50IHRvIHJvdW5kIHRvIGZpcnN0IGRlY2ltYWwgYmVjYXVzZSBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgaGFsZiBwaXhlbFxuICAgICAgLy8gaG93ZXZlciBicm93c2VyIGVuZ2luZSBjYW4gYWxzbyBnaXZlcyBiYWNrIHgueXl5eSBiYXNlZCBvbiB0aGVpciBwcmVjaXNpb25cbiAgICAgIHdpZHRoOiBNYXRoLnJvdW5kKHJlY3Qud2lkdGggKiAxMCkgLyAxMCxcbiAgICAgIGhlaWdodDogTWF0aC5yb3VuZChyZWN0LmhlaWdodCAqIDEwKSAvIDEwXG4gICAgfVxuXG4gICAgbWVtb2l6ZWRFbGVtZW50RGltZW5zaW9ucyA9IG5vcm1hbGl6ZWRWYWx1ZXNcblxuICAgIHJldHVybiBtZW1vaXplZEVsZW1lbnREaW1lbnNpb25zXG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0IHRoZSB0eXBlIG9mIHJlc291cmNlIChpbmRlcGVuZGVudGx5IG9mIHJlbmRpdGlvbiBmbG93KS5cbiAgICogSWYgYW4gaW1hZ2UgaXMgZGV0ZWN0ZWQgZm9yIHJlZmxvd2FibGUgZm9yIGV4YW1wbGUgd2UgbWF5IHdhbnQgdG8gZGlzcGxheVxuICAgKiB0aGluZ3MgYWNjb3JkaW5nbHkuXG4gICAqL1xuICBjb25zdCBpc0ltYWdlVHlwZSA9ICgpID0+IGl0ZW0ubWVkaWFUeXBlPy5zdGFydHNXaXRoKGBpbWFnZS9gKVxuXG4gIGNvbnN0IGluamVjdFN0eWxlID0gKGNzc1RleHQ6IHN0cmluZykgPT4ge1xuICAgIHNwaW5lSXRlbUZyYW1lLmdldE1hbmlwdWxhYmxlRnJhbWUoKT8ucmVtb3ZlU3R5bGUoYHByb3NlLXJlYWRlci1jc3NgKVxuICAgIHNwaW5lSXRlbUZyYW1lLmdldE1hbmlwdWxhYmxlRnJhbWUoKT8uYWRkU3R5bGUoYHByb3NlLXJlYWRlci1jc3NgLCBjc3NUZXh0KVxuICB9XG5cbiAgY29uc3QgYWRqdXN0UG9zaXRpb25PZkVsZW1lbnQgPSAoeyByaWdodCwgbGVmdCwgdG9wIH06IHsgcmlnaHQ/OiBudW1iZXIsIGxlZnQ/OiBudW1iZXIsIHRvcD86IG51bWJlciB9KSA9PiB7XG4gICAgaWYgKHJpZ2h0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQuc3R5bGUucmlnaHQgPSBgJHtyaWdodH1weGBcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVyRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShgcmlnaHRgKVxuICAgIH1cbiAgICBpZiAobGVmdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250YWluZXJFbGVtZW50LnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YFxuICAgIH0gZWxzZSB7XG4gICAgICBjb250YWluZXJFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KGBsZWZ0YClcbiAgICB9XG4gICAgaWYgKHRvcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250YWluZXJFbGVtZW50LnN0eWxlLnRvcCA9IGAke3RvcH1weGBcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVyRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShgdG9wYClcbiAgICB9XG4gIH1cblxuICBjb25zdCBnZXRWaWV3UG9ydEluZm9ybWF0aW9uID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgd2lkdGg6IHBhZ2VXaWR0aCwgaGVpZ2h0OiBwYWdlSGVpZ2h0IH0gPSBjb250ZXh0LmdldFBhZ2VTaXplKClcbiAgICBjb25zdCB2aWV3cG9ydERpbWVuc2lvbnMgPSBzcGluZUl0ZW1GcmFtZS5nZXRWaWV3cG9ydERpbWVuc2lvbnMoKVxuICAgIGNvbnN0IGZyYW1lRWxlbWVudCA9IHNwaW5lSXRlbUZyYW1lLmdldE1hbmlwdWxhYmxlRnJhbWUoKT8uZnJhbWVcbiAgICBpZiAoY29udGFpbmVyRWxlbWVudCAmJiBmcmFtZUVsZW1lbnQ/LmNvbnRlbnREb2N1bWVudCAmJiBmcmFtZUVsZW1lbnQ/LmNvbnRlbnRXaW5kb3cgJiYgdmlld3BvcnREaW1lbnNpb25zKSB7XG4gICAgICBjb25zdCBjb21wdXRlZFdpZHRoU2NhbGUgPSBwYWdlV2lkdGggLyB2aWV3cG9ydERpbWVuc2lvbnMud2lkdGhcbiAgICAgIGNvbnN0IGNvbXB1dGVkU2NhbGUgPSBNYXRoLm1pbihjb21wdXRlZFdpZHRoU2NhbGUsIHBhZ2VIZWlnaHQgLyB2aWV3cG9ydERpbWVuc2lvbnMuaGVpZ2h0KVxuXG4gICAgICByZXR1cm4geyBjb21wdXRlZFNjYWxlLCBjb21wdXRlZFdpZHRoU2NhbGUsIHZpZXdwb3J0RGltZW5zaW9ucyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY29tcHV0ZWRTY2FsZTogMSwgY29tcHV0ZWRXaWR0aFNjYWxlOiAxLCAuLi52aWV3cG9ydERpbWVuc2lvbnMgfVxuICB9XG5cbiAgY29uc3QgbG9hZENvbnRlbnQgPSAoKSA9PiBzcGluZUl0ZW1GcmFtZS5sb2FkKClcblxuICBjb25zdCB1bmxvYWRDb250ZW50ID0gKCkgPT4gc3BpbmVJdGVtRnJhbWUudW5sb2FkKClcblxuICBjb25zdCBnZXRCb3VuZGluZ1JlY3RPZkVsZW1lbnRGcm9tU2VsZWN0b3IgPSAoc2VsZWN0b3I6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGZyYW1lID0gc3BpbmVJdGVtRnJhbWUuZ2V0TWFuaXB1bGFibGVGcmFtZSgpPy5mcmFtZVxuICAgIGlmIChmcmFtZSAmJiBzZWxlY3Rvcikge1xuICAgICAgaWYgKHNlbGVjdG9yLnN0YXJ0c1dpdGgoYCNgKSkge1xuICAgICAgICByZXR1cm4gZnJhbWUuY29udGVudERvY3VtZW50Py5nZXRFbGVtZW50QnlJZChzZWxlY3Rvci5yZXBsYWNlKGAjYCwgYGApKT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIH1cbiAgICAgIHJldHVybiBmcmFtZS5jb250ZW50RG9jdW1lbnQ/LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNldExheW91dERpcnR5ID0gKCkgPT4ge1xuICAgIG1lbW9pemVkRWxlbWVudERpbWVuc2lvbnMgPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8vIGNvbnN0IGxheW91dCA9ICh7IGhlaWdodCwgd2lkdGgsIC4uLm5ld0xheW91dEluZm9ybWF0aW9uIH06IHsgaGVpZ2h0OiBudW1iZXIsIHdpZHRoOiBudW1iZXIgfSAmIHR5cGVvZiBsYXlvdXRJbmZvcm1hdGlvbikgPT4ge1xuICBjb25zdCBsYXlvdXQgPSAoeyBoZWlnaHQsIHdpZHRoIH06IHsgaGVpZ2h0OiBudW1iZXIsIHdpZHRoOiBudW1iZXIgfSkgPT4ge1xuICAgIGNvbnRhaW5lckVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGBcbiAgICBjb250YWluZXJFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGBcblxuICAgIGxvYWRpbmdFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGBtYXgtd2lkdGhgLCBgJHtjb250ZXh0LmdldFZpc2libGVBcmVhUmVjdCgpLndpZHRofXB4YClcblxuICAgIC8vIGxheW91dEluZm9ybWF0aW9uID0gbmV3TGF5b3V0SW5mb3JtYXRpb25cblxuICAgIHNldExheW91dERpcnR5KClcblxuICAgIC8vIGhvb2tzJC5nZXRWYWx1ZSgpLmZvckVhY2goaG9vayA9PiB7XG4gICAgLy8gICBpZiAoaG9vay5uYW1lID09PSBgaXRlbS5vbkxheW91dGApIHtcbiAgICAvLyAgICAgaG9vay5mbih7IGZyYW1lOiBzcGluZUl0ZW1GcmFtZS5nZXRGcmFtZUVsZW1lbnQoKSwgY29udGFpbmVyOiBjb250YWluZXJFbGVtZW50LCBsb2FkaW5nRWxlbWVudCwgaXRlbSwgb3ZlcmxheUVsZW1lbnQgfSlcbiAgICAvLyAgIH1cbiAgICAvLyB9KVxuICB9XG5cbiAgY29uc3QgdHJhbnNsYXRlRnJhbWVQb3NpdGlvbkludG9QYWdlID0gKHBvc2l0aW9uOiB7IGNsaWVudFg6IG51bWJlciwgY2xpZW50WTogbnVtYmVyIH0pID0+IHtcbiAgICAvLyBIZXJlIHdlIHVzZSBnZXRCb3VuZGluZ0NsaWVudFJlY3QgbWVhbmluZyB3ZSB3aWxsIGdldCByZWxhdGl2ZSB2YWx1ZSBmb3IgbGVmdCAvIHRvcCBiYXNlZCBvbiBjdXJyZW50XG4gICAgLy8gd2luZG93ICh2aWV3cG9ydCkuIFRoaXMgaXMgaGFuZHkgYmVjYXVzZSB3ZSBjYW4gZWFzaWx5IGdldCB0aGUgdHJhbnNsYXRlZCB4L3kgd2l0aG91dCBhbnkgZXh0cmEgaW5mb3JtYXRpb25cbiAgICAvLyBzdWNoIGFzIHBhZ2UgaW5kZXgsIGV0Yy4gSG93ZXZlciB0aGlzIG1pZ2h0IGJlIGEgYml0IGxlc3MgcGVyZm9ybWFuY2UgdG8gcmVxdWVzdCBoZWF2aWx5IGdldEJvdW5kaW5nQ2xpZW50UmVjdFxuICAgIGNvbnN0IHsgbGVmdCA9IDAsIHRvcCA9IDAgfSA9IHNwaW5lSXRlbUZyYW1lLmdldEZyYW1lRWxlbWVudCgpPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB8fCB7fVxuICAgIGNvbnN0IHsgY29tcHV0ZWRTY2FsZSA9IDEgfSA9IGdldFZpZXdQb3J0SW5mb3JtYXRpb24oKSB8fCB7fVxuICAgIGNvbnN0IGFkanVzdGVkWCA9IHBvc2l0aW9uLmNsaWVudFggKiBjb21wdXRlZFNjYWxlICsgbGVmdFxuICAgIGNvbnN0IGFkanVzdGVkWSA9IHBvc2l0aW9uLmNsaWVudFkgKiBjb21wdXRlZFNjYWxlICsgdG9wXG5cbiAgICByZXR1cm4ge1xuICAgICAgY2xpZW50WDogYWRqdXN0ZWRYLFxuICAgICAgY2xpZW50WTogYWRqdXN0ZWRZXG4gICAgfVxuICB9XG5cbiAgY29uc3QgZ2V0UmVzb3VyY2UgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbG9hZE9wdGlvbnMgPSBjb250ZXh0LmdldExvYWRPcHRpb25zKClcbiAgICBjb25zdCBsYXN0RmV0Y2ggPSAoXzogTWFuaWZlc3RbYHNwaW5lSXRlbXNgXVtudW1iZXJdKSA9PiB7XG4gICAgICBpZiAobG9hZE9wdGlvbnM/LmZldGNoUmVzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIGxvYWRPcHRpb25zLmZldGNoUmVzb3VyY2UoaXRlbSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZldGNoKGl0ZW0uaHJlZilcbiAgICB9XG5cbiAgICBjb25zdCBmaW5hbEZldGNoID0gaG9va3MkLmdldFZhbHVlKCkucmVkdWNlKChhY2MsIGhvb2spID0+IHtcbiAgICAgIGlmIChob29rLm5hbWUgPT09IGBpdGVtLm9uR2V0UmVzb3VyY2VgKSB7XG4gICAgICAgIHJldHVybiBob29rLmZuKGFjYylcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sIGxhc3RGZXRjaClcblxuICAgIHJldHVybiBhd2FpdCBmaW5hbEZldGNoKGl0ZW0pXG4gIH1cblxuICBjb25zdCBtYW5pcHVsYXRlU3BpbmVJdGVtID0gKFxuICAgIGNiOiAob3B0aW9uczoge1xuICAgICAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgICAgIGxvYWRpbmdFbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICAgIGl0ZW06IE1hbmlmZXN0W2BzcGluZUl0ZW1zYF1bbnVtYmVyXSxcbiAgICAgIG92ZXJsYXlFbGVtZW50OiBIVE1MRGl2RWxlbWVudCxcbiAgICB9ICYgKFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUZyYW1lTWFuaXB1bGF0b3I+IHwgeyBmcmFtZTogdW5kZWZpbmVkLCByZW1vdmVTdHlsZTogKGlkOiBzdHJpbmcpID0+IHZvaWQsIGFkZFN0eWxlOiAoaWQ6IHN0cmluZywgc3R5bGU6IHN0cmluZykgPT4gdm9pZCB9KSkgPT4gYm9vbGVhblxuICApID0+IHtcbiAgICBjb25zdCBtYW5pcHVsYWJsZUZyYW1lID0gc3BpbmVJdGVtRnJhbWUuZ2V0TWFuaXB1bGFibGVGcmFtZSgpXG5cbiAgICBpZiAobWFuaXB1bGFibGVGcmFtZSkgcmV0dXJuIGNiKHsgLi4ubWFuaXB1bGFibGVGcmFtZSwgY29udGFpbmVyOiBjb250YWluZXJFbGVtZW50LCBsb2FkaW5nRWxlbWVudCwgaXRlbSwgb3ZlcmxheUVsZW1lbnQgfSlcblxuICAgIHJldHVybiBjYih7IGNvbnRhaW5lcjogY29udGFpbmVyRWxlbWVudCwgbG9hZGluZ0VsZW1lbnQsIGl0ZW0sIGZyYW1lOiB1bmRlZmluZWQsIHJlbW92ZVN0eWxlOiAoKSA9PiB7IH0sIGFkZFN0eWxlOiAoKSA9PiB7IH0sIG92ZXJsYXlFbGVtZW50IH0pXG4gIH1cblxuICBjb25zdCBleGVjdXRlT25MYXlvdXRCZWZvcmVNZWFzdXJtZW50SG9vayA9IChvcHRpb25zOiB7IG1pbmltdW1XaWR0aDogbnVtYmVyIH0pID0+IGhvb2tzJC5nZXRWYWx1ZSgpLmZvckVhY2goaG9vayA9PiB7XG4gICAgaWYgKGhvb2submFtZSA9PT0gYGl0ZW0ub25MYXlvdXRCZWZvcmVNZWFzdXJtZW50YCkge1xuICAgICAgaG9vay5mbih7XG4gICAgICAgIGZyYW1lOiBzcGluZUl0ZW1GcmFtZSxcbiAgICAgICAgY29udGFpbmVyOiBjb250YWluZXJFbGVtZW50LFxuICAgICAgICBpdGVtLFxuICAgICAgICBpc0ltYWdlVHlwZSxcbiAgICAgICAgLi4ub3B0aW9uc1xuICAgICAgfSlcbiAgICB9XG4gIH0pXG5cbiAgc3BpbmVJdGVtRnJhbWUuJC5jb250ZW50TGF5b3V0Q2hhbmdlJFxuICAgIC5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20oc3BpbmVJdGVtRnJhbWUuJC5pc1JlYWR5JCksXG4gICAgICB0YWtlVW50aWwoZGVzdHJveVN1YmplY3QkKVxuICAgIClcbiAgICAuc3Vic2NyaWJlKChbZGF0YSwgaXNSZWFkeV0pID0+IHtcbiAgICAgIGlmIChkYXRhLmlzRmlyc3RMYXlvdXQgJiYgaXNSZWFkeSkge1xuICAgICAgICBsb2FkaW5nRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gYGhpZGRlbmBcbiAgICAgIH1cbiAgICAgIGNvbnRlbnRMYXlvdXRDaGFuZ2VTdWJqZWN0JC5uZXh0KHsgaXNGaXJzdExheW91dDogZGF0YS5pc0ZpcnN0TGF5b3V0LCBpc1JlYWR5IH0pXG4gICAgfSlcblxuICBzcGluZUl0ZW1GcmFtZS4kLnVubG9hZCRcbiAgICAucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmIChsb2FkaW5nRWxlbWVudCAmJiBsb2FkaW5nRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ICE9PSBgdmlzaWJsZWApIHtcbiAgICAgICAgICBsb2FkaW5nRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gYHZpc2libGVgXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsKGRlc3Ryb3lTdWJqZWN0JClcbiAgICApXG4gICAgLnN1YnNjcmliZSgpXG5cbiAgcmV0dXJuIHtcbiAgICBsb2FkOiAoKSA9PiB7XG4gICAgICBzZXRMYXlvdXREaXJ0eSgpXG4gICAgfSxcbiAgICBsYXlvdXQsXG4gICAgYWRqdXN0UG9zaXRpb25PZkVsZW1lbnQsXG4gICAgY3JlYXRlTG9hZGluZ0VsZW1lbnQsXG4gICAgZ2V0RWxlbWVudERpbWVuc2lvbnMsXG4gICAgZ2V0SHRtbEZyb21SZXNvdXJjZTogc3BpbmVJdGVtRnJhbWUuZ2V0SHRtbEZyb21SZXNvdXJjZSxcbiAgICBnZXRSZXNvdXJjZSxcbiAgICB0cmFuc2xhdGVGcmFtZVBvc2l0aW9uSW50b1BhZ2UsXG4gICAgc2V0TGF5b3V0RGlydHksXG4gICAgaW5qZWN0U3R5bGUsXG4gICAgbG9hZENvbnRlbnQsXG4gICAgdW5sb2FkQ29udGVudCxcbiAgICBzcGluZUl0ZW1GcmFtZSxcbiAgICBlbGVtZW50OiBjb250YWluZXJFbGVtZW50LFxuICAgIGxvYWRpbmdFbGVtZW50LFxuICAgIGlzUmVmbG93YWJsZSxcbiAgICBnZXRCb3VuZGluZ1JlY3RPZkVsZW1lbnRGcm9tU2VsZWN0b3IsXG4gICAgZ2V0Vmlld1BvcnRJbmZvcm1hdGlvbixcbiAgICBpc0ltYWdlVHlwZSxcbiAgICBpc1JlYWR5OiBzcGluZUl0ZW1GcmFtZS5nZXRJc1JlYWR5LFxuICAgIGRlc3Ryb3k6ICgpID0+IHtcbiAgICAgIGRlc3Ryb3lTdWJqZWN0JC5uZXh0KClcbiAgICAgIGxvYWRpbmdFbGVtZW50Lm9ubG9hZCA9ICgpID0+IHsgfVxuICAgICAgbG9hZGluZ0VsZW1lbnQucmVtb3ZlKClcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQucmVtb3ZlKClcbiAgICAgIHNwaW5lSXRlbUZyYW1lPy5kZXN0cm95KClcbiAgICAgIGZpbmdlclRyYWNrZXIuZGVzdHJveSgpXG4gICAgICBzZWxlY3Rpb25UcmFja2VyLmRlc3Ryb3koKVxuICAgICAgZGVzdHJveVN1YmplY3QkLmNvbXBsZXRlKClcbiAgICB9LFxuICAgIGlzVXNpbmdWZXJ0aWNhbFdyaXRpbmc6ICgpID0+IHNwaW5lSXRlbUZyYW1lLmdldFdyaXRpbmdNb2RlKCk/LnN0YXJ0c1dpdGgoYHZlcnRpY2FsYCksXG4gICAgZ2V0UmVhZGluZ0RpcmVjdGlvbjogKCkgPT4ge1xuICAgICAgcmV0dXJuIHNwaW5lSXRlbUZyYW1lLmdldFJlYWRpbmdEaXJlY3Rpb24oKSB8fCBjb250ZXh0LmdldFJlYWRpbmdEaXJlY3Rpb24oKVxuICAgIH0sXG4gICAgbWFuaXB1bGF0ZVNwaW5lSXRlbSxcbiAgICBleGVjdXRlT25MYXlvdXRCZWZvcmVNZWFzdXJtZW50SG9vayxcbiAgICBzZWxlY3Rpb25UcmFja2VyLFxuICAgIGZpbmdlclRyYWNrZXIsXG4gICAgJDoge1xuICAgICAgY29udGVudExheW91dENoYW5nZVN1YmplY3QkOiBjb250ZW50TGF5b3V0Q2hhbmdlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCksXG4gICAgICBsb2FkZWQkOiBzcGluZUl0ZW1GcmFtZS4kLmxvYWRlZCRcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgY3JlYXRlQ29udGFpbmVyRWxlbWVudCA9IChjb250YWluZXJFbGVtZW50OiBIVE1MRWxlbWVudCwgaXRlbTogTWFuaWZlc3RbYHNwaW5lSXRlbXNgXVtudW1iZXJdLCBob29rcyQ6IEJlaGF2aW9yU3ViamVjdDxIb29rW10+KSA9PiB7XG4gIGNvbnN0IGVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYGRpdmApXG4gIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChgc3BpbmVJdGVtYClcbiAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGBzcGluZUl0ZW0tJHtpdGVtLnJlbmRpdGlvbkxheW91dH1gKVxuICBlbGVtZW50LnN0eWxlLmNzc1RleHQgPSBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIGBcblxuICByZXR1cm4gaG9va3MkLmdldFZhbHVlKCkucmVkdWNlKChlbGVtZW50LCBob29rKSA9PiB7XG4gICAgaWYgKGhvb2submFtZSA9PT0gYGl0ZW0ub25CZWZvcmVDb250YWluZXJDcmVhdGVkYCkge1xuICAgICAgcmV0dXJuIGhvb2suZm4oZWxlbWVudClcbiAgICB9XG5cbiAgICByZXR1cm4gZWxlbWVudFxuICB9LCBlbGVtZW50KVxufVxuXG4vKipcbiAqIFdlIHVzZSBpZnJhbWUgZm9yIGxvYWRpbmcgZWxlbWVudCBtYWlubHkgdG8gYmUgYWJsZSB0byB1c2Ugc2hhcmUgaG9va3MgLyBtYW5pcHVsYXRpb25cbiAqIHdpdGggaWZyYW1lLiBUaGF0IHdheSB0aGUgbG9hZGluZyBlbGVtZW50IGFsd2F5cyBtYXRjaCB3aGF0ZXZlciBzdHlsZSBpcyBhcHBsaWVkIHRvIGlmcmFtZS5cbiAqL1xuY29uc3QgY3JlYXRlTG9hZGluZ0VsZW1lbnQgPSAoY29udGFpbmVyRWxlbWVudDogSFRNTEVsZW1lbnQsIGl0ZW06IE1hbmlmZXN0W2BzcGluZUl0ZW1zYF1bbnVtYmVyXSwgY29udGV4dDogQ29udGV4dCkgPT4ge1xuICBjb25zdCBsb2FkaW5nRWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KGBkaXZgKVxuICBsb2FkaW5nRWxlbWVudC5jbGFzc0xpc3QuYWRkKGBsb2FkaW5nYClcbiAgbG9hZGluZ0VsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IGBcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAke2NvbnRleHQuZ2V0VmlzaWJsZUFyZWFSZWN0KCkud2lkdGh9cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYFxuXG4gIGNvbnN0IGxvZ29FbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYGRpdmApXG4gIGxvZ29FbGVtZW50LmlubmVyVGV4dCA9IGBwcm9zZWBcbiAgbG9nb0VsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IGBcbiAgICBmb250LXNpemU6IDRlbTtcbiAgICBjb2xvcjogI2NhY2FjYTtcbiAgYFxuICBjb25zdCBkZXRhaWxzRWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KGBkaXZgKVxuICBkZXRhaWxzRWxlbWVudC5pbm5lclRleHQgPSBgbG9hZGluZyAke2l0ZW0uaWR9YFxuICBkZXRhaWxzRWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gYFxuICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgY29sb3I6IHJnYigyMDIsIDIwMiwgMjAyKTtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICB3aWR0aDogODAlO1xuICBgXG4gIGxvYWRpbmdFbGVtZW50LmFwcGVuZENoaWxkKGxvZ29FbGVtZW50KVxuICBsb2FkaW5nRWxlbWVudC5hcHBlbmRDaGlsZChkZXRhaWxzRWxlbWVudClcblxuICByZXR1cm4gbG9hZGluZ0VsZW1lbnRcbn1cblxuY29uc3QgY3JlYXRlT3ZlcmxheUVsZW1lbnQgPSAoY29udGFpbmVyRWxlbWVudDogSFRNTEVsZW1lbnQsIGl0ZW06IE1hbmlmZXN0W2BzcGluZUl0ZW1zYF1bbnVtYmVyXSkgPT4ge1xuICBjb25zdCBlbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYGRpdmApXG4gIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChgc3BpbmVJdGVtT3ZlcmxheWApXG4gIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChgc3BpbmVJdGVtT3ZlcmxheS0ke2l0ZW0ucmVuZGl0aW9uTGF5b3V0fWApXG4gIGVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IGBcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBgXG5cbiAgcmV0dXJuIGVsZW1lbnRcbn1cblxuY29uc3QgY3JlYXRlRnJhbWVIb29rcyA9IChpZnJhbWVFdmVudEJyaWRnZUVsZW1lbnQ6IEhUTUxFbGVtZW50LCBmaW5nZXJUcmFja2VyOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVGaW5nZXJUcmFja2VyPiwgc2VsZWN0aW9uVHJhY2tlcjogUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlU2VsZWN0aW9uVHJhY2tlcj4pOiBIb29rW10gPT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIG5hbWU6IGBpdGVtLm9uTG9hZGAsXG4gICAgICBmbjogKHsgZnJhbWUgfSkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogUmVnaXN0ZXIgZXZlbnQgbGlzdGVuZXIgZm9yIGFsbCBtb3VzZS9wb2ludGVyIGV2ZW50IGluIG9yZGVyIHRvXG4gICAgICAgICAqIHBhc3N0aHJvdWdoIGV2ZW50cyB0byBtYWluIGRvY3VtZW50XG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCB1bnJlZ2lzdGVyID0gcGFzc3Rocm91Z2hFdmVudHMubWFwKGV2ZW50ID0+IHtcbiAgICAgICAgICBjb25zdCBsaXN0ZW5lciA9IChlOiBNb3VzZUV2ZW50IHwgUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICBsZXQgY29udmVydGVkRXZlbnQgPSBlXG5cbiAgICAgICAgICAgIGlmIChpc1BvaW50ZXJFdmVudChlKSkge1xuICAgICAgICAgICAgICBjb252ZXJ0ZWRFdmVudCA9IG5ldyBQb2ludGVyRXZlbnQoZS50eXBlLCBlKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNNb3VzZUV2ZW50KGUpKSB7XG4gICAgICAgICAgICAgIGNvbnZlcnRlZEV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoZS50eXBlLCBlKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY29udmVydGVkRXZlbnQgIT09IGUpIHtcbiAgICAgICAgICAgICAgYXR0YWNoT3JpZ2luYWxGcmFtZUV2ZW50VG9Eb2N1bWVudEV2ZW50KGNvbnZlcnRlZEV2ZW50LCBlKVxuICAgICAgICAgICAgICBpZnJhbWVFdmVudEJyaWRnZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChjb252ZXJ0ZWRFdmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmcmFtZS5jb250ZW50RG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGxpc3RlbmVyKVxuXG4gICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGZyYW1lLmNvbnRlbnREb2N1bWVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgbGlzdGVuZXIpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHNlbGVjdGlvblRyYWNrZXIudHJhY2soZnJhbWUpXG4gICAgICAgIGZpbmdlclRyYWNrZXIudHJhY2soZnJhbWUpXG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICB1bnJlZ2lzdGVyLmZvckVhY2goY2IgPT4gY2IoKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgXVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/spineItem/commonSpineItem.ts\n");
|
|
410
|
+
|
|
411
|
+
/***/ }),
|
|
412
|
+
|
|
413
|
+
/***/ "./src/spineItem/createSpineItem.ts":
|
|
414
|
+
/*!******************************************!*\
|
|
415
|
+
!*** ./src/spineItem/createSpineItem.ts ***!
|
|
416
|
+
\******************************************/
|
|
417
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
418
|
+
|
|
419
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createSpineItem\": () => (/* binding */ createSpineItem)\n/* harmony export */ });\n/* harmony import */ var _prePaginatedSpineItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./prePaginatedSpineItem */ \"./src/spineItem/prePaginatedSpineItem.ts\");\n/* harmony import */ var _reflowableSpineItem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reflowableSpineItem */ \"./src/spineItem/reflowableSpineItem.ts\");\n\n\nconst createSpineItem = ({ item, context, containerElement, iframeEventBridgeElement, hooks$, viewportState$ }) => {\n let spineItem;\n if (item.renditionLayout === `pre-paginated`) {\n spineItem = (0,_prePaginatedSpineItem__WEBPACK_IMPORTED_MODULE_0__.createPrePaginatedSpineItem)({ item, context, containerElement, iframeEventBridgeElement, hooks$, viewportState$ });\n }\n else {\n spineItem = (0,_reflowableSpineItem__WEBPACK_IMPORTED_MODULE_1__.createReflowableSpineItem)({ item, context, containerElement, iframeEventBridgeElement, hooks$, viewportState$ });\n }\n return Object.assign({ item }, spineItem);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3BpbmVJdGVtL2NyZWF0ZVNwaW5lSXRlbS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFJcUU7QUFDSjtBQU0xRCxNQUFNLGVBQWUsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQU9qSCxFQUFFLEVBQUU7SUFDSixJQUFJLFNBQXdHO0lBRTVHLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxlQUFlLEVBQUU7UUFDNUMsU0FBUyxHQUFHLG1GQUEyQixDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUM7S0FDL0g7U0FBTTtRQUNMLFNBQVMsR0FBRywrRUFBeUIsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxDQUFDO0tBQzdIO0lBRUQsdUJBQ0UsSUFBSSxJQUNELFNBQVMsRUFDYjtBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvc3BpbmVJdGVtL2NyZWF0ZVNwaW5lSXRlbS50cz9iNTQ2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCJcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi4vY29udGV4dFwiXG5pbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gXCIuLi90eXBlc1wiXG5pbXBvcnQgeyBIb29rIH0gZnJvbSBcIi4uL3R5cGVzL0hvb2tcIlxuaW1wb3J0IHsgY3JlYXRlUHJlUGFnaW5hdGVkU3BpbmVJdGVtIH0gZnJvbSBcIi4vcHJlUGFnaW5hdGVkU3BpbmVJdGVtXCJcbmltcG9ydCB7IGNyZWF0ZVJlZmxvd2FibGVTcGluZUl0ZW0gfSBmcm9tIFwiLi9yZWZsb3dhYmxlU3BpbmVJdGVtXCJcblxuZXhwb3J0IHR5cGUgU3BpbmVJdGVtID0ge1xuICBpdGVtOiBNYW5pZmVzdFtgc3BpbmVJdGVtc2BdW251bWJlcl0sXG59ICYgKFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZVByZVBhZ2luYXRlZFNwaW5lSXRlbT4gfCBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVSZWZsb3dhYmxlU3BpbmVJdGVtPilcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNwaW5lSXRlbSA9ICh7IGl0ZW0sIGNvbnRleHQsIGNvbnRhaW5lckVsZW1lbnQsIGlmcmFtZUV2ZW50QnJpZGdlRWxlbWVudCwgaG9va3MkLCB2aWV3cG9ydFN0YXRlJCB9OiB7XG4gIGl0ZW06IE1hbmlmZXN0W2BzcGluZUl0ZW1zYF1bbnVtYmVyXSxcbiAgY29udGFpbmVyRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGlmcmFtZUV2ZW50QnJpZGdlRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGNvbnRleHQ6IENvbnRleHQsXG4gIGhvb2tzJDogQmVoYXZpb3JTdWJqZWN0PEhvb2tbXT4sXG4gIHZpZXdwb3J0U3RhdGUkOiBPYnNlcnZhYmxlPGBmcmVlYCB8IGBidXN5YD5cbiB9KSA9PiB7XG4gIGxldCBzcGluZUl0ZW06IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZVByZVBhZ2luYXRlZFNwaW5lSXRlbT4gfCBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVSZWZsb3dhYmxlU3BpbmVJdGVtPlxuXG4gIGlmIChpdGVtLnJlbmRpdGlvbkxheW91dCA9PT0gYHByZS1wYWdpbmF0ZWRgKSB7XG4gICAgc3BpbmVJdGVtID0gY3JlYXRlUHJlUGFnaW5hdGVkU3BpbmVJdGVtKHsgaXRlbSwgY29udGV4dCwgY29udGFpbmVyRWxlbWVudCwgaWZyYW1lRXZlbnRCcmlkZ2VFbGVtZW50LCBob29rcyQsIHZpZXdwb3J0U3RhdGUkIH0pXG4gIH0gZWxzZSB7XG4gICAgc3BpbmVJdGVtID0gY3JlYXRlUmVmbG93YWJsZVNwaW5lSXRlbSh7IGl0ZW0sIGNvbnRleHQsIGNvbnRhaW5lckVsZW1lbnQsIGlmcmFtZUV2ZW50QnJpZGdlRWxlbWVudCwgaG9va3MkLCB2aWV3cG9ydFN0YXRlJCB9KVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBpdGVtLFxuICAgIC4uLnNwaW5lSXRlbVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/spineItem/createSpineItem.ts\n");
|
|
420
|
+
|
|
421
|
+
/***/ }),
|
|
422
|
+
|
|
423
|
+
/***/ "./src/spineItem/frameItem/createFrame$.ts":
|
|
424
|
+
/*!*************************************************!*\
|
|
425
|
+
!*** ./src/spineItem/frameItem/createFrame$.ts ***!
|
|
426
|
+
\*************************************************/
|
|
427
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
428
|
+
|
|
429
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createFrame$\": () => (/* binding */ createFrame$)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../report */ \"./src/report.ts\");\n\n\nconst createFrame$ = _report__WEBPACK_IMPORTED_MODULE_1__.Report.measurePerformance(`SpineItemFrame createFrame`, Infinity, () => {\n const frame = document.createElement(`iframe`);\n frame.frameBorder = `no`;\n frame.tabIndex = 0;\n frame.setAttribute(`sandbox`, `allow-same-origin allow-scripts`);\n frame.scrolling = `no`;\n frame.style.cssText = `\n visibility: hidden;\n overflow: hidden;\n background-color: transparent;\n border: 0px none transparent;\n padding: 0px;\n transition: opacity 300ms;\n opacity: 0;\n `;\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.of)(frame);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3BpbmVJdGVtL2ZyYW1lSXRlbS9jcmVhdGVGcmFtZSQudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF5QjtBQUNZO0FBRTlCLE1BQU0sWUFBWSxHQUFHLDhEQUF5QixDQUFDLDRCQUE0QixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7SUFHakcsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDOUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJO0lBQ3hCLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQztJQUNsQixLQUFLLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxpQ0FBaUMsQ0FBQztJQUNoRSxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUk7SUFDdEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUc7Ozs7Ozs7O0dBUXJCO0lBRUQsT0FBTyx3Q0FBRSxDQUFDLEtBQUssQ0FBQztBQUNsQixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvc3BpbmVJdGVtL2ZyYW1lSXRlbS9jcmVhdGVGcmFtZSQudHM/ODk1NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvZiB9IGZyb20gXCJyeGpzXCJcbmltcG9ydCB7IFJlcG9ydCB9IGZyb20gXCIuLi8uLi9yZXBvcnRcIlxuXG5leHBvcnQgY29uc3QgY3JlYXRlRnJhbWUkID0gUmVwb3J0Lm1lYXN1cmVQZXJmb3JtYW5jZShgU3BpbmVJdGVtRnJhbWUgY3JlYXRlRnJhbWVgLCBJbmZpbml0eSwgKCkgPT4ge1xuICAvLyB3ZSBmb3JjZSB1bmRlZmluZWQgYmVjYXVzZSBvdGhlcndpc2UgdGhlIGxvYWQgbWV0aG9kIHdpbGwgYmVsaWV2ZSBpdCdzIGRlZmluZWQgYWZ0ZXIgdGhpcyBjYWxsIGJ1dCB0aGUgY29kZSBpcyBhc3luYyBhbmRcbiAgLy8gdGhlIGlmcmFtZSBjb3VsZCBiZSB1bmRlZmluZWQgbGF0ZXJcbiAgY29uc3QgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGBpZnJhbWVgKVxuICBmcmFtZS5mcmFtZUJvcmRlciA9IGBub2BcbiAgZnJhbWUudGFiSW5kZXggPSAwXG4gIGZyYW1lLnNldEF0dHJpYnV0ZShgc2FuZGJveGAsIGBhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1zY3JpcHRzYClcbiAgZnJhbWUuc2Nyb2xsaW5nID0gYG5vYFxuICBmcmFtZS5zdHlsZS5jc3NUZXh0ID0gYFxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMHB4IG5vbmUgdHJhbnNwYXJlbnQ7XG4gICAgcGFkZGluZzogMHB4O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMzAwbXM7XG4gICAgb3BhY2l0eTogMDtcbiAgYFxuXG4gIHJldHVybiBvZihmcmFtZSlcbn0pXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/spineItem/frameItem/createFrame$.ts\n");
|
|
430
|
+
|
|
431
|
+
/***/ }),
|
|
432
|
+
|
|
433
|
+
/***/ "./src/spineItem/frameItem/createFrameManipulator.ts":
|
|
434
|
+
/*!***********************************************************!*\
|
|
435
|
+
!*** ./src/spineItem/frameItem/createFrameManipulator.ts ***!
|
|
436
|
+
\***********************************************************/
|
|
437
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
438
|
+
|
|
439
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createFrameManipulator\": () => (/* binding */ createFrameManipulator)\n/* harmony export */ });\n/* harmony import */ var _frames__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../frames */ \"./src/frames.ts\");\n\nconst createFrameManipulator = (frameElement) => ({\n frame: frameElement,\n removeStyle: (0,_frames__WEBPACK_IMPORTED_MODULE_0__.createRemoveStyleHelper)(frameElement),\n addStyle: (0,_frames__WEBPACK_IMPORTED_MODULE_0__.createAddStyleHelper)(frameElement)\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3BpbmVJdGVtL2ZyYW1lSXRlbS9jcmVhdGVGcmFtZU1hbmlwdWxhdG9yLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTRFO0FBRXJFLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxZQUErQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLEtBQUssRUFBRSxZQUFZO0lBQ25CLFdBQVcsRUFBRSxnRUFBdUIsQ0FBQyxZQUFZLENBQUM7SUFDbEQsUUFBUSxFQUFFLDZEQUFvQixDQUFDLFlBQVksQ0FBQztDQUM3QyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL3NwaW5lSXRlbS9mcmFtZUl0ZW0vY3JlYXRlRnJhbWVNYW5pcHVsYXRvci50cz84YjJhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUFkZFN0eWxlSGVscGVyLCBjcmVhdGVSZW1vdmVTdHlsZUhlbHBlciB9IGZyb20gXCIuLi8uLi9mcmFtZXNcIlxuXG5leHBvcnQgY29uc3QgY3JlYXRlRnJhbWVNYW5pcHVsYXRvciA9IChmcmFtZUVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50KSA9PiAoe1xuICBmcmFtZTogZnJhbWVFbGVtZW50LFxuICByZW1vdmVTdHlsZTogY3JlYXRlUmVtb3ZlU3R5bGVIZWxwZXIoZnJhbWVFbGVtZW50KSxcbiAgYWRkU3R5bGU6IGNyZWF0ZUFkZFN0eWxlSGVscGVyKGZyYW1lRWxlbWVudClcbn0pXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/spineItem/frameItem/createFrameManipulator.ts\n");
|
|
440
|
+
|
|
441
|
+
/***/ }),
|
|
442
|
+
|
|
443
|
+
/***/ "./src/spineItem/frameItem/createHtmlPageFromResource.ts":
|
|
444
|
+
/*!***************************************************************!*\
|
|
445
|
+
!*** ./src/spineItem/frameItem/createHtmlPageFromResource.ts ***!
|
|
446
|
+
\***************************************************************/
|
|
447
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
448
|
+
|
|
449
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createHtmlPageFromResource\": () => (/* binding */ createHtmlPageFromResource)\n/* harmony export */ });\n/* harmony import */ var _utils_contentType__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/contentType */ \"./src/utils/contentType.ts\");\n/* harmony import */ var _utils_objects__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/objects */ \"./src/utils/objects.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\nconst createHtmlPageFromResource = (resourceResponse, item) => __awaiter(void 0, void 0, void 0, function* () {\n if (typeof resourceResponse === `string`)\n return resourceResponse;\n const contentType = (0,_utils_contentType__WEBPACK_IMPORTED_MODULE_0__.parseContentType)(resourceResponse.headers.get(`Content-Type`) || ``) || (0,_utils_contentType__WEBPACK_IMPORTED_MODULE_0__.detectContentType)(item.href);\n if ([`image/jpg`, `image/jpeg`, `image/png`, `image/webp`].some(mime => mime === contentType)) {\n const data = yield (0,_utils_objects__WEBPACK_IMPORTED_MODULE_1__.getBase64FromBlob)(yield resourceResponse.blob());\n return `\n <html>\n <head>\n <meta name=\"viewport\" content=\"width=device-width, minimum-scale=0.1\">\n </head>\n <body style=\"margin: 0px;\" tab-index=\"-1;\">\n <img\n src=\"${data}\"\n style=\"max-width: 100%;height:100%;object-fit:contain;\"\n >\n </body>\n </html>\n `;\n }\n if ([`text/plain`].some(mime => mime === contentType)) {\n const data = yield resourceResponse.text();\n return `\n <!DOCTYPE html>\n <html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:epub=\"http://www.idpf.org/2007/ops\" xml:lang=\"en\" lang=\"en\">\n <head>\n <style>\n pre {\n white-space: pre;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n </style>\n </head>\n <body>\n <pre>${data}</pre>\n </body>\n </html>\n `;\n }\n const content = yield resourceResponse.text();\n return content;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3BpbmVJdGVtL2ZyYW1lSXRlbS9jcmVhdGVIdG1sUGFnZUZyb21SZXNvdXJjZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFDNkU7QUFDdEI7QUFLaEQsTUFBTSwwQkFBMEIsR0FBRyxDQUFPLGdCQUFtQyxFQUFFLElBQW9DLEVBQUUsRUFBRTtJQUM1SCxJQUFJLE9BQU8sZ0JBQWdCLEtBQUssUUFBUTtRQUFFLE9BQU8sZ0JBQWdCO0lBRWpFLE1BQU0sV0FBVyxHQUFHLG9FQUFnQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUkscUVBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUV4SCxJQUFJLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxFQUFFO1FBQzdGLE1BQU0sSUFBSSxHQUFHLE1BQU0saUVBQWlCLENBQUMsTUFBTSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVuRSxPQUFPOzs7Ozs7O21CQU9RLElBQUk7Ozs7O1NBS2Q7S0FDTjtJQUVELElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEVBQUU7UUFDckQsTUFBTSxJQUFJLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7UUFFMUMsT0FBTzs7Ozs7Ozs7Ozs7OztpQkFhTSxJQUFJOzs7S0FHaEI7S0FDRjtJQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsSUFBSSxFQUFFO0lBSTdDLE9BQU8sT0FBTztBQUNoQixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL3NwaW5lSXRlbS9mcmFtZUl0ZW0vY3JlYXRlSHRtbFBhZ2VGcm9tUmVzb3VyY2UudHM/YmY0NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gXCIuLi8uLi90eXBlc1wiXG5pbXBvcnQgeyBkZXRlY3RDb250ZW50VHlwZSwgcGFyc2VDb250ZW50VHlwZSB9IGZyb20gXCIuLi8uLi91dGlscy9jb250ZW50VHlwZVwiXG5pbXBvcnQgeyBnZXRCYXNlNjRGcm9tQmxvYiB9IGZyb20gXCIuLi8uLi91dGlscy9vYmplY3RzXCJcblxuLyoqXG4gKiBEb2N1bWVudCBpcyBhcHBsaWNhdGlvbi94aHRtbCt4bWxcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUh0bWxQYWdlRnJvbVJlc291cmNlID0gYXN5bmMgKHJlc291cmNlUmVzcG9uc2U6IFJlc3BvbnNlIHwgc3RyaW5nLCBpdGVtOiBNYW5pZmVzdFtgc3BpbmVJdGVtc2BdW251bWJlcl0pID0+IHtcbiAgaWYgKHR5cGVvZiByZXNvdXJjZVJlc3BvbnNlID09PSBgc3RyaW5nYCkgcmV0dXJuIHJlc291cmNlUmVzcG9uc2VcblxuICBjb25zdCBjb250ZW50VHlwZSA9IHBhcnNlQ29udGVudFR5cGUocmVzb3VyY2VSZXNwb25zZS5oZWFkZXJzLmdldChgQ29udGVudC1UeXBlYCkgfHwgYGApIHx8IGRldGVjdENvbnRlbnRUeXBlKGl0ZW0uaHJlZilcblxuICBpZiAoW2BpbWFnZS9qcGdgLCBgaW1hZ2UvanBlZ2AsIGBpbWFnZS9wbmdgLCBgaW1hZ2Uvd2VicGBdLnNvbWUobWltZSA9PiBtaW1lID09PSBjb250ZW50VHlwZSkpIHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0QmFzZTY0RnJvbUJsb2IoYXdhaXQgcmVzb3VyY2VSZXNwb25zZS5ibG9iKCkpXG5cbiAgICByZXR1cm4gYFxuICAgICAgPGh0bWw+XG4gICAgICAgIDxoZWFkPlxuICAgICAgICAgIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIG1pbmltdW0tc2NhbGU9MC4xXCI+XG4gICAgICAgIDwvaGVhZD5cbiAgICAgICAgPGJvZHkgc3R5bGU9XCJtYXJnaW46IDBweDtcIiB0YWItaW5kZXg9XCItMTtcIj5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBzcmM9XCIke2RhdGF9XCJcbiAgICAgICAgICAgIHN0eWxlPVwibWF4LXdpZHRoOiAxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y29udGFpbjtcIlxuICAgICAgICAgID5cbiAgICAgICAgPC9ib2R5PlxuICAgICAgPC9odG1sPlxuICAgICAgICBgXG4gIH1cblxuICBpZiAoW2B0ZXh0L3BsYWluYF0uc29tZShtaW1lID0+IG1pbWUgPT09IGNvbnRlbnRUeXBlKSkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNvdXJjZVJlc3BvbnNlLnRleHQoKVxuXG4gICAgcmV0dXJuIGBcbiAgICAgIDwhRE9DVFlQRSBodG1sPlxuICAgICAgPGh0bWwgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIgeG1sbnM6ZXB1Yj1cImh0dHA6Ly93d3cuaWRwZi5vcmcvMjAwNy9vcHNcIiB4bWw6bGFuZz1cImVuXCIgbGFuZz1cImVuXCI+XG4gICAgICAgIDxoZWFkPlxuICAgICAgICAgIDxzdHlsZT5cbiAgICAgICAgICAgIHByZSB7XG4gICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBwcmU7XG4gICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc3R5bGU+XG4gICAgICAgIDwvaGVhZD5cbiAgICAgICAgPGJvZHk+XG4gICAgICAgICAgPHByZT4ke2RhdGF9PC9wcmU+XG4gICAgICAgIDwvYm9keT5cbiAgICAgIDwvaHRtbD5cbiAgICBgXG4gIH1cblxuICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVzb3VyY2VSZXNwb25zZS50ZXh0KClcblxuICAvLyByZXR1cm4gY29udGVudC5yZXBsYWNlKGA8aGVhZD5gLCBgPGhlYWQ+PGJhc2UgeG1sbnMgaHJlZj1cIiR7aXRlbS5ocmVmfVwiIC8+YClcblxuICByZXR1cm4gY29udGVudFxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/spineItem/frameItem/createHtmlPageFromResource.ts\n");
|
|
450
|
+
|
|
451
|
+
/***/ }),
|
|
452
|
+
|
|
453
|
+
/***/ "./src/spineItem/frameItem/frameItem.ts":
|
|
454
|
+
/*!**********************************************!*\
|
|
455
|
+
!*** ./src/spineItem/frameItem/frameItem.ts ***!
|
|
456
|
+
\**********************************************/
|
|
457
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
458
|
+
|
|
459
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createFrameItem\": () => (/* binding */ createFrameItem)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _frames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../frames */ \"./src/frames.ts\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _loader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./loader */ \"./src/spineItem/frameItem/loader.ts\");\n/* harmony import */ var _createFrameManipulator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createFrameManipulator */ \"./src/spineItem/frameItem/createFrameManipulator.ts\");\n/* harmony import */ var _createHtmlPageFromResource__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createHtmlPageFromResource */ \"./src/spineItem/frameItem/createHtmlPageFromResource.ts\");\n\n\n\n\n\n\nconst createFrameItem = ({ item, parent, fetchResource, context, hooks$, viewportState$ }) => {\n const destroySubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const { $: { unload$, loaded$, isLoaded$, isReady$, unloaded$, frameElement$, ready$ }, load, unload, destroy: loaderDestroy, getComputedStyleAfterLoad } = (0,_loader__WEBPACK_IMPORTED_MODULE_3__.createLoader)({ context, hooks$, item, parent, fetchResource, viewportState$ });\n const isLoadedSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject(false);\n const isReadySubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject(false);\n isLoaded$.subscribe(isLoadedSubject$);\n isReady$.subscribe(isReadySubject$);\n const getManipulableFrame = () => {\n const frame = frameElement$.getValue();\n if (isLoadedSubject$.value && frame) {\n return (0,_createFrameManipulator__WEBPACK_IMPORTED_MODULE_4__.createFrameManipulator)(frame);\n }\n };\n const getViewportDimensions = () => {\n const frame = frameElement$.getValue();\n if (frame && (frame === null || frame === void 0 ? void 0 : frame.contentDocument)) {\n const doc = frame.contentDocument;\n const viewPortMeta = doc.querySelector(`meta[name='viewport']`);\n if (viewPortMeta) {\n const viewPortMetaInfos = viewPortMeta.getAttribute(`content`);\n if (viewPortMetaInfos) {\n const width = (0,_frames__WEBPACK_IMPORTED_MODULE_1__.getAttributeValueFromString)(viewPortMetaInfos, `width`);\n const height = (0,_frames__WEBPACK_IMPORTED_MODULE_1__.getAttributeValueFromString)(viewPortMetaInfos, `height`);\n if (width > 0 && height > 0) {\n return {\n width: width,\n height: height\n };\n }\n else {\n return undefined;\n }\n }\n }\n }\n return undefined;\n };\n const getWritingMode = () => {\n var _a;\n return (_a = getComputedStyleAfterLoad()) === null || _a === void 0 ? void 0 : _a.writingMode;\n };\n const isUsingVerticalWriting = () => {\n var _a;\n return !!((_a = getWritingMode()) === null || _a === void 0 ? void 0 : _a.startsWith(`vertical`));\n };\n const getHtmlFromResource = (response) => {\n return (0,_createHtmlPageFromResource__WEBPACK_IMPORTED_MODULE_5__.createHtmlPageFromResource)(response, item);\n };\n const contentLayoutChange$ = (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.merge)(unloaded$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_2__.map)(() => ({ isFirstLayout: false }))), ready$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_2__.map)(() => ({ isFirstLayout: true }))));\n const destroy = () => {\n unload();\n loaderDestroy();\n destroySubject$.next();\n destroySubject$.complete();\n };\n return {\n getIsLoaded: () => isLoadedSubject$.value,\n getIsReady: () => isReadySubject$.value,\n getViewportDimensions,\n getFrameElement: () => frameElement$.getValue(),\n getHtmlFromResource,\n load,\n unload,\n staticLayout: (size) => {\n const frame = frameElement$.getValue();\n if (frame) {\n frame.style.width = `${size.width}px`;\n frame.style.height = `${size.height}px`;\n if (context.getSettings().computedPageTurnMode !== `scrollable`) {\n frame.setAttribute(`tab-index`, `0`);\n }\n }\n },\n getManipulableFrame,\n getReadingDirection: () => {\n var _a;\n const writingMode = getWritingMode();\n if (writingMode === `vertical-rl`) {\n return `rtl`;\n }\n const direction = (_a = getComputedStyleAfterLoad()) === null || _a === void 0 ? void 0 : _a.direction;\n if ([`ltr`, `rtl`].includes(direction || ``))\n return direction;\n return undefined;\n },\n isUsingVerticalWriting,\n getWritingMode,\n destroy,\n $: {\n unload$: unload$,\n unloaded$: unloaded$,\n loaded$,\n ready$,\n isReady$: isReadySubject$.asObservable(),\n contentLayoutChange$\n }\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3BpbmVJdGVtL2ZyYW1lSXRlbS9mcmFtZUl0ZW0udHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQWtFO0FBR1I7QUFFdEI7QUFDRztBQUMwQjtBQUNRO0FBRWxFLE1BQU0sZUFBZSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFPN0YsRUFBRSxFQUFFO0lBQ0gsTUFBTSxlQUFlLEdBQUcsSUFBSSx5Q0FBTyxFQUFRO0lBRTNDLE1BQU0sRUFDSixDQUFDLEVBQUUsRUFDRCxPQUFPLEVBQ1AsT0FBTyxFQUNQLFNBQVMsRUFDVCxRQUFRLEVBQ1IsU0FBUyxFQUNULGFBQWEsRUFDYixNQUFNLEVBQ1AsRUFDRCxJQUFJLEVBQ0osTUFBTSxFQUNOLE9BQU8sRUFBRSxhQUFhLEVBQ3RCLHlCQUF5QixFQUMxQixHQUFHLHFEQUFZLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxDQUFDO0lBRWxGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxpREFBZSxDQUFDLEtBQUssQ0FBQztJQUNuRCxNQUFNLGVBQWUsR0FBRyxJQUFJLGlEQUFlLENBQUMsS0FBSyxDQUFDO0lBRWxELFNBQVMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7SUFDckMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7SUFFbkMsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLEVBQUU7UUFDL0IsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRTtRQUN0QyxJQUFJLGdCQUFnQixDQUFDLEtBQUssSUFBSSxLQUFLLEVBQUU7WUFDbkMsT0FBTywrRUFBc0IsQ0FBQyxLQUFLLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBR0QsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLEVBQUU7UUFDakMsTUFBTSxLQUFLLEdBQUcsYUFBYSxD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R0FBRyxjQUFjLEVBQUU7WUFDcEMsSUFBSSxXQUFXLEtBQUssYUFBYSxFQUFFO2dCQUNqQyxPQUFPLEtBQUs7YUFDYjtZQUVELE1BQU0sU0FBUyxHQUFHLCtCQUF5QixFQUFFLDBDQUFFLFNBQVM7WUFDeEQsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztnQkFBRSxPQUFPLFNBQTRCO1lBRWpGLE9BQU8sU0FBUztRQUNsQixDQUFDO1FBQ0Qsc0JBQXNCO1FBQ3RCLGNBQWM7UUFDZCxPQUFPO1FBQ1AsQ0FBQyxFQUFFO1lBQ0QsT0FBTyxFQUFFLE9BQU87WUFDaEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsT0FBTztZQUNQLE1BQU07WUFDTixRQUFRLEVBQUUsZUFBZSxDQUFDLFlBQVksRUFBRTtZQUt4QyxvQkFBb0I7U0FDckI7S0FDRjtBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvc3BpbmVJdGVtL2ZyYW1lSXRlbS9mcmFtZUl0ZW0udHM/MWZhYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIlxuaW1wb3J0IHsgTWFuaWZlc3QgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi8uLi9jb250ZXh0XCJcbmltcG9ydCB7IGdldEF0dHJpYnV0ZVZhbHVlRnJvbVN0cmluZyB9IGZyb20gXCIuLi8uLi9mcmFtZXNcIlxuaW1wb3J0IHsgSG9vayB9IGZyb20gXCIuLi8uLi90eXBlcy9Ib29rXCJcbmltcG9ydCB7IG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiXG5pbXBvcnQgeyBjcmVhdGVMb2FkZXIgfSBmcm9tIFwiLi9sb2FkZXJcIlxuaW1wb3J0IHsgY3JlYXRlRnJhbWVNYW5pcHVsYXRvciB9IGZyb20gXCIuL2NyZWF0ZUZyYW1lTWFuaXB1bGF0b3JcIlxuaW1wb3J0IHsgY3JlYXRlSHRtbFBhZ2VGcm9tUmVzb3VyY2UgfSBmcm9tIFwiLi9jcmVhdGVIdG1sUGFnZUZyb21SZXNvdXJjZVwiXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVGcmFtZUl0ZW0gPSAoeyBpdGVtLCBwYXJlbnQsIGZldGNoUmVzb3VyY2UsIGNvbnRleHQsIGhvb2tzJCwgdmlld3BvcnRTdGF0ZSQgfToge1xuICBwYXJlbnQ6IEhUTUxFbGVtZW50LFxuICBpdGVtOiBNYW5pZmVzdFtgc3BpbmVJdGVtc2BdW251bWJlcl0sXG4gIGNvbnRleHQ6IENvbnRleHQsXG4gIGZldGNoUmVzb3VyY2U/OiAoaXRlbTogTWFuaWZlc3RbYHNwaW5lSXRlbXNgXVtudW1iZXJdKSA9PiBQcm9taXNlPFJlc3BvbnNlPixcbiAgaG9va3MkOiBPYnNlcnZhYmxlPEhvb2tbXT4sXG4gIHZpZXdwb3J0U3RhdGUkOiBPYnNlcnZhYmxlPGBmcmVlYCB8IGBidXN5YD5cbn0pID0+IHtcbiAgY29uc3QgZGVzdHJveVN1YmplY3QkID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gIGNvbnN0IHtcbiAgICAkOiB7XG4gICAgICB1bmxvYWQkLFxuICAgICAgbG9hZGVkJCxcbiAgICAgIGlzTG9hZGVkJCxcbiAgICAgIGlzUmVhZHkkLFxuICAgICAgdW5sb2FkZWQkLFxuICAgICAgZnJhbWVFbGVtZW50JCxcbiAgICAgIHJlYWR5JFxuICAgIH0sXG4gICAgbG9hZCxcbiAgICB1bmxvYWQsXG4gICAgZGVzdHJveTogbG9hZGVyRGVzdHJveSxcbiAgICBnZXRDb21wdXRlZFN0eWxlQWZ0ZXJMb2FkXG4gIH0gPSBjcmVhdGVMb2FkZXIoeyBjb250ZXh0LCBob29rcyQsIGl0ZW0sIHBhcmVudCwgZmV0Y2hSZXNvdXJjZSwgdmlld3BvcnRTdGF0ZSQgfSlcblxuICBjb25zdCBpc0xvYWRlZFN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSlcbiAgY29uc3QgaXNSZWFkeVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSlcblxuICBpc0xvYWRlZCQuc3Vic2NyaWJlKGlzTG9hZGVkU3ViamVjdCQpXG4gIGlzUmVhZHkkLnN1YnNjcmliZShpc1JlYWR5U3ViamVjdCQpXG5cbiAgY29uc3QgZ2V0TWFuaXB1bGFibGVGcmFtZSA9ICgpID0+IHtcbiAgICBjb25zdCBmcmFtZSA9IGZyYW1lRWxlbWVudCQuZ2V0VmFsdWUoKVxuICAgIGlmIChpc0xvYWRlZFN1YmplY3QkLnZhbHVlICYmIGZyYW1lKSB7XG4gICAgICByZXR1cm4gY3JlYXRlRnJhbWVNYW5pcHVsYXRvcihmcmFtZSlcbiAgICB9XG4gIH1cblxuICAvLyBAdG9kbyBtZW1vaXplXG4gIGNvbnN0IGdldFZpZXdwb3J0RGltZW5zaW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBmcmFtZSA9IGZyYW1lRWxlbWVudCQuZ2V0VmFsdWUoKVxuXG4gICAgaWYgKGZyYW1lICYmIGZyYW1lPy5jb250ZW50RG9jdW1lbnQpIHtcbiAgICAgIGNvbnN0IGRvYyA9IGZyYW1lLmNvbnRlbnREb2N1bWVudFxuICAgICAgY29uc3Qgdmlld1BvcnRNZXRhID0gZG9jLnF1ZXJ5U2VsZWN0b3IoYG1ldGFbbmFtZT0ndmlld3BvcnQnXWApXG4gICAgICBpZiAodmlld1BvcnRNZXRhKSB7XG4gICAgICAgIGNvbnN0IHZpZXdQb3J0TWV0YUluZm9zID0gdmlld1BvcnRNZXRhLmdldEF0dHJpYnV0ZShgY29udGVudGApXG4gICAgICAgIGlmICh2aWV3UG9ydE1ldGFJbmZvcykge1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gZ2V0QXR0cmlidXRlVmFsdWVGcm9tU3RyaW5nKHZpZXdQb3J0TWV0YUluZm9zLCBgd2lkdGhgKVxuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGdldEF0dHJpYnV0ZVZhbHVlRnJvbVN0cmluZyh2aWV3UG9ydE1ldGFJbmZvcywgYGhlaWdodGApXG4gICAgICAgICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBjb25zdCBnZXRXcml0aW5nTW9kZSA9ICgpID0+IHtcbiAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZUFmdGVyTG9hZCgpPy53cml0aW5nTW9kZSBhcyBgdmVydGljYWwtcmxgIHwgYGhvcml6b250YWwtdGJgIHwgdW5kZWZpbmVkXG4gIH1cblxuICBjb25zdCBpc1VzaW5nVmVydGljYWxXcml0aW5nID0gKCkgPT4ge1xuICAgIHJldHVybiAhIWdldFdyaXRpbmdNb2RlKCk/LnN0YXJ0c1dpdGgoYHZlcnRpY2FsYClcbiAgfVxuXG4gIGNvbnN0IGdldEh0bWxGcm9tUmVzb3VyY2UgPSAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgcmV0dXJuIGNyZWF0ZUh0bWxQYWdlRnJvbVJlc291cmNlKHJlc3BvbnNlLCBpdGVtKVxuICB9XG5cbiAgY29uc3QgY29udGVudExheW91dENoYW5nZSQgPSBtZXJnZShcbiAgICB1bmxvYWRlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4gKHsgaXNGaXJzdExheW91dDogZmFsc2UgfSkpXG4gICAgICApLFxuICAgIHJlYWR5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiAoeyBpc0ZpcnN0TGF5b3V0OiB0cnVlIH0pKVxuICAgICAgKVxuICApXG5cbiAgY29uc3QgZGVzdHJveSA9ICgpID0+IHtcbiAgICB1bmxvYWQoKVxuICAgIGxvYWRlckRlc3Ryb3koKVxuICAgIGRlc3Ryb3lTdWJqZWN0JC5uZXh0KClcbiAgICBkZXN0cm95U3ViamVjdCQuY29tcGxldGUoKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXRJc0xvYWRlZDogKCkgPT4gaXNMb2FkZWRTdWJqZWN0JC52YWx1ZSxcbiAgICBnZXRJc1JlYWR5OiAoKSA9PiBpc1JlYWR5U3ViamVjdCQudmFsdWUsXG4gICAgZ2V0Vmlld3BvcnREaW1lbnNpb25zLFxuICAgIGdldEZyYW1lRWxlbWVudDogKCkgPT4gZnJhbWVFbGVtZW50JC5nZXRWYWx1ZSgpLFxuICAgIGdldEh0bWxGcm9tUmVzb3VyY2UsXG4gICAgbG9hZCxcbiAgICB1bmxvYWQsXG4gICAgLyoqXG4gICAgICogVXB3YXJkIGxheW91dCBpcyB1c2VkIHdoZW4gdGhlIHBhcmVudCB3YW50cyB0byBtYW5pcHVsYXRlIHRoZSBpZnJhbWUgd2l0aG91dCB0cmlnZ2VyaW5nXG4gICAgICogYGxheW91dGAgZXZlbnQuIFRoaXMgaXMgYSBwYXJ0aWN1bGFyIGNhc2UgbmVlZGVkIGZvciBpZnJhbWUgYmVjYXVzZSB0aGUgcGFyZW50IGNhbiBsYXlvdXQgZm9sbG93aW5nXG4gICAgICogYW4gaWZyYW1lIGBsYXlvdXRgIGV2ZW50LiBCZWNhdXNlIHRoZSBwYXJlbnQgYGxheW91dGAgbWF5IGNoYW5nZSBzb21lIG9mIGlmcmFtZSBwcm9wZXJ0aWVzIHdlIGRvIG5vdFxuICAgICAqIHdhbnQgdGhlIGlmcmFtZSB0byB0cmlnZ2VyIGEgbmV3IGBsYXlvdXRgIGV2ZW4gYW5kIGhhdmUgaW5maW5pdGUgbG9vcC5cbiAgICAgKi9cbiAgICBzdGF0aWNMYXlvdXQ6IChzaXplOiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0pID0+IHtcbiAgICAgIGNvbnN0IGZyYW1lID0gZnJhbWVFbGVtZW50JC5nZXRWYWx1ZSgpXG4gICAgICBpZiAoZnJhbWUpIHtcbiAgICAgICAgZnJhbWUuc3R5bGUud2lkdGggPSBgJHtzaXplLndpZHRofXB4YFxuICAgICAgICBmcmFtZS5zdHlsZS5oZWlnaHQgPSBgJHtzaXplLmhlaWdodH1weGBcblxuICAgICAgICBpZiAoY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkUGFnZVR1cm5Nb2RlICE9PSBgc2Nyb2xsYWJsZWApIHtcbiAgICAgICAgICAvLyBAdG9kbyBzZWUgd2hhdCdzIHRoZSBpbXBhY3RcbiAgICAgICAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoYHRhYi1pbmRleGAsIGAwYClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgLy8gQHRvZG8gYmxvY2sgYWNjZXNzLCBvbmx5IHB1YmxpYyBBUEkgdG8gbWFuaXB1bGF0ZSAvIGdldCBpbmZvcm1hdGlvbiAoaW4gb3JkZXIgdG8gbWVtbyAvIG9wdGltaXplKVxuICAgIC8vIG1hbmlwdWxhdGUoKSB3aXRoIGNiIGFuZCByZXR1cm4gYm9vbGVhbiB3aGV0aGVyIHJlLWxheW91dCBvciBub3RcbiAgICBnZXRNYW5pcHVsYWJsZUZyYW1lLFxuICAgIGdldFJlYWRpbmdEaXJlY3Rpb246ICgpOiBgbHRyYCB8IGBydGxgIHwgdW5kZWZpbmVkID0+IHtcbiAgICAgIGNvbnN0IHdyaXRpbmdNb2RlID0gZ2V0V3JpdGluZ01vZGUoKVxuICAgICAgaWYgKHdyaXRpbmdNb2RlID09PSBgdmVydGljYWwtcmxgKSB7XG4gICAgICAgIHJldHVybiBgcnRsYFxuICAgICAgfVxuXG4gICAgICBjb25zdCBkaXJlY3Rpb24gPSBnZXRDb21wdXRlZFN0eWxlQWZ0ZXJMb2FkKCk/LmRpcmVjdGlvblxuICAgICAgaWYgKFtgbHRyYCwgYHJ0bGBdLmluY2x1ZGVzKGRpcmVjdGlvbiB8fCBgYCkpIHJldHVybiBkaXJlY3Rpb24gYXMgKGBsdHJgIHwgYHJ0bGApXG5cbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9LFxuICAgIGlzVXNpbmdWZXJ0aWNhbFdyaXRpbmcsXG4gICAgZ2V0V3JpdGluZ01vZGUsXG4gICAgZGVzdHJveSxcbiAgICAkOiB7XG4gICAgICB1bmxvYWQkOiB1bmxvYWQkLFxuICAgICAgdW5sb2FkZWQkOiB1bmxvYWRlZCQsXG4gICAgICBsb2FkZWQkLFxuICAgICAgcmVhZHkkLFxuICAgICAgaXNSZWFkeSQ6IGlzUmVhZHlTdWJqZWN0JC5hc09ic2VydmFibGUoKSxcbiAgICAgIC8qKlxuICAgICAgICogVGhpcyBpcyB1c2VkIGFzIHVwc3RyZWFtIGxheW91dCBjaGFuZ2UuIFRoaXMgZXZlbnQgaXMgYmVpbmcgbGlzdGVuZWQgdG8gYnkgdXBwZXIgYXBwXG4gICAgICAgKiBpbiBvcmRlciB0byBsYXlvdXQgYWdhaW4gYW5kIGFkanVzdCBldmVyeSBlbGVtZW50IGJhc2VkIG9uIHRoZSBuZXcgY29udGVudC5cbiAgICAgICAqL1xuICAgICAgY29udGVudExheW91dENoYW5nZSRcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgU3BpbmVJdGVtRnJhbWUgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVGcmFtZUl0ZW0+XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/spineItem/frameItem/frameItem.ts\n");
|
|
460
|
+
|
|
461
|
+
/***/ }),
|
|
462
|
+
|
|
463
|
+
/***/ "./src/spineItem/frameItem/loader.ts":
|
|
464
|
+
/*!*******************************************!*\
|
|
465
|
+
!*** ./src/spineItem/frameItem/loader.ts ***!
|
|
466
|
+
\*******************************************/
|
|
467
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
468
|
+
|
|
469
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createLoader\": () => (/* binding */ createLoader)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../.. */ \"./src/index.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../constants */ \"./src/constants.ts\");\n/* harmony import */ var _createFrame$__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createFrame$ */ \"./src/spineItem/frameItem/createFrame$.ts\");\n/* harmony import */ var _createFrameManipulator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createFrameManipulator */ \"./src/spineItem/frameItem/createFrameManipulator.ts\");\n/* harmony import */ var _createHtmlPageFromResource__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./createHtmlPageFromResource */ \"./src/spineItem/frameItem/createHtmlPageFromResource.ts\");\n\n\n\n\n\n\n\nconst isOnLoadHook = (hook) => hook.name === `item.onLoad`;\nconst createLoader = ({ item, parent, fetchResource, hooks$, context, viewportState$ }) => {\n const destroySubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const loadSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const unloadSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const frameElementSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject(undefined);\n const isLoadedSubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject(false);\n const isReadySubject$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject(false);\n let onLoadHookReturns = [];\n let computedStyleAfterLoad;\n const makeItHot = (source$) => {\n source$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(context.$.destroy$)).subscribe();\n return source$;\n };\n const getHtmlFromResource = (response) => {\n return (0,_createHtmlPageFromResource__WEBPACK_IMPORTED_MODULE_6__.createHtmlPageFromResource)(response, item);\n };\n const waitForViewportFree$ = viewportState$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)(v => v === `free`), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.take)(1));\n const unload$ = unloadSubject$.asObservable()\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.withLatestFrom)(frameElementSubject$), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)(([_, frame]) => !!frame), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.map)(([, frame]) => {\n onLoadHookReturns.forEach(fn => {\n if (fn && `unsubscribe` in fn) {\n fn.unsubscribe();\n }\n else if (fn) {\n fn();\n }\n });\n onLoadHookReturns = [];\n frame === null || frame === void 0 ? void 0 : frame.remove();\n frameElementSubject$.next(undefined);\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.share)(), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(destroySubject$));\n const load$ = loadSubject$.asObservable()\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.withLatestFrom)(isLoadedSubject$), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)(([_, isLoaded]) => !isLoaded), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.exhaustMap)(() => {\n return (0,_createFrame$__WEBPACK_IMPORTED_MODULE_4__.createFrame$)()\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.mergeMap)((frame) => waitForViewportFree$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.mapTo)(frame))), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.mergeMap)((frame) => {\n parent.appendChild(frame);\n frameElementSubject$.next(frame);\n if (!fetchResource &&\n item.href.startsWith(window.location.origin) &&\n ((item.mediaType && [`application/xhtml+xml`, `application/xml`, `text/html`, `text/xml`].includes(item.mediaType)) ||\n (!item.mediaType && (_constants__WEBPACK_IMPORTED_MODULE_3__.ITEM_EXTENSION_VALID_FOR_FRAME_SRC.some(extension => item.href.endsWith(extension)))))) {\n frame === null || frame === void 0 ? void 0 : frame.setAttribute(`src`, item.href);\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.of)(frame);\n }\n else {\n const fetchFn = fetchResource || (() => fetch(item.href));\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.from)(fetchFn(item))\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.mergeMap)((response) => getHtmlFromResource(response)), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)((htmlDoc) => {\n frame === null || frame === void 0 ? void 0 : frame.setAttribute(`srcdoc`, htmlDoc);\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.map)(() => frame));\n }\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.mergeMap)((frame) => {\n if (!frame)\n return rxjs__WEBPACK_IMPORTED_MODULE_0__.EMPTY;\n frame.setAttribute(`sandbox`, `allow-same-origin allow-scripts`);\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.fromEvent)(frame, `load`)\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.take)(1), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.withLatestFrom)(hooks$), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.mergeMap)(([_, hooks]) => {\n var _a, _b;\n const body = (_a = frame.contentDocument) === null || _a === void 0 ? void 0 : _a.body;\n if (!body) {\n ___WEBPACK_IMPORTED_MODULE_2__.Report.error(`Something went wrong on iframe load ${item.id}`);\n return rxjs__WEBPACK_IMPORTED_MODULE_0__.EMPTY;\n }\n frame.setAttribute(`role`, `main`);\n if ((frame === null || frame === void 0 ? void 0 : frame.contentDocument) && body) {\n computedStyleAfterLoad = (_b = frame === null || frame === void 0 ? void 0 : frame.contentWindow) === null || _b === void 0 ? void 0 : _b.getComputedStyle(body);\n }\n if (context.getSettings().computedPageTurnMode !== `scrollable`) {\n frame.setAttribute(`tab-index`, `0`);\n }\n const manipulableFrame = (0,_createFrameManipulator__WEBPACK_IMPORTED_MODULE_5__.createFrameManipulator)(frame);\n onLoadHookReturns = hooks\n .filter(isOnLoadHook)\n .map(hook => {\n const hookReturn = hook.fn(Object.assign(Object.assign({}, manipulableFrame), { item }));\n if (hookReturn && `subscribe` in hookReturn) {\n return hookReturn.subscribe();\n }\n return hookReturn;\n });\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.of)(frame);\n }));\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(unloadSubject$));\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.share)(), makeItHot, (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(destroySubject$));\n const ready$ = load$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.switchMap)((frame) => {\n var _a;\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.from)(((_a = frame === null || frame === void 0 ? void 0 : frame.contentDocument) === null || _a === void 0 ? void 0 : _a.fonts.ready) || (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.of)(undefined))\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(unloadSubject$));\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.share)(), makeItHot, (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(destroySubject$));\n (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.merge)(load$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.mapTo)(true)), unloadSubject$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.mapTo)(false)))\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.distinctUntilChanged)(), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(destroySubject$))\n .subscribe(isLoadedSubject$);\n (0,rxjs__WEBPACK_IMPORTED_MODULE_0__.merge)(ready$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.mapTo)(true)), unloadSubject$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.mapTo)(false)))\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.distinctUntilChanged)(), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(destroySubject$))\n .subscribe(isReadySubject$);\n unload$.subscribe();\n return {\n load: () => loadSubject$.next(),\n unload: () => unloadSubject$.next(),\n destroy: () => {\n loadSubject$.complete();\n unloadSubject$.complete();\n frameElementSubject$.complete();\n destroySubject$.next();\n destroySubject$.complete();\n isReadySubject$.complete();\n isLoadedSubject$.complete();\n },\n getComputedStyleAfterLoad: () => computedStyleAfterLoad,\n $: {\n load$: loadSubject$.asObservable(),\n unload$: unloadSubject$.asObservable(),\n loaded$: load$,\n isLoaded$: isLoadedSubject$.asObservable(),\n isReady$: isReadySubject$.asObservable(),\n ready$: ready$,\n unloaded$: unload$,\n frameElement$: frameElementSubject$\n }\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QkFBb0I7U0FDcEM7S0FDRjtBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvc3BpbmVJdGVtL2ZyYW1lSXRlbS9sb2FkZXIudHM/NDhjNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIEVNUFRZLCBmcm9tLCBmcm9tRXZlbnQsIGlzT2JzZXJ2YWJsZSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiXG5pbXBvcnQgeyBleGhhdXN0TWFwLCBmaWx0ZXIsIG1hcCwgbWFwVG8sIG1lcmdlTWFwLCBzaGFyZSwgdGFrZSwgdGFrZVVudGlsLCBkZWxheSwgdGFwLCB3aXRoTGF0ZXN0RnJvbSwgc3dpdGNoTWFwLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiXG5pbXBvcnQgeyBSZXBvcnQgfSBmcm9tIFwiLi4vLi5cIlxuaW1wb3J0IHsgSVRFTV9FWFRFTlNJT05fVkFMSURfRk9SX0ZSQU1FX1NSQyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIlxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi8uLi9jb250ZXh0XCJcbmltcG9ydCB7IE1hbmlmZXN0IH0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcbmltcG9ydCB7IEhvb2sgfSBmcm9tIFwiLi4vLi4vdHlwZXMvSG9va1wiXG5pbXBvcnQgeyBjcmVhdGVGcmFtZSQgfSBmcm9tIFwiLi9jcmVhdGVGcmFtZSRcIlxuaW1wb3J0IHsgY3JlYXRlRnJhbWVNYW5pcHVsYXRvciB9IGZyb20gXCIuL2NyZWF0ZUZyYW1lTWFuaXB1bGF0b3JcIlxuaW1wb3J0IHsgY3JlYXRlSHRtbFBhZ2VGcm9tUmVzb3VyY2UgfSBmcm9tIFwiLi9jcmVhdGVIdG1sUGFnZUZyb21SZXNvdXJjZVwiXG5cbmNvbnN0IGlzT25Mb2FkSG9vayA9IChob29rOiBIb29rKTogaG9vayBpcyBFeHRyYWN0PEhvb2ssIHsgbmFtZTogYGl0ZW0ub25Mb2FkYCB9PiA9PiBob29rLm5hbWUgPT09IGBpdGVtLm9uTG9hZGBcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUxvYWRlciA9ICh7IGl0ZW0sIHBhcmVudCwgZmV0Y2hSZXNvdXJjZSwgaG9va3MkLCBjb250ZXh0LCB2aWV3cG9ydFN0YXRlJCB9OiB7XG4gIGl0ZW06IE1hbmlmZXN0W2BzcGluZUl0ZW1zYF1bbnVtYmVyXSxcbiAgcGFyZW50OiBIVE1MRWxlbWVudCxcbiAgZmV0Y2hSZXNvdXJjZT86IChpdGVtOiBNYW5pZmVzdFtgc3BpbmVJdGVtc2BdW251bWJlcl0pID0+IFByb21pc2U8UmVzcG9uc2U+LFxuICBob29rcyQ6IE9ic2VydmFibGU8SG9va1tdPixcbiAgY29udGV4dDogQ29udGV4dCxcbiAgdmlld3BvcnRTdGF0ZSQ6IE9ic2VydmFibGU8YGZyZWVgIHwgYGJ1c3lgPlxufSkgPT4ge1xuICBjb25zdCBkZXN0cm95U3ViamVjdCQgPSBuZXcgU3ViamVjdDx2b2lkPigpXG4gIGNvbnN0IGxvYWRTdWJqZWN0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcbiAgY29uc3QgdW5sb2FkU3ViamVjdCQgPSBuZXcgU3ViamVjdDx2b2lkPigpXG4gIGNvbnN0IGZyYW1lRWxlbWVudFN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIVE1MSUZyYW1lRWxlbWVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBpc0xvYWRlZFN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSlcbiAgY29uc3QgaXNSZWFkeVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSlcbiAgbGV0IG9uTG9hZEhvb2tSZXR1cm5zOiAoKCgpID0+IHZvaWQpIHwgU3Vic2NyaXB0aW9uIHwgdm9pZClbXSA9IFtdXG4gIGxldCBjb21wdXRlZFN0eWxlQWZ0ZXJMb2FkOiBDU1NTdHlsZURlY2xhcmF0aW9uIHwgdW5kZWZpbmVkXG5cbiAgY29uc3QgbWFrZUl0SG90ID0gPFQ+KHNvdXJjZSQ6IE9ic2VydmFibGU8VD4pID0+IHtcbiAgICBzb3VyY2UkLnBpcGUodGFrZVVudGlsKGNvbnRleHQuJC5kZXN0cm95JCkpLnN1YnNjcmliZSgpXG5cbiAgICByZXR1cm4gc291cmNlJFxuICB9XG5cbiAgY29uc3QgZ2V0SHRtbEZyb21SZXNvdXJjZSA9IChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICByZXR1cm4gY3JlYXRlSHRtbFBhZ2VGcm9tUmVzb3VyY2UocmVzcG9uc2UsIGl0ZW0pXG4gIH1cblxuICBjb25zdCB3YWl0Rm9yVmlld3BvcnRGcmVlJCA9IHZpZXdwb3J0U3RhdGUkLnBpcGUoZmlsdGVyKHYgPT4gdiA9PT0gYGZyZWVgKSwgdGFrZSgxKSlcblxuICBjb25zdCB1bmxvYWQkID0gdW5sb2FkU3ViamVjdCQuYXNPYnNlcnZhYmxlKClcbiAgICAucGlwZShcbiAgICAgIC8vIEB0b2RvIHJlbW92ZSBpZnJhbWUgd2hlbiB2aWV3cG9ydCBpcyBmcmVlXG4gICAgICAvLyBAdG9kbyB1c2UgdGFrZVVudGlsKGxvYWQkKSB3aGVuIGl0J3MgdGhlIGNhc2UgdG8gY2FuY2VsXG4gICAgICB3aXRoTGF0ZXN0RnJvbShmcmFtZUVsZW1lbnRTdWJqZWN0JCksXG4gICAgICBmaWx0ZXIoKFtfLCBmcmFtZV0pID0+ICEhZnJhbWUpLFxuICAgICAgbWFwKChbLCBmcmFtZV0pID0+IHtcbiAgICAgICAgb25Mb2FkSG9va1JldHVybnMuZm9yRWFjaChmbiA9PiB7XG4gICAgICAgICAgaWYgKGZuICYmIGB1bnN1YnNjcmliZWAgaW4gZm4pIHtcbiAgICAgICAgICAgIGZuLnVuc3Vic2NyaWJlKClcbiAgICAgICAgICB9IGVsc2UgaWYgKGZuKSB7XG4gICAgICAgICAgICBmbigpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICBvbkxvYWRIb29rUmV0dXJucyA9IFtdXG4gICAgICAgIGZyYW1lPy5yZW1vdmUoKVxuICAgICAgICBmcmFtZUVsZW1lbnRTdWJqZWN0JC5uZXh0KHVuZGVmaW5lZClcbiAgICAgIH0pLFxuICAgICAgc2hhcmUoKSxcbiAgICAgIHRha2VVbnRpbChkZXN0cm95U3ViamVjdCQpXG4gICAgKVxuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIGZvciBsb2FkaW5nIHRoZSBmcmFtZVxuICAgKi9cbiAgY29uc3QgbG9hZCQgPSBsb2FkU3ViamVjdCQuYXNPYnNlcnZhYmxlKClcbiAgICAucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKGlzTG9hZGVkU3ViamVjdCQpLFxuICAgICAgZmlsdGVyKChbXywgaXNMb2FkZWRdKSA9PiAhaXNMb2FkZWQpLFxuICAgICAgLy8gbGV0J3MgaWdub3JlIGxhdGVyIGxvYWQgYXMgbG9uZyBhcyB0aGUgZmlyc3Qgb25lIHN0aWxsIHJ1bnNcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gY3JlYXRlRnJhbWUkKClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKChmcmFtZSkgPT4gd2FpdEZvclZpZXdwb3J0RnJlZSQucGlwZShtYXBUbyhmcmFtZSkpKSxcbiAgICAgICAgICAgIG1lcmdlTWFwKChmcmFtZSkgPT4ge1xuICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZnJhbWUpXG5cbiAgICAgICAgICAgICAgZnJhbWVFbGVtZW50U3ViamVjdCQubmV4dChmcmFtZSlcblxuICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICogQmVjYXVzZSBvZiB0aGUgYnVnIHdpdGggaWZyYW1lIGFuZCBzdywgd2Ugc2hvdWxkIG5vdCB1c2Ugc3JjZG9jIGFuZCBzdyB0b2dldGhlciBmb3JcbiAgICAgICAgICAgICAgICogaHRtbCBkb2N1bWVudC4gVGhpcyBpcyBiZWNhdXNlIHJlc291cmNlcyB3aWxsIG5vdCBwYXNzIHRocm91Z2ggU1cuIElGIGBmZXRjaFJlc291cmNlYCBpcyBiZWluZ1xuICAgICAgICAgICAgICAgKiB1c2VkIHRoZSB1c2VyIHNob3VsZCBiZSBhd2FyZSBvZiB0aGUgbGltaXRhdGlvbi4gV2UgdXNlIHNyY2RvYyBmb3IgZXZlcnl0aGluZyBleGNlcHQgaWYgd2UgZGV0ZWN0XG4gICAgICAgICAgICAgICAqIGFuIGh0bWwgZG9jdW1lbnQgYW5kIHNhbWUgb3JpZ2luLiBIb3BlZnVsbHkgdGhhdCBidWcgZ2V0cyBmaXhlZCBvbmUgZGF5LlxuICAgICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTg4MDc2OFxuICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICFmZXRjaFJlc291cmNlICYmXG4gICAgICAgICAgICAgICAgaXRlbS5ocmVmLnN0YXJ0c1dpdGgod2luZG93LmxvY2F0aW9uLm9yaWdpbikgJiZcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIGFuIGVuY29kaW5nIGFuZCBpdCdzIGEgdmFsaWQgaHRtbFxuICAgICAgICAgICAgICAgICAgKGl0ZW0ubWVkaWFUeXBlICYmIFtgYXBwbGljYXRpb24veGh0bWwreG1sYCwgYGFwcGxpY2F0aW9uL3htbGAsIGB0ZXh0L2h0bWxgLCBgdGV4dC94bWxgXS5pbmNsdWRlcyhpdGVtLm1lZGlhVHlwZSkpIHx8XG4gICAgICAgICAgICAgICAgICAvLyBubyBlbmNvZGluZyA/IHRoZW4gdHJ5IHRvIGRldGVjdCBodG1sXG4gICAgICAgICAgICAgICAgICAoIWl0ZW0ubWVkaWFUeXBlICYmIChJVEVNX0VYVEVOU0lPTl9WQUxJRF9GT1JfRlJBTUVfU1JDLnNvbWUoZXh0ZW5zaW9uID0+IGl0ZW0uaHJlZi5lbmRzV2l0aChleHRlbnNpb24pKSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmcmFtZT8uc2V0QXR0cmlidXRlKGBzcmNgLCBpdGVtLmhyZWYpXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoZnJhbWUpXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmV0Y2hGbiA9IGZldGNoUmVzb3VyY2UgfHwgKCgpID0+IGZldGNoKGl0ZW0uaHJlZikpXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZnJvbShmZXRjaEZuKGl0ZW0pKVxuICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1lcmdlTWFwKChyZXNwb25zZSkgPT4gZ2V0SHRtbEZyb21SZXNvdXJjZShyZXNwb25zZSkpLFxuICAgICAgICAgICAgICAgICAgICB0YXAoKGh0bWxEb2MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBmcmFtZT8uc2V0QXR0cmlidXRlKGBzcmNkb2NgLCBodG1sRG9jKVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKCgpID0+IGZyYW1lKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1lcmdlTWFwKChmcmFtZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWZyYW1lKSByZXR1cm4gRU1QVFlcblxuICAgICAgICAgICAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoYHNhbmRib3hgLCBgYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0c2ApXG5cbiAgICAgICAgICAgICAgcmV0dXJuIGZyb21FdmVudChmcmFtZSwgYGxvYWRgKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgIHdpdGhMYXRlc3RGcm9tKGhvb2tzJCksXG4gICAgICAgICAgICAgICAgICBtZXJnZU1hcCgoW18sIGhvb2tzXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBib2R5OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB8IG51bGwgPSBmcmFtZS5jb250ZW50RG9jdW1lbnQ/LmJvZHlcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWJvZHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBSZXBvcnQuZXJyb3IoYFNvbWV0aGluZyB3ZW50IHdyb25nIG9uIGlmcmFtZSBsb2FkICR7aXRlbS5pZH1gKVxuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coZnJhbWUuY29udGVudERvY3VtZW50Py5oZWFkLmNoaWxkTm9kZXMpXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGZyYW1lLmNvbnRlbnREb2N1bWVudD8uYm9keS5jaGlsZE5vZGVzKVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IHNjcmlwdCA9IGZyYW1lLmNvbnRlbnREb2N1bWVudD8uY3JlYXRlRWxlbWVudChgc2NyaXB0YClcbiAgICAgICAgICAgICAgICAgICAgLy8gLy8gc2NyaXB0Py5zZXRBdHRyaWJ1dGUoYHNyY2AsIGBodHRwczovL2ZyZWQtd2FuZy5naXRodWIuaW8vbWF0aG1sLmNzcy9tc3BhY2UuanNgKVxuICAgICAgICAgICAgICAgICAgICAvLyAvLyBzY3JpcHQ/LnNldEF0dHJpYnV0ZShgc3JjYCwgYGh0dHBzOi8vZnJlZC13YW5nLmdpdGh1Yi5pby9tYXRoamF4LmpzL21wYWRkZWQtbWluLmpzYClcbiAgICAgICAgICAgICAgICAgICAgLy8gLy8gc2NyaXB0Py5zZXRBdHRyaWJ1dGUoYHNyY2AsIGBodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9tYXRoamF4LzIuNy4xL01hdGhKYXguanNgKVxuICAgICAgICAgICAgICAgICAgICAvLyAvLyBzY3JpcHQ/LnNldEF0dHJpYnV0ZShgc3JjYCwgYGh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbWF0aGpheEAyL01hdGhKYXguanM/Y29uZmlnPVRlWC1BTVMtTU1MX0NIVE1MYClcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHNjcmlwdCkge1xuICAgICAgICAgICAgICAgICAgICAvLyAgIC8vIGNvbnNvbGUubG9nKGZyYW1lLmNvbnRlbnREb2N1bWVudD8uaGVhZC5jaGlsZE5vZGVzKVxuICAgICAgICAgICAgICAgICAgICAvLyAgIC8vIGNvbnNvbGUubG9nKGZyYW1lLmNvbnRlbnREb2N1bWVudD8uYm9keS5jaGlsZE5vZGVzKVxuICAgICAgICAgICAgICAgICAgICAvLyAgIC8vIGZyYW1lLmNvbnRlbnREb2N1bWVudD8uaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpXG4gICAgICAgICAgICAgICAgICAgIC8vIH1cblxuICAgICAgICAgICAgICAgICAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoYHJvbGVgLCBgbWFpbmApXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lPy5jb250ZW50RG9jdW1lbnQgJiYgYm9keSkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkU3R5bGVBZnRlckxvYWQgPSBmcmFtZT8uY29udGVudFdpbmRvdz8uZ2V0Q29tcHV0ZWRTdHlsZShib2R5KVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuZ2V0U2V0dGluZ3MoKS5jb21wdXRlZFBhZ2VUdXJuTW9kZSAhPT0gYHNjcm9sbGFibGVgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gQHRvZG8gc2VlIHdoYXQncyB0aGUgaW1wYWN0XG4gICAgICAgICAgICAgICAgICAgICAgZnJhbWUuc2V0QXR0cmlidXRlKGB0YWItaW5kZXhgLCBgMGApXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYW5pcHVsYWJsZUZyYW1lID0gY3JlYXRlRnJhbWVNYW5pcHVsYXRvcihmcmFtZSlcblxuICAgICAgICAgICAgICAgICAgICBvbkxvYWRIb29rUmV0dXJucyA9IGhvb2tzXG4gICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihpc09uTG9hZEhvb2spXG4gICAgICAgICAgICAgICAgICAgICAgLm1hcChob29rID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhvb2tSZXR1cm4gPSBob29rLmZuKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubWFuaXB1bGFibGVGcmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhvb2tSZXR1cm4gJiYgYHN1YnNjcmliZWAgaW4gaG9va1JldHVybikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaG9va1JldHVybi5zdWJzY3JpYmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaG9va1JldHVyblxuICAgICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgLy8gd2UgY29udmVuaWVudGx5IHdhaXQgZm9yIGFsbCB0aGUgaG9va3Mgc28gdGhhdCB0aGUgZG9tIGlzIGNvcnJlY3RseSBwcmVwYXJlZFxuICAgICAgICAgICAgICAgICAgICAvLyBpbiBhZGRpdGlvbiB0byBiZSByZWFkeS5cbiAgICAgICAgICAgICAgICAgICAgLy8gZG9tUmVhZHlTdWJqZWN0JC5uZXh0KGZyYW1lKVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmcmFtZSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAvLyB3ZSBzdG9wIGxvYWRpbmcgYXMgc29vbiBhcyB1bmxvYWQgaXMgcmVxdWVzdGVkXG4gICAgICAgICAgICB0YWtlVW50aWwodW5sb2FkU3ViamVjdCQpXG4gICAgICAgICAgKVxuICAgICAgfSksXG4gICAgICBzaGFyZSgpLFxuICAgICAgbWFrZUl0SG90LFxuICAgICAgdGFrZVVudGlsKGRlc3Ryb3lTdWJqZWN0JClcbiAgICApXG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgZm9yIHdoZW4gdGhlIGZyYW1lIGlzOlxuICAgKiAtIGxvYWRlZFxuICAgKiAtIHJlYWR5XG4gICAqL1xuICBjb25zdCByZWFkeSQgPSBsb2FkJFxuICAgIC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChmcmFtZSkgPT5cbiAgICAgICAgZnJvbShmcmFtZT8uY29udGVudERvY3VtZW50Py5mb250cy5yZWFkeSB8fCBvZih1bmRlZmluZWQpKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHVubG9hZFN1YmplY3QkKVxuICAgICAgICAgIClcbiAgICAgICksXG4gICAgICBzaGFyZSgpLFxuICAgICAgbWFrZUl0SG90LFxuICAgICAgdGFrZVVudGlsKGRlc3Ryb3lTdWJqZWN0JClcbiAgICApXG5cbiAgbWVyZ2UobG9hZCQucGlwZShtYXBUbyh0cnVlKSksIHVubG9hZFN1YmplY3QkLnBpcGUobWFwVG8oZmFsc2UpKSlcbiAgICAucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICB0YWtlVW50aWwoZGVzdHJveVN1YmplY3QkKVxuICAgIClcbiAgICAuc3Vic2NyaWJlKGlzTG9hZGVkU3ViamVjdCQpXG5cbiAgbWVyZ2UocmVhZHkkLnBpcGUobWFwVG8odHJ1ZSkpLCB1bmxvYWRTdWJqZWN0JC5waXBlKG1hcFRvKGZhbHNlKSkpXG4gICAgLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgdGFrZVVudGlsKGRlc3Ryb3lTdWJqZWN0JClcbiAgICApXG4gICAgLnN1YnNjcmliZShpc1JlYWR5U3ViamVjdCQpXG5cbiAgdW5sb2FkJC5zdWJzY3JpYmUoKVxuXG4gIHJldHVybiB7XG4gICAgbG9hZDogKCkgPT4gbG9hZFN1YmplY3QkLm5leHQoKSxcbiAgICB1bmxvYWQ6ICgpID0+IHVubG9hZFN1YmplY3QkLm5leHQoKSxcbiAgICBkZXN0cm95OiAoKSA9PiB7XG4gICAgICBsb2FkU3ViamVjdCQuY29tcGxldGUoKVxuICAgICAgdW5sb2FkU3ViamVjdCQuY29tcGxldGUoKVxuICAgICAgZnJhbWVFbGVtZW50U3ViamVjdCQuY29tcGxldGUoKVxuICAgICAgZGVzdHJveVN1YmplY3QkLm5leHQoKVxuICAgICAgZGVzdHJveVN1YmplY3QkLmNvbXBsZXRlKClcbiAgICAgIGlzUmVhZHlTdWJqZWN0JC5jb21wbGV0ZSgpXG4gICAgICBpc0xvYWRlZFN1YmplY3QkLmNvbXBsZXRlKClcbiAgICB9LFxuICAgIGdldENvbXB1dGVkU3R5bGVBZnRlckxvYWQ6ICgpID0+IGNvbXB1dGVkU3R5bGVBZnRlckxvYWQsXG4gICAgJDoge1xuICAgICAgbG9hZCQ6IGxvYWRTdWJqZWN0JC5hc09ic2VydmFibGUoKSxcbiAgICAgIHVubG9hZCQ6IHVubG9hZFN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgbG9hZGVkJDogbG9hZCQsXG4gICAgICBpc0xvYWRlZCQ6IGlzTG9hZGVkU3ViamVjdCQuYXNPYnNlcnZhYmxlKCksXG4gICAgICBpc1JlYWR5JDogaXNSZWFkeVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgcmVhZHkkOiByZWFkeSQsXG4gICAgICB1bmxvYWRlZCQ6IHVubG9hZCQsXG4gICAgICBmcmFtZUVsZW1lbnQkOiBmcmFtZUVsZW1lbnRTdWJqZWN0JFxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/spineItem/frameItem/loader.ts\n");
|
|
470
|
+
|
|
471
|
+
/***/ }),
|
|
472
|
+
|
|
473
|
+
/***/ "./src/spineItem/locationResolver.ts":
|
|
474
|
+
/*!*******************************************!*\
|
|
475
|
+
!*** ./src/spineItem/locationResolver.ts ***!
|
|
476
|
+
\*******************************************/
|
|
477
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
478
|
+
|
|
479
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createLocationResolver\": () => (/* binding */ createLocationResolver)\n/* harmony export */ });\n/* harmony import */ var _pagination__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../pagination */ \"./src/pagination.ts\");\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/dom */ \"./src/utils/dom.ts\");\n\n\nconst createLocationResolver = ({ context }) => {\n const getSpineItemPositionFromPageIndex = (pageIndex, spineItem) => {\n const { width: itemWidth, height: itemHeight } = spineItem.getElementDimensions();\n const itemReadingDirection = spineItem.getReadingDirection();\n if (spineItem.isUsingVerticalWriting()) {\n const ltrRelativeOffset = (0,_pagination__WEBPACK_IMPORTED_MODULE_0__.getItemOffsetFromPageIndex)(context.getPageSize().height, pageIndex, itemHeight);\n return {\n x: 0,\n y: ltrRelativeOffset\n };\n }\n const ltrRelativeOffset = (0,_pagination__WEBPACK_IMPORTED_MODULE_0__.getItemOffsetFromPageIndex)(context.getPageSize().width, pageIndex, itemWidth);\n if (itemReadingDirection === `rtl`) {\n return {\n x: (itemWidth - ltrRelativeOffset) - context.getPageSize().width,\n y: 0\n };\n }\n return {\n x: ltrRelativeOffset,\n y: 0\n };\n };\n const getSpineItemPageIndexFromPosition = (position, spineItem) => {\n const { width: itemWidth, height: itemHeight } = spineItem.getElementDimensions();\n const itemReadingDirection = spineItem.getReadingDirection();\n const pageWidth = context.getPageSize().width;\n const pageHeight = context.getPageSize().height;\n let offsetNormalizedForLtr = Math.min(itemWidth, Math.max(0, position.x));\n if (itemReadingDirection === `rtl`) {\n offsetNormalizedForLtr = (itemWidth - offsetNormalizedForLtr) - context.getPageSize().width;\n }\n if (spineItem.isUsingVerticalWriting()) {\n const numberOfPages = (0,_pagination__WEBPACK_IMPORTED_MODULE_0__.getNumberOfPages)(itemHeight, pageHeight);\n return getPageFromOffset(position.y, pageHeight, numberOfPages);\n }\n else {\n const numberOfPages = (0,_pagination__WEBPACK_IMPORTED_MODULE_0__.getNumberOfPages)(itemWidth, pageWidth);\n const pageIndex = getPageFromOffset(offsetNormalizedForLtr, pageWidth, numberOfPages);\n return pageIndex;\n }\n };\n const getSpineItemOffsetFromAnchor = (anchor, spineItem) => {\n var _a;\n const itemWidth = (((_a = spineItem.getElementDimensions()) === null || _a === void 0 ? void 0 : _a.width) || 0);\n const pageWidth = context.getPageSize().width;\n const anchorElementBoundingRect = spineItem.getBoundingRectOfElementFromSelector(anchor);\n const offsetOfAnchor = (anchorElementBoundingRect === null || anchorElementBoundingRect === void 0 ? void 0 : anchorElementBoundingRect.x) || 0;\n return (0,_pagination__WEBPACK_IMPORTED_MODULE_0__.getClosestValidOffsetFromApproximateOffsetInPages)(offsetOfAnchor, pageWidth, itemWidth);\n };\n const getSpineItemPositionFromNode = (node, offset, spineItem) => {\n var _a;\n let offsetOfNodeInSpineItem;\n if ((node === null || node === void 0 ? void 0 : node.nodeName) === `img` || ((node === null || node === void 0 ? void 0 : node.textContent) === `` && node.nodeType === Node.ELEMENT_NODE)) {\n offsetOfNodeInSpineItem = node.getBoundingClientRect().x;\n }\n else if (node) {\n const range = node ? (0,_utils_dom__WEBPACK_IMPORTED_MODULE_1__.getRangeFromNode)(node, offset) : undefined;\n offsetOfNodeInSpineItem = (range === null || range === void 0 ? void 0 : range.getBoundingClientRect().x) || offsetOfNodeInSpineItem;\n }\n const spineItemWidth = ((_a = spineItem.getElementDimensions()) === null || _a === void 0 ? void 0 : _a.width) || 0;\n const pageWidth = context.getPageSize().width;\n if (offsetOfNodeInSpineItem) {\n const val = (0,_pagination__WEBPACK_IMPORTED_MODULE_0__.getClosestValidOffsetFromApproximateOffsetInPages)(offsetOfNodeInSpineItem, pageWidth, spineItemWidth);\n return { x: val, y: 0 };\n }\n return undefined;\n };\n const getFirstNodeOrRangeAtPage = (pageIndex, spineItem) => {\n var _a, _b, _c;\n const pageSize = context.getPageSize();\n const frame = (_b = (_a = spineItem.spineItemFrame) === null || _a === void 0 ? void 0 : _a.getManipulableFrame()) === null || _b === void 0 ? void 0 : _b.frame;\n if (((_c = frame === null || frame === void 0 ? void 0 : frame.contentWindow) === null || _c === void 0 ? void 0 : _c.document) &&\n frame.contentWindow.document.body !== null) {\n const { x: left, y: top } = getSpineItemPositionFromPageIndex(pageIndex, spineItem);\n const viewport = {\n left,\n right: left + pageSize.width,\n top,\n bottom: top + pageSize.height\n };\n const res = (0,_utils_dom__WEBPACK_IMPORTED_MODULE_1__.getFirstVisibleNodeForViewport)(frame.contentWindow.document, viewport);\n return res;\n }\n return undefined;\n };\n const getSpineItemClosestPositionFromUnsafePosition = (unsafePosition, spineItem) => {\n const { width, height } = spineItem.getElementDimensions();\n const adjustedPosition = {\n x: (0,_pagination__WEBPACK_IMPORTED_MODULE_0__.getClosestValidOffsetFromApproximateOffsetInPages)(unsafePosition.x, context.getPageSize().width, width),\n y: (0,_pagination__WEBPACK_IMPORTED_MODULE_0__.getClosestValidOffsetFromApproximateOffsetInPages)(unsafePosition.y, context.getPageSize().height, height)\n };\n return adjustedPosition;\n };\n const getSpineItemPageIndexFromNode = (node, offset, spineItem) => {\n const position = getSpineItemPositionFromNode(node, offset, spineItem);\n return position ? getSpineItemPageIndexFromPosition(position, spineItem) : undefined;\n };\n const getPageFromOffset = (offset, pageWidth, numberOfPages) => {\n const offsetValues = [...Array(numberOfPages)].map((_, i) => i * pageWidth);\n if (offset <= 0)\n return 0;\n if (offset >= (numberOfPages * pageWidth))\n return numberOfPages - 1;\n return Math.max(0, offsetValues.findIndex(offsetRange => offset < (offsetRange + pageWidth)));\n };\n return {\n getSpineItemPositionFromNode,\n getSpineItemPositionFromPageIndex,\n getSpineItemOffsetFromAnchor,\n getSpineItemPageIndexFromPosition,\n getSpineItemPageIndexFromNode,\n getSpineItemClosestPositionFromUnsafePosition,\n getFirstNodeOrRangeAtPage\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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NEJBQTRCO1FBQzVCLGlDQUFpQztRQUNqQyw2QkFBNkI7UUFDN0IsNkNBQTZDO1FBQzdDLHlCQUF5QjtLQUMxQjtBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvc3BpbmVJdGVtL2xvY2F0aW9uUmVzb2x2ZXIudHM/ZjJhNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4uL2NvbnRleHRcIlxuaW1wb3J0IHsgZ2V0SXRlbU9mZnNldEZyb21QYWdlSW5kZXgsIGdldENsb3Nlc3RWYWxpZE9mZnNldEZyb21BcHByb3hpbWF0ZU9mZnNldEluUGFnZXMsIGdldE51bWJlck9mUGFnZXMgfSBmcm9tIFwiLi4vcGFnaW5hdGlvblwiXG5pbXBvcnQgeyBTcGluZUl0ZW0gfSBmcm9tIFwiLi9jcmVhdGVTcGluZUl0ZW1cIlxuaW1wb3J0IHsgZ2V0Rmlyc3RWaXNpYmxlTm9kZUZvclZpZXdwb3J0LCBnZXRSYW5nZUZyb21Ob2RlIH0gZnJvbSBcIi4uL3V0aWxzL2RvbVwiXG5cbnR5cGUgU3BpbmVJdGVtUG9zaXRpb24gPSB7IHg6IG51bWJlciwgeTogbnVtYmVyIH1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUxvY2F0aW9uUmVzb2x2ZXIgPSAoeyBjb250ZXh0IH06IHtcbiAgY29udGV4dDogQ29udGV4dCxcbn0pID0+IHtcbiAgY29uc3QgZ2V0U3BpbmVJdGVtUG9zaXRpb25Gcm9tUGFnZUluZGV4ID0gKHBhZ2VJbmRleDogbnVtYmVyLCBzcGluZUl0ZW06IFNwaW5lSXRlbSk6IFNwaW5lSXRlbVBvc2l0aW9uID0+IHtcbiAgICBjb25zdCB7IHdpZHRoOiBpdGVtV2lkdGgsIGhlaWdodDogaXRlbUhlaWdodCB9ID0gc3BpbmVJdGVtLmdldEVsZW1lbnREaW1lbnNpb25zKClcbiAgICBjb25zdCBpdGVtUmVhZGluZ0RpcmVjdGlvbiA9IHNwaW5lSXRlbS5nZXRSZWFkaW5nRGlyZWN0aW9uKClcblxuICAgIGlmIChzcGluZUl0ZW0uaXNVc2luZ1ZlcnRpY2FsV3JpdGluZygpKSB7XG4gICAgICBjb25zdCBsdHJSZWxhdGl2ZU9mZnNldCA9IGdldEl0ZW1PZmZzZXRGcm9tUGFnZUluZGV4KGNvbnRleHQuZ2V0UGFnZVNpemUoKS5oZWlnaHQsIHBhZ2VJbmRleCwgaXRlbUhlaWdodClcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogbHRyUmVsYXRpdmVPZmZzZXRcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBsdHJSZWxhdGl2ZU9mZnNldCA9IGdldEl0ZW1PZmZzZXRGcm9tUGFnZUluZGV4KGNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aCwgcGFnZUluZGV4LCBpdGVtV2lkdGgpXG5cbiAgICBpZiAoaXRlbVJlYWRpbmdEaXJlY3Rpb24gPT09IGBydGxgKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiAoaXRlbVdpZHRoIC0gbHRyUmVsYXRpdmVPZmZzZXQpIC0gY29udGV4dC5nZXRQYWdlU2l6ZSgpLndpZHRoLFxuICAgICAgICB5OiAwXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IGx0clJlbGF0aXZlT2Zmc2V0LFxuICAgICAgeTogMFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW1wb3J0YW50XG4gICAqIFRoaXMgY2FsY3VsYXRpb24gdGFrZXMgYmxhbmsgcGFnZSBpbnRvIGFjY291bnQsIHRoZSBpZnJhbWUgY291bGQgYmUgb25seSBvbmUgcGFnZSBidXQgd2l0aCBhIGJsYW5rIHBhZ2VcbiAgICogcG9zaXRpb25lZCBiZWZvcmUuIFJlc3VsdGluZyBvbiB0d28gcGFnZSBpbmRleCBwb3NzaWJsZSB2YWx1ZXMgKDAgJiAxKS5cbiAgICovXG4gIGNvbnN0IGdldFNwaW5lSXRlbVBhZ2VJbmRleEZyb21Qb3NpdGlvbiA9IChwb3NpdGlvbjogU3BpbmVJdGVtUG9zaXRpb24sIHNwaW5lSXRlbTogU3BpbmVJdGVtKSA9PiB7XG4gICAgY29uc3QgeyB3aWR0aDogaXRlbVdpZHRoLCBoZWlnaHQ6IGl0ZW1IZWlnaHQgfSA9IHNwaW5lSXRlbS5nZXRFbGVtZW50RGltZW5zaW9ucygpXG4gICAgY29uc3QgaXRlbVJlYWRpbmdEaXJlY3Rpb24gPSBzcGluZUl0ZW0uZ2V0UmVhZGluZ0RpcmVjdGlvbigpXG4gICAgY29uc3QgcGFnZVdpZHRoID0gY29udGV4dC5nZXRQYWdlU2l6ZSgpLndpZHRoXG4gICAgY29uc3QgcGFnZUhlaWdodCA9IGNvbnRleHQuZ2V0UGFnZVNpemUoKS5oZWlnaHRcblxuICAgIGxldCBvZmZzZXROb3JtYWxpemVkRm9yTHRyID0gTWF0aC5taW4oaXRlbVdpZHRoLCBNYXRoLm1heCgwLCBwb3NpdGlvbi54KSlcblxuICAgIGlmIChpdGVtUmVhZGluZ0RpcmVjdGlvbiA9PT0gYHJ0bGApIHtcbiAgICAgIG9mZnNldE5vcm1hbGl6ZWRGb3JMdHIgPSAoaXRlbVdpZHRoIC0gb2Zmc2V0Tm9ybWFsaXplZEZvckx0cikgLSBjb250ZXh0LmdldFBhZ2VTaXplKCkud2lkdGhcbiAgICB9XG5cbiAgICBpZiAoc3BpbmVJdGVtLmlzVXNpbmdWZXJ0aWNhbFdyaXRpbmcoKSkge1xuICAgICAgY29uc3QgbnVtYmVyT2ZQYWdlcyA9IGdldE51bWJlck9mUGFnZXMoaXRlbUhlaWdodCwgcGFnZUhlaWdodClcblxuICAgICAgcmV0dXJuIGdldFBhZ2VGcm9tT2Zmc2V0KHBvc2l0aW9uLnksIHBhZ2VIZWlnaHQsIG51bWJlck9mUGFnZXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG51bWJlck9mUGFnZXMgPSBnZXROdW1iZXJPZlBhZ2VzKGl0ZW1XaWR0aCwgcGFnZVdpZHRoKVxuICAgICAgY29uc3QgcGFnZUluZGV4ID0gZ2V0UGFnZUZyb21PZmZzZXQob2Zmc2V0Tm9ybWFsaXplZEZvckx0ciwgcGFnZVdpZHRoLCBudW1iZXJPZlBhZ2VzKVxuXG4gICAgICByZXR1cm4gcGFnZUluZGV4XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZ2V0U3BpbmVJdGVtT2Zmc2V0RnJvbUFuY2hvciA9IChhbmNob3I6IHN0cmluZywgc3BpbmVJdGVtOiBTcGluZUl0ZW0pID0+IHtcbiAgICBjb25zdCBpdGVtV2lkdGggPSAoc3BpbmVJdGVtLmdldEVsZW1lbnREaW1lbnNpb25zKCk/LndpZHRoIHx8IDApXG4gICAgY29uc3QgcGFnZVdpZHRoID0gY29udGV4dC5nZXRQYWdlU2l6ZSgpLndpZHRoXG4gICAgY29uc3QgYW5jaG9yRWxlbWVudEJvdW5kaW5nUmVjdCA9IHNwaW5lSXRlbS5nZXRCb3VuZGluZ1JlY3RPZkVsZW1lbnRGcm9tU2VsZWN0b3IoYW5jaG9yKVxuXG4gICAgY29uc3Qgb2Zmc2V0T2ZBbmNob3IgPSBhbmNob3JFbGVtZW50Qm91bmRpbmdSZWN0Py54IHx8IDBcblxuICAgIHJldHVybiBnZXRDbG9zZXN0VmFsaWRPZmZzZXRGcm9tQXBwcm94aW1hdGVPZmZzZXRJblBhZ2VzKG9mZnNldE9mQW5jaG9yLCBwYWdlV2lkdGgsIGl0ZW1XaWR0aClcbiAgfVxuXG4gIGNvbnN0IGdldFNwaW5lSXRlbVBvc2l0aW9uRnJvbU5vZGUgPSAobm9kZTogTm9kZSwgb2Zmc2V0OiBudW1iZXIsIHNwaW5lSXRlbTogU3BpbmVJdGVtKSA9PiB7XG4gICAgbGV0IG9mZnNldE9mTm9kZUluU3BpbmVJdGVtOiBudW1iZXIgfCB1bmRlZmluZWRcblxuICAgIC8vIGZvciBzb21lIHJlYXNvbiBgaW1nYCBkb2VzIG5vdCB3b3JrIHdpdGggcmFuZ2UgKHggYWx3YXlzID0gMClcbiAgICBpZiAobm9kZT8ubm9kZU5hbWUgPT09IGBpbWdgIHx8IChub2RlPy50ZXh0Q29udGVudCA9PT0gYGAgJiYgbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpKSB7XG4gICAgICBvZmZzZXRPZk5vZGVJblNwaW5lSXRlbSA9IChub2RlIGFzIEhUTUxFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS54XG4gICAgfSBlbHNlIGlmIChub2RlKSB7XG4gICAgICBjb25zdCByYW5nZSA9IG5vZGUgPyBnZXRSYW5nZUZyb21Ob2RlKG5vZGUsIG9mZnNldCkgOiB1bmRlZmluZWRcbiAgICAgIG9mZnNldE9mTm9kZUluU3BpbmVJdGVtID0gcmFuZ2U/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnggfHwgb2Zmc2V0T2ZOb2RlSW5TcGluZUl0ZW1cbiAgICB9XG5cbiAgICBjb25zdCBzcGluZUl0ZW1XaWR0aCA9IHNwaW5lSXRlbS5nZXRFbGVtZW50RGltZW5zaW9ucygpPy53aWR0aCB8fCAwXG4gICAgY29uc3QgcGFnZVdpZHRoID0gY29udGV4dC5nZXRQYWdlU2l6ZSgpLndpZHRoXG5cbiAgICBpZiAob2Zmc2V0T2ZOb2RlSW5TcGluZUl0ZW0pIHtcbiAgICAgIGNvbnN0IHZhbCA9IGdldENsb3Nlc3RWYWxpZE9mZnNldEZyb21BcHByb3hpbWF0ZU9mZnNldEluUGFnZXMob2Zmc2V0T2ZOb2RlSW5TcGluZUl0ZW0sIHBhZ2VXaWR0aCwgc3BpbmVJdGVtV2lkdGgpXG5cbiAgICAgIC8vIEB0b2RvIHZlcnRpY2FsXG4gICAgICByZXR1cm4geyB4OiB2YWwsIHk6IDAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBoYW5kbGUgdmVydGljYWxcbiAgICovXG4gIGNvbnN0IGdldEZpcnN0Tm9kZU9yUmFuZ2VBdFBhZ2UgPSAocGFnZUluZGV4OiBudW1iZXIsIHNwaW5lSXRlbTogU3BpbmVJdGVtKSA9PiB7XG4gICAgY29uc3QgcGFnZVNpemUgPSBjb250ZXh0LmdldFBhZ2VTaXplKClcbiAgICBjb25zdCBmcmFtZSA9IHNwaW5lSXRlbS5zcGluZUl0ZW1GcmFtZT8uZ2V0TWFuaXB1bGFibGVGcmFtZSgpPy5mcmFtZVxuXG4gICAgaWYgKFxuICAgICAgZnJhbWU/LmNvbnRlbnRXaW5kb3c/LmRvY3VtZW50ICYmXG4gICAgICAvLyB2ZXJ5IGltcG9ydGFudCBiZWNhdXNlIGl0IGlzIGJlaW5nIHVzZWQgYnkgbmV4dCBmdW5jdGlvbnNcbiAgICAgIGZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuYm9keSAhPT0gbnVsbFxuICAgICkge1xuICAgICAgLy8gQHRvZG8gaGFuZGxlIHZlcnRpY2FsIGpwXG4gICAgICAvLyB0b3Agc2VlbXMgb2sgYnV0IGxlZnQgaXMgbm90LCBpdCBzaG91bGQgcHJvYmFibHkgbm90IGJlIDAgb3Igc29tZXRoaW5nXG4gICAgICBjb25zdCB7IHg6IGxlZnQsIHk6IHRvcCB9ID0gZ2V0U3BpbmVJdGVtUG9zaXRpb25Gcm9tUGFnZUluZGV4KHBhZ2VJbmRleCwgc3BpbmVJdGVtKVxuICAgICAgY29uc3Qgdmlld3BvcnQgPSB7XG4gICAgICAgIGxlZnQsXG4gICAgICAgIHJpZ2h0OiBsZWZ0ICsgcGFnZVNpemUud2lkdGgsXG4gICAgICAgIHRvcCxcbiAgICAgICAgYm90dG9tOiB0b3AgKyBwYWdlU2l6ZS5oZWlnaHRcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzID0gZ2V0Rmlyc3RWaXNpYmxlTm9kZUZvclZpZXdwb3J0KGZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQsIHZpZXdwb3J0KVxuXG4gICAgICByZXR1cm4gcmVzXG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgY29uc3QgZ2V0U3BpbmVJdGVtQ2xvc2VzdFBvc2l0aW9uRnJvbVVuc2FmZVBvc2l0aW9uID0gKHVuc2FmZVBvc2l0aW9uOiBTcGluZUl0ZW1Qb3NpdGlvbiwgc3BpbmVJdGVtOiBTcGluZUl0ZW0pID0+IHtcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHNwaW5lSXRlbS5nZXRFbGVtZW50RGltZW5zaW9ucygpXG5cbiAgICBjb25zdCBhZGp1c3RlZFBvc2l0aW9uID0ge1xuICAgICAgeDogZ2V0Q2xvc2VzdFZhbGlkT2Zmc2V0RnJvbUFwcHJveGltYXRlT2Zmc2V0SW5QYWdlcyh1bnNhZmVQb3NpdGlvbi54LCBjb250ZXh0LmdldFBhZ2VTaXplKCkud2lkdGgsIHdpZHRoKSxcbiAgICAgIHk6IGdldENsb3Nlc3RWYWxpZE9mZnNldEZyb21BcHByb3hpbWF0ZU9mZnNldEluUGFnZXModW5zYWZlUG9zaXRpb24ueSwgY29udGV4dC5nZXRQYWdlU2l6ZSgpLmhlaWdodCwgaGVpZ2h0KVxuICAgIH1cblxuICAgIHJldHVybiBhZGp1c3RlZFBvc2l0aW9uXG4gIH1cblxuICBjb25zdCBnZXRTcGluZUl0ZW1QYWdlSW5kZXhGcm9tTm9kZSA9IChub2RlOiBOb2RlLCBvZmZzZXQ6IG51bWJlciwgc3BpbmVJdGVtOiBTcGluZUl0ZW0pID0+IHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGdldFNwaW5lSXRlbVBvc2l0aW9uRnJvbU5vZGUobm9kZSwgb2Zmc2V0LCBzcGluZUl0ZW0pXG5cbiAgICByZXR1cm4gcG9zaXRpb24gPyBnZXRTcGluZUl0ZW1QYWdlSW5kZXhGcm9tUG9zaXRpb24ocG9zaXRpb24sIHNwaW5lSXRlbSkgOiB1bmRlZmluZWRcbiAgfVxuXG4gIGNvbnN0IGdldFBhZ2VGcm9tT2Zmc2V0ID0gKG9mZnNldDogbnVtYmVyLCBwYWdlV2lkdGg6IG51bWJlciwgbnVtYmVyT2ZQYWdlczogbnVtYmVyKSA9PiB7XG4gICAgY29uc3Qgb2Zmc2V0VmFsdWVzID0gWy4uLkFycmF5KG51bWJlck9mUGFnZXMpXS5tYXAoKF8sIGkpID0+IGkgKiBwYWdlV2lkdGgpXG5cbiAgICBpZiAob2Zmc2V0IDw9IDApIHJldHVybiAwXG5cbiAgICBpZiAob2Zmc2V0ID49IChudW1iZXJPZlBhZ2VzICogcGFnZVdpZHRoKSkgcmV0dXJuIG51bWJlck9mUGFnZXMgLSAxXG5cbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgb2Zmc2V0VmFsdWVzLmZpbmRJbmRleChvZmZzZXRSYW5nZSA9PiBvZmZzZXQgPCAob2Zmc2V0UmFuZ2UgKyBwYWdlV2lkdGgpKSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZ2V0U3BpbmVJdGVtUG9zaXRpb25Gcm9tTm9kZSxcbiAgICBnZXRTcGluZUl0ZW1Qb3NpdGlvbkZyb21QYWdlSW5kZXgsXG4gICAgZ2V0U3BpbmVJdGVtT2Zmc2V0RnJvbUFuY2hvcixcbiAgICBnZXRTcGluZUl0ZW1QYWdlSW5kZXhGcm9tUG9zaXRpb24sXG4gICAgZ2V0U3BpbmVJdGVtUGFnZUluZGV4RnJvbU5vZGUsXG4gICAgZ2V0U3BpbmVJdGVtQ2xvc2VzdFBvc2l0aW9uRnJvbVVuc2FmZVBvc2l0aW9uLFxuICAgIGdldEZpcnN0Tm9kZU9yUmFuZ2VBdFBhZ2VcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/spineItem/locationResolver.ts\n");
|
|
480
|
+
|
|
481
|
+
/***/ }),
|
|
482
|
+
|
|
483
|
+
/***/ "./src/spineItem/navigationResolver.ts":
|
|
484
|
+
/*!*********************************************!*\
|
|
485
|
+
!*** ./src/spineItem/navigationResolver.ts ***!
|
|
486
|
+
\*********************************************/
|
|
487
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
488
|
+
|
|
489
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createNavigationResolver\": () => (/* binding */ createNavigationResolver)\n/* harmony export */ });\n/* harmony import */ var _pagination__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../pagination */ \"./src/pagination.ts\");\n/* harmony import */ var _locationResolver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locationResolver */ \"./src/spineItem/locationResolver.ts\");\n\n\nconst createNavigationResolver = ({ context }) => {\n const spineItemLocator = (0,_locationResolver__WEBPACK_IMPORTED_MODULE_1__.createLocationResolver)({ context });\n const getNavigationForLeftPage = (position, spineItem) => {\n let nextPotentialPosition = {\n x: position.x - context.getPageSize().width,\n y: position.y\n };\n if (spineItem.isUsingVerticalWriting()) {\n nextPotentialPosition = {\n x: position.x,\n y: position.y + context.getPageSize().height\n };\n }\n return spineItemLocator.getSpineItemClosestPositionFromUnsafePosition(nextPotentialPosition, spineItem);\n };\n const getNavigationForRightPage = (position, spineItem) => {\n let nextPotentialPosition = {\n x: position.x + context.getPageSize().width,\n y: position.y\n };\n if (spineItem.isUsingVerticalWriting()) {\n nextPotentialPosition = {\n x: position.x,\n y: position.y - context.getPageSize().height\n };\n }\n return spineItemLocator.getSpineItemClosestPositionFromUnsafePosition(nextPotentialPosition, spineItem);\n };\n const getNavigationForLastPage = (spineItem) => {\n if (spineItem.isUsingVerticalWriting()) {\n const pageHeight = context.getPageSize().height;\n const numberOfPages = (0,_pagination__WEBPACK_IMPORTED_MODULE_0__.getNumberOfPages)(spineItem.getElementDimensions().height, pageHeight);\n return getNavigationForPage(numberOfPages - 1, spineItem);\n }\n else {\n const pageWidth = context.getPageSize().width;\n const numberOfPages = (0,_pagination__WEBPACK_IMPORTED_MODULE_0__.getNumberOfPages)(spineItem.getElementDimensions().width, pageWidth);\n return getNavigationForPage(numberOfPages - 1, spineItem);\n }\n };\n const getNavigationForPage = (pageIndex, spineItem) => {\n const currentViewport = spineItemLocator.getSpineItemPositionFromPageIndex(pageIndex, spineItem);\n return currentViewport;\n };\n const getNavigationFromNode = (spineItem, node, offset) => {\n const position = spineItemLocator.getSpineItemPositionFromNode(node, offset, spineItem);\n return position || { x: 0, y: 0 };\n };\n const getNavigationForPosition = (spineItem, position) => {\n const potentiallyCorrectedPosition = spineItemLocator.getSpineItemClosestPositionFromUnsafePosition(position, spineItem);\n return potentiallyCorrectedPosition;\n };\n return {\n getNavigationForLeftPage,\n getNavigationForRightPage,\n getNavigationForLastPage,\n getNavigationForPage,\n getNavigationForPosition,\n getNavigationFromNode\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3BpbmVJdGVtL25hdmlnYXRpb25SZXNvbHZlci50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFFZ0Q7QUFDVztBQUlwRCxNQUFNLHdCQUF3QixHQUFHLENBQUMsRUFBRSxPQUFPLEVBQXdCLEVBQUUsRUFBRTtJQUM1RSxNQUFNLGdCQUFnQixHQUFHLHlFQUFzQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFFNUQsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLFFBQTJCLEVBQUUsU0FBb0IsRUFBcUIsRUFBRTtRQUN4RyxJQUFJLHFCQUFxQixHQUFHO1lBQzFCLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLO1lBQzNDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNkO1FBRUQsSUFBSSxTQUFTLENBQUMsc0JBQXNCLEVBQUUsRUFBRTtZQUN0QyxxQkFBcUIsR0FBRztnQkFDdEIsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNiLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNO2FBQzdDO1NBQ0Y7UUFFRCxPQUFPLGdCQUFnQixDQUFDLDZDQUE2QyxDQUFDLHFCQUFxQixFQUFFLFNBQVMsQ0FBQztJQUN6RyxDQUFDO0lBRUQsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLFFBQTJCLEVBQUUsU0FBb0IsRUFBcUIsRUFBRTtRQUN6RyxJQUFJLHFCQUFxQixHQUFHO1lBQzFCLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLO1lBQzNDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNkO1FBRUQsSUFBSSxTQUFTLENBQUMsc0JBQXNCLEVBQUUsRUFBRTtZQUN0QyxxQkFBcUIsR0FBRztnQkFDdEIsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNiLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNO2FBQzdDO1NBQ0Y7UUFFRCxPQUFPLGdCQUFnQixDQUFDLDZDQUE2QyxDQUFDLHFCQUFxQixFQUFFLFNBQVMsQ0FBQztJQUN6RyxDQUFDO0lBRUQsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLFNBQW9CLEVBQXFCLEVBQUU7UUFDM0UsSUFBSSxTQUFTLENBQUMsc0JBQXNCLEVBQUUsRUFBRTtZQUN0QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTTtZQUMvQyxNQUFNLGFBQWEsR0FBRyw2REFBZ0IsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDO1lBQzNGLE9BQU8sb0JBQW9CLENBQUMsYUFBYSxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUM7U0FDMUQ7YUFBTTtZQUNMLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLO1lBQzdDLE1BQU0sYUFBYSxHQUFHLDZEQUFnQixDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUM7WUFDekYsT0FBTyxvQkFBb0IsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQztTQUMxRDtJQUNILENBQUM7SUFFRCxNQUFNLG9CQUFvQixHQUFHLENBQUMsU0FBaUIsRUFBRSxTQUFvQixFQUFxQixFQUFFO1FBQzFGLE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLGlDQUFpQyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7UUFFaEcsT0FBTyxlQUFlO0lBQ3hCLENBQUM7SUFFRCxNQUFNLHFCQUFxQixHQUFHLENBQUMsU0FBb0IsRUFBRSxJQUFVLEVBQUUsTUFBYyxFQUFFLEVBQUU7UUFDakYsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUM7UUFFdkYsT0FBTyxRQUFRLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDbkMsQ0FBQztJQUVELE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxTQUFvQixFQUFFLFFBQTJCLEVBQUUsRUFBRTtRQUNyRixNQUFNLDRCQUE0QixHQUFHLGdCQUFnQixDQUFDLDZDQUE2QyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7UUFFeEgsT0FBTyw0QkFBNEI7SUFDckMsQ0FBQztJQUVELE9BQU87UUFDTCx3QkFBd0I7UUFDeEIseUJBQXlCO1FBQ3pCLHdCQUF3QjtRQUN4QixvQkFBb0I7UUFDcEIsd0JBQXdCO1FBQ3hCLHFCQUFxQjtLQUN0QjtBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvc3BpbmVJdGVtL25hdmlnYXRpb25SZXNvbHZlci50cz8yN2NiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNwaW5lSXRlbSB9IGZyb20gXCIuL2NyZWF0ZVNwaW5lSXRlbVwiXG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4uL2NvbnRleHRcIlxuaW1wb3J0IHsgZ2V0TnVtYmVyT2ZQYWdlcyB9IGZyb20gXCIuLi9wYWdpbmF0aW9uXCJcbmltcG9ydCB7IGNyZWF0ZUxvY2F0aW9uUmVzb2x2ZXIgfSBmcm9tIFwiLi9sb2NhdGlvblJlc29sdmVyXCJcblxudHlwZSBTcGluZUl0ZW1Qb3NpdGlvbiA9IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfVxuXG5leHBvcnQgY29uc3QgY3JlYXRlTmF2aWdhdGlvblJlc29sdmVyID0gKHsgY29udGV4dCB9OiB7IGNvbnRleHQ6IENvbnRleHQgfSkgPT4ge1xuICBjb25zdCBzcGluZUl0ZW1Mb2NhdG9yID0gY3JlYXRlTG9jYXRpb25SZXNvbHZlcih7IGNvbnRleHQgfSlcblxuICBjb25zdCBnZXROYXZpZ2F0aW9uRm9yTGVmdFBhZ2UgPSAocG9zaXRpb246IFNwaW5lSXRlbVBvc2l0aW9uLCBzcGluZUl0ZW06IFNwaW5lSXRlbSk6IFNwaW5lSXRlbVBvc2l0aW9uID0+IHtcbiAgICBsZXQgbmV4dFBvdGVudGlhbFBvc2l0aW9uID0ge1xuICAgICAgeDogcG9zaXRpb24ueCAtIGNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aCxcbiAgICAgIHk6IHBvc2l0aW9uLnlcbiAgICB9XG5cbiAgICBpZiAoc3BpbmVJdGVtLmlzVXNpbmdWZXJ0aWNhbFdyaXRpbmcoKSkge1xuICAgICAgbmV4dFBvdGVudGlhbFBvc2l0aW9uID0ge1xuICAgICAgICB4OiBwb3NpdGlvbi54LFxuICAgICAgICB5OiBwb3NpdGlvbi55ICsgY29udGV4dC5nZXRQYWdlU2l6ZSgpLmhlaWdodFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzcGluZUl0ZW1Mb2NhdG9yLmdldFNwaW5lSXRlbUNsb3Nlc3RQb3NpdGlvbkZyb21VbnNhZmVQb3NpdGlvbihuZXh0UG90ZW50aWFsUG9zaXRpb24sIHNwaW5lSXRlbSlcbiAgfVxuXG4gIGNvbnN0IGdldE5hdmlnYXRpb25Gb3JSaWdodFBhZ2UgPSAocG9zaXRpb246IFNwaW5lSXRlbVBvc2l0aW9uLCBzcGluZUl0ZW06IFNwaW5lSXRlbSk6IFNwaW5lSXRlbVBvc2l0aW9uID0+IHtcbiAgICBsZXQgbmV4dFBvdGVudGlhbFBvc2l0aW9uID0ge1xuICAgICAgeDogcG9zaXRpb24ueCArIGNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aCxcbiAgICAgIHk6IHBvc2l0aW9uLnlcbiAgICB9XG5cbiAgICBpZiAoc3BpbmVJdGVtLmlzVXNpbmdWZXJ0aWNhbFdyaXRpbmcoKSkge1xuICAgICAgbmV4dFBvdGVudGlhbFBvc2l0aW9uID0ge1xuICAgICAgICB4OiBwb3NpdGlvbi54LFxuICAgICAgICB5OiBwb3NpdGlvbi55IC0gY29udGV4dC5nZXRQYWdlU2l6ZSgpLmhlaWdodFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzcGluZUl0ZW1Mb2NhdG9yLmdldFNwaW5lSXRlbUNsb3Nlc3RQb3NpdGlvbkZyb21VbnNhZmVQb3NpdGlvbihuZXh0UG90ZW50aWFsUG9zaXRpb24sIHNwaW5lSXRlbSlcbiAgfVxuXG4gIGNvbnN0IGdldE5hdmlnYXRpb25Gb3JMYXN0UGFnZSA9IChzcGluZUl0ZW06IFNwaW5lSXRlbSk6IFNwaW5lSXRlbVBvc2l0aW9uID0+IHtcbiAgICBpZiAoc3BpbmVJdGVtLmlzVXNpbmdWZXJ0aWNhbFdyaXRpbmcoKSkge1xuICAgICAgY29uc3QgcGFnZUhlaWdodCA9IGNvbnRleHQuZ2V0UGFnZVNpemUoKS5oZWlnaHRcbiAgICAgIGNvbnN0IG51bWJlck9mUGFnZXMgPSBnZXROdW1iZXJPZlBhZ2VzKHNwaW5lSXRlbS5nZXRFbGVtZW50RGltZW5zaW9ucygpLmhlaWdodCwgcGFnZUhlaWdodClcbiAgICAgIHJldHVybiBnZXROYXZpZ2F0aW9uRm9yUGFnZShudW1iZXJPZlBhZ2VzIC0gMSwgc3BpbmVJdGVtKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwYWdlV2lkdGggPSBjb250ZXh0LmdldFBhZ2VTaXplKCkud2lkdGhcbiAgICAgIGNvbnN0IG51bWJlck9mUGFnZXMgPSBnZXROdW1iZXJPZlBhZ2VzKHNwaW5lSXRlbS5nZXRFbGVtZW50RGltZW5zaW9ucygpLndpZHRoLCBwYWdlV2lkdGgpXG4gICAgICByZXR1cm4gZ2V0TmF2aWdhdGlvbkZvclBhZ2UobnVtYmVyT2ZQYWdlcyAtIDEsIHNwaW5lSXRlbSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBnZXROYXZpZ2F0aW9uRm9yUGFnZSA9IChwYWdlSW5kZXg6IG51bWJlciwgc3BpbmVJdGVtOiBTcGluZUl0ZW0pOiBTcGluZUl0ZW1Qb3NpdGlvbiA9PiB7XG4gICAgY29uc3QgY3VycmVudFZpZXdwb3J0ID0gc3BpbmVJdGVtTG9jYXRvci5nZXRTcGluZUl0ZW1Qb3NpdGlvbkZyb21QYWdlSW5kZXgocGFnZUluZGV4LCBzcGluZUl0ZW0pXG5cbiAgICByZXR1cm4gY3VycmVudFZpZXdwb3J0XG4gIH1cblxuICBjb25zdCBnZXROYXZpZ2F0aW9uRnJvbU5vZGUgPSAoc3BpbmVJdGVtOiBTcGluZUl0ZW0sIG5vZGU6IE5vZGUsIG9mZnNldDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBzcGluZUl0ZW1Mb2NhdG9yLmdldFNwaW5lSXRlbVBvc2l0aW9uRnJvbU5vZGUobm9kZSwgb2Zmc2V0LCBzcGluZUl0ZW0pXG5cbiAgICByZXR1cm4gcG9zaXRpb24gfHwgeyB4OiAwLCB5OiAwIH1cbiAgfVxuXG4gIGNvbnN0IGdldE5hdmlnYXRpb25Gb3JQb3NpdGlvbiA9IChzcGluZUl0ZW06IFNwaW5lSXRlbSwgcG9zaXRpb246IFNwaW5lSXRlbVBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3QgcG90ZW50aWFsbHlDb3JyZWN0ZWRQb3NpdGlvbiA9IHNwaW5lSXRlbUxvY2F0b3IuZ2V0U3BpbmVJdGVtQ2xvc2VzdFBvc2l0aW9uRnJvbVVuc2FmZVBvc2l0aW9uKHBvc2l0aW9uLCBzcGluZUl0ZW0pXG5cbiAgICByZXR1cm4gcG90ZW50aWFsbHlDb3JyZWN0ZWRQb3NpdGlvblxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXROYXZpZ2F0aW9uRm9yTGVmdFBhZ2UsXG4gICAgZ2V0TmF2aWdhdGlvbkZvclJpZ2h0UGFnZSxcbiAgICBnZXROYXZpZ2F0aW9uRm9yTGFzdFBhZ2UsXG4gICAgZ2V0TmF2aWdhdGlvbkZvclBhZ2UsXG4gICAgZ2V0TmF2aWdhdGlvbkZvclBvc2l0aW9uLFxuICAgIGdldE5hdmlnYXRpb25Gcm9tTm9kZVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/spineItem/navigationResolver.ts\n");
|
|
490
|
+
|
|
491
|
+
/***/ }),
|
|
492
|
+
|
|
493
|
+
/***/ "./src/spineItem/prePaginatedSpineItem.ts":
|
|
494
|
+
/*!************************************************!*\
|
|
495
|
+
!*** ./src/spineItem/prePaginatedSpineItem.ts ***!
|
|
496
|
+
\************************************************/
|
|
497
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
498
|
+
|
|
499
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createPrePaginatedSpineItem\": () => (/* binding */ createPrePaginatedSpineItem)\n/* harmony export */ });\n/* harmony import */ var _commonSpineItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./commonSpineItem */ \"./src/spineItem/commonSpineItem.ts\");\n\nconst createPrePaginatedSpineItem = ({ item, context, containerElement, iframeEventBridgeElement, hooks$, viewportState$ }) => {\n const commonSpineItem = (0,_commonSpineItem__WEBPACK_IMPORTED_MODULE_0__.createCommonSpineItem)({ context, item, parentElement: containerElement, iframeEventBridgeElement, hooks$, viewportState$ });\n const spineItemFrame = commonSpineItem.spineItemFrame;\n const getDimensions = () => {\n const pageSize = context.getPageSize();\n const pageWidth = pageSize.width;\n const columnHeight = pageSize.height;\n const columnWidth = pageWidth;\n return { columnHeight, columnWidth };\n };\n const applySize = ({ blankPagePosition, minimumWidth, spreadPosition }) => {\n var _a;\n const { width: pageWidth, height: pageHeight } = context.getPageSize();\n const { viewportDimensions, computedScale } = commonSpineItem.getViewPortInformation();\n const visibleArea = context.getVisibleAreaRect();\n const frameElement = (_a = spineItemFrame.getManipulableFrame()) === null || _a === void 0 ? void 0 : _a.frame;\n if ((spineItemFrame === null || spineItemFrame === void 0 ? void 0 : spineItemFrame.getIsLoaded()) && (frameElement === null || frameElement === void 0 ? void 0 : frameElement.contentDocument) && (frameElement === null || frameElement === void 0 ? void 0 : frameElement.contentWindow)) {\n const contentWidth = pageWidth;\n const contentHeight = visibleArea.height + context.getCalculatedInnerMargin();\n const cssLink = buildDocumentStyle(Object.assign(Object.assign({}, getDimensions()), { enableTouch: context.getSettings().computedPageTurnMode !== `scrollable`, spreadPosition }), viewportDimensions);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`visibility`, `visible`);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`opacity`, `1`);\n if (viewportDimensions) {\n commonSpineItem.injectStyle(cssLink);\n spineItemFrame.staticLayout({\n width: viewportDimensions.width,\n height: viewportDimensions.height\n });\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`--scale`, `${computedScale}`);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`position`, `absolute`);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`top`, `50%`);\n if (spreadPosition === `left`) {\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`right`, `0`);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.removeProperty(`left`);\n }\n else if (blankPagePosition === `before` && context.isRTL()) {\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`right`, `50%`);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.removeProperty(`left`);\n }\n else if (spreadPosition === `right`) {\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`left`, `0`);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.removeProperty(`right`);\n }\n else {\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`left`, blankPagePosition === `before`\n ? context.isRTL() ? `25%` : `75%`\n : blankPagePosition === `after`\n ? context.isRTL() ? `75%` : `25%`\n : `50%`);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.removeProperty(`right`);\n }\n const transformTranslateX = spreadPosition !== `none`\n ? `0`\n : `-50%`;\n const transformOriginX = (spreadPosition === `right` && blankPagePosition !== `before`)\n ? `left`\n : (spreadPosition === `left` || (blankPagePosition === `before` && context.isRTL()))\n ? `right`\n : `center`;\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`transform`, `translate(${transformTranslateX}, -50%) scale(${computedScale})`);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`transform-origin`, `${transformOriginX} center`);\n commonSpineItem.executeOnLayoutBeforeMeasurmentHook({ minimumWidth });\n }\n else {\n commonSpineItem.injectStyle(cssLink);\n spineItemFrame.staticLayout({\n width: contentWidth,\n height: contentHeight\n });\n if (blankPagePosition === `before`) {\n if (context.isRTL()) {\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`margin-right`, `${pageWidth}px`);\n }\n else {\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`margin-left`, `${pageWidth}px`);\n }\n }\n else {\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.removeProperty(`margin-left`);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.removeProperty(`margin-right`);\n }\n }\n commonSpineItem.executeOnLayoutBeforeMeasurmentHook({ minimumWidth });\n commonSpineItem.layout({ width: minimumWidth, height: contentHeight });\n return { width: minimumWidth, height: contentHeight };\n }\n else {\n commonSpineItem.executeOnLayoutBeforeMeasurmentHook({ minimumWidth });\n commonSpineItem.layout({ width: minimumWidth, height: pageHeight });\n }\n return { width: minimumWidth, height: pageHeight };\n };\n const layout = (layoutInformation) => {\n return applySize(layoutInformation);\n };\n return Object.assign(Object.assign({}, commonSpineItem), { layout });\n};\nconst buildDocumentStyle = ({ columnWidth, enableTouch, spreadPosition }, viewportDimensions) => {\n return `\n body {\n \n }\n body {\n margin: 0;\n ${!viewportDimensions\n ? `\n display: flex;\n justify-content: ${spreadPosition === `left` ? `flex-end` : spreadPosition === `right` ? `flex-start` : `center`};\n `\n : ``}\n }\n ${``}\n html, body {\n height: 100%;\n width: 100%;\n }\n ${``}\n html, body {\n -max-width: ${columnWidth}px !important;\n }\n ${``}\n html, body {\n ${enableTouch\n ? `\n touch-action: none\n `\n : ``}\n }\n ${``}\n img {\n user-select: none;\n -webkit-user-drag: none;\n -khtml-user-drag: none;\n -moz-user-drag: none;\n -o-user-drag: none;\n user-drag: none;\n ${``}\n display: flex;\n ${``}\n ${!viewportDimensions\n ? `\n -width: 100%;\n max-width: 100%;\n height:100%;\n object-fit:contain;\n `\n : ``}\n }\n `;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3BpbmVJdGVtL3ByZVBhZ2luYXRlZFNwaW5lSXRlbS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUl5RDtBQUVsRCxNQUFNLDJCQUEyQixHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sRUFBRSxjQUFjLEVBTzlILEVBQUUsRUFBRTtJQUNILE1BQU0sZUFBZSxHQUFHLHVFQUFxQixDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxDQUFDO0lBQ25KLE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxjQUFjO0lBRXJELE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtRQUN6QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFO1FBQ3RDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLO1FBQ2hDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUFNO1FBQ3BDLE1BQU0sV0FBVyxHQUFHLFNBQVM7UUFFN0IsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUU7SUFDdEMsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUF1SCxFQUFFLEVBQUU7O1FBQzdMLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFO1FBQ3RFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsR0FBRyxlQUFlLENBQUMsc0JBQXNCLEVBQUU7UUFDdEYsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFO1FBQ2hELE1BQU0sWUFBWSxHQUFHLG9CQUFjLENBQUMsbUJBQW1CLEVBQUUsMENBQUUsS0FBSztRQUVoRSxJQUFJLGVBQWMs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Q0FBQyxrQkFBa0I7UUFDckIsQ0FBQyxDQUFDOzsyQkFFbUIsY0FBYyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxjQUFjLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVE7T0FDakg7UUFDRCxDQUFDLENBQUMsRUFBRTs7TUFLSixFQUFFOzs7OztNQVFGLEVBQUU7O29CQUVZLFdBQVc7O01BTzNCLEVBQUU7O1FBRUUsV0FBVztRQUNiLENBQUMsQ0FBQzs7T0FFRDtRQUNELENBQUMsQ0FBQyxFQUFFOztNQUlKLEVBQUU7Ozs7Ozs7O1FBVUEsRUFBRTs7UUFPRixFQUFFO1FBQ0YsQ0FBQyxrQkFBa0I7UUFDckIsQ0FBQyxDQUFDOzs7OztPQUtEO1FBQ0QsQ0FBQyxDQUFDLEVBQUU7O0dBRVA7QUFDSCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL3NwaW5lSXRlbS9wcmVQYWdpbmF0ZWRTcGluZUl0ZW0udHM/ZTEzYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiXG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4uL2NvbnRleHRcIlxuaW1wb3J0IHsgTWFuaWZlc3QgfSBmcm9tIFwiLi4vdHlwZXNcIlxuaW1wb3J0IHsgSG9vayB9IGZyb20gXCIuLi90eXBlcy9Ib29rXCJcbmltcG9ydCB7IGNyZWF0ZUNvbW1vblNwaW5lSXRlbSB9IGZyb20gXCIuL2NvbW1vblNwaW5lSXRlbVwiXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQcmVQYWdpbmF0ZWRTcGluZUl0ZW0gPSAoeyBpdGVtLCBjb250ZXh0LCBjb250YWluZXJFbGVtZW50LCBpZnJhbWVFdmVudEJyaWRnZUVsZW1lbnQsIGhvb2tzJCwgdmlld3BvcnRTdGF0ZSQgfToge1xuICBpdGVtOiBNYW5pZmVzdFtgc3BpbmVJdGVtc2BdW251bWJlcl0sXG4gIGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBpZnJhbWVFdmVudEJyaWRnZUVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBjb250ZXh0OiBDb250ZXh0LFxuICBob29rcyQ6IEJlaGF2aW9yU3ViamVjdDxIb29rW10+LFxuICB2aWV3cG9ydFN0YXRlJDogT2JzZXJ2YWJsZTxgZnJlZWAgfCBgYnVzeWA+XG59KSA9PiB7XG4gIGNvbnN0IGNvbW1vblNwaW5lSXRlbSA9IGNyZWF0ZUNvbW1vblNwaW5lSXRlbSh7IGNvbnRleHQsIGl0ZW0sIHBhcmVudEVsZW1lbnQ6IGNvbnRhaW5lckVsZW1lbnQsIGlmcmFtZUV2ZW50QnJpZGdlRWxlbWVudCwgaG9va3MkLCB2aWV3cG9ydFN0YXRlJCB9KVxuICBjb25zdCBzcGluZUl0ZW1GcmFtZSA9IGNvbW1vblNwaW5lSXRlbS5zcGluZUl0ZW1GcmFtZVxuXG4gIGNvbnN0IGdldERpbWVuc2lvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgcGFnZVNpemUgPSBjb250ZXh0LmdldFBhZ2VTaXplKClcbiAgICBjb25zdCBwYWdlV2lkdGggPSBwYWdlU2l6ZS53aWR0aFxuICAgIGNvbnN0IGNvbHVtbkhlaWdodCA9IHBhZ2VTaXplLmhlaWdodFxuICAgIGNvbnN0IGNvbHVtbldpZHRoID0gcGFnZVdpZHRoXG5cbiAgICByZXR1cm4geyBjb2x1bW5IZWlnaHQsIGNvbHVtbldpZHRoIH1cbiAgfVxuXG4gIGNvbnN0IGFwcGx5U2l6ZSA9ICh7IGJsYW5rUGFnZVBvc2l0aW9uLCBtaW5pbXVtV2lkdGgsIHNwcmVhZFBvc2l0aW9uIH06IHsgYmxhbmtQYWdlUG9zaXRpb246IGBiZWZvcmVgIHwgYGFmdGVyYCB8IGBub25lYCwgbWluaW11bVdpZHRoOiBudW1iZXIsIHNwcmVhZFBvc2l0aW9uOiBgbm9uZWAgfCBgbGVmdGAgfCBgcmlnaHRgIH0pID0+IHtcbiAgICBjb25zdCB7IHdpZHRoOiBwYWdlV2lkdGgsIGhlaWdodDogcGFnZUhlaWdodCB9ID0gY29udGV4dC5nZXRQYWdlU2l6ZSgpXG4gICAgY29uc3QgeyB2aWV3cG9ydERpbWVuc2lvbnMsIGNvbXB1dGVkU2NhbGUgfSA9IGNvbW1vblNwaW5lSXRlbS5nZXRWaWV3UG9ydEluZm9ybWF0aW9uKClcbiAgICBjb25zdCB2aXNpYmxlQXJlYSA9IGNvbnRleHQuZ2V0VmlzaWJsZUFyZWFSZWN0KClcbiAgICBjb25zdCBmcmFtZUVsZW1lbnQgPSBzcGluZUl0ZW1GcmFtZS5nZXRNYW5pcHVsYWJsZUZyYW1lKCk/LmZyYW1lXG5cbiAgICBpZiAoc3BpbmVJdGVtRnJhbWU/LmdldElzTG9hZGVkKCkgJiYgZnJhbWVFbGVtZW50Py5jb250ZW50RG9jdW1lbnQgJiYgZnJhbWVFbGVtZW50Py5jb250ZW50V2luZG93KSB7XG4gICAgICBjb25zdCBjb250ZW50V2lkdGggPSBwYWdlV2lkdGhcbiAgICAgIGNvbnN0IGNvbnRlbnRIZWlnaHQgPSB2aXNpYmxlQXJlYS5oZWlnaHQgKyBjb250ZXh0LmdldENhbGN1bGF0ZWRJbm5lck1hcmdpbigpXG5cbiAgICAgIGNvbnN0IGNzc0xpbmsgPSBidWlsZERvY3VtZW50U3R5bGUoe1xuICAgICAgICAuLi5nZXREaW1lbnNpb25zKCksXG4gICAgICAgIGVuYWJsZVRvdWNoOiBjb250ZXh0LmdldFNldHRpbmdzKCkuY29tcHV0ZWRQYWdlVHVybk1vZGUgIT09IGBzY3JvbGxhYmxlYCxcbiAgICAgICAgc3ByZWFkUG9zaXRpb25cbiAgICAgIH0sIHZpZXdwb3J0RGltZW5zaW9ucylcblxuICAgICAgZnJhbWVFbGVtZW50Py5zdHlsZS5zZXRQcm9wZXJ0eShgdmlzaWJpbGl0eWAsIGB2aXNpYmxlYClcbiAgICAgIGZyYW1lRWxlbWVudD8uc3R5bGUuc2V0UHJvcGVydHkoYG9wYWNpdHlgLCBgMWApXG5cbiAgICAgIGlmICh2aWV3cG9ydERpbWVuc2lvbnMpIHtcbiAgICAgICAgY29tbW9uU3BpbmVJdGVtLmluamVjdFN0eWxlKGNzc0xpbmspXG4gICAgICAgIHNwaW5lSXRlbUZyYW1lLnN0YXRpY0xheW91dCh7XG4gICAgICAgICAgd2lkdGg6IHZpZXdwb3J0RGltZW5zaW9ucy53aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IHZpZXdwb3J0RGltZW5zaW9ucy5oZWlnaHRcbiAgICAgICAgfSlcbiAgICAgICAgZnJhbWVFbGVtZW50Py5zdHlsZS5zZXRQcm9wZXJ0eShgLS1zY2FsZWAsIGAke2NvbXB1dGVkU2NhbGV9YClcbiAgICAgICAgZnJhbWVFbGVtZW50Py5zdHlsZS5zZXRQcm9wZXJ0eShgcG9zaXRpb25gLCBgYWJzb2x1dGVgKVxuICAgICAgICBmcmFtZUVsZW1lbnQ/LnN0eWxlLnNldFByb3BlcnR5KGB0b3BgLCBgNTAlYClcbiAgICAgICAgaWYgKHNwcmVhZFBvc2l0aW9uID09PSBgbGVmdGApIHtcbiAgICAgICAgICBmcmFtZUVsZW1lbnQ/LnN0eWxlLnNldFByb3BlcnR5KGByaWdodGAsIGAwYClcbiAgICAgICAgICBmcmFtZUVsZW1lbnQ/LnN0eWxlLnJlbW92ZVByb3BlcnR5KGBsZWZ0YClcbiAgICAgICAgfSBlbHNlIGlmIChibGFua1BhZ2VQb3NpdGlvbiA9PT0gYGJlZm9yZWAgJiYgY29udGV4dC5pc1JUTCgpKSB7XG4gICAgICAgICAgZnJhbWVFbGVtZW50Py5zdHlsZS5zZXRQcm9wZXJ0eShgcmlnaHRgLCBgNTAlYClcbiAgICAgICAgICBmcmFtZUVsZW1lbnQ/LnN0eWxlLnJlbW92ZVByb3BlcnR5KGBsZWZ0YClcbiAgICAgICAgfSBlbHNlIGlmIChzcHJlYWRQb3NpdGlvbiA9PT0gYHJpZ2h0YCkge1xuICAgICAgICAgIGZyYW1lRWxlbWVudD8uc3R5bGUuc2V0UHJvcGVydHkoYGxlZnRgLCBgMGApXG4gICAgICAgICAgZnJhbWVFbGVtZW50Py5zdHlsZS5yZW1vdmVQcm9wZXJ0eShgcmlnaHRgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZyYW1lRWxlbWVudD8uc3R5bGUuc2V0UHJvcGVydHkoYGxlZnRgLFxuICAgICAgICAgICAgYmxhbmtQYWdlUG9zaXRpb24gPT09IGBiZWZvcmVgXG4gICAgICAgICAgICAgID8gY29udGV4dC5pc1JUTCgpID8gYDI1JWAgOiBgNzUlYFxuICAgICAgICAgICAgICA6IGJsYW5rUGFnZVBvc2l0aW9uID09PSBgYWZ0ZXJgXG4gICAgICAgICAgICAgICAgPyBjb250ZXh0LmlzUlRMKCkgPyBgNzUlYCA6IGAyNSVgXG4gICAgICAgICAgICAgICAgOiBgNTAlYFxuICAgICAgICAgIClcbiAgICAgICAgICBmcmFtZUVsZW1lbnQ/LnN0eWxlLnJlbW92ZVByb3BlcnR5KGByaWdodGApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdHJhbnNmb3JtVHJhbnNsYXRlWCA9XG4gICAgICAgICAgc3ByZWFkUG9zaXRpb24gIT09IGBub25lYFxuICAgICAgICAgICAgPyBgMGBcbiAgICAgICAgICAgIDogYC01MCVgXG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybU9yaWdpblggPVxuICAgICAgICAgIChzcHJlYWRQb3NpdGlvbiA9PT0gYHJpZ2h0YCAmJiBibGFua1BhZ2VQb3NpdGlvbiAhPT0gYGJlZm9yZWApXG4gICAgICAgICAgICA/IGBsZWZ0YFxuICAgICAgICAgICAgOiAoc3ByZWFkUG9zaXRpb24gPT09IGBsZWZ0YCB8fCAoYmxhbmtQYWdlUG9zaXRpb24gPT09IGBiZWZvcmVgICYmIGNvbnRleHQuaXNSVEwoKSkpXG4gICAgICAgICAgICAgICAgPyBgcmlnaHRgXG4gICAgICAgICAgICAgICAgOiBgY2VudGVyYFxuICAgICAgICBmcmFtZUVsZW1lbnQ/LnN0eWxlLnNldFByb3BlcnR5KGB0cmFuc2Zvcm1gLCBgdHJhbnNsYXRlKCR7dHJhbnNmb3JtVHJhbnNsYXRlWH0sIC01MCUpIHNjYWxlKCR7Y29tcHV0ZWRTY2FsZX0pYClcbiAgICAgICAgZnJhbWVFbGVtZW50Py5zdHlsZS5zZXRQcm9wZXJ0eShgdHJhbnNmb3JtLW9yaWdpbmAsIGAke3RyYW5zZm9ybU9yaWdpblh9IGNlbnRlcmApXG5cbiAgICAgICAgY29tbW9uU3BpbmVJdGVtLmV4ZWN1dGVPbkxheW91dEJlZm9yZU1lYXN1cm1lbnRIb29rKHsgbWluaW11bVdpZHRoIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21tb25TcGluZUl0ZW0uaW5qZWN0U3R5bGUoY3NzTGluaylcbiAgICAgICAgc3BpbmVJdGVtRnJhbWUuc3RhdGljTGF5b3V0KHtcbiAgICAgICAgICB3aWR0aDogY29udGVudFdpZHRoLFxuICAgICAgICAgIGhlaWdodDogY29udGVudEhlaWdodFxuICAgICAgICB9KVxuICAgICAgICBpZiAoYmxhbmtQYWdlUG9zaXRpb24gPT09IGBiZWZvcmVgKSB7XG4gICAgICAgICAgaWYgKGNvbnRleHQuaXNSVEwoKSkge1xuICAgICAgICAgICAgZnJhbWVFbGVtZW50Py5zdHlsZS5zZXRQcm9wZXJ0eShgbWFyZ2luLXJpZ2h0YCwgYCR7cGFnZVdpZHRofXB4YClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnJhbWVFbGVtZW50Py5zdHlsZS5zZXRQcm9wZXJ0eShgbWFyZ2luLWxlZnRgLCBgJHtwYWdlV2lkdGh9cHhgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmcmFtZUVsZW1lbnQ/LnN0eWxlLnJlbW92ZVByb3BlcnR5KGBtYXJnaW4tbGVmdGApXG4gICAgICAgICAgZnJhbWVFbGVtZW50Py5zdHlsZS5yZW1vdmVQcm9wZXJ0eShgbWFyZ2luLXJpZ2h0YClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb21tb25TcGluZUl0ZW0uZXhlY3V0ZU9uTGF5b3V0QmVmb3JlTWVhc3VybWVudEhvb2soeyBtaW5pbXVtV2lkdGggfSlcblxuICAgICAgLy8gY29tbW9uU3BpbmVJdGVtLmxheW91dCh7IHdpZHRoOiBtaW5pbXVtV2lkdGgsIGhlaWdodDogY29udGVudEhlaWdodCwgbWluaW11bVdpZHRoLCBibGFua1BhZ2VQb3NpdGlvbiB9KVxuICAgICAgY29tbW9uU3BpbmVJdGVtLmxheW91dCh7IHdpZHRoOiBtaW5pbXVtV2lkdGgsIGhlaWdodDogY29udGVudEhlaWdodCB9KVxuXG4gICAgICByZXR1cm4geyB3aWR0aDogbWluaW11bVdpZHRoLCBoZWlnaHQ6IGNvbnRlbnRIZWlnaHQgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb21tb25TcGluZUl0ZW0uZXhlY3V0ZU9uTGF5b3V0QmVmb3JlTWVhc3VybWVudEhvb2soeyBtaW5pbXVtV2lkdGggfSlcbiAgICAgIC8vIGNvbW1vblNwaW5lSXRlbS5sYXlvdXQoeyB3aWR0aDogbWluaW11bVdpZHRoLCBoZWlnaHQ6IHBhZ2VIZWlnaHQsIG1pbmltdW1XaWR0aCwgYmxhbmtQYWdlUG9zaXRpb24gfSlcbiAgICAgIGNvbW1vblNwaW5lSXRlbS5sYXlvdXQoeyB3aWR0aDogbWluaW11bVdpZHRoLCBoZWlnaHQ6IHBhZ2VIZWlnaHQgfSlcbiAgICB9XG5cbiAgICByZXR1cm4geyB3aWR0aDogbWluaW11bVdpZHRoLCBoZWlnaHQ6IHBhZ2VIZWlnaHQgfVxuICB9XG5cbiAgY29uc3QgbGF5b3V0ID0gKGxheW91dEluZm9ybWF0aW9uOiB7IGJsYW5rUGFnZVBvc2l0aW9uOiBgYmVmb3JlYCB8IGBhZnRlcmAgfCBgbm9uZWAsIG1pbmltdW1XaWR0aDogbnVtYmVyLCBzcHJlYWRQb3NpdGlvbjogYG5vbmVgIHwgYGxlZnRgIHwgYHJpZ2h0YCB9KSA9PiB7XG4gICAgcmV0dXJuIGFwcGx5U2l6ZShsYXlvdXRJbmZvcm1hdGlvbilcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uY29tbW9uU3BpbmVJdGVtLFxuICAgIGxheW91dFxuICB9XG59XG5cbmNvbnN0IGJ1aWxkRG9jdW1lbnRTdHlsZSA9ICh7IGNvbHVtbldpZHRoLCBlbmFibGVUb3VjaCwgc3ByZWFkUG9zaXRpb24gfToge1xuICBjb2x1bW5XaWR0aDogbnVtYmVyLFxuICBjb2x1bW5IZWlnaHQ6IG51bWJlcixcbiAgZW5hYmxlVG91Y2g6IGJvb2xlYW4sXG4gIHNwcmVhZFBvc2l0aW9uOiBgbm9uZWAgfCBgbGVmdGAgfCBgcmlnaHRgXG59LCB2aWV3cG9ydERpbWVuc2lvbnM6IHsgaGVpZ2h0OiBudW1iZXIsIHdpZHRoOiBudW1iZXIgfSB8IHVuZGVmaW5lZCkgPT4ge1xuICByZXR1cm4gYFxuICAgIGJvZHkge1xuICAgICAgXG4gICAgfVxuICAgIGJvZHkge1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgJHshdmlld3BvcnREaW1lbnNpb25zXG4gICAgICA/IGBcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiAke3NwcmVhZFBvc2l0aW9uID09PSBgbGVmdGAgPyBgZmxleC1lbmRgIDogc3ByZWFkUG9zaXRpb24gPT09IGByaWdodGAgPyBgZmxleC1zdGFydGAgOiBgY2VudGVyYH07XG4gICAgICBgXG4gICAgICA6IGBgfVxuICAgIH1cbiAgICAkey8qXG4gICAgICBtaWdodCBiZSBodG1sICogYnV0IGl0IGRvZXMgbWVzcyB1cCB0aGluZ3MgbGlrZSBmaWd1cmUgaWYgc28uXG4gICAgICBjaGVjayBhY2Nlc3NpYmxlX2VwdWJfM1xuICAgICovYGB9XG4gICAgaHRtbCwgYm9keSB7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gICAgJHsvKlxuICAgICAgVGhpcyBvbmUgaXMgaW1wb3J0YW50IGZvciBwcmV2ZW50aW5nIDEwMCUgaW1nIHRvIHJlc2l6ZSBhYm92ZVxuICAgICAgY3VycmVudCB3aWR0aC4gRXNwZWNpYWxseSBuZWVkZWQgZm9yIGNieiBjb252ZXJzaW9uXG4gICAgKi9gYH1cbiAgICBodG1sLCBib2R5IHtcbiAgICAgIC1tYXgtd2lkdGg6ICR7Y29sdW1uV2lkdGh9cHggIWltcG9ydGFudDtcbiAgICB9XG4gICAgJHtcbiAgICAvKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9oYW1tZXJqcy5naXRodWIuaW8vdG91Y2gtYWN0aW9uL1xuICAgICAqIEl0IG5lZWRzIHRvIGJlIGRpc2FibGVkIHdoZW4gdXNpbmcgZnJlZSBzY3JvbGxcbiAgICAgKi9cbiAgICBgYH1cbiAgICBodG1sLCBib2R5IHtcbiAgICAgICR7ZW5hYmxlVG91Y2hcbiAgICAgID8gYFxuICAgICAgICB0b3VjaC1hY3Rpb246IG5vbmVcbiAgICAgIGBcbiAgICAgIDogYGB9XG4gICAgfVxuICAgICR7LypcbiAgICAgIHByZXZlbnQgZHJhZyBvZiBpbWFnZSBpbnN0ZWFkIG9mIHRvdWNoIG9uIGZpcmVmb3hcbiAgICAqL2BgfVxuICAgIGltZyB7XG4gICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lO1xuICAgICAgLWtodG1sLXVzZXItZHJhZzogbm9uZTtcbiAgICAgIC1tb3otdXNlci1kcmFnOiBub25lO1xuICAgICAgLW8tdXNlci1kcmFnOiBub25lO1xuICAgICAgdXNlci1kcmFnOiBub25lO1xuICAgICAgJHsvKlxuICAgICAgICBwcmV2ZW50IHdlaXJkIG92ZXJmbG93IG9yIG1hcmdpbi4gVHJ5IGBibG9ja2AgaWYgYGZsZXhgIGhhcyB3ZWlyZCBiZWhhdmlvclxuICAgICAgKi9gYH1cbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAkey8qXG4gICAgICAgIElmIHRoZSBkb2N1bWVudCBkb2VzIG5vdCBoYXZlIHZpZXdwb3J0LCB3ZSBjYW5ub3Qgc2NhbGUgYW55dGhpbmcgaW5zaWRlLlxuICAgICAgICBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW5zIHdpdGggYSB2YWxpZCBlcHViIGRvY3VtZW50IGhvd2V2ZXIgaXQgd2lsbCBoYXBwZW5zIGlmXG4gICAgICAgIHdlIGxvYWQgLmpwZywgLnBuZywgZXRjIGRpcmVjdGx5IGluIHRoZSBpZnJhbWUuIFRoaXMgaXMgZXhwZWN0ZWQsIGluIHRoaXMgY2FzZSB3ZSBmb3JjZVxuICAgICAgICB0aGUgaW5uZXIgY29udGVudCB0byBkaXNwbGF5IGNvcnJlY3RseS5cbiAgICAgICovYGB9XG4gICAgICAkeyF2aWV3cG9ydERpbWVuc2lvbnNcbiAgICAgID8gYFxuICAgICAgICAtd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6Y29udGFpbjtcbiAgICAgIGBcbiAgICAgIDogYGB9XG4gICAgfVxuICBgXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/spineItem/prePaginatedSpineItem.ts\n");
|
|
500
|
+
|
|
501
|
+
/***/ }),
|
|
502
|
+
|
|
503
|
+
/***/ "./src/spineItem/reflowableSpineItem.ts":
|
|
504
|
+
/*!**********************************************!*\
|
|
505
|
+
!*** ./src/spineItem/reflowableSpineItem.ts ***!
|
|
506
|
+
\**********************************************/
|
|
507
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
508
|
+
|
|
509
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createReflowableSpineItem\": () => (/* binding */ createReflowableSpineItem)\n/* harmony export */ });\n/* harmony import */ var _commonSpineItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./commonSpineItem */ \"./src/spineItem/commonSpineItem.ts\");\n\nconst createReflowableSpineItem = ({ item, context, containerElement, iframeEventBridgeElement, hooks$, viewportState$ }) => {\n const commonSpineItem = (0,_commonSpineItem__WEBPACK_IMPORTED_MODULE_0__.createCommonSpineItem)({ context, item, parentElement: containerElement, iframeEventBridgeElement, hooks$, viewportState$ });\n const spineItemFrame = commonSpineItem.spineItemFrame;\n let latestContentHeightWhenLoaded;\n const getDimensions = (isUsingVerticalWriting, minimumWidth) => {\n const pageSize = context.getPageSize();\n const horizontalMargin = 0;\n const verticalMargin = 0;\n let columnWidth = pageSize.width - (horizontalMargin * 2);\n const columnHeight = pageSize.height - (verticalMargin * 2);\n let width = pageSize.width - (horizontalMargin * 2);\n if (isUsingVerticalWriting) {\n width = minimumWidth - (horizontalMargin * 2);\n columnWidth = columnHeight;\n }\n return {\n columnHeight,\n columnWidth,\n width\n };\n };\n const layout = ({ blankPagePosition, minimumWidth }) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const { width: pageWidth, height: pageHeight } = context.getPageSize();\n (_b = (_a = spineItemFrame.getManipulableFrame()) === null || _a === void 0 ? void 0 : _a.frame) === null || _b === void 0 ? void 0 : _b.style.setProperty(`width`, `${pageWidth}px`);\n (_d = (_c = spineItemFrame.getManipulableFrame()) === null || _c === void 0 ? void 0 : _c.frame) === null || _d === void 0 ? void 0 : _d.style.setProperty(`height`, `${pageHeight}px`);\n const viewportDimensions = spineItemFrame.getViewportDimensions();\n const visibleArea = context.getVisibleAreaRect();\n const frameElement = (_e = spineItemFrame.getManipulableFrame()) === null || _e === void 0 ? void 0 : _e.frame;\n const isGloballyPrePaginated = ((_f = context.getManifest()) === null || _f === void 0 ? void 0 : _f.renditionLayout) === `pre-paginated`;\n if ((spineItemFrame === null || spineItemFrame === void 0 ? void 0 : spineItemFrame.getIsLoaded()) && (frameElement === null || frameElement === void 0 ? void 0 : frameElement.contentDocument) && (frameElement === null || frameElement === void 0 ? void 0 : frameElement.contentWindow)) {\n let contentWidth = pageWidth;\n let contentHeight = visibleArea.height + context.getCalculatedInnerMargin();\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`visibility`, `visible`);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`opacity`, `1`);\n if (viewportDimensions) {\n const computedScale = Math.min(pageWidth / viewportDimensions.width, pageHeight / viewportDimensions.height);\n commonSpineItem.injectStyle(buildStyleForFakePrePaginated());\n commonSpineItem.executeOnLayoutBeforeMeasurmentHook({ minimumWidth });\n spineItemFrame.staticLayout({\n width: viewportDimensions.width,\n height: viewportDimensions.height\n });\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`--scale`, `${computedScale}`);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`position`, `absolute`);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`top`, `50%`);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`left`, blankPagePosition === `before`\n ? context.isRTL() ? `25%` : `75%`\n : blankPagePosition === `after`\n ? context.isRTL() ? `75%` : `25%`\n : `50%`);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`transform`, `translate(-50%, -50%) scale(${computedScale})`);\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`transform-origin`, `center center`);\n }\n else {\n const frameStyle = commonSpineItem.isImageType()\n ? buildStyleForReflowableImageOnly({\n isScrollable: ((_g = context.getManifest()) === null || _g === void 0 ? void 0 : _g.renditionFlow) === `scrolled-continuous`,\n enableTouch: context.getSettings().computedPageTurnMode !== `scrollable`\n })\n : buildStyleWithMultiColumn(getDimensions(spineItemFrame.isUsingVerticalWriting(), minimumWidth));\n commonSpineItem.injectStyle(frameStyle);\n commonSpineItem.executeOnLayoutBeforeMeasurmentHook({ minimumWidth });\n if (spineItemFrame.isUsingVerticalWriting()) {\n const pages = Math.ceil(frameElement.contentDocument.documentElement.scrollHeight / pageHeight);\n contentHeight = pages * pageHeight;\n spineItemFrame.staticLayout({\n width: minimumWidth,\n height: contentHeight\n });\n }\n else if (((_h = context.getManifest()) === null || _h === void 0 ? void 0 : _h.renditionFlow) === `scrolled-continuous`) {\n contentHeight = frameElement.contentDocument.documentElement.scrollHeight;\n latestContentHeightWhenLoaded = contentHeight;\n spineItemFrame.staticLayout({\n width: minimumWidth,\n height: contentHeight\n });\n }\n else {\n const pages = Math.ceil(frameElement.contentDocument.documentElement.scrollWidth / pageWidth);\n if (isGloballyPrePaginated) {\n contentWidth = pageWidth;\n }\n else {\n contentWidth = pages * pageWidth;\n }\n spineItemFrame.staticLayout({\n width: contentWidth,\n height: contentHeight\n });\n }\n }\n const isFillingAllScreen = contentWidth % minimumWidth === 0;\n if (!isFillingAllScreen) {\n contentWidth = contentWidth + pageWidth;\n if (context.isRTL() && !commonSpineItem.isUsingVerticalWriting()) {\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`margin-left`, `${pageWidth}px`);\n }\n }\n else {\n frameElement === null || frameElement === void 0 ? void 0 : frameElement.style.setProperty(`margin-left`, `0px`);\n }\n commonSpineItem.layout({ width: contentWidth, height: contentHeight });\n return { width: contentWidth, height: contentHeight };\n }\n else {\n commonSpineItem.executeOnLayoutBeforeMeasurmentHook({ minimumWidth });\n }\n const height = latestContentHeightWhenLoaded || pageHeight;\n commonSpineItem.layout({ width: minimumWidth, height });\n return { width: minimumWidth, height };\n };\n return Object.assign(Object.assign({}, commonSpineItem), { isReflowable: true, layout });\n};\nconst buildStyleForFakePrePaginated = () => {\n return `\n html {\n width: 100%;\n height: 100%;\n }\n body {\n width: 100%;\n height: 100%;\n margin: 0;\n }\n ${``}\n html, body {\n touch-action: none;\n }\n img {\n display: flex;\n max-width: 100%;\n max-height: 100%;\n margin: 0 auto;\n }\n `;\n};\nconst buildStyleForReflowableImageOnly = ({ isScrollable, enableTouch }) => {\n return `\n html {\n }\n body {\n }\n ${``}\n html, body {\n width: 100%;\n margin: 0;\n padding: 0;\n ${enableTouch\n ? `\n touch-action: none\n `\n : ``}\n }\n ${isScrollable\n ? `\n img {\n height: auto !important;\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n ${``}\n display: block;\n }\n `\n : ``}\n `;\n};\nconst buildStyleWithMultiColumn = ({ width, columnHeight, columnWidth }) => {\n return `\n parsererror {\n display: none !important;\n }\n ${``}\n html, body {\n margin: 0;\n padding: 0 !important;\n -max-width: ${columnWidth}px !important;\n }\n ${``}\n body {\n padding: 0 !important;\n width: ${width}px !important;\n height: ${columnHeight}px !important;\n overflow-y: hidden;\n column-gap: 0px !important;\n column-width: ${columnWidth}px !important;\n column-fill: auto !important;\n word-wrap: break-word;\n box-sizing: border-box;\n }\n body {\n margin: 0;\n }\n body:focus-visible {\n ${``}\n outline: none;\n }\n ${``}\n html, body {\n touch-action: none;\n }\n ${``}\n * {\n -max-width: ${columnWidth}px !important;\n }\n ${``}\n img, video, audio, object, svg {\n max-width: 100%;\n max-width: ${columnWidth}px !important;\n max-height: ${columnHeight}px !important;\n -pointer-events: none;\n -webkit-column-break-inside: avoid;\n page-break-inside: avoid;\n break-inside: avoid;\n }\n figure {\n d-max-width: ${columnWidth}px !important;\n }\n img {\n object-fit: contain;\n break-inside: avoid;\n box-sizing: border-box;\n d-max-width: ${columnWidth}px !important;\n }\n ${``}\n table {\n max-width: ${columnWidth}px !important;\n table-layout: fixed;\n }\n td {\n max-width: ${columnWidth}px;\n }\n `;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3BpbmVJdGVtL3JlZmxvd2FibGVTcGluZUl0ZW0udHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJeUQ7QUFFbEQsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQU81SCxFQUFFLEVBQUU7SUFDSCxNQUFNLGVBQWUsR0FBRyx1RUFBcUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsQ0FBQztJQUNuSixNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsY0FBYztJQVdyRCxJQUFJLDZCQUFpRDtJQUVyRCxNQUFNLGFBQWEsR0FBRyxDQUFDLHNCQUErQixFQUFFLFlBQW9CLEVBQUUsRUFBRTtRQUM5RSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFO1FBQ3RDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQztRQUMxQixNQUFNLGNBQWMsR0FBRyxDQUFDO1FBQ3hCLElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDekQsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDM0QsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztRQUVuRCxJQUFJLHNCQUFzQixFQUFFO1lBQzFCLEtBQUssR0FBRyxZQUFZLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7WUFDN0MsV0FBVyxHQUFHLFlBQVk7U0FDM0I7UUFFRCxPQUFPO1lBQ0wsWUFBWTtZQUNaLFdBQVc7WUFHWCxLQUFLO1NBQ047SUFDSCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxF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Vzs7R0FFM0I7QUFDSCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL3NwaW5lSXRlbS9yZWZsb3dhYmxlU3BpbmVJdGVtLnRzPzA4MGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIlxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi9jb250ZXh0XCJcbmltcG9ydCB7IE1hbmlmZXN0IH0gZnJvbSBcIi4uL3R5cGVzXCJcbmltcG9ydCB7IEhvb2sgfSBmcm9tIFwiLi4vdHlwZXMvSG9va1wiXG5pbXBvcnQgeyBjcmVhdGVDb21tb25TcGluZUl0ZW0gfSBmcm9tIFwiLi9jb21tb25TcGluZUl0ZW1cIlxuXG5leHBvcnQgY29uc3QgY3JlYXRlUmVmbG93YWJsZVNwaW5lSXRlbSA9ICh7IGl0ZW0sIGNvbnRleHQsIGNvbnRhaW5lckVsZW1lbnQsIGlmcmFtZUV2ZW50QnJpZGdlRWxlbWVudCwgaG9va3MkLCB2aWV3cG9ydFN0YXRlJCB9OiB7XG4gIGl0ZW06IE1hbmlmZXN0W2BzcGluZUl0ZW1zYF1bbnVtYmVyXSxcbiAgY29udGFpbmVyRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGlmcmFtZUV2ZW50QnJpZGdlRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGNvbnRleHQ6IENvbnRleHQsXG4gIGhvb2tzJDogQmVoYXZpb3JTdWJqZWN0PEhvb2tbXT4sXG4gIHZpZXdwb3J0U3RhdGUkOiBPYnNlcnZhYmxlPGBmcmVlYCB8IGBidXN5YD5cbn0pID0+IHtcbiAgY29uc3QgY29tbW9uU3BpbmVJdGVtID0gY3JlYXRlQ29tbW9uU3BpbmVJdGVtKHsgY29udGV4dCwgaXRlbSwgcGFyZW50RWxlbWVudDogY29udGFpbmVyRWxlbWVudCwgaWZyYW1lRXZlbnRCcmlkZ2VFbGVtZW50LCBob29rcyQsIHZpZXdwb3J0U3RhdGUkIH0pXG4gIGNvbnN0IHNwaW5lSXRlbUZyYW1lID0gY29tbW9uU3BpbmVJdGVtLnNwaW5lSXRlbUZyYW1lXG4gIC8qKlxuICAgKiBUaGlzIHZhbHVlIGlzIGJlaW5nIHVzZWQgdG8gYXZvaWQgaXRlbSB0byBzaHJpbmsgYmFjayB0byBzbWFsbGVyIHNpemUgd2hlbiBnZXR0aW5nIGEgbGF5b3V0IGFmdGVyXG4gICAqIHRoZSBjb250ZW50IGhhcyBiZWVuIGxvYWRlZC5cbiAgICogVGhpcyBtZWFucyB3aGVuIHByZXZpb3VzIGNvbnRlbnQgZ2V0IHVubG9hZCwgdGhlIHVzZXIgZG9lcyBub3QgZW5kIHVwIGZhcnRoZXIgdGhhbiBoZSBzaG91bGQgYmUgZHVlIHRvIHByZXZpb3VzIGNvbnRlbnRcbiAgICogc2hyaW5raW5nLlxuICAgKlxuICAgKiBAaW1wb3J0YW50XG4gICAqIEZvciBub3cgaXQncyBvbmx5IHVzZWQgZm9yIGNvbnRpbnVvdXMtc2Nyb2xsIGFzIGV4cGVyaW1lbnRhbCB0ZXN0LiBUaGlzIGNvdWxkIHBvdGVudGlhbGx5IHNvbHZlIHRoZSBzbGlkaW5nXG4gICAqIGlzc3VlIHdpdGggcmVmbG93IGNvbnRlbnQgYXMgd2VsLlxuICAgKi9cbiAgbGV0IGxhdGVzdENvbnRlbnRIZWlnaHRXaGVuTG9hZGVkOiBudW1iZXIgfCB1bmRlZmluZWRcblxuICBjb25zdCBnZXREaW1lbnNpb25zID0gKGlzVXNpbmdWZXJ0aWNhbFdyaXRpbmc6IGJvb2xlYW4sIG1pbmltdW1XaWR0aDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgcGFnZVNpemUgPSBjb250ZXh0LmdldFBhZ2VTaXplKClcbiAgICBjb25zdCBob3Jpem9udGFsTWFyZ2luID0gMFxuICAgIGNvbnN0IHZlcnRpY2FsTWFyZ2luID0gMFxuICAgIGxldCBjb2x1bW5XaWR0aCA9IHBhZ2VTaXplLndpZHRoIC0gKGhvcml6b250YWxNYXJnaW4gKiAyKVxuICAgIGNvbnN0IGNvbHVtbkhlaWdodCA9IHBhZ2VTaXplLmhlaWdodCAtICh2ZXJ0aWNhbE1hcmdpbiAqIDIpXG4gICAgbGV0IHdpZHRoID0gcGFnZVNpemUud2lkdGggLSAoaG9yaXpvbnRhbE1hcmdpbiAqIDIpXG5cbiAgICBpZiAoaXNVc2luZ1ZlcnRpY2FsV3JpdGluZykge1xuICAgICAgd2lkdGggPSBtaW5pbXVtV2lkdGggLSAoaG9yaXpvbnRhbE1hcmdpbiAqIDIpXG4gICAgICBjb2x1bW5XaWR0aCA9IGNvbHVtbkhlaWdodFxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb2x1bW5IZWlnaHQsXG4gICAgICBjb2x1bW5XaWR0aCxcbiAgICAgIC8vIGhvcml6b250YWxNYXJnaW4sXG4gICAgICAvLyB2ZXJ0aWNhbE1hcmdpbixcbiAgICAgIHdpZHRoXG4gICAgfVxuICB9XG5cbiAgY29uc3QgbGF5b3V0ID0gKHsgYmxhbmtQYWdlUG9zaXRpb24sIG1pbmltdW1XaWR0aCB9OiB7IGJsYW5rUGFnZVBvc2l0aW9uOiBgYmVmb3JlYCB8IGBhZnRlcmAgfCBgbm9uZWAsIG1pbmltdW1XaWR0aDogbnVtYmVyIH0pID0+IHtcbiAgICBjb25zdCB7IHdpZHRoOiBwYWdlV2lkdGgsIGhlaWdodDogcGFnZUhlaWdodCB9ID0gY29udGV4dC5nZXRQYWdlU2l6ZSgpXG4gICAgLy8gcmVzZXQgd2lkdGggb2YgaWZyYW1lIHRvIGJlIGFibGUgdG8gcmV0cmlldmUgcmVhbCBzaXplIGxhdGVyXG4gICAgc3BpbmVJdGVtRnJhbWUuZ2V0TWFuaXB1bGFibGVGcmFtZSgpPy5mcmFtZT8uc3R5bGUuc2V0UHJvcGVydHkoYHdpZHRoYCwgYCR7cGFnZVdpZHRofXB4YClcbiAgICBzcGluZUl0ZW1GcmFtZS5nZXRNYW5pcHVsYWJsZUZyYW1lKCk/LmZyYW1lPy5zdHlsZS5zZXRQcm9wZXJ0eShgaGVpZ2h0YCwgYCR7cGFnZUhlaWdodH1weGApXG5cbiAgICBjb25zdCB2aWV3cG9ydERpbWVuc2lvbnMgPSBzcGluZUl0ZW1GcmFtZS5nZXRWaWV3cG9ydERpbWVuc2lvbnMoKVxuICAgIGNvbnN0IHZpc2libGVBcmVhID0gY29udGV4dC5nZXRWaXNpYmxlQXJlYVJlY3QoKVxuICAgIGNvbnN0IGZyYW1lRWxlbWVudCA9IHNwaW5lSXRlbUZyYW1lLmdldE1hbmlwdWxhYmxlRnJhbWUoKT8uZnJhbWVcbiAgICBjb25zdCBpc0dsb2JhbGx5UHJlUGFnaW5hdGVkID0gY29udGV4dC5nZXRNYW5pZmVzdCgpPy5yZW5kaXRpb25MYXlvdXQgPT09IGBwcmUtcGFnaW5hdGVkYFxuXG4gICAgaWYgKHNwaW5lSXRlbUZyYW1lPy5nZXRJc0xvYWRlZCgpICYmIGZyYW1lRWxlbWVudD8uY29udGVudERvY3VtZW50ICYmIGZyYW1lRWxlbWVudD8uY29udGVudFdpbmRvdykge1xuICAgICAgbGV0IGNvbnRlbnRXaWR0aCA9IHBhZ2VXaWR0aFxuICAgICAgbGV0IGNvbnRlbnRIZWlnaHQgPSB2aXNpYmxlQXJlYS5oZWlnaHQgKyBjb250ZXh0LmdldENhbGN1bGF0ZWRJbm5lck1hcmdpbigpXG5cbiAgICAgIGZyYW1lRWxlbWVudD8uc3R5bGUuc2V0UHJvcGVydHkoYHZpc2liaWxpdHlgLCBgdmlzaWJsZWApXG4gICAgICBmcmFtZUVsZW1lbnQ/LnN0eWxlLnNldFByb3BlcnR5KGBvcGFjaXR5YCwgYDFgKVxuXG4gICAgICBpZiAodmlld3BvcnREaW1lbnNpb25zKSB7XG4gICAgICAgIGNvbnN0IGNvbXB1dGVkU2NhbGUgPSBNYXRoLm1pbihwYWdlV2lkdGggLyB2aWV3cG9ydERpbWVuc2lvbnMud2lkdGgsIHBhZ2VIZWlnaHQgLyB2aWV3cG9ydERpbWVuc2lvbnMuaGVpZ2h0KVxuICAgICAgICBjb21tb25TcGluZUl0ZW0uaW5qZWN0U3R5bGUoYnVpbGRTdHlsZUZvckZha2VQcmVQYWdpbmF0ZWQoKSlcblxuICAgICAgICBjb21tb25TcGluZUl0ZW0uZXhlY3V0ZU9uTGF5b3V0QmVmb3JlTWVhc3VybWVudEhvb2soeyBtaW5pbXVtV2lkdGggfSlcblxuICAgICAgICBzcGluZUl0ZW1GcmFtZS5zdGF0aWNMYXlvdXQoe1xuICAgICAgICAgIHdpZHRoOiB2aWV3cG9ydERpbWVuc2lvbnMud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiB2aWV3cG9ydERpbWVuc2lvbnMuaGVpZ2h0XG4gICAgICAgIH0pXG4gICAgICAgIGZyYW1lRWxlbWVudD8uc3R5bGUuc2V0UHJvcGVydHkoYC0tc2NhbGVgLCBgJHtjb21wdXRlZFNjYWxlfWApXG4gICAgICAgIGZyYW1lRWxlbWVudD8uc3R5bGUuc2V0UHJvcGVydHkoYHBvc2l0aW9uYCwgYGFic29sdXRlYClcbiAgICAgICAgZnJhbWVFbGVtZW50Py5zdHlsZS5zZXRQcm9wZXJ0eShgdG9wYCwgYDUwJWApXG4gICAgICAgIGZyYW1lRWxlbWVudD8uc3R5bGUuc2V0UHJvcGVydHkoYGxlZnRgLFxuICAgICAgICAgIGJsYW5rUGFnZVBvc2l0aW9uID09PSBgYmVmb3JlYFxuICAgICAgICAgICAgPyBjb250ZXh0LmlzUlRMKCkgPyBgMjUlYCA6IGA3NSVgXG4gICAgICAgICAgICA6IGJsYW5rUGFnZVBvc2l0aW9uID09PSBgYWZ0ZXJgXG4gICAgICAgICAgICAgID8gY29udGV4dC5pc1JUTCgpID8gYDc1JWAgOiBgMjUlYFxuICAgICAgICAgICAgICA6IGA1MCVgXG4gICAgICAgIClcbiAgICAgICAgZnJhbWVFbGVtZW50Py5zdHlsZS5zZXRQcm9wZXJ0eShgdHJhbnNmb3JtYCwgYHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSBzY2FsZSgke2NvbXB1dGVkU2NhbGV9KWApXG4gICAgICAgIGZyYW1lRWxlbWVudD8uc3R5bGUuc2V0UHJvcGVydHkoYHRyYW5zZm9ybS1vcmlnaW5gLCBgY2VudGVyIGNlbnRlcmApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmcmFtZVN0eWxlID0gY29tbW9uU3BpbmVJdGVtLmlzSW1hZ2VUeXBlKClcbiAgICAgICAgICA/IGJ1aWxkU3R5bGVGb3JSZWZsb3dhYmxlSW1hZ2VPbmx5KHtcbiAgICAgICAgICAgIGlzU2Nyb2xsYWJsZTogY29udGV4dC5nZXRNYW5pZmVzdCgpPy5yZW5kaXRpb25GbG93ID09PSBgc2Nyb2xsZWQtY29udGludW91c2AsXG4gICAgICAgICAgICBlbmFibGVUb3VjaDogY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkUGFnZVR1cm5Nb2RlICE9PSBgc2Nyb2xsYWJsZWBcbiAgICAgICAgICB9KVxuICAgICAgICAgIDogYnVpbGRTdHlsZVdpdGhNdWx0aUNvbHVtbihnZXREaW1lbnNpb25zKHNwaW5lSXRlbUZyYW1lLmlzVXNpbmdWZXJ0aWNhbFdyaXRpbmcoKSwgbWluaW11bVdpZHRoKSlcblxuICAgICAgICBjb21tb25TcGluZUl0ZW0uaW5qZWN0U3R5bGUoZnJhbWVTdHlsZSlcblxuICAgICAgICBjb21tb25TcGluZUl0ZW0uZXhlY3V0ZU9uTGF5b3V0QmVmb3JlTWVhc3VybWVudEhvb2soeyBtaW5pbXVtV2lkdGggfSlcblxuICAgICAgICBpZiAoc3BpbmVJdGVtRnJhbWUuaXNVc2luZ1ZlcnRpY2FsV3JpdGluZygpKSB7XG4gICAgICAgICAgY29uc3QgcGFnZXMgPSBNYXRoLmNlaWwoXG4gICAgICAgICAgICBmcmFtZUVsZW1lbnQuY29udGVudERvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQgLyBwYWdlSGVpZ2h0XG4gICAgICAgICAgKVxuICAgICAgICAgIGNvbnRlbnRIZWlnaHQgPSBwYWdlcyAqIHBhZ2VIZWlnaHRcblxuICAgICAgICAgIHNwaW5lSXRlbUZyYW1lLnN0YXRpY0xheW91dCh7XG4gICAgICAgICAgICB3aWR0aDogbWluaW11bVdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBjb250ZW50SGVpZ2h0XG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0LmdldE1hbmlmZXN0KCk/LnJlbmRpdGlvbkZsb3cgPT09IGBzY3JvbGxlZC1jb250aW51b3VzYCkge1xuICAgICAgICAgIGNvbnRlbnRIZWlnaHQgPSBmcmFtZUVsZW1lbnQuY29udGVudERvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICBsYXRlc3RDb250ZW50SGVpZ2h0V2hlbkxvYWRlZCA9IGNvbnRlbnRIZWlnaHRcblxuICAgICAgICAgIHNwaW5lSXRlbUZyYW1lLnN0YXRpY0xheW91dCh7XG4gICAgICAgICAgICB3aWR0aDogbWluaW11bVdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBjb250ZW50SGVpZ2h0XG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBwYWdlcyA9IE1hdGguY2VpbChcbiAgICAgICAgICAgIGZyYW1lRWxlbWVudC5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFdpZHRoIC8gcGFnZVdpZHRoXG4gICAgICAgICAgKVxuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgYSBwcmUtcGFnaW5hdGVkIGVwdWIgaGFzIHJlZmxvd2FibGUgaXRlbSBpbnNpZGUgaXQuIFRoaXMgaXMgd2VpcmQgYmVjYXVzZVxuICAgICAgICAgICAqIHRoZSBzcGVjIHNheXMgdGhhdCB3ZSBzaG91bGQgdXNlIHByZS1wYWdpbmF0ZWQgZm9yIGVhY2ggc3BpbmUgaXRlbS4gQ291bGQgYmUgYSBwdWJsaXNoZXIgbWlzdGFrZSwgaW5cbiAgICAgICAgICAgKiBhbnkgY2FzZSB3ZSBmb2xsb3cgdGhlIHNwZWMgYW5kIGVuZm9yY2UgdGhlIGlmcmFtZSB0byBiZSBjb250YWluZWQgd2l0aGluIHBhZ2Ugd2lkdGguXG4gICAgICAgICAgICogSWYgd2UgZG9uJ3QgcmVzcGVjdCB0aGUgc3BlYyB3ZSBlbmQgdXAgd2l0aCBkeW5hbWljIHBhZ2luYXRpb24gZm9yIGEgZml4ZWQgZG9jdW1lbnQsIHdoaWNoIGNhbiB1cGRhdGVcbiAgICAgICAgICAgKiB0aGUgY29ycmVjdCBudW1iZXIgb2YgcGFnZXMgd2hlbiBpdGVtIGlzIGxvYWRlZC91bmxvYWQuIEJyaW5naW5nIHdlaXJkIHVzZXIgZXhwZXJpZW5jZS5cbiAgICAgICAgICAgKiBUaGUgcHVibGlzaGVyIHNob3VsZCB1c2UgZ2xvYmFsIHJlZmxvd2FibGUgd2l0aCBwcmUtcGFnaW5hdGVkIGNvbnRlbnQgaW5zdGVhZC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBpZiAoaXNHbG9iYWxseVByZVBhZ2luYXRlZCkge1xuICAgICAgICAgICAgY29udGVudFdpZHRoID0gcGFnZVdpZHRoXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRlbnRXaWR0aCA9IHBhZ2VzICogcGFnZVdpZHRoXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3BpbmVJdGVtRnJhbWUuc3RhdGljTGF5b3V0KHtcbiAgICAgICAgICAgIHdpZHRoOiBjb250ZW50V2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGNvbnRlbnRIZWlnaHRcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzRmlsbGluZ0FsbFNjcmVlbiA9IGNvbnRlbnRXaWR0aCAlIG1pbmltdW1XaWR0aCA9PT0gMFxuXG4gICAgICAvLyB3aGVuIGEgcmVmbG93IGlmcmFtZSBkb2VzIG5vdCBmaWxsIHRoZSBlbnRpcmUgc2NyZWVuICh3aGVuIHNwcmVhZCkgd2Ugd2lsbFxuICAgICAgLy8gZW5sYXJnZSB0aGUgY29udGFpbmVyIHRvIG1ha2Ugc3VyZSBubyBvdGhlciByZWZsb3cgaXRlbSBzdGFydHMgb24gdGhlIHNhbWUgc2NyZWVuXG4gICAgICBpZiAoIWlzRmlsbGluZ0FsbFNjcmVlbikge1xuICAgICAgICBjb250ZW50V2lkdGggPSBjb250ZW50V2lkdGggKyBwYWdlV2lkdGhcbiAgICAgICAgaWYgKGNvbnRleHQuaXNSVEwoKSAmJiAhY29tbW9uU3BpbmVJdGVtLmlzVXNpbmdWZXJ0aWNhbFdyaXRpbmcoKSkge1xuICAgICAgICAgIGZyYW1lRWxlbWVudD8uc3R5bGUuc2V0UHJvcGVydHkoYG1hcmdpbi1sZWZ0YCwgYCR7cGFnZVdpZHRofXB4YClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZnJhbWVFbGVtZW50Py5zdHlsZS5zZXRQcm9wZXJ0eShgbWFyZ2luLWxlZnRgLCBgMHB4YClcbiAgICAgIH1cblxuICAgICAgY29tbW9uU3BpbmVJdGVtLmxheW91dCh7IHdpZHRoOiBjb250ZW50V2lkdGgsIGhlaWdodDogY29udGVudEhlaWdodCB9KVxuXG4gICAgICByZXR1cm4geyB3aWR0aDogY29udGVudFdpZHRoLCBoZWlnaHQ6IGNvbnRlbnRIZWlnaHQgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb21tb25TcGluZUl0ZW0uZXhlY3V0ZU9uTGF5b3V0QmVmb3JlTWVhc3VybWVudEhvb2soeyBtaW5pbXVtV2lkdGggfSlcbiAgICB9XG5cbiAgICBjb25zdCBoZWlnaHQgPSBsYXRlc3RDb250ZW50SGVpZ2h0V2hlbkxvYWRlZCB8fCBwYWdlSGVpZ2h0XG5cbiAgICBjb21tb25TcGluZUl0ZW0ubGF5b3V0KHsgd2lkdGg6IG1pbmltdW1XaWR0aCwgaGVpZ2h0IH0pXG5cbiAgICByZXR1cm4geyB3aWR0aDogbWluaW11bVdpZHRoLCBoZWlnaHQgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5jb21tb25TcGluZUl0ZW0sXG4gICAgaXNSZWZsb3dhYmxlOiB0cnVlLFxuICAgIGxheW91dFxuICB9XG59XG5cbi8qKlxuICogSXRlbSBpczpcbiAqIC0gYW55dGhpbmcgdGhhdCBjb250YWlucyBhIGRlZmluZWQgd2lkdGgvaGVpZ2h0IHZpZXdwb3J0XG4gKlxuICogSW4gdGhpcyBjYXNlIHdlIHJlc3BlY3QgdGhlIHZpZXdwb3J0LCBzY2FsZSBpdCBhbmQgYWN0IGFzIHByZS1wYWdpbmF0ZWRcbiAqL1xuY29uc3QgYnVpbGRTdHlsZUZvckZha2VQcmVQYWdpbmF0ZWQgPSAoKSA9PiB7XG4gIHJldHVybiBgXG4gICAgaHRtbCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG4gICAgYm9keSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gICAgJHtcbiAgICAvKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9oYW1tZXJqcy5naXRodWIuaW8vdG91Y2gtYWN0aW9uL1xuICAgICAqL1xuICAgIGBgfVxuICAgIGh0bWwsIGJvZHkge1xuICAgICAgdG91Y2gtYWN0aW9uOiBub25lO1xuICAgIH1cbiAgICBpbWcge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIGBcbn1cblxuLyoqXG4gKiBJdGVtIGlzOlxuICogLSBub3QgcHJlLXBhZ2luYXRlZCAod2Ugd291bGQgbm90IGJlIGluIHRoaXMgaXRlbSBvdGhlcndpc2UpXG4gKiAtIGpwZywgcG5nLCBldGNcbiAqXG4gKiBJdCBkb2VzIG5vdCBtZWFucyBpdCBoYXMgdG8gYmUgcHJlLXBhZ2luYXRlZCAoc2Nyb2xsYWJsZSBmb3IgZXhhbXBsZSlcbiAqL1xuY29uc3QgYnVpbGRTdHlsZUZvclJlZmxvd2FibGVJbWFnZU9ubHkgPSAoeyBpc1Njcm9sbGFibGUsIGVuYWJsZVRvdWNoIH06IHsgZW5hYmxlVG91Y2g6IGJvb2xlYW4sIGlzU2Nyb2xsYWJsZTogYm9vbGVhbiB9KSA9PiB7XG4gIHJldHVybiBgXG4gICAgaHRtbCB7XG4gICAgfVxuICAgIGJvZHkge1xuICAgIH1cbiAgICAke1xuICAgIC8qXG4gICAgICogQHNlZSBodHRwczovL2hhbW1lcmpzLmdpdGh1Yi5pby90b3VjaC1hY3Rpb24vXG4gICAgICovXG4gICAgYGB9XG4gICAgaHRtbCwgYm9keSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAke2VuYWJsZVRvdWNoXG4gICAgICA/IGBcbiAgICAgICAgdG91Y2gtYWN0aW9uOiBub25lXG4gICAgICBgXG4gICAgICA6IGBgfVxuICAgIH1cbiAgICAke2lzU2Nyb2xsYWJsZVxuICAgICAgPyBgXG4gICAgICBpbWcge1xuICAgICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAke1xuICAgICAgLyoqXG4gICAgICAgKiBsaW5lIGJyZWFrIGlzc3VlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM3ODY5MDIwL2ltYWdlLW5vdC10YWtpbmctdXAtdGhlLWZ1bGwtaGVpZ2h0LW9mLWNvbnRhaW5lclxuICAgICAgICovXG4gICAgICBgYH1cbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgYFxuICAgICAgOiBgYH1cbiAgYFxufVxuXG4vKipcbiAqIEl0ZW0gaXM6XG4gKiAtIHJlZ3VsYXIgaHRtbCBkb2N1bWVudFxuICogLSBkb2VzIG5vdCBjb250YWluIGRlZmluZWQgd2lkdGgvaGVpZ2h0IHZpZXdwb3J0XG4gKlxuICogV2UgdXNlIGNzcyBtdWx0aSBjb2x1bW4gdG8gcGFnaW5hdGUgaXRcbiAqXG4gKiBAaW1wb3J0YW50XG4gKiBUaGUgc3R5bGUgaGVyZSBkb2VzIG5vdCB0YWtlcyBtYXJnaW4gaW50byBhY2NvdW50LCB3ZSBhc3N1bWUgZXZlcnl0aGluZyBpcyAwLlxuICogSXQgaXMgYmVpbmcgaGFuZGxlZCBieSBlbmhhbmNlci5cbiAqL1xuY29uc3QgYnVpbGRTdHlsZVdpdGhNdWx0aUNvbHVtbiA9ICh7XG4gIHdpZHRoLFxuICBjb2x1bW5IZWlnaHQsXG4gIGNvbHVtbldpZHRoXG59OiB7XG4gIHdpZHRoOiBudW1iZXIsXG4gIGNvbHVtbldpZHRoOiBudW1iZXIsXG4gIGNvbHVtbkhlaWdodDogbnVtYmVyLFxufSkgPT4ge1xuICByZXR1cm4gYFxuICAgIHBhcnNlcmVycm9yIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgJHsvKlxuICAgICAgbWlnaHQgYmUgaHRtbCAqIGJ1dCBpdCBkb2VzIG1lc3MgdXAgdGhpbmdzIGxpa2UgZmlndXJlIGlmIHNvLlxuICAgICAgY2hlY2sgYWNjZXNzaWJsZV9lcHViXzNcbiAgICAqL2BgfVxuICAgIGh0bWwsIGJvZHkge1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgLW1heC13aWR0aDogJHtjb2x1bW5XaWR0aH1weCAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAkey8qXG4gICAgICBib2R5IHtcbiAgICAgICAgaGVpZ2h0OiAke2NvbHVtbkhlaWdodH1weCAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogJHtjb2x1bW5XaWR0aH1weCAhaW1wb3J0YW50O1xuICAgICAgICAtbWFyZ2luLWxlZnQ6ICR7aG9yaXpvbnRhbE1hcmdpbn1weCAhaW1wb3J0YW50O1xuICAgICAgICAtbWFyZ2luLXJpZ2h0OiAke2hvcml6b250YWxNYXJnaW59cHggIWltcG9ydGFudDtcbiAgICAgICAgLW1hcmdpbjogJHt2ZXJ0aWNhbE1hcmdpbn1weCAke2hvcml6b250YWxNYXJnaW59cHggIWltcG9ydGFudDtcbiAgICAgICAgLXBhZGRpbmctdG9wOiAke2hvcml6b250YWxNYXJnaW59cHggIWltcG9ydGFudDtcbiAgICAgICAgLXBhZGRpbmctYm90dG9tOiAke2hvcml6b250YWxNYXJnaW59cHggIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICAqL2BgfVxuICAgIGJvZHkge1xuICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgd2lkdGg6ICR7d2lkdGh9cHggIWltcG9ydGFudDtcbiAgICAgIGhlaWdodDogJHtjb2x1bW5IZWlnaHR9cHggIWltcG9ydGFudDtcbiAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICAgIGNvbHVtbi1nYXA6IDBweCAhaW1wb3J0YW50O1xuICAgICAgY29sdW1uLXdpZHRoOiAke2NvbHVtbldpZHRofXB4ICFpbXBvcnRhbnQ7XG4gICAgICBjb2x1bW4tZmlsbDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgYm9keSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICAgIGJvZHk6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAkey8qXG4gICAgICAgIHdlIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGFyZSBubyBvdXRsaW5lIHdoZW4gd2UgZm9jdXMgc29tZXRoaW5nIGluc2lkZSB0aGUgaWZyYW1lXG4gICAgICAqL2BgfVxuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG4gICAgJHtcbiAgICAvKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9oYW1tZXJqcy5naXRodWIuaW8vdG91Y2gtYWN0aW9uL1xuICAgICAqL1xuICAgIGBgfVxuICAgIGh0bWwsIGJvZHkge1xuICAgICAgdG91Y2gtYWN0aW9uOiBub25lO1xuICAgIH1cbiAgICAkey8qXG4gICAgICB0aGlzIG1lc3NlcyB1cCBoYXJkLCBiZSBjYXJlZnVsIHdpdGggdGhpc1xuICAgICovYGB9XG4gICAgKiB7XG4gICAgICAtbWF4LXdpZHRoOiAke2NvbHVtbldpZHRofXB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgICR7LypcbiAgICAgIHRoaXMgaXMgbmVjZXNzYXJ5IHRvIGhhdmUgYSBwcm9wZXIgY2FsY3VsYXRpb24gd2hlbiBkZXRlcm1pbmluZyBzaXplXG4gICAgICBvZiBpZnJhbWUgY29udGVudC4gSWYgYW4gaW1nIGlzIHVzaW5nIHNvbWV0aGluZyBsaWtlIHdpZHRoOjEwMCUgaXQgd291bGQgZXhwYW5kIHRvXG4gICAgICB0aGUgc2l6ZSBvZiB0aGUgb3JpZ2luYWwgaW1hZ2UgYW5kIHBvdGVudGlhbGx5IGdpdmVzIGJhY2sgYSB3cm9uZyBzaXplIChtdWNoIGxhcmdlcilcbiAgICAgIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NTU19Db2x1bW5zL0hhbmRsaW5nX092ZXJmbG93X2luX011bHRpY29sXG4gICAgKi9gYH1cbiAgICBpbWcsIHZpZGVvLCBhdWRpbywgb2JqZWN0LCBzdmcge1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgbWF4LXdpZHRoOiAke2NvbHVtbldpZHRofXB4ICFpbXBvcnRhbnQ7XG4gICAgICBtYXgtaGVpZ2h0OiAke2NvbHVtbkhlaWdodH1weCAhaW1wb3J0YW50O1xuICAgICAgLXBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxuICAgIGZpZ3VyZSB7XG4gICAgICBkLW1heC13aWR0aDogJHtjb2x1bW5XaWR0aH1weCAhaW1wb3J0YW50O1xuICAgIH1cbiAgICBpbWcge1xuICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgZC1tYXgtd2lkdGg6ICR7Y29sdW1uV2lkdGh9cHggIWltcG9ydGFudDtcbiAgICB9XG4gICAgJHsvKlxuICAgICAgaW1nLCB2aWRlbywgYXVkaW8sIG9iamVjdCwgc3ZnIHtcbiAgICAgICAgbWF4LWhlaWdodDogJHtjb2x1bW5IZWlnaHR9cHggIWltcG9ydGFudDtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICAgICAgfVxuICAgICovYGB9XG4gICAgdGFibGUge1xuICAgICAgbWF4LXdpZHRoOiAke2NvbHVtbldpZHRofXB4ICFpbXBvcnRhbnQ7XG4gICAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xuICAgIH1cbiAgICB0ZCB7XG4gICAgICBtYXgtd2lkdGg6ICR7Y29sdW1uV2lkdGh9cHg7XG4gICAgfVxuICBgXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/spineItem/reflowableSpineItem.ts\n");
|
|
510
|
+
|
|
511
|
+
/***/ }),
|
|
512
|
+
|
|
513
|
+
/***/ "./src/spineItem/trackers.ts":
|
|
514
|
+
/*!***********************************!*\
|
|
515
|
+
!*** ./src/spineItem/trackers.ts ***!
|
|
516
|
+
\***********************************/
|
|
517
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
518
|
+
|
|
519
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createFingerTracker\": () => (/* binding */ createFingerTracker),\n/* harmony export */ \"createSelectionTracker\": () => (/* binding */ createSelectionTracker)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n\nconst createFingerTracker = () => {\n const fingerPositionInIframe = { x: undefined, y: undefined };\n const subject = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n let isMouseDown = false;\n const track = (frame) => {\n var _a, _b, _c;\n fingerPositionInIframe.x = undefined;\n fingerPositionInIframe.y = undefined;\n (_a = frame.contentDocument) === null || _a === void 0 ? void 0 : _a.addEventListener(`mousedown`, (e) => {\n isMouseDown = true;\n fingerPositionInIframe.x = e.x;\n fingerPositionInIframe.y = e.y;\n subject.next({ event: `fingermove`, data: { x: e.x, y: e.y } });\n });\n (_b = frame.contentDocument) === null || _b === void 0 ? void 0 : _b.addEventListener(`mouseup`, () => {\n isMouseDown = false;\n fingerPositionInIframe.x = undefined;\n fingerPositionInIframe.y = undefined;\n subject.next({ event: `fingerout`, data: undefined });\n });\n (_c = frame.contentDocument) === null || _c === void 0 ? void 0 : _c.addEventListener(`mousemove`, (e) => {\n if (isMouseDown) {\n subject.next({ event: `fingermove`, data: { x: e.x, y: e.y } });\n }\n });\n };\n return {\n track,\n getFingerPositionInIframe() {\n return (fingerPositionInIframe.x === undefined || fingerPositionInIframe.y === undefined) ? undefined : fingerPositionInIframe;\n },\n destroy: () => {\n },\n $: subject.asObservable()\n };\n};\nconst createSelectionTracker = () => {\n let isSelecting = false;\n let frame;\n const subject = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const mouseUpEvents = [\n `mouseup`,\n `pointerup`\n ];\n const track = (frameToTrack) => {\n var _a, _b;\n frame = frameToTrack;\n mouseUpEvents.forEach(eventName => {\n var _a;\n (_a = frameToTrack.contentWindow) === null || _a === void 0 ? void 0 : _a.addEventListener(eventName, () => {\n isSelecting = false;\n });\n });\n (_a = frameToTrack.contentDocument) === null || _a === void 0 ? void 0 : _a.addEventListener(`selectionchange`, () => {\n var _a;\n subject.next({ event: `selectionchange`, data: ((_a = frame === null || frame === void 0 ? void 0 : frame.contentWindow) === null || _a === void 0 ? void 0 : _a.getSelection()) || null });\n });\n (_b = frameToTrack.contentWindow) === null || _b === void 0 ? void 0 : _b.addEventListener(`selectstart`, () => {\n isSelecting = true;\n });\n };\n const destroy = () => {\n };\n return {\n track,\n destroy,\n isSelecting: () => isSelecting,\n getSelection: () => {\n var _a;\n const selection = (_a = frame === null || frame === void 0 ? void 0 : frame.contentWindow) === null || _a === void 0 ? void 0 : _a.getSelection();\n if (!(selection === null || selection === void 0 ? void 0 : selection.anchorNode) || selection.type === `None` || selection.type === `Caret`)\n return undefined;\n return selection;\n },\n $: subject.asObservable()\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LENBQUM7UUFFRixrQkFBWSxDQUFDLGVBQWUsMENBQUUsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFOztZQUNyRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxZQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsYUFBYSwwQ0FBRSxZQUFZLEVBQUUsS0FBSSxJQUFJLEVBQUUsQ0FBQztRQUNoRyxDQUFDLENBQUM7UUFFRixrQkFBWSxDQUFDLGFBQWEsMENBQUUsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtZQUMvRCxXQUFXLEdBQUcsSUFBSTtRQUdwQixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO0lBRXJCLENBQUM7SUFFRCxPQUFPO1FBQ0wsS0FBSztRQUNMLE9BQU87UUFDUCxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVztRQUM5QixZQUFZLEVBQUUsR0FBRyxFQUFFOztZQUNqQixNQUFNLFNBQVMsR0FBRyxXQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsYUFBYSwwQ0FBRSxZQUFZLEVBQUU7WUFDdEQsSUFBSSxDQUFDLFVBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxVQUFVLEtBQUksU0FBUyxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxPQUFPO2dCQUFFLE9BQU8sU0FBUztZQUV2RyxPQUFPLFNBQVM7UUFDbEIsQ0FBQztRQUNELENBQUMsRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFO0tBQzFCO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0Bwcm9zZS1yZWFkZXIvY29yZS8uL3NyYy9zcGluZUl0ZW0vdHJhY2tlcnMudHM/Yjc2YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIlxuXG5leHBvcnQgY29uc3QgY3JlYXRlRmluZ2VyVHJhY2tlciA9ICgpID0+IHtcbiAgY29uc3QgZmluZ2VyUG9zaXRpb25JbklmcmFtZTogeyB4OiBudW1iZXIgfCB1bmRlZmluZWQsIHk6IG51bWJlciB8IHVuZGVmaW5lZCB9ID0geyB4OiB1bmRlZmluZWQsIHk6IHVuZGVmaW5lZCB9XG4gIGNvbnN0IHN1YmplY3QgPSBuZXcgU3ViamVjdDx7IGV2ZW50OiBgZmluZ2VybW92ZWAsIGRhdGE6IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfSB9IHwgeyBldmVudDogYGZpbmdlcm91dGAsIGRhdGE6IHVuZGVmaW5lZCB9PigpXG4gIGxldCBpc01vdXNlRG93biA9IGZhbHNlXG5cbiAgY29uc3QgdHJhY2sgPSAoZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50KSA9PiB7XG4gICAgZmluZ2VyUG9zaXRpb25JbklmcmFtZS54ID0gdW5kZWZpbmVkXG4gICAgZmluZ2VyUG9zaXRpb25JbklmcmFtZS55ID0gdW5kZWZpbmVkXG5cbiAgICBmcmFtZS5jb250ZW50RG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoYG1vdXNlZG93bmAsIChlKSA9PiB7XG4gICAgICBpc01vdXNlRG93biA9IHRydWVcbiAgICAgIGZpbmdlclBvc2l0aW9uSW5JZnJhbWUueCA9IGUueFxuICAgICAgZmluZ2VyUG9zaXRpb25JbklmcmFtZS55ID0gZS55XG4gICAgICBzdWJqZWN0Lm5leHQoeyBldmVudDogYGZpbmdlcm1vdmVgLCBkYXRhOiB7IHg6IGUueCwgeTogZS55IH0gfSlcbiAgICB9KVxuXG4gICAgZnJhbWUuY29udGVudERvY3VtZW50Py5hZGRFdmVudExpc3RlbmVyKGBtb3VzZXVwYCwgKCkgPT4ge1xuICAgICAgaXNNb3VzZURvd24gPSBmYWxzZVxuICAgICAgZmluZ2VyUG9zaXRpb25JbklmcmFtZS54ID0gdW5kZWZpbmVkXG4gICAgICBmaW5nZXJQb3NpdGlvbkluSWZyYW1lLnkgPSB1bmRlZmluZWRcbiAgICAgIHN1YmplY3QubmV4dCh7IGV2ZW50OiBgZmluZ2Vyb3V0YCwgZGF0YTogdW5kZWZpbmVkIH0pXG4gICAgfSlcblxuICAgIGZyYW1lLmNvbnRlbnREb2N1bWVudD8uYWRkRXZlbnRMaXN0ZW5lcihgbW91c2Vtb3ZlYCwgKGUpID0+IHtcbiAgICAgIGlmIChpc01vdXNlRG93bikge1xuICAgICAgICBzdWJqZWN0Lm5leHQoeyBldmVudDogYGZpbmdlcm1vdmVgLCBkYXRhOiB7IHg6IGUueCwgeTogZS55IH0gfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0cmFjayxcbiAgICBnZXRGaW5nZXJQb3NpdGlvbkluSWZyYW1lICgpIHtcbiAgICAgIHJldHVybiAoZmluZ2VyUG9zaXRpb25JbklmcmFtZS54ID09PSB1bmRlZmluZWQgfHwgZmluZ2VyUG9zaXRpb25JbklmcmFtZS55ID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogZmluZ2VyUG9zaXRpb25JbklmcmFtZVxuICAgIH0sXG4gICAgZGVzdHJveTogKCkgPT4ge1xuXG4gICAgfSxcbiAgICAkOiBzdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNlbGVjdGlvblRyYWNrZXIgPSAoKSA9PiB7XG4gIGxldCBpc1NlbGVjdGluZyA9IGZhbHNlXG4gIGxldCBmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQgfCB1bmRlZmluZWRcbiAgY29uc3Qgc3ViamVjdCA9IG5ldyBTdWJqZWN0PFxuICAgIHsgZXZlbnQ6IGBzZWxlY3Rpb25jaGFuZ2VgLCBkYXRhOiBTZWxlY3Rpb24gfCBudWxsIH1cbiAgICB8IHsgZXZlbnQ6IGBzZWxlY3RzdGFydGAsIGRhdGE6IFNlbGVjdGlvbiB8IG51bGwgfVxuICAgIHwgeyBldmVudDogYHNlbGVjdGVuZGAsIGRhdGE6IFNlbGVjdGlvbiB8IG51bGwgfVxuICA+KClcbiAgY29uc3QgbW91c2VVcEV2ZW50cyA9IFtcbiAgICBgbW91c2V1cGAgYXMgY29uc3QsXG4gICAgYHBvaW50ZXJ1cGAgYXMgY29uc3RcbiAgXVxuXG4gIGNvbnN0IHRyYWNrID0gKGZyYW1lVG9UcmFjazogSFRNTElGcmFtZUVsZW1lbnQpID0+IHtcbiAgICBmcmFtZSA9IGZyYW1lVG9UcmFja1xuXG4gICAgbW91c2VVcEV2ZW50cy5mb3JFYWNoKGV2ZW50TmFtZSA9PiB7XG4gICAgICBmcmFtZVRvVHJhY2suY29udGVudFdpbmRvdz8uYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsICgpID0+IHtcbiAgICAgICAgaXNTZWxlY3RpbmcgPSBmYWxzZVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgJHtldmVudE5hbWV9IHNlbGVjdGVuZGAsIGZyYW1lPy5jb250ZW50V2luZG93Py5nZXRTZWxlY3Rpb24oKSwgZnJhbWU/LmNvbnRlbnRXaW5kb3c/LmdldFNlbGVjdGlvbigpPy50b1N0cmluZygpKVxuICAgICAgICAvLyBzdWJqZWN0Lm5leHQoeyBldmVudDogJ3NlbGVjdGVuZCcsIGRhdGE6IGZyYW1lPy5jb250ZW50V2luZG93Py5nZXRTZWxlY3Rpb24oKSB8fCBudWxsIH0pXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBmcmFtZVRvVHJhY2suY29udGVudERvY3VtZW50Py5hZGRFdmVudExpc3RlbmVyKGBzZWxlY3Rpb25jaGFuZ2VgLCAoKSA9PiB7XG4gICAgICBzdWJqZWN0Lm5leHQoeyBldmVudDogYHNlbGVjdGlvbmNoYW5nZWAsIGRhdGE6IGZyYW1lPy5jb250ZW50V2luZG93Py5nZXRTZWxlY3Rpb24oKSB8fCBudWxsIH0pXG4gICAgfSlcblxuICAgIGZyYW1lVG9UcmFjay5jb250ZW50V2luZG93Py5hZGRFdmVudExpc3RlbmVyKGBzZWxlY3RzdGFydGAsICgpID0+IHtcbiAgICAgIGlzU2VsZWN0aW5nID0gdHJ1ZVxuICAgICAgLy8gY29uc29sZS5sb2coYHNlbGVjdHN0YXJ0YCwgZSlcbiAgICAgIC8vIHN1YmplY3QubmV4dCh7IGV2ZW50OiAnc2VsZWN0c3RhcnQnLCBkYXRhOiBmcmFtZT8uY29udGVudFdpbmRvdz8uZ2V0U2VsZWN0aW9uKCkgfHwgbnVsbCB9KVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRyYWNrLFxuICAgIGRlc3Ryb3ksXG4gICAgaXNTZWxlY3Rpbmc6ICgpID0+IGlzU2VsZWN0aW5nLFxuICAgIGdldFNlbGVjdGlvbjogKCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gZnJhbWU/LmNvbnRlbnRXaW5kb3c/LmdldFNlbGVjdGlvbigpXG4gICAgICBpZiAoIXNlbGVjdGlvbj8uYW5jaG9yTm9kZSB8fCBzZWxlY3Rpb24udHlwZSA9PT0gYE5vbmVgIHx8IHNlbGVjdGlvbi50eXBlID09PSBgQ2FyZXRgKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAgIHJldHVybiBzZWxlY3Rpb25cbiAgICB9LFxuICAgICQ6IHN1YmplY3QuYXNPYnNlcnZhYmxlKClcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/spineItem/trackers.ts\n");
|
|
520
|
+
|
|
521
|
+
/***/ }),
|
|
522
|
+
|
|
523
|
+
/***/ "./src/spineItemManager.ts":
|
|
524
|
+
/*!*********************************!*\
|
|
525
|
+
!*** ./src/spineItemManager.ts ***!
|
|
526
|
+
\*********************************/
|
|
527
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
528
|
+
|
|
529
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createSpineItemManager\": () => (/* binding */ createSpineItemManager)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./report */ \"./src/report.ts\");\n/* harmony import */ var _utils_objects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/objects */ \"./src/utils/objects.ts\");\n/* harmony import */ var _utils_manifest__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/manifest */ \"./src/utils/manifest.ts\");\n\n\n\n\n\nconst NAMESPACE = `spineItemManager`;\nconst createSpineItemManager = ({ context }) => {\n const focus$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n const layout$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject();\n let itemLayoutInformation = [];\n const orderedSpineItems = [];\n let focusedSpineItemIndex;\n const layout = () => {\n const manifest = context.getManifest();\n const newItemLayoutInformation = [];\n const isGloballyPrePaginated = (manifest === null || manifest === void 0 ? void 0 : manifest.renditionLayout) === `pre-paginated`;\n const coverItemIndex = manifest ? (0,_utils_manifest__WEBPACK_IMPORTED_MODULE_4__.getCoverItem)(manifest) : undefined;\n orderedSpineItems.reduce((edgeOffset, item, index) => {\n const isPageCover = coverItemIndex === index;\n let minimumWidth = context.getPageSize().width;\n let blankPagePosition = `none`;\n const itemStartOnNewScreen = edgeOffset.edgeX % context.getVisibleAreaRect().width === 0;\n const isLastItem = index === orderedSpineItems.length - 1;\n if (context.shouldDisplaySpread()) {\n if (!isGloballyPrePaginated && item.isReflowable && index !== orderedSpineItems.length - 1) {\n minimumWidth = context.getPageSize().width * 2;\n }\n if (!isGloballyPrePaginated && item.isReflowable && index === orderedSpineItems.length - 1 && itemStartOnNewScreen) {\n minimumWidth = context.getPageSize().width * 2;\n }\n const lastItemStartOnNewScreenInAPrepaginatedBook = itemStartOnNewScreen && isLastItem && isGloballyPrePaginated;\n if (item.item.pageSpreadRight && itemStartOnNewScreen && !context.isRTL()) {\n blankPagePosition = `before`;\n minimumWidth = context.getPageSize().width * 2;\n }\n else if (item.item.pageSpreadLeft && itemStartOnNewScreen && context.isRTL()) {\n blankPagePosition = `before`;\n minimumWidth = context.getPageSize().width * 2;\n }\n else if (lastItemStartOnNewScreenInAPrepaginatedBook) {\n if (context.isRTL()) {\n blankPagePosition = `before`;\n }\n else {\n blankPagePosition = `after`;\n }\n minimumWidth = context.getPageSize().width * 2;\n }\n if (isGloballyPrePaginated && isPageCover) {\n minimumWidth = context.getPageSize().width * 2;\n }\n }\n const { width, height } = item.layout({\n minimumWidth,\n blankPagePosition,\n spreadPosition: context.shouldDisplaySpread()\n ? itemStartOnNewScreen\n ? context.isRTL() ? `right` : `left`\n : context.isRTL() ? `left` : `right`\n : `none`\n });\n if (context.getSettings().computedPageTurnDirection === `vertical`) {\n const currentValidEdgeYForVerticalPositioning = itemStartOnNewScreen ? edgeOffset.edgeY : edgeOffset.edgeY - context.getVisibleAreaRect().height;\n const currentValidEdgeXForVerticalPositioning = itemStartOnNewScreen ? 0 : edgeOffset.edgeX;\n if (context.isRTL()) {\n item.adjustPositionOfElement({\n top: currentValidEdgeYForVerticalPositioning,\n left: currentValidEdgeXForVerticalPositioning\n });\n }\n else {\n item.adjustPositionOfElement({\n top: currentValidEdgeYForVerticalPositioning,\n left: currentValidEdgeXForVerticalPositioning\n });\n }\n const newEdgeX = width + currentValidEdgeXForVerticalPositioning;\n const newEdgeY = height + currentValidEdgeYForVerticalPositioning;\n newItemLayoutInformation.push({\n leftStart: currentValidEdgeXForVerticalPositioning,\n leftEnd: newEdgeX,\n topStart: currentValidEdgeYForVerticalPositioning,\n topEnd: newEdgeY,\n height,\n width\n });\n return {\n edgeX: newEdgeX,\n edgeY: newEdgeY\n };\n }\n if (context.isRTL()) {\n item.adjustPositionOfElement({ right: edgeOffset.edgeX, top: 0 });\n }\n else {\n item.adjustPositionOfElement({ left: edgeOffset.edgeX, top: 0 });\n }\n const newEdgeX = width + edgeOffset.edgeX;\n newItemLayoutInformation.push({\n leftStart: edgeOffset.edgeX,\n leftEnd: newEdgeX,\n topStart: edgeOffset.edgeY,\n topEnd: height,\n height,\n width\n });\n return {\n edgeX: newEdgeX,\n edgeY: 0\n };\n }, { edgeX: 0, edgeY: 0 });\n const hasLayoutChanges = itemLayoutInformation.some((old, index) => !(0,_utils_objects__WEBPACK_IMPORTED_MODULE_3__.isShallowEqual)(old, newItemLayoutInformation[index]));\n itemLayoutInformation = newItemLayoutInformation;\n _report__WEBPACK_IMPORTED_MODULE_2__.Report.log(NAMESPACE, `layout`, { hasLayoutChanges, itemLayoutInformation });\n layout$.next(hasLayoutChanges);\n };\n const focus = (indexOrSpineItem) => {\n const spineItemToFocus = typeof indexOrSpineItem === `number` ? get(indexOrSpineItem) : indexOrSpineItem;\n if (!spineItemToFocus)\n return;\n const newActiveSpineItemIndex = orderedSpineItems.indexOf(spineItemToFocus);\n if (newActiveSpineItemIndex === focusedSpineItemIndex)\n return;\n focusedSpineItemIndex = newActiveSpineItemIndex;\n focus$.next({ data: spineItemToFocus });\n };\n const loadContents = _report__WEBPACK_IMPORTED_MODULE_2__.Report.measurePerformance(`loadContents`, 10, (rangeOfIndex) => {\n var _a, _b;\n const [leftIndex, rightIndex] = rangeOfIndex;\n const numberOfAdjacentSpineItemToPreLoad = ((_a = context.getLoadOptions()) === null || _a === void 0 ? void 0 : _a.numberOfAdjacentSpineItemToPreLoad) || 0;\n const isPrePaginated = ((_b = context.getManifest()) === null || _b === void 0 ? void 0 : _b.renditionLayout) === `pre-paginated`;\n const isUsingFreeScroll = context.getSettings().computedPageTurnMode === `scrollable`;\n orderedSpineItems.forEach((orderedSpineItem, index) => {\n const isBeforeFocusedWithPreload = (index < leftIndex && !isPrePaginated && isUsingFreeScroll)\n ? true\n : index < (leftIndex - numberOfAdjacentSpineItemToPreLoad);\n const isAfterTailWithPreload = index > (rightIndex + numberOfAdjacentSpineItemToPreLoad);\n if (!isBeforeFocusedWithPreload && !isAfterTailWithPreload) {\n orderedSpineItem.loadContent();\n }\n else {\n orderedSpineItem.unloadContent();\n }\n });\n });\n const get = (indexOrId) => {\n if (typeof indexOrId === `number`)\n return orderedSpineItems[indexOrId];\n return orderedSpineItems.find(({ item }) => item.id === indexOrId);\n };\n const getAbsolutePositionOf = _report__WEBPACK_IMPORTED_MODULE_2__.Report.measurePerformance(`getAbsolutePositionOf`, 10, (spineItemOrIndex) => {\n const pageTurnDirection = context.getSettings().computedPageTurnDirection;\n const indexOfItem = typeof spineItemOrIndex === `number` ? spineItemOrIndex : orderedSpineItems.indexOf(spineItemOrIndex);\n const layoutInformation = itemLayoutInformation[indexOfItem];\n if (!layoutInformation) {\n return { leftStart: 0, leftEnd: 0, topStart: 0, topEnd: 0, width: 0, height: 0 };\n }\n return itemLayoutInformation[indexOfItem] || { leftStart: 0, leftEnd: 0, topStart: 0, topEnd: 0, width: 0, height: 0 };\n }, { disable: true });\n const getFocusedSpineItem = () => focusedSpineItemIndex !== undefined ? orderedSpineItems[focusedSpineItemIndex] : undefined;\n const comparePositionOf = (toCompare, withItem) => {\n const isAfter = orderedSpineItems.indexOf(toCompare) > orderedSpineItems.indexOf(withItem);\n if (isAfter) {\n return `after`;\n }\n return `before`;\n };\n const getSpineItemIndex = (spineItem) => {\n if (!spineItem)\n return undefined;\n const index = orderedSpineItems.indexOf(spineItem);\n return index < 0 ? undefined : index;\n };\n const add = (spineItem) => {\n orderedSpineItems.push(spineItem);\n spineItem.$.contentLayoutChangeSubject$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(context.$.destroy$))\n .subscribe(() => {\n layout();\n });\n spineItem.$.loaded$\n .pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.tap)(() => {\n if (spineItem.isUsingVerticalWriting()) {\n context.setHasVerticalWriting();\n }\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.takeUntil)(context.$.destroy$))\n .subscribe();\n spineItem.load();\n };\n const getAll = () => orderedSpineItems;\n const getLength = () => {\n return orderedSpineItems.length;\n };\n const getFocusedSpineItemIndex = () => {\n const item = getFocusedSpineItem();\n return item && getSpineItemIndex(item);\n };\n const getSpineItemAtPosition = _report__WEBPACK_IMPORTED_MODULE_2__.Report.measurePerformance(`getSpineItemAtPosition`, 10, (position) => {\n const detectedItem = orderedSpineItems.find(item => {\n const { leftStart, leftEnd, topEnd, topStart } = getAbsolutePositionOf(item);\n const isWithinXAxis = position.x >= leftStart && position.x < leftEnd;\n if (context.getSettings().computedPageTurnDirection === `horizontal`) {\n return isWithinXAxis;\n }\n else {\n return isWithinXAxis && position.y >= topStart && position.y < topEnd;\n }\n });\n if (position.x === 0 && !detectedItem)\n return orderedSpineItems[0];\n return detectedItem;\n }, { disable: true });\n const destroy = () => {\n orderedSpineItems.forEach(item => item.destroy());\n focus$.complete();\n layout$.complete();\n };\n return {\n add,\n get,\n getAll,\n getLength,\n layout,\n focus,\n loadContents,\n comparePositionOf,\n getAbsolutePositionOf,\n getSpineItemAtPosition,\n getFocusedSpineItem,\n getFocusedSpineItemIndex,\n getSpineItemIndex,\n destroy,\n $: {\n focus$: focus$.asObservable(),\n layout$: layout$.asObservable()\n }\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QkFBd0I7UUFDeEIsaUJBQWlCO1FBQ2pCLE9BQU87UUFDUCxDQUFDLEVBQUU7WUFDRCxNQUFNLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRTtZQUM3QixPQUFPLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRTtTQUNoQztLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0Bwcm9zZS1yZWFkZXIvY29yZS8uL3NyYy9zcGluZUl0ZW1NYW5hZ2VyLnRzPzhlZDUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCJcbmltcG9ydCB7IHRhcCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCJcbmltcG9ydCB7IFJlcG9ydCB9IGZyb20gXCIuL3JlcG9ydFwiXG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4vY29udGV4dFwiXG5pbXBvcnQgeyBTcGluZUl0ZW0gfSBmcm9tIFwiLi9zcGluZUl0ZW0vY3JlYXRlU3BpbmVJdGVtXCJcbmltcG9ydCB7IGlzU2hhbGxvd0VxdWFsIH0gZnJvbSBcIi4vdXRpbHMvb2JqZWN0c1wiXG5pbXBvcnQgeyBnZXRDb3Zlckl0ZW0gfSBmcm9tIFwiLi91dGlscy9tYW5pZmVzdFwiXG5pbXBvcnQgeyBWaWV3cG9ydFBvc2l0aW9uIH0gZnJvbSBcIi4vdHlwZXNcIlxuXG5jb25zdCBOQU1FU1BBQ0UgPSBgc3BpbmVJdGVtTWFuYWdlcmBcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNwaW5lSXRlbU1hbmFnZXIgPSAoeyBjb250ZXh0IH06IHsgY29udGV4dDogQ29udGV4dCB9KSA9PiB7XG4gIGNvbnN0IGZvY3VzJCA9IG5ldyBTdWJqZWN0PHsgZGF0YTogU3BpbmVJdGVtIH0+KClcbiAgY29uc3QgbGF5b3V0JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KClcbiAgLyoqXG4gICAqIFRoaXMgY29udGFpbnMgZXZlcnkgaXRlbSBkaW1lbnNpb24gLyBwb3NpdGlvbiBvbiB0aGUgdmlld3BvcnQuXG4gICAqIFRoaXMgaXMgb25seSB1c2VkIHRvIGF2b2lkIGludGVuc2l2ZWx5IHJlcXVlc3QgYm91bmRpbmcgb2YgZWFjaCBpdGVtcyBsYXRlci5cbiAgICogVGhpcyBpcyBhbHdheXMgaW4gc3luYyB3aXRoIGV2ZXJ5IGxheW91dCBzaW5jZSBpdCBpcyBiZWluZyB1cGRhdGVkIGZvciBldmVyeSBsYXlvdXRcbiAgICogZG9uZSB3aXRoIHRoZSBtYW5hZ2VyLlxuICAgKi9cbiAgbGV0IGl0ZW1MYXlvdXRJbmZvcm1hdGlvbjogeyBsZWZ0U3RhcnQ6IG51bWJlciwgbGVmdEVuZDogbnVtYmVyLCB0b3BTdGFydDogbnVtYmVyLCB0b3BFbmQ6IG51bWJlciwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIgfVtdID0gW11cbiAgY29uc3Qgb3JkZXJlZFNwaW5lSXRlbXM6IFNwaW5lSXRlbVtdID0gW11cbiAgLyoqXG4gICAqIGZvY3VzZWQgaXRlbSByZXByZXNlbnQgdGhlIGN1cnJlbnQgaXRlbSB0aGF0IHRoZSB1c2VyIG5hdmlnYXRlZCB0by5cbiAgICogSXQgY2FuIGJlIGVpdGhlciB0aGUgbGVmdCBvciByaWdodCBwYWdlIGZvciBhIHNwcmVhZCwgbm90IG5lY2Vzc2FyaWx5IHRoZSBiZWdpbiBpdGVtXG4gICAqIGVpdGhlci4gVGhpcyBmb2N1c2VkIGl0ZW0gaXMgdmVyeSBpbXBvcnRhbnQgZm9yIGV2ZXJ5dGhpbmcgdGhhdCBpcyByZWxhdGVkIHRvIG5hdmlnYXRpb25cbiAgICogYW5kIGFkanVzdG1lbnQgb2Ygdmlld3BvcnQuXG4gICAqXG4gICAqIEBpbXBvcnRhbnRcbiAgICogVGhlIGZvY3VzZWQgaXRlbSBjYW4gc29tZXRpbWUgbm90IGJlIHZpc2libGUgb24gdGhlIHNjcmVlbiwgaW4gY2FzZSBvZiBhIHZpZXdwb3J0IG1pc2FsaWdubWVudC5cbiAgICogSG93ZXZlciBpdCBtZWFucyB0aGUgbmV4dCBhZGp1c3RtZW50IHdpbGwgdXNlIHRoZSBmb2N1c2VkIGl0ZW0gdG8gZGV0ZWN0IHdoZW4gdG8gbW92ZSB0aGUgdmlld3BvcnQuXG4gICAqL1xuICBsZXQgZm9jdXNlZFNwaW5lSXRlbUluZGV4OiBudW1iZXIgfCB1bmRlZmluZWRcblxuICAvKipcbiAgICogQHRvZG9cbiAgICogbWFrZSBzdXJlIHRvIGNoZWNrIGhvdyBtYW55IHRpbWVzIGl0IGlzIGJlaW5nIGNhbGxlZCBhbmQgdHJ5IHRvIHJlZHVjZSBudW1iZXIgb2YgbGF5b3V0c1xuICAgKiBpdCBpcyBjYWxsZWQgZWVyeSB0aW1lIGFuIGl0ZW0gaXMgYmVpbmcgdW5sb2FkICh3aGljaCBjYW4gYWRkcyB1cCBxdWlja2x5IGZvciBiaWcgYm9va3MpXG4gICAqL1xuICBjb25zdCBsYXlvdXQgPSAoKSA9PiB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBjb250ZXh0LmdldE1hbmlmZXN0KClcbiAgICBjb25zdCBuZXdJdGVtTGF5b3V0SW5mb3JtYXRpb246IHR5cGVvZiBpdGVtTGF5b3V0SW5mb3JtYXRpb24gPSBbXVxuICAgIGNvbnN0IGlzR2xvYmFsbHlQcmVQYWdpbmF0ZWQgPSBtYW5pZmVzdD8ucmVuZGl0aW9uTGF5b3V0ID09PSBgcHJlLXBhZ2luYXRlZGBcbiAgICBjb25zdCBjb3Zlckl0ZW1JbmRleCA9IG1hbmlmZXN0ID8gZ2V0Q292ZXJJdGVtKG1hbmlmZXN0KSA6IHVuZGVmaW5lZFxuXG4gICAgb3JkZXJlZFNwaW5lSXRlbXMucmVkdWNlKChlZGdlT2Zmc2V0LCBpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgaXNQYWdlQ292ZXIgPSBjb3Zlckl0ZW1JbmRleCA9PT0gaW5kZXhcbiAgICAgIGxldCBtaW5pbXVtV2lkdGggPSBjb250ZXh0LmdldFBhZ2VTaXplKCkud2lkdGhcbiAgICAgIGxldCBibGFua1BhZ2VQb3NpdGlvbjogYG5vbmVgIHwgYGJlZm9yZWAgfCBgYWZ0ZXJgID0gYG5vbmVgXG4gICAgICBjb25zdCBpdGVtU3RhcnRPbk5ld1NjcmVlbiA9IGVkZ2VPZmZzZXQuZWRnZVggJSBjb250ZXh0LmdldFZpc2libGVBcmVhUmVjdCgpLndpZHRoID09PSAwXG4gICAgICBjb25zdCBpc0xhc3RJdGVtID0gaW5kZXggPT09IG9yZGVyZWRTcGluZUl0ZW1zLmxlbmd0aCAtIDFcblxuICAgICAgaWYgKGNvbnRleHQuc2hvdWxkRGlzcGxheVNwcmVhZCgpKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBmb3Igbm93IGV2ZXJ5IHJlZmxvd2FibGUgY29udGVudCB0aGF0IGhhcyByZWZsb3cgc2libGluZ3MgdGFrZXMgdGhlIGVudGlyZSBzY3JlZW4gYnkgZGVmYXVsdFxuICAgICAgICAgKiB0aGlzIHNpbXBsaWZ5IG1hbnkgdGhpbmdzIGFuZCBJIGFtIG5vdCBzdXJlIHRoZSBzcGVjcyBhbGxvdyBvbmUgcmVmbG93XG4gICAgICAgICAqIHRvIGVuZCBhbmQgYW4gb3RoZXIgb25lIHRvIHN0YXJ0IG9uIHRoZSBzYW1lIHNjcmVlbiBhbnl3YXlcbiAgICAgICAgICpcbiAgICAgICAgICogQGltcG9ydGFudFxuICAgICAgICAgKiBGb3Igbm93IHRoaXMgaXMgaW1wb3NzaWJsZSB0byBoYXZlIHJlZmxvdyBub3QgdGFraW5nIGFsbCBzY3JlZW4uIFRoaXMgaXMgYmVjYXVzZVxuICAgICAgICAgKiB3aGVuIGFuIGVsZW1lbnQgaXMgdW5sb2FkZWQsIHRoZSBuZXh0IGVsZW1lbnQgd2lsbCBtb3ZlIGJhY2sgaXRzIHgsIHRoZW4gYW4gYWRqdXN0bWVudFxuICAgICAgICAgKiAgd2lsbCBvY2N1cnMgYW5kIHRoZSBwcmV2aW91cyBlbGVtZW50IHdpbGwgYmVjb21lIHZpc2libGUgYWdhaW4sIG1lYW5pbmcgaXQgd2lsbCBiZSBsb2FkZWQsXG4gICAgICAgICAqIHRoZXJlZm9yZSBwdXNoaW5nIHRoZSBmb2N1c2VkIGVsZW1lbnQsIG1lYW5pbmcgYWRqdXN0bWVudCBhZ2FpbiwgdGhlbiB1bmxvYWQgb2YgcHJldmlvdXMgb25lLFxuICAgICAgICAgKiAuLi4gaW5maW5pdGUgbG9vcC4gRHVlIHRvIHRoZSBuYXR1cmUgb2YgcmVmbG93IGl0J3MgcHJldHR5IG11Y2ggaW1wb3NzaWJsZSB0byBub3QgbG9hZCB0aGUgZW50aXJlXG4gICAgICAgICAqIGJvb2sgd2l0aCBzcHJlYWQgb24gdG8gbWFrZSBpdCB3b3JrLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAaW1wb3J0YW50XG4gICAgICAgICAqIFdoZW4gdGhlIGJvb2sgaXMgZ2xvYmFsbHkgcHJlLXBhZ2luYXRlZCB3ZSB3aWxsIG5vdCBhcHBseSBhbnkgb2YgdGhpcyBldmVuIGlmIGVhY2ggaXRlbSBpc1xuICAgICAgICAgKiByZWZsb3dhYmxlLiBUaGlzIGlzIG1vc3RseSBhIHB1Ymxpc2hlciBtaXN0YWtlIGJ1dCBkb2VzIG5vdCBjb21wbHkgd2l0aCBzcGVjLiBUaGVyZWZvcmVcbiAgICAgICAgICogd2UgaWdub3JlIGl0XG4gICAgICAgICAqL1xuICAgICAgICBpZiAoIWlzR2xvYmFsbHlQcmVQYWdpbmF0ZWQgJiYgaXRlbS5pc1JlZmxvd2FibGUgJiYgaW5kZXggIT09IG9yZGVyZWRTcGluZUl0ZW1zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBtaW5pbXVtV2lkdGggPSBjb250ZXh0LmdldFBhZ2VTaXplKCkud2lkdGggKiAyXG4gICAgICAgIH1cblxuICAgICAgICAvLyBtYWlubHkgdG8gbWFrZSBsb2FkaW5nIHNjcmVlbiBsb29rcyBnb29kXG4gICAgICAgIGlmICghaXNHbG9iYWxseVByZVBhZ2luYXRlZCAmJiBpdGVtLmlzUmVmbG93YWJsZSAmJiBpbmRleCA9PT0gb3JkZXJlZFNwaW5lSXRlbXMubGVuZ3RoIC0gMSAmJiBpdGVtU3RhcnRPbk5ld1NjcmVlbikge1xuICAgICAgICAgIG1pbmltdW1XaWR0aCA9IGNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aCAqIDJcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhc3RJdGVtU3RhcnRPbk5ld1NjcmVlbkluQVByZXBhZ2luYXRlZEJvb2sgPSBpdGVtU3RhcnRPbk5ld1NjcmVlbiAmJiBpc0xhc3RJdGVtICYmIGlzR2xvYmFsbHlQcmVQYWdpbmF0ZWRcblxuICAgICAgICBpZiAoaXRlbS5pdGVtLnBhZ2VTcHJlYWRSaWdodCAmJiBpdGVtU3RhcnRPbk5ld1NjcmVlbiAmJiAhY29udGV4dC5pc1JUTCgpKSB7XG4gICAgICAgICAgYmxhbmtQYWdlUG9zaXRpb24gPSBgYmVmb3JlYFxuICAgICAgICAgIG1pbmltdW1XaWR0aCA9IGNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aCAqIDJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLml0ZW0ucGFnZVNwcmVhZExlZnQgJiYgaXRlbVN0YXJ0T25OZXdTY3JlZW4gJiYgY29udGV4dC5pc1JUTCgpKSB7XG4gICAgICAgICAgYmxhbmtQYWdlUG9zaXRpb24gPSBgYmVmb3JlYFxuICAgICAgICAgIG1pbmltdW1XaWR0aCA9IGNvbnRleHQuZ2V0UGFnZVNpemUoKS53aWR0aCAqIDJcbiAgICAgICAgfSBlbHNlIGlmIChsYXN0SXRlbVN0YXJ0T25OZXdTY3JlZW5JbkFQcmVwYWdpbmF0ZWRCb29rKSB7XG4gICAgICAgICAgaWYgKGNvbnRleHQuaXNSVEwoKSkge1xuICAgICAgICAgICAgYmxhbmtQYWdlUG9zaXRpb24gPSBgYmVmb3JlYFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBibGFua1BhZ2VQb3NpdGlvbiA9IGBhZnRlcmBcbiAgICAgICAgICB9XG4gICAgICAgICAgbWluaW11bVdpZHRoID0gY29udGV4dC5nZXRQYWdlU2l6ZSgpLndpZHRoICogMlxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzR2xvYmFsbHlQcmVQYWdpbmF0ZWQgJiYgaXNQYWdlQ292ZXIpIHtcbiAgICAgICAgICBtaW5pbXVtV2lkdGggPSBjb250ZXh0LmdldFBhZ2VTaXplKCkud2lkdGggKiAyXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBpdGVtLmxheW91dCh7XG4gICAgICAgIG1pbmltdW1XaWR0aCxcbiAgICAgICAgYmxhbmtQYWdlUG9zaXRpb24sXG4gICAgICAgIHNwcmVhZFBvc2l0aW9uOiBjb250ZXh0LnNob3VsZERpc3BsYXlTcHJlYWQoKVxuICAgICAgICAgID8gaXRlbVN0YXJ0T25OZXdTY3JlZW5cbiAgICAgICAgICAgID8gY29udGV4dC5pc1JUTCgpID8gYHJpZ2h0YCA6IGBsZWZ0YFxuICAgICAgICAgICAgOiBjb250ZXh0LmlzUlRMKCkgPyBgbGVmdGAgOiBgcmlnaHRgXG4gICAgICAgICAgOiBgbm9uZWBcbiAgICAgIH0pXG5cbiAgICAgIGlmIChjb250ZXh0LmdldFNldHRpbmdzKCkuY29tcHV0ZWRQYWdlVHVybkRpcmVjdGlvbiA9PT0gYHZlcnRpY2FsYCkge1xuICAgICAgICBjb25zdCBjdXJyZW50VmFsaWRFZGdlWUZvclZlcnRpY2FsUG9zaXRpb25pbmcgPSBpdGVtU3RhcnRPbk5ld1NjcmVlbiA/IGVkZ2VPZmZzZXQuZWRnZVkgOiBlZGdlT2Zmc2V0LmVkZ2VZIC0gY29udGV4dC5nZXRWaXNpYmxlQXJlYVJlY3QoKS5oZWlnaHRcbiAgICAgICAgY29uc3QgY3VycmVudFZhbGlkRWRnZVhGb3JWZXJ0aWNhbFBvc2l0aW9uaW5nID0gaXRlbVN0YXJ0T25OZXdTY3JlZW4gPyAwIDogZWRnZU9mZnNldC5lZGdlWFxuXG4gICAgICAgIGlmIChjb250ZXh0LmlzUlRMKCkpIHtcbiAgICAgICAgICBpdGVtLmFkanVzdFBvc2l0aW9uT2ZFbGVtZW50KHtcbiAgICAgICAgICAgIHRvcDogY3VycmVudFZhbGlkRWRnZVlGb3JWZXJ0aWNhbFBvc2l0aW9uaW5nLFxuICAgICAgICAgICAgbGVmdDogY3VycmVudFZhbGlkRWRnZVhGb3JWZXJ0aWNhbFBvc2l0aW9uaW5nXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtLmFkanVzdFBvc2l0aW9uT2ZFbGVtZW50KHtcbiAgICAgICAgICAgIHRvcDogY3VycmVudFZhbGlkRWRnZVlGb3JWZXJ0aWNhbFBvc2l0aW9uaW5nLFxuICAgICAgICAgICAgbGVmdDogY3VycmVudFZhbGlkRWRnZVhGb3JWZXJ0aWNhbFBvc2l0aW9uaW5nXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld0VkZ2VYID0gd2lkdGggKyBjdXJyZW50VmFsaWRFZGdlWEZvclZlcnRpY2FsUG9zaXRpb25pbmdcbiAgICAgICAgY29uc3QgbmV3RWRnZVkgPSBoZWlnaHQgKyBjdXJyZW50VmFsaWRFZGdlWUZvclZlcnRpY2FsUG9zaXRpb25pbmdcblxuICAgICAgICBuZXdJdGVtTGF5b3V0SW5mb3JtYXRpb24ucHVzaCh7XG4gICAgICAgICAgbGVmdFN0YXJ0OiBjdXJyZW50VmFsaWRFZGdlWEZvclZlcnRpY2FsUG9zaXRpb25pbmcsXG4gICAgICAgICAgbGVmdEVuZDogbmV3RWRnZVgsXG4gICAgICAgICAgdG9wU3RhcnQ6IGN1cnJlbnRWYWxpZEVkZ2VZRm9yVmVydGljYWxQb3NpdGlvbmluZyxcbiAgICAgICAgICB0b3BFbmQ6IG5ld0VkZ2VZLFxuICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICB3aWR0aFxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZWRnZVg6IG5ld0VkZ2VYLFxuICAgICAgICAgIGVkZ2VZOiBuZXdFZGdlWVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjb250ZXh0LmlzUlRMKCkpIHtcbiAgICAgICAgLy8gY291bGQgYWxzbyBiZSBuZWdhdGl2ZSBsZWZ0IGJ1dCBJIGFtIG5vdCBpbiB0aGUgbW9vZFxuICAgICAgICAvLyB3aWxsIHB1c2ggaXRlbXMgb24gdGhlIGxlZnRcbiAgICAgICAgaXRlbS5hZGp1c3RQb3NpdGlvbk9mRWxlbWVudCh7IHJpZ2h0OiBlZGdlT2Zmc2V0LmVkZ2VYLCB0b3A6IDAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHdpbGwgcHVzaCBpdGVtcyBvbiB0aGUgcmlnaHRcbiAgICAgICAgaXRlbS5hZGp1c3RQb3NpdGlvbk9mRWxlbWVudCh7IGxlZnQ6IGVkZ2VPZmZzZXQuZWRnZVgsIHRvcDogMCB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdFZGdlWCA9IHdpZHRoICsgZWRnZU9mZnNldC5lZGdlWFxuXG4gICAgICBuZXdJdGVtTGF5b3V0SW5mb3JtYXRpb24ucHVzaCh7XG4gICAgICAgIGxlZnRTdGFydDogZWRnZU9mZnNldC5lZGdlWCxcbiAgICAgICAgbGVmdEVuZDogbmV3RWRnZVgsXG4gICAgICAgIHRvcFN0YXJ0OiBlZGdlT2Zmc2V0LmVkZ2VZLFxuICAgICAgICB0b3BFbmQ6IGhlaWdodCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB3aWR0aFxuICAgICAgfSlcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZWRnZVg6IG5ld0VkZ2VYLFxuICAgICAgICBlZGdlWTogMFxuICAgICAgfVxuICAgIH0sIHsgZWRnZVg6IDAsIGVkZ2VZOiAwIH0pXG5cbiAgICBjb25zdCBoYXNMYXlvdXRDaGFuZ2VzID0gaXRlbUxheW91dEluZm9ybWF0aW9uLnNvbWUoKG9sZCwgaW5kZXgpID0+ICFpc1NoYWxsb3dFcXVhbChvbGQsIG5ld0l0ZW1MYXlvdXRJbmZvcm1hdGlvbltpbmRleF0pKVxuXG4gICAgaXRlbUxheW91dEluZm9ybWF0aW9uID0gbmV3SXRlbUxheW91dEluZm9ybWF0aW9uXG5cbiAgICBSZXBvcnQubG9nKE5BTUVTUEFDRSwgYGxheW91dGAsIHsgaGFzTGF5b3V0Q2hhbmdlcywgaXRlbUxheW91dEluZm9ybWF0aW9uIH0pXG5cbiAgICBsYXlvdXQkLm5leHQoaGFzTGF5b3V0Q2hhbmdlcylcbiAgfVxuXG4gIGNvbnN0IGZvY3VzID0gKGluZGV4T3JTcGluZUl0ZW06IG51bWJlciB8IFNwaW5lSXRlbSkgPT4ge1xuICAgIGNvbnN0IHNwaW5lSXRlbVRvRm9jdXMgPSB0eXBlb2YgaW5kZXhPclNwaW5lSXRlbSA9PT0gYG51bWJlcmAgPyBnZXQoaW5kZXhPclNwaW5lSXRlbSkgOiBpbmRleE9yU3BpbmVJdGVtXG5cbiAgICBpZiAoIXNwaW5lSXRlbVRvRm9jdXMpIHJldHVyblxuXG4gICAgY29uc3QgbmV3QWN0aXZlU3BpbmVJdGVtSW5kZXggPSBvcmRlcmVkU3BpbmVJdGVtcy5pbmRleE9mKHNwaW5lSXRlbVRvRm9jdXMpXG5cbiAgICBpZiAobmV3QWN0aXZlU3BpbmVJdGVtSW5kZXggPT09IGZvY3VzZWRTcGluZUl0ZW1JbmRleCkgcmV0dXJuXG5cbiAgICBmb2N1c2VkU3BpbmVJdGVtSW5kZXggPSBuZXdBY3RpdmVTcGluZUl0ZW1JbmRleFxuXG4gICAgZm9jdXMkLm5leHQoeyBkYXRhOiBzcGluZUl0ZW1Ub0ZvY3VzIH0pXG4gIH1cblxuICAvKipcbiAgICogQHRvZG9cbiAgICogb3B0aW1pemUgdXNlbGVzcyBjYWxscyB0byBpdCwgc3VjaCBhcyB3aGVuIHRoZSBsYXlvdXQgaGFzIG5vdCBjaGFuZ2VkIGFuZCB0aGUgZm9jdXMgaXMgc3RpbGwgdGhlIHNhbWVcbiAgICogQHRvZG9cbiAgICogYW5hbHl6ZSBwb29yIHBlcmZvcm1hbmNlc1xuICAgKi9cbiAgY29uc3QgbG9hZENvbnRlbnRzID0gUmVwb3J0Lm1lYXN1cmVQZXJmb3JtYW5jZShgbG9hZENvbnRlbnRzYCwgMTAsIChyYW5nZU9mSW5kZXg6IFtudW1iZXIsIG51bWJlcl0pID0+IHtcbiAgICBjb25zdCBbbGVmdEluZGV4LCByaWdodEluZGV4XSA9IHJhbmdlT2ZJbmRleFxuICAgIGNvbnN0IG51bWJlck9mQWRqYWNlbnRTcGluZUl0ZW1Ub1ByZUxvYWQgPSBjb250ZXh0LmdldExvYWRPcHRpb25zKCk/Lm51bWJlck9mQWRqYWNlbnRTcGluZUl0ZW1Ub1ByZUxvYWQgfHwgMFxuICAgIGNvbnN0IGlzUHJlUGFnaW5hdGVkID0gY29udGV4dC5nZXRNYW5pZmVzdCgpPy5yZW5kaXRpb25MYXlvdXQgPT09IGBwcmUtcGFnaW5hdGVkYFxuICAgIGNvbnN0IGlzVXNpbmdGcmVlU2Nyb2xsID0gY29udGV4dC5nZXRTZXR0aW5ncygpLmNvbXB1dGVkUGFnZVR1cm5Nb2RlID09PSBgc2Nyb2xsYWJsZWBcblxuICAgIG9yZGVyZWRTcGluZUl0ZW1zLmZvckVhY2goKG9yZGVyZWRTcGluZUl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBpc0JlZm9yZUZvY3VzZWRXaXRoUHJlbG9hZCA9XG4gICAgICAgIC8vIHdlIG5ldmVyIHdhbnQgdG8gcHJlbG9hZCBhbnl0aGluZyBiZWZvcmUgb24gZnJlZSBzY3JvbGwgb24gZmxvdyBiZWNhdXNlIGl0IGNvdWxkIG9mZnNldCB0aGUgY3Vyc29yXG4gICAgICAgIChpbmRleCA8IGxlZnRJbmRleCAmJiAhaXNQcmVQYWdpbmF0ZWQgJiYgaXNVc2luZ0ZyZWVTY3JvbGwpXG4gICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgOiBpbmRleCA8IChsZWZ0SW5kZXggLSBudW1iZXJPZkFkamFjZW50U3BpbmVJdGVtVG9QcmVMb2FkKVxuICAgICAgY29uc3QgaXNBZnRlclRhaWxXaXRoUHJlbG9hZCA9IGluZGV4ID4gKHJpZ2h0SW5kZXggKyBudW1iZXJPZkFkamFjZW50U3BpbmVJdGVtVG9QcmVMb2FkKVxuICAgICAgaWYgKCFpc0JlZm9yZUZvY3VzZWRXaXRoUHJlbG9hZCAmJiAhaXNBZnRlclRhaWxXaXRoUHJlbG9hZCkge1xuICAgICAgICBvcmRlcmVkU3BpbmVJdGVtLmxvYWRDb250ZW50KClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9yZGVyZWRTcGluZUl0ZW0udW5sb2FkQ29udGVudCgpXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICBjb25zdCBnZXQgPSAoaW5kZXhPcklkOiBudW1iZXIgfCBzdHJpbmcpID0+IHtcbiAgICBpZiAodHlwZW9mIGluZGV4T3JJZCA9PT0gYG51bWJlcmApIHJldHVybiBvcmRlcmVkU3BpbmVJdGVtc1tpbmRleE9ySWRdXG5cbiAgICByZXR1cm4gb3JkZXJlZFNwaW5lSXRlbXMuZmluZCgoeyBpdGVtIH0pID0+IGl0ZW0uaWQgPT09IGluZGV4T3JJZClcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCdzIGltcG9ydGFudCB0byBub3QgdXNlIHgseSBzaW5jZSB3ZSBuZWVkIHRoZSBhYnNvbHV0ZSBwb3NpdGlvbiBvZiBlYWNoIGVsZW1lbnQuIE90aGVyd2lzZSB4LHkgd291bGQgYmUgcmVsYXRpdmUgdG9cbiAgICogY3VycmVudCB3aW5kb3cgKHZpZXdwb3J0KS5cbiAgICovXG4gIGNvbnN0IGdldEFic29sdXRlUG9zaXRpb25PZiA9IFJlcG9ydC5tZWFzdXJlUGVyZm9ybWFuY2UoYGdldEFic29sdXRlUG9zaXRpb25PZmAsIDEwLCAoc3BpbmVJdGVtT3JJbmRleDogU3BpbmVJdGVtIHwgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgcGFnZVR1cm5EaXJlY3Rpb24gPSBjb250ZXh0LmdldFNldHRpbmdzKCkuY29tcHV0ZWRQYWdlVHVybkRpcmVjdGlvblxuICAgIGNvbnN0IGluZGV4T2ZJdGVtID0gdHlwZW9mIHNwaW5lSXRlbU9ySW5kZXggPT09IGBudW1iZXJgID8gc3BpbmVJdGVtT3JJbmRleCA6IG9yZGVyZWRTcGluZUl0ZW1zLmluZGV4T2Yoc3BpbmVJdGVtT3JJbmRleClcblxuICAgIGNvbnN0IGxheW91dEluZm9ybWF0aW9uID0gaXRlbUxheW91dEluZm9ybWF0aW9uW2luZGV4T2ZJdGVtXVxuXG4gICAgaWYgKCFsYXlvdXRJbmZvcm1hdGlvbikge1xuICAgICAgcmV0dXJuIHsgbGVmdFN0YXJ0OiAwLCBsZWZ0RW5kOiAwLCB0b3BTdGFydDogMCwgdG9wRW5kOiAwLCB3aWR0aDogMCwgaGVpZ2h0OiAwIH1cbiAgICB9XG5cbiAgICAvLyBjb25zdCBkaXN0YW5jZSA9IG9yZGVyZWRTcGluZUl0ZW1zXG4gICAgLy8gICAuc2xpY2UoMCwgaW5kZXhPZkl0ZW0gKyAxKVxuICAgIC8vICAgLnJlZHVjZSgoYWNjLCBzcGluZUl0ZW0pID0+IHtcbiAgICAvLyAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBzcGluZUl0ZW0uZ2V0RWxlbWVudERpbWVuc2lvbnMoKVxuXG4gICAgLy8gICAgIHJldHVybiB7XG4gICAgLy8gICAgICAgbGVmdFN0YXJ0OiBwYWdlVHVybkRpcmVjdGlvbiA9PT0gYGhvcml6b250YWxgID8gYWNjLmxlZnRFbmQgOiAwLFxuICAgIC8vICAgICAgIGxlZnRFbmQ6IHBhZ2VUdXJuRGlyZWN0aW9uID09PSBgaG9yaXpvbnRhbGAgPyBhY2MubGVmdEVuZCArIHdpZHRoIDogd2lkdGgsXG4gICAgLy8gICAgICAgdG9wU3RhcnQ6IHBhZ2VUdXJuRGlyZWN0aW9uID09PSBgaG9yaXpvbnRhbGAgPyAwIDogYWNjLnRvcEVuZCxcbiAgICAvLyAgICAgICB0b3BFbmQ6IHBhZ2VUdXJuRGlyZWN0aW9uID09PSBgaG9yaXpvbnRhbGAgPyBoZWlnaHQgOiBhY2MudG9wRW5kICsgaGVpZ2h0LFxuICAgIC8vICAgICAgIHdpZHRoLFxuICAgIC8vICAgICAgIGhlaWdodFxuICAgIC8vICAgICB9XG4gICAgLy8gICB9LCB7IGxlZnRTdGFydDogMCwgbGVmdEVuZDogMCwgdG9wU3RhcnQ6IDAsIHRvcEVuZDogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9KVxuXG4gICAgLy8gY29uc29sZS5sb2coZGlzdGFuY2UsIGl0ZW1MYXlvdXRJbmZvcm1hdGlvbltpbmRleE9mSXRlbV0pXG4gICAgLy8gcmV0dXJuIGRpc3RhbmNlXG5cbiAgICByZXR1cm4gaXRlbUxheW91dEluZm9ybWF0aW9uW2luZGV4T2ZJdGVtXSB8fCB7IGxlZnRTdGFydDogMCwgbGVmdEVuZDogMCwgdG9wU3RhcnQ6IDAsIHRvcEVuZDogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9XG4gIH0sIHsgZGlzYWJsZTogdHJ1ZSB9KVxuXG4gIGNvbnN0IGdldEZvY3VzZWRTcGluZUl0ZW0gPSAoKSA9PiBmb2N1c2VkU3BpbmVJdGVtSW5kZXggIT09IHVuZGVmaW5lZCA/IG9yZGVyZWRTcGluZUl0ZW1zW2ZvY3VzZWRTcGluZUl0ZW1JbmRleF0gOiB1bmRlZmluZWRcblxuICBjb25zdCBjb21wYXJlUG9zaXRpb25PZiA9ICh0b0NvbXBhcmU6IFNwaW5lSXRlbSwgd2l0aEl0ZW06IFNwaW5lSXRlbSkgPT4ge1xuICAgIGNvbnN0IGlzQWZ0ZXIgPSBvcmRlcmVkU3BpbmVJdGVtcy5pbmRleE9mKHRvQ29tcGFyZSkgPiBvcmRlcmVkU3BpbmVJdGVtcy5pbmRleE9mKHdpdGhJdGVtKVxuXG4gICAgaWYgKGlzQWZ0ZXIpIHtcbiAgICAgIHJldHVybiBgYWZ0ZXJgXG4gICAgfVxuXG4gICAgcmV0dXJuIGBiZWZvcmVgXG4gIH1cblxuICBjb25zdCBnZXRTcGluZUl0ZW1JbmRleCA9IChzcGluZUl0ZW06IFNwaW5lSXRlbSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgIGlmICghc3BpbmVJdGVtKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgY29uc3QgaW5kZXggPSBvcmRlcmVkU3BpbmVJdGVtcy5pbmRleE9mKHNwaW5lSXRlbSlcblxuICAgIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBpbmRleFxuICB9XG5cbiAgY29uc3QgYWRkID0gKHNwaW5lSXRlbTogU3BpbmVJdGVtKSA9PiB7XG4gICAgb3JkZXJlZFNwaW5lSXRlbXMucHVzaChzcGluZUl0ZW0pXG5cbiAgICBzcGluZUl0ZW0uJC5jb250ZW50TGF5b3V0Q2hhbmdlU3ViamVjdCRcbiAgICAgIC5waXBlKHRha2VVbnRpbChjb250ZXh0LiQuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIHVwc3RyZWFtIGNoYW5nZSwgbWVhbmluZyB3ZSBuZWVkIHRvIGxheW91dCBhZ2FpbiB0byBib3RoIHJlc2l6ZSBjb3JyZWN0bHkgZWFjaCBpdGVtIGJ1dCBhbHNvIHRvXG4gICAgICAgIC8vIGFkanVzdCBwb3NpdGlvbnMsIGV0Y1xuICAgICAgICBsYXlvdXQoKVxuICAgICAgfSlcblxuICAgIHNwaW5lSXRlbS4kLmxvYWRlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIGlmIChzcGluZUl0ZW0uaXNVc2luZ1ZlcnRpY2FsV3JpdGluZygpKSB7XG4gICAgICAgICAgICBjb250ZXh0LnNldEhhc1ZlcnRpY2FsV3JpdGluZygpXG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKGNvbnRleHQuJC5kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKVxuXG4gICAgc3BpbmVJdGVtLmxvYWQoKVxuICB9XG5cbiAgY29uc3QgZ2V0QWxsID0gKCkgPT4gb3JkZXJlZFNwaW5lSXRlbXNcblxuICBjb25zdCBnZXRMZW5ndGggPSAoKSA9PiB7XG4gICAgcmV0dXJuIG9yZGVyZWRTcGluZUl0ZW1zLmxlbmd0aFxuICB9XG5cbiAgY29uc3QgZ2V0Rm9jdXNlZFNwaW5lSXRlbUluZGV4ID0gKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW0gPSBnZXRGb2N1c2VkU3BpbmVJdGVtKClcbiAgICByZXR1cm4gaXRlbSAmJiBnZXRTcGluZUl0ZW1JbmRleChpdGVtKVxuICB9XG5cbiAgY29uc3QgZ2V0U3BpbmVJdGVtQXRQb3NpdGlvbiA9IFJlcG9ydC5tZWFzdXJlUGVyZm9ybWFuY2UoYGdldFNwaW5lSXRlbUF0UG9zaXRpb25gLCAxMCwgKHBvc2l0aW9uOiBWaWV3cG9ydFBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3QgZGV0ZWN0ZWRJdGVtID0gb3JkZXJlZFNwaW5lSXRlbXMuZmluZChpdGVtID0+IHtcbiAgICAgIGNvbnN0IHsgbGVmdFN0YXJ0LCBsZWZ0RW5kLCB0b3BFbmQsIHRvcFN0YXJ0IH0gPSBnZXRBYnNvbHV0ZVBvc2l0aW9uT2YoaXRlbSlcblxuICAgICAgY29uc3QgaXNXaXRoaW5YQXhpcyA9IHBvc2l0aW9uLnggPj0gbGVmdFN0YXJ0ICYmIHBvc2l0aW9uLnggPCBsZWZ0RW5kXG5cbiAgICAgIGlmIChjb250ZXh0LmdldFNldHRpbmdzKCkuY29tcHV0ZWRQYWdlVHVybkRpcmVjdGlvbiA9PT0gYGhvcml6b250YWxgKSB7XG4gICAgICAgIHJldHVybiBpc1dpdGhpblhBeGlzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaXNXaXRoaW5YQXhpcyAmJiBwb3NpdGlvbi55ID49IHRvcFN0YXJ0ICYmIHBvc2l0aW9uLnkgPCB0b3BFbmRcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKHBvc2l0aW9uLnggPT09IDAgJiYgIWRldGVjdGVkSXRlbSkgcmV0dXJuIG9yZGVyZWRTcGluZUl0ZW1zWzBdXG5cbiAgICByZXR1cm4gZGV0ZWN0ZWRJdGVtXG4gIH0sIHsgZGlzYWJsZTogdHJ1ZSB9KVxuXG4gIGNvbnN0IGRlc3Ryb3kgPSAoKSA9PiB7XG4gICAgb3JkZXJlZFNwaW5lSXRlbXMuZm9yRWFjaChpdGVtID0+IGl0ZW0uZGVzdHJveSgpKVxuICAgIGZvY3VzJC5jb21wbGV0ZSgpXG4gICAgbGF5b3V0JC5jb21wbGV0ZSgpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFkZCxcbiAgICBnZXQsXG4gICAgZ2V0QWxsLFxuICAgIGdldExlbmd0aCxcbiAgICBsYXlvdXQsXG4gICAgZm9jdXMsXG4gICAgbG9hZENvbnRlbnRzLFxuICAgIGNvbXBhcmVQb3NpdGlvbk9mLFxuICAgIGdldEFic29sdXRlUG9zaXRpb25PZixcbiAgICBnZXRTcGluZUl0ZW1BdFBvc2l0aW9uLFxuICAgIGdldEZvY3VzZWRTcGluZUl0ZW0sXG4gICAgZ2V0Rm9jdXNlZFNwaW5lSXRlbUluZGV4LFxuICAgIGdldFNwaW5lSXRlbUluZGV4LFxuICAgIGRlc3Ryb3ksXG4gICAgJDoge1xuICAgICAgZm9jdXMkOiBmb2N1cyQuYXNPYnNlcnZhYmxlKCksXG4gICAgICBsYXlvdXQkOiBsYXlvdXQkLmFzT2JzZXJ2YWJsZSgpXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIFNwaW5lSXRlbU1hbmFnZXIgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVTcGluZUl0ZW1NYW5hZ2VyPlxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/spineItemManager.ts\n");
|
|
530
|
+
|
|
531
|
+
/***/ }),
|
|
532
|
+
|
|
533
|
+
/***/ "./src/utils/compose.ts":
|
|
534
|
+
/*!******************************!*\
|
|
535
|
+
!*** ./src/utils/compose.ts ***!
|
|
536
|
+
\******************************/
|
|
537
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
538
|
+
|
|
539
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"compose\": () => (/* binding */ compose)\n/* harmony export */ });\nfunction compose(...funcs) {\n if (funcs.length === 0) {\n return (arg) => arg;\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce((a, b) => (...args) => b(a(...args)));\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvdXRpbHMvY29tcG9zZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBNkNBLFNBQVMsT0FBTyxDQUFFLEdBQUcsS0FBaUI7SUFDcEMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUV0QixPQUFPLENBQUksR0FBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHO0tBQzFCO0lBRUQsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUN0QixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDaEI7SUFNRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBSUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvdXRpbHMvY29tcG9zZS50cz81MTlhIl0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgRnVuYzxUIGV4dGVuZHMgYW55W10sIFI+ID0gKC4uLmE6IFQpID0+IFJcblxuLyoqXG4gKiBDb21wb3NlcyBzaW5nbGUtYXJndW1lbnQgZnVuY3Rpb25zIGZyb20gcmlnaHQgdG8gbGVmdC4gVGhlIHJpZ2h0bW9zdFxuICogZnVuY3Rpb24gY2FuIHRha2UgbXVsdGlwbGUgYXJndW1lbnRzIGFzIGl0IHByb3ZpZGVzIHRoZSBzaWduYXR1cmUgZm9yIHRoZVxuICogcmVzdWx0aW5nIGNvbXBvc2l0ZSBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gZnVuY3MgVGhlIGZ1bmN0aW9ucyB0byBjb21wb3NlLlxuICogQHJldHVybnMgQSBmdW5jdGlvbiBvYnRhaW5lZCBieSBjb21wb3NpbmcgdGhlIGFyZ3VtZW50IGZ1bmN0aW9ucyBmcm9tIHJpZ2h0XG4gKiAgIHRvIGxlZnQuIEZvciBleGFtcGxlLCBgY29tcG9zZShmLCBnLCBoKWAgaXMgaWRlbnRpY2FsIHRvIGRvaW5nXG4gKiAgIGAoLi4uYXJncykgPT4gZihnKGgoLi4uYXJncykpKWAuXG4gKi9cbi8vIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXBvc2UoKTogPFI+KGE6IFIpID0+IFJcblxuZnVuY3Rpb24gY29tcG9zZTxGIGV4dGVuZHMgRnVuY3Rpb24+KGY6IEYpOiBGXG5cbi8qIHR3byBmdW5jdGlvbnMgKi9cbmZ1bmN0aW9uIGNvbXBvc2U8QSwgVCBleHRlbmRzIGFueVtdLCBSPihcbiAgZjE6IChhOiBBKSA9PiBSLFxuICBmMjogRnVuYzxULCBBPlxuKTogRnVuYzxULCBSPlxuXG4vKiB0aHJlZSBmdW5jdGlvbnMgKi9cbmZ1bmN0aW9uIGNvbXBvc2U8QSwgQiwgVCBleHRlbmRzIGFueVtdLCBSPihcbiAgZjE6IChiOiBCKSA9PiBSLFxuICBmMjogKGE6IEEpID0+IEIsXG4gIGYzOiBGdW5jPFQsIEE+XG4pOiBGdW5jPFQsIFI+XG5cbi8qIGZvdXIgZnVuY3Rpb25zICovXG5mdW5jdGlvbiBjb21wb3NlPEEsIEIsIEMsIFQgZXh0ZW5kcyBhbnlbXSwgUj4oXG4gIGYxOiAoYzogQykgPT4gUixcbiAgZjI6IChiOiBCKSA9PiBDLFxuICBmMzogKGE6IEEpID0+IEIsXG4gIGY0OiBGdW5jPFQsIEE+XG4pOiBGdW5jPFQsIFI+XG5cbi8qIHJlc3QgKi9cbmZ1bmN0aW9uIGNvbXBvc2U8Uj4oXG4gIGYxOiAoYTogYW55KSA9PiBSLFxuICAuLi5mdW5jczogRnVuY3Rpb25bXVxuKTogKC4uLmFyZ3M6IGFueVtdKSA9PiBSXG5cbmZ1bmN0aW9uIGNvbXBvc2U8Uj4oLi4uZnVuY3M6IEZ1bmN0aW9uW10pOiAoLi4uYXJnczogYW55W10pID0+IFJcblxuZnVuY3Rpb24gY29tcG9zZSAoLi4uZnVuY3M6IEZ1bmN0aW9uW10pIHtcbiAgaWYgKGZ1bmNzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIGluZmVyIHRoZSBhcmd1bWVudCB0eXBlIHNvIGl0IGlzIHVzYWJsZSBpbiBpbmZlcmVuY2UgZG93biB0aGUgbGluZVxuICAgIHJldHVybiA8VD4oYXJnOiBUKSA9PiBhcmdcbiAgfVxuXG4gIGlmIChmdW5jcy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gZnVuY3NbMF1cbiAgfVxuXG4gIC8vIHJldHVybiBmdW5jcy5yZWR1Y2UoKGEsIGIpID0+ICguLi5hcmdzOiBhbnkpID0+IGEoYiguLi5hcmdzKSkpXG5cbiAgLy8gY29tcG9zZSBmcm9tIGxlZnQtdG8tcmlnaHQgaW5zdGVhZCBvZiByaWdodC10by1sZWZ0LiBUaGF0IHdheSBlbmQgdXNlciBhbHdheXNcbiAgLy8gaGFzIHN1YiBlbmhhbmNlciBhcyBkZXBlbmRlbmN5XG4gIHJldHVybiBmdW5jcy5yZWR1Y2UoKGEsIGIpID0+ICguLi5hcmdzOiBhbnkpID0+IGIoYSguLi5hcmdzKSkpXG59XG5cbmV4cG9ydCB7XG4gIGNvbXBvc2Vcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/utils/compose.ts\n");
|
|
540
|
+
|
|
541
|
+
/***/ }),
|
|
542
|
+
|
|
543
|
+
/***/ "./src/utils/contentType.ts":
|
|
544
|
+
/*!**********************************!*\
|
|
545
|
+
!*** ./src/utils/contentType.ts ***!
|
|
546
|
+
\**********************************/
|
|
547
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
548
|
+
|
|
549
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"detectContentType\": () => (/* binding */ detectContentType),\n/* harmony export */ \"parseContentType\": () => (/* binding */ parseContentType)\n/* harmony export */ });\n/* harmony import */ var _url__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./url */ \"./src/utils/url.ts\");\n\nconst detectContentType = (name) => {\n const extension = (0,_url__WEBPACK_IMPORTED_MODULE_0__.getUrlExtension)(name);\n switch (extension) {\n case `png`: return `image/png`;\n case `jpg`: return `image/jpg`;\n case `jpeg`: return `image/jpeg`;\n case `txt`: return `text/plain`;\n case `webp`: return `image/webp`;\n }\n return undefined;\n};\nconst parseContentType = (str) => {\n if (!str.length)\n return undefined;\n const cut = str.indexOf(`;`);\n return cut ? str.substring(0, str.indexOf(`;`)) : str;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvdXRpbHMvY29udGVudFR5cGUudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXVDO0FBRWhDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUNoRCxNQUFNLFNBQVMsR0FBRyxxREFBZSxDQUFDLElBQUksQ0FBQztJQUV2QyxRQUFRLFNBQVMsRUFBRTtRQUNqQixLQUFLLEtBQUssQ0FBQyxDQUFDLE9BQU8sV0FBVztRQUM5QixLQUFLLEtBQUssQ0FBQyxDQUFDLE9BQU8sV0FBVztRQUM5QixLQUFLLE1BQU0sQ0FBQyxDQUFDLE9BQU8sWUFBWTtRQUNoQyxLQUFLLEtBQUssQ0FBQyxDQUFDLE9BQU8sWUFBWTtRQUMvQixLQUFLLE1BQU0sQ0FBQyxDQUFDLE9BQU8sWUFBWTtLQUNqQztJQUVELE9BQU8sU0FBUztBQUNsQixDQUFDO0FBRU0sTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO0lBQzlDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTTtRQUFFLE9BQU8sU0FBUztJQUVqQyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUU1QixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO0FBQ3ZELENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvdXRpbHMvY29udGVudFR5cGUudHM/ZjIxNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRVcmxFeHRlbnNpb24gfSBmcm9tIFwiLi91cmxcIlxuXG5leHBvcnQgY29uc3QgZGV0ZWN0Q29udGVudFR5cGUgPSAobmFtZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGV4dGVuc2lvbiA9IGdldFVybEV4dGVuc2lvbihuYW1lKVxuXG4gIHN3aXRjaCAoZXh0ZW5zaW9uKSB7XG4gICAgY2FzZSBgcG5nYDogcmV0dXJuIGBpbWFnZS9wbmdgXG4gICAgY2FzZSBganBnYDogcmV0dXJuIGBpbWFnZS9qcGdgXG4gICAgY2FzZSBganBlZ2A6IHJldHVybiBgaW1hZ2UvanBlZ2BcbiAgICBjYXNlIGB0eHRgOiByZXR1cm4gYHRleHQvcGxhaW5gXG4gICAgY2FzZSBgd2VicGA6IHJldHVybiBgaW1hZ2Uvd2VicGBcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGNvbnN0IHBhcnNlQ29udGVudFR5cGUgPSAoc3RyOiBzdHJpbmcpID0+IHtcbiAgaWYgKCFzdHIubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgY29uc3QgY3V0ID0gc3RyLmluZGV4T2YoYDtgKVxuXG4gIHJldHVybiBjdXQgPyBzdHIuc3Vic3RyaW5nKDAsIHN0ci5pbmRleE9mKGA7YCkpIDogc3RyXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/utils/contentType.ts\n");
|
|
550
|
+
|
|
551
|
+
/***/ }),
|
|
552
|
+
|
|
553
|
+
/***/ "./src/utils/dom.ts":
|
|
554
|
+
/*!**************************!*\
|
|
555
|
+
!*** ./src/utils/dom.ts ***!
|
|
556
|
+
\**************************/
|
|
557
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
558
|
+
|
|
559
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isHtmlElement\": () => (/* binding */ isHtmlElement),\n/* harmony export */ \"getFirstVisibleNodeForViewport\": () => (/* binding */ getFirstVisibleNodeForViewport),\n/* harmony export */ \"getRangeFromNode\": () => (/* binding */ getRangeFromNode),\n/* harmony export */ \"isPointerEvent\": () => (/* binding */ isPointerEvent),\n/* harmony export */ \"isMouseEvent\": () => (/* binding */ isMouseEvent),\n/* harmony export */ \"isTouchEvent\": () => (/* binding */ isTouchEvent)\n/* harmony export */ });\n/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../report */ \"./src/report.ts\");\n\nconst isHtmlElement = (element) => {\n return (typeof element === `object` && !!element && `nodeType` in element && (element === null || element === void 0 ? void 0 : element.nodeType) === Node.ELEMENT_NODE && `innerText` in element);\n};\nfunction createRangeOrCaretFromPoint(doc, startX, startY) {\n if (`caretPositionFromPoint` in doc) {\n return doc.caretPositionFromPoint(startX, startY);\n }\n else if (typeof doc.caretRangeFromPoint !== `undefined`) {\n return doc.caretRangeFromPoint(startX, startY);\n }\n}\nconst getFirstVisibleNodeForViewport = _report__WEBPACK_IMPORTED_MODULE_0__.Report.measurePerformance(`getFirstVisibleNodeForViewport`, 1, (documentOrElement, viewport) => {\n const element = (`body` in documentOrElement)\n ? getFirstVisibleElementForViewport(documentOrElement.body, viewport)\n : getFirstVisibleElementForViewport(documentOrElement, viewport);\n const ownerDocument = `createRange` in documentOrElement ? documentOrElement : documentOrElement.ownerDocument;\n if (element) {\n let lastValidRange;\n let lastValidOffset = 0;\n const range = ownerDocument.createRange();\n Array.from(element.childNodes).some(childNode => {\n range.selectNodeContents(childNode);\n const rects = range.getClientRects();\n const visibleRect = getFirstVisibleDOMRect(rects, viewport);\n if (visibleRect) {\n lastValidRange = range.cloneRange();\n const rangeOrCaret = createRangeOrCaretFromPoint(ownerDocument, Math.ceil(visibleRect.left), Math.ceil(visibleRect.top));\n if (rangeOrCaret && `startContainer` in rangeOrCaret && rangeOrCaret.startContainer === lastValidRange.startContainer) {\n lastValidOffset = rangeOrCaret.startOffset;\n }\n if (rangeOrCaret && `offsetNode` in rangeOrCaret && rangeOrCaret.offsetNode === lastValidRange.startContainer) {\n lastValidOffset = rangeOrCaret.offset;\n }\n return true;\n }\n return false;\n });\n if (lastValidRange) {\n return { node: lastValidRange.startContainer, offset: lastValidOffset };\n }\n return { node: element, offset: 0 };\n }\n return undefined;\n});\nconst getFirstVisibleElementForViewport = (element, viewport) => {\n let lastValidElement;\n const positionFromViewport = getElementOrNodePositionFromViewPort(element.getBoundingClientRect(), viewport);\n if (positionFromViewport !== `before` && positionFromViewport !== `after`) {\n lastValidElement = element;\n }\n Array.from(element.children).some(child => {\n const childInViewPort = getFirstVisibleElementForViewport(child, viewport);\n if (childInViewPort) {\n lastValidElement = childInViewPort;\n return true;\n }\n return false;\n });\n return lastValidElement;\n};\nfunction getElementOrNodePositionFromViewPort(domRect, { left, right }) {\n if (domRect.left <= left && domRect.right <= left)\n return `before`;\n if (domRect.left <= left && domRect.right > left && domRect.right <= right)\n return `partially-before`;\n if (domRect.left <= right && domRect.right > right)\n return `partially-after`;\n if (domRect.left > right)\n return `after`;\n return `within`;\n}\nfunction getFirstVisibleDOMRect(domRect, viewport) {\n return Array.from(domRect).find(domRect => {\n const position = getElementOrNodePositionFromViewPort(domRect, viewport);\n if (position !== `before` && position !== `after`) {\n return true;\n }\n return false;\n });\n}\nconst getRangeFromNode = (node, offset) => {\n var _a;\n if (node.nodeType !== Node.CDATA_SECTION_NODE && node.nodeType !== Node.DOCUMENT_TYPE_NODE) {\n const range = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n range === null || range === void 0 ? void 0 : range.selectNodeContents(node);\n try {\n if (offset <= ((range === null || range === void 0 ? void 0 : range.endOffset) || 0)) {\n range === null || range === void 0 ? void 0 : range.setStart(node, offset || 0);\n }\n }\n catch (e) {\n _report__WEBPACK_IMPORTED_MODULE_0__.Report.error(e);\n }\n return range;\n }\n return undefined;\n};\nconst isPointerEvent = (event) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n if (((_a = event) === null || _a === void 0 ? void 0 : _a.target) && ((_c = (_b = event === null || event === void 0 ? void 0 : event.target) === null || _b === void 0 ? void 0 : _b.ownerDocument) === null || _c === void 0 ? void 0 : _c.defaultView)) {\n const eventView = (_e = (_d = event === null || event === void 0 ? void 0 : event.target) === null || _d === void 0 ? void 0 : _d.ownerDocument) === null || _e === void 0 ? void 0 : _e.defaultView;\n if (eventView.PointerEvent) {\n return event instanceof eventView.PointerEvent;\n }\n }\n if (((_f = event) === null || _f === void 0 ? void 0 : _f.view) && ((_h = (_g = event) === null || _g === void 0 ? void 0 : _g.view) === null || _h === void 0 ? void 0 : _h.window)) {\n const eventView = (_j = event) === null || _j === void 0 ? void 0 : _j.view;\n if (eventView.PointerEvent) {\n return event instanceof eventView.PointerEvent;\n }\n }\n return false;\n};\nconst isMouseEvent = (event) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n if (isPointerEvent(event))\n return false;\n if (((_a = event) === null || _a === void 0 ? void 0 : _a.target) && ((_c = (_b = event === null || event === void 0 ? void 0 : event.target) === null || _b === void 0 ? void 0 : _b.ownerDocument) === null || _c === void 0 ? void 0 : _c.defaultView)) {\n const eventView = (_e = (_d = event === null || event === void 0 ? void 0 : event.target) === null || _d === void 0 ? void 0 : _d.ownerDocument) === null || _e === void 0 ? void 0 : _e.defaultView;\n if (eventView.MouseEvent) {\n return event instanceof eventView.MouseEvent;\n }\n }\n if (((_f = event) === null || _f === void 0 ? void 0 : _f.view) && ((_h = (_g = event) === null || _g === void 0 ? void 0 : _g.view) === null || _h === void 0 ? void 0 : _h.window)) {\n const eventView = (_j = event) === null || _j === void 0 ? void 0 : _j.view;\n if (eventView.MouseEvent) {\n return event instanceof eventView.MouseEvent;\n }\n }\n return false;\n};\nconst isTouchEvent = (event) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n if (((_a = event) === null || _a === void 0 ? void 0 : _a.target) && ((_c = (_b = event === null || event === void 0 ? void 0 : event.target) === null || _b === void 0 ? void 0 : _b.ownerDocument) === null || _c === void 0 ? void 0 : _c.defaultView)) {\n const eventView = (_e = (_d = event === null || event === void 0 ? void 0 : event.target) === null || _d === void 0 ? void 0 : _d.ownerDocument) === null || _e === void 0 ? void 0 : _e.defaultView;\n if (eventView.TouchEvent) {\n return event instanceof eventView.TouchEvent;\n }\n }\n if (((_f = event) === null || _f === void 0 ? void 0 : _f.view) && ((_h = (_g = event) === null || _g === void 0 ? void 0 : _g.view) === null || _h === void 0 ? void 0 : _h.window)) {\n const eventView = (_j = event) === null || _j === void 0 ? void 0 : _j.view;\n if (eventView.TouchEvent) {\n return event instanceof eventView.TouchEvent;\n }\n }\n return false;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SSxZQUFDLEtBQW9CLDBDQUFFLElBQUksMENBQUUsTUFBTSxHQUFFO1FBQ3RFLE1BQU0sU0FBUyxHQUFHLE1BQUMsS0FBb0IsMENBQUUsSUFBa0M7UUFFM0UsSUFBSSxTQUFTLENBQUMsVUFBVSxFQUFFO1lBQ3hCLE9BQU8sS0FBSyxZQUFZLFNBQVMsQ0FBQyxVQUFVO1NBQzdDO0tBQ0Y7SUFFRCxPQUFPLEtBQUs7QUFDZCxDQUFDO0FBRU0sTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFZLEVBQXVCLEVBQUU7O0lBQ2hFLElBQUksT0FBQyxLQUFvQiwwQ0FBRSxNQUFNLE1BQUksWUFBQyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsTUFBa0IsMENBQUUsYUFBYSwwQ0FBRSxXQUFXLEdBQUU7UUFDM0YsTUFBTSxTQUFTLEdBQUcsWUFBQyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsTUFBa0IsMENBQUUsYUFBYSwwQ0FBRSxXQUF5QztRQUV0RyxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUU7WUFDeEIsT0FBTyxLQUFLLFlBQVksU0FBUyxDQUFDLFVBQVU7U0FDN0M7S0FDRjtJQUVELElBQUksT0FBQyxLQUFvQiwwQ0FBRSxJQUFJLE1BQUksWUFBQyxLQUFvQiwwQ0FBRSxJQUFJLDBDQUFFLE1BQU0sR0FBRTtRQUN0RSxNQUFNLFNBQVMsR0FBRyxNQUFDLEtBQW9CLDBDQUFFLElBQWtDO1FBRTNFLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRTtZQUN4QixPQUFPLEtBQUssWUFBWSxTQUFTLENBQUMsVUFBVTtTQUM3QztLQUNGO0lBRUQsT0FBTyxLQUFLO0FBQ2QsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0Bwcm9zZS1yZWFkZXIvY29yZS8uL3NyYy91dGlscy9kb20udHM/MjM0MCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0aW9uRnJvbVBvaW50KHN0YXJ0WDogbnVtYmVyLCBzdGFydFk6IG51bWJlciwgZW5kWDogbnVtYmVyLCBlbmRZOiBudW1iZXIpIHtcbi8vICAgdmFyIGRvYyA9IGRvY3VtZW50O1xuLy8gICB2YXIgc3RhcnQsIGVuZCwgcmFuZ2UgPSBudWxsO1xuLy8gICBpZiAodHlwZW9mIGRvYy5jYXJldFBvc2l0aW9uRnJvbVBvaW50ICE9IFwidW5kZWZpbmVkXCIpIHtcbi8vICAgICBzdGFydCA9IGRvYy5jYXJldFBvc2l0aW9uRnJvbVBvaW50KHN0YXJ0WCwgc3RhcnRZKTtcbi8vICAgICBlbmQgPSBkb2MuY2FyZXRQb3NpdGlvbkZyb21Qb2ludChlbmRYLCBlbmRZKTtcbi8vICAgICByYW5nZSA9IGRvYy5jcmVhdGVSYW5nZSgpO1xuLy8gICAgIHJhbmdlLnNldFN0YXJ0KHN0YXJ0Lm9mZnNldE5vZGUsIHN0YXJ0Lm9mZnNldCk7XG4vLyAgICAgcmFuZ2Uuc2V0RW5kKGVuZC5vZmZzZXROb2RlLCBlbmQub2Zmc2V0KTtcbi8vICAgfSBlbHNlIGlmICh0eXBlb2YgZG9jLmNhcmV0UmFuZ2VGcm9tUG9pbnQgIT0gXCJ1bmRlZmluZWRcIikge1xuLy8gICAgIHN0YXJ0ID0gZG9jLmNhcmV0UmFuZ2VGcm9tUG9pbnQoc3RhcnRYLCBzdGFydFkpO1xuLy8gICAgIGVuZCA9IGRvYy5jYXJldFJhbmdlRnJvbVBvaW50KGVuZFgsIGVuZFkpO1xuLy8gICAgIHJhbmdlID0gZG9jLmNyZWF0ZVJhbmdlKCk7XG4vLyAgICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnQuc3RhcnRDb250YWluZXIsIHN0YXJ0LnN0YXJ0T2Zmc2V0KTtcbi8vICAgICByYW5nZS5zZXRFbmQoZW5kLnN0YXJ0Q29udGFpbmVyLCBlbmQuc3RhcnRPZmZzZXQpO1xuLy8gICB9XG4vLyAgIGlmIChyYW5nZSAhPT0gbnVsbCAmJiB0eXBlb2Ygd2luZG93LmdldFNlbGVjdGlvbiAhPSBcInVuZGVmaW5lZFwiKSB7XG4vLyAgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbi8vICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4vLyAgICAgc2VsLmFkZFJhbmdlKHJhbmdlKTtcbi8vICAgfSBlbHNlIGlmICh0eXBlb2YgZG9jLmJvZHkuY3JlYXRlVGV4dFJhbmdlICE9IFwidW5kZWZpbmVkXCIpIHtcbi8vICAgICByYW5nZSA9IGRvYy5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpO1xuLy8gICAgIHJhbmdlLm1vdmVUb1BvaW50KHN0YXJ0WCwgc3RhcnRZKTtcbi8vICAgICB2YXIgZW5kUmFuZ2UgPSByYW5nZS5kdXBsaWNhdGUoKTtcbi8vICAgICBlbmRSYW5nZS5tb3ZlVG9Qb2ludChlbmRYLCBlbmRZKTtcbi8vICAgICByYW5nZS5zZXRFbmRQb2ludChcIkVuZFRvRW5kXCIsIGVuZFJhbmdlKTtcbi8vICAgICByYW5nZS5zZWxlY3QoKTtcbi8vICAgfVxuLy8gfVxuXG5pbXBvcnQgeyBSZXBvcnQgfSBmcm9tIFwiLi4vcmVwb3J0XCJcblxuLyoqXG4gKiBHbG9iYWwgZW52IGFnbm9zdGljIG1ldGhvZCB0byBkZXRlY3QgaWYgYW4gZWxlbWVudCBpcyBIdG1sRWxlbWVudC5cbiAqXG4gKiBAZXhhbXBsZVxuICogY2hlY2tpbmcgaW5zdGFuY2Ugb2YgZWxlbWVudCBmcm9tIGlmcmFtZSB3aWxsIG5vdCB3b3JrIGJlY2F1c2VcbiAqIGB3aW5kb3cuSHRtbEVsZW1lbnRgIGlzIG5vdCB0aGUgc2FtZSBhcyBpZnJhbWUud2luZG93Lkh0bWxFbGVtZW50XG4gKiBlbGVtZW50IGluc3RhbmNlb2YgSHRtbEVsZW1lbnQgLT4gZmFsc2VcbiAqXG4gKiBpc0h0bWxFbGVtZW50KGVsZW1lbnQpIC0+IHRydWVcbiAqL1xuZXhwb3J0IGNvbnN0IGlzSHRtbEVsZW1lbnQgPSAoZWxlbWVudD86IEVsZW1lbnQgfCBOb2RlIHwgbnVsbCB8IEV2ZW50VGFyZ2V0KTogZWxlbWVudCBpcyBIVE1MRWxlbWVudCA9PiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGVsZW1lbnQgPT09IGBvYmplY3RgICYmICEhZWxlbWVudCAmJiBgbm9kZVR5cGVgIGluIGVsZW1lbnQgJiYgZWxlbWVudD8ubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIGBpbm5lclRleHRgIGluIChlbGVtZW50IGFzIEhUTUxFbGVtZW50KVxuICApXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVJhbmdlT3JDYXJldEZyb21Qb2ludCAoZG9jOiBEb2N1bWVudCwgc3RhcnRYOiBudW1iZXIsIHN0YXJ0WTogbnVtYmVyKSB7XG4gIC8vIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L2NhcmV0UG9zaXRpb25Gcm9tUG9pbnRcbiAgaWYgKGBjYXJldFBvc2l0aW9uRnJvbVBvaW50YCBpbiBkb2MpIHtcbiAgICAvLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9DYXJldFBvc2l0aW9uXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJldHVybiBkb2MuY2FyZXRQb3NpdGlvbkZyb21Qb2ludChzdGFydFgsIHN0YXJ0WSkgYXMgeyBvZmZzZXROb2RlOiBOb2RlLCBvZmZzZXQ6IG51bWJlciB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIGRvYy5jYXJldFJhbmdlRnJvbVBvaW50ICE9PSBgdW5kZWZpbmVkYCkge1xuICAgIHJldHVybiBkb2MuY2FyZXRSYW5nZUZyb21Qb2ludChzdGFydFgsIHN0YXJ0WSlcbiAgfVxufVxuXG50eXBlIFZpZXdQb3J0ID0geyBsZWZ0OiBudW1iZXIsIHJpZ2h0OiBudW1iZXIsIHRvcDogbnVtYmVyLCBib3R0b206IG51bWJlciB9XG5cbi8qKlxuICogQHRvZG8gb3B0aW1pemVcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZpcnN0VmlzaWJsZU5vZGVGb3JWaWV3cG9ydCA9IFJlcG9ydC5tZWFzdXJlUGVyZm9ybWFuY2UoYGdldEZpcnN0VmlzaWJsZU5vZGVGb3JWaWV3cG9ydGAsIDEsIChkb2N1bWVudE9yRWxlbWVudDogRG9jdW1lbnQgfCBFbGVtZW50LCB2aWV3cG9ydDogVmlld1BvcnQpID0+IHtcbiAgY29uc3QgZWxlbWVudCA9IChgYm9keWAgaW4gZG9jdW1lbnRPckVsZW1lbnQpXG4gICAgPyBnZXRGaXJzdFZpc2libGVFbGVtZW50Rm9yVmlld3BvcnQoZG9jdW1lbnRPckVsZW1lbnQuYm9keSwgdmlld3BvcnQpXG4gICAgOiBnZXRGaXJzdFZpc2libGVFbGVtZW50Rm9yVmlld3BvcnQoZG9jdW1lbnRPckVsZW1lbnQsIHZpZXdwb3J0KVxuXG4gIGNvbnN0IG93bmVyRG9jdW1lbnQgPSBgY3JlYXRlUmFuZ2VgIGluIGRvY3VtZW50T3JFbGVtZW50ID8gZG9jdW1lbnRPckVsZW1lbnQgOiBkb2N1bWVudE9yRWxlbWVudC5vd25lckRvY3VtZW50XG5cbiAgaWYgKGVsZW1lbnQpIHtcbiAgICBsZXQgbGFzdFZhbGlkUmFuZ2U6IFJhbmdlIHwgdW5kZWZpbmVkXG4gICAgbGV0IGxhc3RWYWxpZE9mZnNldCA9IDBcbiAgICBjb25zdCByYW5nZSA9IG93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKVxuXG4gICAgQXJyYXkuZnJvbShlbGVtZW50LmNoaWxkTm9kZXMpLnNvbWUoY2hpbGROb2RlID0+IHtcbiAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhjaGlsZE5vZGUpXG4gICAgICBjb25zdCByZWN0cyA9IHJhbmdlLmdldENsaWVudFJlY3RzKClcbiAgICAgIGNvbnN0IHZpc2libGVSZWN0ID0gZ2V0Rmlyc3RWaXNpYmxlRE9NUmVjdChyZWN0cywgdmlld3BvcnQpXG5cbiAgICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGUgcmFuZ2UgaXMgdmFsaWQgYW5kIGNvbnRhaW5zIHZpc2libGUgcmVjdC5cbiAgICAgIC8vIFRoaXMgbWVhbnMgd2UgaGF2ZSBhIHZhbGlkIE5vZGUuIFdlIHN0aWxsIG5lZWQgdG8ga25vdyB0aGUgdmlzaWJsZSBvZmZzZXQgdG8gYmUgMTAwJSBhY2N1cmF0ZVxuICAgICAgaWYgKHZpc2libGVSZWN0KSB7XG4gICAgICAgIGxhc3RWYWxpZFJhbmdlID0gcmFuZ2UuY2xvbmVSYW5nZSgpXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIE5vdyB3ZSB3aWxsIHRyeSB0byByZWZpbmUgdGhlIHNlYXJjaCB0byBnZXQgdGhlIG9mZnNldFxuICAgICAgICAgKiB0aGlzIGlzIGFuIGluY3JlZGlibHkgZXhwZW5zaXZlIG9wZXJhdGlvbiBzbyB3ZSB3aWxsIHRyeSB0b1xuICAgICAgICAgKiB1c2UgbmF0aXZlIGZ1bmN0aW9ucyB0byBnZXQgc29tZXRoaW5nXG4gICAgICAgICAqIEBpbXBvcnRhbnRcbiAgICAgICAgICogd2hlbiB1c2luZyBmbG9hdCB2YWx1ZSBpdCBsb29rcyBsaWtlIHNvbWV0aW1lIHdoZW4gYXQgdGhlIGJlZ2luIG9mIHRoZSBib29rIHRoZSByZXR1cm5lZCByYW5nZSB3aWxsIGJlIHRoZSBsYXN0IG9mZnNldCBvZiB0aGUgcGFnZVxuICAgICAgICAgKiBpdCBjYW4gYmUgdGVzdGVkIHdpdGggbW9ieS1kaWNrLnR4dCBieSB1c2luZyBkaWZmZXJlbnQgZm9udCBzaXplLiBXaGVuZXZlciB1c2luZyBzb21ldGhpbmcgZGlmZmVyZW50IHRoYW4gZGVmYXVsdCBmb250IHNpemUgd2UgbWlnaHRcbiAgICAgICAgICogaGF2ZSBmbG9hdGluZyBwb2ludCBmb3IgZm9udCBhbmQgd2Ugc3RhcnQgaGF2aW5nIGlzc3VlLiBVc2luZyBjZWlsIFwibWFrZSBzdXJlXCIgdG8gYmUgaW5zaWRlIHRoZSBwb2ludC4gSG9wZWZ1bGx5LlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgcmFuZ2VPckNhcmV0ID0gY3JlYXRlUmFuZ2VPckNhcmV0RnJvbVBvaW50KG93bmVyRG9jdW1lbnQsIE1hdGguY2VpbCh2aXNpYmxlUmVjdC5sZWZ0KSwgTWF0aC5jZWlsKHZpc2libGVSZWN0LnRvcCkpXG5cbiAgICAgICAgLy8gZ29vZCBuZXdzIHdlIGZvdW5kIHNvbWV0aGluZyB3aXRoIHNhbWUgbm9kZSBzbyB3ZSBjYW4gYXNzdW1lIHRoZSBvZmZzZXQgaXMgYWxyZWFkeSBiZXR0ZXIgdGhhbiBub3RoaW5nXG4gICAgICAgIGlmIChyYW5nZU9yQ2FyZXQgJiYgYHN0YXJ0Q29udGFpbmVyYCBpbiByYW5nZU9yQ2FyZXQgJiYgcmFuZ2VPckNhcmV0LnN0YXJ0Q29udGFpbmVyID09PSBsYXN0VmFsaWRSYW5nZS5zdGFydENvbnRhaW5lcikge1xuICAgICAgICAgIGxhc3RWYWxpZE9mZnNldCA9IHJhbmdlT3JDYXJldC5zdGFydE9mZnNldFxuICAgICAgICB9XG4gICAgICAgIGlmIChyYW5nZU9yQ2FyZXQgJiYgYG9mZnNldE5vZGVgIGluIHJhbmdlT3JDYXJldCAmJiByYW5nZU9yQ2FyZXQub2Zmc2V0Tm9kZSA9PT0gbGFzdFZhbGlkUmFuZ2Uuc3RhcnRDb250YWluZXIpIHtcbiAgICAgICAgICBsYXN0VmFsaWRPZmZzZXQgPSByYW5nZU9yQ2FyZXQub2Zmc2V0XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG5cbiAgICBpZiAobGFzdFZhbGlkUmFuZ2UpIHtcbiAgICAgIHJldHVybiB7IG5vZGU6IGxhc3RWYWxpZFJhbmdlLnN0YXJ0Q29udGFpbmVyLCBvZmZzZXQ6IGxhc3RWYWxpZE9mZnNldCB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbm9kZTogZWxlbWVudCwgb2Zmc2V0OiAwIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWRcbn0pXG5cbmNvbnN0IGdldEZpcnN0VmlzaWJsZUVsZW1lbnRGb3JWaWV3cG9ydCA9IChlbGVtZW50OiBFbGVtZW50LCB2aWV3cG9ydDogVmlld1BvcnQpID0+IHtcbiAgbGV0IGxhc3RWYWxpZEVsZW1lbnQ6IEVsZW1lbnQgfCB1bmRlZmluZWRcbiAgY29uc3QgcG9zaXRpb25Gcm9tVmlld3BvcnQgPSBnZXRFbGVtZW50T3JOb2RlUG9zaXRpb25Gcm9tVmlld1BvcnQoZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgdmlld3BvcnQpXG5cbiAgaWYgKHBvc2l0aW9uRnJvbVZpZXdwb3J0ICE9PSBgYmVmb3JlYCAmJiBwb3NpdGlvbkZyb21WaWV3cG9ydCAhPT0gYGFmdGVyYCkge1xuICAgIGxhc3RWYWxpZEVsZW1lbnQgPSBlbGVtZW50XG4gIH1cblxuICBBcnJheS5mcm9tKGVsZW1lbnQuY2hpbGRyZW4pLnNvbWUoY2hpbGQgPT4ge1xuICAgIGNvbnN0IGNoaWxkSW5WaWV3UG9ydCA9IGdldEZpcnN0VmlzaWJsZUVsZW1lbnRGb3JWaWV3cG9ydChjaGlsZCwgdmlld3BvcnQpXG4gICAgaWYgKGNoaWxkSW5WaWV3UG9ydCkge1xuICAgICAgbGFzdFZhbGlkRWxlbWVudCA9IGNoaWxkSW5WaWV3UG9ydFxuXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9KVxuXG4gIHJldHVybiBsYXN0VmFsaWRFbGVtZW50XG59XG5cbmZ1bmN0aW9uIGdldEVsZW1lbnRPck5vZGVQb3NpdGlvbkZyb21WaWV3UG9ydCAoZG9tUmVjdDogRE9NUmVjdCwgeyBsZWZ0LCByaWdodCB9OiBWaWV3UG9ydCkge1xuICAvLyBob3Jpem9udGFsICsgbHRyXG4gIGlmIChkb21SZWN0LmxlZnQgPD0gbGVmdCAmJiBkb21SZWN0LnJpZ2h0IDw9IGxlZnQpIHJldHVybiBgYmVmb3JlYFxuICBpZiAoZG9tUmVjdC5sZWZ0IDw9IGxlZnQgJiYgZG9tUmVjdC5yaWdodCA+IGxlZnQgJiYgZG9tUmVjdC5yaWdodCA8PSByaWdodCkgcmV0dXJuIGBwYXJ0aWFsbHktYmVmb3JlYFxuICBpZiAoZG9tUmVjdC5sZWZ0IDw9IHJpZ2h0ICYmIGRvbVJlY3QucmlnaHQgPiByaWdodCkgcmV0dXJuIGBwYXJ0aWFsbHktYWZ0ZXJgXG4gIGlmIChkb21SZWN0LmxlZnQgPiByaWdodCkgcmV0dXJuIGBhZnRlcmBcbiAgcmV0dXJuIGB3aXRoaW5gXG5cbiAgLy8gQHRvZG8gcnRsXG4gIC8vIEB0b2RvIHZlcnRpY2FsLWxydFxuICAvLyBAdG9kbyB2ZXJ0aWNhbC1ydGxcbn1cblxuZnVuY3Rpb24gZ2V0Rmlyc3RWaXNpYmxlRE9NUmVjdCAoZG9tUmVjdDogRE9NUmVjdExpc3QsIHZpZXdwb3J0OiBWaWV3UG9ydCkge1xuICByZXR1cm4gQXJyYXkuZnJvbShkb21SZWN0KS5maW5kKGRvbVJlY3QgPT4ge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gZ2V0RWxlbWVudE9yTm9kZVBvc2l0aW9uRnJvbVZpZXdQb3J0KGRvbVJlY3QsIHZpZXdwb3J0KVxuXG4gICAgaWYgKHBvc2l0aW9uICE9PSBgYmVmb3JlYCAmJiBwb3NpdGlvbiAhPT0gYGFmdGVyYCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCBnZXRSYW5nZUZyb21Ob2RlID0gKG5vZGU6IE5vZGUsIG9mZnNldDogbnVtYmVyKSA9PiB7XG4gIGlmIChub2RlLm5vZGVUeXBlICE9PSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERSAmJiBub2RlLm5vZGVUeXBlICE9PSBOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERSkge1xuICAgIGNvbnN0IHJhbmdlID0gbm9kZS5vd25lckRvY3VtZW50Py5jcmVhdGVSYW5nZSgpXG4gICAgcmFuZ2U/LnNlbGVjdE5vZGVDb250ZW50cyhub2RlKVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChvZmZzZXQgPD0gKHJhbmdlPy5lbmRPZmZzZXQgfHwgMCkpIHtcbiAgICAgICAgcmFuZ2U/LnNldFN0YXJ0KG5vZGUsIG9mZnNldCB8fCAwKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIFJlcG9ydC5lcnJvcihlKVxuICAgIH1cblxuICAgIHJldHVybiByYW5nZVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5leHBvcnQgY29uc3QgaXNQb2ludGVyRXZlbnQgPSAoZXZlbnQ6IEV2ZW50KTogZXZlbnQgaXMgUG9pbnRlckV2ZW50ID0+IHtcbiAgaWYgKChldmVudCBhcyBQb2ludGVyRXZlbnQpPy50YXJnZXQgJiYgKGV2ZW50Py50YXJnZXQgYXMgRWxlbWVudCk/Lm93bmVyRG9jdW1lbnQ/LmRlZmF1bHRWaWV3KSB7XG4gICAgY29uc3QgZXZlbnRWaWV3ID0gKGV2ZW50Py50YXJnZXQgYXMgRWxlbWVudCk/Lm93bmVyRG9jdW1lbnQ/LmRlZmF1bHRWaWV3IGFzIFdpbmRvdyAmIHR5cGVvZiBnbG9iYWxUaGlzXG5cbiAgICBpZiAoZXZlbnRWaWV3LlBvaW50ZXJFdmVudCkge1xuICAgICAgcmV0dXJuIGV2ZW50IGluc3RhbmNlb2YgZXZlbnRWaWV3LlBvaW50ZXJFdmVudFxuICAgIH1cbiAgfVxuXG4gIGlmICgoZXZlbnQgYXMgUG9pbnRlckV2ZW50KT8udmlldyAmJiAoZXZlbnQgYXMgUG9pbnRlckV2ZW50KT8udmlldz8ud2luZG93KSB7XG4gICAgY29uc3QgZXZlbnRWaWV3ID0gKGV2ZW50IGFzIFBvaW50ZXJFdmVudCk/LnZpZXcgYXMgV2luZG93ICYgdHlwZW9mIGdsb2JhbFRoaXNcblxuICAgIGlmIChldmVudFZpZXcuUG9pbnRlckV2ZW50KSB7XG4gICAgICByZXR1cm4gZXZlbnQgaW5zdGFuY2VvZiBldmVudFZpZXcuUG9pbnRlckV2ZW50XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBjb25zdCBpc01vdXNlRXZlbnQgPSAoZXZlbnQ6IEV2ZW50KTogZXZlbnQgaXMgTW91c2VFdmVudCA9PiB7XG4gIGlmIChpc1BvaW50ZXJFdmVudChldmVudCkpIHJldHVybiBmYWxzZVxuXG4gIGlmICgoZXZlbnQgYXMgTW91c2VFdmVudCk/LnRhcmdldCAmJiAoZXZlbnQ/LnRhcmdldCBhcyBFbGVtZW50KT8ub3duZXJEb2N1bWVudD8uZGVmYXVsdFZpZXcpIHtcbiAgICBjb25zdCBldmVudFZpZXcgPSAoZXZlbnQ/LnRhcmdldCBhcyBFbGVtZW50KT8ub3duZXJEb2N1bWVudD8uZGVmYXVsdFZpZXcgYXMgV2luZG93ICYgdHlwZW9mIGdsb2JhbFRoaXNcblxuICAgIGlmIChldmVudFZpZXcuTW91c2VFdmVudCkge1xuICAgICAgcmV0dXJuIGV2ZW50IGluc3RhbmNlb2YgZXZlbnRWaWV3Lk1vdXNlRXZlbnRcbiAgICB9XG4gIH1cblxuICBpZiAoKGV2ZW50IGFzIE1vdXNlRXZlbnQpPy52aWV3ICYmIChldmVudCBhcyBNb3VzZUV2ZW50KT8udmlldz8ud2luZG93KSB7XG4gICAgY29uc3QgZXZlbnRWaWV3ID0gKGV2ZW50IGFzIE1vdXNlRXZlbnQpPy52aWV3IGFzIFdpbmRvdyAmIHR5cGVvZiBnbG9iYWxUaGlzXG5cbiAgICBpZiAoZXZlbnRWaWV3Lk1vdXNlRXZlbnQpIHtcbiAgICAgIHJldHVybiBldmVudCBpbnN0YW5jZW9mIGV2ZW50Vmlldy5Nb3VzZUV2ZW50XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBjb25zdCBpc1RvdWNoRXZlbnQgPSAoZXZlbnQ6IEV2ZW50KTogZXZlbnQgaXMgVG91Y2hFdmVudCA9PiB7XG4gIGlmICgoZXZlbnQgYXMgVG91Y2hFdmVudCk/LnRhcmdldCAmJiAoZXZlbnQ/LnRhcmdldCBhcyBFbGVtZW50KT8ub3duZXJEb2N1bWVudD8uZGVmYXVsdFZpZXcpIHtcbiAgICBjb25zdCBldmVudFZpZXcgPSAoZXZlbnQ/LnRhcmdldCBhcyBFbGVtZW50KT8ub3duZXJEb2N1bWVudD8uZGVmYXVsdFZpZXcgYXMgV2luZG93ICYgdHlwZW9mIGdsb2JhbFRoaXNcblxuICAgIGlmIChldmVudFZpZXcuVG91Y2hFdmVudCkge1xuICAgICAgcmV0dXJuIGV2ZW50IGluc3RhbmNlb2YgZXZlbnRWaWV3LlRvdWNoRXZlbnRcbiAgICB9XG4gIH1cblxuICBpZiAoKGV2ZW50IGFzIFRvdWNoRXZlbnQpPy52aWV3ICYmIChldmVudCBhcyBUb3VjaEV2ZW50KT8udmlldz8ud2luZG93KSB7XG4gICAgY29uc3QgZXZlbnRWaWV3ID0gKGV2ZW50IGFzIFRvdWNoRXZlbnQpPy52aWV3IGFzIFdpbmRvdyAmIHR5cGVvZiBnbG9iYWxUaGlzXG5cbiAgICBpZiAoZXZlbnRWaWV3LlRvdWNoRXZlbnQpIHtcbiAgICAgIHJldHVybiBldmVudCBpbnN0YW5jZW9mIGV2ZW50Vmlldy5Ub3VjaEV2ZW50XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/utils/dom.ts\n");
|
|
560
|
+
|
|
561
|
+
/***/ }),
|
|
562
|
+
|
|
563
|
+
/***/ "./src/utils/manifest.ts":
|
|
564
|
+
/*!*******************************!*\
|
|
565
|
+
!*** ./src/utils/manifest.ts ***!
|
|
566
|
+
\*******************************/
|
|
567
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
568
|
+
|
|
569
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"getCoverItem\": () => (/* binding */ getCoverItem)\n/* harmony export */ });\nconst getCoverItem = (manifest) => {\n var _a;\n const coverItem = (_a = manifest.guide) === null || _a === void 0 ? void 0 : _a.find(item => item.type === `cover`);\n return manifest.spineItems.findIndex(item => coverItem === null || coverItem === void 0 ? void 0 : coverItem.href.endsWith(item.path));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvdXRpbHMvbWFuaWZlc3QudHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUtPLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBa0IsRUFBRSxFQUFFOztJQUNqRCxNQUFNLFNBQVMsR0FBRyxjQUFRLENBQUMsS0FBSywwQ0FBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztJQUVyRSxPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25GLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvdXRpbHMvbWFuaWZlc3QudHM/NzhhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gXCJAcHJvc2UtcmVhZGVyL3NoYXJlZFwiXG5cbi8qKlxuICogQHRvZG8gc3RyaXAgb3V0IHBhcmFtIHVybCBzbyB0aGF0IGVxdWFsaXR5IHdvcmtzIGJldHRlclxuICovXG5leHBvcnQgY29uc3QgZ2V0Q292ZXJJdGVtID0gKG1hbmlmZXN0OiBNYW5pZmVzdCkgPT4ge1xuICBjb25zdCBjb3Zlckl0ZW0gPSBtYW5pZmVzdC5ndWlkZT8uZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gYGNvdmVyYClcblxuICByZXR1cm4gbWFuaWZlc3Quc3BpbmVJdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBjb3Zlckl0ZW0/LmhyZWYuZW5kc1dpdGgoaXRlbS5wYXRoKSlcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/utils/manifest.ts\n");
|
|
570
|
+
|
|
571
|
+
/***/ }),
|
|
572
|
+
|
|
573
|
+
/***/ "./src/utils/objects.ts":
|
|
574
|
+
/*!******************************!*\
|
|
575
|
+
!*** ./src/utils/objects.ts ***!
|
|
576
|
+
\******************************/
|
|
577
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
578
|
+
|
|
579
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"is\": () => (/* binding */ is),\n/* harmony export */ \"isShallowEqual\": () => (/* binding */ isShallowEqual),\n/* harmony export */ \"groupBy\": () => (/* binding */ groupBy),\n/* harmony export */ \"getBase64FromBlob\": () => (/* binding */ getBase64FromBlob)\n/* harmony export */ });\nconst hasOwn = Object.prototype.hasOwnProperty;\nconst is = (x, y) => {\n if (x === y) {\n return (x !== 0) || (y !== 0) || (1 / x === 1 / y);\n }\n else {\n return false;\n }\n};\nconst isShallowEqual = (objectA, objectB, options) => {\n if (objectA === objectB) {\n return true;\n }\n if (typeof objectA !== `object` || objectA === null) {\n return false;\n }\n if (typeof objectB !== `object` || objectB === null) {\n return false;\n }\n const keysA = Object.keys(objectA);\n const keysB = Object.keys(objectB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n const isEqual = options && typeof options.customEqual === `function` ? options.customEqual : is;\n for (let i = 0; i < keysA.length; i++) {\n const key = keysA[i] || ``;\n if (!hasOwn.call(objectB, key) || !isEqual(objectA[key], objectB[key])) {\n return false;\n }\n }\n return true;\n};\nconst groupBy = (list, getKey) => list.reduce((previous, currentItem) => {\n const group = getKey(currentItem);\n if (!previous[group])\n previous[group] = [];\n previous[group].push(currentItem);\n return previous;\n}, {});\nconst getBase64FromBlob = (data) => {\n const reader = new FileReader();\n return new Promise(resolve => {\n reader.addEventListener(`load`, function () {\n resolve(reader.result);\n }, false);\n reader.readAsDataURL(data);\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHByb3NlLXJlYWRlci9jb3JlLy4vc3JjL3V0aWxzL29iamVjdHMudHM/YzkxYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBNSVQgwqkgMjAxNyBhenVcbmNvbnN0IGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHlcblxuLy8gT2JqZWN0LmlzIHBvbHlmaWxsXG5leHBvcnQgY29uc3QgaXMgPSAoeDogYW55LCB5OiBhbnkpOiBib29sZWFuID0+IHtcbiAgaWYgKHggPT09IHkpIHtcbiAgICByZXR1cm4gKHggIT09IDApIHx8ICh5ICE9PSAwKSB8fCAoMSAvIHggPT09IDEgLyB5KVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRydWUsIGlmIGBvYmplY3RBYCBpcyBzaGFsbG93IGVxdWFsIHRvIGBvYmplY3RCYC5cbiAqIFBhc3MgQ3VzdG9tIGVxdWFsaXR5IGZ1bmN0aW9uIHRvIGBjdXN0b21FcXVhbGAuXG4gKiBEZWZhdWx0IGVxdWFsaXR5IGlzIGBPYmplY3QuaXNgXG4gKlxuICogT3B0aW9uczpcbiAqXG4gKiAtIGBjdXN0b21FcXVhbGA6IGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiB0aGUgYGFgIHZhbHVlIGlzIGVxdWFsIHRvIGBiYCB2YWx1ZS5cbiAqIC0gYGRlYnVnYDogZW5hYmxlIGRlYnVnIGluZm8gdG8gY29uc29sZSBsb2cuIFRoaXMgbG9nIHdpbGwgYmUgZGlzYWJsZSBpbiBwcm9kdWN0aW9uIGJ1aWxkXG4gKi9cbmV4cG9ydCBjb25zdCBpc1NoYWxsb3dFcXVhbCA9IDxUID0gYW55LCBSID0gYW55PihcbiAgb2JqZWN0QTogVCxcbiAgb2JqZWN0QjogUixcbiAgb3B0aW9ucz86IHtcbiAgICBjdXN0b21FcXVhbD86IDxUPihhOiBULCBiOiBUKSA9PiBib29sZWFuO1xuICB9XG4pOiBib29sZWFuID0+IHtcbiAgLy8gQHRzLWlnbm9yZVxuICBpZiAob2JqZWN0QSA9PT0gb2JqZWN0Qikge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgaWYgKHR5cGVvZiBvYmplY3RBICE9PSBgb2JqZWN0YCB8fCBvYmplY3RBID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKHR5cGVvZiBvYmplY3RCICE9PSBgb2JqZWN0YCB8fCBvYmplY3RCID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKG9iamVjdEEpXG4gIGNvbnN0IGtleXNCID0gT2JqZWN0LmtleXMob2JqZWN0QilcblxuICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IGlzRXF1YWwgPSBvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLmN1c3RvbUVxdWFsID09PSBgZnVuY3Rpb25gID8gb3B0aW9ucy5jdXN0b21FcXVhbCA6IGlzXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzQS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGtleSA9IGtleXNBW2ldIHx8IGBgXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICghaGFzT3duLmNhbGwob2JqZWN0Qiwga2V5KSB8fCAhaXNFcXVhbChvYmplY3RBW2tleV0sIG9iamVjdEJba2V5XSkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBncm91cEJ5ID0gPFQsIEsgZXh0ZW5kcyBrZXlvZiBhbnk+KGxpc3Q6IFRbXSwgZ2V0S2V5OiAoaXRlbTogVCkgPT4gSykgPT5cbiAgbGlzdC5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50SXRlbSkgPT4ge1xuICAgIGNvbnN0IGdyb3VwID0gZ2V0S2V5KGN1cnJlbnRJdGVtKVxuICAgIGlmICghcHJldmlvdXNbZ3JvdXBdKSBwcmV2aW91c1tncm91cF0gPSBbXVxuICAgIHByZXZpb3VzW2dyb3VwXS5wdXNoKGN1cnJlbnRJdGVtKVxuICAgIHJldHVybiBwcmV2aW91c1xuICB9LCB7fSBhcyBSZWNvcmQ8SywgVFtdPilcblxuZXhwb3J0IGNvbnN0IGdldEJhc2U2NEZyb21CbG9iID0gKGRhdGE6IEJsb2IpID0+IHtcbiAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmUgPT4ge1xuICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKGBsb2FkYCwgZnVuY3Rpb24gKCkge1xuICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0IGFzIHN0cmluZylcbiAgICB9LCBmYWxzZSlcblxuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGRhdGEpXG4gIH0pXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/utils/objects.ts\n");
|
|
580
|
+
|
|
581
|
+
/***/ }),
|
|
582
|
+
|
|
583
|
+
/***/ "./src/utils/rxjs.ts":
|
|
584
|
+
/*!***************************!*\
|
|
585
|
+
!*** ./src/utils/rxjs.ts ***!
|
|
586
|
+
\***************************/
|
|
587
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
588
|
+
|
|
589
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"mapKeysTo\": () => (/* binding */ mapKeysTo)\n/* harmony export */ });\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs/operators */ \"rxjs/operators\");\n/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs_operators__WEBPACK_IMPORTED_MODULE_0__);\n\nconst mapKeysTo = (keys) => {\n return (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_0__.map)((obj) => {\n return Object.entries(obj)\n .reduce((acc, [key, entry]) => {\n if (keys.includes(key)) {\n return Object.assign(Object.assign({}, acc), { [key]: entry });\n }\n return acc;\n }, {});\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvdXRpbHMvcnhqcy50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFDb0M7QUFFN0IsTUFBTSxTQUFTLEdBQUcsQ0FBc0QsSUFBUyxFQUFtQyxFQUFFO0lBQzNILE9BQU8sbURBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ2pCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7YUFDdkIsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQVUsQ0FBQyxFQUFFO2dCQUM3Qix1Q0FDSyxHQUFHLEtBQ04sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLElBQ2I7YUFDRjtZQUVELE9BQU8sR0FBRztRQUNaLENBQUMsRUFBRSxFQUF5QixDQUFDO0lBQ2pDLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvdXRpbHMvcnhqcy50cz9jNzgwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tIFwicnhqc1wiXG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIlxuXG5leHBvcnQgY29uc3QgbWFwS2V5c1RvID0gPFIgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBLIGV4dGVuZHMga2V5b2YgUj4oa2V5czogS1tdKTogT3BlcmF0b3JGdW5jdGlvbjxSLCBQaWNrPFIsIEs+PiA9PiB7XG4gIHJldHVybiBtYXAoKG9iaikgPT4ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhvYmopXG4gICAgICAucmVkdWNlKChhY2MsIFtrZXksIGVudHJ5XSkgPT4ge1xuICAgICAgICBpZiAoa2V5cy5pbmNsdWRlcyhrZXkgYXMgYW55KSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICBba2V5XTogZW50cnlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjXG4gICAgICB9LCB7fSBhcyBQaWNrPHR5cGVvZiBvYmosIEs+KVxuICB9KVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/utils/rxjs.ts\n");
|
|
590
|
+
|
|
591
|
+
/***/ }),
|
|
592
|
+
|
|
593
|
+
/***/ "./src/utils/url.ts":
|
|
594
|
+
/*!**************************!*\
|
|
595
|
+
!*** ./src/utils/url.ts ***!
|
|
596
|
+
\**************************/
|
|
597
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
598
|
+
|
|
599
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"getUrlExtension\": () => (/* binding */ getUrlExtension)\n/* harmony export */ });\nconst getUrlExtension = (url) => {\n var _a, _b;\n return ((_b = (_a = url.split(/[#?]/)[0]) === null || _a === void 0 ? void 0 : _a.split(`.`).pop()) === null || _b === void 0 ? void 0 : _b.trim()) || ``;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvdXRpbHMvdXJsLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTyxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFOztJQUM3QyxPQUFPLGdCQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSwwQ0FBRSxJQUFJLEVBQUUsS0FBSSxFQUFFO0FBQzdELENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AcHJvc2UtcmVhZGVyL2NvcmUvLi9zcmMvdXRpbHMvdXJsLnRzPzExMGMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGdldFVybEV4dGVuc2lvbiA9ICh1cmw6IHN0cmluZykgPT4ge1xuICByZXR1cm4gdXJsLnNwbGl0KC9bIz9dLylbMF0/LnNwbGl0KGAuYCkucG9wKCk/LnRyaW0oKSB8fCBgYFxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/utils/url.ts\n");
|
|
600
|
+
|
|
601
|
+
/***/ }),
|
|
602
|
+
|
|
603
|
+
/***/ "rxjs":
|
|
604
|
+
/*!***********************!*\
|
|
605
|
+
!*** external "rxjs" ***!
|
|
606
|
+
\***********************/
|
|
607
|
+
/***/ ((module) => {
|
|
608
|
+
|
|
609
|
+
module.exports = require("rxjs");
|
|
610
|
+
|
|
611
|
+
/***/ }),
|
|
612
|
+
|
|
613
|
+
/***/ "rxjs/operators":
|
|
614
|
+
/*!*********************************!*\
|
|
615
|
+
!*** external "rxjs/operators" ***!
|
|
616
|
+
\*********************************/
|
|
617
|
+
/***/ ((module) => {
|
|
618
|
+
|
|
619
|
+
module.exports = require("rxjs/operators");
|
|
620
|
+
|
|
621
|
+
/***/ })
|
|
622
|
+
|
|
623
|
+
/******/ });
|
|
624
|
+
/************************************************************************/
|
|
625
|
+
/******/ // The module cache
|
|
626
|
+
/******/ var __webpack_module_cache__ = {};
|
|
627
|
+
/******/
|
|
628
|
+
/******/ // The require function
|
|
629
|
+
/******/ function __webpack_require__(moduleId) {
|
|
630
|
+
/******/ // Check if module is in cache
|
|
631
|
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
632
|
+
/******/ if (cachedModule !== undefined) {
|
|
633
|
+
/******/ return cachedModule.exports;
|
|
634
|
+
/******/ }
|
|
635
|
+
/******/ // Create a new module (and put it into the cache)
|
|
636
|
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
637
|
+
/******/ // no module.id needed
|
|
638
|
+
/******/ // no module.loaded needed
|
|
639
|
+
/******/ exports: {}
|
|
640
|
+
/******/ };
|
|
641
|
+
/******/
|
|
642
|
+
/******/ // Execute the module function
|
|
643
|
+
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
644
|
+
/******/
|
|
645
|
+
/******/ // Return the exports of the module
|
|
646
|
+
/******/ return module.exports;
|
|
647
|
+
/******/ }
|
|
648
|
+
/******/
|
|
649
|
+
/************************************************************************/
|
|
650
|
+
/******/ /* webpack/runtime/compat get default export */
|
|
651
|
+
/******/ (() => {
|
|
652
|
+
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
653
|
+
/******/ __webpack_require__.n = (module) => {
|
|
654
|
+
/******/ var getter = module && module.__esModule ?
|
|
655
|
+
/******/ () => (module['default']) :
|
|
656
|
+
/******/ () => (module);
|
|
657
|
+
/******/ __webpack_require__.d(getter, { a: getter });
|
|
658
|
+
/******/ return getter;
|
|
659
|
+
/******/ };
|
|
660
|
+
/******/ })();
|
|
661
|
+
/******/
|
|
662
|
+
/******/ /* webpack/runtime/define property getters */
|
|
663
|
+
/******/ (() => {
|
|
664
|
+
/******/ // define getter functions for harmony exports
|
|
665
|
+
/******/ __webpack_require__.d = (exports, definition) => {
|
|
666
|
+
/******/ for(var key in definition) {
|
|
667
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
668
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
669
|
+
/******/ }
|
|
670
|
+
/******/ }
|
|
671
|
+
/******/ };
|
|
672
|
+
/******/ })();
|
|
673
|
+
/******/
|
|
674
|
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
675
|
+
/******/ (() => {
|
|
676
|
+
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
677
|
+
/******/ })();
|
|
678
|
+
/******/
|
|
679
|
+
/******/ /* webpack/runtime/make namespace object */
|
|
680
|
+
/******/ (() => {
|
|
681
|
+
/******/ // define __esModule on exports
|
|
682
|
+
/******/ __webpack_require__.r = (exports) => {
|
|
683
|
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
684
|
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
685
|
+
/******/ }
|
|
686
|
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
687
|
+
/******/ };
|
|
688
|
+
/******/ })();
|
|
689
|
+
/******/
|
|
690
|
+
/************************************************************************/
|
|
691
|
+
/******/
|
|
692
|
+
/******/ // startup
|
|
693
|
+
/******/ // Load entry module and return exports
|
|
694
|
+
/******/ // This entry module is referenced by other modules so it can't be inlined
|
|
695
|
+
/******/ var __webpack_exports__ = __webpack_require__("./src/index.ts");
|
|
696
|
+
/******/ var __webpack_export_target__ = exports;
|
|
697
|
+
/******/ for(var i in __webpack_exports__) __webpack_export_target__[i] = __webpack_exports__[i];
|
|
698
|
+
/******/ if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true });
|
|
699
|
+
/******/
|
|
700
|
+
/******/ })()
|
|
701
|
+
;
|