{"version":3,"sources":["../../../node_modules/css-element-queries/src/ResizeSensor.js","../../../node_modules/css-element-queries/src/ElementQueries.js","../../../node_modules/css-element-queries/index.js","../src/index.ts","../src/checkToken.ts","../src/createIframe.ts","../src/floatyWidget.tsx","../src/floatyCloseButton.tsx","../src/floatySvgOpen.tsx","../src/floatySvg.tsx","../src/twind.ts","../src/renderUnreadBadge.tsx"],"sourcesContent":["'use strict';\n\n/**\n * Copyright Marc J. Schmidt. See the LICENSE file at the top-level\n * directory of this distribution and at\n * https://github.com/marcj/css-element-queries/blob/master/LICENSE.\n */\n(function (root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define(factory);\n    } else if (typeof exports === \"object\") {\n        module.exports = factory();\n    } else {\n        root.ResizeSensor = factory();\n    }\n}(typeof window !== 'undefined' ? window : this, function () {\n\n    // Make sure it does not throw in a SSR (Server Side Rendering) situation\n    if (typeof window === \"undefined\") {\n        return null;\n    }\n    // https://github.com/Semantic-Org/Semantic-UI/issues/3855\n    // https://github.com/marcj/css-element-queries/issues/257\n    var globalWindow = typeof window != 'undefined' && window.Math == Math\n        ? window\n        : typeof self != 'undefined' && self.Math == Math\n            ? self\n            : Function('return this')();\n    // Only used for the dirty checking, so the event callback count is limited to max 1 call per fps per sensor.\n    // In combination with the event based resize sensor this saves cpu time, because the sensor is too fast and\n    // would generate too many unnecessary events.\n    var requestAnimationFrame = globalWindow.requestAnimationFrame ||\n        globalWindow.mozRequestAnimationFrame ||\n        globalWindow.webkitRequestAnimationFrame ||\n        function (fn) {\n            return globalWindow.setTimeout(fn, 20);\n        };\n\n    var cancelAnimationFrame = globalWindow.cancelAnimationFrame ||\n        globalWindow.mozCancelAnimationFrame ||\n        globalWindow.webkitCancelAnimationFrame ||\n        function (timer) {\n            globalWindow.clearTimeout(timer);\n        };\n\n    /**\n     * Iterate over each of the provided element(s).\n     *\n     * @param {HTMLElement|HTMLElement[]} elements\n     * @param {Function}                  callback\n     */\n    function forEachElement(elements, callback){\n        var elementsType = Object.prototype.toString.call(elements);\n        var isCollectionTyped = ('[object Array]' === elementsType\n            || ('[object NodeList]' === elementsType)\n            || ('[object HTMLCollection]' === elementsType)\n            || ('[object Object]' === elementsType)\n            || ('undefined' !== typeof jQuery && elements instanceof jQuery) //jquery\n            || ('undefined' !== typeof Elements && elements instanceof Elements) //mootools\n        );\n        var i = 0, j = elements.length;\n        if (isCollectionTyped) {\n            for (; i < j; i++) {\n                callback(elements[i]);\n            }\n        } else {\n            callback(elements);\n        }\n    }\n\n    /**\n    * Get element size\n    * @param {HTMLElement} element\n    * @returns {Object} {width, height}\n    */\n    function getElementSize(element) {\n        if (!element.getBoundingClientRect) {\n            return {\n                width: element.offsetWidth,\n                height: element.offsetHeight\n            }\n        }\n\n        var rect = element.getBoundingClientRect();\n        return {\n            width: Math.round(rect.width),\n            height: Math.round(rect.height)\n        }\n    }\n\n    /**\n     * Apply CSS styles to element.\n     *\n     * @param {HTMLElement} element\n     * @param {Object} style\n     */\n    function setStyle(element, style) {\n        Object.keys(style).forEach(function(key) {\n            element.style[key] = style[key];\n        });\n    }\n\n    /**\n     * Class for dimension change detection.\n     *\n     * @param {Element|Element[]|Elements|jQuery} element\n     * @param {Function} callback\n     *\n     * @constructor\n     */\n    var ResizeSensor = function(element, callback) {\n        //Is used when checking in reset() only for invisible elements\n        var lastAnimationFrameForInvisibleCheck = 0;\n\n        /**\n         *\n         * @constructor\n         */\n        function EventQueue() {\n            var q = [];\n            this.add = function(ev) {\n                q.push(ev);\n            };\n\n            var i, j;\n            this.call = function(sizeInfo) {\n                for (i = 0, j = q.length; i < j; i++) {\n                    q[i].call(this, sizeInfo);\n                }\n            };\n\n            this.remove = function(ev) {\n                var newQueue = [];\n                for(i = 0, j = q.length; i < j; i++) {\n                    if(q[i] !== ev) newQueue.push(q[i]);\n                }\n                q = newQueue;\n            };\n\n            this.length = function() {\n                return q.length;\n            }\n        }\n\n        /**\n         *\n         * @param {HTMLElement} element\n         * @param {Function}    resized\n         */\n        function attachResizeEvent(element, resized) {\n            if (!element) return;\n            if (element.resizedAttached) {\n                element.resizedAttached.add(resized);\n                return;\n            }\n\n            element.resizedAttached = new EventQueue();\n            element.resizedAttached.add(resized);\n\n            element.resizeSensor = document.createElement('div');\n            element.resizeSensor.dir = 'ltr';\n            element.resizeSensor.className = 'resize-sensor';\n\n            var style = {\n                pointerEvents: 'none',\n                position: 'absolute',\n                left: '0px',\n                top: '0px',\n                right: '0px',\n                bottom: '0px',\n                overflow: 'hidden',\n                zIndex: '-1',\n                visibility: 'hidden',\n                maxWidth: '100%'\n            };\n            var styleChild = {\n                position: 'absolute',\n                left: '0px',\n                top: '0px',\n                transition: '0s',\n            };\n\n            setStyle(element.resizeSensor, style);\n\n            var expand = document.createElement('div');\n            expand.className = 'resize-sensor-expand';\n            setStyle(expand, style);\n\n            var expandChild = document.createElement('div');\n            setStyle(expandChild, styleChild);\n            expand.appendChild(expandChild);\n\n            var shrink = document.createElement('div');\n            shrink.className = 'resize-sensor-shrink';\n            setStyle(shrink, style);\n\n            var shrinkChild = document.createElement('div');\n            setStyle(shrinkChild, styleChild);\n            setStyle(shrinkChild, { width: '200%', height: '200%' });\n            shrink.appendChild(shrinkChild);\n\n            element.resizeSensor.appendChild(expand);\n            element.resizeSensor.appendChild(shrink);\n            element.appendChild(element.resizeSensor);\n\n            var computedStyle = window.getComputedStyle(element);\n            var position = computedStyle ? computedStyle.getPropertyValue('position') : null;\n            if ('absolute' !== position && 'relative' !== position && 'fixed' !== position && 'sticky' !== position) {\n                element.style.position = 'relative';\n            }\n\n            var dirty = false;\n\n            //last request animation frame id used in onscroll event\n            var rafId = 0;\n            var size = getElementSize(element);\n            var lastWidth = 0;\n            var lastHeight = 0;\n            var initialHiddenCheck = true;\n            lastAnimationFrameForInvisibleCheck = 0;\n\n            var resetExpandShrink = function () {\n                var width = element.offsetWidth;\n                var height = element.offsetHeight;\n\n                expandChild.style.width = (width + 10) + 'px';\n                expandChild.style.height = (height + 10) + 'px';\n\n                expand.scrollLeft = width + 10;\n                expand.scrollTop = height + 10;\n\n                shrink.scrollLeft = width + 10;\n                shrink.scrollTop = height + 10;\n            };\n\n            var reset = function() {\n                // Check if element is hidden\n                if (initialHiddenCheck) {\n                    var invisible = element.offsetWidth === 0 && element.offsetHeight === 0;\n                    if (invisible) {\n                        // Check in next frame\n                        if (!lastAnimationFrameForInvisibleCheck){\n                            lastAnimationFrameForInvisibleCheck = requestAnimationFrame(function(){\n                                lastAnimationFrameForInvisibleCheck = 0;\n                                reset();\n                            });\n                        }\n\n                        return;\n                    } else {\n                        // Stop checking\n                        initialHiddenCheck = false;\n                    }\n                }\n\n                resetExpandShrink();\n            };\n            element.resizeSensor.resetSensor = reset;\n\n            var onResized = function() {\n                rafId = 0;\n\n                if (!dirty) return;\n\n                lastWidth = size.width;\n                lastHeight = size.height;\n\n                if (element.resizedAttached) {\n                    element.resizedAttached.call(size);\n                }\n            };\n\n            var onScroll = function() {\n                size = getElementSize(element);\n                dirty = size.width !== lastWidth || size.height !== lastHeight;\n\n                if (dirty && !rafId) {\n                    rafId = requestAnimationFrame(onResized);\n                }\n\n                reset();\n            };\n\n            var addEvent = function(el, name, cb) {\n                if (el.attachEvent) {\n                    el.attachEvent('on' + name, cb);\n                } else {\n                    el.addEventListener(name, cb);\n                }\n            };\n\n            addEvent(expand, 'scroll', onScroll);\n            addEvent(shrink, 'scroll', onScroll);\n\n            // Fix for custom Elements and invisible elements\n            lastAnimationFrameForInvisibleCheck = requestAnimationFrame(function(){\n                lastAnimationFrameForInvisibleCheck = 0;\n                reset();\n            });\n        }\n\n        forEachElement(element, function(elem){\n            attachResizeEvent(elem, callback);\n        });\n\n        this.detach = function(ev) {\n            // clean up the unfinished animation frame to prevent a potential endless requestAnimationFrame of reset\n            if (!lastAnimationFrameForInvisibleCheck) {\n                cancelAnimationFrame(lastAnimationFrameForInvisibleCheck);\n                lastAnimationFrameForInvisibleCheck = 0;\n            }\n            ResizeSensor.detach(element, ev);\n        };\n\n        this.reset = function() {\n            element.resizeSensor.resetSensor();\n        };\n    };\n\n    ResizeSensor.reset = function(element) {\n        forEachElement(element, function(elem){\n            elem.resizeSensor.resetSensor();\n        });\n    };\n\n    ResizeSensor.detach = function(element, ev) {\n        forEachElement(element, function(elem){\n            if (!elem) return;\n            if(elem.resizedAttached && typeof ev === \"function\"){\n                elem.resizedAttached.remove(ev);\n                if(elem.resizedAttached.length()) return;\n            }\n            if (elem.resizeSensor) {\n                if (elem.contains(elem.resizeSensor)) {\n                    elem.removeChild(elem.resizeSensor);\n                }\n                delete elem.resizeSensor;\n                delete elem.resizedAttached;\n            }\n        });\n    };\n\n    if (typeof MutationObserver !== \"undefined\") {\n        var observer = new MutationObserver(function (mutations) {\n            for (var i in mutations) {\n                if (mutations.hasOwnProperty(i)) {\n                    var items = mutations[i].addedNodes;\n                    for (var j = 0; j < items.length; j++) {\n                        if (items[j].resizeSensor) {\n                            ResizeSensor.reset(items[j]);\n                        }\n                    }\n                }\n            }\n        });\n\n        document.addEventListener(\"DOMContentLoaded\", function (event) {\n            observer.observe(document.body, {\n                childList: true,\n                subtree: true,\n            });\n        });\n    }\n\n    return ResizeSensor;\n\n}));\n","'use strict';\n\n/**\n * Copyright Marc J. Schmidt. See the LICENSE file at the top-level\n * directory of this distribution and at\n * https://github.com/marcj/css-element-queries/blob/master/LICENSE.\n */\n(function (root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define(['./ResizeSensor.js'], factory);\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require('./ResizeSensor.js'));\n    } else {\n        root.ElementQueries = factory(root.ResizeSensor);\n        root.ElementQueries.listen();\n    }\n}(typeof window !== 'undefined' ? window : this, function (ResizeSensor) {\n\n    /**\n     *\n     * @type {Function}\n     * @constructor\n     */\n    var ElementQueries = function () {\n        //<style> element with our dynamically created styles\n        var cssStyleElement;\n\n        //all rules found for element queries\n        var allQueries = {};\n\n        //association map to identify which selector belongs to a element from the animationstart event.\n        var idToSelectorMapping = [];\n\n        /**\n         *\n         * @param element\n         * @returns {Number}\n         */\n        function getEmSize(element) {\n            if (!element) {\n                element = document.documentElement;\n            }\n            var fontSize = window.getComputedStyle(element, null).fontSize;\n            return parseFloat(fontSize) || 16;\n        }\n\n        /**\n         * Get element size\n         * @param {HTMLElement} element\n         * @returns {Object} {width, height}\n         */\n        function getElementSize(element) {\n            if (!element.getBoundingClientRect) {\n                return {\n                    width: element.offsetWidth,\n                    height: element.offsetHeight\n                }\n            }\n\n            var rect = element.getBoundingClientRect();\n            return {\n                width: Math.round(rect.width),\n                height: Math.round(rect.height)\n            }\n        }\n\n        /**\n         *\n         * @copyright https://github.com/Mr0grog/element-query/blob/master/LICENSE\n         *\n         * @param {HTMLElement} element\n         * @param {*} value\n         * @returns {*}\n         */\n        function convertToPx(element, value) {\n            var numbers = value.split(/\\d/);\n            var units = numbers[numbers.length - 1];\n            value = parseFloat(value);\n            switch (units) {\n                case \"px\":\n                    return value;\n                case \"em\":\n                    return value * getEmSize(element);\n                case \"rem\":\n                    return value * getEmSize();\n                // Viewport units!\n                // According to http://quirksmode.org/mobile/tableViewport.html\n                // documentElement.clientWidth/Height gets us the most reliable info\n                case \"vw\":\n                    return value * document.documentElement.clientWidth / 100;\n                case \"vh\":\n                    return value * document.documentElement.clientHeight / 100;\n                case \"vmin\":\n                case \"vmax\":\n                    var vw = document.documentElement.clientWidth / 100;\n                    var vh = document.documentElement.clientHeight / 100;\n                    var chooser = Math[units === \"vmin\" ? \"min\" : \"max\"];\n                    return value * chooser(vw, vh);\n                default:\n                    return value;\n                // for now, not supporting physical units (since they are just a set number of px)\n                // or ex/ch (getting accurate measurements is hard)\n            }\n        }\n\n        /**\n         *\n         * @param {HTMLElement} element\n         * @param {String} id\n         * @constructor\n         */\n        function SetupInformation(element, id) {\n            this.element = element;\n            var key, option, elementSize, value, actualValue, attrValues, attrValue, attrName;\n\n            var attributes = ['min-width', 'min-height', 'max-width', 'max-height'];\n\n            /**\n             * Extracts the computed width/height and sets to min/max- attribute.\n             */\n            this.call = function () {\n                // extract current dimensions\n                elementSize = getElementSize(this.element);\n\n                attrValues = {};\n\n                for (key in allQueries[id]) {\n                    if (!allQueries[id].hasOwnProperty(key)) {\n                        continue;\n                    }\n                    option = allQueries[id][key];\n\n                    value = convertToPx(this.element, option.value);\n\n                    actualValue = option.property === 'width' ? elementSize.width : elementSize.height;\n                    attrName = option.mode + '-' + option.property;\n                    attrValue = '';\n\n                    if (option.mode === 'min' && actualValue >= value) {\n                        attrValue += option.value;\n                    }\n\n                    if (option.mode === 'max' && actualValue <= value) {\n                        attrValue += option.value;\n                    }\n\n                    if (!attrValues[attrName]) attrValues[attrName] = '';\n                    if (attrValue && -1 === (' ' + attrValues[attrName] + ' ').indexOf(' ' + attrValue + ' ')) {\n                        attrValues[attrName] += ' ' + attrValue;\n                    }\n                }\n\n                for (var k in attributes) {\n                    if (!attributes.hasOwnProperty(k)) continue;\n\n                    if (attrValues[attributes[k]]) {\n                        this.element.setAttribute(attributes[k], attrValues[attributes[k]].substr(1));\n                    } else {\n                        this.element.removeAttribute(attributes[k]);\n                    }\n                }\n            };\n        }\n\n        /**\n         * @param {HTMLElement} element\n         * @param {Object}      id\n         */\n        function setupElement(element, id) {\n            if (!element.elementQueriesSetupInformation) {\n                element.elementQueriesSetupInformation = new SetupInformation(element, id);\n            }\n\n            if (!element.elementQueriesSensor) {\n                element.elementQueriesSensor = new ResizeSensor(element, function () {\n                    element.elementQueriesSetupInformation.call();\n                });\n            }\n        }\n\n        /**\n         * Stores rules to the selector that should be applied once resized.\n         *\n         * @param {String} selector\n         * @param {String} mode min|max\n         * @param {String} property width|height\n         * @param {String} value\n         */\n        function queueQuery(selector, mode, property, value) {\n            if (typeof(allQueries[selector]) === 'undefined') {\n                allQueries[selector] = [];\n                // add animation to trigger animationstart event, so we know exactly when a element appears in the DOM\n\n                var id = idToSelectorMapping.length;\n                cssStyleElement.innerHTML += '\\n' + selector + ' {animation: 0.1s element-queries;}';\n                cssStyleElement.innerHTML += '\\n' + selector + ' > .resize-sensor {min-width: '+id+'px;}';\n                idToSelectorMapping.push(selector);\n            }\n\n            allQueries[selector].push({\n                mode: mode,\n                property: property,\n                value: value\n            });\n        }\n\n        function getQuery(container) {\n            var query;\n            if (document.querySelectorAll) query = (container) ? container.querySelectorAll.bind(container) : document.querySelectorAll.bind(document);\n            if (!query && 'undefined' !== typeof $$) query = $$;\n            if (!query && 'undefined' !== typeof jQuery) query = jQuery;\n\n            if (!query) {\n                throw 'No document.querySelectorAll, jQuery or Mootools\\'s $$ found.';\n            }\n\n            return query;\n        }\n\n        /**\n         * If animationStart didn't catch a new element in the DOM, we can manually search for it\n         */\n        function findElementQueriesElements(container) {\n            var query = getQuery(container);\n\n            for (var selector in allQueries) if (allQueries.hasOwnProperty(selector)) {\n                // find all elements based on the extract query selector from the element query rule\n                var elements = query(selector, container);\n\n                for (var i = 0, j = elements.length; i < j; i++) {\n                    setupElement(elements[i], selector);\n                }\n            }\n        }\n\n        /**\n         *\n         * @param {HTMLElement} element\n         */\n        function attachResponsiveImage(element) {\n            var children = [];\n            var rules = [];\n            var sources = [];\n            var defaultImageId = 0;\n            var lastActiveImage = -1;\n            var loadedImages = [];\n\n            for (var i in element.children) {\n                if (!element.children.hasOwnProperty(i)) continue;\n\n                if (element.children[i].tagName && element.children[i].tagName.toLowerCase() === 'img') {\n                    children.push(element.children[i]);\n\n                    var minWidth = element.children[i].getAttribute('min-width') || element.children[i].getAttribute('data-min-width');\n                    //var minHeight = element.children[i].getAttribute('min-height') || element.children[i].getAttribute('data-min-height');\n                    var src = element.children[i].getAttribute('data-src') || element.children[i].getAttribute('url');\n\n                    sources.push(src);\n\n                    var rule = {\n                        minWidth: minWidth\n                    };\n\n                    rules.push(rule);\n\n                    if (!minWidth) {\n                        defaultImageId = children.length - 1;\n                        element.children[i].style.display = 'block';\n                    } else {\n                        element.children[i].style.display = 'none';\n                    }\n                }\n            }\n\n            lastActiveImage = defaultImageId;\n\n            function check() {\n                var imageToDisplay = false, i;\n\n                for (i in children) {\n                    if (!children.hasOwnProperty(i)) continue;\n\n                    if (rules[i].minWidth) {\n                        if (element.offsetWidth > rules[i].minWidth) {\n                            imageToDisplay = i;\n                        }\n                    }\n                }\n\n                if (!imageToDisplay) {\n                    //no rule matched, show default\n                    imageToDisplay = defaultImageId;\n                }\n\n                if (lastActiveImage !== imageToDisplay) {\n                    //image change\n\n                    if (!loadedImages[imageToDisplay]) {\n                        //image has not been loaded yet, we need to load the image first in memory to prevent flash of\n                        //no content\n\n                        var image = new Image();\n                        image.onload = function () {\n                            children[imageToDisplay].src = sources[imageToDisplay];\n\n                            children[lastActiveImage].style.display = 'none';\n                            children[imageToDisplay].style.display = 'block';\n\n                            loadedImages[imageToDisplay] = true;\n\n                            lastActiveImage = imageToDisplay;\n                        };\n\n                        image.src = sources[imageToDisplay];\n                    } else {\n                        children[lastActiveImage].style.display = 'none';\n                        children[imageToDisplay].style.display = 'block';\n                        lastActiveImage = imageToDisplay;\n                    }\n                } else {\n                    //make sure for initial check call the .src is set correctly\n                    children[imageToDisplay].src = sources[imageToDisplay];\n                }\n            }\n\n            element.resizeSensorInstance = new ResizeSensor(element, check);\n            check();\n        }\n\n        function findResponsiveImages() {\n            var query = getQuery();\n\n            var elements = query('[data-responsive-image],[responsive-image]');\n            for (var i = 0, j = elements.length; i < j; i++) {\n                attachResponsiveImage(elements[i]);\n            }\n        }\n\n        var regex = /,?[\\s\\t]*([^,\\n]*?)((?:\\[[\\s\\t]*?(?:min|max)-(?:width|height)[\\s\\t]*?[~$\\^]?=[\\s\\t]*?\"[^\"]*?\"[\\s\\t]*?])+)([^,\\n\\s\\{]*)/mgi;\n        var attrRegex = /\\[[\\s\\t]*?(min|max)-(width|height)[\\s\\t]*?[~$\\^]?=[\\s\\t]*?\"([^\"]*?)\"[\\s\\t]*?]/mgi;\n\n        /**\n         * @param {String} css\n         */\n        function extractQuery(css) {\n            var match, smatch, attrs, attrMatch;\n\n            css = css.replace(/'/g, '\"');\n            while (null !== (match = regex.exec(css))) {\n                smatch = match[1] + match[3];\n                attrs = match[2];\n\n                while (null !== (attrMatch = attrRegex.exec(attrs))) {\n                    queueQuery(smatch, attrMatch[1], attrMatch[2], attrMatch[3]);\n                }\n            }\n        }\n\n        /**\n         * @param {CssRule[]|String} rules\n         */\n        function readRules(rules) {\n            var selector = '';\n\n            if (!rules) {\n                return;\n            }\n\n            if ('string' === typeof rules) {\n                rules = rules.toLowerCase();\n                if (-1 !== rules.indexOf('min-width') || -1 !== rules.indexOf('max-width')) {\n                    extractQuery(rules);\n                }\n            } else {\n                for (var i = 0, j = rules.length; i < j; i++) {\n                    if (1 === rules[i].type) {\n                        selector = rules[i].selectorText || rules[i].cssText;\n                        if (-1 !== selector.indexOf('min-height') || -1 !== selector.indexOf('max-height')) {\n                            extractQuery(selector);\n                        } else if (-1 !== selector.indexOf('min-width') || -1 !== selector.indexOf('max-width')) {\n                            extractQuery(selector);\n                        }\n                    } else if (4 === rules[i].type) {\n                        readRules(rules[i].cssRules || rules[i].rules);\n                    } else if (3 === rules[i].type) {\n                        if(rules[i].styleSheet.hasOwnProperty(\"cssRules\")) {\n                            readRules(rules[i].styleSheet.cssRules);\n                        }\n                    }\n                }\n            }\n        }\n\n        var defaultCssInjected = false;\n\n        /**\n         * Searches all css rules and setups the event listener to all elements with element query rules..\n         */\n        this.init = function () {\n            var animationStart = 'animationstart';\n            if (typeof document.documentElement.style['webkitAnimationName'] !== 'undefined') {\n                animationStart = 'webkitAnimationStart';\n            } else if (typeof document.documentElement.style['MozAnimationName'] !== 'undefined') {\n                animationStart = 'mozanimationstart';\n            } else if (typeof document.documentElement.style['OAnimationName'] !== 'undefined') {\n                animationStart = 'oanimationstart';\n            }\n\n            document.body.addEventListener(animationStart, function (e) {\n                var element = e.target;\n                var styles = element && window.getComputedStyle(element, null);\n                var animationName = styles && styles.getPropertyValue('animation-name');\n                var requiresSetup = animationName && (-1 !== animationName.indexOf('element-queries'));\n\n                if (requiresSetup) {\n                    element.elementQueriesSensor = new ResizeSensor(element, function () {\n                        if (element.elementQueriesSetupInformation) {\n                            element.elementQueriesSetupInformation.call();\n                        }\n                    });\n\n                    var sensorStyles = window.getComputedStyle(element.resizeSensor, null);\n                    var id = sensorStyles.getPropertyValue('min-width');\n                    id = parseInt(id.replace('px', ''));\n                    setupElement(e.target, idToSelectorMapping[id]);\n                }\n            });\n\n            if (!defaultCssInjected) {\n                cssStyleElement = document.createElement('style');\n                cssStyleElement.type = 'text/css';\n                cssStyleElement.innerHTML = '[responsive-image] > img, [data-responsive-image] {overflow: hidden; padding: 0; } [responsive-image] > img, [data-responsive-image] > img {width: 100%;}';\n\n                //safari wants at least one rule in keyframes to start working\n                cssStyleElement.innerHTML += '\\n@keyframes element-queries { 0% { visibility: inherit; } }';\n                document.getElementsByTagName('head')[0].appendChild(cssStyleElement);\n                defaultCssInjected = true;\n            }\n\n            for (var i = 0, j = document.styleSheets.length; i < j; i++) {\n                try {\n                    if (document.styleSheets[i].href && 0 === document.styleSheets[i].href.indexOf('file://')) {\n                        console.warn(\"CssElementQueries: unable to parse local css files, \" + document.styleSheets[i].href);\n                    }\n\n                    readRules(document.styleSheets[i].cssRules || document.styleSheets[i].rules || document.styleSheets[i].cssText);\n                } catch (e) {\n                }\n            }\n\n            findResponsiveImages();\n        };\n\n        /**\n         * Go through all collected rules (readRules()) and attach the resize-listener.\n         * Not necessary to call it manually, since we detect automatically when new elements\n         * are available in the DOM. However, sometimes handy for dirty DOM modifications.\n         *\n         * @param {HTMLElement} container only elements of the container are considered (document.body if not set)\n         */\n        this.findElementQueriesElements = function (container) {\n            findElementQueriesElements(container);\n        };\n\n        this.update = function () {\n            this.init();\n        };\n    };\n\n    ElementQueries.update = function () {\n        ElementQueries.instance.update();\n    };\n\n    /**\n     * Removes all sensor and elementquery information from the element.\n     *\n     * @param {HTMLElement} element\n     */\n    ElementQueries.detach = function (element) {\n        if (element.elementQueriesSetupInformation) {\n            //element queries\n            element.elementQueriesSensor.detach();\n            delete element.elementQueriesSetupInformation;\n            delete element.elementQueriesSensor;\n\n        } else if (element.resizeSensorInstance) {\n            //responsive image\n\n            element.resizeSensorInstance.detach();\n            delete element.resizeSensorInstance;\n        }\n    };\n\n    ElementQueries.init = function () {\n        if (!ElementQueries.instance) {\n            ElementQueries.instance = new ElementQueries();\n        }\n\n        ElementQueries.instance.init();\n    };\n\n    var domLoaded = function (callback) {\n        /* Mozilla, Chrome, Opera */\n        if (document.addEventListener) {\n            document.addEventListener('DOMContentLoaded', callback, false);\n        }\n        /* Safari, iCab, Konqueror */\n        else if (/KHTML|WebKit|iCab/i.test(navigator.userAgent)) {\n            var DOMLoadTimer = setInterval(function () {\n                if (/loaded|complete/i.test(document.readyState)) {\n                    callback();\n                    clearInterval(DOMLoadTimer);\n                }\n            }, 10);\n        }\n        /* Other web browsers */\n        else window.onload = callback;\n    };\n\n    ElementQueries.findElementQueriesElements = function (container) {\n        ElementQueries.instance.findElementQueriesElements(container);\n    };\n\n    ElementQueries.listen = function () {\n        domLoaded(ElementQueries.init);\n    };\n\n    return ElementQueries;\n\n}));\n","module.exports = {\n    ResizeSensor: require('./src/ResizeSensor'),\n    ElementQueries: require('./src/ElementQueries')\n};\n","import { checkToken, isVisitorToken } from \"./checkToken\";\nimport { createEvents, renderIframe } from \"./createIframe\";\nimport { createFloatyWidget } from \"./floatyWidget\";\nimport { renderUnreadBadge } from \"./renderUnreadBadge\";\nimport type { Env, Fogbender, Token, VisitorInfo } from \"./types\";\nexport type {\n  Env,\n  Token,\n  FallbackToken,\n  VisitorToken,\n  UserToken,\n  Badge,\n  Fogbender,\n  FogbenderLoader,\n  Snapshot,\n} from \"./types\";\nexport { checkToken, isUserToken, isVisitorToken } from \"./checkToken\";\n\nexport const createNewFogbender = (): Fogbender => {\n  const defaultUrl = \"https://client.fogbender.com\";\n  const lightDarkModeKey = (widgetId: string) => `light-dark-mode-${widgetId}`;\n  const state = {\n    versions: {} as { [key: string]: string },\n    env: undefined as Env | undefined,\n    token: undefined as Token | undefined,\n    url: defaultUrl as string | undefined,\n    events: createEvents(),\n    chatWindow: null as null | Window,\n    mode: \"dark\" as \"light\" | \"dark\",\n    setIframeMode: undefined as ((mode: \"light\" | \"dark\") => void) | undefined,\n  };\n  const openWindow = () => {\n    if (!state.chatWindow || state.chatWindow.closed) {\n      state.chatWindow = window.open(\n        state.url + \"?token=\" + encodeURIComponent(JSON.stringify(state.token)),\n        \"_blank\"\n      );\n    }\n    state.chatWindow?.focus();\n  };\n  const storeVisitorInfo = (info: VisitorInfo) => {\n    if (state.token) {\n      state.token.visitorToken = info.token;\n    }\n    const { widgetId } = info;\n    try {\n      localStorage.setItem(`visitor-${widgetId}`, JSON.stringify(info));\n    } catch (e) {\n      console.error(e);\n    }\n  };\n  const storeLightDarkModeInfo = (mode: \"light\" | \"dark\") => {\n    if (state.token) {\n      const { widgetId } = state.token;\n      try {\n        localStorage.setItem(lightDarkModeKey(widgetId), mode);\n      } catch (e) {\n        console.error(e);\n      }\n    }\n  };\n  const updateConfigured = () => {\n    const configured = !!state.url && !!state.token;\n    state.events.configured = configured;\n    state.events.emit(\"configured\", configured);\n  };\n  const fogbender: Fogbender & { _privateData: any } = {\n    _privateData: state,\n    async setVersion(tag, version) {\n      state.versions[tag] = version;\n      return fogbender;\n    },\n    async setEnv(env) {\n      state.env = env;\n      return fogbender;\n    },\n    async setClientUrl(_url) {\n      state.url = _url === undefined ? defaultUrl : _url;\n      updateConfigured();\n      return fogbender;\n    },\n    async setMode(mode) {\n      state.mode = mode;\n      if (state.setIframeMode) {\n        state.setIframeMode(mode);\n      }\n      return fogbender;\n    },\n    async setToken(token) {\n      const tokenCheck = checkToken(token);\n      // true means bad\n      if (tokenCheck) {\n        throw new Error(\"Wrong token format:\\n\" + JSON.stringify(tokenCheck, null, 1));\n      }\n      state.token = token;\n      let visitorToken = undefined as undefined | string;\n      if (isVisitorToken(token)) {\n        const { widgetId } = token;\n        const key = `visitor-${widgetId}`;\n        try {\n          const visitorInfo = localStorage.getItem(key);\n          if (visitorInfo) {\n            const info = JSON.parse(visitorInfo);\n            visitorToken = info.token;\n          }\n        } catch (e) {\n          console.error(e);\n        }\n      }\n\n      if (token) {\n        try {\n          const { widgetId } = token;\n          const mode = localStorage.getItem(lightDarkModeKey(widgetId));\n          if (mode && [\"light\", \"dark\"].includes(mode)) {\n            state.mode = mode as \"light\" | \"dark\";\n          }\n        } catch (e) {\n          console.error(e);\n        }\n      }\n\n      if (state.token) {\n        state.token = {\n          ...state.token,\n          versions: { ...state.token.versions, ...state.versions, fogbender: \"0.10.2\" },\n          visitorToken,\n          visitUrl: (() => {\n            try {\n              return window.parent.location.toString();\n            } catch {\n              return undefined;\n            }\n          })(),\n        };\n      }\n      updateConfigured();\n      return fogbender;\n    },\n    async isClientConfigured() {\n      const snapshot = {\n        getValue: () => state.events.configured,\n        subscribe: (cb: (value: boolean) => void) => {\n          cb(state.events.configured);\n          return state.events.on(\"configured\", cb);\n        },\n      };\n      return snapshot;\n    },\n    async createFloatingWidget(opts = {}) {\n      if (!state.url) {\n        throw new Error(\"Fogbender: no url given\");\n      }\n      if (!state.token) {\n        throw new Error(\"Fogbender: no token given\");\n      }\n      const { token, url, env } = state;\n      return createFloatyWidget(\n        state,\n        openWindow,\n        (el: HTMLElement) => {\n          const rerender = () => {\n            return renderIframe(\n              state,\n              {\n                rootEl: el,\n                env,\n                token,\n                url,\n                disableFit: true,\n                onVisitorInfo: (info, reload) => {\n                  storeVisitorInfo(info);\n                  if (reload) {\n                    cleanup();\n                    const { cleanup: cleanup2, setIframeMode } = rerender();\n                    state.setIframeMode = setIframeMode;\n                    cleanup = cleanup2;\n                  }\n                },\n                onLightDarkModeInfo: mode => storeLightDarkModeInfo(mode),\n                initialMode: () => state.mode,\n                isFloaty: true,\n              },\n              openWindow\n            );\n          };\n          const { cleanup: cleanup0, setIframeMode } = rerender();\n          state.setIframeMode = setIframeMode;\n          let cleanup = cleanup0;\n          return () => {\n            cleanup();\n          };\n        },\n        opts\n      );\n    },\n    async renderIframe(opts) {\n      const rerender = () => {\n        if (!state.url) {\n          throw new Error(\"Fogbender: no url given\");\n        }\n        if (!state.token) {\n          throw new Error(\"Fogbender: no token given\");\n        }\n        return renderIframe(\n          state,\n          {\n            ...opts,\n            env: state.env,\n            token: state.token,\n            url: state.url,\n            onVisitorInfo: (info, reload) => {\n              storeVisitorInfo(info);\n              if (reload) {\n                cleanup();\n                const { cleanup: cleanup3, setIframeMode } = rerender();\n                state.setIframeMode = setIframeMode;\n                cleanup = cleanup3;\n              }\n            },\n            onLightDarkModeInfo: mode => storeLightDarkModeInfo(mode),\n            initialMode: () => state.mode,\n          },\n          openWindow\n        );\n      };\n      const { cleanup: cleanup1, setIframeMode } = rerender();\n      state.setIframeMode = setIframeMode;\n      let cleanup = cleanup1;\n      return () => {\n        cleanup();\n      };\n    },\n    async renderUnreadBadge(opts) {\n      const cleanup = renderUnreadBadge(state, openWindow, opts);\n      return cleanup;\n    },\n  };\n  return fogbender;\n};\n","import type { UserToken, Token, VisitorToken } from \"./types\";\n\nexport function checkToken(token: Token | undefined) {\n  if (token !== undefined) {\n    const errors: { [key: string]: string } = {};\n\n    [\"userAvatarUrl\", \"widgetKey\", \"userJWT\", \"userHMAC\", \"userPaseto\", \"visitorKey\"].forEach(\n      x =>\n        // @ts-ignore\n        typeof token[x] !== \"string\" &&\n        // @ts-ignore\n        typeof token[x] !== \"undefined\" &&\n        // @ts-ignore\n        token[x] !== null &&\n        (errors[x] = \"should be string or undefined or null\")\n    );\n\n    const isString = (x: string) =>\n      // @ts-ignore\n      typeof token[x] !== \"string\" && (errors[x] = \"should be string\");\n\n    [\"widgetId\"].forEach(isString);\n\n    if (isUserToken(token)) {\n      [\"customerId\", \"customerName\", \"userId\", \"userEmail\", \"userName\"].forEach(isString);\n\n      if (!(token.userJWT || token.userHMAC || token.userPaseto || token.widgetKey)) {\n        errors.userJWT = \"userJWT or widgetKey should be set\";\n      }\n    } else if (isVisitorToken(token)) {\n      [\"visitorKey\"].forEach(isString);\n    } else {\n      [\"widgetKey\"].forEach(isString);\n    }\n    if (Object.keys(errors).length > 0) {\n      return errors;\n    }\n  }\n  return;\n}\n\nexport function isUserToken(token: Token | undefined): token is UserToken {\n  return token ? \"userId\" in token : false;\n}\n\nexport function isVisitorToken(token: Token | undefined): token is VisitorToken {\n  return token ? \"visitor\" in token : false;\n}\n","import { ResizeSensor } from \"css-element-queries\";\nimport type { Badge, Env, Token } from \".\";\nimport { type VisitorInfo } from \"./types\";\n\ntype FogbenderEventMap = {\n  \"configured\": boolean;\n  \"fogbender.badges\": { badges: { [roomId: string]: Badge } };\n  \"fogbender.unreadCount\": { unreadCount: number };\n  \"fogbender.closeFloaty\": true;\n};\n\nexport type Events = {\n  emit<K extends keyof FogbenderEventMap>(event: K, data: FogbenderEventMap[K]): void;\n  on<K extends keyof FogbenderEventMap>(\n    event: K,\n    listener: (ev: FogbenderEventMap[K]) => void\n  ): () => void;\n  badges: { [roomId: string]: Badge };\n  configured: boolean;\n  unreadCount: number;\n};\n\nexport function createEvents() {\n  const listeners = new Map<keyof FogbenderEventMap, Set<(ev: any) => void>>();\n  const events = {} as unknown as Events;\n  events.badges = {};\n  events.configured = false;\n  events.emit = <T>(event: keyof FogbenderEventMap, data: T) => {\n    listeners.get(event)?.forEach(listener => listener(data));\n  };\n  events.on = <T>(event: keyof FogbenderEventMap, callback: (data: T) => void) => {\n    if (!listeners.has(event)) {\n      listeners.set(event, new Set());\n    }\n    listeners.get(event)?.add(callback);\n    return () => {\n      listeners.get(event)?.delete(callback);\n    };\n  };\n  return events;\n}\n\nexport function renderIframe(\n  { events }: { events: Events },\n  {\n    rootEl,\n    env,\n    url,\n    token,\n    headless,\n    disableFit,\n    onVisitorInfo,\n    onLightDarkModeInfo,\n    initialMode = () => \"light\",\n    isFloaty = false,\n  }: {\n    rootEl: HTMLElement;\n    env: Env | undefined;\n    url: string;\n    token: Token;\n    onVisitorInfo: (info: VisitorInfo, reload: boolean) => void;\n    onLightDarkModeInfo: (x: \"light\" | \"dark\") => void;\n    headless?: boolean;\n    disableFit?: boolean;\n    initialMode: () => \"light\" | \"dark\";\n    isFloaty?: boolean;\n  },\n  openWindow: () => void\n) {\n  let _mode = initialMode();\n  const iFrame = document.createElement(\"iframe\");\n\n  if (!headless) {\n    rootEl.style.width = \"100%\";\n    rootEl.style.flex = \"1\";\n  }\n  iFrame.src = url;\n  iFrame.style.display = \"block\";\n  iFrame.style.backgroundColor = \"#161616\";\n  iFrame.style.border = \"0\";\n  iFrame.style.width = headless ? \"0\" : \"100%\";\n  iFrame.style.height = headless ? \"0\" : \"100%\";\n  if (headless) {\n    iFrame.style.position = \"fixed\";\n    iFrame.style.top = \"-100px\";\n  }\n\n  // we already check the origin, so it seems like false positive\n  // nosemgrep: javascript.browser.security.insufficient-postmessage-origin-validation.insufficient-postmessage-origin-validation\n  window.addEventListener(\"message\", e => {\n    if (e.origin !== url) {\n      return;\n    }\n    if (e.source !== iFrame.contentWindow) {\n      return;\n    }\n    if (e.data?.type === \"APP_IS_READY\") {\n      iFrame.contentWindow?.postMessage(\n        { env, initToken: token, headless, mode: _mode, isFloaty },\n        url\n      );\n      iFrame.contentWindow?.postMessage(\n        { notificationsPermission: window.Notification?.permission },\n        url\n      );\n    } else if (e.data?.type === \"REQUEST_NOTIFICATIONS_PERMISSION\") {\n      window.Notification?.requestPermission().then(function (permission) {\n        iFrame.contentWindow?.postMessage({ notificationsPermission: permission }, url);\n      });\n    } else if (e.data?.type === \"VISITOR_INFO\") {\n      const visitorInfo: VisitorInfo = JSON.parse(e.data.visitorInfo);\n      onVisitorInfo?.(visitorInfo, e.data.reload);\n    } else if (e.data?.type === \"BADGES\" && e.data?.badges !== undefined) {\n      const badges: FogbenderEventMap[\"fogbender.badges\"][\"badges\"] = JSON.parse(e.data.badges);\n      events.badges = badges;\n      events.emit(\"fogbender.badges\", { badges });\n      const unreadCount = (() => {\n        let isMentionOrDialog = false;\n        let count = 0;\n        Object.keys(badges).find(roomId => {\n          const badge = badges[roomId];\n          if (badge.mentionsCount) {\n            isMentionOrDialog = true;\n          } else if (badge.count) {\n            isMentionOrDialog = badge.roomType === \"dialog\";\n          }\n          if (badge.count) {\n            count++;\n          }\n          // stop once first mention or dialog is found\n          return isMentionOrDialog;\n        });\n        return isMentionOrDialog ? -1 : count;\n      })();\n      events.unreadCount = unreadCount;\n      events.emit(\"fogbender.unreadCount\", { unreadCount });\n    } else if (e.data?.type === \"WIDGET_LIGHT_DARK_MODE\" && e.data.lightDarkMode !== undefined) {\n      onLightDarkModeInfo(e.data.lightDarkMode);\n    } else if (\n      e.data?.type === \"NOTIFICATION\" &&\n      e.data.notification !== undefined &&\n      token !== undefined\n    ) {\n      if (window.Notification?.permission === \"granted\") {\n        const { body, roomId } = JSON.parse(e.data.notification);\n        // customerName is not set only in FallbackToken, so we should not be seeing any notifications\n        const notification = new Notification(token.customerName || \"Support\", { body });\n        notification.onclick = () => {\n          if (headless) {\n            openWindow();\n          } else {\n            window.parent.focus();\n            iFrame.contentWindow?.postMessage({ roomIdToOpen: roomId }, url);\n          }\n        };\n      }\n    } else if (e.data?.type === \"CLOSE_FLOATY\") {\n      events.emit(\"fogbender.closeFloaty\", true);\n    }\n  });\n\n  rootEl.append(iFrame);\n\n  function adaptIFrame() {\n    if (!rootEl || disableFit) {\n      return;\n    }\n\n    const height = headless ? \"0\" : \"100%\";\n    iFrame.style.height = height;\n  }\n\n  function setMode(mode: \"light\" | \"dark\") {\n    _mode = mode;\n    iFrame.contentWindow?.postMessage({ mode }, url);\n  }\n\n  adaptIFrame();\n\n  new ResizeSensor(rootEl, adaptIFrame);\n  new ResizeSensor(document.body, adaptIFrame);\n  window.addEventListener(\"resize\", adaptIFrame);\n  return {\n    setIframeMode: setMode,\n    cleanup: () => {\n      iFrame.src = \"about:blank\";\n      rootEl.removeChild(iFrame);\n    },\n  };\n}\n","import { render } from \"preact\";\nimport { useEffect, useMemo, useRef, useState } from \"preact/hooks\";\nimport { tw } from \"twind\";\nimport { css } from \"twind/css\";\nimport FloatyCloseButton from \"./floatyCloseButton\";\nimport FloatySvgOpen from \"./floatySvgOpen\";\nimport FloatySvg from \"./floatySvg\";\nimport { getTwind } from \"./twind\";\nimport type { Events } from \"./createIframe\";\n\nexport function createFloatyWidget(\n  state: { events: Events },\n  openWindow: () => void,\n  renderIframe: (el: HTMLElement) => () => void,\n  opts: {\n    openInNewTab?: boolean;\n    closeable?: boolean;\n    defaultOpen?: boolean;\n  } = {}\n) {\n  const { events } = state;\n\n  // https://stackoverflow.com/questions/11381673/detecting-a-mobile-browser\n  window.isMobile = function () {\n    let check = false;\n    (function (a) {\n      if (\n        /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n          a\n        ) ||\n        /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n          a.substr(0, 4)\n        )\n      )\n        check = true;\n    })(navigator.userAgent || navigator.vendor || window.opera);\n    return check;\n  };\n\n  const container = document.createElement(\"div\");\n  container.attachShadow({ mode: \"open\" });\n  const { attach } = getTwind();\n  attach(container.shadowRoot);\n  document.body.appendChild(container);\n\n  const root = container.shadowRoot;\n  if (!root) {\n    throw new Error(\"shadowRoot missing\");\n  }\n\n  render(\n    <Container\n      events={events}\n      openWindow={opts.openInNewTab ? openWindow : undefined}\n      renderIframe={renderIframe}\n      closeable={opts.closeable}\n      defaultOpen={opts.defaultOpen}\n    />,\n    root\n  );\n\n  return () => {\n    render(null, root);\n    document.body.removeChild(container);\n  };\n}\n\nfunction Container({\n  events,\n  openWindow,\n  renderIframe,\n  closeable,\n  defaultOpen,\n}: {\n  events: Events;\n  openWindow?: () => void;\n  renderIframe: (el: HTMLElement) => () => void;\n  closeable?: boolean;\n  defaultOpen?: boolean;\n}) {\n  const [open, setOpen] = useState(defaultOpen && !openWindow ? \"open\" : \"closed\");\n  const [closed, setClosed] = useState(false);\n\n  useEffect(() => {\n    if (openWindow && defaultOpen) {\n      openWindow();\n    }\n  }, []);\n\n  const originalOverflow = useMemo(() => {\n    const body = window?.top?.document?.body;\n\n    if (body) {\n      const style = getComputedStyle(body);\n      return style?.overflow || \"auto\";\n    }\n\n    return \"auto\";\n  }, []);\n\n  const isMobile = useMemo(() => {\n    return window.isMobile();\n  }, []);\n\n  useEffect(() => {\n    if (isMobile && window.top?.document?.body) {\n      window.top.document.body.style.overflow = open === \"open\" ? \"hidden\" : originalOverflow;\n    }\n  }, [open, isMobile]);\n\n  useEffect(() => {\n    events.on(\"fogbender.closeFloaty\", () => setOpen(\"closed\"));\n  }, []);\n\n  const alwaysVisibleOnTouchDevice = tw(\n    css({\n      \"&\": { opacity: 1 },\n      \"@media (hover: hover)\": { \"&\": { opacity: 0 } },\n    })\n  );\n\n  const heightClasses = (() => {\n    if (isMobile) {\n      if (open === \"open\") {\n        return \"top-0 h-full\";\n      } else {\n        return \"h-full bottom-0\";\n      }\n    } else {\n      if (open === \"open\") {\n        return \"top-2 h-[98vh] sm:h-auto\";\n      } else {\n        return \"h-full bottom-0 sm:h-auto\";\n      }\n    }\n  })();\n\n  const widthClasses = (() => {\n    if (isMobile) {\n      return \"w-full\";\n    } else {\n      return \"w-full sm:w-auto\";\n    }\n  })();\n\n  const talkyOpacity = (() => {\n    if (open === \"open\") {\n      return \"transition-opacity duration-500 opacity-100\";\n    } else {\n      return \"opacity-0\";\n    }\n  })();\n\n  if (closed) {\n    return null;\n  }\n\n  return (\n    <div\n      class={tw(\n        \"flex pointer-events-none fixed sm:top-auto sm:bottom-0 right-0 flex-col-reverse items-center group\",\n        heightClasses,\n        widthClasses\n      )}\n      style=\"z-index: 9999;\"\n      id=\"fogbender-floaty\"\n    >\n      <button\n        onClick={() =>\n          openWindow ? openWindow() : setOpen(o => (o === \"open\" ? \"hidden\" : \"open\"))\n        }\n        title=\"Customer support\"\n        class={tw`active:outline-none focus:outline-none outline-none self-end overflow-hidden pointer-events-auto`}\n      >\n        <Floaty isOpen={open === \"open\"} isMobile={isMobile} events={events} />\n      </button>\n      {open !== \"closed\" && (\n        <div class={tw(\"h-full w-full\", talkyOpacity)}>\n          <Talky isOpen={open === \"open\"} isMobile={isMobile} renderIframe={renderIframe} />\n        </div>\n      )}\n      {closeable && open !== \"open\" && (\n        <div\n          class={tw(\n            \"absolute top-auto w-8 h-8 flex items-center justify-center rounded-none bg-white transition duration-700 group-hover:opacity-100\",\n            alwaysVisibleOnTouchDevice\n          )}\n          style={{\n            bottom: \"28px\",\n            right: \"24px\",\n            boxShadow: \"0px 3px 10px rgba(19, 29, 118, 0.1)\",\n          }}\n        >\n          <button\n            onClick={() => setClosed(true)}\n            class={tw`w-4 h-4 active:outline-none focus:outline-none outline-none overflow-hidden pointer-events-auto text-black hover:text-red-500`}\n          >\n            <FloatyCloseButton />\n          </button>\n        </div>\n      )}\n    </div>\n  );\n}\n\nfunction Talky({\n  isOpen,\n  isMobile,\n  renderIframe,\n}: {\n  isOpen: boolean;\n  isMobile: boolean;\n  renderIframe: (el: HTMLElement) => () => void;\n}) {\n  const heightClasses = (() => {\n    if (isMobile) {\n      return \"h-full\";\n    } else {\n      return \"-mb-[48px] sm:h-[calc(60vh+60px)] h-full sm:max-h-screen\";\n    }\n  })();\n\n  const widthClasses = (() => {\n    if (isMobile) {\n      return \"w-full\";\n    } else {\n      return \"w-full min-w-[340px] sm:min-w-[480px] max-w-[90vw]\";\n    }\n  })();\n\n  const mrClasses = (() => {\n    if (isMobile) {\n      return \"\";\n    } else {\n      return \"sm:mr-8\";\n    }\n  })();\n\n  return (\n    <div\n      class={tw(\n        \"pointer-events-auto\",\n        isOpen ? \"flex flex-col\" : \"hidden\",\n        heightClasses,\n        mrClasses,\n        widthClasses,\n        \"z-10 shadow-md rounded-none\"\n      )}\n    >\n      <Iframe renderIframe={renderIframe} />\n    </div>\n  );\n}\n\nfunction Iframe({ renderIframe }: { renderIframe: (el: HTMLElement) => () => void }) {\n  const ref = useRef<HTMLDivElement>(null);\n  let cleanup: (() => void) | undefined;\n\n  useEffect(() => {\n    if (ref.current) {\n      cleanup = renderIframe(ref.current);\n    }\n    return () => {\n      if (cleanup) {\n        cleanup();\n      }\n    };\n  }, []);\n\n  return <div ref={ref} class={tw(\"flex-1 rounded-none overflow-hidden bg-[#161616]\")} />;\n}\n\nfunction Floaty({\n  isOpen,\n  isMobile,\n  events,\n}: {\n  isOpen: boolean;\n  isMobile: boolean;\n  events: Events;\n}) {\n  const [unreadCounter, setUnreadCount] = useState(events.unreadCount ?? 0);\n\n  useEffect(() => {\n    events.on(\"fogbender.unreadCount\", e => setUnreadCount(e.unreadCount));\n  }, []);\n\n  return (\n    <div class={tw(\"relative w-32 h-32\", isOpen && isMobile && \"hidden\")}>\n      <div class={tw(\"absolute inset-0\")}>\n        <FloatySvg />\n      </div>\n      <div class={tw(\"absolute inset-0 duration-300\", isOpen ? \"opacity-100\" : \"opacity-0\")}>\n        <FloatySvgOpen />\n      </div>\n      <div\n        class={tw`absolute text-white rounded-lg bg-brand-red-500 text-xs leading-none`}\n        style={{\n          display: unreadCounter === 0 ? \"none\" : \"block\",\n          top: \"20px\",\n          left: \"78px\",\n          padding: unreadCounter === -1 ? \"2px 3px\" : \"2px 5px\",\n        }}\n      >\n        {unreadCounter === -1 ? \"@\" : unreadCounter}\n      </div>\n    </div>\n  );\n}\n","function FloatyCloseButton() {\n  return (\n    <svg width=\"16\" height=\"16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"m3.333 3.333 9.334 9.334M3.333 12.667l9.334-9.334\"\n        stroke=\"currentColor\"\n        stroke-width=\"2\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n      />\n    </svg>\n  );\n}\n\nexport default FloatyCloseButton;\n","import { tw } from \"twind\";\n\nfunction FloatySvgOpen() {\n  return (\n    <svg\n      class={tw`text-black fill-white hover:text-white hover:fill-blue-500 transition-colors`}\n      width=\"120\"\n      height=\"120\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <g filter=\"url(#a)\">\n        <path d=\"M87.026 33.083c-7.775-9.336-11.662-14.005-15.981-16.273a24.514 24.514 0 0 0-23.33.29c-4.26 2.374-8.055 7.167-15.643 16.753-6.296 7.953-9.443 11.93-10.805 16a24.514 24.514 0 0 0 2.43 20.724c2.266 3.645 6.224 6.767 14.14 13.01 6.218 4.904 9.327 7.356 12.643 8.676a24.515 24.515 0 0 0 17.568.215c3.346-1.238 6.538-3.63 12.922-8.417 8.516-6.385 12.774-9.577 15.167-13.318a24.515 24.515 0 0 0 2.493-21.29c-1.464-4.193-4.844-8.252-11.604-16.37Z\" />\n        <mask\n          id=\"b\"\n          style=\"mask-type:alpha\"\n          maskUnits=\"userSpaceOnUse\"\n          x=\"20\"\n          y=\"14\"\n          width=\"81\"\n          height=\"80\"\n        >\n          <path\n            d=\"M87.026 33.083c-7.775-9.336-11.662-14.005-15.981-16.273a24.514 24.514 0 0 0-23.33.29c-4.26 2.374-8.055 7.167-15.643 16.753-6.296 7.953-9.443 11.93-10.805 16a24.514 24.514 0 0 0 2.43 20.724c2.266 3.645 6.224 6.767 14.14 13.01 6.218 4.904 9.327 7.356 12.643 8.676a24.515 24.515 0 0 0 17.568.215c3.346-1.238 6.538-3.63 12.922-8.417 8.516-6.385 12.774-9.577 15.167-13.318a24.515 24.515 0 0 0 2.493-21.29c-1.464-4.193-4.844-8.252-11.604-16.37Z\"\n            fill=\"currentColor\"\n          />\n        </mask>\n        <g mask=\"url(#b)\">\n          <path\n            d=\"m41.365 63-1.719-5.6h-.044c.062 1.139.093 1.899.093 2.28V63h-1.352v-7.139h2.06l1.69 5.46h.029l1.792-5.46h2.06V63h-1.41v-3.379c0-.16 0-.343.004-.552.007-.208.03-.761.069-1.66h-.044L42.752 63h-1.387Zm6.23-6.87c0-.485.27-.728.811-.728.54 0 .81.243.81.728 0 .231-.068.412-.205.542-.133.127-.335.19-.605.19-.54 0-.81-.244-.81-.732ZM49.148 63h-1.49v-5.459h1.49V63Zm6.607 0h-1.49v-3.188c0-.394-.07-.689-.21-.884-.14-.199-.362-.298-.669-.298-.416 0-.717.14-.903.42-.185.277-.278.737-.278 1.382V63h-1.49v-5.459h1.138l.2.698h.084a1.56 1.56 0 0 1 .683-.595c.293-.137.625-.206.996-.206.635 0 1.117.173 1.445.518.33.342.494.837.494 1.484V63Zm1.47-6.87c0-.485.27-.728.81-.728s.81.243.81.728c0 .231-.068.412-.205.542-.133.127-.335.19-.605.19-.54 0-.81-.244-.81-.732ZM58.776 63h-1.49v-5.459h1.49V63Zm6.455 0h-1.49v-3.188c0-.394-.066-.689-.2-.884-.13-.199-.336-.298-.62-.298-.38 0-.657.14-.83.42-.172.28-.258.74-.258 1.382V63h-1.49v-5.459h1.138l.2.698h.083c.147-.25.358-.446.635-.586.277-.143.594-.215.952-.215.817 0 1.37.267 1.66.801h.132c.147-.254.362-.45.645-.59.286-.14.608-.21.967-.21.618 0 1.085.159 1.401.478.319.316.478.824.478 1.523V63h-1.494v-3.188c0-.394-.066-.689-.2-.884-.13-.199-.337-.298-.62-.298-.364 0-.638.13-.82.39-.18.26-.269.674-.269 1.24V63Zm4.873-6.87c0-.485.27-.728.81-.728.541 0 .811.243.811.728 0 .231-.068.412-.205.542-.133.127-.335.19-.605.19-.54 0-.81-.244-.81-.732ZM71.658 63h-1.49v-5.459h1.49V63Zm5.366 0h-4.311v-.879l2.529-3.442h-2.378V57.54h4.072v.967l-2.46 3.354h2.548V63Zm3.345-4.502c-.316 0-.563.101-.742.303-.18.198-.282.482-.308.85h2.09c-.007-.368-.103-.652-.288-.85-.186-.202-.436-.303-.752-.303Zm.21 4.6c-.879 0-1.566-.243-2.06-.728-.496-.485-.743-1.172-.743-2.06 0-.915.228-1.622.684-2.12.459-.5 1.092-.752 1.9-.752.77 0 1.371.22 1.8.66.43.44.645 1.046.645 1.82v.724h-3.52c.016.423.142.753.376.99.234.238.563.357.986.357.329 0 .64-.034.933-.102.293-.069.599-.178.918-.327v1.152a3.42 3.42 0 0 1-.835.288 5.136 5.136 0 0 1-1.084.098Z\"\n            fill=\"currentColor\"\n          />\n        </g>\n      </g>\n      <path d=\"m67.34 73-7 7-7-7\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n      <defs>\n        <filter\n          id=\"a\"\n          x=\"0\"\n          y=\"0\"\n          width=\"120\"\n          height=\"120\"\n          filterUnits=\"userSpaceOnUse\"\n          color-interpolation-filters=\"sRGB\"\n        >\n          <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feOffset dy=\"6\" />\n          <feGaussianBlur stdDeviation=\"10\" />\n          <feColorMatrix values=\"0 0 0 0 0.0751563 0 0 0 0 0.113891 0 0 0 0 0.4625 0 0 0 0.15 0\" />\n          <feBlend in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_3861_7231\" />\n          <feBlend in=\"SourceGraphic\" in2=\"effect1_dropShadow_3861_7231\" result=\"shape\" />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default FloatySvgOpen;\n","function FloatySvg() {\n  return (\n    <svg\n      width=\"120\"\n      height=\"120\"\n      viewBox=\"0 0 120 120\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <g filter=\"url(#filter0_d_995_19)\">\n        <path\n          d=\"M87.026 33.0832C79.2513 23.7467 75.3639 19.0785 71.0446 16.8104C63.7179 12.9631 54.9448 13.0719 47.7158 17.0997C43.4541 19.4742 39.66 24.2673 32.0718 33.8535C25.7765 41.8063 22.6289 45.7827 21.2669 49.8536C18.9499 56.7784 19.8406 64.3756 23.6964 70.5767C25.9631 74.2222 29.9208 77.3436 37.8362 83.5863C44.0551 88.491 47.1645 90.9434 50.4796 92.2626C56.108 94.5025 62.3663 94.5791 68.0479 92.4778C71.3943 91.2401 74.5862 88.8471 80.97 84.0611C89.4861 77.6765 93.7442 74.4842 96.1372 70.7427C100.191 64.4046 101.11 56.5561 98.6299 49.453C97.1658 45.2598 93.7859 41.201 87.026 33.0832Z\"\n          fill=\"white\"\n        />\n        <mask\n          id=\"mask0_995_19\"\n          style=\"mask-type:alpha\"\n          maskUnits=\"userSpaceOnUse\"\n          x=\"20\"\n          y=\"14\"\n          width=\"80\"\n          height=\"80\"\n        >\n          <path\n            d=\"M87.026 33.0832C79.2513 23.7467 75.3639 19.0785 71.0446 16.8104C63.7179 12.9631 54.9448 13.0719 47.7158 17.0997C43.4541 19.4742 39.66 24.2673 32.0718 33.8535C25.7765 41.8063 22.6289 45.7827 21.2669 49.8536C18.9499 56.7784 19.8406 64.3756 23.6964 70.5767C25.9631 74.2222 29.9208 77.3436 37.8362 83.5863C44.0551 88.491 47.1645 90.9434 50.4796 92.2626C56.108 94.5025 62.3663 94.5791 68.0479 92.4778C71.3943 91.2401 74.5862 88.8471 80.97 84.0611C89.4861 77.6765 93.7442 74.4842 96.1372 70.7427C100.191 64.4046 101.11 56.5561 98.6299 49.453C97.1658 45.2598 93.7859 41.201 87.026 33.0832Z\"\n            fill=\"#FE346E\"\n          />\n        </mask>\n        <g mask=\"url(#mask0_995_19)\">\n          <path\n            d=\"M66.6078 79.0674C64.5118 79.9924 62.42 80.7315 60.1652 80.9621C59.0418 81.0769 57.958 80.9201 56.8899 80.6368C56.188 80.4506 55.859 79.8348 55.9959 79.1464C56.1198 78.5235 56.7219 78.0472 57.3875 78.203C60.2691 78.8777 62.8621 77.9823 65.3812 76.7955C69.3644 74.9189 72.9107 72.4488 75.8972 69.2123C77.5701 67.3994 78.3092 65.3085 78.3583 62.891C78.4386 58.9407 78.2777 54.9983 78.0326 51.06C77.8714 48.4705 77.5702 45.8894 77.3317 43.3045C77.3208 43.1864 77.3118 43.0675 77.0632 42.9142C73.7573 45.9357 70.596 49.1288 67.7646 52.7646C69.033 53.0026 70.2022 53.2092 71.3654 53.4446C72.2639 53.6265 73.1285 53.9189 73.9235 54.3777C75.2266 55.1297 75.6093 56.2689 75.045 57.6517C74.8166 58.2113 74.4816 58.7136 74.0254 59.0971C71.7158 61.0389 69.0536 61.9657 66.0211 61.4622C63.4023 61.0274 62.127 58.8686 62.8499 56.3292C63.2441 54.9444 63.2441 54.9414 61.7381 54.9391C60.0789 54.9367 58.4196 54.938 56.7604 54.9437C56.4541 54.9448 56.1288 54.8927 55.8606 55.1498C55.8103 55.5123 56.0283 55.8198 56.1271 56.1507C56.9774 58.9997 55.4829 61.3095 52.484 61.5628C49.735 61.795 47.2577 60.9982 45.1365 59.23C44.5578 58.7476 44.143 58.1408 43.8911 57.4337C43.4594 56.2222 43.8143 55.1776 44.9156 54.4826C46.1789 53.6854 47.6266 53.4204 49.0656 53.145C49.7412 53.0157 50.4249 52.9272 51.2541 52.7967C48.4551 49.1145 45.2492 45.988 41.9216 42.8654C41.5057 43.5363 41.6009 44.1981 41.5257 44.8043C41.3253 46.4193 41.1873 48.0435 41.0779 49.6675C40.8177 53.5328 40.6761 57.4015 40.584 61.2759C40.5077 64.4866 41.3884 67.1589 43.7311 69.4603C45.9131 71.6038 48.0263 73.8147 50.6911 75.3776C52.7948 76.6115 52.5278 76.528 54.3326 75.1696C55.326 74.4219 56.2284 73.5699 57.1294 72.7158C57.5525 72.3146 57.5893 72.05 57.1389 71.6373C56.2392 70.8126 55.492 69.8523 54.8309 68.8324C54.6383 68.5353 54.4512 68.2228 54.3347 67.8923C54.0291 67.0252 54.4538 66.3289 55.3725 66.1587C55.678 66.102 55.9932 66.0731 56.3041 66.072C58.4923 66.0648 60.6806 66.0667 62.8688 66.07C63.1087 66.0704 63.351 66.0818 63.588 66.1162C64.673 66.2735 65.1464 67.1232 64.647 68.0917C64.0647 69.2208 63.1208 70.0892 62.3253 71.0643C62.1618 71.2648 61.9385 71.4244 61.8662 71.7786C62.4351 72.2608 63.1743 72.3484 63.8964 72.427C64.7911 72.5243 65.6636 72.3828 66.5172 72.0832C67.3924 71.776 68.0846 72.0691 68.3391 72.8047C68.5954 73.5455 68.2346 74.17 67.3487 74.4882C65.0285 75.3215 62.7571 75.1288 60.5797 74.0526C59.9514 73.742 59.6047 73.8593 59.1587 74.3127C57.8707 75.6221 56.4786 76.8158 54.9841 77.9023C53.6178 78.8957 52.2383 78.9919 50.7222 78.2939C49.3386 77.6568 48.0871 76.8319 46.9051 75.8945C44.4439 73.9428 42.2539 71.7327 40.2574 69.3193C38.8091 67.5684 38.2054 65.585 38.0866 63.3748C37.8973 59.8514 38.047 56.3344 38.2601 52.8226C38.5059 48.7733 38.8649 44.7304 39.3997 40.7055C39.4245 40.5187 39.4723 40.3345 39.5167 40.1507C39.7829 39.0483 40.6887 38.6778 41.6491 39.3035C42.494 39.8539 43.2215 40.5517 43.95 41.2359C47.5694 44.6348 51.0992 48.1164 54.0036 52.1522C54.2037 52.4303 54.4179 52.5346 54.7836 52.5175C57.9316 52.3697 61.0815 52.3862 64.2294 52.5112C64.6773 52.529 64.8792 52.3389 65.1008 52.0398C68.5157 47.4291 72.5542 43.3914 76.9074 39.6443C77.1049 39.4743 77.3201 39.312 77.5527 39.1959C78.3966 38.7746 79.2255 39.1261 79.4575 40.0344C79.7975 41.3657 79.8636 42.7387 80.0093 44.0976C80.3942 47.6886 80.6786 51.2902 80.8312 54.8959C80.9848 58.5249 81.2016 62.1645 80.6097 65.784C80.2913 67.7313 79.2162 69.2934 77.9556 70.7345C74.8179 74.3216 70.945 76.96 66.6078 79.0674ZM49.6719 58.7959C50.4639 58.9923 51.2589 59.1782 52.0849 59.0801C53.5866 58.9018 54.0971 58.1184 53.6045 56.7288C53.4631 56.3297 53.2632 55.9504 53.085 55.5643C52.9584 55.29 52.7421 55.2142 52.4391 55.2472C51.0101 55.4029 49.5818 55.5666 48.1892 55.9287C47.5766 56.0881 46.9294 56.2011 46.3839 56.7091C47.1367 57.8957 48.3416 58.3395 49.6719 58.7959ZM70.0825 55.7688C69.2066 55.6293 68.3351 55.4467 67.4539 55.3599C65.9435 55.2111 65.8849 55.2742 65.423 56.7265C64.9537 58.202 65.5227 59.0468 67.0978 59.087C68.9129 59.1333 70.5481 58.5679 71.9904 57.481C72.1411 57.3675 72.2687 57.2203 72.3917 57.076C72.6611 56.7599 72.5952 56.523 72.2027 56.3709C71.553 56.1191 70.8883 55.9175 70.0825 55.7688ZM58.2276 69.0166C58.5186 69.3271 58.8028 69.6442 59.1032 69.9457C59.2808 70.1239 59.5085 70.252 59.7271 70.0266C60.1299 69.6112 60.6095 69.2508 60.8956 68.5717C59.9867 68.5717 59.1602 68.5646 58.3341 68.5757C58.0511 68.5794 58.015 68.7326 58.2276 69.0166Z\"\n            fill=\"#5E5E5E\"\n          />\n        </g>\n      </g>\n      <defs>\n        <filter\n          id=\"filter0_d_995_19\"\n          x=\"0\"\n          y=\"0\"\n          width=\"120\"\n          height=\"120\"\n          filterUnits=\"userSpaceOnUse\"\n          color-interpolation-filters=\"sRGB\"\n        >\n          <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feOffset dy=\"6\" />\n          <feGaussianBlur stdDeviation=\"10\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.0751563 0 0 0 0 0.113891 0 0 0 0 0.4625 0 0 0 0.15 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_995_19\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_995_19\"\n            result=\"shape\"\n          />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default FloatySvg;\n","/* global NodeModule */\n\nimport { cssomSheet, setup, type Sheet } from \"twind\";\n\nexport const sharedSheet = () => {\n  const target = document.createElement(\"style\");\n  const offset = target.childNodes.length;\n  const instances = new Set<HTMLStyleElement>([target]);\n\n  const sheet: Sheet<HTMLStyleElement> = {\n    target,\n    insert: (rule, index) =>\n      instances.forEach(instance => {\n        instance.insertBefore(document.createTextNode(rule), instance.childNodes[offset + index]);\n      }),\n  };\n  const attach = (root: ShadowRoot | null) => {\n    const instance = target.cloneNode(true) as typeof target;\n    instances.add(instance);\n    if (instances.size === 100) {\n      console.error(\"Fogbender: oopsie poopsie, too many instances of sharedSheet\");\n    }\n    root?.appendChild(instance);\n  };\n  return { sheet, attach };\n};\n\nconst createSheet = () => {\n  let attach = (_root: ShadowRoot | null) => {};\n  const fastCss = (() => {\n    try {\n      return !!new CSSStyleSheet();\n    } catch (e) {\n      return false;\n    }\n  })();\n\n  if (fastCss) {\n    const target = new CSSStyleSheet();\n    attach = (root: ShadowRoot | null) => {\n      if (root) {\n        (root as ShadowRoot & { adoptedStyleSheets: CSSStyleSheet[] }).adoptedStyleSheets = [\n          target,\n        ];\n      }\n    };\n    return { sheet: cssomSheet({ target }), attach };\n  } else {\n    return sharedSheet();\n  }\n};\n\nconst createTwind = () => {\n  const sheet = createSheet();\n\n  setup({\n    sheet: sheet.sheet,\n    theme: {\n      extend: {\n        colors: {\n          \"brand-red-500\": \"#FA3541\",\n        },\n        fontSize: {\n          \"2xs\": \"0.625rem\",\n        },\n        minWidth: {\n          \"1rem\": \"1rem\",\n        },\n        minHeight: {\n          \"1rem\": \"1rem\",\n        },\n        fill: {\n          \"white\": \"#FFF\",\n          \"blue-500\": \"#3B82F6\",\n        },\n      },\n    },\n  });\n  return sheet;\n};\n\nlet singletonHolder: ReturnType<typeof createTwind> | undefined;\n\nexport function getTwind() {\n  return singletonHolder || (singletonHolder = createTwind());\n}\n\ndeclare global {\n  interface NodeModule {\n    hot?: {\n      data: { singletonHolder?: typeof singletonHolder };\n      dispose: (callback: (data: { singletonHolder?: typeof singletonHolder }) => void) => void;\n    };\n  }\n}\n\nif (typeof module !== \"undefined\" && (module as any).hot) {\n  const hot = (module as any).hot as {\n    data?: { singletonHolder?: typeof singletonHolder };\n    dispose: (callback: (data: { singletonHolder?: typeof singletonHolder }) => void) => void;\n  };\n  singletonHolder = hot.data?.singletonHolder || singletonHolder;\n  hot.dispose(data => {\n    data.singletonHolder = singletonHolder;\n  });\n}\n","import { render } from \"preact\";\nimport { useEffect, useState } from \"preact/hooks\";\nimport { tw } from \"twind\";\nimport type { Events } from \"./createIframe\";\nimport { getTwind } from \"./twind\";\n\nexport function renderUnreadBadge(\n  { events }: { events: Events },\n  openWindow: () => void,\n  { el }: { el: HTMLElement }\n) {\n  const { attach } = getTwind();\n\n  if (el.shadowRoot) {\n    el.shadowRoot.innerHTML = \"\";\n  } else {\n    el.attachShadow({ mode: \"open\" });\n    attach(el.shadowRoot);\n  }\n\n  const root = el.shadowRoot;\n  if (!root) throw new Error(\"No shadow root\");\n\n  render(<UnreadButton events={events} openWindow={openWindow} />, root);\n\n  return () => {\n    render(null, root);\n    el.innerHTML = \"\";\n  };\n}\n\nfunction UnreadButton({ events, openWindow }: { events: Events; openWindow: () => void }) {\n  const [unreadCounter, setUnreadCounter] = useState(events.unreadCount);\n\n  useEffect(() => {\n    events.on(\"fogbender.unreadCount\", e => {\n      setUnreadCounter(e.unreadCount);\n    });\n  }, []);\n\n  if (!unreadCounter || unreadCounter === 0) return null;\n\n  return (\n    <button\n      onClick={openWindow}\n      class={tw`min-w-1rem min-h-1rem bg-brand-red-500 text-2xs hidden items-center justify-center rounded-full font-bold leading-none text-white`}\n      style={{ display: \"flex\" }}\n    >\n      {unreadCounter === -1 ? (\n        <span class={tw`text-xs`}>@</span>\n      ) : (\n        <span class={tw`px-1`}>{unreadCounter}</span>\n      )}\n    </button>\n  );\n}\n"],"mappings":"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","names":["exports","module","ResizeSensor","element","exports","module","ResizeSensor","i","css","exports","module","import_twind","import_jsx_runtime","import_jsx_runtime","import_twind","import_jsx_runtime","renderIframe","import_preact","import_hooks","import_twind","import_jsx_runtime","setIframeMode"]}