{"version":3,"file":"online-digital-magazine-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/run-once-on-intersect.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/pages/demos/online-digital-magazine/book-demo.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/pages/demos/online-digital-magazine/features.ts","webpack://flippingbooksite/./sources/src/pages/demos/online-digital-magazine/first-screen.ts","webpack://flippingbooksite/./sources/src/util/chain-animation.ts","webpack://flippingbooksite/./sources/src/pages/demos/online-digital-magazine/how-to.ts","webpack://flippingbooksite/./sources/src/pages/demos/online-digital-magazine/share-with-ease.ts","webpack://flippingbooksite/./sources/src/pages/demos/online-digital-magazine/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/services/intersector.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 { SingleElementIntersector } from '../services/intersector';\r\n\r\nimport { runWithNewTask } from './run-with-new-task';\r\n\r\nconst blockThreshold = [0, 1];\r\n\r\ninterface Params {\r\n    el: HTMLElement;\r\n    fn: () => void | Promise<void>;\r\n    threshold?: number | number[];\r\n    rootMargin?: string;\r\n}\r\n\r\nexport function runOnceOnIntersect(params: Params) {\r\n    const { el, fn, threshold, rootMargin = '0px' } = params;\r\n\r\n    const intersector = new SingleElementIntersector({\r\n        onIntersectionChange: (entry: IntersectionObserverEntry) => {\r\n            if (entry.isIntersecting) {\r\n                intersector.unobserve();\r\n\r\n                void runWithNewTask(fn);\r\n            }\r\n        },\r\n        threshold: threshold || blockThreshold,\r\n        el,\r\n        rootMargin,\r\n    });\r\n    intersector.observe();\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 { CalendlyButtonFBO } from '../../../components/calendly-button/fbo';\r\nimport { BemBlock } from '../../bem';\r\n\r\nexport class BookDemo extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Magazine-Book-Demo';\r\n    }\r\n\r\n    public onDescribe() {\r\n        this.describeElement('calendly', CalendlyButtonFBO, {});\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","import { FeaturePane } from '../../../components/FeaturePane';\r\nimport { BemBlock } from '../../bem';\r\n\r\nexport class Features extends BemBlock {\r\n    protected blockName() {\r\n        return 'S-Magazine-Features';\r\n    }\r\n\r\n    onDescribe() {\r\n        this.describeBlock('feature-pane', FeaturePane, {});\r\n    }\r\n}\r\n","import { GoTrialButton } from '../../../components/go-trial-button';\r\nimport { BemBlock } from '../../bem';\r\n\r\nexport class FirstScreen extends BemBlock {\r\n    protected blockName() {\r\n        return 'S-Magazine-First-Screen';\r\n    }\r\n\r\n    onDescribe() {\r\n        this.describeElement('go-trial', GoTrialButton, {\r\n            position: 'top',\r\n        });\r\n    }\r\n}\r\n","import { Parametrized } from '@flippingbook/web.utils/dist/service';\r\n\r\nexport class ChainAnimation<T extends HTMLElement> extends Parametrized<ChainAnimation.Params<T>> {\r\n    private applyAnimation = (el: T, cb: () => void) => {\r\n        requestAnimationFrame(() => el.classList.add('animate'));\r\n\r\n        el.addEventListener('transitionend', cb);\r\n        el.addEventListener('animationend', cb);\r\n    };\r\n\r\n    private animatePart(selector: string) {\r\n        return new Promise((resolve) => {\r\n            const elements = this.params.rootElement.querySelectorAll<T>(selector);\r\n            let animationsInQuery = elements.length;\r\n\r\n            if (!animationsInQuery) {\r\n                resolve(undefined);\r\n                return;\r\n            }\r\n\r\n            Array.from(elements).forEach((el) => {\r\n                const onAnimationEnd = () => {\r\n                    el.removeEventListener('transitionend', onAnimationEnd);\r\n                    el.removeEventListener('animationend', onAnimationEnd);\r\n                    el.classList.add('animationend');\r\n\r\n                    animationsInQuery = animationsInQuery - 1;\r\n\r\n                    if (animationsInQuery === 0) {\r\n                        resolve(undefined);\r\n                    }\r\n                };\r\n                this.applyAnimation(el, onAnimationEnd);\r\n            });\r\n        });\r\n    }\r\n\r\n    private deleteAnimationPart(selector: string) {\r\n        const elements = this.params.rootElement.querySelectorAll<T>(selector);\r\n\r\n        Array.from(elements).forEach((el) => {\r\n            el.classList.remove('animate', 'animationend');\r\n        });\r\n    }\r\n\r\n    async animate() {\r\n        for (const selector of this.params.selectorSequence) {\r\n            await this.animatePart(selector);\r\n        }\r\n    }\r\n\r\n    reset() {\r\n        for (const selector of this.params.selectorSequence) {\r\n            this.deleteAnimationPart(selector);\r\n        }\r\n    }\r\n}\r\n\r\nnamespace ChainAnimation {\r\n    export interface Params<T extends HTMLElement> {\r\n        rootElement: T;\r\n        selectorSequence: string[];\r\n    }\r\n}\r\n","import { ChainAnimation } from '../../../util/chain-animation';\r\nimport { runOnceOnIntersect } from '../../../util/run-once-on-intersect';\r\nimport { BemBlock } from '../../bem';\r\n\r\nexport class HowTo extends BemBlock {\r\n    protected blockName() {\r\n        return 'S-Magazine-How-To';\r\n    }\r\n\r\n    onDescribe() {\r\n        const reducedMotionMode = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n        if (reducedMotionMode) {\r\n            return;\r\n        }\r\n\r\n        runOnceOnIntersect({\r\n            el: this.ensureElement('animation-trigger'),\r\n            fn: () => {\r\n                const chainAnimation = new ChainAnimation({\r\n                    rootElement: this.el,\r\n                    selectorSequence: [`.${this.blockName()}-Item__icon path`],\r\n                });\r\n\r\n                void chainAnimation.animate();\r\n            },\r\n        });\r\n    }\r\n}\r\n","import { FeaturePane } from '../../../components/FeaturePane';\r\nimport { BemBlock } from '../../bem';\r\n\r\nexport class Share extends BemBlock {\r\n    protected blockName() {\r\n        return 'S-Magazine-Share';\r\n    }\r\n\r\n    onDescribe() {\r\n        this.describeBlock('feature-pane', FeaturePane, {});\r\n    }\r\n}\r\n","import { BasePage } from '../../../components/base-page';\r\nimport { runOnceOnIntersect } from '../../../util/run-once-on-intersect';\r\nimport { runWithNewTask } from '../../../util/run-with-new-task';\r\n\r\nimport { BookDemo } from './book-demo';\r\nimport { Features } from './features';\r\nimport { FirstScreen } from './first-screen';\r\nimport { HowTo } from './how-to';\r\nimport { Share } from './share-with-ease';\r\n\r\nimport '../../../components/demo-wrapper';\r\n\r\nimport './styles/index.css';\r\n\r\nclass OnlineDigitalMagazineDemoPage extends BasePage {\r\n    protected blockName(): string {\r\n        return 'S-Magazine';\r\n    }\r\n\r\n    onDescribe() {\r\n        super.onDescribe();\r\n\r\n        const tasks: (() => void)[] = [\r\n            () => this.describeBlock('first-screen', FirstScreen, {}),\r\n            async () => {\r\n                const { EmbedWrapper } = await import('../../../components/embed');\r\n\r\n                this.describeBlock('what-is', EmbedWrapper(`${this.blockName()}-What`), {\r\n                    type: 'fbo',\r\n                });\r\n            },\r\n            () => this.describeBlock('share', Share, {}),\r\n            async () => {\r\n                const { Examples } = await import('./examples');\r\n\r\n                const examplesElementName = 'examples';\r\n\r\n                runOnceOnIntersect({\r\n                    el: this.ensureElement(examplesElementName),\r\n                    fn: () => {\r\n                        this.describeBlock('examples', Examples, {});\r\n                    },\r\n                });\r\n            },\r\n            () => this.describeBlock('how-to', HowTo, {}),\r\n            async () => {\r\n                const { Products } = await import('../../../components/our-products');\r\n\r\n                this.describeBlock('products', Products, {});\r\n            },\r\n            () => {\r\n                const faqElementName = 'faq';\r\n\r\n                runOnceOnIntersect({\r\n                    el: this.ensureElement(faqElementName),\r\n                    fn: async () => {\r\n                        const { FAQWrapper } = await import('../../../components/faq');\r\n                        this.describeBlock(faqElementName, FAQWrapper(`${this.blockName()}-FAQ`), {});\r\n                    },\r\n                });\r\n            },\r\n            () => {\r\n                if (this.element('book-demo')) {\r\n                    this.describeBlock('book-demo', BookDemo, {});\r\n                }\r\n            },\r\n            () => this.describeBlock('features', Features, {}),\r\n            async () => {\r\n                const { GoTrialButtonWrapper } = await import('../../../components/go-trial-button');\r\n\r\n                this.describeBlock('cta', GoTrialButtonWrapper(`${this.blockName()}-CTA`), {\r\n                    position: 'bottom',\r\n                });\r\n            },\r\n        ];\r\n\r\n        for (const task of tasks) {\r\n            void runWithNewTask(task);\r\n        }\r\n    }\r\n}\r\n\r\nexport { OnlineDigitalMagazineDemoPage 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 { 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 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 = 1788;","__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\t1788: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"957\":1,\"1597\":1,\"2989\":1,\"3974\":1,\"5515\":1,\"6783\":1,\"8393\":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\t1788: 0,\n\t4514: 0,\n\t5949: 0,\n\t5908: 0,\n\t2577: 0,\n\t356: 0,\n\t1086: 0,\n\t2688: 0,\n\t2737: 0,\n\t3213: 0,\n\t5118: 0,\n\t5545: 0,\n\t5594: 0,\n\t7499: 0,\n\t7926: 0,\n\t8705: 0,\n\t9880: 0,\n\t6186: 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(!/^(59(08|49)|1597|2577|4514|6186|8393|8705|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,2577,8705,6186,8351,6625,4829], () => (__webpack_require__(60351)))\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","blockThreshold","runOnceOnIntersect","fn","threshold","rootMargin","intersector","onIntersectionChange","entry","isIntersecting","unobserve","observe","CalendlyButton","CalendlyButtonFBO","BookDemo","LayoutChecker","Parametrized","isIn","layout","mobileLayoutChecker","tabletLayoutChecker","FeaturePane","onResizeThrottled","alignmentTitlesHeight","titleElements","allElements","onDesktopLineSize","Number","dataset","lineSize","length","isMobile","resetTitlesHeight","isTablet","requestAnimationFrame","recalculateTitlesHeight","forEach","titleElement","style","height","heights","getMaxTitleHeightsByLineSize","setTitlesHeight","elementHeights","map","getBoundingClientRect","linesCount","Math","ceil","Array","from","_","i","startIndex","endIndex","max","slice","floor","Features","describeBlock","FirstScreen","ChainAnimation","applyAnimation","cb","classList","add","animatePart","selector","Promise","elements","rootElement","querySelectorAll","animationsInQuery","onAnimationEnd","removeEventListener","undefined","deleteAnimationPart","remove","animate","selectorSequence","reset","HowTo","matchMedia","matches","ensureElement","Share","OnlineDigitalMagazineDemoPage","super","tasks","EmbedWrapper","type","Examples","Products","FAQWrapper","element","task","release","SiteAnalyticsService","gaEvent","eventName","properties","area","event","eventData","gtagEventParams","CTAAnalyticsService","analytics","category","button_location","ctaAnalytics","siteAntispamService","__flippingbook_user_detached_context__","SingleElementIntersector","constructor","observerCallback","entries","observer","IntersectionObserver","currentLayout","testarea","document","getElementById","getElementsByTagName","reduce","acc","className","substring","getLoginConsumer","Mediaparts","Bootstrap","Params","loginConsumer","setLoadedClassForImage","imgElements","loadedClassName","imgElement","complete","handleImageLoad","isLoggedIn","Boolean","flippingbook","user","get","isVisible","elem","offsetWidth","offsetHeight","getClientRects","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","call","m","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","t","value","mode","then","ns","create","def","current","indexOf","getOwnPropertyNames","definition","o","defineProperty","enumerable","f","e","chunkId","all","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","l","done","push","script","needAttach","scripts","s","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","target","head","appendChild","Symbol","toStringTag","nmd","paths","children","p","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","test","promise","error","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}