{"version":3,"file":"automation-tech-specs-bundle.js","mappings":"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","sources":["webpack://flippingbooksite/webpack/runtime/chunk loaded","webpack://flippingbooksite/webpack/runtime/create fake namespace object","webpack://flippingbooksite/webpack/runtime/load script","webpack://flippingbooksite/./sources/src/components/button/index.ts","webpack://flippingbooksite/./sources/src/components/foldable-table.ts","webpack://flippingbooksite/./sources/src/components/product-menu/index.ts","webpack://flippingbooksite/./sources/src/components/sticky/index.ts","webpack://flippingbooksite/./sources/src/components/calendly-button/base/index.ts","webpack://flippingbooksite/./sources/src/components/calendly-button/automation/index.ts","webpack://flippingbooksite/./sources/src/components/with-calendly/with-calendly.ts","webpack://flippingbooksite/./sources/src/components/with-calendly/with-automation-calendly.ts","webpack://flippingbooksite/./sources/src/pages/tech-specs/with-calendly.ts","webpack://flippingbooksite/./sources/src/pages/tech-specs/index.ts","webpack://flippingbooksite/./sources/src/util/image.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 { BemElement } from '../../pages/bem';\r\n\r\nexport abstract class Clickable<P extends Clickable.Params, E extends HTMLElement = HTMLElement> extends BemElement<\r\n    P,\r\n    E\r\n> {\r\n    onDescribe() {\r\n        super.onDescribe();\r\n        if (this.params.onClick) {\r\n            this.el.addEventListener('click', this.params.onClick);\r\n        }\r\n    }\r\n}\r\n\r\nexport namespace Clickable {\r\n    export interface Params {\r\n        onClick: ((ev: MouseEvent) => void) | (() => void);\r\n    }\r\n}\r\n\r\nexport class Button extends Clickable<Button.Params, HTMLButtonElement> {}\r\n\r\nexport namespace Button {\r\n    export interface Params extends Clickable.Params {}\r\n}\r\n\r\nexport class LinkButton extends Clickable<LinkButton.Params, HTMLAnchorElement> {}\r\n\r\nexport namespace LinkButton {\r\n    export interface Params extends Clickable.Params {}\r\n}\r\n","import { BemBlock } from '../pages/bem';\r\n\r\nexport class FoldableTable extends BemBlock<FoldableTable.Params> {\r\n    private expanded = false;\r\n    protected blockName() {\r\n        return this.params.blockName;\r\n    }\r\n\r\n    onDescribe() {\r\n        const header = this.element('header');\r\n        if (this.el.classList.contains(this.params.blockName.concat('--expanded'))) {\r\n            this.expanded = true;\r\n        }\r\n        if (header) {\r\n            header.addEventListener('click', () => {\r\n                this.expanded = !this.expanded;\r\n                this.applyModifiers({ expanded: this.expanded });\r\n            });\r\n        }\r\n    }\r\n}\r\n\r\nexport namespace FoldableTable {\r\n    export interface Params {\r\n        blockName: string;\r\n    }\r\n}\r\n","import _debounce from 'lodash-es/debounce';\r\n\r\nimport { BemBlock } from '../../pages/bem';\r\nimport { Button } from '../button';\r\n\r\nimport './style.css';\r\n\r\nexport class ProductMenu extends BemBlock<ProductMenu.Params> {\r\n    protected blockName() {\r\n        return 'S-Product-Menu';\r\n    }\r\n\r\n    onDescribe() {\r\n        if (this.element('button')) {\r\n            const buttonParams: Button.Params = {\r\n                onClick: this.params.onButtonClick,\r\n            };\r\n            this.describeElement('button', Button, buttonParams);\r\n        }\r\n\r\n        const wrapper = this.element('wrapper');\r\n        if (wrapper) {\r\n            const onResize = _debounce(() => this.scrollMobileSubmenu(), 100);\r\n            window.addEventListener('resize', onResize);\r\n            window.addEventListener('orientationchange', onResize);\r\n\r\n            this.scrollMobileSubmenu();\r\n        }\r\n    }\r\n\r\n    onScroll = () => {\r\n        const wrapper = this.ensureElement('wrapper');\r\n        const list = this.ensureElement('list');\r\n        const width = wrapper.offsetWidth;\r\n        const scrollWidth = list.scrollWidth;\r\n        const scrollPos = wrapper.scrollLeft;\r\n\r\n        this.applyModifiers({\r\n            'fade-right': scrollPos !== scrollWidth - width,\r\n            'fade-left': scrollPos !== 0,\r\n        });\r\n    };\r\n\r\n    scrollMobileSubmenu = () => {\r\n        const wrapper = this.ensureElement('wrapper');\r\n        const list = this.ensureElement('list');\r\n        const width = wrapper.offsetWidth;\r\n        const scrollWidth = list.scrollWidth;\r\n\r\n        if (width < scrollWidth) {\r\n            // Add right fade right away since we always start on the left.\r\n            this.applyModifiers({ 'fade-right': true });\r\n            wrapper.addEventListener('scroll', this.onScroll);\r\n        } else {\r\n            this.applyModifiers({\r\n                'fade-right': false,\r\n                'fade-left': false,\r\n            });\r\n            wrapper.removeEventListener('scroll', this.onScroll);\r\n        }\r\n    };\r\n\r\n    setFixed(fixed: boolean) {\r\n        this.applyModifiers({ fixed });\r\n    }\r\n}\r\n\r\nexport namespace ProductMenu {\r\n    export interface Params {\r\n        onButtonClick: () => void;\r\n    }\r\n}\r\n","import _throttle from 'lodash-es/throttle';\r\n\r\nimport { BemBlock } from '../../pages/bem';\r\nimport type { LayoutChecker } from '../../services/layout-checker';\r\n\r\nimport './style.css';\r\n\r\ninterface IRect {\r\n    width: number;\r\n    height: number;\r\n}\r\n\r\nexport class Sticky extends BemBlock<Sticky.Params> {\r\n    protected blockName() {\r\n        return 'S-Sticky';\r\n    }\r\n\r\n    private stuck = false;\r\n    private stuckBottom = false;\r\n    private elementOffset = 0;\r\n    private stickOffset = 0;\r\n    private stickPoint = 0;\r\n    private unstickPoint = 0;\r\n    private readonly stub = this.createStub(this.params.stubTag || 'div');\r\n\r\n    onDescribe() {\r\n        this.onResize();\r\n\r\n        document.addEventListener('scroll', this.onScrollHandler);\r\n        window.addEventListener('resize', this.onResizeHandler);\r\n\r\n        if (this.params.onDescribe) {\r\n            this.params.onDescribe(this.el);\r\n        }\r\n    }\r\n\r\n    private px(value: number) {\r\n        return `${value}px`;\r\n    }\r\n\r\n    private createStub(stubTag: keyof HTMLElementTagNameMap) {\r\n        const stub = document.createElement(stubTag);\r\n        stub.className = this.elementClass('stub');\r\n        const parent = this.el.parentNode;\r\n        if (parent) {\r\n            parent.insertBefore(stub, this.el);\r\n        }\r\n        return stub;\r\n    }\r\n\r\n    private resizeStub() {\r\n        const rect = this.el.getBoundingClientRect();\r\n        this.stub.style.height = this.px(rect.height);\r\n    }\r\n\r\n    private countElementOffset(stickContainer: HTMLElement) {\r\n        const containerRect = stickContainer.getBoundingClientRect();\r\n        const elRect = this.el.getBoundingClientRect();\r\n        return elRect.top - containerRect.top;\r\n    }\r\n\r\n    private updateElementOffset() {\r\n        this.elementOffset = this.countElementOffset(this.params.stickContainer);\r\n    }\r\n\r\n    private countStickOffset(offsetContainer: HTMLElement) {\r\n        const rect = offsetContainer.getBoundingClientRect();\r\n        return rect.top + window.pageYOffset;\r\n    }\r\n\r\n    private countUnstickPoint(stickContainer: HTMLElement, stickOffset: number) {\r\n        const rect = stickContainer.getBoundingClientRect();\r\n        return rect.bottom - stickOffset + window.pageYOffset;\r\n    }\r\n\r\n    private countStickPoint(stickContainer: HTMLElement, stickOffset: number, elementOffset: number) {\r\n        const rect = stickContainer.getBoundingClientRect();\r\n        return rect.top + elementOffset - stickOffset + window.pageYOffset;\r\n    }\r\n\r\n    private countStickPoints() {\r\n        this.stickOffset = this.countStickOffset(this.params.offsetContainer);\r\n        this.stickPoint = this.countStickPoint(this.params.stickContainer, this.stickOffset, this.elementOffset);\r\n        this.unstickPoint = this.countUnstickPoint(this.params.stickContainer, this.stickOffset);\r\n    }\r\n\r\n    private resetStyle() {\r\n        this.el.style.removeProperty('top');\r\n        this.el.style.removeProperty('width');\r\n        this.el.style.removeProperty('position');\r\n    }\r\n\r\n    private setFixedStyle(rect: IRect) {\r\n        this.el.style.position = 'fixed';\r\n        this.el.style.top = this.px(this.stickOffset);\r\n        this.el.style.width = this.px(rect.width);\r\n    }\r\n\r\n    private setAbsoluteStyle(rect: IRect) {\r\n        const stickContainerRect = this.params.stickContainer.getBoundingClientRect();\r\n        const offset = stickContainerRect.height - this.elementOffset - rect.height;\r\n\r\n        this.el.style.position = 'absolute';\r\n        this.el.style.top = this.px(offset);\r\n        this.el.style.width = this.px(rect.width);\r\n    }\r\n\r\n    private stick() {\r\n        this.stuck = true;\r\n        this.stuckBottom = false;\r\n        this.params.onStick?.();\r\n    }\r\n\r\n    private unstick(onBottom?: boolean) {\r\n        if (!onBottom) {\r\n            this.stuckBottom = false;\r\n        }\r\n        this.stuck = false;\r\n        this.params.onUnstick?.(onBottom);\r\n    }\r\n\r\n    private onResize = () => {\r\n        this.resizeStub();\r\n        this.updateElementOffset();\r\n        this.countStickPoints();\r\n\r\n        if (this.params.layoutChecker?.isIn()) {\r\n            if (this.stuck) {\r\n                this.unstick();\r\n            }\r\n            return;\r\n        }\r\n\r\n        const scrollY = window.pageYOffset;\r\n        const rect = this.el.getBoundingClientRect();\r\n\r\n        if (scrollY < this.stickPoint) {\r\n            if (this.stuck) {\r\n                this.unstick();\r\n            }\r\n            this.resetStyle();\r\n        } else if (this.stickPoint <= scrollY && scrollY <= this.unstickPoint - rect.height) {\r\n            if (!this.stuck) {\r\n                this.stick();\r\n            }\r\n            this.setFixedStyle(rect);\r\n        } else if (this.unstickPoint - rect.height < scrollY) {\r\n            if (!this.stuckBottom) {\r\n                if (!this.stuckBottom) {\r\n                    this.unstick(true);\r\n                }\r\n                this.stuckBottom = true;\r\n            }\r\n            this.setAbsoluteStyle(rect);\r\n        }\r\n    };\r\n\r\n    private onScrollHandler = () => {\r\n        this.countStickPoints();\r\n\r\n        if (this.params.layoutChecker?.isIn()) {\r\n            if (this.stuck) {\r\n                this.unstick();\r\n            }\r\n            return;\r\n        }\r\n\r\n        const scrollY = window.pageYOffset;\r\n        const rect = this.el.getBoundingClientRect();\r\n\r\n        if (scrollY < this.stickPoint) {\r\n            if (this.stuck) {\r\n                this.unstick();\r\n                this.resetStyle();\r\n            }\r\n        } else if (this.stickPoint <= scrollY && scrollY <= this.unstickPoint - rect.height) {\r\n            if (!this.stuck) {\r\n                this.stick();\r\n                this.setFixedStyle(rect);\r\n            }\r\n        } else if (this.unstickPoint - rect.height < scrollY) {\r\n            if (!this.stuckBottom) {\r\n                this.stuckBottom = true;\r\n                this.unstick(true);\r\n            }\r\n\r\n            this.setAbsoluteStyle(rect);\r\n        }\r\n    };\r\n\r\n    private onResizeHandler = _throttle(() => {\r\n        window.requestAnimationFrame(() => {\r\n            this.resetStyle();\r\n            this.onResize();\r\n        });\r\n    }, 15);\r\n}\r\n\r\nexport namespace Sticky {\r\n    export interface Params {\r\n        stickContainer: HTMLElement;\r\n        offsetContainer: HTMLElement;\r\n        layoutChecker?: LayoutChecker;\r\n        stubTag?: keyof HTMLElementTagNameMap;\r\n        onDescribe?: (sticky: HTMLElement) => void;\r\n        onStick?: () => void;\r\n        onUnstick?: (onBottom?: boolean) => void;\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 CalendlyButtonAutomation extends CalendlyButton {}\r\n","import { BemBlock } from '../../pages/bem';\r\nimport type { CalendlyButtonAutomation } from '../calendly-button/automation';\r\nimport type { CalendlyButtonFBO } from '../calendly-button/fbo';\r\nimport type { CalendlyButtonFBP } from '../calendly-button/fbp';\r\nimport type { CalendlyButtonSalespal } from '../calendly-button/salespal';\r\n\r\ntype CalendlyComponent =\r\n    | typeof CalendlyButtonAutomation\r\n    | typeof CalendlyButtonFBO\r\n    | typeof CalendlyButtonFBP\r\n    | typeof CalendlyButtonSalespal;\r\n\r\nexport abstract class WithCalendly extends BemBlock {\r\n    protected abstract calendlyComponent: CalendlyComponent;\r\n\r\n    onDescribe() {\r\n        const calendlyName = 'calendly';\r\n\r\n        if (!this.element(calendlyName)) {\r\n            return;\r\n        }\r\n\r\n        this.describeElement(calendlyName, this.calendlyComponent, {});\r\n    }\r\n}\r\n","import { CalendlyButtonAutomation } from '../calendly-button/automation';\r\n\r\nimport { WithCalendly } from './with-calendly';\r\n\r\nexport abstract class WithAutomationCalendly extends WithCalendly {\r\n    calendlyComponent = CalendlyButtonAutomation;\r\n}\r\n","import { WithAutomationCalendly } from '../../components/with-calendly/with-automation-calendly';\r\n\r\nexport class CallToAction extends WithAutomationCalendly {\r\n    protected blockName() {\r\n        return 'S-Automation-Tech-Specs-Call-To-Action';\r\n    }\r\n}\r\n\r\nexport class CustomMenu extends WithAutomationCalendly {\r\n    protected blockName() {\r\n        return 'S-Automation-Tech-Specs-Custom-Menu';\r\n    }\r\n}\r\n\r\nexport class ProductMenu extends WithAutomationCalendly {\r\n    protected blockName() {\r\n        return 'S-Product-Menu';\r\n    }\r\n}\r\n","import { BasePage } from '../../components/base-page';\r\nimport { FoldableTable } from '../../components/foldable-table';\r\nimport { ProductMenu } from '../../components/product-menu';\r\nimport { Sticky } from '../../components/sticky';\r\n\r\nimport { CallToAction, CustomMenu, ProductMenu as CalendlyProductMenu } from './with-calendly';\r\n\r\nimport './style/index.css';\r\n\r\nclass TechSpecsPage extends BasePage {\r\n    protected blockName(): string {\r\n        return 'S-Automation-Tech-Specs';\r\n    }\r\n\r\n    onDescribe() {\r\n        super.onDescribe();\r\n\r\n        this.describeAllBlocks('table', FoldableTable, {\r\n            blockName: 'S-Automation-Tech-Specs-Table',\r\n        });\r\n\r\n        this.describeBlock('product-menu', CalendlyProductMenu, {});\r\n\r\n        const maybeMenu = document.querySelector<HTMLElement>(`.${this.blockName()}-Custom-Menu`);\r\n\r\n        if (maybeMenu) {\r\n            new CustomMenu(maybeMenu, {}).onDescribe();\r\n        }\r\n\r\n        const navigation = this.describeBlock('product-menu', ProductMenu, {\r\n            onButtonClick: () => {},\r\n        });\r\n\r\n        this.describeBlock('product-menu', Sticky, {\r\n            stickContainer: this.el,\r\n            offsetContainer: document.getElementById('scrollable-header')!,\r\n            onStick: () => navigation.setFixed(true),\r\n            onUnstick: () => navigation.setFixed(false),\r\n        });\r\n\r\n        this.describeBlock('call-to-action', CallToAction, {});\r\n    }\r\n}\r\n\r\nexport { TechSpecsPage as page };\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","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 = 4612;","__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\t4612: 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\t4612: 0,\n\t4514: 0,\n\t5949: 0,\n\t5908: 0,\n\t2321: 0,\n\t7717: 0,\n\t366: 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|366|4514|7717|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,7717,366,8351,9509,4829], () => (__webpack_require__(35213)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","Clickable","B","onDescribe","super","this","params","onClick","el","addEventListener","Button","FoldableTable","expanded","blockName","header","element","classList","contains","concat","applyModifiers","ProductMenu","onScroll","wrapper","ensureElement","list","width","offsetWidth","scrollWidth","scrollPos","scrollLeft","scrollMobileSubmenu","removeEventListener","buttonParams","onButtonClick","describeElement","onResize","window","setFixed","fixed","Sticky","stuck","stuckBottom","elementOffset","stickOffset","stickPoint","unstickPoint","stub","createStub","stubTag","resizeStub","updateElementOffset","countStickPoints","layoutChecker","isIn","unstick","scrollY","pageYOffset","rect","getBoundingClientRect","resetStyle","height","stick","setFixedStyle","setAbsoluteStyle","onScrollHandler","onResizeHandler","requestAnimationFrame","document","px","value","createElement","className","elementClass","parent","parentNode","insertBefore","style","countElementOffset","stickContainer","containerRect","top","countStickOffset","offsetContainer","countUnstickPoint","bottom","countStickPoint","removeProperty","position","offset","onStick","onBottom","onUnstick","CalendlyButton","CalendlyButtonAutomation","WithCalendly","calendlyName","calendlyComponent","WithAutomationCalendly","CallToAction","CustomMenu","TechSpecsPage","describeAllBlocks","describeBlock","maybeMenu","querySelector","navigation","getElementById","setLoadedClassForImage","imgElements","Array","from","querySelectorAll","loadedClassName","forEach","imgElement","complete","add","handleImageLoad","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","id","loaded","__webpack_modules__","call","m","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","t","mode","then","ns","create","def","current","indexOf","getOwnPropertyNames","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","children","p","loadStylesheet","resolve","reject","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","oldTag","linkTag","nonce","errorType","realHref","err","Error","name","code","request","nextSibling","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","test","promise","error","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}