{"version":3,"file":"floating_chat-KsVLYUp-.js","sources":["../../../node_modules/sticky-sidebar/src/sticky-sidebar.js","../../../app/frontend/entrypoints/floating_chat.js"],"sourcesContent":["/**\r\n * Sticky Sidebar JavaScript Plugin.\r\n * @version 3.3.1\r\n * @author Ahmed Bouhuolia \r\n * @license The MIT License (MIT)\r\n */\r\nconst StickySidebar = (() => {\r\n \r\n // ---------------------------------\r\n // # Define Constants\r\n // ---------------------------------\r\n //\r\n const EVENT_KEY = '.stickySidebar';\r\n const VERSION = '3.3.1';\r\n \r\n const DEFAULTS = {\r\n \r\n /**\r\n * Additional top spacing of the element when it becomes sticky.\r\n * @type {Numeric|Function}\r\n */\r\n topSpacing: 0,\r\n \r\n /**\r\n * Additional bottom spacing of the element when it becomes sticky.\r\n * @type {Numeric|Function}\r\n */\r\n bottomSpacing: 0,\r\n \r\n /**\r\n * Container sidebar selector to know what the beginning and end of sticky element.\r\n * @type {String|False}\r\n */\r\n containerSelector: false,\r\n \r\n /**\r\n * Inner wrapper selector.\r\n * @type {String}\r\n */\r\n innerWrapperSelector: '.inner-wrapper-sticky',\r\n \r\n /**\r\n * The name of CSS class to apply to elements when they have become stuck.\r\n * @type {String|False}\r\n */\r\n stickyClass: 'is-affixed',\r\n \r\n /**\r\n * Detect when sidebar and its container change height so re-calculate their dimensions.\r\n * @type {Boolean}\r\n */\r\n resizeSensor: true,\r\n \r\n /**\r\n * The sidebar returns to its normal position if its width below this value.\r\n * @type {Numeric}\r\n */\r\n minWidth: false\r\n };\r\n \r\n // ---------------------------------\r\n // # Class Definition\r\n // ---------------------------------\r\n //\r\n /**\r\n * Sticky Sidebar Class.\r\n * @public\r\n */\r\n class StickySidebar{\r\n \r\n /**\r\n * Sticky Sidebar Constructor.\r\n * @constructor\r\n * @param {HTMLElement|String} sidebar - The sidebar element or sidebar selector.\r\n * @param {Object} options - The options of sticky sidebar.\r\n */\r\n constructor(sidebar, options = {}){\r\n this.options = StickySidebar.extend(DEFAULTS, options);\r\n \r\n // Sidebar element query if there's no one, throw error.\r\n this.sidebar = ('string' === typeof sidebar ) ? document.querySelector(sidebar) : sidebar;\r\n if( 'undefined' === typeof this.sidebar )\r\n throw new Error(\"There is no specific sidebar element.\");\r\n \r\n this.sidebarInner = false;\r\n this.container = this.sidebar.parentElement;\r\n \r\n // Current Affix Type of sidebar element.\r\n this.affixedType = 'STATIC';\r\n this.direction = 'down';\r\n this.support = {\r\n transform: false,\r\n transform3d: false\r\n };\r\n \r\n this._initialized = false;\r\n this._reStyle = false;\r\n this._breakpoint = false;\r\n this._resizeListeners = [];\r\n \r\n // Dimensions of sidebar, container and screen viewport.\r\n this.dimensions = {\r\n translateY: 0,\r\n topSpacing: 0,\r\n lastTopSpacing: 0,\r\n bottomSpacing: 0,\r\n lastBottomSpacing: 0,\r\n sidebarHeight: 0,\r\n sidebarWidth: 0,\r\n containerTop: 0,\r\n containerHeight: 0,\r\n viewportHeight: 0,\r\n viewportTop: 0, \r\n lastViewportTop: 0,\r\n };\r\n \r\n // Bind event handlers for referencability.\r\n ['handleEvent'].forEach( (method) => {\r\n this[method] = this[method].bind(this);\r\n });\r\n \r\n // Initialize sticky sidebar for first time.\r\n this.initialize();\r\n }\r\n \r\n /**\r\n * Initializes the sticky sidebar by adding inner wrapper, define its container, \r\n * min-width breakpoint, calculating dimensions, adding helper classes and inline style.\r\n * @private\r\n */\r\n initialize(){\r\n this._setSupportFeatures();\r\n \r\n // Get sticky sidebar inner wrapper, if not found, will create one.\r\n if( this.options.innerWrapperSelector ){\r\n this.sidebarInner = this.sidebar.querySelector(this.options.innerWrapperSelector);\r\n \r\n if( null === this.sidebarInner )\r\n this.sidebarInner = false;\r\n }\r\n \r\n if( ! this.sidebarInner ){\r\n let wrapper = document.createElement('div');\r\n wrapper.setAttribute('class', 'inner-wrapper-sticky');\r\n this.sidebar.appendChild(wrapper);\r\n \r\n while( this.sidebar.firstChild != wrapper )\r\n wrapper.appendChild(this.sidebar.firstChild);\r\n \r\n this.sidebarInner = this.sidebar.querySelector('.inner-wrapper-sticky');\r\n }\r\n \r\n // Container wrapper of the sidebar.\r\n if( this.options.containerSelector ){\r\n let containers = document.querySelectorAll(this.options.containerSelector);\r\n containers = Array.prototype.slice.call(containers);\r\n \r\n containers.forEach((container, item) => {\r\n if( ! container.contains(this.sidebar) ) return;\r\n this.container = container;\r\n });\r\n \r\n if( ! containers.length )\r\n throw new Error(\"The container does not contains on the sidebar.\");\r\n }\r\n \r\n // If top/bottom spacing is not function parse value to integer.\r\n if( 'function' !== typeof this.options.topSpacing )\r\n this.options.topSpacing = parseInt(this.options.topSpacing) || 0;\r\n \r\n if( 'function' !== typeof this.options.bottomSpacing )\r\n this.options.bottomSpacing = parseInt(this.options.bottomSpacing) || 0;\r\n \r\n // Breakdown sticky sidebar if screen width below `options.minWidth`.\r\n this._widthBreakpoint();\r\n \r\n // Calculate dimensions of sidebar, container and viewport.\r\n this.calcDimensions();\r\n \r\n // Affix sidebar in proper position.\r\n this.stickyPosition();\r\n \r\n // Bind all events.\r\n this.bindEvents();\r\n \r\n // Inform other properties the sticky sidebar is initialized.\r\n this._initialized = true;\r\n }\r\n \r\n /**\r\n * Bind all events of sticky sidebar plugin.\r\n * @protected\r\n */\r\n bindEvents(){\r\n window.addEventListener('resize', this, {passive: true, capture: false});\r\n window.addEventListener('scroll', this, {passive: true, capture: false});\r\n \r\n this.sidebar.addEventListener('update' + EVENT_KEY, this);\r\n \r\n if( this.options.resizeSensor && 'undefined' !== typeof ResizeSensor ){\r\n new ResizeSensor(this.sidebarInner, this.handleEvent);\r\n new ResizeSensor(this.container, this.handleEvent);\r\n }\r\n }\r\n \r\n /**\r\n * Handles all events of the plugin.\r\n * @param {Object} event - Event object passed from listener.\r\n */\r\n handleEvent(event){\r\n this.updateSticky(event);\r\n }\r\n \r\n /**\r\n * Calculates dimensions of sidebar, container and screen viewpoint\r\n * @public\r\n */\r\n calcDimensions(){\r\n if( this._breakpoint ) return;\r\n var dims = this.dimensions;\r\n \r\n // Container of sticky sidebar dimensions.\r\n dims.containerTop = StickySidebar.offsetRelative(this.container).top;\r\n dims.containerHeight = this.container.clientHeight;\r\n dims.containerBottom = dims.containerTop + dims.containerHeight;\r\n \r\n // Sidebar dimensions.\r\n dims.sidebarHeight = this.sidebarInner.offsetHeight;\r\n dims.sidebarWidth = this.sidebar.offsetWidth;\r\n \r\n // Screen viewport dimensions.\r\n dims.viewportHeight = window.innerHeight;\r\n \r\n this._calcDimensionsWithScroll();\r\n }\r\n \r\n /**\r\n * Some dimensions values need to be up-to-date when scrolling the page.\r\n * @private\r\n */\r\n _calcDimensionsWithScroll(){\r\n var dims = this.dimensions;\r\n \r\n dims.sidebarLeft = StickySidebar.offsetRelative(this.sidebar).left;\r\n \r\n dims.viewportTop = document.documentElement.scrollTop || document.body.scrollTop;\r\n dims.viewportBottom = dims.viewportTop + dims.viewportHeight;\r\n dims.viewportLeft = document.documentElement.scrollLeft || document.body.scrollLeft;\r\n \r\n dims.topSpacing = this.options.topSpacing;\r\n dims.bottomSpacing = this.options.bottomSpacing;\r\n \r\n if( 'function' === typeof dims.topSpacing )\r\n dims.topSpacing = parseInt(dims.topSpacing(this.sidebar)) || 0;\r\n \r\n if( 'function' === typeof dims.bottomSpacing )\r\n dims.bottomSpacing = parseInt(dims.bottomSpacing(this.sidebar)) || 0;\r\n \r\n if( 'VIEWPORT-TOP' === this.affixedType ){\r\n // Adjust translate Y in the case decrease top spacing value.\r\n if( dims.topSpacing < dims.lastTopSpacing ){\r\n dims.translateY += dims.lastTopSpacing - dims.topSpacing;\r\n this._reStyle = true; \r\n }\r\n \r\n } else if( 'VIEWPORT-BOTTOM' === this.affixedType ){\r\n // Adjust translate Y in the case decrease bottom spacing value.\r\n if( dims.bottomSpacing < dims.lastBottomSpacing ){\r\n dims.translateY += dims.lastBottomSpacing - dims.bottomSpacing;\r\n this._reStyle = true;\r\n }\r\n }\r\n \r\n dims.lastTopSpacing = dims.topSpacing;\r\n dims.lastBottomSpacing = dims.bottomSpacing;\r\n }\r\n \r\n /**\r\n * Determine whether the sidebar is bigger than viewport.\r\n * @public\r\n * @return {Boolean}\r\n */\r\n isSidebarFitsViewport(){\r\n return this.dimensions.sidebarHeight < this.dimensions.viewportHeight;\r\n }\r\n \r\n /**\r\n * Observe browser scrolling direction top and down.\r\n */\r\n observeScrollDir(){\r\n var dims = this.dimensions;\r\n if( dims.lastViewportTop === dims.viewportTop ) return;\r\n \r\n var furthest = 'down' === this.direction ? Math.min : Math.max;\r\n \r\n // If the browser is scrolling not in the same direction.\r\n if( dims.viewportTop === furthest(dims.viewportTop, dims.lastViewportTop) )\r\n this.direction = 'down' === this.direction ? 'up' : 'down';\r\n }\r\n \r\n /**\r\n * Gets affix type of sidebar according to current scrollTop and scrollLeft.\r\n * Holds all logical affix of the sidebar when scrolling up and down and when sidebar \r\n * is bigger than viewport and vice versa.\r\n * @public\r\n * @return {String|False} - Proper affix type.\r\n */\r\n getAffixType(){\r\n var dims = this.dimensions, affixType = false;\r\n \r\n this._calcDimensionsWithScroll();\r\n \r\n var sidebarBottom = dims.sidebarHeight + dims.containerTop;\r\n var colliderTop = dims.viewportTop + dims.topSpacing;\r\n var colliderBottom = dims.viewportBottom - dims.bottomSpacing;\r\n \r\n // When browser is scrolling top.\r\n if( 'up' === this.direction ){\r\n if( colliderTop <= dims.containerTop ){\r\n dims.translateY = 0;\r\n affixType = 'STATIC';\r\n \r\n } else if( colliderTop <= dims.translateY + dims.containerTop ){\r\n dims.translateY = colliderTop - dims.containerTop;\r\n affixType = 'VIEWPORT-TOP';\r\n \r\n } else if( ! this.isSidebarFitsViewport() && dims.containerTop <= colliderTop ){\r\n affixType = 'VIEWPORT-UNBOTTOM';\r\n }\r\n // When browser is scrolling up.\r\n } else {\r\n // When sidebar element is not bigger than screen viewport.\r\n if( this.isSidebarFitsViewport() ){\r\n \r\n if( dims.sidebarHeight + colliderTop >= dims.containerBottom ){\r\n dims.translateY = dims.containerBottom - sidebarBottom;\r\n affixType = 'CONTAINER-BOTTOM'; \r\n \r\n } else if( colliderTop >= dims.containerTop ){\r\n dims.translateY = colliderTop - dims.containerTop;\r\n affixType = 'VIEWPORT-TOP';\r\n }\r\n // When sidebar element is bigger than screen viewport.\r\n } else {\r\n \r\n if( dims.containerBottom <= colliderBottom ){\r\n dims.translateY = dims.containerBottom - sidebarBottom; \r\n affixType = 'CONTAINER-BOTTOM'; \r\n \r\n } else if( sidebarBottom + dims.translateY <= colliderBottom ){\r\n dims.translateY = colliderBottom - sidebarBottom;\r\n affixType = 'VIEWPORT-BOTTOM';\r\n \r\n } else if( dims.containerTop + dims.translateY <= colliderTop ){\r\n affixType = 'VIEWPORT-UNBOTTOM';\r\n }\r\n }\r\n }\r\n \r\n // Make sure the translate Y is not bigger than container height.\r\n dims.translateY = Math.max(0, dims.translateY);\r\n dims.translateY = Math.min(dims.containerHeight, dims.translateY);\r\n \r\n dims.lastViewportTop = dims.viewportTop;\r\n return affixType;\r\n }\r\n \r\n /**\r\n * Gets inline style of sticky sidebar wrapper and inner wrapper according \r\n * to its affix type.\r\n * @private\r\n * @param {String} affixType - Affix type of sticky sidebar.\r\n * @return {Object}\r\n */\r\n _getStyle(affixType){\r\n if( 'undefined' === typeof affixType ) return;\r\n \r\n var style = {inner: {}, outer: {}};\r\n var dims = this.dimensions;\r\n \r\n switch( affixType ){\r\n case 'VIEWPORT-TOP':\r\n style.inner = {position: 'fixed', top: dims.topSpacing,\r\n left: dims.sidebarLeft - dims.viewportLeft, width: dims.sidebarWidth};\r\n break;\r\n case 'VIEWPORT-BOTTOM':\r\n style.inner = {position: 'fixed', top: 'auto', left: dims.sidebarLeft,\r\n bottom: dims.bottomSpacing, width: dims.sidebarWidth};\r\n break;\r\n case 'CONTAINER-BOTTOM':\r\n case 'VIEWPORT-UNBOTTOM':\r\n let translate = this._getTranslate(0, dims.translateY + 'px');\r\n \r\n if( translate )\r\n style.inner = {transform: translate};\r\n else \r\n style.inner = {position: 'absolute', top: dims.translateY, width: dims.sidebarWidth};\r\n break;\r\n }\r\n \r\n switch( affixType ){\r\n case 'VIEWPORT-TOP':\r\n case 'VIEWPORT-BOTTOM':\r\n case 'VIEWPORT-UNBOTTOM':\r\n case 'CONTAINER-BOTTOM':\r\n style.outer = {height: dims.sidebarHeight, position: 'relative'};\r\n break;\r\n }\r\n \r\n style.outer = StickySidebar.extend({height: '', position: ''}, style.outer);\r\n style.inner = StickySidebar.extend({position: 'relative', top: '', left: '',\r\n bottom: '', width: '', transform: this._getTranslate()}, style.inner);\r\n \r\n return style;\r\n }\r\n \r\n /**\r\n * Cause the sidebar to be sticky according to affix type by adding inline\r\n * style, adding helper class and trigger events.\r\n * @function\r\n * @protected\r\n * @param {string} force - Update sticky sidebar position by force.\r\n */\r\n stickyPosition(force){\r\n if( this._breakpoint ) return;\r\n \r\n force = this._reStyle || force || false;\r\n \r\n var offsetTop = this.options.topSpacing;\r\n var offsetBottom = this.options.bottomSpacing;\r\n \r\n var affixType = this.getAffixType();\r\n var style = this._getStyle(affixType);\r\n \r\n if( (this.affixedType != affixType || force) && affixType ){\r\n let affixEvent = 'affix.' + affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY;\r\n StickySidebar.eventTrigger(this.sidebar, affixEvent);\r\n \r\n if( 'STATIC' === affixType )\r\n StickySidebar.removeClass(this.sidebar, this.options.stickyClass);\r\n else\r\n StickySidebar.addClass(this.sidebar, this.options.stickyClass);\r\n \r\n for( let key in style.outer ){\r\n let _unit = ('number' === typeof style.outer[key]) ? 'px' : '';\r\n this.sidebar.style[key] = style.outer[key];\r\n }\r\n \r\n for( let key in style.inner ){\r\n let _unit = ('number' === typeof style.inner[key]) ? 'px' : '';\r\n this.sidebarInner.style[key] = style.inner[key] + _unit;\r\n }\r\n \r\n let affixedEvent = 'affixed.'+ affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY;\r\n StickySidebar.eventTrigger(this.sidebar, affixedEvent);\r\n } else {\r\n if( this._initialized ) this.sidebarInner.style.left = style.inner.left;\r\n }\r\n \r\n this.affixedType = affixType;\r\n }\r\n \r\n /**\r\n * Breakdown sticky sidebar when window width is below `options.minWidth` value.\r\n * @protected\r\n */\r\n _widthBreakpoint(){\r\n \r\n if( window.innerWidth <= this.options.minWidth ){\r\n this._breakpoint = true;\r\n this.affixedType = 'STATIC';\r\n \r\n this.sidebar.removeAttribute('style');\r\n StickySidebar.removeClass(this.sidebar, this.options.stickyClass);\r\n this.sidebarInner.removeAttribute('style');\r\n } else {\r\n this._breakpoint = false;\r\n }\r\n }\r\n \r\n /**\r\n * Switches between functions stack for each event type, if there's no \r\n * event, it will re-initialize sticky sidebar.\r\n * @public\r\n */\r\n updateSticky(event = {}){\r\n if( this._running ) return;\r\n this._running = true;\r\n \r\n ((eventType) => {\r\n\r\n requestAnimationFrame(() => {\r\n switch( eventType ){\r\n // When browser is scrolling and re-calculate just dimensions\r\n // within scroll. \r\n case 'scroll':\r\n this._calcDimensionsWithScroll();\r\n this.observeScrollDir();\r\n this.stickyPosition();\r\n break;\r\n \r\n // When browser is resizing or there's no event, observe width\r\n // breakpoint and re-calculate dimensions.\r\n case 'resize':\r\n default: \r\n this._widthBreakpoint();\r\n this.calcDimensions();\r\n this.stickyPosition(true);\r\n break;\r\n }\r\n this._running = false;\r\n });\r\n })(event.type);\r\n }\r\n \r\n /**\r\n * Set browser support features to the public property.\r\n * @private\r\n */\r\n _setSupportFeatures(){\r\n var support = this.support;\r\n \r\n support.transform = StickySidebar.supportTransform();\r\n support.transform3d = StickySidebar.supportTransform(true);\r\n }\r\n \r\n /**\r\n * Get translate value, if the browser supports transfrom3d, it will adopt it.\r\n * and the same with translate. if browser doesn't support both return false.\r\n * @param {Number} y - Value of Y-axis.\r\n * @param {Number} x - Value of X-axis.\r\n * @param {Number} z - Value of Z-axis.\r\n * @return {String|False}\r\n */\r\n _getTranslate(y = 0, x = 0, z = 0){\r\n if( this.support.transform3d ) return 'translate3d(' + y +', '+ x +', '+ z +')';\r\n else if( this.support.translate ) return 'translate('+ y +', '+ x +')';\r\n else return false;\r\n }\r\n \r\n /**\r\n * Destroy sticky sidebar plugin.\r\n * @public\r\n */\r\n destroy(){\r\n window.removeEventListener('resize', this, {caption: false});\r\n window.removeEventListener('scroll', this, {caption: false});\r\n \r\n this.sidebar.classList.remove(this.options.stickyClass);\r\n this.sidebar.style.minHeight = '';\r\n \r\n this.sidebar.removeEventListener('update' + EVENT_KEY, this);\r\n \r\n var styleReset = {inner: {}, outer: {}};\r\n \r\n styleReset.inner = {position: '', top: '', left: '', bottom: '', width: '', transform: ''};\r\n styleReset.outer = {height: '', position: ''};\r\n \r\n for( let key in styleReset.outer )\r\n this.sidebar.style[key] = styleReset.outer[key];\r\n \r\n for( let key in styleReset.inner )\r\n this.sidebarInner.style[key] = styleReset.inner[key];\r\n \r\n if( this.options.resizeSensor && 'undefined' !== typeof ResizeSensor ){\r\n ResizeSensor.detach(this.sidebarInner, this.handleEvent);\r\n ResizeSensor.detach(this.container, this.handleEvent);\r\n }\r\n }\r\n \r\n /**\r\n * Determine if the browser supports CSS transform feature.\r\n * @function\r\n * @static\r\n * @param {Boolean} transform3d - Detect transform with translate3d.\r\n * @return {String}\r\n */\r\n static supportTransform(transform3d){\r\n var result = false,\r\n property = (transform3d) ? 'perspective' : 'transform',\r\n upper = property.charAt(0).toUpperCase() + property.slice(1),\r\n prefixes = ['Webkit', 'Moz', 'O', 'ms'],\r\n support = document.createElement('support'),\r\n style = support.style;\r\n \r\n (property + ' ' + prefixes.join(upper + ' ') + upper).split(' ').forEach(function(property, i) {\r\n if (style[property] !== undefined) {\r\n result = property;\r\n return false;\r\n }\r\n });\r\n return result;\r\n }\r\n \r\n /**\r\n * Trigger custom event.\r\n * @static\r\n * @param {DOMObject} element - Target element on the DOM.\r\n * @param {String} eventName - Event name.\r\n * @param {Object} data - \r\n */\r\n static eventTrigger(element, eventName, data){\r\n try{\r\n var event = new CustomEvent(eventName, {detail: data});\r\n } catch(e){\r\n var event = document.createEvent('CustomEvent');\r\n event.initCustomEvent(eventName, true, true, data);\r\n }\r\n element.dispatchEvent(event);\r\n }\r\n \r\n /**\r\n * Extend options object with defaults.\r\n * @function\r\n * @static\r\n */\r\n static extend(defaults, options){\r\n var results = {};\r\n for( let key in defaults ){\r\n if( 'undefined' !== typeof options[key] ) results[key] = options[key];\r\n else results[key] = defaults[key];\r\n }\r\n return results;\r\n }\r\n \r\n /**\r\n * Get current coordinates left and top of specific element.\r\n * @static\r\n */\r\n static offsetRelative(element){\r\n var result = {left: 0, top: 0};\r\n\r\n do{\r\n let offsetTop = element.offsetTop;\r\n let offsetLeft = element.offsetLeft;\r\n \r\n if( ! isNaN(offsetTop) )\r\n result.top += offsetTop;\r\n \r\n if( ! isNaN(offsetLeft) )\r\n result.left += offsetLeft;\r\n\r\n element = ( 'BODY' === element.tagName ) ?\r\n element.parentElement : element.offsetParent;\r\n } while(element)\r\n return result;\r\n }\r\n \r\n /**\r\n * Add specific class name to specific element.\r\n * @static \r\n * @param {ObjectDOM} element \r\n * @param {String} className \r\n */\r\n static addClass(element, className){\r\n if( ! StickySidebar.hasClass(element, className) ){\r\n if (element.classList)\r\n element.classList.add(className);\r\n else\r\n element.className += ' ' + className;\r\n }\r\n }\r\n \r\n /**\r\n * Remove specific class name to specific element\r\n * @static\r\n * @param {ObjectDOM} element \r\n * @param {String} className \r\n */\r\n static removeClass(element, className){\r\n if( StickySidebar.hasClass(element, className) ){\r\n if (element.classList)\r\n element.classList.remove(className);\r\n else\r\n element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\r\n }\r\n }\r\n\r\n /**\r\n * Determine weather the element has specific class name.\r\n * @static\r\n * @param {ObjectDOM} element \r\n * @param {String} className \r\n */\r\n static hasClass(element, className){\r\n if (element.classList)\r\n return element.classList.contains(className);\r\n else\r\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\r\n }\r\n }\r\n \r\n return StickySidebar;\r\n })();\r\n \r\n export default StickySidebar;\r\n \r\n // Global\r\n // -------------------------\r\n window.StickySidebar = StickySidebar;","import StickySidebar from'sticky-sidebar';\n\n// StickySidebarのインスタンスを保持する変数\nlet stickySidebar;\n\nfunction initializeStickySidebar() {\n // 該当要素がなければ何もしない\n const existChat = document.querySelector('.c-floating-chat');\n if (!existChat) return;\n\n // 既存のインスタンスがあれば破棄\n if (stickySidebar) {\n stickySidebar.destroy();\n }\n\n // 新しいインスタンスを作成\n stickySidebar = new StickySidebar('.c-floating-chat__js', {\n containerSelector: '.c-floating-chat',\n innerWrapperSelector: '.c-floating-chat__container',\n // 335は調整値\n topSpacing: window.innerHeight - 335,\n });\n}\n\nexport function initFloatingChat() {\n // StickySidebarの初期化\n // スクロール時に読み込まないと表示が壊れるためtype: scroll を指定\n window.addEventListener('scroll', () => {\n // StickySidebarの初期化\n initializeStickySidebar();\n });\n\n // 画面のリサイズを検知\n window.addEventListener('resize', () => {\n initializeStickySidebar();\n });\n}\n"],"names":["StickySidebar","EVENT_KEY","DEFAULTS","sidebar","options","method","wrapper","containers","container","item","event","dims","furthest","affixType","sidebarBottom","colliderTop","colliderBottom","style","translate","force","affixEvent","key","_unit","affixedEvent","eventType","support","y","x","z","styleReset","transform3d","result","property","upper","prefixes","i","element","eventName","data","defaults","results","offsetTop","offsetLeft","className","stickySidebar","initializeStickySidebar","initFloatingChat"],"mappings":"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","x_google_ignoreList":[0]}