{"version":3,"file":"digital-bookshelf-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/service.ts","webpack://flippingbooksite/./sources/src/components/bookshelf-embed/index.ts","webpack://flippingbooksite/./sources/src/util/chain-animation.ts","webpack://flippingbooksite/./sources/src/pages/demos/digital-bookshelf/first-screen-bookshelf.ts","webpack://flippingbooksite/./sources/src/pages/demos/digital-bookshelf/first-screen.ts","webpack://flippingbooksite/./sources/src/components/how-to/index.ts","webpack://flippingbooksite/./sources/src/components/how-to/drop-cap/roman/index.ts","webpack://flippingbooksite/./sources/src/pages/demos/digital-bookshelf/how-to.ts","webpack://flippingbooksite/./sources/src/pages/demos/digital-bookshelf/index.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 { 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 { BemBlock } from '../../pages/bem';\r\nimport { loadJs } from '../../util/load';\r\nimport { InteractiveStub } from '../interactive-stub';\r\n\r\nconst EMBED_SCRIPT_URL = 'https://cld.bz/e/s-embed.js';\r\n\r\nexport class BookshelfEmbed extends BemBlock<BookshelfEmbed.Params> {\r\n    protected blockName(): string {\r\n        return 'S-Bookshelf-Embed';\r\n    }\r\n\r\n    onDescribe(): void {\r\n        const shelf = this.ensure('cld-bz-series-embed');\r\n\r\n        shelf.addEventListener(\r\n            'thumbnails-loaded',\r\n            () => {\r\n                this.applyModifiers({ loaded: true });\r\n                this.params.onLoad?.();\r\n            },\r\n            { once: true },\r\n        );\r\n\r\n        const reducedMotionMode = window.matchMedia('(prefers-reduced-motion)').matches;\r\n\r\n        if (!reducedMotionMode) {\r\n            void loadJs(EMBED_SCRIPT_URL);\r\n            return;\r\n        }\r\n\r\n        const stubParams: InteractiveStub.Params = {\r\n            onClick: () => {\r\n                void loadJs(EMBED_SCRIPT_URL);\r\n            },\r\n        };\r\n\r\n        this.describeBlock('stub', InteractiveStub, stubParams);\r\n    }\r\n}\r\n\r\nexport namespace BookshelfEmbed {\r\n    export interface Params {\r\n        onLoad?: () => void;\r\n    }\r\n}\r\n","import { Parametrized } from '@flippingbook/web.utils/dist/service';\r\n\r\nexport class ChainAnimation<T extends HTMLElement> extends Parametrized<ChainAnimation.Params<T>> {\r\n    private applyAnimation = (el: T, cb: () => void) => {\r\n        requestAnimationFrame(() => el.classList.add('animate'));\r\n\r\n        el.addEventListener('transitionend', cb);\r\n        el.addEventListener('animationend', cb);\r\n    };\r\n\r\n    private animatePart(selector: string) {\r\n        return new Promise((resolve) => {\r\n            const elements = this.params.rootElement.querySelectorAll<T>(selector);\r\n            let animationsInQuery = elements.length;\r\n\r\n            if (!animationsInQuery) {\r\n                resolve(undefined);\r\n                return;\r\n            }\r\n\r\n            Array.from(elements).forEach((el) => {\r\n                const onAnimationEnd = () => {\r\n                    el.removeEventListener('transitionend', onAnimationEnd);\r\n                    el.removeEventListener('animationend', onAnimationEnd);\r\n                    el.classList.add('animationend');\r\n\r\n                    animationsInQuery = animationsInQuery - 1;\r\n\r\n                    if (animationsInQuery === 0) {\r\n                        resolve(undefined);\r\n                    }\r\n                };\r\n                this.applyAnimation(el, onAnimationEnd);\r\n            });\r\n        });\r\n    }\r\n\r\n    private deleteAnimationPart(selector: string) {\r\n        const elements = this.params.rootElement.querySelectorAll<T>(selector);\r\n\r\n        Array.from(elements).forEach((el) => {\r\n            el.classList.remove('animate', 'animationend');\r\n        });\r\n    }\r\n\r\n    async animate() {\r\n        for (const selector of this.params.selectorSequence) {\r\n            await this.animatePart(selector);\r\n        }\r\n    }\r\n\r\n    reset() {\r\n        for (const selector of this.params.selectorSequence) {\r\n            this.deleteAnimationPart(selector);\r\n        }\r\n    }\r\n}\r\n\r\nnamespace ChainAnimation {\r\n    export interface Params<T extends HTMLElement> {\r\n        rootElement: T;\r\n        selectorSequence: string[];\r\n    }\r\n}\r\n","import { BookshelfEmbed } from '../../../components/bookshelf-embed';\r\nimport { ChainAnimation } from '../../../util/chain-animation';\r\nimport { runOnceOnIntersect } from '../../../util/run-once-on-intersect';\r\nimport { BemBlock } from '../../bem';\r\n\r\nclass PlaneMotion {\r\n    private el: SVGAnimateMotionElement;\r\n\r\n    constructor(el: SVGAnimateMotionElement) {\r\n        this.el = el;\r\n    }\r\n\r\n    animate() {\r\n        return new Promise<void>((resolve) => {\r\n            const onAnimationEnd = () => {\r\n                this.el.removeEventListener('endEvent', onAnimationEnd);\r\n                resolve();\r\n            };\r\n\r\n            this.el.addEventListener('endEvent', onAnimationEnd);\r\n\r\n            (this.el as unknown as { beginElement: () => void }).beginElement(); // FIXME: use SVGAnimateMotionElement\r\n        });\r\n    }\r\n}\r\n\r\nexport class FirstScreenBookshelf extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Bookshelf-First-Screen-Bookshelf';\r\n    }\r\n\r\n    onDescribe() {\r\n        const chainAnimation = new ChainAnimation({\r\n            rootElement: this.el,\r\n            selectorSequence: ['plane-place', 'boy', 'girl2', 'girl1'].map(\r\n                (className) => `.${this.elementClass(className)}`,\r\n            ),\r\n        });\r\n\r\n        const planeMotionElement = this.ensureElement('plane-motion') as unknown as SVGAnimateMotionElement;\r\n        const planeMotion = new PlaneMotion(planeMotionElement);\r\n\r\n        const prepareAnimation = () =>\r\n            new Promise((resolve) => {\r\n                this.applyModifiers({\r\n                    'ready-for-begin': true,\r\n                });\r\n\r\n                requestAnimationFrame(resolve);\r\n            });\r\n\r\n        const startAnimation = async () => {\r\n            await chainAnimation.animate();\r\n            this.applyModifiers({ 'plane-circle-hidden': true });\r\n            await planeMotion.animate();\r\n            this.applyModifiers({ 'plane-hidden': true });\r\n        };\r\n\r\n        runOnceOnIntersect({\r\n            el: this.el,\r\n            fn: async () => {\r\n                let timeoutId = 0;\r\n                let shelfLoaded = false;\r\n\r\n                await prepareAnimation();\r\n\r\n                const onShelfLoaded = () => {\r\n                    window.clearTimeout(timeoutId);\r\n\r\n                    if (shelfLoaded) {\r\n                        return;\r\n                    }\r\n\r\n                    shelfLoaded = true;\r\n                    void startAnimation();\r\n                };\r\n\r\n                const bookshelfEmbedParams: BookshelfEmbed.Params = {\r\n                    onLoad: onShelfLoaded,\r\n                };\r\n\r\n                this.describeBlock('shelf', BookshelfEmbed, bookshelfEmbedParams);\r\n\r\n                timeoutId = window.setTimeout(() => onShelfLoaded(), 2000);\r\n            },\r\n            threshold: 0.4,\r\n        });\r\n    }\r\n}\r\n","import { CalendlyButtonFBP } from '../../../components/calendly-button/fbp';\r\nimport { GoTrialButton } from '../../../components/go-trial-button';\r\nimport { BemBlock } from '../../bem';\r\n\r\nimport { FirstScreenBookshelf } from './first-screen-bookshelf';\r\n\r\nexport class FirstScreen extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Bookshelf-First-Screen';\r\n    }\r\n\r\n    onDescribe() {\r\n        this.describeElement('try-button', GoTrialButton, {\r\n            position: 'top',\r\n        });\r\n\r\n        const calendlyName = 'calendly';\r\n\r\n        if (this.element(calendlyName)) {\r\n            this.describeElement(calendlyName, CalendlyButtonFBP, {});\r\n        }\r\n\r\n        this.describeBlock('bookshelf', FirstScreenBookshelf, {});\r\n    }\r\n}\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 { BemElement } from '../../../../pages/bem';\r\nimport './style.css';\r\n\r\nexport class RomanDropCap extends BemElement {}\r\n","import { HowToBaseBlock } from '../../../components/how-to';\r\nimport { RomanDropCap } from '../../../components/how-to/drop-cap/roman';\r\nimport { BemBlock } from '../../bem';\r\n\r\nclass HowToBlock extends HowToBaseBlock {\r\n    onDescribe() {\r\n        this.describeAllElements('drop-cap', RomanDropCap, {});\r\n    }\r\n}\r\n\r\nexport class HowTo extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Bookshelf-How-To';\r\n    }\r\n\r\n    onDescribe() {\r\n        this.describeBlock('how-to-block', HowToBlock, {});\r\n    }\r\n}\r\n","import { BasePage } from '../../../components/base-page';\r\nimport { GoTrialButtonWrapper } from '../../../components/go-trial-button';\r\nimport { runWithNewTask } from '../../../util/run-with-new-task';\r\n\r\nimport { FirstScreen } from './first-screen';\r\nimport { HowTo } from './how-to';\r\n\r\nimport '../../../components/more-link';\r\nimport '../../../components/demo-wrapper';\r\nimport './styles/index.css';\r\n\r\nclass DigitalBookshelf extends BasePage {\r\n    protected blockName(): string {\r\n        return 'S-Bookshelf';\r\n    }\r\n\r\n    onDescribe() {\r\n        super.onDescribe();\r\n        this.describeBlock('examples', GoTrialButtonWrapper(`${this.blockName()}-Examples`), {\r\n            position: 'middle',\r\n        });\r\n\r\n        this.describeBlock('first-screen', FirstScreen, {});\r\n\r\n        this.describeBlock('cta', GoTrialButtonWrapper(`${this.blockName()}-Call-To-Action`), {\r\n            position: 'bottom',\r\n        });\r\n\r\n        this.describeBlock('how-to', HowTo, {});\r\n\r\n        void runWithNewTask(async () => {\r\n            const { BrandsBlock } = await import('../../../components/brands-block');\r\n            this.describeBlock('brands', BrandsBlock, {});\r\n        });\r\n    }\r\n}\r\n\r\nexport { DigitalBookshelf as page };\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 = 3275;","__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\t3275: 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\t3275: 0,\n\t4514: 0,\n\t5949: 0,\n\t5908: 0,\n\t2577: 0,\n\t790: 0,\n\t1266: 0,\n\t2202: 0,\n\t3171: 0,\n\t5552: 0,\n\t6630: 0,\n\t8409: 0,\n\t9661: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(59(08|49)|1597|2202|2577|4514|9661|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,2202,9661,8351,4829,8831], () => (__webpack_require__(38384)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","Listenable","listeners","Set","listen","cb","this","add","unlisten","delete","notify","forEach","l","constructor","params","ListenableParametrized","super","ServiceDataStorage","data","getData","readonly","updateData","update","overwriteData","newData","storage","serviceStorage","EMBED_SCRIPT_URL","BookshelfEmbed","blockName","onDescribe","ensure","addEventListener","applyModifiers","loaded","onLoad","once","window","matchMedia","matches","load","stubParams","onClick","describeBlock","ChainAnimation","Parametrized","applyAnimation","el","requestAnimationFrame","classList","animatePart","selector","Promise","resolve","elements","rootElement","querySelectorAll","animationsInQuery","length","Array","from","onAnimationEnd","removeEventListener","undefined","deleteAnimationPart","remove","animate","selectorSequence","reset","PlaneMotion","beginElement","FirstScreenBookshelf","chainAnimation","map","className","elementClass","planeMotionElement","ensureElement","planeMotion","prepareAnimation","startAnimation","async","fn","timeoutId","shelfLoaded","onShelfLoaded","clearTimeout","bookshelfEmbedParams","setTimeout","threshold","FirstScreen","describeElement","GoTrialButton","position","calendlyName","element","HowToBaseBlock","RomanDropCap","B","HowToBlock","describeAllElements","HowTo","DigitalBookshelf","GoTrialButtonWrapper","BrandsBlock","blockThreshold","runOnceOnIntersect","rootMargin","intersector","onIntersectionChange","entry","isIntersecting","unobserve","observe","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","__webpack_modules__","call","m","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","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","get","f","e","chunkId","all","reduce","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","doneFns","parentNode","removeChild","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","children","p","loadStylesheet","reject","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","oldTag","linkTag","nonce","errorType","realHref","err","Error","name","code","request","insertBefore","nextSibling","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","test","promise","error","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}