{"version":3,"file":"pitch-deck-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/services/intersector.ts","webpack://flippingbooksite/./sources/src/util/run-once-on-intersect.ts","webpack://flippingbooksite/./sources/src/components/brands-slider/desktop-slider.ts","webpack://flippingbooksite/./sources/src/components/brands-slider/intersection-watcher.ts","webpack://flippingbooksite/./sources/src/components/brands-slider/layout-watcher.ts","webpack://flippingbooksite/./sources/src/components/brands-slider/mobile-slider.ts","webpack://flippingbooksite/./sources/src/components/brands-slider/index.ts","webpack://flippingbooksite/./sources/src/components/brands-block/index.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/our-products/index.ts","webpack://flippingbooksite/./sources/src/components/video.ts","webpack://flippingbooksite/./sources/src/components/animated-element.ts","webpack://flippingbooksite/./sources/src/components/watch-video-link/index.ts","webpack://flippingbooksite/./sources/src/pages/demos/pitch-deck/branding.ts","webpack://flippingbooksite/./sources/src/pages/demos/pitch-deck/heart.ts","webpack://flippingbooksite/./sources/src/pages/demos/pitch-deck/interactivity.ts","webpack://flippingbooksite/./sources/src/pages/demos/pitch-deck/what.ts","webpack://flippingbooksite/./sources/src/util/delay.ts","webpack://flippingbooksite/./sources/src/pages/demos/pitch-deck/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/get-login-consumer.ts","webpack://flippingbooksite/./sources/src/util/image.ts","webpack://flippingbooksite/./sources/src/util/is-logged-in.ts","webpack://flippingbooksite/external var \"{\\\"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 { 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 { 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 { BemBlock, BemElement } from '../../pages/bem';\r\n\r\nimport type { IntersectionWatcher } from './intersection-watcher';\r\n\r\nconst FRAGMENT_WIDTH = 149;\r\nconst FRAGMENTS_COUNT = 25;\r\nconst SLIDER_WIDTH = FRAGMENT_WIDTH * FRAGMENTS_COUNT;\r\n\r\nclass ImageWrapper extends BemElement {\r\n    setOffset(offset: number) {\r\n        this.el.setAttribute('style', `transform: translateX(-${offset}px);`);\r\n    }\r\n}\r\n\r\nexport class DesktopSlider extends BemBlock<DesktopSlider.Params> {\r\n    protected blockName(): string {\r\n        return 'S-Brands-Slider';\r\n    }\r\n\r\n    private containerWidth = 0;\r\n    private offset = 0;\r\n    private imageWrapper = this.describeElement('image-wrapper', ImageWrapper, {});\r\n\r\n    private prefersReducedMotion = matchMedia('(prefers-reduced-motion)').matches;\r\n\r\n    public init() {\r\n        this.containerWidth = this.params.containerElement.clientWidth;\r\n\r\n        window.addEventListener('resize', () => {\r\n            this.containerWidth = this.params.containerElement.clientWidth;\r\n        });\r\n\r\n        const offset = this.calculateOffsetByFragment(this.currentFragment);\r\n        requestAnimationFrame(() => {\r\n            this.imageWrapper.setOffset(offset);\r\n            this.offset = offset;\r\n            requestAnimationFrame(() => {\r\n                this.applyModifiers({ allowAnimation: true });\r\n            });\r\n        });\r\n    }\r\n\r\n    private calculateOffsetByFragment = (fragment: number) => {\r\n        const offset = FRAGMENT_WIDTH * fragment;\r\n\r\n        if (this.params.binding === 'right') {\r\n            return SLIDER_WIDTH + offset - this.containerWidth;\r\n        }\r\n\r\n        if (this.params.binding === 'left') {\r\n            return offset;\r\n        }\r\n\r\n        return (SLIDER_WIDTH - this.containerWidth) / 2 + offset;\r\n    };\r\n\r\n    private currentFragment = this.params.startsWithFragment || 0;\r\n\r\n    private interval: number | undefined = undefined;\r\n\r\n    private reset = () => {\r\n        return new Promise<void>((resolve) => {\r\n            this.applyModifiers({ allowAnimation: false });\r\n            this.currentFragment = 0;\r\n            this.offset = this.calculateOffsetByFragment(this.currentFragment);\r\n\r\n            requestAnimationFrame(() => {\r\n                this.imageWrapper.setOffset(this.offset);\r\n                requestAnimationFrame(() => {\r\n                    this.applyModifiers({ allowAnimation: true });\r\n                    resolve();\r\n                });\r\n            });\r\n        });\r\n    };\r\n\r\n    private slideRight = async () => {\r\n        if (this.currentFragment === FRAGMENTS_COUNT) {\r\n            await this.reset();\r\n        }\r\n\r\n        this.currentFragment = (this.currentFragment + 1) % (FRAGMENTS_COUNT + 1);\r\n        this.offset = this.calculateOffsetByFragment(this.currentFragment);\r\n        this.imageWrapper.setOffset(this.offset);\r\n    };\r\n\r\n    start = () => {\r\n        if (this.interval) {\r\n            return;\r\n        }\r\n        this.interval = window.setInterval(() => {\r\n            void this.slideRight();\r\n        }, 3500);\r\n    };\r\n\r\n    pause = () => {\r\n        if (!this.interval) {\r\n            return;\r\n        }\r\n        window.clearInterval(this.interval);\r\n        this.interval = undefined;\r\n    };\r\n\r\n    private toggle = () => {\r\n        if (!this.params.intersectionWatcher.intersecting) {\r\n            return;\r\n        }\r\n\r\n        if (document.visibilityState === 'visible') {\r\n            this.start();\r\n            return;\r\n        }\r\n\r\n        this.pause();\r\n    };\r\n\r\n    enableAnimation = () => {\r\n        if (this.prefersReducedMotion) {\r\n            return;\r\n        }\r\n\r\n        this.start();\r\n        document.addEventListener('visibilitychange', this.toggle);\r\n    };\r\n\r\n    disableAnimation = () => {\r\n        this.pause();\r\n        document.removeEventListener('visibilitychange', this.toggle);\r\n    };\r\n\r\n    updateAnimationPlayState = (isIntersecting: boolean) => {\r\n        if (isIntersecting) {\r\n            this.enableAnimation();\r\n            return;\r\n        }\r\n\r\n        this.disableAnimation();\r\n    };\r\n}\r\n\r\nexport namespace DesktopSlider {\r\n    export interface Params {\r\n        containerElement: HTMLElement;\r\n        startsWithFragment?: number;\r\n        binding?: 'left' | 'right';\r\n        intersectionWatcher: IntersectionWatcher;\r\n    }\r\n}\r\n","import { ListenableParametrized } from '@flippingbook/web.utils/dist/service';\r\n\r\nimport { SingleElementIntersector } from '../../services/intersector';\r\n\r\nexport class IntersectionWatcher extends ListenableParametrized<IntersectionWatcher.Params> {\r\n    private isIntersecting = false;\r\n\r\n    constructor(params: IntersectionWatcher.Params) {\r\n        super(params);\r\n\r\n        const intersector = new SingleElementIntersector({\r\n            el: this.params.el,\r\n            onIntersectionChange: (entry: IntersectionObserverEntry) => {\r\n                this.isIntersecting = entry.isIntersecting;\r\n                this.notify();\r\n            },\r\n            threshold: [0, 1],\r\n        });\r\n\r\n        intersector.observe();\r\n    }\r\n\r\n    get intersecting() {\r\n        return this.isIntersecting;\r\n    }\r\n}\r\n\r\nnamespace IntersectionWatcher {\r\n    export interface Params {\r\n        el: HTMLElement;\r\n    }\r\n}\r\n","import { Listenable } from '@flippingbook/web.utils/dist/service';\r\nimport _throttle from 'lodash-es/throttle';\r\n\r\nconst MOBILE_MODE_MAX_WIDTH = 992;\r\n\r\nexport class LayoutWatcher extends Listenable {\r\n    private isMobileMode: boolean;\r\n    private isMobile = () => document.body.clientWidth < MOBILE_MODE_MAX_WIDTH;\r\n\r\n    constructor() {\r\n        super();\r\n\r\n        this.isMobileMode = this.isMobile();\r\n\r\n        window.addEventListener(\r\n            'resize',\r\n            _throttle(() => {\r\n                const newMode = this.isMobile();\r\n\r\n                if (this.isMobileMode !== newMode) {\r\n                    this.isMobileMode = newMode;\r\n                    this.notify();\r\n                }\r\n            }, 300),\r\n        );\r\n    }\r\n\r\n    get mobileMode() {\r\n        return this.isMobileMode;\r\n    }\r\n}\r\n","import { BemBlock } from '../../pages/bem';\r\n\r\nimport type { IntersectionWatcher } from './intersection-watcher';\r\n\r\nexport class MobileSlider extends BemBlock<MobileSlider.Params> {\r\n    private prefersReducedMotion = matchMedia('(prefers-reduced-motion)').matches;\r\n\r\n    protected blockName(): string {\r\n        return 'S-Brands-Slider';\r\n    }\r\n\r\n    public init() {\r\n        this.enableAnimation();\r\n    }\r\n\r\n    updateAnimationPlayState = (isIntersecting: boolean) => {\r\n        this.applyModifiers({ mobileAnimationPause: !isIntersecting });\r\n    };\r\n\r\n    enableAnimation = () => {\r\n        if (this.prefersReducedMotion) {\r\n            return;\r\n        }\r\n\r\n        this.applyModifiers({ allowMobileAnimation: true });\r\n    };\r\n\r\n    disableAnimation = () => {\r\n        this.applyModifiers({ allowMobileAnimation: false });\r\n    };\r\n}\r\n\r\nexport namespace MobileSlider {\r\n    export interface Params {\r\n        intersectionWatcher: IntersectionWatcher;\r\n    }\r\n}\r\n","import { BemBlock } from '../../pages/bem';\nimport { runWithNewTask } from '../../util/run-with-new-task';\n\nimport { DesktopSlider } from './desktop-slider';\nimport { IntersectionWatcher } from './intersection-watcher';\nimport { LayoutWatcher } from './layout-watcher';\nimport { MobileSlider } from './mobile-slider';\n\nexport class BrandsSlider extends BemBlock<BrandsSlider.Params> {\n    protected blockName(): string {\n        return 'S-Brands-Slider';\n    }\n\n    private intersectionWatcher = new IntersectionWatcher({ el: this.el });\n\n    private desktopSlider = new DesktopSlider(this.el, {\n        binding: this.params.binding,\n        containerElement: this.el,\n        startsWithFragment: this.params.startsWithFragment,\n        intersectionWatcher: this.intersectionWatcher,\n    });\n\n    private mobileSlider = new MobileSlider(this.el, {\n        intersectionWatcher: this.intersectionWatcher,\n    });\n\n    private mobileInited = false;\n    private desktopInited = false;\n\n    onDescribe() {\n        void (async () => {\n            const layoutWatcher = await runWithNewTask(() => new LayoutWatcher());\n\n            const init = () => {\n                if (layoutWatcher.mobileMode) {\n                    this.mobileSlider.init();\n                    this.mobileInited = true;\n                    return;\n                }\n\n                this.desktopSlider.init();\n                this.desktopInited = true;\n            };\n\n            this.intersectionWatcher.listen(() => {\n                if (layoutWatcher.mobileMode) {\n                    this.mobileSlider.updateAnimationPlayState(this.intersectionWatcher.intersecting);\n                    return;\n                }\n\n                this.desktopSlider.updateAnimationPlayState(this.intersectionWatcher.intersecting);\n            });\n\n            layoutWatcher.listen(() => {\n                if (layoutWatcher.mobileMode) {\n                    if (!this.mobileInited) {\n                        this.mobileSlider.init();\n                        this.mobileInited = true;\n                    }\n\n                    this.mobileSlider.enableAnimation();\n                    this.desktopSlider.disableAnimation();\n                    return;\n                }\n\n                if (!this.desktopInited) {\n                    this.desktopSlider.init();\n                    this.desktopInited = true;\n                }\n\n                this.mobileSlider.disableAnimation();\n                this.desktopSlider.enableAnimation();\n            });\n\n            init();\n\n            this.applyModifiers({ ready: true });\n        })();\n    }\n}\n\nexport namespace BrandsSlider {\n    export interface Params {\n        startsWithFragment?: DesktopSlider.Params['startsWithFragment'];\n        binding?: DesktopSlider.Params['binding'];\n    }\n}\n","import { BemBlock } from '../../pages/bem';\r\nimport { runOnceOnIntersect } from '../../util/run-once-on-intersect';\r\nimport { BrandsSlider } from '../brands-slider';\r\n\r\nexport class BrandsBlock extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Brands-Block';\r\n    }\r\n\r\n    onDescribe() {\r\n        const brandsElementName = 'brands';\r\n\r\n        runOnceOnIntersect({\r\n            el: this.ensureElement(brandsElementName),\r\n            fn: () => {\r\n                this.describeBlock(brandsElementName, BrandsSlider, {});\r\n            },\r\n        });\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\nimport { GoTrialButton } from '../go-trial-button';\r\nimport { AnimatedHiddenElement } from '../hidden';\r\n\r\nimport './style.css';\r\n\r\nclass Product extends BemElement {\r\n    onDescribe() {\r\n        this.el.addEventListener('transitionend', this.activateScale);\r\n    }\r\n\r\n    private activateScale = () => {\r\n        this.applyModifiers({ scaled: true });\r\n        this.el.removeEventListener('transitionend', this.activateScale);\r\n    };\r\n}\r\n\r\nexport class Products extends BemBlock {\r\n    protected blockName() {\r\n        return 'S-Our-Products';\r\n    }\r\n\r\n    onDescribe() {\r\n        super.onDescribe();\r\n\r\n        this.describeElement('intersection', AnimatedHiddenElement, {\r\n            treshold: 0.7,\r\n        });\r\n\r\n        this.describeAllElements('product', Product, {});\r\n\r\n        if (this.params.ctaAnalytics) {\r\n            this.describeElement('go-trial', GoTrialButton, {\r\n                position: 'middle',\r\n            });\r\n        }\r\n    }\r\n}\r\n","import { Deferred } from '@flippingbook/web.utils/dist/util/deferred';\r\n\r\nimport { BemElement } from '../pages/bem';\r\nimport { SingleElementIntersector } from '../services/intersector';\r\nimport { runOnceOnIntersect } from '../util/run-once-on-intersect';\r\n\r\nconst HAVE_CURRENT_DATA = 2;\r\n\r\nexport class Video extends BemElement<Video.Params, HTMLVideoElement> {\r\n    private isVisible: boolean = false;\r\n    private isPlaying: boolean = false;\r\n    private prefersReducedMotion: boolean = window.matchMedia('(prefers-reduced-motion)').matches;\r\n    private autoplayEnabled: boolean = Boolean(this.params.autoplay && !this.prefersReducedMotion);\r\n\r\n    private loadedPromise = new Deferred();\r\n\r\n    private static isHighResScreen() {\r\n        return window.devicePixelRatio > 1;\r\n    }\r\n\r\n    private static setSourceForElement(el: HTMLVideoElement | HTMLSourceElement) {\r\n        const dataHighResSrc = el.dataset.highResSrc;\r\n        const dataSrc = el.dataset.src;\r\n\r\n        const src = dataHighResSrc && Video.isHighResScreen() ? dataHighResSrc : dataSrc;\r\n\r\n        if (src) {\r\n            el.setAttribute('src', src);\r\n        }\r\n    }\r\n\r\n    private onLoadedData = () => {\r\n        if (this.el.readyState >= HAVE_CURRENT_DATA) {\r\n            this.loadedPromise.resolve();\r\n            this.params.onLoad?.();\r\n        }\r\n    };\r\n\r\n    private onLoadedMetadata = () => {\r\n        this.el.load();\r\n        this.el.removeEventListener('loadedmetadata', this.onLoadedMetadata);\r\n    };\r\n\r\n    onDescribe() {\r\n        new SingleElementIntersector({\r\n            el: this.el,\r\n            onIntersectionChange: (entry) => this.onObserve(entry),\r\n            threshold: [0, this.treshold()],\r\n        }).observe();\r\n\r\n        this.el.addEventListener('ended', () => this.ended());\r\n        this.el.addEventListener('play', () => this.onPlay());\r\n        this.el.addEventListener('playing', () => this.onPlaying());\r\n        this.el.addEventListener('pause', () => this.onPause());\r\n        this.el.addEventListener('click', () => this.onClick());\r\n        this.el.addEventListener('loadeddata', () => this.onLoadedData());\r\n        this.el.addEventListener('loadedmetadata', this.onLoadedMetadata);\r\n\r\n        const onTimeUpdate = this.params.onTimeUpdate;\r\n\r\n        if (onTimeUpdate) {\r\n            this.el.addEventListener('timeupdate', () => onTimeUpdate());\r\n        }\r\n\r\n        runOnceOnIntersect({\r\n            el: this.el,\r\n            fn: () => {\r\n                if (this.el.childElementCount) {\r\n                    for (const child of this.el.children) {\r\n                        if (child.tagName !== 'SOURCE') {\r\n                            continue;\r\n                        }\r\n\r\n                        Video.setSourceForElement(child as HTMLSourceElement);\r\n                    }\r\n\r\n                    this.el.load();\r\n                    return;\r\n                }\r\n\r\n                Video.setSourceForElement(this.el);\r\n            },\r\n            threshold: [0, this.treshold()],\r\n        });\r\n\r\n        if (this.prefersReducedMotion) {\r\n            void this.onReducedMotionMode();\r\n        }\r\n        this.onLoadedData();\r\n    }\r\n\r\n    private onObserve(entry: IntersectionObserverEntry) {\r\n        if (entry.isIntersecting && entry.intersectionRatio >= this.treshold()) {\r\n            this.becameVisible();\r\n        } else {\r\n            this.becameHidden();\r\n        }\r\n    }\r\n\r\n    async autoplay() {\r\n        if (this.prefersReducedMotion) {\r\n            return;\r\n        }\r\n\r\n        this.autoplayEnabled = true;\r\n        if (!this.isVisible) {\r\n            return;\r\n        }\r\n        try {\r\n            await this.loadedPromise.promise;\r\n            await this.el.play();\r\n        } catch {\r\n            this.applyModifiers({ failed: true });\r\n            this.params.onPlaybackFail?.();\r\n        }\r\n    }\r\n\r\n    async play(from?: number): Promise<void> {\r\n        if (this.prefersReducedMotion) {\r\n            return;\r\n        }\r\n\r\n        return this.start(from);\r\n    }\r\n\r\n    protected async start(from?: number): Promise<void> {\r\n        if (from !== undefined) {\r\n            this.currentTime = from;\r\n        }\r\n        this.autoplayEnabled = true;\r\n\r\n        if (!this.isPlaying) {\r\n            await this.loadedPromise.promise;\r\n            await this.el.play();\r\n        }\r\n    }\r\n\r\n    stop() {\r\n        this.pause();\r\n        if (!this.params.freezeLastFrame) {\r\n            this.currentTime = 0;\r\n        }\r\n        this.autoplayEnabled = false;\r\n    }\r\n\r\n    get isActive() {\r\n        return this.autoplayEnabled;\r\n    }\r\n\r\n    get currentTime() {\r\n        return this.el.currentTime;\r\n    }\r\n\r\n    private set currentTime(time: number) {\r\n        this.el.currentTime = time;\r\n    }\r\n\r\n    private pause() {\r\n        if (this.isPlaying) {\r\n            this.el.pause?.();\r\n        }\r\n    }\r\n\r\n    private becameVisible() {\r\n        this.isVisible = true;\r\n        if (this.autoplayEnabled) {\r\n            void this.start();\r\n        }\r\n    }\r\n\r\n    private becameHidden() {\r\n        this.isVisible = false;\r\n        this.pause();\r\n    }\r\n\r\n    private ended() {\r\n        this.stop();\r\n        this.params.onPlayEnd?.();\r\n    }\r\n\r\n    private onPlay() {\r\n        this.applyModifiers({ failed: false });\r\n        this.params.onPlay?.();\r\n    }\r\n\r\n    private onPlaying() {\r\n        this.isPlaying = true;\r\n    }\r\n\r\n    private onPause() {\r\n        this.isPlaying = false;\r\n    }\r\n\r\n    private onClick() {\r\n        if (this.prefersReducedMotion) {\r\n            void this.start(0);\r\n        }\r\n        this.params.onClick?.();\r\n    }\r\n\r\n    private async onReducedMotionMode() {\r\n        this.el.loop = false;\r\n        this.el.autoplay = false;\r\n        this.el.style.cursor = 'pointer';\r\n\r\n        await this.loadedPromise.promise;\r\n        this.currentTime = this.params.reducedMotionModeFreezeTime ?? this.el.duration;\r\n    }\r\n\r\n    protected treshold() {\r\n        return this.params.autoplayTreshold === undefined ? 0.5 : this.params.autoplayTreshold;\r\n    }\r\n}\r\n\r\nexport namespace Video {\r\n    export interface Params {\r\n        autoplay?: boolean;\r\n        freezeLastFrame?: boolean;\r\n        reducedMotionModeFreezeTime?: number;\r\n        onPlay?: () => void;\r\n        onTimeUpdate?: () => void;\r\n        onPlayEnd?: () => void;\r\n        onClick?: () => void;\r\n        onPlaybackFail?: () => void;\r\n        onLoad?: () => void;\r\n        autoplayTreshold?: number;\r\n    }\r\n}\r\n\r\nexport class ClickableVideo extends Video {\r\n    constructor(el: HTMLVideoElement, elementName: string, elementClassName: string, params: Video.Params) {\r\n        super(el, elementName, elementClassName, {\r\n            ...params,\r\n            onPlayEnd: () => {\r\n                this.onVideoEnd();\r\n                params.onPlayEnd?.();\r\n            },\r\n            onClick: () => {\r\n                this.onVideoClick();\r\n                params.onClick?.();\r\n            },\r\n        });\r\n    }\r\n\r\n    private onVideoEnd() {\r\n        this.applyModifiers({ playing: false, ended: true });\r\n    }\r\n\r\n    private onVideoClick() {\r\n        this.applyModifiers({ playing: true, ended: false });\r\n        void this.start(0);\r\n    }\r\n}\r\n","import { BemElement } from '../pages/bem';\r\n\r\nconst animationEvent = {\r\n    animation: 'animationend',\r\n    transition: 'transitionend',\r\n};\r\n\r\nconst DEFAULT_ANIMATE_CLASS = 'animate';\r\n\r\nexport class AnimatedElement extends BemElement<AnimatedElement.Params> {\r\n    private clearClass(className: string) {\r\n        this.applyModifiers({ [className]: false });\r\n    }\r\n\r\n    animate(className = DEFAULT_ANIMATE_CLASS): Promise<() => void> {\r\n        const eventName = animationEvent[this.params.animationType];\r\n\r\n        return new Promise((resolve) => {\r\n            const onAnimationEnd = () => {\r\n                this.el.removeEventListener(eventName, onAnimationEnd);\r\n                requestAnimationFrame(() => resolve(() => this.clearClass(className)));\r\n            };\r\n\r\n            this.el.addEventListener(eventName, onAnimationEnd);\r\n\r\n            requestAnimationFrame(() => this.applyModifiers({ [className]: true }));\r\n        });\r\n    }\r\n}\r\n\r\nnamespace AnimatedElement {\r\n    export interface Params {\r\n        animationType: 'transition' | 'animation';\r\n    }\r\n}\r\n","import { BemBlock } from '../../pages/bem';\r\nimport { runOnceOnIntersect } from '../../util/run-once-on-intersect';\r\nimport { AnimatedElement } from '../animated-element';\r\n\r\nimport './style.css';\r\n\r\nexport class WatchVideoLink extends BemBlock {\r\n    protected blockName() {\r\n        return 'S-Watch-Video-Link';\r\n    }\r\n\r\n    onDescribe() {\r\n        const circleIcon = this.describeElement('circle', AnimatedElement, {\r\n            animationType: 'animation',\r\n        });\r\n\r\n        const startAnimation = async () => {\r\n            await circleIcon.animate();\r\n            requestAnimationFrame(() => this.applyModifiers({ 'shown-text': true }));\r\n        };\r\n\r\n        runOnceOnIntersect({\r\n            el: this.el,\r\n            fn: () => {\r\n                window.setTimeout(() => {\r\n                    void startAnimation();\r\n                }, 500);\r\n            },\r\n            threshold: 1,\r\n        });\r\n    }\r\n}\r\n","import { WatchVideoLink } from '../../../components/watch-video-link';\r\nimport { BemBlock } from '../../bem';\r\n\r\nexport const blockName = 'S-Pitch-Block-With-Image';\r\n\r\nexport class Branding extends BemBlock {\r\n    protected blockName(): string {\r\n        return blockName;\r\n    }\r\n\r\n    onDescribe() {\r\n        this.describeBlock('watch-video-brand', WatchVideoLink, {});\r\n    }\r\n}\r\n","import { AnimatedHiddenElement } from '../../../components/hidden';\r\n\r\nexport class Heart extends AnimatedHiddenElement<AnimatedHiddenElement.Params> {\r\n    public onDescribe() {\r\n        super.onDescribe();\r\n        this.el.addEventListener('click', () => this.applyModifiers({ filled: true }));\r\n    }\r\n}\r\n","import { WatchVideoLink } from '../../../components/watch-video-link';\r\nimport { BemBlock } from '../../bem';\r\n\r\nexport class Interactivity extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Pitch-Interactivity';\r\n    }\r\n\r\n    onDescribe() {\r\n        this.describeBlock('watch-video-brand', WatchVideoLink, {});\r\n    }\r\n}\r\n","import { AnimatedHiddenElement } from '../../../components/hidden';\r\nimport { Video } from '../../../components/video';\r\nimport { delay } from '../../../util/delay';\r\nimport { waitForAllImagesLoad } from '../../../util/image';\r\nimport { BemBlock } from '../../bem';\r\n\r\nexport class What extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Pitch-What';\r\n    }\r\n\r\n    onDescribe() {\r\n        const reducedMotionMode = window.matchMedia('(prefers-reduced-motion)').matches;\r\n\r\n        if (reducedMotionMode) {\r\n            this.applyModifiers({ visible: true });\r\n            return;\r\n        }\r\n\r\n        let showed = false;\r\n\r\n        const onAnimate = async () => {\r\n            if (showed) {\r\n                return;\r\n            }\r\n\r\n            showed = true;\r\n\r\n            const { video, videoLoadedPromise } = (() => {\r\n                let videoLoadedPromiseResolve = () => {};\r\n                const videoLoadedPromise = new Promise<void>((resolve) => {\r\n                    videoLoadedPromiseResolve = resolve;\r\n                });\r\n\r\n                const video = this.describeElement('video', Video, {\r\n                    autoplay: false,\r\n                    onLoad: videoLoadedPromiseResolve,\r\n                });\r\n\r\n                return { video, videoLoadedPromise };\r\n            })();\r\n\r\n            await waitForAllImagesLoad({\r\n                container: this.el,\r\n                classNames: [this.elementClass('preview-image')],\r\n            });\r\n            await videoLoadedPromise;\r\n            this.applyModifiers({ visible: true });\r\n            await delay(1300);\r\n            void video.play();\r\n        };\r\n\r\n        this.describeElement('image-wrapper', AnimatedHiddenElement, {\r\n            onAnimate,\r\n            treshold: 0.7,\r\n        });\r\n    }\r\n}\r\n","export function delay(ms: number) {\r\n    return new Promise((resolve) => setTimeout(resolve, ms));\r\n}\r\n","import { BasePage } from '../../../components/base-page';\r\nimport { BrandsBlock } from '../../../components/brands-block';\r\nimport { CalendlyButtonFBO } from '../../../components/calendly-button/fbo';\r\nimport { GoTrialButtonWrapper } from '../../../components/go-trial-button';\r\nimport { AnimatedHiddenElement } from '../../../components/hidden';\r\nimport { Products } from '../../../components/our-products';\r\nimport { Video } from '../../../components/video';\r\nimport { runOnceOnIntersect } from '../../../util/run-once-on-intersect';\r\nimport { runWithNewTask } from '../../../util/run-with-new-task';\r\n\r\nimport '../../../components/demo-wrapper';\r\nimport '../../../components/more-link';\r\n\r\nimport { blockName as brandingBlockName, Branding } from './branding';\r\nimport { Heart } from './heart';\r\nimport { Interactivity } from './interactivity';\r\nimport { What } from './what';\r\n\r\nimport './styles/index.css';\r\n\r\nclass Pitch extends BasePage {\r\n    protected blockName(): string {\r\n        return 'S-Pitch';\r\n    }\r\n\r\n    public onDescribe() {\r\n        super.onDescribe();\r\n\r\n        const tasks: (() => void)[] = [\r\n            () =>\r\n                this.describeBlock('first-screen', GoTrialButtonWrapper(`${this.blockName()}-First-Screen`), {\r\n                    position: 'top',\r\n                }),\r\n            () => this.describeBlock('brands', BrandsBlock, {}),\r\n            () => this.describeBlock('what', What, {}),\r\n            () => this.describeBlock('products', Products, {}),\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                this.describeAllElements('heart', Heart, {\r\n                    treshold: 0.3,\r\n                    onAnimate: () => setTimeout(() => this.applyModifiers({ 'animate-end': true }), 3000),\r\n                }),\r\n            () => this.describeAllElements('animated-link', AnimatedHiddenElement, { treshold: 0.3 }),\r\n            () =>\r\n                this.describeBlock('demos', GoTrialButtonWrapper(`${this.blockName()}-Examples`), {\r\n                    position: 'middle',\r\n                }),\r\n            () =>\r\n                this.describeBlock('cta', GoTrialButtonWrapper(`${this.blockName()}-CTA`), {\r\n                    position: 'bottom',\r\n                }),\r\n            () => {\r\n                if (this.element('calendly')) {\r\n                    this.describeElement('calendly', CalendlyButtonFBO, {});\r\n                }\r\n            },\r\n            () => this.describeElement('video', Video, { autoplay: true }),\r\n            () => this.describeBlock('interactivity', Interactivity, {}),\r\n            () => {\r\n                const brandingBlockElement: HTMLElement | null = this.el.querySelector(`.${brandingBlockName}`);\r\n\r\n                if (brandingBlockElement) {\r\n                    const brandingBlock = new Branding(brandingBlockElement, {});\r\n                    brandingBlock.onDescribe();\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 { Pitch 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","export function getLoginConsumer(): string {\r\n    return window.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        (window.flippingbook.user && window.flippingbook.user.loggedIn) ||\r\n            sessionStorage.get('PA.TokenService.Token') ||\r\n            localStorage.get('FlippingBook.PA.DefaultProduct'),\r\n    );\r\n}\r\n","module.exports = {\"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 = 8343;","__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\t8343: 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\t8343: 0,\n\t4514: 0,\n\t5949: 0,\n\t5908: 0,\n\t2577: 0,\n\t548: 0,\n\t8393: 0,\n\t702: 0,\n\t790: 0,\n\t1266: 0,\n\t2688: 0,\n\t3083: 0,\n\t3171: 0,\n\t5464: 0,\n\t5545: 0,\n\t5552: 0,\n\t7926: 0,\n\t8321: 0,\n\t8409: 0,\n\t8559: 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(48|908|949)|8(321|393|559)|1597|2577|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,2577,548,8393,8321,8559,8351,4244,4829], () => (__webpack_require__(34138)))\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","SingleElementIntersector","Parametrized","constructor","super","observerCallback","entries","observer","forEach","entry","onIntersectionChange","intersector","IntersectionObserver","observe","unobserve","blockThreshold","runOnceOnIntersect","fn","threshold","rootMargin","isIntersecting","ImageWrapper","setOffset","offset","setAttribute","DesktopSlider","containerWidth","imageWrapper","prefersReducedMotion","matchMedia","matches","calculateOffsetByFragment","fragment","binding","FRAGMENT_WIDTH","currentFragment","startsWithFragment","interval","undefined","reset","Promise","applyModifiers","allowAnimation","requestAnimationFrame","slideRight","start","setInterval","pause","clearInterval","toggle","intersectionWatcher","intersecting","document","visibilityState","enableAnimation","disableAnimation","removeEventListener","updateAnimationPlayState","init","containerElement","clientWidth","IntersectionWatcher","ListenableParametrized","notify","LayoutWatcher","Listenable","isMobile","body","isMobileMode","newMode","mobileMode","MobileSlider","mobileAnimationPause","allowMobileAnimation","BrandsSlider","desktopSlider","mobileSlider","mobileInited","desktopInited","layoutWatcher","listen","ready","BrandsBlock","brandsElementName","ensureElement","describeBlock","CalendlyButton","CalendlyButtonFBO","HiddenElement","shown","show","onShow","modifiers","AnimatedHiddenElement","animated","reducedMotionMode","treshold","onTransitionEnd","intersectionRatio","onShown","onHidden","animate","onScrollIn","boundingClientRect","top","onScrollOut","onAnimate","Product","activateScale","scaled","Products","describeAllElements","ctaAnalytics","Video","isVisible","isPlaying","autoplayEnabled","Boolean","autoplay","loadedPromise","onLoadedData","readyState","onLoad","onLoadedMetadata","load","isHighResScreen","devicePixelRatio","setSourceForElement","dataHighResSrc","dataset","highResSrc","dataSrc","src","onObserve","ended","onPlay","onPlaying","onPause","onClick","onTimeUpdate","childElementCount","child","children","tagName","onReducedMotionMode","becameVisible","becameHidden","promise","play","failed","onPlaybackFail","from","currentTime","stop","freezeLastFrame","isActive","time","onPlayEnd","loop","style","cursor","reducedMotionModeFreezeTime","duration","autoplayTreshold","animationEvent","animation","transition","AnimatedElement","clearClass","className","eventName","animationType","onAnimationEnd","WatchVideoLink","circleIcon","startAnimation","Branding","Heart","filled","Interactivity","What","visible","showed","video","videoLoadedPromise","videoLoadedPromiseResolve","ms","container","classNames","elementClass","Pitch","tasks","FAQWrapper","element","brandingBlockElement","querySelector","task","release","SiteAnalyticsService","gaEvent","properties","area","event","eventData","gtagEventParams","CTAAnalyticsService","analytics","category","button_location","siteAntispamService","__flippingbook_user_detached_context__","getLoginConsumer","Mediaparts","Bootstrap","Params","loginConsumer","getImageLoadList","selector","map","c","join","Array","querySelectorAll","imgElement","waitForImageLoad","image","complete","handleImageLoad","waitForAllImagesLoad","loadList","all","setLoadedClassForImage","imgElements","loadedClassName","classList","add","isLoggedIn","flippingbook","user","get","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","call","m","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","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","reduce","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","l","done","push","script","needAttach","scripts","getElementsByTagName","s","createElement","charset","timeout","nc","onScriptComplete","prev","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","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","error","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}