{"version":3,"file":"pdf-to-flipbook-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/./node_modules/@flippingbook/web.utils/src/analytics.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/service.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/storage/StorageProvider.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/storage/index.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/formatDateForServer.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/index.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/load.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/parseWsDate.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/parsers/paymentInfo.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/throttle.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/try-parse-date.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/wait.ts","webpack://flippingbooksite/./sources/src/components/go-trial-button.ts","webpack://flippingbooksite/./sources/src/util/load.ts","webpack://flippingbooksite/./sources/src/services/instance/flipbook-embed-script.ts","webpack://flippingbooksite/./sources/src/services/flipbook-embed-script.ts","webpack://flippingbooksite/./sources/src/components/interactive-stub/index.ts","webpack://flippingbooksite/./sources/src/components/embed/index.ts","webpack://flippingbooksite/./sources/src/components/hidden.ts","webpack://flippingbooksite/./sources/src/components/our-products/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/pages/pdf-to-flipbook/first-screen.ts","webpack://flippingbooksite/./sources/src/components/how-to/drop-cap/floating-circle/index.ts","webpack://flippingbooksite/./sources/src/components/how-to/index.ts","webpack://flippingbooksite/./sources/src/components/how-to/floating-circle.ts","webpack://flippingbooksite/./sources/src/pages/pdf-to-flipbook/how-to.ts","webpack://flippingbooksite/./sources/src/components/video.ts","webpack://flippingbooksite/./sources/src/pages/pdf-to-flipbook/interactive.ts","webpack://flippingbooksite/./sources/src/pages/pdf-to-flipbook/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/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/run-once-on-intersect.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 type { IFbAnalytics } from './fb-analytics';\nimport type { Product } from './ProductsList';\nimport { Parametrized } from './service';\nimport type { UserInfo } from './user';\nimport { wait } from './util';\n\ndeclare global {\n    interface Window {\n        fbAnalytics?: IFbAnalytics;\n    }\n}\n\nexport interface IAnalyticsService {\n    event(\n        eventName: string,\n        eventData: IAnalyticsService.EventData,\n        gtagEventParams?: Partial<IAnalyticsService.GtagEventParams>,\n    ): Promise<void>;\n    gaEvent(eventName: string, properties?: Record<string, unknown>): Promise<void>;\n    identify(user: UserInfo): Promise<void>;\n    clearIdentify(): Promise<void>;\n    alias(user: UserInfo): Promise<void>;\n    formatDate(date: Date): string;\n    pageView(eventData?: IAnalyticsService.EventData): Promise<void>;\n    trackSignup(params: IAnalyticsService.TrackSignupParams): Promise<void>;\n    update(user: UserInfo): Promise<void>;\n    writeToUserProfile(params: IAnalyticsService.EventData): Promise<void>;\n    writeToUserProfileOnce(params: IAnalyticsService.EventData): Promise<void>;\n    incrementUserProfileKey(props: IAnalyticsService.IncrementEventData): Promise<void>;\n    optOut(params: Partial<IAnalyticsService.OptOutParams>): void;\n}\n\nexport namespace IAnalyticsService {\n    export interface TrackSignupParams {\n        user: UserInfo;\n        method: string;\n        product: Product;\n        captchaAttempts?: number;\n        locale: string;\n        pageLocale: string;\n    }\n\n    export interface GtagEventParams {\n        non_interaction?: boolean;\n    }\n\n    export interface EventData {\n        [key: string]: string | number | string[] | number[];\n    }\n\n    export interface IncrementEventData {\n        prop: string;\n        value?: number;\n        /**\n         * @deprecated Use await or .then() instead\n         */\n        callback?: () => void;\n    }\n\n    export interface OptOutParams {\n        ga: boolean;\n        mixpanel: boolean;\n        bing: boolean;\n        fb: boolean;\n    }\n}\n\nconst GA_EVENT_TIMEOUT = 350;\nconst MIXPANEL_LOADED_TIMEOUT = 3000;\nconst MIXPANEL_EVENT_TIMEOUT = 350;\n\nfunction getGAEventCommonParams() {\n    return {\n        page_title: document.title,\n        page_path: window.location.pathname,\n        page_location: window.location.href,\n    };\n}\n\nexport class AnalyticsService extends Parametrized<AnalyticsService.Params> implements IAnalyticsService {\n    protected optOutState: IAnalyticsService.OptOutParams;\n\n    constructor(params: AnalyticsService.Params) {\n        super(params);\n\n        const { bing = false, fb = false, ga = false, mixpanel = false } = params.optOut || {};\n\n        this.optOutState = {\n            bing,\n            fb,\n            ga,\n            mixpanel,\n        };\n    }\n\n    async event(\n        eventName: string,\n        eventData: IAnalyticsService.EventData,\n        gtagEventParams?: Partial<IAnalyticsService.GtagEventParams>,\n    ): Promise<void> {\n        const gaId = this.getGaId();\n\n        // Track with mixpanel\n        const mixpanelPromise = this.mixpanelTrack(eventName, {\n            'GA Client ID': gaId,\n            ...eventData,\n        });\n\n        const fbAnalyticsPromise = this.withFbAnalytics((fbAnalytics) =>\n            fbAnalytics.send(eventName, {\n                'GA Client ID': gaId,\n                ...eventData,\n            }),\n        );\n\n        // Google Analytics\n        void this.gaEvent(eventName, {\n            category: 'mixpanel',\n            ...eventData,\n            ...gtagEventParams,\n        });\n\n        // Bing Ads\n        if (!this.optOutState.bing) {\n            const bing = 'uetq' in window ? uetq : [];\n            bing.push({\n                el: eventName, // Event label\n                ev: eventData.value || 0, // Event value\n            });\n        }\n\n        await Promise.allSettled([mixpanelPromise, fbAnalyticsPromise]);\n    }\n\n    private mixpanelTrack(eventName: string, properties?: Record<string, unknown>) {\n        return this.withMixpanel((mixpanel) => {\n            return Promise.race([\n                wait(MIXPANEL_EVENT_TIMEOUT),\n                new Promise<void>((resolve) => mixpanel.track(eventName, properties, resolve)),\n            ]);\n        });\n    }\n\n    // Google Analytics v4\n    gaEvent(eventName: string, properties?: Record<string, unknown>): Promise<void> {\n        return new Promise((resolve) => {\n            const timeout = setTimeout(() => {\n                clearTimeout(timeout);\n                resolve();\n            }, GA_EVENT_TIMEOUT);\n\n            const opts = {\n                ...getGAEventCommonParams(),\n                non_interaction: false,\n                event_callback: () => {\n                    clearTimeout(timeout);\n                    resolve();\n                },\n                ...properties,\n            };\n\n            void this.withGtag((gtag) => gtag('event', eventName, opts));\n        });\n    }\n\n    formatDate(date: Date): string {\n        return `${date.getUTCFullYear()}-${date.getUTCMonth() + 1}-${date.getUTCDate()}`;\n    }\n\n    pageView(eventData?: IAnalyticsService.EventData) {\n        return this.withGtag((gtag) => {\n            const commonParams = getGAEventCommonParams();\n\n            gtag('set', commonParams);\n            gtag('event', 'page_view', {\n                ...commonParams,\n                ...(eventData && {\n                    ...eventData,\n                }),\n            });\n        });\n    }\n\n    private gaIdentify(user: UserInfo) {\n        return this.withGtag((gtag) => {\n            gtag('set', {\n                user_id: user.Id,\n                dimension2: 'Member',\n            });\n\n            return this.gaEvent('Registration Tracking', {\n                non_interaction: true,\n            });\n        });\n    }\n\n    private mixpanelSetBaseFields(user: UserInfo) {\n        return this.writeToUserProfileOnce({\n            ssouid: user.Id,\n            $email: user.Email,\n            ...(user.FirstName && {\n                $first_name: user.FirstName,\n            }),\n            ...(user.LastName && {\n                $last_name: user.LastName,\n            }),\n        });\n    }\n\n    private mixpanelIdentify(user: UserInfo) {\n        return this.withMixpanel((mixpanel) => {\n            mixpanel.identify(String(user.Id));\n            return this.mixpanelSetBaseFields(user);\n        });\n    }\n\n    private mixpanelAlias(user: UserInfo) {\n        return this.withMixpanel((mixpanel) => {\n            mixpanel.alias(String(user.Id));\n            return this.mixpanelSetBaseFields(user);\n        });\n    }\n\n    private fbAnalyticsIdentify(user: UserInfo) {\n        return this.withFbAnalytics((fbAnalytics) => fbAnalytics.setSsoId(user.Id));\n    }\n\n    async identify(user: UserInfo) {\n        await Promise.all([this.mixpanelIdentify(user), this.gaIdentify(user), this.fbAnalyticsIdentify(user)]);\n    }\n\n    private clearGAIdentify() {\n        return this.withGtag((gtag) => {\n            gtag('set', {\n                dimension2: 'Guest',\n            });\n\n            return this.gaEvent('Registration Tracking', {\n                non_interaction: true,\n            });\n        });\n    }\n\n    private clearMixpanelIdentify() {\n        return this.withMixpanel((mixpanel) => {\n            mixpanel.reset();\n        });\n    }\n\n    private clearFbAnalyticsIdentify() {\n        return this.withFbAnalytics((fbAnalytics) => {\n            fbAnalytics.clear();\n        });\n    }\n\n    async clearIdentify() {\n        await Promise.all([this.clearMixpanelIdentify(), this.clearGAIdentify(), this.clearFbAnalyticsIdentify()]);\n    }\n\n    async alias(user: UserInfo) {\n        await Promise.all([this.mixpanelAlias(user), this.gaIdentify(user)]);\n    }\n\n    update(user: UserInfo) {\n        return this.writeToUserProfile({\n            ssouid: user.Id,\n            $email: user.Email,\n            ...(user.FirstName && {\n                $first_name: user.FirstName,\n            }),\n            ...(user.LastName && {\n                $last_name: user.LastName,\n            }),\n        });\n    }\n\n    async trackSignup(params: IAnalyticsService.TrackSignupParams) {\n        const { user, product, method, locale, pageLocale, captchaAttempts = 0 } = params;\n\n        await this.event('First Registration', {\n            'Registration Method': method,\n            InitialProduct: product,\n            ssouid: String(user.Id),\n            'Captcha Tries Count': String(captchaAttempts),\n            'Previous Page Localization':\n                locale === pageLocale ? `Full ${locale.toUpperCase()}` : `Partly ${locale.toUpperCase()}`,\n        });\n\n        await this.identify(user);\n    }\n\n    writeToUserProfile(params: IAnalyticsService.EventData): Promise<void> {\n        return this.withMixpanel((mixpanel) => {\n            return Promise.race([\n                wait(MIXPANEL_EVENT_TIMEOUT),\n                new Promise<void>((resolve) => mixpanel.people.set(params, resolve)),\n            ]);\n        });\n    }\n\n    private async getLoadedMixpanel() {\n        if ('mixpanelLoaded' in window) {\n            return Promise.race([wait(MIXPANEL_LOADED_TIMEOUT), mixpanelLoaded.promise]);\n        }\n\n        return undefined;\n    }\n\n    writeToUserProfileOnce(params: IAnalyticsService.EventData): Promise<void> {\n        return this.withMixpanel(async (mixpanel) => {\n            const loadedMixpanel = await this.getLoadedMixpanel();\n\n            const properties = Object.keys(params).reduce<IAnalyticsService.EventData>((acc, propertyName) => {\n                const propertyValueFromMixPanel = loadedMixpanel\n                    ? loadedMixpanel.get_property(propertyName)\n                    : undefined;\n\n                return {\n                    ...acc,\n                    [propertyName]:\n                        propertyValueFromMixPanel === undefined ? params[propertyName] : propertyValueFromMixPanel,\n                };\n            }, {});\n\n            return Promise.race([\n                wait(MIXPANEL_EVENT_TIMEOUT),\n                new Promise<void>((resolve) => (loadedMixpanel || mixpanel).people.set_once(properties, resolve)),\n            ]);\n        });\n    }\n\n    incrementUserProfileKey(props: IAnalyticsService.IncrementEventData): Promise<void> {\n        const { prop, value, callback = () => {} } = props;\n\n        return this.withMixpanel((mixpanel) => {\n            return Promise.race([\n                wait(MIXPANEL_EVENT_TIMEOUT),\n                new Promise<void>((resolve) => mixpanel.people.increment(prop, value, resolve)),\n            ]).then(() => callback());\n        });\n    }\n\n    private withGtag(cb: (gtag: Gtag.Gtag) => void | Promise<void>): Promise<void> {\n        if (!this.optOutState.ga && this.hasGtag()) {\n            return Promise.resolve(cb(gtag));\n        }\n        return Promise.resolve();\n    }\n\n    private withMixpanel(cb: (mixpanel: Mixpanel) => void | Promise<void>): Promise<void> {\n        if (!this.optOutState.mixpanel && 'mixpanel' in window) {\n            return Promise.resolve(cb(mixpanel));\n        }\n        return Promise.resolve();\n    }\n\n    private withFbAnalytics(cb: (fbAnalytics: IFbAnalytics) => void | Promise<void>): Promise<void> {\n        const fb = window?.fbAnalytics;\n\n        if (fb) {\n            return Promise.resolve(cb(fb));\n        }\n        return Promise.resolve();\n    }\n\n    private getGaId() {\n        if ('gaGlobal' in window && !!gaGlobal) {\n            try {\n                return JSON.parse(gaGlobal.vid) as string;\n            } catch {\n                // skip\n            }\n        }\n\n        if (document && 'cookie' in document) {\n            const gaCookie = document.cookie\n                .split(';')\n                .map((c) => c.replace(/\\s/g, '').split('=', 2))\n                .find((c) => c[0] === '_ga');\n            if (gaCookie) {\n                const pattern = 'GAx.y.';\n                return gaCookie[1].substring(pattern.length);\n            }\n        }\n\n        return '';\n    }\n\n    private hasGtag() {\n        return typeof gtag === 'function';\n    }\n\n    optOut(params: Partial<IAnalyticsService.OptOutParams>) {\n        this.optOutState = {\n            ...this.optOutState,\n            ...params,\n        };\n    }\n}\n\nexport namespace AnalyticsService {\n    export interface Params {\n        optOut?: Partial<IAnalyticsService.OptOutParams>;\n    }\n}\n","import { readonly } from './types';\n\nexport interface IService {\n    listen(cb: () => void): void;\n    unlisten(cb: () => void): void;\n}\n\nexport abstract class Listenable {\n    private readonly listeners = new Set<() => void>();\n\n    listen(cb: () => void) {\n        this.listeners.add(cb);\n    }\n\n    unlisten(cb: () => void) {\n        this.listeners.delete(cb);\n    }\n\n    protected notify() {\n        this.listeners.forEach((l) => l());\n    }\n}\n\nexport abstract class Parametrized<P> {\n    protected params: P;\n\n    constructor(params: P) {\n        this.params = params;\n    }\n}\n\nexport abstract class ListenableParametrized<P> extends Listenable {\n    protected params: P;\n\n    constructor(params: P) {\n        super();\n        this.params = params;\n    }\n}\n\nexport interface IServiceDataStorage<T> extends IService {\n    getData(): Readonly<T> | null;\n    updateData(update: T): Readonly<T>;\n    overwriteData(newData: T | null): Readonly<T> | null;\n}\n\nexport class ServiceDataStorage<T> extends Listenable implements IServiceDataStorage<T> {\n    private data: Readonly<T> | null = null;\n\n    getData(): Readonly<T> | null {\n        return this.data === null ? null : readonly(this.data);\n    }\n\n    updateData(update: T): Readonly<T> {\n        this.data = {\n            ...(this.data || {}),\n            ...update,\n        };\n        this.notify();\n        return readonly(this.data);\n    }\n\n    overwriteData(newData: T | null): Readonly<T> | null {\n        this.data = newData;\n        this.notify();\n        return this.data === null ? null : readonly(this.data);\n    }\n}\n\nexport abstract class AbstractService<T extends object, P = Record<string, unknown>>\n    extends ListenableParametrized<P & { serviceStorage?: IServiceDataStorage<T> }>\n    implements IService\n{\n    protected storage: IServiceDataStorage<T>;\n\n    constructor(params: P & { serviceStorage?: IServiceDataStorage<T> }) {\n        super(params);\n\n        this.storage = params.serviceStorage ?? new ServiceDataStorage<T>();\n        this.storage.listen(() => this.notify());\n    }\n\n    protected get data(): Readonly<T> | null {\n        return this.storage.getData();\n    }\n\n    protected updateData(update: T): Readonly<T> {\n        return this.storage.updateData(update);\n    }\n\n    protected overwriteData(newData: T | null): Readonly<T> | null {\n        return this.storage.overwriteData(newData);\n    }\n}\n","import type { IStorageProvider } from './IStorageProvider';\n\ntype StorageType = 'sessionStorage' | 'localStorage';\n\nclass RealStorage implements IStorageProvider {\n    private baseObj: Storage;\n\n    constructor(baseObj: Storage) {\n        this.baseObj = baseObj;\n    }\n\n    get(key: string) {\n        return this.baseObj.getItem(key);\n    }\n\n    set(key: string, value: string) {\n        return this.baseObj.setItem(key, value);\n    }\n\n    remove(key: string) {\n        return this.baseObj.removeItem(key);\n    }\n\n    clear() {\n        return this.baseObj.clear();\n    }\n\n    getJSON<T>(key: string): T | null {\n        const val = this.get(key);\n        if (val) {\n            return JSON.parse(val) as T;\n        }\n        return null;\n    }\n\n    setJSON(key: string, value: unknown) {\n        return this.set(key, JSON.stringify(value));\n    }\n}\n\nclass ObjectStorage implements IStorageProvider {\n    private data: { [id: string]: string } = {};\n\n    get(key: string) {\n        return this.data[key];\n    }\n\n    set(key: string, value: string) {\n        this.data[key] = value;\n    }\n\n    remove(key: string) {\n        delete this.data[key];\n    }\n\n    clear() {\n        this.data = {};\n    }\n\n    getJSON<T>(key: string): T | null {\n        const val = this.get(key);\n        if (val) {\n            return JSON.parse(val) as T;\n        }\n        return null;\n    }\n\n    setJSON(key: string, value: unknown) {\n        return this.set(key, JSON.stringify(value));\n    }\n}\n\nconst isStorageSupported = (storage: StorageType) => {\n    try {\n        window[storage].setItem('test-storage-supported', '1');\n        window[storage].removeItem('test-storage-supported');\n        return true;\n    } catch {\n        return false;\n    }\n};\n\nconst getStorage = (storage: StorageType) => {\n    return isStorageSupported(storage) ? new RealStorage(window[storage]) : new ObjectStorage();\n};\n\nexport const localStorage: IStorageProvider = getStorage('localStorage');\nexport const sessionStorage: IStorageProvider = getStorage('sessionStorage');\nexport const objectStorage: IStorageProvider = new ObjectStorage();\n","export { IStorageProvider } from './IStorageProvider';\nexport { localStorage, sessionStorage, objectStorage } from './StorageProvider';\n","export function formatDateForServer(date: Date): string {\n    return date.toISOString();\n}\n\nexport function formatDateForServerShort(date: Date): string {\n    return date.toISOString().replace(/T.*$/, '');\n}\n\nexport function formatStartDate(date: Date): string {\n    const utcLikeLocal = new Date(\n        date.getUTCFullYear(),\n        date.getUTCMonth(),\n        date.getUTCDate(),\n        0,\n        date.getTimezoneOffset() * -1,\n    );\n    return formatDateForServerShort(utcLikeLocal);\n}\n\nexport function formatEndDate(date: Date): string {\n    const nextDay = new Date(\n        date.getUTCFullYear(),\n        date.getUTCMonth(),\n        date.getUTCDate() + 1,\n        0,\n        date.getTimezoneOffset() * -1,\n    );\n    return formatDateForServerShort(nextDay);\n}\n","import parseWsDate from './parseWsDate';\n\nexport { loadCss, loadJs } from './load';\nexport { parsePaymentInfo } from './parsers/paymentInfo';\nexport { formatDateForServer } from './formatDateForServer';\nexport { wait } from './wait';\nexport { throttle } from './throttle';\n\nexport { parseWsDate };\n","const EXTERNAL_URL_REGEX = /^https?:/;\n\nconst contentUrl = (contentRoot: string, src: string) =>\n    EXTERNAL_URL_REGEX.test(src) ? src : contentRoot + (src.charAt(0) === '/' ? src : `/${src}`);\n\nexport const loadJs = (contentRoot: string) => (src: string) =>\n    new Promise<void>((resolve, reject) => {\n        const scriptTag = document.createElement('script');\n        scriptTag.addEventListener('load', () => resolve());\n        // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n        scriptTag.addEventListener('error', () => reject());\n        scriptTag.setAttribute('src', contentUrl(contentRoot, src));\n        document.head.appendChild(scriptTag);\n    });\n\nexport const loadCss = (contentRoot: string) => (src: string) =>\n    new Promise<void>((resolve, reject) => {\n        const linkTag = document.createElement('link');\n        linkTag.setAttribute('rel', 'stylesheet');\n        linkTag.addEventListener('load', () => resolve());\n        // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n        linkTag.addEventListener('error', () => reject());\n        linkTag.setAttribute('href', contentUrl(contentRoot, src));\n        document.head.appendChild(linkTag);\n    });\n","const parseWsDate = (wsDate: string | Date | null): Date | null => {\n    if (!wsDate) {\n        return null;\n    }\n    if (wsDate instanceof Date) {\n        return wsDate;\n    }\n    try {\n        return new Date(parseInt(wsDate.substring(6), 10));\n    } catch {\n        return null;\n    }\n};\n\nexport default parseWsDate;\n","import type { PaymentInfo as PaymentInfoJson } from '../../apis/payments';\nimport type { PaymentInfo } from '../../subscriptions';\nimport { tryParseDate } from '../try-parse-date';\n\nexport const parsePaymentInfo = (payment: PaymentInfoJson): PaymentInfo => {\n    return {\n        ...payment,\n        LastUpdate: tryParseDate(payment.LastUpdate ? payment.LastUpdate : ''),\n        Items: payment.Items.map(parsePaymentInfo),\n    };\n};\n","export const throttle = <T extends unknown[]>(callback: (...args: T) => unknown, delay?: number) => {\n    let shouldWait = false;\n\n    return (...args: T) => {\n        if (!shouldWait) {\n            callback(...args);\n\n            shouldWait = true;\n\n            setTimeout(() => {\n                shouldWait = false;\n            }, delay);\n        }\n    };\n};\n","export function tryParseDate(dateString: string): Date | null {\n    if (!Number.isNaN(Date.parse(dateString))) {\n        return new Date(dateString);\n    }\n    return null;\n}\n","export const wait = (timeout: number) => new Promise<void>((resolve) => setTimeout(resolve, timeout));\n","import { BemBlock, BemElement } from '../pages/bem';\r\nimport type { CTAAnalyticsService } from '../services/CTAanalytics';\r\nimport { ctaAnalytics } from '../services/instance/cta-analytics';\r\nimport { serviceLocator } from '../services/instance/serviceLocator';\r\nimport { siteAntispamService } from '../services/instance/siteAntispamService';\r\nimport { getLoginConsumer } from '../util/get-login-consumer';\r\nimport { isLoggedIn } from '../util/is-logged-in';\r\nimport { runWithNewTask } from '../util/run-with-new-task';\r\n\r\nfunction goToUrlOnNextTask(url: string) {\r\n    // transition to the page should be performed after all other events\r\n    // Example: sending analytics\r\n    setTimeout(() => {\r\n        window.location.href = url;\r\n    }, 0);\r\n}\r\n\r\nasync function getLink(product: string, direction: string | null) {\r\n    const loggedIn = isLoggedIn();\r\n\r\n    const [baseRegisterUrl] = await serviceLocator.resolve({\r\n        subsystem: 'generic',\r\n        service: 'logon-register-ui',\r\n    });\r\n    const consumer = getLoginConsumer();\r\n    const userDetachedContext = siteAntispamService.getUserDetachedContext();\r\n    const registerUrl = `${baseRegisterUrl}?r=${consumer}&t=both&asc=${userDetachedContext}`;\r\n\r\n    if (product === 'fb-online') {\r\n        return !loggedIn ? `${registerUrl}&products=FBOnline` : '/account/online';\r\n    }\r\n\r\n    if (product === 'fb-publisher' && direction === 'auto') {\r\n        return !loggedIn\r\n            ? `${registerUrl}&products=Publisher2&resume-url=${window.encodeURIComponent(\r\n                  `${window.location.origin}/downloads?autostart=true`,\r\n              )}`\r\n            : '/downloads?autostart=true';\r\n    }\r\n\r\n    if (product === 'fb-publisher' && direction === 'account') {\r\n        return '/account/software';\r\n    }\r\n\r\n    if (product === 'fb-publisher') {\r\n        return '/downloads';\r\n    }\r\n\r\n    if (product === 'fb-server') {\r\n        return '/automation';\r\n    }\r\n\r\n    if (loggedIn) {\r\n        return '/account/autonav';\r\n    }\r\n\r\n    return '/account/signup';\r\n}\r\n\r\nexport class GoTrialButton extends BemElement<GoTrialButton.Params> {\r\n    private direction = this.el.getAttribute('data-direction');\r\n    private product = this.el.getAttribute('data-product') || 'fb-online';\r\n\r\n    public onDescribe() {\r\n        this.el.addEventListener('click', (ev) => {\r\n            void this.onLinkClick(ev);\r\n        });\r\n    }\r\n\r\n    private sendAnalytics = () => {\r\n        return ctaAnalytics.send(this.params.position);\r\n    };\r\n\r\n    private onLinkClick = async (ev: Event) => {\r\n        ev.preventDefault();\r\n        ev.stopPropagation();\r\n\r\n        await runWithNewTask(() => this.sendAnalytics());\r\n\r\n        const newLink = await getLink(this.product, this.direction);\r\n        goToUrlOnNextTask(newLink);\r\n    };\r\n}\r\nexport namespace GoTrialButton {\r\n    export interface Params {\r\n        position: CTAAnalyticsService.Position;\r\n    }\r\n}\r\n\r\nexport const GoTrialButtonWrapper = (blockName: string) =>\r\n    class GoTrialButtonWrapper extends BemBlock<GoTrialButton.Params> {\r\n        protected blockName(): string {\r\n            return blockName;\r\n        }\r\n\r\n        onDescribe() {\r\n            this.describeElement('go-trial', GoTrialButton, this.params);\r\n        }\r\n    };\r\n","import * as load from '@flippingbook/web.utils/dist/util/load';\r\n\r\nconst contentRoot = () => {\r\n    const maybeContentBaseElement = document.querySelector('[data-content-base]');\r\n    const contentBase = maybeContentBaseElement ? maybeContentBaseElement.getAttribute('data-content-base') || '' : '';\r\n    return contentBase.replace(/\\/$/, '');\r\n};\r\n\r\nexport const loadJs = load.loadJs(contentRoot());\r\nexport const loadCss = load.loadCss(contentRoot());\r\n","import { FlipbookEmbedScript } from '../flipbook-embed-script';\r\n\r\nexport const flipbookEmbedScript = new FlipbookEmbedScript();\r\n","import { loadJs } from '../util/load';\r\n\r\nexport class FlipbookEmbedScript {\r\n    private fboLoadPromise: Promise<void> | undefined;\r\n    private salespalLoadPromise: Promise<void> | undefined;\r\n    private cldbzLoadPromise: Promise<void> | undefined;\r\n\r\n    addFBOScriptByHashId(hashId: string) {\r\n        if (this.fboLoadPromise === undefined) {\r\n            this.fboLoadPromise = loadJs(`https://online.flippingbook.com/EmbedScriptUrl.aspx?m=redir&hid=${hashId}`);\r\n        }\r\n\r\n        return this.fboLoadPromise;\r\n    }\r\n\r\n    addSalespalScriptById(id: string) {\r\n        if (this.salespalLoadPromise === undefined) {\r\n            this.salespalLoadPromise = loadJs(`https://api.salespal.com/embed-script-url/?id=${id}`);\r\n        }\r\n\r\n        return this.salespalLoadPromise;\r\n    }\r\n\r\n    addCLDBZScript(id: string) {\r\n        if (this.cldbzLoadPromise === undefined) {\r\n            this.cldbzLoadPromise = loadJs(`https://cld.bz/e/${id}/embed.js?mode=redir&uni=4.0.0`);\r\n        }\r\n\r\n        return this.cldbzLoadPromise;\r\n    }\r\n}\r\n","import { BemBlock } from '../../pages/bem';\r\n\r\nexport class InteractiveStub extends BemBlock<InteractiveStub.Params> {\r\n    protected blockName(): string {\r\n        return 'S-Interactive-Stub';\r\n    }\r\n\r\n    onDescribe(): void {\r\n        this.el.addEventListener(\r\n            'click',\r\n            () => {\r\n                this.applyModifiers({ loading: true });\r\n\r\n                if (this.params.onClick) {\r\n                    this.params.onClick();\r\n                }\r\n            },\r\n            { once: true },\r\n        );\r\n    }\r\n}\r\n\r\nexport namespace InteractiveStub {\r\n    export interface Params {\r\n        onClick?: () => void;\r\n    }\r\n}\r\n","import { BemBlock, BemElement } from '../../pages/bem';\r\nimport { ConsentGroup } from '../../services/consentService';\r\nimport { consentService } from '../../services/instance/consentService';\r\nimport { flipbookEmbedScript } from '../../services/instance/flipbook-embed-script';\r\nimport { SingleElementIntersector } from '../../services/intersector';\r\nimport { InteractiveStub } from '../interactive-stub';\r\n\r\nconst THRESHOLD = 0;\r\n\r\nconst embedLinkParamsMap = {\r\n    fbo: {\r\n        type: 'fbo',\r\n        globalEmbedName: 'fboEmbed',\r\n        activationClassName: 'fbo-embed',\r\n        embedIdName: 'fboId',\r\n        onEmbedScriptAdd: (id: string) => flipbookEmbedScript.addFBOScriptByHashId(id),\r\n    },\r\n    salespal: {\r\n        type: 'fbp',\r\n        globalEmbedName: 'fbpEmbed',\r\n        activationClassName: 'fbp-embed',\r\n        embedIdName: 'fbpId',\r\n        onEmbedScriptAdd: (id: string) => flipbookEmbedScript.addSalespalScriptById(id),\r\n    },\r\n    cldbz: {\r\n        type: 'fbc',\r\n        globalEmbedName: 'fbcEmbed',\r\n        activationClassName: 'fbc-embed',\r\n        embedIdName: 'fbcId',\r\n        onEmbedScriptAdd: (id: string) => flipbookEmbedScript.addCLDBZScript(id),\r\n    },\r\n};\r\n\r\nclass EmbedLink extends BemElement<EmbedLink.Params> {\r\n    get embedId() {\r\n        return this.el.dataset[this.params.embedIdName] || '';\r\n    }\r\n\r\n    addEmbedScript() {\r\n        return this.params.onEmbedScriptAdd(this.embedId);\r\n    }\r\n\r\n    showLink() {\r\n        this.el.style.display = '';\r\n    }\r\n\r\n    prepareForActivate() {\r\n        this.el.style.display = 'none';\r\n        if (!consentService.hasConsent([ConsentGroup.Targeting, ConsentGroup.Performance])) {\r\n            this.el.setAttribute(`data-${this.params.type}-nocookie`, '');\r\n        }\r\n        this.el.classList.add(this.params.activationClassName);\r\n    }\r\n\r\n    activateEmbeds() {\r\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n        // @ts-ignore\r\n        window[this.params.globalEmbedName].parseAllEmbeds();\r\n    }\r\n}\r\n\r\nnamespace EmbedLink {\r\n    export interface Params {\r\n        type: Embed.EmbedType;\r\n        globalEmbedName: string;\r\n        activationClassName: string;\r\n        embedIdName: string;\r\n        onEmbedScriptAdd: (id: string) => Promise<void>;\r\n    }\r\n}\r\n\r\nexport class Embed extends BemBlock<Embed.Params> {\r\n    protected blockName(): string {\r\n        return 'S-Embed';\r\n    }\r\n\r\n    private embedLink = this.describeElement('link', EmbedLink, embedLinkParamsMap[this.params.type]);\r\n\r\n    private hideStub = () => this.applyModifiers({ loaded: true });\r\n\r\n    watch() {\r\n        const threshold = this.params.threshold || THRESHOLD;\r\n        const intersector = new SingleElementIntersector({\r\n            el: this.el,\r\n            onIntersectionChange: async (entry: IntersectionObserverEntry) => {\r\n                if (entry.isIntersecting && entry.intersectionRatio >= threshold) {\r\n                    intersector.unobserve();\r\n                    this.embedLink.prepareForActivate();\r\n\r\n                    try {\r\n                        await this.embedLink.addEmbedScript();\r\n                        this.embedLink.activateEmbeds();\r\n                    } catch {\r\n                        this.embedLink.showLink();\r\n                    }\r\n                }\r\n            },\r\n            threshold,\r\n        });\r\n        intersector.observe();\r\n    }\r\n\r\n    onDescribe(): void {\r\n        const reducedMotionMode = window.matchMedia('(prefers-reduced-motion)').matches;\r\n\r\n        if (!reducedMotionMode) {\r\n            this.watch();\r\n            return;\r\n        }\r\n\r\n        const stubParams: InteractiveStub.Params = {\r\n            onClick: async () => {\r\n                this.embedLink.prepareForActivate();\r\n\r\n                let hideStubTimeoutId = 0;\r\n\r\n                const publicationLoadedHandler = (event: MessageEvent) => {\r\n                    if (\r\n                        /.flippingbook.(com|cld.bz)$/.test(event.origin) &&\r\n                        event.data.action === 'publicationLoaded' &&\r\n                        this.embedLink.embedId === event.data.id\r\n                    ) {\r\n                        clearTimeout(hideStubTimeoutId);\r\n                        window.removeEventListener('message', publicationLoadedHandler);\r\n                        setTimeout(() => this.hideStub(), 1000);\r\n                    }\r\n                };\r\n\r\n                try {\r\n                    window.addEventListener('message', publicationLoadedHandler);\r\n\r\n                    await this.embedLink.addEmbedScript();\r\n                    this.embedLink.activateEmbeds();\r\n\r\n                    if (this.params.noIframe) {\r\n                        window.removeEventListener('message', publicationLoadedHandler);\r\n                        this.hideStub();\r\n                    }\r\n\r\n                    hideStubTimeoutId = window.setTimeout(() => {\r\n                        window.removeEventListener('message', publicationLoadedHandler);\r\n                        this.hideStub();\r\n                    }, 3000);\r\n                } catch {\r\n                    this.embedLink.showLink();\r\n                    window.removeEventListener('message', publicationLoadedHandler);\r\n                }\r\n            },\r\n        };\r\n\r\n        this.describeBlock('stub', InteractiveStub, stubParams);\r\n    }\r\n}\r\n\r\nexport namespace Embed {\r\n    export type EmbedType = 'fbo' | 'salespal' | 'cldbz';\r\n\r\n    export interface Params {\r\n        type: EmbedType;\r\n        noIframe?: boolean;\r\n        threshold?: number;\r\n    }\r\n}\r\n\r\nexport const EmbedWrapper = (blockName: string) =>\r\n    class EmbedWrapper extends BemBlock<Embed.Params> {\r\n        protected blockName(): string {\r\n            return blockName;\r\n        }\r\n\r\n        onDescribe() {\r\n            this.describeBlock('embed', Embed, this.params);\r\n        }\r\n    };\r\n","import { 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 { 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 { GoTrialButton } from '../../components/go-trial-button';\r\nimport { BemBlock } from '../bem';\r\n\r\nexport class FirstScreen extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Pdf-To-Flipbook-First-Screen';\r\n    }\r\n\r\n    onDescribe() {\r\n        this.describeElement('call-to-action', GoTrialButton, {\r\n            position: 'top',\r\n        });\r\n\r\n        if (this.element('calendly')) {\r\n            this.describeElement('calendly', CalendlyButtonFBO, {});\r\n        }\r\n    }\r\n}\r\n","import { BemElement } from '../../../../pages/bem';\r\nimport './style.css';\r\n\r\nexport class FloatingCircleDropCap extends BemElement {}\r\n","import { BemBlock } from '../../pages/bem';\r\nimport './style.css';\r\n\r\nexport abstract class HowToBaseBlock<P = Record<string, never>> extends BemBlock<P> {\r\n    protected blockName(): string {\r\n        return 'S-How-To';\r\n    }\r\n}\r\n","import { SingleElementIntersector } from '../../services/intersector';\r\n\r\nimport { FloatingCircleDropCap } from './drop-cap/floating-circle';\r\n\r\nimport { HowToBaseBlock } from './index';\r\n\r\nexport class HowToFloatingCircle extends HowToBaseBlock {\r\n    private isIntersecting = false;\r\n\r\n    public onDescribe() {\r\n        this.describeAllElements('drop-cap', FloatingCircleDropCap, {});\r\n\r\n        const intersector = new SingleElementIntersector({\r\n            el: this.el,\r\n            onIntersectionChange: (entry: IntersectionObserverEntry) => {\r\n                const { isIntersecting } = entry;\r\n\r\n                if (this.isIntersecting !== isIntersecting) {\r\n                    const dropCapAnimationState = isIntersecting ? 'running' : 'paused';\r\n\r\n                    this.el.style.setProperty('--dropCapAnimationState', dropCapAnimationState);\r\n                    this.isIntersecting = isIntersecting;\r\n                }\r\n            },\r\n            threshold: [0, 1],\r\n        });\r\n\r\n        intersector.observe();\r\n    }\r\n}\r\n","import { HowToFloatingCircle } from '../../components/how-to/floating-circle';\r\nimport { BemBlock } from '../bem';\r\n\r\nexport class HowToWrapper extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Pdf-To-Flipbook-How-To-Wrapper';\r\n    }\r\n\r\n    public onDescribe() {\r\n        this.describeBlock('how-to', HowToFloatingCircle, {});\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 { AnimatedHiddenElement } from '../../components/hidden';\r\nimport { Video } from '../../components/video';\r\nimport { BemBlock } from '../bem';\r\n\r\nexport class Interactive extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Pdf-To-Flipbook-Interactive';\r\n    }\r\n\r\n    private video = this.describeElement('video', Video, { autoplay: false, reducedMotionModeFreezeTime: 0.5 });\r\n    private showed = false;\r\n\r\n    public onDescribe() {\r\n        this.describeElement('image-wrapper', AnimatedHiddenElement, {\r\n            onAnimate: this.onVisible,\r\n            treshold: 1,\r\n        });\r\n    }\r\n\r\n    private onVisible = () => {\r\n        if (!this.showed) {\r\n            this.applyModifiers({ visible: true });\r\n            setTimeout(() => {\r\n                void this.video.play();\r\n            }, 1300);\r\n            this.showed = true;\r\n        }\r\n    };\r\n}\r\n","import { BasePage } from '../../components/base-page';\r\nimport { EmbedWrapper } from '../../components/embed';\r\nimport { GoTrialButtonWrapper } from '../../components/go-trial-button';\r\nimport { Products } from '../../components/our-products';\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 { FirstScreen } from './first-screen';\r\nimport { HowToWrapper } from './how-to';\r\nimport { Interactive } from './interactive';\r\n\r\nimport './style/index.css';\r\n\r\nclass PdfToFlipbook extends BasePage {\r\n    protected blockName(): string {\r\n        return 'S-Pdf-To-Flipbook';\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            () => this.describeBlock('embed', EmbedWrapper(`${this.blockName()}-Embed`), { type: 'fbo' }),\r\n            () => this.describeBlock('how-to', HowToWrapper, {}),\r\n            async () => {\r\n                const { Examples } = await import('./examples');\r\n                this.describeBlock('examples', Examples, {});\r\n            },\r\n            async () => {\r\n                const { Features } = await import('./features');\r\n                this.describeBlock('features', Features, {});\r\n            },\r\n            () => this.describeBlock('products', Products, {}),\r\n            () => this.describeBlock('interactive', Interactive, {}),\r\n            async () => {\r\n                const { BrandsBlock } = await import('../../components/brands-block');\r\n                this.describeBlock('brands', BrandsBlock, {});\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                this.describeBlock('call-to-action', GoTrialButtonWrapper(`${this.blockName()}-Call-To-Action`), {\r\n                    position: 'bottom',\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 { PdfToFlipbook 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","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","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","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 = 1070;","__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\t952: 0,\n\t1070: 0,\n\t1392: 0,\n\t8571: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"957\":1,\"1597\":1,\"2950\":1,\"2989\":1,\"5515\":1,\"6783\":1,\"8556\":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\t952: 0,\n\t1070: 0,\n\t1392: 0,\n\t8571: 0,\n\t4514: 0,\n\t5949: 0,\n\t5908: 0,\n\t2577: 0,\n\t8393: 0,\n\t452: 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\t8409: 0,\n\t7820: 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(!/^(45(14|2)|5(464|908|949)|1597|2577|7820|8393|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,8393,452,5464,7820,8351,4829], () => (__webpack_require__(38038)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","MIXPANEL_EVENT_TIMEOUT","getGAEventCommonParams","page_title","document","title","page_path","window","location","pathname","page_location","href","AnalyticsService","Parametrized","constructor","params","super","bing","fb","ga","mixpanel","optOut","this","optOutState","event","eventName","eventData","gtagEventParams","gaId","getGaId","mixpanelPromise","mixpanelTrack","fbAnalyticsPromise","withFbAnalytics","fbAnalytics","send","gaEvent","category","uetq","push","el","ev","value","Promise","allSettled","properties","withMixpanel","race","wait","resolve","track","timeout","setTimeout","clearTimeout","opts","non_interaction","event_callback","withGtag","gtag","formatDate","date","getUTCFullYear","getUTCMonth","getUTCDate","pageView","commonParams","gaIdentify","user","user_id","Id","dimension2","mixpanelSetBaseFields","writeToUserProfileOnce","ssouid","$email","Email","FirstName","$first_name","LastName","$last_name","mixpanelIdentify","identify","String","mixpanelAlias","alias","fbAnalyticsIdentify","setSsoId","all","clearGAIdentify","clearMixpanelIdentify","reset","clearFbAnalyticsIdentify","clear","clearIdentify","update","writeToUserProfile","trackSignup","product","method","locale","pageLocale","captchaAttempts","InitialProduct","toUpperCase","people","set","getLoadedMixpanel","mixpanelLoaded","promise","async","loadedMixpanel","Object","keys","reduce","acc","propertyName","propertyValueFromMixPanel","get_property","undefined","set_once","incrementUserProfileKey","props","prop","callback","increment","then","cb","hasGtag","gaGlobal","JSON","parse","vid","gaCookie","cookie","split","map","c","replace","find","pattern","substring","length","Listenable","listeners","Set","listen","add","unlisten","delete","notify","forEach","l","ListenableParametrized","ServiceDataStorage","data","getData","readonly","updateData","overwriteData","newData","storage","serviceStorage","RealStorage","baseObj","get","key","getItem","setItem","remove","removeItem","getJSON","val","setJSON","stringify","ObjectStorage","getStorage","isStorageSupported","localStorage","sessionStorage","objectStorage","formatDateForServerShort","toISOString","Date","getTimezoneOffset","parseWsDate","loadCss","loadJs","parsePaymentInfo","formatDateForServer","throttle","EXTERNAL_URL_REGEX","contentUrl","contentRoot","src","test","charAt","reject","scriptTag","createElement","addEventListener","setAttribute","head","appendChild","linkTag","wsDate","parseInt","payment","LastUpdate","tryParseDate","Items","delay","shouldWait","args","dateString","Number","isNaN","GoTrialButton","B","direction","getAttribute","sendAnalytics","position","onLinkClick","preventDefault","stopPropagation","newLink","loggedIn","baseRegisterUrl","subsystem","service","registerUrl","getUserDetachedContext","encodeURIComponent","origin","getLink","url","onDescribe","GoTrialButtonWrapper","blockName","describeElement","maybeContentBaseElement","querySelector","load","flipbookEmbedScript","addFBOScriptByHashId","hashId","fboLoadPromise","addSalespalScriptById","id","salespalLoadPromise","addCLDBZScript","cldbzLoadPromise","InteractiveStub","applyModifiers","loading","onClick","once","embedLinkParamsMap","fbo","type","globalEmbedName","activationClassName","embedIdName","onEmbedScriptAdd","salespal","cldbz","EmbedLink","embedId","dataset","addEmbedScript","showLink","style","display","prepareForActivate","hasConsent","Targeting","Performance","classList","activateEmbeds","parseAllEmbeds","Embed","embedLink","hideStub","loaded","watch","threshold","intersector","onIntersectionChange","entry","isIntersecting","intersectionRatio","unobserve","observe","matchMedia","matches","stubParams","hideStubTimeoutId","publicationLoadedHandler","action","removeEventListener","noIframe","describeBlock","EmbedWrapper","HiddenElement","shown","show","onShow","modifiers","AnimatedHiddenElement","animated","reducedMotionMode","treshold","onTransitionEnd","onShown","onHidden","animate","onScrollIn","boundingClientRect","top","onScrollOut","onAnimate","Product","activateScale","scaled","Products","describeAllElements","ctaAnalytics","CalendlyButton","CalendlyButtonFBO","FirstScreen","element","FloatingCircleDropCap","HowToBaseBlock","HowToFloatingCircle","dropCapAnimationState","setProperty","HowToWrapper","Video","isVisible","isPlaying","prefersReducedMotion","autoplayEnabled","Boolean","autoplay","loadedPromise","onLoadedData","readyState","onLoad","onLoadedMetadata","isHighResScreen","devicePixelRatio","setSourceForElement","dataHighResSrc","highResSrc","dataSrc","onObserve","ended","onPlay","onPlaying","onPause","onTimeUpdate","fn","childElementCount","child","children","tagName","onReducedMotionMode","becameVisible","becameHidden","play","failed","onPlaybackFail","from","start","currentTime","stop","pause","freezeLastFrame","isActive","time","onPlayEnd","loop","cursor","reducedMotionModeFreezeTime","duration","autoplayTreshold","Interactive","video","showed","onVisible","visible","PdfToFlipbook","tasks","Examples","Features","BrandsBlock","ensureElement","FAQWrapper","task","release","SiteAnalyticsService","area","CTAAnalyticsService","analytics","button_location","siteAntispamService","__flippingbook_user_detached_context__","SingleElementIntersector","observerCallback","entries","observer","IntersectionObserver","getLoginConsumer","Mediaparts","Bootstrap","Params","loginConsumer","setLoadedClassForImage","imgElements","Array","querySelectorAll","loadedClassName","imgElement","complete","handleImageLoad","isLoggedIn","flippingbook","blockThreshold","runOnceOnIntersect","rootMargin","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call","m","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","t","mode","ns","create","def","current","indexOf","getOwnPropertyNames","definition","o","defineProperty","enumerable","f","e","chunkId","promises","u","miniCssF","g","globalThis","Function","prototype","hasOwnProperty","done","script","needAttach","scripts","getElementsByTagName","s","charset","nc","onScriptComplete","prev","onerror","onload","doneFns","parentNode","removeChild","bind","target","Symbol","toStringTag","nmd","paths","p","loadStylesheet","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","oldTag","nonce","errorType","realHref","err","Error","name","code","request","insertBefore","nextSibling","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","error","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}