{"version":3,"file":"online-publishing-service-bundle.js","mappings":"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","sources":["webpack://flippingbooksite/webpack/runtime/chunk loaded","webpack://flippingbooksite/webpack/runtime/create fake namespace object","webpack://flippingbooksite/webpack/runtime/load script","webpack://flippingbooksite/./sources/src/components/go-trial-button.ts","webpack://flippingbooksite/./sources/src/util/load.ts","webpack://flippingbooksite/./sources/src/services/instance/flipbook-embed-script.ts","webpack://flippingbooksite/./sources/src/services/flipbook-embed-script.ts","webpack://flippingbooksite/./sources/src/services/intersector.ts","webpack://flippingbooksite/./sources/src/components/interactive-stub/index.ts","webpack://flippingbooksite/./sources/src/components/embed/index.ts","webpack://flippingbooksite/./sources/src/services/layout-checker.ts","webpack://flippingbooksite/./sources/src/services/instance/layoutChecker.ts","webpack://flippingbooksite/./sources/src/components/FeaturePane/index.ts","webpack://flippingbooksite/./sources/src/services/horizon-scroll-blocker.ts","webpack://flippingbooksite/./sources/src/services/swipe-watcher.ts","webpack://flippingbooksite/./sources/src/pages/online-publishing-service/scroll-book/indicator.ts","webpack://flippingbooksite/./sources/src/pages/online-publishing-service/scroll-book/loop-index-generator.ts","webpack://flippingbooksite/./sources/src/pages/online-publishing-service/scroll-book/page.ts","webpack://flippingbooksite/./sources/src/pages/online-publishing-service/scroll-book/visible-pages-count-watcher.ts","webpack://flippingbooksite/./sources/src/pages/online-publishing-service/scroll-book/index.ts","webpack://flippingbooksite/./sources/src/pages/online-publishing-service/beyond.ts","webpack://flippingbooksite/./sources/src/components/calendly-button/base/index.ts","webpack://flippingbooksite/./sources/src/components/calendly-button/fbo/index.ts","webpack://flippingbooksite/./sources/src/components/hidden.ts","webpack://flippingbooksite/./sources/src/components/image.ts","webpack://flippingbooksite/./sources/src/components/watch-video-button/index.ts","webpack://flippingbooksite/./sources/src/pages/online-publishing-service/first-screen.ts","webpack://flippingbooksite/./sources/src/pages/online-publishing-service/index.ts","webpack://flippingbooksite/./sources/src/services/analytics.ts","webpack://flippingbooksite/./sources/src/services/instance/analytics.ts","webpack://flippingbooksite/./sources/src/services/CTAanalytics.ts","webpack://flippingbooksite/./sources/src/services/instance/cta-analytics.ts","webpack://flippingbooksite/./sources/src/services/instance/siteAntispamService.ts","webpack://flippingbooksite/./sources/src/util/current-layout.ts","webpack://flippingbooksite/./sources/src/util/get-login-consumer.ts","webpack://flippingbooksite/./sources/src/util/image.ts","webpack://flippingbooksite/./sources/src/util/is-logged-in.ts","webpack://flippingbooksite/./sources/src/util/is-visible.ts","webpack://flippingbooksite/external var \"{\\\"locatorUrl\\\":\\\"https://registry-tc.dev.flippingbook.com/api\\\",\\\"featureFlags\\\":{},\\\"sentryDsn\\\":\\\"https://8fa71d45f6aa4a06be961166e0ee495b@sentry.io/1359544\\\",\\\"sentryEnable\\\":false}\"","webpack://flippingbooksite/webpack/bootstrap","webpack://flippingbooksite/webpack/runtime/amd options","webpack://flippingbooksite/webpack/runtime/compat get default export","webpack://flippingbooksite/webpack/runtime/define property getters","webpack://flippingbooksite/webpack/runtime/ensure chunk","webpack://flippingbooksite/webpack/runtime/get javascript chunk filename","webpack://flippingbooksite/webpack/runtime/get mini-css chunk filename","webpack://flippingbooksite/webpack/runtime/global","webpack://flippingbooksite/webpack/runtime/hasOwnProperty shorthand","webpack://flippingbooksite/webpack/runtime/make namespace object","webpack://flippingbooksite/webpack/runtime/node module decorator","webpack://flippingbooksite/webpack/runtime/runtimeId","webpack://flippingbooksite/webpack/runtime/publicPath","webpack://flippingbooksite/webpack/runtime/css loading","webpack://flippingbooksite/webpack/runtime/jsonp chunk loading","webpack://flippingbooksite/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"flippingbooksite:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import { BemBlock, BemElement } from '../pages/bem';\r\nimport type { CTAAnalyticsService } from '../services/CTAanalytics';\r\nimport { ctaAnalytics } from '../services/instance/cta-analytics';\r\nimport { serviceLocator } from '../services/instance/serviceLocator';\r\nimport { siteAntispamService } from '../services/instance/siteAntispamService';\r\nimport { getLoginConsumer } from '../util/get-login-consumer';\r\nimport { isLoggedIn } from '../util/is-logged-in';\r\nimport { runWithNewTask } from '../util/run-with-new-task';\r\n\r\nfunction goToUrlOnNextTask(url: string) {\r\n    // transition to the page should be performed after all other events\r\n    // Example: sending analytics\r\n    setTimeout(() => {\r\n        window.location.href = url;\r\n    }, 0);\r\n}\r\n\r\nasync function getLink(product: string, direction: string | null) {\r\n    const loggedIn = isLoggedIn();\r\n\r\n    const [baseRegisterUrl] = await serviceLocator.resolve({\r\n        subsystem: 'generic',\r\n        service: 'logon-register-ui',\r\n    });\r\n    const consumer = getLoginConsumer();\r\n    const userDetachedContext = siteAntispamService.getUserDetachedContext();\r\n    const registerUrl = `${baseRegisterUrl}?r=${consumer}&t=both&asc=${userDetachedContext}`;\r\n\r\n    if (product === 'fb-online') {\r\n        return !loggedIn ? `${registerUrl}&products=FBOnline` : '/account/online';\r\n    }\r\n\r\n    if (product === 'fb-publisher' && direction === 'auto') {\r\n        return !loggedIn\r\n            ? `${registerUrl}&products=Publisher2&resume-url=${window.encodeURIComponent(\r\n                  `${window.location.origin}/downloads?autostart=true`,\r\n              )}`\r\n            : '/downloads?autostart=true';\r\n    }\r\n\r\n    if (product === 'fb-publisher' && direction === 'account') {\r\n        return '/account/software';\r\n    }\r\n\r\n    if (product === 'fb-publisher') {\r\n        return '/downloads';\r\n    }\r\n\r\n    if (product === 'fb-server') {\r\n        return '/automation';\r\n    }\r\n\r\n    if (loggedIn) {\r\n        return '/account/autonav';\r\n    }\r\n\r\n    return '/account/signup';\r\n}\r\n\r\nexport class GoTrialButton extends BemElement<GoTrialButton.Params> {\r\n    private direction = this.el.getAttribute('data-direction');\r\n    private product = this.el.getAttribute('data-product') || 'fb-online';\r\n\r\n    public onDescribe() {\r\n        this.el.addEventListener('click', (ev) => {\r\n            void this.onLinkClick(ev);\r\n        });\r\n    }\r\n\r\n    private sendAnalytics = () => {\r\n        return ctaAnalytics.send(this.params.position);\r\n    };\r\n\r\n    private onLinkClick = async (ev: Event) => {\r\n        ev.preventDefault();\r\n        ev.stopPropagation();\r\n\r\n        await runWithNewTask(() => this.sendAnalytics());\r\n\r\n        const newLink = await getLink(this.product, this.direction);\r\n        goToUrlOnNextTask(newLink);\r\n    };\r\n}\r\nexport namespace GoTrialButton {\r\n    export interface Params {\r\n        position: CTAAnalyticsService.Position;\r\n    }\r\n}\r\n\r\nexport const GoTrialButtonWrapper = (blockName: string) =>\r\n    class GoTrialButtonWrapper extends BemBlock<GoTrialButton.Params> {\r\n        protected blockName(): string {\r\n            return blockName;\r\n        }\r\n\r\n        onDescribe() {\r\n            this.describeElement('go-trial', GoTrialButton, this.params);\r\n        }\r\n    };\r\n","import * as load from '@flippingbook/web.utils/dist/util/load';\r\n\r\nconst contentRoot = () => {\r\n    const maybeContentBaseElement = document.querySelector('[data-content-base]');\r\n    const contentBase = maybeContentBaseElement ? maybeContentBaseElement.getAttribute('data-content-base') || '' : '';\r\n    return contentBase.replace(/\\/$/, '');\r\n};\r\n\r\nexport const loadJs = load.loadJs(contentRoot());\r\nexport const loadCss = load.loadCss(contentRoot());\r\n","import { FlipbookEmbedScript } from '../flipbook-embed-script';\r\n\r\nexport const flipbookEmbedScript = new FlipbookEmbedScript();\r\n","import { loadJs } from '../util/load';\r\n\r\nexport class FlipbookEmbedScript {\r\n    private fboLoadPromise: Promise<void> | undefined;\r\n    private salespalLoadPromise: Promise<void> | undefined;\r\n    private cldbzLoadPromise: Promise<void> | undefined;\r\n\r\n    addFBOScriptByHashId(hashId: string) {\r\n        if (this.fboLoadPromise === undefined) {\r\n            this.fboLoadPromise = loadJs(`https://online.flippingbook.com/EmbedScriptUrl.aspx?m=redir&hid=${hashId}`);\r\n        }\r\n\r\n        return this.fboLoadPromise;\r\n    }\r\n\r\n    addSalespalScriptById(id: string) {\r\n        if (this.salespalLoadPromise === undefined) {\r\n            this.salespalLoadPromise = loadJs(`https://api.salespal.com/embed-script-url/?id=${id}`);\r\n        }\r\n\r\n        return this.salespalLoadPromise;\r\n    }\r\n\r\n    addCLDBZScript(id: string) {\r\n        if (this.cldbzLoadPromise === undefined) {\r\n            this.cldbzLoadPromise = loadJs(`https://cld.bz/e/${id}/embed.js?mode=redir&uni=4.0.0`);\r\n        }\r\n\r\n        return this.cldbzLoadPromise;\r\n    }\r\n}\r\n","import { Parametrized } from '@flippingbook/web.utils/dist/service';\r\n\r\nexport class SingleElementIntersector extends Parametrized<SingleElementIntersector.Params> {\r\n    private intersector: IntersectionObserver;\r\n\r\n    private observerCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) =>\r\n        entries.forEach((entry) => this.params.onIntersectionChange(entry, observer));\r\n\r\n    constructor(params: SingleElementIntersector.Params) {\r\n        super(params);\r\n        this.intersector = new IntersectionObserver(this.observerCallback, params);\r\n    }\r\n\r\n    observe() {\r\n        this.intersector.observe(this.params.el);\r\n    }\r\n\r\n    unobserve() {\r\n        this.intersector.unobserve(this.params.el);\r\n    }\r\n}\r\n\r\nexport namespace SingleElementIntersector {\r\n    export interface Params extends IntersectionObserverInit {\r\n        el: HTMLElement;\r\n        onIntersectionChange: (entry: IntersectionObserverEntry, observer: IntersectionObserver) => void;\r\n    }\r\n}\r\n","import { BemBlock } from '../../pages/bem';\r\n\r\nexport class InteractiveStub extends BemBlock<InteractiveStub.Params> {\r\n    protected blockName(): string {\r\n        return 'S-Interactive-Stub';\r\n    }\r\n\r\n    onDescribe(): void {\r\n        this.el.addEventListener(\r\n            'click',\r\n            () => {\r\n                this.applyModifiers({ loading: true });\r\n\r\n                if (this.params.onClick) {\r\n                    this.params.onClick();\r\n                }\r\n            },\r\n            { once: true },\r\n        );\r\n    }\r\n}\r\n\r\nexport namespace InteractiveStub {\r\n    export interface Params {\r\n        onClick?: () => void;\r\n    }\r\n}\r\n","import { BemBlock, BemElement } from '../../pages/bem';\r\nimport { ConsentGroup } from '../../services/consentService';\r\nimport { consentService } from '../../services/instance/consentService';\r\nimport { flipbookEmbedScript } from '../../services/instance/flipbook-embed-script';\r\nimport { SingleElementIntersector } from '../../services/intersector';\r\nimport { InteractiveStub } from '../interactive-stub';\r\n\r\nconst THRESHOLD = 0;\r\n\r\nconst embedLinkParamsMap = {\r\n    fbo: {\r\n        type: 'fbo',\r\n        globalEmbedName: 'fboEmbed',\r\n        activationClassName: 'fbo-embed',\r\n        embedIdName: 'fboId',\r\n        onEmbedScriptAdd: (id: string) => flipbookEmbedScript.addFBOScriptByHashId(id),\r\n    },\r\n    salespal: {\r\n        type: 'fbp',\r\n        globalEmbedName: 'fbpEmbed',\r\n        activationClassName: 'fbp-embed',\r\n        embedIdName: 'fbpId',\r\n        onEmbedScriptAdd: (id: string) => flipbookEmbedScript.addSalespalScriptById(id),\r\n    },\r\n    cldbz: {\r\n        type: 'fbc',\r\n        globalEmbedName: 'fbcEmbed',\r\n        activationClassName: 'fbc-embed',\r\n        embedIdName: 'fbcId',\r\n        onEmbedScriptAdd: (id: string) => flipbookEmbedScript.addCLDBZScript(id),\r\n    },\r\n};\r\n\r\nclass EmbedLink extends BemElement<EmbedLink.Params> {\r\n    get embedId() {\r\n        return this.el.dataset[this.params.embedIdName] || '';\r\n    }\r\n\r\n    addEmbedScript() {\r\n        return this.params.onEmbedScriptAdd(this.embedId);\r\n    }\r\n\r\n    showLink() {\r\n        this.el.style.display = '';\r\n    }\r\n\r\n    prepareForActivate() {\r\n        this.el.style.display = 'none';\r\n        if (!consentService.hasConsent([ConsentGroup.Targeting, ConsentGroup.Performance])) {\r\n            this.el.setAttribute(`data-${this.params.type}-nocookie`, '');\r\n        }\r\n        this.el.classList.add(this.params.activationClassName);\r\n    }\r\n\r\n    activateEmbeds() {\r\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n        // @ts-ignore\r\n        window[this.params.globalEmbedName].parseAllEmbeds();\r\n    }\r\n}\r\n\r\nnamespace EmbedLink {\r\n    export interface Params {\r\n        type: Embed.EmbedType;\r\n        globalEmbedName: string;\r\n        activationClassName: string;\r\n        embedIdName: string;\r\n        onEmbedScriptAdd: (id: string) => Promise<void>;\r\n    }\r\n}\r\n\r\nexport class Embed extends BemBlock<Embed.Params> {\r\n    protected blockName(): string {\r\n        return 'S-Embed';\r\n    }\r\n\r\n    private embedLink = this.describeElement('link', EmbedLink, embedLinkParamsMap[this.params.type]);\r\n\r\n    private hideStub = () => this.applyModifiers({ loaded: true });\r\n\r\n    watch() {\r\n        const threshold = this.params.threshold || THRESHOLD;\r\n        const intersector = new SingleElementIntersector({\r\n            el: this.el,\r\n            onIntersectionChange: async (entry: IntersectionObserverEntry) => {\r\n                if (entry.isIntersecting && entry.intersectionRatio >= threshold) {\r\n                    intersector.unobserve();\r\n                    this.embedLink.prepareForActivate();\r\n\r\n                    try {\r\n                        await this.embedLink.addEmbedScript();\r\n                        this.embedLink.activateEmbeds();\r\n                    } catch {\r\n                        this.embedLink.showLink();\r\n                    }\r\n                }\r\n            },\r\n            threshold,\r\n        });\r\n        intersector.observe();\r\n    }\r\n\r\n    onDescribe(): void {\r\n        const reducedMotionMode = window.matchMedia('(prefers-reduced-motion)').matches;\r\n\r\n        if (!reducedMotionMode) {\r\n            this.watch();\r\n            return;\r\n        }\r\n\r\n        const stubParams: InteractiveStub.Params = {\r\n            onClick: async () => {\r\n                this.embedLink.prepareForActivate();\r\n\r\n                let hideStubTimeoutId = 0;\r\n\r\n                const publicationLoadedHandler = (event: MessageEvent) => {\r\n                    if (\r\n                        /.flippingbook.(com|cld.bz)$/.test(event.origin) &&\r\n                        event.data.action === 'publicationLoaded' &&\r\n                        this.embedLink.embedId === event.data.id\r\n                    ) {\r\n                        clearTimeout(hideStubTimeoutId);\r\n                        window.removeEventListener('message', publicationLoadedHandler);\r\n                        setTimeout(() => this.hideStub(), 1000);\r\n                    }\r\n                };\r\n\r\n                try {\r\n                    window.addEventListener('message', publicationLoadedHandler);\r\n\r\n                    await this.embedLink.addEmbedScript();\r\n                    this.embedLink.activateEmbeds();\r\n\r\n                    if (this.params.noIframe) {\r\n                        window.removeEventListener('message', publicationLoadedHandler);\r\n                        this.hideStub();\r\n                    }\r\n\r\n                    hideStubTimeoutId = window.setTimeout(() => {\r\n                        window.removeEventListener('message', publicationLoadedHandler);\r\n                        this.hideStub();\r\n                    }, 3000);\r\n                } catch {\r\n                    this.embedLink.showLink();\r\n                    window.removeEventListener('message', publicationLoadedHandler);\r\n                }\r\n            },\r\n        };\r\n\r\n        this.describeBlock('stub', InteractiveStub, stubParams);\r\n    }\r\n}\r\n\r\nexport namespace Embed {\r\n    export type EmbedType = 'fbo' | 'salespal' | 'cldbz';\r\n\r\n    export interface Params {\r\n        type: EmbedType;\r\n        noIframe?: boolean;\r\n        threshold?: number;\r\n    }\r\n}\r\n\r\nexport const EmbedWrapper = (blockName: string) =>\r\n    class EmbedWrapper extends BemBlock<Embed.Params> {\r\n        protected blockName(): string {\r\n            return blockName;\r\n        }\r\n\r\n        onDescribe() {\r\n            this.describeBlock('embed', Embed, this.params);\r\n        }\r\n    };\r\n","import { Parametrized } from '@flippingbook/web.utils/dist/service';\r\n\r\nimport { currentLayout } from '../util/current-layout';\r\n\r\nexport class LayoutChecker extends Parametrized<LayoutChecker.Params> {\r\n    isIn() {\r\n        return this.params.layout === currentLayout();\r\n    }\r\n}\r\n\r\nexport namespace LayoutChecker {\r\n    export type LayoutSize = 'lg' | 'md' | 'sm' | 'xs';\r\n\r\n    export interface Params {\r\n        layout: LayoutSize;\r\n    }\r\n}\r\n","import { LayoutChecker } from '../layout-checker';\r\n\r\nexport const mobileLayoutChecker = new LayoutChecker({ layout: 'xs' });\r\nexport const tabletLayoutChecker = new LayoutChecker({ layout: 'sm' });\r\n","import _throttle from 'lodash-es/throttle';\r\n\r\nimport { BemBlock } from '../../pages/bem';\r\nimport { mobileLayoutChecker, tabletLayoutChecker } from '../../services/instance/layoutChecker';\r\nimport './style.css';\r\n\r\nconst onTabletLineSize = 2;\r\n\r\nexport class FeaturePane extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Feature-Pane';\r\n    }\r\n\r\n    onDescribe() {\r\n        this.alignmentTitlesHeight();\r\n        window.addEventListener('resize', this.onResizeThrottled);\r\n    }\r\n\r\n    private onResizeThrottled = _throttle(() => this.alignmentTitlesHeight(), 300);\r\n\r\n    private titleElements = this.allElements('title-text');\r\n    private onDesktopLineSize = Number(this.el.dataset.lineSize) || 3;\r\n\r\n    private alignmentTitlesHeight() {\r\n        if (this.titleElements.length) {\r\n            const isMobile = mobileLayoutChecker.isIn();\r\n\r\n            this.resetTitlesHeight();\r\n            if (!isMobile) {\r\n                const isTablet = tabletLayoutChecker.isIn();\r\n\r\n                requestAnimationFrame(() => {\r\n                    this.recalculateTitlesHeight(isTablet ? onTabletLineSize : this.onDesktopLineSize);\r\n                });\r\n            }\r\n        }\r\n    }\r\n\r\n    private resetTitlesHeight() {\r\n        this.titleElements.forEach((titleElement: HTMLElement) => {\r\n            titleElement.style.height = '';\r\n        });\r\n    }\r\n\r\n    private recalculateTitlesHeight(lineSize: number) {\r\n        const heights = this.getMaxTitleHeightsByLineSize(lineSize);\r\n\r\n        if (heights.length) {\r\n            this.setTitlesHeight(heights, lineSize);\r\n        }\r\n    }\r\n\r\n    private getMaxTitleHeightsByLineSize(lineSize: number) {\r\n        const elementHeights = this.titleElements.map(\r\n            (titleElement: HTMLElement) => titleElement.getBoundingClientRect().height,\r\n        );\r\n        const linesCount = Math.ceil(this.titleElements.length / lineSize);\r\n        const maxHeightsByLine = Array.from(Array(linesCount), (_, i) => {\r\n            const startIndex = i * lineSize;\r\n            const endIndex = i * lineSize + lineSize;\r\n\r\n            return Math.max(...elementHeights.slice(startIndex, endIndex));\r\n        });\r\n\r\n        return maxHeightsByLine;\r\n    }\r\n\r\n    private setTitlesHeight(heights: number[], lineSize: number) {\r\n        this.titleElements.forEach((titleElement: HTMLElement, i: number) => {\r\n            titleElement.style.height = `${heights[Math.floor(i / lineSize)]}px`;\r\n        });\r\n    }\r\n}\r\n","const threshold = 5;\r\n\r\nexport class HorizonScrollBlocker {\r\n    private firstClientX = 0;\r\n    private clientX = 0;\r\n\r\n    private touchStart = (e: TouchEvent) => {\r\n        this.firstClientX = e.touches[0].clientX;\r\n    };\r\n\r\n    private preventTouch = (e: TouchEvent) => {\r\n        this.clientX = e.touches[0].clientX - this.firstClientX;\r\n\r\n        const isHorizonScroll = Math.abs(this.clientX) > threshold;\r\n\r\n        if (isHorizonScroll) {\r\n            e.preventDefault();\r\n        }\r\n    };\r\n\r\n    constructor(el: HTMLElement) {\r\n        el.addEventListener('touchstart', this.touchStart, { passive: false });\r\n        el.addEventListener('touchmove', this.preventTouch, { passive: false });\r\n    }\r\n}\r\n","import { Parametrized } from '@flippingbook/web.utils/dist/service';\r\n\r\nexport class SwipeWatcher extends Parametrized<SwipeWatcher.Params> {\r\n    private startX = 0;\r\n    private startY = 0;\r\n\r\n    constructor(params: SwipeWatcher.Params) {\r\n        super(params);\r\n\r\n        const { el } = params;\r\n\r\n        const eventParams = { passive: true };\r\n\r\n        el.addEventListener('touchstart', this.handleTouchStart, eventParams);\r\n        el.addEventListener('touchend', this.handleTouchEnd, eventParams);\r\n    }\r\n\r\n    private handleTouchStart = (e: TouchEvent) => {\r\n        this.startX = e.changedTouches[0].screenX;\r\n        this.startY = e.changedTouches[0].screenY;\r\n    };\r\n\r\n    private handleTouchEnd = (e: TouchEvent) => {\r\n        const diffX = e.changedTouches[0].screenX - this.startX;\r\n        const diffY = e.changedTouches[0].screenY - this.startY;\r\n        const ratioX = Math.abs(diffX / diffY);\r\n        const ratioY = Math.abs(diffY / diffX);\r\n        const absDiff = Math.abs(ratioX > ratioY ? diffX : diffY);\r\n\r\n        if (absDiff < 30) {\r\n            // Ignore small movements\r\n            return;\r\n        }\r\n\r\n        if (ratioX > ratioY) {\r\n            if (diffX >= 0) {\r\n                if (this.params.onRight) {\r\n                    this.params.onRight();\r\n                }\r\n            } else {\r\n                if (this.params.onLeft) {\r\n                    this.params.onLeft();\r\n                }\r\n            }\r\n        } else {\r\n            if (diffY >= 0) {\r\n                if (this.params.onDown) {\r\n                    this.params.onDown();\r\n                }\r\n            } else {\r\n                if (this.params.onUp) {\r\n                    this.params.onUp();\r\n                }\r\n            }\r\n        }\r\n    };\r\n}\r\n\r\nnamespace SwipeWatcher {\r\n    export interface Params {\r\n        el: HTMLElement;\r\n        onUp?: () => void;\r\n        onDown?: () => void;\r\n        onLeft?: () => void;\r\n        onRight?: () => void;\r\n    }\r\n}\r\n","import { l10n } from '../../../services/instance/l10n';\r\nimport { BemElement } from '../../bem';\r\n\r\ninterface Circle {\r\n    setActive: (value: boolean) => void;\r\n}\r\n\r\nexport class Indicator extends BemElement<Indicator.Params> {\r\n    private activeIndex = 0;\r\n    private circles: Circle[] = [];\r\n\r\n    private dotAreaLabel = '';\r\n\r\n    onDescribe() {\r\n        const loc = l10n.get();\r\n        this.dotAreaLabel = loc.OnlinePublishingService.ScrollBookIndicatorDotAriaLabel;\r\n\r\n        this.circles = this.generateCircles(this.params.count);\r\n        this.setActive(this.activeIndex);\r\n    }\r\n\r\n    setActive(index: number) {\r\n        const currentActiveCircle = this.circles[this.activeIndex];\r\n        currentActiveCircle?.setActive(false);\r\n\r\n        const newActiveCircle = this.circles[index];\r\n        newActiveCircle?.setActive(true);\r\n\r\n        this.activeIndex = index;\r\n    }\r\n\r\n    setCount(count: number) {\r\n        this.removeCircles();\r\n        this.circles = this.generateCircles(count);\r\n        this.setActive(this.activeIndex);\r\n    }\r\n\r\n    private removeCircles() {\r\n        this.el.innerHTML = '';\r\n    }\r\n\r\n    private generateCircles(count: number) {\r\n        return [...Array(count)].map((item, index) => this.createCircleByIndex(index));\r\n    }\r\n\r\n    private createCircleByIndex(index: number) {\r\n        const element = document.createElement('button');\r\n        const className = this.params.circleClassName;\r\n        element.className = className;\r\n\r\n        element.setAttribute('aria-label', this.dotAreaLabel);\r\n\r\n        element.addEventListener('click', () => {\r\n            void this.params.onClick(index);\r\n        });\r\n\r\n        this.el.appendChild(element);\r\n\r\n        function setActive(value: boolean) {\r\n            element.disabled = value;\r\n        }\r\n\r\n        return { setActive };\r\n    }\r\n}\r\n\r\nnamespace Indicator {\r\n    export interface Params {\r\n        count: number;\r\n        active: number;\r\n        circleClassName: string;\r\n        onClick: (index: number) => Promise<void>;\r\n    }\r\n}\r\n","import { Listenable } from '@flippingbook/web.utils/dist/service';\r\n\r\nexport class LoopIndexStore extends Listenable {\r\n    private firstIndex: number = 0;\r\n    private indexCount: number;\r\n    private current: number = -1;\r\n\r\n    constructor(params: { indexCount: number }) {\r\n        super();\r\n        this.indexCount = params.indexCount;\r\n    }\r\n\r\n    private normalizeIndex = (index: number) => {\r\n        const newIndex = index % this.indexCount;\r\n\r\n        return newIndex < 0 ? this.indexCount + newIndex : newIndex;\r\n    };\r\n\r\n    private getCoupleByIndex(index: number) {\r\n        const isFirst = index % 2 === this.firstIndex;\r\n\r\n        return isFirst\r\n            ? {\r\n                  first: index,\r\n                  second: index + 1,\r\n              }\r\n            : {\r\n                  first: index - 1,\r\n                  second: index,\r\n              };\r\n    }\r\n\r\n    getCurrentOne() {\r\n        return this.current;\r\n    }\r\n\r\n    getCurrentCouple() {\r\n        return this.getCoupleByIndex(this.current);\r\n    }\r\n\r\n    switchPrevOne() {\r\n        const nextIndex = this.current - 1;\r\n        const normalizedIndex = this.normalizeIndex(nextIndex);\r\n\r\n        this.setCurrent(normalizedIndex);\r\n        return this.current;\r\n    }\r\n\r\n    switchPrevCouple() {\r\n        const nextIndex = this.current - 2;\r\n        const normalizedIndex = this.normalizeIndex(nextIndex);\r\n\r\n        return this.switchCoupleByIndex(normalizedIndex);\r\n    }\r\n\r\n    switchNextOne() {\r\n        this.setCurrent(this.current + 1);\r\n        return this.current;\r\n    }\r\n\r\n    switchNextCouple() {\r\n        const normalizedIndex = this.normalizeIndex(this.current + 2);\r\n        return this.switchCoupleByIndex(normalizedIndex);\r\n    }\r\n\r\n    switchCoupleByIndex(index: number) {\r\n        const couple = this.getCoupleByIndex(index);\r\n\r\n        this.current = couple.second;\r\n        this.notify();\r\n\r\n        return couple;\r\n    }\r\n\r\n    setCurrent(index: number) {\r\n        this.current = index % this.indexCount;\r\n        this.notify();\r\n    }\r\n}\r\n","import { BemElement } from '../../bem';\r\n\r\nimport type { VisiblePagesCountWatcher } from './visible-pages-count-watcher';\r\n\r\nconst ANIMATION_DURATION = 500;\r\nconst TRANSITION = `opacity ${ANIMATION_DURATION}ms`;\r\n\r\nexport class Page extends BemElement<Page.Props> implements VisiblePagesCountWatcher.WatchableElement {\r\n    private setVisibility(visible: boolean) {\r\n        const opacity = visible ? '1' : '0';\r\n        const element = this.el;\r\n\r\n        element.style.transition = 'none';\r\n        element.style.zIndex = visible ? '1' : '';\r\n\r\n        return new Promise<void>((resolve) => {\r\n            requestAnimationFrame(() => {\r\n                element.style.opacity = opacity;\r\n                resolve();\r\n            });\r\n        });\r\n    }\r\n\r\n    showWithAnimation() {\r\n        return new Promise<void>((resolve) => {\r\n            const element = this.el;\r\n\r\n            element.style.zIndex = '1';\r\n\r\n            if (this.params.reducedMotionMode) {\r\n                element.style.opacity = '1';\r\n                resolve();\r\n                return;\r\n            }\r\n\r\n            element.style.opacity = '0';\r\n            element.style.transition = TRANSITION;\r\n\r\n            requestAnimationFrame(() => {\r\n                element.style.opacity = '1';\r\n                setTimeout(resolve, ANIMATION_DURATION);\r\n            });\r\n        });\r\n    }\r\n\r\n    hideWithAnimation() {\r\n        return new Promise<void>((resolve) => {\r\n            const element = this.el;\r\n\r\n            element.style.zIndex = '';\r\n            element.style.opacity = '0';\r\n\r\n            if (this.params.reducedMotionMode) {\r\n                resolve();\r\n                return;\r\n            }\r\n\r\n            element.style.transition = TRANSITION;\r\n\r\n            requestAnimationFrame(() => {\r\n                element.style.opacity = '0';\r\n                setTimeout(resolve, ANIMATION_DURATION);\r\n            });\r\n        });\r\n    }\r\n\r\n    show() {\r\n        return this.setVisibility(true);\r\n    }\r\n\r\n    hide() {\r\n        return this.setVisibility(false);\r\n    }\r\n\r\n    getOffsetLeft() {\r\n        return this.el.offsetLeft;\r\n    }\r\n}\r\n\r\nnamespace Page {\r\n    export interface Props {\r\n        reducedMotionMode: boolean;\r\n    }\r\n}\r\n","import { ListenableParametrized } from '@flippingbook/web.utils/dist/service';\r\n\r\nexport class VisiblePagesCountWatcher extends ListenableParametrized<VisiblePagesCountWatcher.Params> {\r\n    private pageCount: 1 | 2;\r\n\r\n    constructor(params: VisiblePagesCountWatcher.Params) {\r\n        super(params);\r\n        this.pageCount = this.calculatePageCount(params);\r\n    }\r\n\r\n    private calculatePageCount(params: VisiblePagesCountWatcher.Params): 1 | 2 {\r\n        const { secondPage } = params;\r\n\r\n        return secondPage.getOffsetLeft() === 0 ? 1 : 2;\r\n    }\r\n\r\n    private updatePageCount = () => {\r\n        const pageCount = this.calculatePageCount({\r\n            secondPage: this.params.secondPage,\r\n        });\r\n\r\n        if (pageCount !== this.pageCount) {\r\n            this.pageCount = pageCount;\r\n            this.notify();\r\n        }\r\n    };\r\n\r\n    watch() {\r\n        this.updatePageCount();\r\n        window.addEventListener('resize', this.updatePageCount);\r\n    }\r\n\r\n    unwatch() {\r\n        window.removeEventListener('resize', this.updatePageCount);\r\n    }\r\n\r\n    get() {\r\n        return this.pageCount;\r\n    }\r\n}\r\n\r\nexport namespace VisiblePagesCountWatcher {\r\n    export interface WatchableElement {\r\n        getOffsetLeft(): number;\r\n    }\r\n\r\n    export interface Params {\r\n        secondPage: WatchableElement;\r\n    }\r\n}\r\n","import { HorizonScrollBlocker } from '../../../services/horizon-scroll-blocker';\r\nimport { SingleElementIntersector } from '../../../services/intersector';\r\nimport { SwipeWatcher } from '../../../services/swipe-watcher';\r\nimport { BemBlock } from '../../bem';\r\n\r\nimport { Indicator } from './indicator';\r\nimport { LoopIndexStore } from './loop-index-generator';\r\nimport { Page } from './page';\r\nimport { VisiblePagesCountWatcher } from './visible-pages-count-watcher';\r\n\r\nconst FIRST_SWITCH_PAGE_INTERVAL = 500;\r\nconst SWITCH_PAGE_INTERVAL = 10000;\r\n\r\nexport class ScrollBook extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Online-Overview-Scroll-Book';\r\n    }\r\n\r\n    private reducedMotionMode = window.matchMedia('(prefers-reduced-motion)').matches;\r\n\r\n    private switchPagesTimeoutId: number | undefined;\r\n    private visiblePages: Page[] = [];\r\n\r\n    private pages = this.describeAllElements('page', Page, { reducedMotionMode: this.reducedMotionMode });\r\n    private loopIndexStore = new LoopIndexStore({\r\n        indexCount: this.pages.length,\r\n    });\r\n\r\n    private visiblePagesCountWatcher = new VisiblePagesCountWatcher({\r\n        secondPage: this.pages[1],\r\n    });\r\n\r\n    private isSwitchBlocked = false;\r\n    private hasFirstAnimationFinish = false;\r\n\r\n    onDescribe() {\r\n        const circleClassName = this.elementClass('circle');\r\n        const indicator = this.describeElement('indicator', Indicator, {\r\n            circleClassName,\r\n            count: this.getIndicatorCount(),\r\n            active: 0,\r\n            onClick: this.onIndicatorClick,\r\n        });\r\n\r\n        const observeThreshold = 0;\r\n\r\n        const onObserve = (entry: IntersectionObserverEntry, observer: IntersectionObserver) => {\r\n            if (entry.isIntersecting && entry.intersectionRatio >= observeThreshold) {\r\n                this.visiblePagesCountWatcher.watch();\r\n\r\n                if (this.reducedMotionMode) {\r\n                    observer.disconnect();\r\n                    void this.showNext();\r\n                    return;\r\n                }\r\n\r\n                this.startPagesAutoSwitch();\r\n                return;\r\n            }\r\n\r\n            if (!this.reducedMotionMode) {\r\n                this.stopPagesAutoSwitch();\r\n            }\r\n            this.visiblePagesCountWatcher.unwatch();\r\n        };\r\n\r\n        new SingleElementIntersector({\r\n            el: this.el,\r\n            onIntersectionChange: onObserve,\r\n            threshold: [observeThreshold],\r\n        }).observe();\r\n\r\n        const onVisiblePageCountChange = () => {\r\n            const indicatorCount = this.getIndicatorCount();\r\n            const activeIndex = this.getIndicatorActiveIndex();\r\n\r\n            indicator.setCount(indicatorCount);\r\n            indicator.setActive(activeIndex);\r\n\r\n            if (this.visiblePages.length > 0) {\r\n                void this.updateVisiblePages();\r\n            }\r\n        };\r\n\r\n        this.visiblePagesCountWatcher.listen(onVisiblePageCountChange);\r\n\r\n        const onPagesSwitch = () => {\r\n            const activeIndex = this.getIndicatorActiveIndex();\r\n            indicator.setActive(activeIndex);\r\n        };\r\n        this.loopIndexStore.listen(onPagesSwitch);\r\n\r\n        const book = this.element('book');\r\n\r\n        if (book) {\r\n            // eslint-disable-next-line no-new\r\n            new SwipeWatcher({\r\n                el: book,\r\n                onLeft: () => {\r\n                    void this.onSwipeLeft();\r\n                },\r\n                onRight: () => {\r\n                    void this.onSwipeRight();\r\n                },\r\n            });\r\n\r\n            // eslint-disable-next-line no-new\r\n            new HorizonScrollBlocker(book);\r\n\r\n            if (!this.reducedMotionMode) {\r\n                book.addEventListener('mouseenter', this.stopPagesAutoSwitch);\r\n                book.addEventListener('mouseleave', this.startPagesAutoSwitch);\r\n            }\r\n        }\r\n    }\r\n\r\n    private startPagesAutoSwitch = () => {\r\n        this.stopPagesAutoSwitch();\r\n\r\n        const isCouple = this.isCouple();\r\n\r\n        const switchInterval =\r\n            this.switchPagesTimeoutId === undefined\r\n                ? FIRST_SWITCH_PAGE_INTERVAL\r\n                : isCouple\r\n                  ? SWITCH_PAGE_INTERVAL * 2\r\n                  : SWITCH_PAGE_INTERVAL;\r\n\r\n        this.switchPagesTimeoutId = window.setTimeout(() => {\r\n            void this.showNext();\r\n        }, switchInterval);\r\n    };\r\n\r\n    private stopPagesAutoSwitch = () => {\r\n        if (this.hasFirstAnimationFinish) {\r\n            clearTimeout(this.switchPagesTimeoutId);\r\n        }\r\n    };\r\n\r\n    private getIndicatorActiveIndex() {\r\n        const currentIndex = this.loopIndexStore.getCurrentOne();\r\n        const visiblePagesCount = this.visiblePagesCountWatcher.get();\r\n\r\n        return visiblePagesCount === 2 ? Math.floor(currentIndex / 2) : currentIndex;\r\n    }\r\n\r\n    private getIndicatorCount() {\r\n        return this.pages.length / this.visiblePagesCountWatcher.get();\r\n    }\r\n\r\n    private isCouple = () => this.visiblePagesCountWatcher.get() === 2;\r\n\r\n    private async runSwitchAnimation(params: { hiddenPages: Page[] }) {\r\n        const { hiddenPages } = params;\r\n\r\n        this.isSwitchBlocked = true;\r\n\r\n        const hidePromises = hiddenPages.map((p) => p.hideWithAnimation());\r\n\r\n        await Promise.all(hidePromises);\r\n\r\n        const showPromises = this.visiblePages.map((p) => p.showWithAnimation());\r\n\r\n        await Promise.all(showPromises);\r\n\r\n        this.isSwitchBlocked = false;\r\n\r\n        this.hasFirstAnimationFinish = true;\r\n\r\n        if (!this.reducedMotionMode) {\r\n            this.startPagesAutoSwitch();\r\n        }\r\n    }\r\n\r\n    private async showNext() {\r\n        if (this.isSwitchBlocked) {\r\n            return;\r\n        }\r\n\r\n        const isCouple = this.isCouple();\r\n\r\n        const hiddenPages = this.visiblePages;\r\n\r\n        this.visiblePages = isCouple ? this.getNextCouplePages() : this.getNextPage();\r\n\r\n        await this.runSwitchAnimation({ hiddenPages });\r\n    }\r\n\r\n    private updateVisiblePages = async () => {\r\n        const hidePromises = this.visiblePages.map((p) => p.hide());\r\n\r\n        await Promise.all(hidePromises);\r\n\r\n        const isCouple = this.isCouple();\r\n\r\n        this.visiblePages = isCouple ? this.getCurrentCouplePages() : this.getCurrentPage();\r\n\r\n        const showPromises = this.visiblePages.map((p) => p.show());\r\n\r\n        await Promise.all(showPromises);\r\n    };\r\n\r\n    private getCurrentCouplePages = () => {\r\n        const { first: firstPageIndex, second: secondPageIndex } = this.loopIndexStore.getCurrentCouple();\r\n        return this.pages.filter((p, index) => firstPageIndex === index || secondPageIndex === index);\r\n    };\r\n\r\n    private getCurrentPage = () => {\r\n        const pageIndex = this.loopIndexStore.getCurrentOne();\r\n        return this.pages.filter((p, index) => pageIndex === index);\r\n    };\r\n\r\n    private onIndicatorClick = async (index: number) => {\r\n        if (this.isSwitchBlocked) {\r\n            return;\r\n        }\r\n\r\n        const isCouple = this.isCouple();\r\n        const nextPageIndex = isCouple ? index * 2 + 1 : index;\r\n\r\n        const hiddenPages = this.visiblePages;\r\n\r\n        this.visiblePages = isCouple\r\n            ? this.getCouplePagesByIndex(nextPageIndex)\r\n            : this.getOnePageByIndex(nextPageIndex);\r\n\r\n        await this.runSwitchAnimation({ hiddenPages });\r\n    };\r\n\r\n    private getCouplePagesByIndex(index: number) {\r\n        const { first: firstPageIndex, second: secondPageIndex } = this.loopIndexStore.switchCoupleByIndex(index);\r\n        return this.pages.filter((p, index) => firstPageIndex === index || secondPageIndex === index);\r\n    }\r\n\r\n    private getOnePageByIndex = (pageIndex: number) => {\r\n        this.loopIndexStore.setCurrent(pageIndex);\r\n        return this.pages.filter((p, index) => pageIndex === index);\r\n    };\r\n\r\n    private onSwipeLeft = async () => {\r\n        if (this.isSwitchBlocked) {\r\n            return;\r\n        }\r\n\r\n        const isCouple = this.isCouple();\r\n\r\n        const hiddenPages = this.visiblePages;\r\n\r\n        this.visiblePages = isCouple ? this.getNextCouplePages() : this.getNextPage();\r\n\r\n        await this.runSwitchAnimation({ hiddenPages });\r\n    };\r\n\r\n    private getNextCouplePages() {\r\n        const { first: firstPageIndex, second: secondPageIndex } = this.loopIndexStore.switchNextCouple();\r\n        return this.pages.filter((p, index) => firstPageIndex === index || secondPageIndex === index);\r\n    }\r\n\r\n    private getNextPage() {\r\n        const pageIndex = this.loopIndexStore.switchNextOne();\r\n        return this.pages.filter((p, index) => pageIndex === index);\r\n    }\r\n\r\n    private onSwipeRight = async () => {\r\n        if (this.isSwitchBlocked) {\r\n            return;\r\n        }\r\n\r\n        const isCouple = this.isCouple();\r\n\r\n        const hiddenPages = this.visiblePages;\r\n\r\n        this.visiblePages = isCouple ? this.getPrevCouplePages() : this.getPrevPage();\r\n\r\n        await this.runSwitchAnimation({ hiddenPages });\r\n    };\r\n\r\n    private getPrevCouplePages() {\r\n        const { first: firstPageIndex, second: secondPageIndex } = this.loopIndexStore.switchPrevCouple();\r\n        return this.pages.filter((p, index) => firstPageIndex === index || secondPageIndex === index);\r\n    }\r\n\r\n    private getPrevPage() {\r\n        const pageIndex = this.loopIndexStore.switchPrevOne();\r\n        return this.pages.filter((p, index) => pageIndex === index);\r\n    }\r\n}\r\n","import { FeaturePane } from '../../components/FeaturePane';\r\nimport { BemBlock } from '../bem';\r\n\r\nimport { ScrollBook } from './scroll-book';\r\n\r\nexport class Beyond extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Online-Overview-Beyond';\r\n    }\r\n\r\n    onDescribe() {\r\n        this.describeBlock('feature-pane', FeaturePane, {});\r\n        this.describeBlock('scroll-book', ScrollBook, {});\r\n    }\r\n}\r\n","import { BemElement } from '../../../pages/bem';\r\n\r\nimport './style.css';\r\n\r\nexport abstract class CalendlyButton extends BemElement {\r\n    onDescribe() {}\r\n}\r\n","import { CalendlyButton } from '../base';\r\n\r\nimport './style.css';\r\n\r\nexport class CalendlyButtonFBO extends CalendlyButton {}\r\n","import { BemElement } from '../pages/bem';\r\nimport type { BemBlock } from '../pages/bem';\r\nimport { SingleElementIntersector } from '../services/intersector';\r\n\r\nexport class HiddenElement<P extends HiddenElement.Params = Record<string, never>> extends BemElement<P> {\r\n    private shown = false;\r\n\r\n    show() {\r\n        this.shown = true;\r\n        this.applyModifiers();\r\n        this.params.onShow?.();\r\n    }\r\n\r\n    protected applyModifiers(modifiers: BemBlock.ModifiersMap = {}) {\r\n        return super.applyModifiers({ ...modifiers, shown: this.shown });\r\n    }\r\n}\r\n\r\nexport namespace HiddenElement {\r\n    export interface Params {\r\n        onShow?: () => void;\r\n    }\r\n}\r\n\r\nexport class AnimatedHiddenElement<P extends AnimatedHiddenElement.Params> extends HiddenElement<P> {\r\n    private animated = false;\r\n    private reducedMotionMode: boolean = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n    onDescribe() {\r\n        super.onDescribe();\r\n        if (this.reducedMotionMode) {\r\n            return;\r\n        }\r\n        new SingleElementIntersector({\r\n            el: this.el,\r\n            onIntersectionChange: (entry) => this.onIntersectionChange(entry),\r\n            threshold: [0, this.treshold()],\r\n        }).observe();\r\n        if (this.params.onTransitionEnd) {\r\n            this.el.addEventListener('transitionend', this.params.onTransitionEnd);\r\n        }\r\n    }\r\n\r\n    protected applyModifiers(modifiers: BemBlock.ModifiersMap = {}) {\r\n        return super.applyModifiers({ ...modifiers, animated: this.animated });\r\n    }\r\n\r\n    private onIntersectionChange(entry: IntersectionObserverEntry) {\r\n        if (entry.isIntersecting && entry.intersectionRatio >= this.treshold()) {\r\n            this.onShown();\r\n        } else {\r\n            this.onHidden(entry);\r\n        }\r\n    }\r\n\r\n    private onShown() {\r\n        this.animate();\r\n        if (this.params.onScrollIn) {\r\n            this.params.onScrollIn();\r\n        }\r\n    }\r\n\r\n    private onHidden(entry: IntersectionObserverEntry): void {\r\n        if (entry.boundingClientRect.top < 0) {\r\n            this.animate();\r\n        }\r\n        this.params.onScrollOut?.();\r\n    }\r\n\r\n    private animate() {\r\n        this.animated = true;\r\n        this.applyModifiers();\r\n        this.params.onAnimate?.();\r\n    }\r\n\r\n    protected treshold(): number {\r\n        return this.params.treshold || 0;\r\n    }\r\n}\r\n\r\nexport namespace AnimatedHiddenElement {\r\n    export interface Params extends HiddenElement.Params {\r\n        onTransitionEnd?: (e: TransitionEvent) => void;\r\n        onScrollOut?: () => void;\r\n        onScrollIn?: () => void;\r\n        onAnimate?: () => void;\r\n        treshold?: number;\r\n    }\r\n}\r\n","import { BemBlock, BemElement } from '../pages/bem';\r\n\r\nimport { AnimatedHiddenElement } from './hidden';\r\n\r\nclass GenericLoadableImage<P extends LoadableImage.Params> extends BemElement<P, HTMLImageElement> {\r\n    private imageLoaded = false;\r\n\r\n    private onLoad = () => {\r\n        this.imageLoaded = true;\r\n        this.params.onLoad();\r\n    };\r\n\r\n    onDescribe() {\r\n        if (this.el.complete) {\r\n            this.onLoad();\r\n            return;\r\n        }\r\n\r\n        this.el.addEventListener('load', this.onLoad);\r\n    }\r\n\r\n    /**\r\n    IE 10 ignores onload event for some reason.\r\n    This method is used as a last resort fallback to show image from `BlockWithPicture`\r\n    @see {BlockWithPicture}\r\n    */\r\n    forceCheckCompletion() {\r\n        if (!this.imageLoaded && this.el.complete) {\r\n            this.onLoad();\r\n        }\r\n    }\r\n}\r\n\r\nexport namespace LoadableImage {\r\n    export interface Params {\r\n        onLoad: () => void;\r\n    }\r\n}\r\n\r\nexport class LoadableImage extends GenericLoadableImage<LoadableImage.Params> {}\r\n\r\nexport class HiddenLoadableImage extends LoadableImage {\r\n    constructor(el: HTMLImageElement, elementName: string, elementClassName: string) {\r\n        super(el, elementName, elementClassName, {\r\n            onLoad: () => this.show(),\r\n        });\r\n    }\r\n\r\n    private show() {\r\n        this.applyModifiers({ shown: true });\r\n    }\r\n}\r\n\r\nexport abstract class BlockWithPicture<\r\n    P extends BlockWithPicture.Params = Record<string, never>,\r\n    E extends HTMLElement = HTMLElement,\r\n> extends BemBlock<P, E> {\r\n    protected abstract pictureElement(): string;\r\n    protected abstract containerElement(): string;\r\n\r\n    protected container = this.describeElement(this.containerElement(), AnimatedHiddenElement, {\r\n        onTransitionEnd: this.params.onTransitionEnd,\r\n        onScrollOut: this.params.onScrollOut,\r\n        treshold: this.animationTreshold(),\r\n        // We check image completion when it comes into viewport so it fires it's `onLoad` handler if loaded.\r\n        // This is a workaround for IE10 ignoring image's `onload` event.\r\n        onScrollIn: () => this.picture.forceCheckCompletion(),\r\n    });\r\n\r\n    protected picture = this.describeElement(this.pictureElement(), LoadableImage, {\r\n        onLoad: () => this.container.show(),\r\n    });\r\n\r\n    protected animationTreshold(): number {\r\n        return 0.5;\r\n    }\r\n}\r\n\r\nexport namespace BlockWithPicture {\r\n    export interface Params {\r\n        onTransitionEnd?: (e: TransitionEvent) => void;\r\n        onScrollOut?: () => void;\r\n    }\r\n}\r\n","import { BemBlock } from '../../pages/bem';\r\nimport { AnimatedHiddenElement } from '../hidden';\r\n\r\nimport './index.css';\r\n\r\nexport class WatchVideoButton extends BemBlock<WatchVideoButton.Params> {\r\n    protected blockName() {\r\n        return 'S-Watch-Video-Button';\r\n    }\r\n\r\n    private onVisible = () => {\r\n        this.applyModifiers({ visible: true });\r\n    };\r\n\r\n    public onDescribe() {\r\n        this.applyModifiers({ allowAppear: this.params.canAppear ?? true });\r\n        this.describeElement('play-icon-block', AnimatedHiddenElement, {\r\n            onAnimate: this.onVisible,\r\n            treshold: 1,\r\n        });\r\n    }\r\n\r\n    public allowAppear() {\r\n        this.applyModifiers({ allowAppear: true });\r\n    }\r\n}\r\nexport namespace WatchVideoButton {\r\n    export interface Params {\r\n        canAppear?: boolean;\r\n    }\r\n}\r\n","import { CalendlyButtonFBO } from '../../components/calendly-button/fbo';\r\nimport { GoTrialButton } from '../../components/go-trial-button';\r\nimport { LoadableImage } from '../../components/image';\r\nimport { WatchVideoButton } from '../../components/watch-video-button';\r\nimport { BemBlock } from '../bem';\r\n\r\nexport class FirstScreen extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Online-Overview-First-Screen';\r\n    }\r\n\r\n    onDescribe() {\r\n        this.describeElement('try-for-free-link', GoTrialButton, {\r\n            position: 'top',\r\n        });\r\n\r\n        if (this.element('calendly')) {\r\n            this.describeElement('calendly', CalendlyButtonFBO, {});\r\n        }\r\n\r\n        const videoButton = this.describeBlock('video-button', WatchVideoButton, {\r\n            canAppear: false,\r\n        } as WatchVideoButton.Params);\r\n\r\n        this.describeElement('preview-image', LoadableImage, {\r\n            onLoad: () => videoButton.allowAppear(),\r\n        });\r\n    }\r\n}\r\n","import { BasePage } from '../../components/base-page';\r\nimport { EmbedWrapper } from '../../components/embed';\r\nimport { GoTrialButtonWrapper } from '../../components/go-trial-button';\r\nimport { runWithNewTask } from '../../util/run-with-new-task';\r\n\r\nimport { Beyond } from './beyond';\r\nimport { FirstScreen } from './first-screen';\r\nimport './styles/index.css';\r\n\r\nclass OnlineOverview extends BasePage {\r\n    protected blockName(): string {\r\n        return 'S-Online-Overview';\r\n    }\r\n\r\n    onDescribe() {\r\n        super.onDescribe();\r\n\r\n        const tasks = [\r\n            () => this.describeBlock('first-screen', FirstScreen, {}),\r\n            () =>\r\n                this.describeBlock('reading', GoTrialButtonWrapper(`${this.blockName()}-Reading`), {\r\n                    position: 'bottom',\r\n                }),\r\n            () => this.describeBlock('beyond', Beyond, {}),\r\n            () => this.describeBlock('what', EmbedWrapper(`${this.blockName()}-What`), { type: 'fbo' }),\r\n        ];\r\n\r\n        for (const task of tasks) {\r\n            void runWithNewTask<void>(task);\r\n        }\r\n    }\r\n}\r\n\r\nexport { OnlineOverview as page };\r\n","import { AnalyticsService } from '@flippingbook/web.utils/dist/analytics';\r\nimport type { IAnalyticsService } from '@flippingbook/web.utils/dist/analytics';\r\n\r\nconst release = process.env.BUILD_DATE || 'local';\r\n\r\nexport class SiteAnalyticsService extends AnalyticsService implements IAnalyticsService {\r\n    override gaEvent(eventName: string, properties?: Record<string, unknown>) {\r\n        return super.gaEvent(eventName, {\r\n            area: 'website',\r\n            release,\r\n            ...properties,\r\n        });\r\n    }\r\n\r\n    override event(\r\n        eventName: string,\r\n        eventData: IAnalyticsService.EventData,\r\n        gtagEventParams?: Partial<IAnalyticsService.GtagEventParams>,\r\n    ) {\r\n        return super.event(\r\n            eventName,\r\n            {\r\n                release,\r\n                ...eventData,\r\n            },\r\n            gtagEventParams,\r\n        );\r\n    }\r\n}\r\n","import type { IAnalyticsService } from '@flippingbook/web.utils/dist/analytics';\r\n\r\nimport { SiteAnalyticsService } from '../analytics';\r\n\r\nexport const analytics: IAnalyticsService = new SiteAnalyticsService({});\r\n","import type { IAnalyticsService } from '@flippingbook/web.utils/dist/analytics';\r\nimport { Parametrized } from '@flippingbook/web.utils/dist/service';\r\n\r\nexport class CTAAnalyticsService extends Parametrized<CTAAnalyticsService.Params> {\r\n    send(position: CTAAnalyticsService.Position) {\r\n        return this.params.analytics.gaEvent('button_click_trial', {\r\n            category: 'button',\r\n            button_location: position,\r\n        });\r\n    }\r\n}\r\n\r\nexport namespace CTAAnalyticsService {\r\n    export type Position = 'header' | 'mobile-menu' | 'top' | 'middle' | 'bottom';\r\n\r\n    export interface Params {\r\n        analytics: IAnalyticsService;\r\n    }\r\n}\r\n","import { CTAAnalyticsService } from '../CTAanalytics';\r\n\r\nimport { analytics } from './analytics';\r\n\r\nexport const ctaAnalytics = new CTAAnalyticsService({\r\n    analytics,\r\n});\r\n","export const siteAntispamService = {\r\n    getUserDetachedContext: () => window.__flippingbook_user_detached_context__,\r\n};\r\n","import type { LayoutChecker } from '../services/layout-checker';\r\n\r\nimport { isVisible } from './is-visible';\r\n\r\nexport const currentLayout = () => {\r\n    const testarea = document.getElementById('layout-test')!;\r\n    const divs = Array.from(testarea.getElementsByTagName('div'));\r\n    const hiddenElem = divs.reduce((acc, el) => (!isVisible(el) ? el.className : acc), '');\r\n    return hiddenElem.substring(7) as LayoutChecker.LayoutSize;\r\n};\r\n","export function getLoginConsumer(): string {\r\n    return Mediaparts?.Bootstrap?.Params?.loginConsumer || 'site';\r\n}\r\n","function waitForImageLoad(image: HTMLImageElement) {\r\n    return new Promise<void>((resolve) => {\r\n        if (image.complete) {\r\n            resolve();\r\n            return;\r\n        }\r\n\r\n        const handleImageLoad = () => {\r\n            image.removeEventListener('load', handleImageLoad);\r\n            resolve();\r\n        };\r\n\r\n        image.addEventListener('load', handleImageLoad);\r\n    });\r\n}\r\n\r\nfunction getImageLoadList(params: { container?: HTMLElement; classNames: string[] }) {\r\n    const selector = params.classNames.map((c) => `.${c}`).join(', ');\r\n    const container = params.container || document;\r\n    const imgElements = Array.from(container.querySelectorAll<HTMLImageElement>(selector));\r\n\r\n    return imgElements.map((imgElement) => waitForImageLoad(imgElement));\r\n}\r\n\r\nexport function waitForAllImagesLoad(params: { container?: HTMLElement; classNames: string[] }) {\r\n    const loadList = getImageLoadList(params);\r\n    return Promise.all(loadList);\r\n}\r\n\r\nexport function waitForAnyImagesLoad(params: { container?: HTMLElement; classNames: string[] }) {\r\n    const loadList = getImageLoadList(params);\r\n    return Promise.race(loadList);\r\n}\r\n\r\nexport function setLoadedClassForImage() {\r\n    const imgElements = Array.from(document.querySelectorAll<HTMLImageElement>('img'));\r\n    const loadedClassName = 'loaded';\r\n\r\n    imgElements.forEach((imgElement) => {\r\n        if (imgElement.complete) {\r\n            imgElement.classList.add(loadedClassName);\r\n            return;\r\n        }\r\n\r\n        const handleImageLoad = () => {\r\n            imgElement.removeEventListener('load', handleImageLoad);\r\n            imgElement.classList.add(loadedClassName);\r\n        };\r\n\r\n        imgElement.addEventListener('load', handleImageLoad);\r\n    });\r\n}\r\n","import { localStorage, sessionStorage } from '@flippingbook/web.utils/dist/storage';\r\n\r\nexport function isLoggedIn() {\r\n    return Boolean(\r\n        (flippingbook.user && flippingbook.user.loggedIn) ||\r\n            sessionStorage.get('PA.TokenService.Token') ||\r\n            localStorage.get('FlippingBook.PA.DefaultProduct'),\r\n    );\r\n}\r\n","// like jQuery :visible\r\nexport const isVisible = function <E extends HTMLElement = HTMLElement>(elem: E) {\r\n    return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\r\n};\r\n","module.exports = {\"locatorUrl\":\"https://registry-tc.dev.flippingbook.com/api\",\"featureFlags\":{},\"sentryDsn\":\"https://8fa71d45f6aa4a06be961166e0ee495b@sentry.io/1359544\",\"sentryEnable\":false};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-bundle.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-bundle.css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2254;","__webpack_require__.p = \"/content/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t2254: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"957\":1,\"1597\":1,\"2989\":1,\"5515\":1,\"6783\":1,\"9974\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2254: 0,\n\t4514: 0,\n\t5949: 0,\n\t5908: 0,\n\t2688: 0,\n\t4272: 0,\n\t5545: 0,\n\t7926: 0,\n\t356: 0,\n\t2737: 0,\n\t3213: 0,\n\t5118: 0,\n\t5594: 0,\n\t7499: 0,\n\t9880: 0,\n\t5845: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(5(845|908|949)|1597|356|4272|4514|9974)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunkflippingbooksite\"] = globalThis[\"webpackChunkflippingbooksite\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4514,5949,5908,4272,356,5845,8351,7101,4829], () => (__webpack_require__(511)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","GoTrialButton","B","direction","this","el","getAttribute","product","sendAnalytics","send","params","position","onLinkClick","async","ev","preventDefault","stopPropagation","newLink","loggedIn","baseRegisterUrl","resolve","subsystem","service","registerUrl","getUserDetachedContext","window","encodeURIComponent","location","origin","getLink","url","setTimeout","href","onDescribe","addEventListener","GoTrialButtonWrapper","blockName","describeElement","contentRoot","maybeContentBaseElement","document","querySelector","replace","loadJs","load","loadCss","flipbookEmbedScript","addFBOScriptByHashId","hashId","undefined","fboLoadPromise","addSalespalScriptById","id","salespalLoadPromise","addCLDBZScript","cldbzLoadPromise","SingleElementIntersector","Parametrized","constructor","super","observerCallback","entries","observer","forEach","entry","onIntersectionChange","intersector","IntersectionObserver","observe","unobserve","InteractiveStub","applyModifiers","loading","onClick","once","embedLinkParamsMap","fbo","type","globalEmbedName","activationClassName","embedIdName","onEmbedScriptAdd","salespal","cldbz","EmbedLink","embedId","dataset","addEmbedScript","showLink","style","display","prepareForActivate","hasConsent","Targeting","Performance","setAttribute","classList","add","activateEmbeds","parseAllEmbeds","Embed","embedLink","hideStub","loaded","watch","threshold","isIntersecting","intersectionRatio","matchMedia","matches","stubParams","hideStubTimeoutId","publicationLoadedHandler","event","test","data","action","clearTimeout","removeEventListener","noIframe","describeBlock","EmbedWrapper","LayoutChecker","isIn","layout","mobileLayoutChecker","tabletLayoutChecker","FeaturePane","onResizeThrottled","alignmentTitlesHeight","titleElements","allElements","onDesktopLineSize","Number","lineSize","length","isMobile","resetTitlesHeight","isTablet","requestAnimationFrame","recalculateTitlesHeight","titleElement","height","heights","getMaxTitleHeightsByLineSize","setTitlesHeight","elementHeights","map","getBoundingClientRect","linesCount","Math","ceil","Array","from","_","i","startIndex","endIndex","max","slice","floor","HorizonScrollBlocker","firstClientX","clientX","touchStart","e","touches","preventTouch","abs","passive","SwipeWatcher","startX","startY","handleTouchStart","changedTouches","screenX","screenY","handleTouchEnd","diffX","diffY","ratioX","ratioY","onRight","onLeft","onDown","onUp","eventParams","Indicator","activeIndex","circles","dotAreaLabel","loc","l10n","get","OnlinePublishingService","ScrollBookIndicatorDotAriaLabel","generateCircles","count","setActive","index","currentActiveCircle","newActiveCircle","setCount","removeCircles","innerHTML","item","createCircleByIndex","element","createElement","className","circleClassName","appendChild","value","disabled","LoopIndexStore","Listenable","firstIndex","current","normalizeIndex","newIndex","indexCount","getCoupleByIndex","first","second","getCurrentOne","getCurrentCouple","switchPrevOne","nextIndex","normalizedIndex","setCurrent","switchPrevCouple","switchCoupleByIndex","switchNextOne","switchNextCouple","couple","notify","TRANSITION","Page","setVisibility","visible","opacity","transition","zIndex","Promise","showWithAnimation","reducedMotionMode","hideWithAnimation","show","hide","getOffsetLeft","offsetLeft","VisiblePagesCountWatcher","ListenableParametrized","updatePageCount","pageCount","calculatePageCount","secondPage","unwatch","ScrollBook","visiblePages","pages","describeAllElements","loopIndexStore","visiblePagesCountWatcher","isSwitchBlocked","hasFirstAnimationFinish","startPagesAutoSwitch","stopPagesAutoSwitch","isCouple","switchInterval","switchPagesTimeoutId","SWITCH_PAGE_INTERVAL","showNext","updateVisiblePages","hidePromises","p","all","getCurrentCouplePages","getCurrentPage","showPromises","firstPageIndex","secondPageIndex","filter","pageIndex","onIndicatorClick","nextPageIndex","hiddenPages","getCouplePagesByIndex","getOnePageByIndex","runSwitchAnimation","onSwipeLeft","getNextCouplePages","getNextPage","onSwipeRight","getPrevCouplePages","getPrevPage","elementClass","indicator","getIndicatorCount","active","disconnect","listen","indicatorCount","getIndicatorActiveIndex","book","currentIndex","Beyond","CalendlyButton","CalendlyButtonFBO","HiddenElement","shown","onShow","modifiers","AnimatedHiddenElement","animated","treshold","onTransitionEnd","onShown","onHidden","animate","onScrollIn","boundingClientRect","top","onScrollOut","onAnimate","GenericLoadableImage","imageLoaded","onLoad","complete","forceCheckCompletion","LoadableImage","WatchVideoButton","onVisible","allowAppear","canAppear","FirstScreen","videoButton","OnlineOverview","tasks","task","release","SiteAnalyticsService","gaEvent","eventName","properties","area","eventData","gtagEventParams","CTAAnalyticsService","analytics","category","button_location","ctaAnalytics","siteAntispamService","__flippingbook_user_detached_context__","currentLayout","testarea","getElementById","getElementsByTagName","reduce","acc","substring","getLoginConsumer","Mediaparts","Bootstrap","Params","loginConsumer","setLoadedClassForImage","imgElements","querySelectorAll","loadedClassName","imgElement","handleImageLoad","isLoggedIn","Boolean","flippingbook","user","isVisible","elem","offsetWidth","offsetHeight","getClientRects","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call","m","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","t","mode","then","ns","create","def","indexOf","getOwnPropertyNames","definition","o","defineProperty","enumerable","f","chunkId","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","l","done","push","script","needAttach","scripts","s","charset","timeout","nc","src","onScriptComplete","prev","onerror","onload","doneFns","parentNode","removeChild","bind","target","head","Symbol","toStringTag","nmd","paths","children","loadStylesheet","reject","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","oldTag","linkTag","nonce","errorType","realHref","err","Error","name","code","request","insertBefore","nextSibling","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","promise","error","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}