{"version":3,"file":"axulus-uikit-dom.mjs","sources":["../../src/app/components/dom/domhandler.ts","../../src/app/components/dom/connectedoverlayscrollhandler.ts","../../src/app/components/dom/axulus-uikit-dom.ts"],"sourcesContent":["/**\n * @dynamic is for runtime initializing DomHandler.browser\n *\n * If delete below comment, we can see this error message:\n *  Metadata collected contains an error that will be reported at runtime:\n *  Only initialized variables and constants can be referenced\n *  because the value of this variable is needed by the template compiler.\n */\n// @dynamic\nexport class DomHandler {\n  public static zindex: number = 1000;\n\n  private static calculatedScrollbarWidth: number = null;\n\n  private static calculatedScrollbarHeight: number = null;\n\n  private static browser: any;\n\n  public static addClass(element: any, className: string): void {\n    if (element && className) {\n      if (element.classList) element.classList.add(className);\n      else element.className += ' ' + className;\n    }\n  }\n\n  public static addMultipleClasses(element: any, className: string): void {\n    if (element && className) {\n      if (element.classList) {\n        let styles: string[] = className.trim().split(' ');\n        for (let i = 0; i < styles.length; i++) {\n          element.classList.add(styles[i]);\n        }\n      } else {\n        let styles: string[] = className.split(' ');\n        for (let i = 0; i < styles.length; i++) {\n          element.className += ' ' + styles[i];\n        }\n      }\n    }\n  }\n\n  public static removeClass(element: any, className: string): void {\n    if (element && className) {\n      if (element.classList) element.classList.remove(className);\n      else element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n    }\n  }\n\n  public static hasClass(element: any, className: string): boolean {\n    if (element && className) {\n      if (element.classList) return element.classList.contains(className);\n      else return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n    }\n\n    return false;\n  }\n\n  public static siblings(element: any): any {\n    return Array.prototype.filter.call(element.parentNode.children, function (child) {\n      return child !== element;\n    });\n  }\n\n  public static find(element: any, selector: string): any[] {\n    return Array.from(element.querySelectorAll(selector));\n  }\n\n  public static findSingle(element: any, selector: string): any {\n    if (element) {\n      return element.querySelector(selector);\n    }\n    return null;\n  }\n\n  public static index(element: any): number {\n    let children = element.parentNode.childNodes;\n    let num = 0;\n    for (var i = 0; i < children.length; i++) {\n      if (children[i] == element) return num;\n      if (children[i].nodeType == 1) num++;\n    }\n    return -1;\n  }\n\n  public static indexWithinGroup(element: any, attributeName: string): number {\n    let children = element.parentNode ? element.parentNode.childNodes : [];\n    let num = 0;\n    for (var i = 0; i < children.length; i++) {\n      if (children[i] == element) return num;\n      if (children[i].attributes && children[i].attributes[attributeName] && children[i].nodeType == 1) num++;\n    }\n    return -1;\n  }\n\n  public static appendOverlay(overlay: any, target: any, appendTo: any = 'self') {\n    if (appendTo !== 'self' && overlay && target) {\n      this.appendChild(overlay, target);\n    }\n  }\n\n  public static alignOverlay(overlay: any, target: any, appendTo: any = 'self', calculateMinWidth: boolean = true) {\n    if (overlay && target) {\n      calculateMinWidth && (overlay.style.minWidth || (overlay.style.minWidth = DomHandler.getOuterWidth(target) + 'px'));\n\n      if (appendTo === 'self') {\n        this.relativePosition(overlay, target);\n      } else {\n        this.absolutePosition(overlay, target);\n      }\n    }\n  }\n\n  public static relativePosition(element: any, target: any): void {\n    const getClosestRelativeElement = (el) => {\n      if (!el) return;\n\n      return getComputedStyle(el).getPropertyValue('position') === 'relative' ? el : getClosestRelativeElement(el.parentElement);\n    };\n\n    const elementDimensions = element.offsetParent\n      ? { width: element.offsetWidth, height: element.offsetHeight }\n      : this.getHiddenElementDimensions(element);\n    const targetHeight = target.offsetHeight;\n    const targetOffset = target.getBoundingClientRect();\n    const windowScrollTop = this.getWindowScrollTop();\n    const windowScrollLeft = this.getWindowScrollLeft();\n    const viewport = this.getViewport();\n    const relativeElement = getClosestRelativeElement(element);\n    const relativeElementOffset = relativeElement?.getBoundingClientRect() || {\n      top: -1 * windowScrollTop,\n      left: -1 * windowScrollLeft\n    };\n    let top: number, left: number;\n\n    if (targetOffset.top + targetHeight + elementDimensions.height > viewport.height) {\n      top = targetOffset.top - relativeElementOffset.top - elementDimensions.height;\n      element.style.transformOrigin = 'bottom';\n      if (targetOffset.top + top < 0) {\n        top = -1 * targetOffset.top;\n      }\n    } else {\n      top = targetHeight + targetOffset.top - relativeElementOffset.top;\n      element.style.transformOrigin = 'top';\n    }\n\n    if (elementDimensions.width > viewport.width) {\n      // element wider then viewport and cannot fit on screen (align at left side of viewport)\n      left = (targetOffset.left - relativeElementOffset.left) * -1;\n    } else if (targetOffset.left - relativeElementOffset.left + elementDimensions.width > viewport.width) {\n      // element wider then viewport but can be fit on screen (align at right side of viewport)\n      left = (targetOffset.left - relativeElementOffset.left + elementDimensions.width - viewport.width) * -1;\n    } else {\n      // element fits on screen (align with target)\n      left = targetOffset.left - relativeElementOffset.left;\n    }\n\n    element.style.top = top + 'px';\n    element.style.left = left + 'px';\n  }\n\n  public static absolutePosition(element: any, target: any): void {\n    const elementDimensions = element.offsetParent\n      ? { width: element.offsetWidth, height: element.offsetHeight }\n      : this.getHiddenElementDimensions(element);\n    const elementOuterHeight = elementDimensions.height;\n    const elementOuterWidth = elementDimensions.width;\n    const targetOuterHeight = target.offsetHeight;\n    const targetOuterWidth = target.offsetWidth;\n    const targetOffset = target.getBoundingClientRect();\n    const windowScrollTop = this.getWindowScrollTop();\n    const windowScrollLeft = this.getWindowScrollLeft();\n    const viewport = this.getViewport();\n    let top: number, left: number;\n\n    if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {\n      top = targetOffset.top + windowScrollTop - elementOuterHeight;\n      element.style.transformOrigin = 'bottom';\n\n      if (top < 0) {\n        top = windowScrollTop;\n      }\n    } else {\n      top = targetOuterHeight + targetOffset.top + windowScrollTop;\n      element.style.transformOrigin = 'top';\n    }\n\n    if (targetOffset.left + elementOuterWidth > viewport.width)\n      left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);\n    else left = targetOffset.left + windowScrollLeft;\n\n    element.style.top = top + 'px';\n    element.style.left = left + 'px';\n  }\n\n  static getParents(element: any, parents: any = []): any {\n    return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n  }\n\n  static getScrollableParents(element: any) {\n    let scrollableParents = [];\n\n    if (element) {\n      let parents = this.getParents(element);\n      const overflowRegex = /(auto|scroll)/;\n      const overflowCheck = (node: any) => {\n        let styleDeclaration = window['getComputedStyle'](node, null);\n        return (\n          overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) ||\n          overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) ||\n          overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'))\n        );\n      };\n\n      for (let parent of parents) {\n        let scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];\n        if (scrollSelectors) {\n          let selectors = scrollSelectors.split(',');\n          for (let selector of selectors) {\n            let el = this.findSingle(parent, selector);\n            if (el && overflowCheck(el)) {\n              scrollableParents.push(el);\n            }\n          }\n        }\n\n        if (parent.nodeType !== 9 && overflowCheck(parent)) {\n          scrollableParents.push(parent);\n        }\n      }\n    }\n\n    return scrollableParents;\n  }\n\n  public static getHiddenElementOuterHeight(element: any): number {\n    element.style.visibility = 'hidden';\n    element.style.display = 'block';\n    let elementHeight = element.offsetHeight;\n    element.style.display = 'none';\n    element.style.visibility = 'visible';\n\n    return elementHeight;\n  }\n\n  public static getHiddenElementOuterWidth(element: any): number {\n    element.style.visibility = 'hidden';\n    element.style.display = 'block';\n    let elementWidth = element.offsetWidth;\n    element.style.display = 'none';\n    element.style.visibility = 'visible';\n\n    return elementWidth;\n  }\n\n  public static getHiddenElementDimensions(element: any): any {\n    let dimensions: any = {};\n    element.style.visibility = 'hidden';\n    element.style.display = 'block';\n    dimensions.width = element.offsetWidth;\n    dimensions.height = element.offsetHeight;\n    element.style.display = 'none';\n    element.style.visibility = 'visible';\n\n    return dimensions;\n  }\n\n  public static scrollInView(container, item) {\n    let borderTopValue: string = getComputedStyle(container).getPropertyValue('borderTopWidth');\n    let borderTop: number = borderTopValue ? parseFloat(borderTopValue) : 0;\n    let paddingTopValue: string = getComputedStyle(container).getPropertyValue('paddingTop');\n    let paddingTop: number = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n    let containerRect = container.getBoundingClientRect();\n    let itemRect = item.getBoundingClientRect();\n    let offset = itemRect.top + document.body.scrollTop - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n    let scroll = container.scrollTop;\n    let elementHeight = container.clientHeight;\n    let itemHeight = this.getOuterHeight(item);\n\n    if (offset < 0) {\n      container.scrollTop = scroll + offset;\n    } else if (offset + itemHeight > elementHeight) {\n      container.scrollTop = scroll + offset - elementHeight + itemHeight;\n    }\n  }\n\n  public static fadeIn(element, duration: number): void {\n    element.style.opacity = 0;\n\n    let last = +new Date();\n    let opacity = 0;\n    let tick = function () {\n      opacity = +element.style.opacity.replace(',', '.') + (new Date().getTime() - last) / duration;\n      element.style.opacity = opacity;\n      last = +new Date();\n\n      if (+opacity < 1) {\n        (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);\n      }\n    };\n\n    tick();\n  }\n\n  public static fadeOut(element, ms) {\n    var opacity = 1,\n      interval = 50,\n      duration = ms,\n      gap = interval / duration;\n\n    let fading = setInterval(() => {\n      opacity = opacity - gap;\n\n      if (opacity <= 0) {\n        opacity = 0;\n        clearInterval(fading);\n      }\n\n      element.style.opacity = opacity;\n    }, interval);\n  }\n\n  public static getWindowScrollTop(): number {\n    let doc = document.documentElement;\n    return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n  }\n\n  public static getWindowScrollLeft(): number {\n    let doc = document.documentElement;\n    return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n  }\n\n  public static matches(element, selector: string): boolean {\n    var p = Element.prototype;\n    var f =\n      p['matches'] ||\n      p.webkitMatchesSelector ||\n      p['mozMatchesSelector'] ||\n      p['msMatchesSelector'] ||\n      function (s) {\n        return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n      };\n    return f.call(element, selector);\n  }\n\n  public static getOuterWidth(el, margin?) {\n    let width = el.offsetWidth;\n\n    if (margin) {\n      let style = getComputedStyle(el);\n      width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n    }\n\n    return width;\n  }\n\n  public static getHorizontalPadding(el) {\n    let style = getComputedStyle(el);\n    return parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n  }\n\n  public static getHorizontalMargin(el) {\n    let style = getComputedStyle(el);\n    return parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n  }\n\n  public static innerWidth(el) {\n    let width = el.offsetWidth;\n    let style = getComputedStyle(el);\n\n    width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n    return width;\n  }\n\n  public static width(el) {\n    let width = el.offsetWidth;\n    let style = getComputedStyle(el);\n\n    width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n    return width;\n  }\n\n  public static getInnerHeight(el) {\n    let height = el.offsetHeight;\n    let style = getComputedStyle(el);\n\n    height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\n    return height;\n  }\n\n  public static getOuterHeight(el, margin?) {\n    let height = el.offsetHeight;\n\n    if (margin) {\n      let style = getComputedStyle(el);\n      height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n    }\n\n    return height;\n  }\n\n  public static getHeight(el): number {\n    let height = el.offsetHeight;\n    let style = getComputedStyle(el);\n\n    height -=\n      parseFloat(style.paddingTop) +\n      parseFloat(style.paddingBottom) +\n      parseFloat(style.borderTopWidth) +\n      parseFloat(style.borderBottomWidth);\n\n    return height;\n  }\n\n  public static getWidth(el): number {\n    let width = el.offsetWidth;\n    let style = getComputedStyle(el);\n\n    width -=\n      parseFloat(style.paddingLeft) +\n      parseFloat(style.paddingRight) +\n      parseFloat(style.borderLeftWidth) +\n      parseFloat(style.borderRightWidth);\n\n    return width;\n  }\n\n  public static getViewport(): any {\n    let win = window,\n      d = document,\n      e = d.documentElement,\n      g = d.getElementsByTagName('body')[0],\n      w = win.innerWidth || e.clientWidth || g.clientWidth,\n      h = win.innerHeight || e.clientHeight || g.clientHeight;\n\n    return { width: w, height: h };\n  }\n\n  public static getOffset(el) {\n    var rect = el.getBoundingClientRect();\n\n    return {\n      top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n      left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0)\n    };\n  }\n\n  public static replaceElementWith(element: any, replacementElement: any): any {\n    let parentNode = element.parentNode;\n    if (!parentNode) throw `Can't replace element`;\n    return parentNode.replaceChild(replacementElement, element);\n  }\n\n  public static getUserAgent(): string {\n    return navigator.userAgent;\n  }\n\n  public static isIE() {\n    var ua = window.navigator.userAgent;\n\n    var msie = ua.indexOf('MSIE ');\n    if (msie > 0) {\n      // IE 10 or older => return version number\n      return true;\n    }\n\n    var trident = ua.indexOf('Trident/');\n    if (trident > 0) {\n      // IE 11 => return version number\n      var rv = ua.indexOf('rv:');\n      return true;\n    }\n\n    var edge = ua.indexOf('Edge/');\n    if (edge > 0) {\n      // Edge (IE 12+) => return version number\n      return true;\n    }\n\n    // other browser\n    return false;\n  }\n\n  public static isIOS() {\n    return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n  }\n\n  public static isAndroid() {\n    return /(android)/i.test(navigator.userAgent);\n  }\n\n  public static isTouchDevice() {\n    return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n  }\n\n  public static appendChild(element: any, target: any) {\n    if (this.isElement(target)) target.appendChild(element);\n    else if (target.el && target.el.nativeElement) target.el.nativeElement.appendChild(element);\n    else throw 'Cannot append ' + target + ' to ' + element;\n  }\n\n  public static removeChild(element: any, target: any) {\n    if (this.isElement(target)) target.removeChild(element);\n    else if (target.el && target.el.nativeElement) target.el.nativeElement.removeChild(element);\n    else throw 'Cannot remove ' + element + ' from ' + target;\n  }\n\n  public static removeElement(element: Element) {\n    if (!('remove' in Element.prototype)) element.parentNode.removeChild(element);\n    else element.remove();\n  }\n\n  public static isElement(obj: any) {\n    return typeof HTMLElement === 'object'\n      ? obj instanceof HTMLElement\n      : obj && typeof obj === 'object' && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === 'string';\n  }\n\n  public static calculateScrollbarWidth(el?: HTMLElement): number {\n    if (el) {\n      let style = getComputedStyle(el);\n      return el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth);\n    } else {\n      if (this.calculatedScrollbarWidth !== null) return this.calculatedScrollbarWidth;\n\n      let scrollDiv = document.createElement('div');\n      scrollDiv.className = 'p-scrollbar-measure';\n      document.body.appendChild(scrollDiv);\n\n      let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n\n      this.calculatedScrollbarWidth = scrollbarWidth;\n\n      return scrollbarWidth;\n    }\n  }\n\n  public static calculateScrollbarHeight(): number {\n    if (this.calculatedScrollbarHeight !== null) return this.calculatedScrollbarHeight;\n\n    let scrollDiv = document.createElement('div');\n    scrollDiv.className = 'p-scrollbar-measure';\n    document.body.appendChild(scrollDiv);\n\n    let scrollbarHeight = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n    document.body.removeChild(scrollDiv);\n\n    this.calculatedScrollbarWidth = scrollbarHeight;\n\n    return scrollbarHeight;\n  }\n\n  public static invokeElementMethod(element: any, methodName: string, args?: any[]): void {\n    (element as any)[methodName].apply(element, args);\n  }\n\n  public static clearSelection(): void {\n    if (window.getSelection) {\n      if (window.getSelection().empty) {\n        window.getSelection().empty();\n      } else if (\n        window.getSelection().removeAllRanges &&\n        window.getSelection().rangeCount > 0 &&\n        window.getSelection().getRangeAt(0).getClientRects().length > 0\n      ) {\n        window.getSelection().removeAllRanges();\n      }\n    } else if (document['selection'] && document['selection'].empty) {\n      try {\n        document['selection'].empty();\n      } catch (error) {\n        //ignore IE bug\n      }\n    }\n  }\n\n  public static getBrowser() {\n    if (!this.browser) {\n      let matched = this.resolveUserAgent();\n      this.browser = {};\n\n      if (matched.browser) {\n        this.browser[matched.browser] = true;\n        this.browser['version'] = matched.version;\n      }\n\n      if (this.browser['chrome']) {\n        this.browser['webkit'] = true;\n      } else if (this.browser['webkit']) {\n        this.browser['safari'] = true;\n      }\n    }\n\n    return this.browser;\n  }\n\n  public static resolveUserAgent() {\n    let ua = navigator.userAgent.toLowerCase();\n    let match =\n      /(chrome)[ \\/]([\\w.]+)/.exec(ua) ||\n      /(webkit)[ \\/]([\\w.]+)/.exec(ua) ||\n      /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) ||\n      /(msie) ([\\w.]+)/.exec(ua) ||\n      (ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua)) ||\n      [];\n\n    return {\n      browser: match[1] || '',\n      version: match[2] || '0'\n    };\n  }\n\n  public static isInteger(value): boolean {\n    if (Number.isInteger) {\n      return Number.isInteger(value);\n    } else {\n      return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n    }\n  }\n\n  public static isHidden(element: HTMLElement): boolean {\n    return !element || element.offsetParent === null;\n  }\n\n  public static isVisible(element: HTMLElement) {\n    return element && element.offsetParent != null;\n  }\n\n  public static isExist(element: HTMLElement) {\n    return element !== null && typeof element !== 'undefined' && element.nodeName && element.parentNode;\n  }\n\n  public static focus(element: HTMLElement, options?: FocusOptions): void {\n    element && document.activeElement !== element && element.focus(options);\n  }\n\n  public static getFocusableElements(element: HTMLElement) {\n    let focusableElements = DomHandler.find(\n      element,\n      `button:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n                [href][clientHeight][clientWidth]:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n                input:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), select:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n                textarea:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), [tabIndex]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n                [contenteditable]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]):not(.p-disabled)`\n    );\n\n    let visibleFocusableElements = [];\n    for (let focusableElement of focusableElements) {\n      if (getComputedStyle(focusableElement).display != 'none' && getComputedStyle(focusableElement).visibility != 'hidden')\n        visibleFocusableElements.push(focusableElement);\n    }\n    return visibleFocusableElements;\n  }\n\n  static generateZIndex() {\n    this.zindex = this.zindex || 999;\n    return ++this.zindex;\n  }\n\n  public static getSelection() {\n    if (window.getSelection) return window.getSelection().toString();\n    else if (document.getSelection) return document.getSelection().toString();\n    else if (document['selection']) return document['selection'].createRange().text;\n\n    return null;\n  }\n\n  public static getTargetElement(target: any, el?: HTMLElement) {\n    if (!target) return null;\n\n    switch (target) {\n      case 'document':\n        return document;\n      case 'window':\n        return window;\n      case '@next':\n        return el?.nextElementSibling;\n      case '@prev':\n        return el?.previousElementSibling;\n      case '@parent':\n        return el?.parentElement;\n      case '@grandparent':\n        return el?.parentElement.parentElement;\n      default:\n        const type = typeof target;\n\n        if (type === 'string') {\n          return document.querySelector(target);\n        } else if (type === 'object' && target.hasOwnProperty('nativeElement')) {\n          return this.isExist(target.nativeElement) ? target.nativeElement : undefined;\n        }\n\n        const isFunction = (obj: any) => !!(obj && obj.constructor && obj.call && obj.apply);\n        const element = isFunction(target) ? target() : target;\n\n        return (element && element.nodeType === 9) || this.isExist(element) ? element : null;\n    }\n  }\n}\n","import { DomHandler } from './domhandler';\n\nexport class ConnectedOverlayScrollHandler {\n  element: any;\n\n  listener: any;\n\n  scrollableParents: any;\n\n  constructor(element: any, listener: any = () => {}) {\n    this.element = element;\n    this.listener = listener;\n  }\n\n  bindScrollListener() {\n    this.scrollableParents = DomHandler.getScrollableParents(this.element);\n    for (let i = 0; i < this.scrollableParents.length; i++) {\n      this.scrollableParents[i].addEventListener('scroll', this.listener);\n    }\n  }\n\n  unbindScrollListener() {\n    if (this.scrollableParents) {\n      for (let i = 0; i < this.scrollableParents.length; i++) {\n        this.scrollableParents[i].removeEventListener('scroll', this.listener);\n      }\n    }\n  }\n\n  destroy() {\n    this.unbindScrollListener();\n    this.element = null;\n    this.listener = null;\n    this.scrollableParents = null;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}