{"version":3,"file":"pageturn-ui.45450e.bundle.js","mappings":"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","sources":["webpack://frontend/./src/pageturn-ui.js"],"sourcesContent":["/* eslint-disable */\n// @ts-check\nimport $ from 'jquery';\nimport 'jquery-touchswipe';\nimport imagesLoaded from 'imagesloaded';\nimport Maybe from 'crocks/Maybe';\nimport { throttle } from 'throttle-debounce';\n\nimport { getModuleMarkUp, getPollModuleMarkUp } from './widgets';\nimport { ACTIVE_AREA, getActiveArea, resetCorners } from './corner-fold';\nimport * as videoEvents from './video-events';\nimport { fireEvents, cancelAndRemoveEvents } from './events';\nimport * as constants from './constants';\nimport {\n getNextPageIndex,\n getCurrentPages,\n currentVisiblePages,\n currentVisiblePageIndexes\n} from './page-helpers';\nimport {\n delay,\n destroyCharts,\n getChartOptions,\n getDomElement,\n getDomElements,\n getPageDetails\n} from './utils';\n\n/** @typedef {import('./@types/pagetiger').OnlineMag} OnlineMag */\n\nconst { EVENT_TYPES, MODULES, MODULE_SUB_TYPES, MODULE_TYPES, TRANSPARENT_GIF } = constants;\n\n// @ts-ignore\nimagesLoaded.makeJQueryPlugin($);\n\nconst noDrag = 'draggable=\"false\" ondragstart=\"return false;\"';\nconst noOp = () => {};\n\n// This value needs to remain in sync with the CSS transition time\n// of the divPtiContainer_zoom element to output the interactivity\n// at the correct time. When support for IE11 is dropped this can\n// be replaced with a custom property.\nconst SHOW_INTERACTIVITY_DELAY = 1000;\n\nconst SELECTORS = {\n DISABLE_FOLD: 'mod-no-fold',\n FLIP_SOUND_CLASS: 'js-flip-sound',\n INTERACTIVITY: 'ptihtml_interactivity',\n PAGE_FOLD_LEFT: 'js-page-fold-image-left',\n PAGE_FOLD_RIGHT: 'js-page-fold-image-right',\n SHRINK: 'mod-shrink'\n};\n\n/**\n * @param {number} speed\n * @returns {[number, number]}\n */\nconst getDelayTimings = speed => {\n if (speed < 700) {\n return [0, 300];\n } else if (speed > 1000) {\n return [300, 800];\n }\n\n return [150, 500];\n};\n\n/**\n * @typedef {Object} Page\n * @property {string} jpegUrl\n * @property {number} pageIndex\n */\n\n/**\n * Page Details\n * @typedef {Object} PageDetails\n * @property {string} id - Page ID\n * @property {string} pageClass - The CSS Class\n * @property {number} pageIndex - The Page Index\n * @property {string} pageTitle - The Page Title\n */\n\n/**\n * @param {string} attr\n * @param {string} value\n * @returns {(el: HTMLElement) => HTMLElement} a function that accepts a single element\n */\nconst setAttribute = (attr, value) => el => {\n el.setAttribute(attr, value);\n return el;\n};\n\n/**\n * @param {string} className\n * @returns {(el: HTMLElement) => HTMLElement} a function that accepts a single element\n */\nconst removeClass = className => el => {\n el.classList.remove(className);\n return el;\n};\n\n/**\n * @param {string} className\n * @returns {(el: HTMLElement) => HTMLElement} a function that accepts a single element\n */\nconst addClass = className => el => {\n el.classList.add(className);\n return el;\n};\n\n/**\n * @param {string} selector\n * @param {Page?} page\n * @returns {void}\n */\nconst setImage = (selector, page) => {\n const imageSrc = page && page.jpegUrl ? page.jpegUrl : TRANSPARENT_GIF;\n const pageIndex = page && Number.isInteger(page.pageIndex) ? `index-${page.pageIndex}` : 'blank';\n const pageNumber =\n page && Number.isInteger(page.pageIndex) ? `page ${page.pageIndex + 1}` : 'page';\n\n getDomElement(selector)\n .map(setAttribute('src', imageSrc))\n .map(setAttribute('data-t', `page-${pageIndex}`))\n .map(setAttribute('alt', pageNumber));\n};\n\nclass PageTurnUI {\n /** @param {OnlineMag} pageTurn */\n constructor(pageTurn) {\n this.onlineMagIssue = pageTurn;\n this.turning = false;\n this.suppressSound = true;\n this.firstRender = true;\n // Used for tracking which page fold (if any) is active\n this.previousActiveArea = ACTIVE_AREA.NONE;\n this.forcePreventFolds = false;\n this.zoomElement = document.querySelector('pinch-touch');\n this._setupSwipe();\n this.resize = this.resize.bind(this);\n this._showSingle2 = this._showSingle2.bind(this);\n this._showSingle3 = this._showSingle3.bind(this);\n this._showDouble2 = this._showDouble2.bind(this);\n this._showDouble3 = this._showDouble3.bind(this);\n this._singleGoneToPage = this._singleGoneToPage.bind(this);\n this._doubleGoneToPage = this._doubleGoneToPage.bind(this);\n this._doubleStepPage = this._doubleStepPage.bind(this);\n const { flipSound } = this.onlineMagIssue.config;\n\n getDomElement(`#${pageTurn.containerZoomElementID}`)\n .map(removeClass('mod-placeholder'))\n .map(addClass('mod-hide'));\n\n if (flipSound) {\n $('body').append(`\n `);\n\n /** @type {HTMLAudioElement} */\n this.flipSoundElement = document.querySelector(`.${SELECTORS.FLIP_SOUND_CLASS}`);\n }\n\n const events = [\n { eventName: 'ended', action: videoEvents.ended(this.onlineMagIssue) },\n { eventName: 'play', action: videoEvents.play(this.onlineMagIssue) },\n { eventName: 'pause', action: videoEvents.pause(this.onlineMagIssue, this.turning) },\n { eventName: 'timeupdate', action: videoEvents.timelineUpdate(this.onlineMagIssue) },\n { eventName: 'loadedmetadata', action: videoEvents.metaDataLoaded(this.onlineMagIssue) }\n ];\n\n events.map(({ eventName, action }) =>\n // Prettier-ignore\n document.addEventListener(\n eventName,\n e => {\n if (e.target instanceof HTMLVideoElement) {\n action(e);\n }\n },\n true\n )\n );\n }\n\n /**\n * @param {MouseEvent} e\n * @returns {void}\n */\n preventCorners(e) {\n if (e.target instanceof HTMLElement && e.target.classList.contains('page-fold')) {\n resetCorners();\n }\n }\n\n _setupPageFoldListeners() {\n const { elementID, zoom } = this.onlineMagIssue;\n const $$ = document.querySelector.bind(document);\n const container = $$(`#${elementID}`);\n /** @type {HTMLDivElement} */\n const pageFoldTopLeft = $$('.page-fold.mod-tl');\n\n /** @type {HTMLDivElement} */\n const pageFoldBottomLeft = $$('.page-fold.mod-bl');\n\n /** @type {HTMLDivElement} */\n const pageFoldTopRight = $$('.page-fold.mod-tr');\n\n /** @type {HTMLDivElement} */\n const pageFoldBottomRight = $$('.page-fold.mod-br');\n\n /** @type {HTMLDivElement} */\n const rightSide = $$('.page.mod-right-page');\n\n /** @type {HTMLDivElement} */\n const rightSideBehind = $$('.page.mod-right-behind');\n\n /** @type {HTMLDivElement} */\n const leftSide = $$('.page.mod-left-page');\n\n /** @type {HTMLDivElement} */\n const leftSideBehind = zoom ? $$('.page.mod-prev-behind') : $$('.page.mod-left-behind');\n\n const allFolds = [pageFoldTopLeft, pageFoldBottomLeft, pageFoldTopRight, pageFoldBottomRight];\n const allSides = [\n rightSide,\n rightSideBehind,\n ...(leftSide !== null ? [leftSide, leftSideBehind] : [])\n ];\n this.previousActiveArea = ACTIVE_AREA.NONE;\n\n /**\n * @typedef CornerElements\n * @type {object}\n * @property {HTMLDivElement} corner\n * @property {HTMLDivElement} side\n * @property {HTMLDivElement} sideBehind\n */\n\n /**\n * @param {string} activeArea\n * @param {boolean} zoom\n * @returns {CornerElements}\n */\n const getActiveCornerElements = (activeArea, zoom) => {\n const [topOrBottom, leftOrRight] = activeArea.split('');\n const side = leftOrRight === 'l' && zoom === false ? leftSide : rightSide;\n const sideBehind = leftOrRight === 'l' ? leftSideBehind : rightSideBehind;\n\n let corner = pageFoldBottomRight;\n\n if (leftOrRight === 'l' && topOrBottom === 't') {\n corner = pageFoldTopLeft;\n }\n\n if (leftOrRight === 'l' && topOrBottom === 'b') {\n corner = pageFoldBottomLeft;\n }\n\n if (leftOrRight === 'r' && topOrBottom === 't') {\n corner = pageFoldTopRight;\n }\n\n return {\n corner,\n side,\n sideBehind\n };\n };\n\n this.handleMouseMoveCorners = throttle(\n 300,\n /** MouseEvent */ mouseEvent => {\n const activeArea = getActiveArea(container, mouseEvent);\n const isPopupVisible = $().ptibox.isVisible() || $().ptimessage.isVisible();\n\n if (\n this.previousActiveArea === activeArea ||\n this.turning ||\n this.forcePreventFolds ||\n isPopupVisible\n ) {\n return;\n }\n\n this.previousActiveArea = activeArea;\n\n allFolds.map(el => el.classList.remove('mod-show'));\n\n if (activeArea === ACTIVE_AREA.NONE) {\n allSides.map(el => el.removeAttribute('active-corner'));\n } else {\n const { corner, side, sideBehind } = getActiveCornerElements(activeArea, zoom);\n sideBehind.setAttribute('active-corner', activeArea);\n side.setAttribute('active-corner', activeArea);\n corner.classList.add('mod-show');\n }\n }\n );\n\n document.body.addEventListener('click', this.preventCorners);\n document.body.addEventListener('mousemove', this.handleMouseMoveCorners);\n }\n\n /**\n * @param {'tl'|'bl'|'tr'|'br'} corner\n * @param {string} action\n * @param {string} jsImageSelector\n * @returns {string}\n */\n _getPageFoldMarkUp(corner, action, jsImageSelector) {\n return this.onlineMagIssue.enableCornerFolds\n ? `\n `\n : '';\n }\n\n _setupSwipe() {\n const { containerElementID, containerZoomElementID, onlineMagShowPaging } = this.onlineMagIssue;\n\n const shouldSwipe = function ($zoomEl) {\n // Toggled inside of pinch-touch.js when zoom === 1\n if (window.disableSwipe === true) {\n return false;\n }\n\n const zoomEl = $zoomEl.get(0);\n // Will have to update this regex is any other transform properties get added\n const scaleRegEx = /[0-9\\.]+/;\n\n if (zoomEl) {\n const { transform } = zoomEl.style;\n const scaleStr = transform.match(scaleRegEx);\n // Give it a default just in-case zooming isn't active on this issue\n const scaleNumber = parseFloat(scaleStr) || 1;\n\n return scaleNumber === 1;\n }\n\n return false;\n };\n /**\n *\n * @param {MouseEvent} _event\n * @param {'left'|'right'} direction\n */\n const handleSwipe = function (_event, direction) {\n const functionToCall = direction === 'right' ? window.ptiPreviousPage : window.ptiNextPage;\n\n if (shouldSwipe(this)) {\n window.setTimeout(() => functionToCall(containerElementID), 50);\n }\n };\n\n if (onlineMagShowPaging) {\n $(`#${containerZoomElementID}`).swipe({\n swipeRight: handleSwipe,\n swipeLeft: handleSwipe,\n preventDefaultEvents: false\n });\n }\n }\n\n _resetZoom() {\n if (this.zoomElement) {\n this.zoomElement.setAttribute('zoom', '1');\n }\n }\n\n previousPage() {\n let nextPage = 0;\n const { currentPageIndex, zoom } = this.onlineMagIssue;\n\n this._resetZoom();\n\n if (currentPageIndex > 0) {\n if (zoom) {\n nextPage = currentPageIndex - 1;\n } else {\n nextPage = currentPageIndex - 2;\n }\n\n if (nextPage < 0) {\n nextPage = 0;\n }\n\n if (zoom) {\n this._singleGotoPage(nextPage);\n } else {\n this._doubleGotoPage(nextPage);\n }\n }\n }\n\n nextPage() {\n const { currentPageIndex, config, onlineMagPages, zoom } = this.onlineMagIssue;\n var nextPageIndex = 0;\n\n this._resetZoom();\n\n if (currentPageIndex < onlineMagPages.length - 1) {\n if (zoom) {\n nextPageIndex = currentPageIndex + 1;\n } else {\n nextPageIndex = currentPageIndex + 2;\n }\n\n if (nextPageIndex > onlineMagPages.length - 1) {\n if (config.alwaysOpened && !zoom) {\n nextPageIndex = onlineMagPages.length - 2;\n } else {\n nextPageIndex = onlineMagPages.length - 1;\n }\n }\n\n if (nextPageIndex !== currentPageIndex) {\n if (zoom) {\n this._singleGotoPage(nextPageIndex);\n } else {\n this._doubleGotoPage(nextPageIndex);\n }\n }\n }\n }\n\n /**\n * @param {number} pageIndex\n */\n gotoPage(pageIndex) {\n this._resetZoom();\n\n if (pageIndex < 0 || pageIndex >= this.onlineMagIssue.onlineMagPages.length) {\n return;\n }\n\n if (this.onlineMagIssue.zoom) {\n this._singleGotoPage(pageIndex);\n } else {\n this._doubleGotoPage(pageIndex);\n }\n }\n\n /**\n * @param {number} pageIndex\n */\n gotoPageSlow(pageIndex) {\n this.gotoPage(pageIndex);\n }\n\n pauseVideos() {\n $(`#${this.onlineMagIssue.elementID} video`).map((_index, videoEl) => {\n try {\n if (videoEl instanceof HTMLVideoElement) {\n videoEl.pause();\n }\n } catch (ex) {\n console.warn(ex.toString());\n }\n });\n }\n\n /**\n * @param {string} selector\n * @param {boolean} shouldDelay\n */\n glow(selector = '', shouldDelay = true) {\n const glowClass = 'mod-glow';\n const delayMs = shouldDelay ? 300 : 0;\n\n selector = selector.length > 0 ? selector : '.interactivity-item';\n\n getDomElements(selector).map(element => {\n delay(delayMs).then(() => element.classList.add(glowClass));\n\n delay(900 + delayMs).then(() => element.classList.remove(glowClass));\n });\n }\n\n resize() {\n const { elementID, enableCornerFolds, zoom: isSinglePageMode, sizes } = this.onlineMagIssue;\n const $containerInner = $(`#${elementID}`);\n\n if (enableCornerFolds) {\n const { pageWidth } = isSinglePageMode ? sizes.singlePage : sizes.doublePage;\n const size = (pageWidth / 100) * 8.5;\n const fadeState = (pageWidth / 100) * 4;\n\n getDomElements('.page, .page-fold').map(el =>\n el.style.setProperty('--cornerSize', `${size}px`)\n );\n\n getDomElements('.page.mod-right-behind, .page.mod-left-behind, .page.mod-prev-behind').map(\n el => {\n el.style.setProperty('--cornerFadeStart', `${fadeState}px`);\n // Make that a percentage.\n el.style.setProperty('--cornerFadeStop', `${fadeState + 20}px`);\n }\n );\n }\n\n if (isSinglePageMode) {\n const { pageWidth, pageHeight } = sizes.singlePage;\n const pageWidthPx = `${pageWidth}px`;\n const pageHeightPx = `${pageHeight}px`;\n\n $containerInner.css({\n height: pageHeightPx,\n width: pageWidthPx\n });\n\n $containerInner\n .children('div')\n .not('.ptiIssueError')\n .css({ height: pageHeightPx, width: pageWidthPx });\n\n $containerInner.find('.page-image').css({\n height: pageHeightPx,\n width: pageWidthPx\n });\n\n $containerInner.find('.page.mod-prev-behind').css({\n backgroundSize: `${pageWidthPx} ${pageHeightPx}`,\n width: `${pageWidth / 2}px`\n });\n } else {\n const { pageHeight, pageWidth } = sizes.doublePage;\n const pageWidthPx = `${pageWidth}px`;\n const pageHeightPx = `${pageHeight}px`;\n\n $containerInner.css({\n height: `${pageHeight}px`,\n width: `${pageWidth * 2}px`\n });\n\n $containerInner\n .children('div')\n .not('.ptiIssueError')\n .not('.page-shadow')\n .css({ height: '100%', width: pageWidthPx });\n\n $containerInner.find('.mod-right-behind').css('left', pageWidthPx);\n $containerInner.find('.mod-left-page').css('right', pageWidthPx);\n $containerInner.find('.mod-right-page').css('left', pageWidthPx);\n $containerInner\n .find('.js-page-fold-image-left, .js-page-fold-image-right')\n .css({ width: pageWidthPx, height: pageHeightPx });\n\n $containerInner.find('.page-image').css({ height: pageHeightPx, width: pageWidthPx });\n }\n\n currentVisiblePages(this.onlineMagIssue)\n .map(page => this.onlineMagIssue.pages[page.pageIndex])\n .flatMap(page => page.modules.filter(mod => mod.moduleType === MODULES.CHART))\n .map(chart => {\n const chartWidth = getDomElement(`.js-chart-${chart.id}`)\n .map(el => el.getBoundingClientRect().width)\n .option(chart.width);\n\n chart.instance.map(instance => {\n instance.options = getChartOptions(chartWidth, chart);\n instance.update();\n });\n });\n }\n\n /**\n * @param {boolean} zoom\n */\n show(zoom) {\n document.body.removeEventListener('mousemove', this.handleMouseMoveCorners);\n document.body.removeEventListener('click', this.preventCorners);\n\n this._resetZoom();\n // Based on the current state of this.onlineMagIssue and it current configuration\n // show the UI at its currentPageIndex\n this.onlineMagIssue.zoom = zoom;\n this.onlineMagIssue.zoom ? this._showSingle() : this._showDouble();\n this.suppressSound = false;\n }\n\n _showDouble() {\n this._scrollTop(this._showDouble2);\n }\n\n _showDouble2() {\n const { containerZoomElementID } = this.onlineMagIssue;\n\n this.onlineMagIssue.zoom = false;\n this.onlineMagIssue.updatePageSize();\n const markup = this.onlineMagIssue.elementMarkup();\n\n $(`#${containerZoomElementID}`).html(markup).animate(\n {},\n {\n duration: 500,\n easing: 'swing',\n complete: this._showDouble3\n }\n );\n }\n\n _showDouble3() {\n this._doubleInit();\n this._doubleGotoPage(this.onlineMagIssue.currentPageIndex);\n }\n\n _doubleInit() {\n const { elementID, pageShadows } = this.onlineMagIssue;\n const manualPageTurnClass = this.onlineMagIssue.enableCornerFolds ? '' : 'mod-no-fold';\n\n $('.js-zoom').attr('page-view', 'double');\n\n $(`#${elementID}`).html(`\n
\n \"transparent\n
\n
\n \"transparent\n
\n\n
\n ${this._getPageFoldMarkUp('tl', 'ptiPreviousPage', SELECTORS.PAGE_FOLD_LEFT)}\n ${this._getPageFoldMarkUp('bl', 'ptiPreviousPage', SELECTORS.PAGE_FOLD_LEFT)}\n \"transparent\n
\n
\n
\n ${this._getPageFoldMarkUp('tr', 'ptiNextPage', SELECTORS.PAGE_FOLD_RIGHT)}\n ${this._getPageFoldMarkUp('br', 'ptiNextPage', SELECTORS.PAGE_FOLD_RIGHT)}\n \"transparent\n
\n
\n\n
\n \"transparent\n
\n
\n \"transparent\n
\n\n ${pageShadows\n .map(cssClass => `
`)\n .option('')}`);\n\n if (this.onlineMagIssue.enableCornerFolds) {\n this._setupPageFoldListeners();\n }\n\n this.resize();\n }\n\n /**\n * @param {number} pageIndex - Page Index\n * @returns {void}\n */\n _doubleGotoPage(pageIndex) {\n cancelAndRemoveEvents();\n\n const objUI = this;\n const objOnlineMagIssue = this.onlineMagIssue;\n const {\n currentPageIndex,\n elementID,\n config,\n isTigerPlayer,\n pageShadows,\n pageTurnSpeed,\n sizes\n } = this.onlineMagIssue;\n const { flipSound } = config;\n const { pageWidth } = sizes.doublePage;\n const $container = $(`#${elementID}`);\n\n if (this.turning) {\n return;\n }\n\n const cachedCurrentPageIndex = currentPageIndex;\n const nextPageIndex = getNextPageIndex(objOnlineMagIssue, pageIndex);\n\n objOnlineMagIssue.currentPageIndex = nextPageIndex;\n\n const [nextPageLeft, nextPageRight] = getCurrentPages(objOnlineMagIssue);\n const onAnimationComplete = () => objUI._doubleGoneToPage(nextPageLeft, nextPageRight);\n\n destroyCharts(this._getAllCharts());\n\n $container\n .find(\n `.mod-left-page .${SELECTORS.INTERACTIVITY}, .mod-right-page .${SELECTORS.INTERACTIVITY}`\n )\n .empty()\n .hide();\n\n // Shrink the pages behind a small amount to prevent a 1px slither showing through.\n $('.page.mod-right-behind, .page.mod-prev-behind, .page.mod-left-behind').removeClass(\n SELECTORS.SHRINK\n );\n $('.page.mod-right-behind').removeClass('mod-show');\n\n if (pageIndex < cachedCurrentPageIndex) {\n // Prev\n this.turning = true;\n\n if (flipSound) {\n this._playSound();\n }\n\n $container.find('.mod-left-above').css({\n left: '0',\n width: '0',\n visibility: 'visible'\n });\n\n $container.find('.mod-right-above').css({\n left: `${pageWidth * 2}px`,\n width: '0',\n visibility: 'hidden'\n });\n\n $container\n .find('.mod-left-page-behind .page-image')\n .css('visibility', nextPageLeft ? 'visible' : 'hidden');\n\n setImage(`.mod-left-behind .page-image`, nextPageLeft);\n setImage(`.mod-left-above .page-image`, nextPageRight);\n setImage(`.mod-right-above .page-image`, nextPageLeft);\n\n if (!isTigerPlayer) {\n $.fn.ptibox.showLoading();\n }\n\n $container.imagesLoaded().always(() => {\n const $page = $container.find('.mod-left-page');\n const stepperFn = this._doubleStepPage($page);\n\n if (!objOnlineMagIssue.isTigerPlayer) {\n $.fn.ptibox.hideLoading();\n }\n\n $container.find('.mod-left-above').animate(\n {\n left: `${pageWidth}px`,\n width: `${pageWidth}px`\n },\n {\n duration: pageTurnSpeed,\n step: stepperFn,\n easing: 'easeInOutQuint',\n complete: onAnimationComplete\n }\n );\n\n $(`.mod-left-above, .mod-left-page`).dequeue('RightPage');\n });\n } else if (pageIndex > cachedCurrentPageIndex) {\n // Next\n this.turning = true;\n\n if (flipSound) {\n this._playSound();\n }\n\n // If last page, hide the behind.\n $container.find('.mod-left-above').css({\n left: '0',\n width: '0',\n visibility: 'hidden'\n });\n\n $container.find('.mod-right-above').css({\n left: `${pageWidth * 2}px`,\n width: '0',\n visibility: 'visible'\n });\n\n $container\n .find('.mod-right-page-behind .page-image')\n .css('visibility', nextPageRight ? 'visible' : 'hidden');\n\n setImage(`.mod-right-behind .page-image`, nextPageRight);\n setImage(`.mod-left-above .page-image`, nextPageRight);\n setImage(`.mod-right-above .page-image`, nextPageLeft);\n\n if (!isTigerPlayer) {\n $.fn.ptibox.showLoading();\n }\n\n $container.imagesLoaded().always(() => {\n const $page = $container.find('.mod-right-page');\n const stepperFn = this._doubleStepPage($page);\n\n if (!isTigerPlayer) {\n $.fn.ptibox.hideLoading();\n }\n\n $container.find('.mod-right-above').animate(\n {\n left: '0',\n width: `${pageWidth}px`\n },\n {\n duration: pageTurnSpeed,\n step: stepperFn,\n easing: 'easeInOutQuint',\n complete: onAnimationComplete\n }\n );\n\n $(`.mod-right-above, .mod-right-page`).dequeue('LeftPage');\n });\n } else {\n objOnlineMagIssue.currentPageIndex = nextPageIndex;\n // Initial Page Render\n if (nextPageLeft) {\n setImage(`.mod-right-above .page-image`, nextPageLeft);\n }\n\n if (nextPageRight) {\n setImage(`.mod-left-above .page-image`, nextPageRight);\n }\n\n if (!isTigerPlayer) {\n $.fn.ptibox.showLoading();\n }\n\n $(`#${elementID}`)\n .imagesLoaded()\n .always(() => {\n if (!isTigerPlayer) {\n $.fn.ptibox.hideLoading();\n }\n\n onAnimationComplete();\n });\n }\n\n if (pageShadows.option('').length > 0) {\n getDomElement('.page-shadow').map(pageShadow => {\n const hiddenClass = 'mod-hide';\n const [firstDelay, secondDelay] = getDelayTimings(pageTurnSpeed);\n\n delay(firstDelay).then(() => pageShadow.classList.add(hiddenClass));\n delay(secondDelay).then(() => {\n if (nextPageRight !== null && nextPageLeft !== null) {\n pageShadow.classList.remove(hiddenClass);\n }\n });\n });\n }\n\n objOnlineMagIssue.currentPageIndex = nextPageIndex;\n }\n\n /**\n * @param {JQuery} $el\n */\n _doubleStepPage($el) {\n const { sizes } = this.onlineMagIssue;\n return function (now, fx) {\n if (fx.prop === 'width') {\n $el.css('width', `${sizes.doublePage.pageWidth - now}px`);\n }\n };\n }\n\n /**\n * Once the animation has finished, put everything in place ready for the next page turn.\n * @param {Page?} leftPage\n * @param {Page?} rightPage\n */\n _doubleGoneToPage(leftPage, rightPage) {\n const {\n containerElementID,\n containerZoomElementID,\n currentPageIndex,\n elementID,\n enableCornerFolds,\n onlineMagPages,\n sizes\n } = this.onlineMagIssue;\n const $container = $(`#${elementID}`);\n const { pageWidth } = sizes.doublePage;\n\n if (leftPage) {\n $container.find('.mod-left-page').css('width', `${pageWidth}px`);\n\n $container\n .find('.mod-left-page .page-image')\n .replaceWith($(`.mod-right-above .page-image`).clone());\n\n $container.find('.mod-left-page .page-image').css({ left: '', right: '0' });\n $container.find('.mod-left-behind').css('visibility', 'hidden').attr('aria-hidden', 'true');\n $container.find('.mod-left-page, .mod-left-behind').css('visibility', 'visible');\n } else {\n $container.find('.mod-left-behind').css('visibility', 'hidden').attr('aria-hidden', 'true');\n $container.find('.mod-left-page').css('visibility', 'hidden');\n }\n\n if (rightPage) {\n $container.find('.mod-right-page').css('width', `${pageWidth}px`);\n\n $container\n .find('.mod-right-page .page-image')\n .replaceWith($(`.mod-left-above .page-image`).clone());\n\n $container.find('.mod-right-page .page-image').css({ right: '', left: '0' });\n $container.find('.mod-right-page, .mod-right-behind').css('visibility', 'visible');\n } else {\n // If we don't have an right-hand last page, hide the right.\n $container.find('.mod-right-page, .mod-right-behind').css('visibility', 'hidden');\n }\n\n if (enableCornerFolds) {\n let maybeRightPageNext = rightPage && onlineMagPages.items[rightPage.pageIndex + 2];\n let maybeLeftPagePrev = leftPage && onlineMagPages.items[leftPage.pageIndex - 2];\n let maybeRightFold = rightPage && onlineMagPages.items[rightPage.pageIndex + 1];\n let maybeLeftFold = leftPage && onlineMagPages.items[leftPage.pageIndex - 1];\n\n // Set this so when we peel back the page we see the correct page underneath\n if (maybeRightPageNext) {\n setImage(`.mod-right-behind .page-image`, maybeRightPageNext);\n } else {\n getDomElement(`.mod-right-behind .page-image`).map(setAttribute('src', TRANSPARENT_GIF));\n }\n\n getDomElements(`.${SELECTORS.PAGE_FOLD_RIGHT}`).map(\n setAttribute('src', maybeRightFold ? maybeRightFold.jpegUrl : TRANSPARENT_GIF)\n );\n\n if (maybeLeftPagePrev) {\n setImage(`.mod-left-behind .page-image`, maybeLeftPagePrev);\n } else {\n getDomElement(`.mod-left-behind .page-image`).map(setAttribute('src', TRANSPARENT_GIF));\n }\n\n getDomElements(`.${SELECTORS.PAGE_FOLD_LEFT}`).map(\n setAttribute('src', maybeLeftFold ? maybeLeftFold.jpegUrl : TRANSPARENT_GIF)\n );\n }\n\n // Ensure the pages behind are shrink ever so slightly to prevent the back pages\n // from bleeding through.\n $('.page.mod-right-behind, .page.mod-prev-behind, .page.mod-left-behind').addClass(\n SELECTORS.SHRINK\n );\n\n $container.find('.mod-left-above').css({\n left: '0',\n width: '0',\n visibility: 'hidden'\n });\n\n $container.find('.mod-right-above').css({\n left: `${pageWidth * 2}px`,\n width: '0',\n visibility: 'hidden'\n });\n\n if (currentPageIndex >= 3) {\n setImage(`.mod-right-above .page-image`, onlineMagPages.items[currentPageIndex - 3]);\n }\n\n if (currentPageIndex <= onlineMagPages.length - 3) {\n setImage(`.mod-left-above .page-image`, onlineMagPages.items[currentPageIndex + 2]);\n }\n\n if (enableCornerFolds) {\n $(\n '.mod-left-page, .mod-left-page .page-fold, .mod-right-page, .mod-right-page .page-fold'\n ).removeClass(SELECTORS.DISABLE_FOLD);\n\n // Disable the left side page corners if we're on the first page\n if (leftPage && leftPage.pageIndex === 0) {\n $('.mod-left-page, .mod-left-page .page-fold').addClass(SELECTORS.DISABLE_FOLD);\n }\n\n // Disable the right side page corners if we're on the last page\n if (rightPage && rightPage.pageIndex === onlineMagPages.length - 1) {\n $('.mod-right-page, .mod-right-page .page-fold').addClass(SELECTORS.DISABLE_FOLD);\n }\n\n $('.page.mod-right-behind').addClass('mod-show');\n\n this.previousActiveArea = ACTIVE_AREA.NONE;\n }\n\n this.turning = false;\n this.forcePreventFolds = false;\n\n /** @type {Page[]} */\n const pages = [];\n\n /** @type {any[]} */\n const chainData = [];\n\n if (leftPage) {\n pages.push(leftPage);\n chainData.push(...leftPage.chain);\n }\n\n if (rightPage) {\n pages.push(rightPage);\n chainData.push(...rightPage.chain);\n }\n\n if (!this.onlineMagIssue.suppressChainOnPageShow) {\n fireEvents(EVENT_TYPES.ON_SHOW, chainData);\n }\n\n window.ptiPagesViewed(containerElementID, leftPage, rightPage);\n\n this._preloadImages();\n\n if (this.firstRender) {\n delay(500).then(() => {\n $(`#${containerZoomElementID}`).removeClass('mod-hide');\n\n delay(SHOW_INTERACTIVITY_DELAY).then(() => {\n // It's possible that the user has quickly changes page before the transitionend fires.\n // This checks that the page index which was initial set still matches the pages currently\n // displayed\n const matchingIndexes = pages.filter(page =>\n currentVisiblePageIndexes(this.onlineMagIssue).includes(page.pageIndex)\n );\n\n if (matchingIndexes.length > 0) {\n this._outputInteractivity(pages);\n }\n });\n });\n } else {\n this._outputInteractivity(pages);\n }\n\n this.onlineMagIssue.suppressChainOnPageShow = false;\n this.firstRender = false;\n }\n\n /**\n * @param {function} cb\n */\n _scrollTop(cb) {\n if (document.documentElement.scrollTop > 0) {\n $('html').animate({ scrollTop: 0, duration: 500, easing: 'swing', complete: cb });\n } else {\n cb();\n }\n }\n\n _showSingle() {\n this._scrollTop(this._showSingle2);\n }\n\n _showSingle2() {\n var objUI = this;\n var objOnlineMagIssue = objUI.onlineMagIssue;\n objOnlineMagIssue.zoom = true;\n objOnlineMagIssue.updatePageSize();\n\n $(`#${objOnlineMagIssue.containerZoomElementID}`)\n .html(objOnlineMagIssue.elementMarkup())\n .animate(\n {},\n {\n duration: 500,\n easing: 'swing',\n complete: objUI._showSingle3\n }\n );\n }\n\n _showSingle3() {\n this._singleInit();\n this._singleGotoPage(this.onlineMagIssue.currentPageIndex);\n }\n\n _singleInit() {\n const { elementID } = this.onlineMagIssue;\n const $containerInner = $(`#${elementID}`);\n const singlePageClass = this.onlineMagIssue.enableCornerFolds ? 'mod-single' : '';\n const manualPageTurnClass = this.onlineMagIssue.enableCornerFolds ? '' : 'mod-no-fold';\n\n $('.js-zoom').attr('page-view', 'single');\n $containerInner.html(`\n
\n\n
\n \"transparent\n
\n\n
\n ${this._getPageFoldMarkUp('tl', 'ptiPreviousPage', SELECTORS.PAGE_FOLD_LEFT)}\n ${this._getPageFoldMarkUp('bl', 'ptiPreviousPage', SELECTORS.PAGE_FOLD_LEFT)}\n ${this._getPageFoldMarkUp('tr', 'ptiNextPage', SELECTORS.PAGE_FOLD_RIGHT)}\n ${this._getPageFoldMarkUp('br', 'ptiNextPage', SELECTORS.PAGE_FOLD_RIGHT)}\n \"transparent\n
\n
\n\n
\n \"transparent\n
\n\n
\n \"transparent\n
\n\n
\n \"transparent\n
\n `);\n\n if (this.onlineMagIssue.enableCornerFolds) {\n this._setupPageFoldListeners();\n }\n\n this.resize();\n }\n\n _playSound() {\n const soundDelay = this.onlineMagIssue.pageTurnSpeed > 1000 ? 400 : 0;\n\n if (this.flipSoundElement && !this.suppressSound) {\n delay(soundDelay).then(() => {\n const playPromise = this.flipSoundElement.play();\n\n // IE11 doesn't return a promise\n if (playPromise) {\n playPromise.then(noOp).catch(noOp);\n }\n });\n }\n\n this.suppressSound = false;\n }\n\n _getAllCharts() {\n return this.onlineMagIssue.pages.reduce(\n (acc, page) => [...acc, ...page.modules.filter(mod => mod.moduleType === 11)],\n []\n );\n }\n\n /**\n * @param {number} pageIndex\n */\n _singleGotoPage(pageIndex) {\n cancelAndRemoveEvents();\n\n const objUI = this;\n const objOnlineMagIssue = this.onlineMagIssue;\n const { currentPageIndex, elementID, onlineMagPages, sizes } = this.onlineMagIssue;\n const nextPage = onlineMagPages.items[pageIndex];\n const { flipSound } = objOnlineMagIssue.config;\n const { pageWidth } = sizes.singlePage;\n const pageWidthPx = `${pageWidth}px`;\n const complete = () => this._singleGoneToPage(nextPage);\n const queue = pageIndex < currentPageIndex ? 'LeftPageSingle' : 'RightPageSingle';\n const baseAnimationProperties = {\n duration: objOnlineMagIssue.pageTurnSpeed,\n easing: 'easeInOutQuint',\n queue\n };\n const $container = $(`#${elementID}`);\n\n $('.page.mod-prev-behind').css({ opacity: '0' });\n\n if (this.turning) {\n return;\n }\n\n destroyCharts(this._getAllCharts());\n\n $(`.mod-right-page .${SELECTORS.INTERACTIVITY}`).empty().hide();\n $('.page.mod-right-behind, .page.mod-prev-behind, .page.mod-left-behind').removeClass(\n SELECTORS.SHRINK\n );\n\n if (pageIndex < currentPageIndex) {\n // Prev\n objUI.turning = true;\n\n if (flipSound) {\n this._playSound();\n }\n\n setImage('.mod-current-page .page-image', nextPage);\n\n $container.find('.mod-right-page').css({ left: '', right: 0 });\n $container.find('.mod-right-page .page-image').css({ left: '', right: 0 });\n\n setImage('.mod-right-behind .page-image', nextPage);\n\n $container.find('.mod-left-above').css({\n left: `-${pageWidthPx}`,\n width: `${pageWidthPx}`,\n visibility: 'visible'\n });\n\n setImage(`.mod-left-above .page-image`, null);\n\n $container.find('.mod-right-above').css('visibility', 'hidden').attr('aria-hidden', 'true');\n\n setImage(`.mod-right-above .page-image`, nextPage);\n\n if (!objOnlineMagIssue.isTigerPlayer) {\n $.fn.ptibox.showLoading();\n }\n\n $container.imagesLoaded().always(() => {\n if (!objOnlineMagIssue.isTigerPlayer) {\n $.fn.ptibox.hideLoading();\n }\n\n // If ever want to switch away from jQuery animation to the native browser animation\n // this is a good starting point.\n\n // import 'web-animations-js' <-- needed for IE11\n // const animationProperties = { easing: 'cubic-bezier(0.860, 0.000, 0.070, 1.000)', duration: 800 };\n // const singlePageTurn = $container.find('.mod-left-above').get(0).animate([{\n // left: 0,\n // width: `${$container.find('.mod-left-above').width()}px`\n // }, {\n // left: pageWidthPx,\n // width: '0'\n // }], animationProperties);\n\n // $container.find('.mod-right-page').get(0).animate([{\n // width: `${$container.find('.mod-right-page').width()}px`\n // }, {\n // width: '0'\n // }], animationProperties);\n\n // singlePageTurn.onfinish = complete;\n\n $container\n .find('.mod-left-above')\n .animate({ left: pageWidthPx, width: '0' }, { ...baseAnimationProperties, complete });\n\n $container.find('.mod-right-page').animate({ width: '0' }, baseAnimationProperties);\n\n $('.mod-left-above, .mod-right-page').dequeue('LeftPageSingle');\n });\n } else if (pageIndex > currentPageIndex) {\n // Next\n objUI.turning = true;\n\n if (flipSound) {\n this._playSound();\n }\n\n setImage(`.mod-current-page .page-image`, nextPage);\n\n $container.find('.mod-right-page').css({ right: '', left: '0' });\n $container.find('.mod-right-page .page-image').css({ right: '', left: '0' });\n\n setImage(`.mod-right-behind .page-image`, nextPage);\n\n $container.find('.mod-left-above').css('visibility', 'hidden').attr('aria-hidden', 'true');\n\n setImage(`.mod-left-above .page-image`, nextPage);\n\n $container\n .find('.mod-right-above')\n .css({ left: pageWidthPx, width: '0', visibility: 'visible' });\n\n setImage('.mod-right-above .page-image', null);\n\n if (!objOnlineMagIssue.isTigerPlayer) {\n $.fn.ptibox.showLoading();\n }\n\n $container.imagesLoaded().always(() => {\n if (!objOnlineMagIssue.isTigerPlayer) {\n $.fn.ptibox.hideLoading();\n }\n\n $container\n .find('.mod-right-above')\n .animate(\n { left: `-${pageWidthPx}`, width: pageWidthPx },\n { ...baseAnimationProperties, complete }\n );\n\n $container.find('.mod-right-page').animate({ width: '0' }, baseAnimationProperties);\n\n $('.mod-right-above, .mod-right-page').dequeue('RightPageSingle');\n });\n } else {\n setImage('.mod-current-page .page-image', nextPage);\n\n if (!objOnlineMagIssue.isTigerPlayer) {\n $.fn.ptibox.showLoading();\n }\n\n $container.imagesLoaded().always(() => {\n if (!objOnlineMagIssue.isTigerPlayer) {\n $.fn.ptibox.hideLoading();\n }\n\n objUI._singleGoneToPage(nextPage);\n });\n }\n\n objOnlineMagIssue.currentPageIndex = pageIndex;\n }\n\n /**\n * Once the animation has finished, put everything in place ready for the next page turn.\n * @param {Page} page\n */\n _singleGoneToPage(page) {\n const {\n containerElementID,\n containerZoomElementID,\n currentPageIndex,\n enableCornerFolds,\n onlineMagPages,\n sizes\n } = this.onlineMagIssue;\n\n /** @type Page[] */\n const pages = [page];\n const { pageWidth } = sizes.singlePage;\n\n if (!this.onlineMagIssue.suppressChainOnPageShow) {\n fireEvents(EVENT_TYPES.ON_SHOW, page.chain);\n }\n\n $(`.mod-right-page`).css({\n width: `${pageWidth}px`,\n right: '',\n left: '0'\n });\n\n $(`.mod-right-page .page-image`).replaceWith($(`.mod-current-page .page-image`).clone());\n\n $(`.mod-right-page .page-image`).css({\n right: '',\n left: 0\n });\n\n $(`.mod-right-page`).css('visibility', 'visible');\n\n $(`.mod-left-above`)\n .css({\n left: '0',\n width: 0,\n visibility: 'hidden'\n })\n .attr('aria-hidden', 'true');\n\n $(`.mod-right-above`)\n .css({\n left: `${pageWidth}px`,\n width: '0',\n visibility: 'hidden'\n })\n .attr('aria-hidden', 'true');\n\n if (enableCornerFolds) {\n let maybePageNext = onlineMagPages.items[currentPageIndex + 1];\n let maybePagePrev = onlineMagPages.items[currentPageIndex - 1];\n\n // Set this so when we peel back the page we see the correct page underneath\n if (maybePageNext) {\n setImage(`.mod-right-behind .page-image`, maybePageNext);\n } else {\n getDomElement(`.mod-right-behind .page-image`).map(setAttribute('src', TRANSPARENT_GIF));\n }\n\n if (maybePagePrev) {\n $('.page.mod-prev-behind').css('background-image', `url(${maybePagePrev.jpegUrl}`);\n } else {\n getDomElement(`.mod-left-behind .page-image`).map(setAttribute('src', TRANSPARENT_GIF));\n }\n\n $('.page.mod-right-page.mod-single')\n .removeClass(`${SELECTORS.DISABLE_FOLD}-left`)\n .removeClass(`${SELECTORS.DISABLE_FOLD}-right`);\n\n $('.page.mod-right-page.mod-single .page-fold').removeClass(SELECTORS.DISABLE_FOLD);\n\n // Disable the left side corners if we're on the first page.\n if (currentPageIndex === 0) {\n $('.page.mod-right-page.mod-single').addClass(`${SELECTORS.DISABLE_FOLD}-left`);\n $(\n '.page.mod-right-page.mod-single .page-fold.mod-tl, .page.mod-right-page.mod-single .page-fold.mod-bl'\n ).addClass(SELECTORS.DISABLE_FOLD);\n }\n\n // Disable the right side corners if we're on the last page.\n if (currentPageIndex === onlineMagPages.length - 1) {\n $('.page.mod-right-page.mod-single').addClass(`${SELECTORS.DISABLE_FOLD}-right`);\n $(\n '.page.mod-right-page.mod-single .page-fold.mod-tr, .page.mod-right-page.mod-single .page-fold.mod-br'\n ).addClass(SELECTORS.DISABLE_FOLD);\n }\n\n $('.page.mod-prev-behind').css({ opacity: '1' });\n\n this.previousActiveArea = ACTIVE_AREA.NONE;\n }\n\n $('.page.mod-right-behind, .page.mod-prev-behind, .page.mod-left-behind').addClass(\n SELECTORS.SHRINK\n );\n\n this.turning = false;\n this.forcePreventFolds = false;\n\n window.ptiPagesViewed(containerElementID, null, page);\n\n if (this.firstRender) {\n delay(500).then(() => {\n $(`#${containerZoomElementID}`).removeClass('mod-hide');\n\n delay(SHOW_INTERACTIVITY_DELAY).then(() => {\n // It's possible that the user has quickly changes page before the transitionend fires.\n // This checks that the page index which was initial set still matches the pages currently\n // displayed\n const matchingIndexes = pages.filter(page =>\n currentVisiblePageIndexes(this.onlineMagIssue).includes(page.pageIndex)\n );\n\n if (matchingIndexes.length > 0) {\n this._outputInteractivity(pages);\n }\n });\n });\n } else {\n this._outputInteractivity(pages);\n }\n\n this.firstRender = false;\n this._preloadImages();\n this.onlineMagIssue.suppressChainOnPageShow = false;\n }\n\n /**\n * @param {boolean} alwaysOpened\n * @param {boolean} zoom\n * @param {number} pageIndex\n * @returns {string}\n */\n _getPageClass(alwaysOpened, zoom, pageIndex) {\n if (zoom) {\n return 'mod-right-page';\n }\n\n const oddOrEven = alwaysOpened ? 1 : 0;\n\n return pageIndex % 2 === oddOrEven ? 'mod-right-page' : 'mod-left-page';\n }\n\n /**\n * @param {Page[]} visiblePages - PageDetails\n * @returns {void}\n */\n _outputInteractivity(visiblePages) {\n const {\n pages,\n config,\n onlineMagClickableAreaStyle,\n\n zoom\n } = this.onlineMagIssue;\n const pageWidth = getPageDetails(zoom, 'pageWidth');\n const pageHeight = getPageDetails(zoom, 'pageHeight');\n\n visiblePages.map(page => {\n const pageClass = this._getPageClass(config.alwaysOpened, zoom, page.pageIndex);\n const $interactivityEl = $(`.${pageClass} .${SELECTORS.INTERACTIVITY}`);\n const modules = pages[page.pageIndex].modules;\n\n const moduleMarkUp = modules\n .filter(mod => mod.moduleType !== MODULES.POLL_ANSWER)\n .map(mod =>\n getModuleMarkUp(mod, pageHeight, pageWidth, page.pageIndex, onlineMagClickableAreaStyle)\n )\n .join('');\n\n // This isn't the most efficient way we could group poll answers\n // together within pages. That's a reasonably big refactor.\n const pollMarkup = getPollModuleMarkUp(\n modules.filter(mod => mod.moduleType === MODULES.POLL_ANSWER),\n pageHeight,\n pageWidth\n );\n\n $interactivityEl.append(moduleMarkUp);\n $interactivityEl.append(pollMarkup);\n });\n\n visiblePages.map(page => {\n pages[page.pageIndex].modules\n .filter(mod => mod.moduleType === MODULES.CHART && mod.subType === MODULE_SUB_TYPES.CHART)\n .map(chartModule => {\n getDomElement(`.js-chart-${chartModule.id}`).map(\n /** @param {HTMLCanvasElement} chartElement */ chartElement => {\n import(/* webpackChunkName: \"chart\" */ 'chart.js')\n .then(({ default: Chart }) => {\n const chartWidth = chartElement.getBoundingClientRect().width;\n const options = getChartOptions(chartWidth, chartModule);\n\n chartModule.instance = Maybe.Just(\n new Chart(chartElement.getContext('2d'), { ...chartModule.chartData, options })\n );\n chartModule.isComplete = true;\n\n chartElement.innerHTML = chartModule.chartTableHtml;\n })\n .catch(err => {\n window.errorReporter.sendError({\n col: 0,\n line: 0,\n message: err.message,\n stack: err.stack,\n type: 'TypeError'\n });\n });\n }\n );\n\n // Set the in-page charts to complete as soon as they are rendered\n if (chartModule.subType === MODULE_SUB_TYPES.CHART) {\n const pageTurn = window.ptiGetInstance();\n chartModule.isComplete = true;\n pageTurn.onModuleComplete(chartModule);\n }\n });\n });\n\n $('.' + SELECTORS.INTERACTIVITY).fadeIn();\n\n if (onlineMagClickableAreaStyle === 'hover') {\n this.glow(undefined, false);\n }\n }\n\n /**\n * @param {string} imageUrl - Image url to preload\n * @returns {void}\n */\n _preLoadImage(imageUrl) {\n const image = new Image();\n image.src = imageUrl;\n }\n\n /**\n * @returns {void}\n */\n _preloadImages() {\n const { currentPageIndex, onlineMagPages } = this.onlineMagIssue;\n const { cacheSize } = this.onlineMagIssue.config;\n\n Array(cacheSize)\n .fill(0)\n .map((_item, index) => {\n if (currentPageIndex - index > -1) {\n this._preLoadImage(onlineMagPages.items[currentPageIndex - index].jpegUrl);\n }\n\n if (currentPageIndex + index < onlineMagPages.items.length) {\n this._preLoadImage(onlineMagPages.items[currentPageIndex + index].jpegUrl);\n }\n });\n }\n}\n\nexport default PageTurnUI;\n"],"names":["EVENT_TYPES","constants","MODULES","MODULE_SUB_TYPES","TRANSPARENT_GIF","imagesLoaded","$","noDrag","noOp","SELECTORS","setAttribute","attr","value","el","setImage","selector","page","imageSrc","jpegUrl","pageIndex","Number","isInteger","concat","pageNumber","getDomElement","map","PageTurnUI","pageTurn","_classCallCheck","this","onlineMagIssue","turning","suppressSound","firstRender","previousActiveArea","ACTIVE_AREA","forcePreventFolds","zoomElement","document","querySelector","_setupSwipe","resize","bind","_showSingle2","_showSingle3","_showDouble2","_showDouble3","_singleGoneToPage","_doubleGoneToPage","_doubleStepPage","className","flipSound","config","containerZoomElementID","classList","remove","add","addClass","append","host","flipSoundElement","eventName","action","videoEvents","_ref","addEventListener","e","target","HTMLVideoElement","key","HTMLElement","contains","resetCorners","_this","_this$onlineMagIssue","elementID","zoom","$$","container","pageFoldTopLeft","pageFoldBottomLeft","pageFoldTopRight","pageFoldBottomRight","rightSide","rightSideBehind","leftSide","leftSideBehind","allFolds","allSides","_toConsumableArray","handleMouseMoveCorners","throttle","mouseEvent","activeArea","getActiveArea","isPopupVisible","ptibox","isVisible","ptimessage","removeAttribute","_getActiveCornerEleme","_activeArea$split2","_slicedToArray","split","topOrBottom","leftOrRight","corner","side","sideBehind","getActiveCornerElements","body","preventCorners","jsImageSelector","enableCornerFolds","_this$onlineMagIssue2","containerElementID","onlineMagShowPaging","handleSwipe","_event","direction","functionToCall","window","ptiPreviousPage","ptiNextPage","$zoomEl","disableSwipe","zoomEl","get","scaleStr","style","transform","match","parseFloat","shouldSwipe","setTimeout","swipe","swipeRight","swipeLeft","preventDefaultEvents","nextPage","_this$onlineMagIssue3","currentPageIndex","_resetZoom","_singleGotoPage","_doubleGotoPage","_this$onlineMagIssue4","onlineMagPages","nextPageIndex","length","alwaysOpened","gotoPage","_index","videoEl","pause","ex","console","warn","toString","arguments","undefined","glowClass","delayMs","getDomElements","element","delay","then","_this2","_this$onlineMagIssue5","isSinglePageMode","sizes","$containerInner","pageWidth","singlePage","doublePage","size","fadeState","setProperty","_sizes$singlePage","pageHeight","pageWidthPx","pageHeightPx","css","height","width","children","not","find","backgroundSize","_sizes$doublePage","currentVisiblePages","pages","flatMap","modules","filter","mod","moduleType","CHART","chart","chartWidth","id","getBoundingClientRect","option","instance","options","getChartOptions","update","removeEventListener","_showSingle","_showDouble","_scrollTop","updatePageSize","markup","elementMarkup","html","animate","duration","easing","complete","_doubleInit","_this$onlineMagIssue6","pageShadows","manualPageTurnClass","_getPageFoldMarkUp","cssClass","_setupPageFoldListeners","_this3","cancelAndRemoveEvents","objUI","objOnlineMagIssue","_this$onlineMagIssue7","isTigerPlayer","pageTurnSpeed","$container","cachedCurrentPageIndex","getNextPageIndex","_getCurrentPages2","getCurrentPages","nextPageLeft","nextPageRight","onAnimationComplete","destroyCharts","_getAllCharts","empty","hide","removeClass","_playSound","left","visibility","always","$page","stepperFn","step","dequeue","pageShadow","speed","hiddenClass","_getDelayTimings2","firstDelay","secondDelay","$el","now","fx","prop","leftPage","rightPage","_this4","_this$onlineMagIssue8","replaceWith","clone","right","maybeRightPageNext","items","maybeLeftPagePrev","maybeRightFold","maybeLeftFold","chainData","push","apply","chain","suppressChainOnPageShow","fireEvents","ON_SHOW","ptiPagesViewed","_preloadImages","currentVisiblePageIndexes","includes","_outputInteractivity","cb","documentElement","scrollTop","_singleInit","singlePageClass","_this5","soundDelay","playPromise","play","catch","reduce","acc","_this6","_this$onlineMagIssue9","queue","baseAnimationProperties","opacity","_objectSpread","_this7","_this$onlineMagIssue10","maybePageNext","maybePagePrev","matchingIndexes","visiblePages","_this8","_this$onlineMagIssue11","onlineMagClickableAreaStyle","getPageDetails","pageClass","_getPageClass","$interactivityEl","moduleMarkUp","POLL_ANSWER","getModuleMarkUp","join","pollMarkup","getPollModuleMarkUp","subType","chartModule","chartElement","_ref3","Chart","default","Maybe","getContext","chartData","isComplete","innerHTML","chartTableHtml","err","errorReporter","sendError","col","line","message","stack","type","ptiGetInstance","onModuleComplete","fadeIn","glow","imageUrl","Image","src","_this9","_this$onlineMagIssue12","cacheSize","Array","fill","_item","index","_preLoadImage"],"sourceRoot":""}