{"version":3,"file":"ngx-bootstrap-utils.mjs","sources":["../../../../src/utils/trigger.class.ts","../../../../src/utils/triggers.ts","../../../../src/utils/facade/browser.ts","../../../../src/utils/theme-provider.ts","../../../../src/utils/linked-list.class.ts","../../../../src/utils/decorators.ts","../../../../src/utils/utils.class.ts","../../../../src/utils/warn-once.ts","../../../../src/utils/ngx-bootstrap-utils.ts"],"sourcesContent":["/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\n\nexport class Trigger {\n  open: string;\n  close?: string;\n\n  constructor(open: string, close?: string) {\n    this.open = open;\n    this.close = close || open;\n  }\n\n  isManual(): boolean {\n    return this.open === 'manual' || this.close === 'manual';\n  }\n}\n","/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\nimport { Renderer2 } from '@angular/core';\nimport { Trigger } from './trigger.class';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type BsEventCallback = (event?: any) => boolean | void;\n\nexport interface ListenOptions {\n  target?: HTMLElement;\n  targets?: HTMLElement[];\n  triggers?: string;\n  outsideClick?: boolean;\n  outsideEsc?: boolean;\n  show?: BsEventCallback;\n  hide?: BsEventCallback;\n  toggle?: BsEventCallback;\n}\n\nconst DEFAULT_ALIASES = {\n  hover: ['mouseover', 'mouseout'],\n  focus: ['focusin', 'focusout']\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function parseTriggers(triggers?: string, aliases: any = DEFAULT_ALIASES): Trigger[] {\n  const trimmedTriggers = (triggers || '').trim();\n\n  if (trimmedTriggers.length === 0) {\n    return [];\n  }\n\n  const parsedTriggers = trimmedTriggers\n    .split(/\\s+/)\n    .map((trigger: string) => trigger.split(':'))\n    .map((triggerPair: string[]) => {\n      const alias = aliases[triggerPair[0]] || triggerPair;\n\n      return new Trigger(alias[0], alias[1]);\n    });\n\n  const manualTriggers = parsedTriggers.filter((triggerPair: Trigger) =>\n    triggerPair.isManual()\n  );\n\n  if (manualTriggers.length > 1) {\n    throw new Error('Triggers parse error: only one manual trigger is allowed');\n  }\n\n  if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n    throw new Error('Triggers parse error: manual trigger can\\'t be mixed with other triggers');\n  }\n\n  return parsedTriggers;\n}\n\nexport function listenToTriggers(renderer: Renderer2,\n                                 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                                 target: any,\n                                 triggers: string,\n                                 showFn: BsEventCallback,\n                                 hideFn: BsEventCallback,\n                                 toggleFn: BsEventCallback): () => void {\n  const parsedTriggers = parseTriggers(triggers);\n  const listeners: Array<() => void> = [];\n\n  if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n    return Function.prototype as () => void;\n  }\n\n  parsedTriggers.forEach((trigger: Trigger) => {\n    if (trigger.open === trigger.close) {\n      listeners.push(renderer.listen(target, trigger.open, toggleFn));\n\n      return;\n    }\n\n    listeners.push(renderer.listen(target, trigger.open, showFn));\n    if (trigger.close) {\n      listeners.push(renderer.listen(target, trigger.close, hideFn));\n    }\n  });\n\n  return () => {\n    listeners.forEach((unsubscribeFn) => unsubscribeFn());\n  };\n}\n\nexport function listenToTriggersV2(renderer: Renderer2,\n                                   options: ListenOptions): () => void {\n  const parsedTriggers = parseTriggers(options.triggers);\n  const target = options.target;\n  // do nothing\n  if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n    return Function.prototype as () => void;\n  }\n\n  // all listeners\n  const listeners: Array<() => void> = [];\n\n  // lazy listeners registration\n  const _registerHide: Array<() => () => void> = [];\n  const registerHide = () => {\n    // add hide listeners to unregister array\n    _registerHide.forEach((fn) => listeners.push(fn()));\n    // register hide events only once\n    _registerHide.length = 0;\n  };\n\n  // register open\\close\\toggle listeners\n  parsedTriggers.forEach((trigger: Trigger) => {\n    const useToggle = trigger.open === trigger.close;\n    const showFn = useToggle ? options.toggle : options.show;\n\n    if (!useToggle && trigger.close && options.hide) {\n      const triggerClose = trigger.close;\n      const optionsHide = options.hide;\n      const _hide = () => renderer.listen(target, triggerClose, optionsHide);\n      _registerHide.push(_hide);\n    }\n\n    if (showFn) {\n      listeners.push(renderer.listen(target, trigger.open, () => showFn(registerHide)));\n    }\n  });\n\n  return () => {\n    listeners.forEach((unsubscribeFn: () => void) => unsubscribeFn());\n  };\n}\n\nexport function registerOutsideClick(renderer: Renderer2,\n                                     options: ListenOptions) {\n  if (!options.outsideClick) {\n    return Function.prototype;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return renderer.listen('document', 'click', (event: any) => {\n    if (options.target && options.target.contains(event.target)) {\n      return;\n    }\n    if (\n      options.targets &&\n      options.targets.some(target => target.contains(event.target))\n    ) {\n      return;\n    }\n\n    if (options.hide) {\n      options.hide();\n    }\n  });\n}\n\nexport function registerEscClick(renderer: Renderer2,\n                                 options: ListenOptions) {\n  if (!options.outsideEsc) {\n    return Function.prototype;\n  }\n\n  return renderer.listen('document', 'keyup.esc', (event) => {\n    if (options.target && options.target.contains(event.target)) {\n      return;\n    }\n    if (\n      options.targets &&\n      options.targets.some(target => target.contains(event.target))\n    ) {\n      return;\n    }\n\n    if (options.hide) {\n      options.hide();\n    }\n  });\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * JS version of browser APIs. This library can only run in the browser.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst win = (typeof window !== 'undefined' && window) || {} as any;\n\nexport { win as window };\nexport const document = win.document;\nexport const location = win.location;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const gc = win.gc ? () => win.gc() : (): any => null;\nexport const performance = win.performance ? win.performance : null;\nexport const Event = win.Event;\nexport const MouseEvent = win.MouseEvent;\nexport const KeyboardEvent = win.KeyboardEvent;\nexport const EventTarget = win.EventTarget;\nexport const History = win.History;\nexport const Location = win.Location;\nexport const EventListener = win.EventListener;\n","import { window } from './facade/browser';\n\nexport type AvailableBsVersions = 'bs4' | 'bs5';\n\ninterface IObjectKeys {\n  [key: string]: boolean;\n}\n\nexport interface IBsVersion extends IObjectKeys{\n  isBs4: boolean;\n  isBs5: boolean;\n}\n\nexport enum BsVerions {\n  isBs4 = 'bs4',\n  isBs5 = 'bs5'\n}\n\nlet guessedVersion: AvailableBsVersions;\n\nfunction _guessBsVersion(): AvailableBsVersions {\n  const spanEl = window.document.createElement('span');\n  spanEl.innerText = 'testing bs version';\n  spanEl.classList.add('d-none');\n  spanEl.classList.add('pl-1');\n  window.document.head.appendChild(spanEl);\n  const checkPadding = window.getComputedStyle(spanEl).paddingLeft;\n\n  if (checkPadding && parseFloat(checkPadding)) {\n    window.document.head.removeChild(spanEl);\n    return 'bs4';\n  }\n\n  window.document.head.removeChild(spanEl);\n  return 'bs5';\n}\n\nexport function setTheme(theme: AvailableBsVersions): void {\n  guessedVersion = theme;\n}\n\nexport function isBs4(): boolean {\n  if (guessedVersion) return guessedVersion === 'bs4';\n\n  guessedVersion = _guessBsVersion();\n  return guessedVersion === 'bs4';\n}\n\nexport function isBs5(): boolean {\n  if (guessedVersion) return guessedVersion === 'bs5';\n\n  guessedVersion = _guessBsVersion();\n  return guessedVersion === 'bs5';\n}\n\nexport function getBsVer(): IBsVersion {\n  return {\n    isBs4: isBs4(),\n    isBs5: isBs5()\n  };\n}\n\nexport function currentBsVersion(): AvailableBsVersions {\n  const bsVer = getBsVer();\n  const resVersion = Object.keys(bsVer).find(key => bsVer[key]);\n  return BsVerions[resVersion as keyof typeof BsVerions];\n}\n\n\n","interface ListNode<T> {\n  value: T,\n  next?: ListNode<T>,\n  previous?: ListNode<T>\n}\n\nexport class LinkedList<T> {\n  length = 0;\n  protected head?: ListNode<T>;\n  protected tail?: ListNode<T>;\n  protected current?: ListNode<T>;\n  protected asArray: T[] = [];\n\n  get(position: number): T | undefined {\n    if (this.length === 0 || position < 0 || position >= this.length) {\n      return void 0;\n    }\n\n    let current = this.head;\n\n    for (let index = 0; index < position; index++) {\n      current = current?.next;\n    }\n\n    return current?.value;\n  }\n\n  add(value: T, position: number = this.length): void {\n    if (position < 0 || position > this.length) {\n      throw new Error('Position is out of the list');\n    }\n\n    const node: ListNode<T> = {\n      value,\n      next: undefined,\n      previous: undefined\n    };\n\n    if (this.length === 0) {\n      this.head = node;\n      this.tail = node;\n      this.current = node;\n    } else {\n      if (position === 0 && this.head) {\n        // first node\n        node.next = this.head;\n        this.head.previous = node;\n        this.head = node;\n      } else if (position === this.length && this.tail) {\n        // last node\n        this.tail.next = node;\n        node.previous = this.tail;\n        this.tail = node;\n      } else {\n        // node in middle\n        const currentPreviousNode = this.getNode(position - 1);\n        const currentNextNode = currentPreviousNode?.next;\n        if (currentPreviousNode && currentNextNode) {\n          currentPreviousNode.next = node;\n          currentNextNode.previous = node;\n          node.previous = currentPreviousNode;\n          node.next = currentNextNode;\n        }\n      }\n    }\n    this.length++;\n    this.createInternalArrayRepresentation();\n  }\n\n  remove(position = 0): void {\n    if (this.length === 0 || position < 0 || position >= this.length) {\n      throw new Error('Position is out of the list');\n    }\n\n    if (position === 0 && this.head) {\n      // first node\n      this.head = this.head.next;\n\n      if (this.head) {\n        // there is no second node\n        this.head.previous = undefined;\n      } else {\n        // there is no second node\n        this.tail = undefined;\n      }\n    } else if (position === this.length - 1 && this.tail?.previous) {\n      // last node\n      this.tail = this.tail.previous;\n      this.tail.next = undefined;\n    } else {\n      // middle node\n      const removedNode = this.getNode(position);\n      if (removedNode?.next && removedNode.previous) {\n        removedNode.next.previous = removedNode.previous;\n        removedNode.previous.next = removedNode.next;\n      }\n    }\n\n    this.length--;\n    this.createInternalArrayRepresentation();\n  }\n\n  set(position: number, value: T): void {\n    if (this.length === 0 || position < 0 || position >= this.length) {\n      throw new Error('Position is out of the list');\n    }\n\n    const node = this.getNode(position);\n    if (node) {\n      node.value = value;\n      this.createInternalArrayRepresentation();\n    }\n  }\n\n  toArray(): T[] {\n    return this.asArray;\n  }\n\n  findAll(fn: (value: T, index: number) => boolean): { index: number, value: T }[] {\n    let current = this.head;\n    const result: { index: number, value: T }[] = [];\n\n    if (!current) {\n      return result;\n    }\n\n    for (let index = 0; index < this.length; index++) {\n      if (!current) {\n        return result;\n      }\n      if (fn(current.value, index)) {\n        result.push({ index, value: current.value });\n      }\n      current = current.next;\n\n    }\n\n    return result;\n  }\n\n  // Array methods overriding start\n  push(...args: T[]): number {\n    args.forEach((arg: T) => {\n      this.add(arg);\n    });\n\n    return this.length;\n  }\n\n  pop(): T | undefined {\n    if (this.length === 0) {\n      return undefined;\n    }\n    const last = this.tail;\n    this.remove(this.length - 1);\n\n    return last?.value;\n  }\n\n  unshift(...args: T[]): number {\n    args.reverse();\n    args.forEach((arg: T) => {\n      this.add(arg, 0);\n    });\n\n    return this.length;\n  }\n\n  shift(): T | undefined {\n    if (this.length === 0) {\n      return undefined;\n    }\n    const lastItem = this.head?.value;\n    this.remove();\n\n    return lastItem;\n  }\n\n  forEach(fn: (value: T, index: number) => void): void {\n    let current = this.head;\n    for (let index = 0; index < this.length; index++) {\n      if (!current) {\n        return;\n      }\n      fn(current.value, index);\n      current = current.next;\n    }\n  }\n\n  indexOf(value: T): number {\n    let current = this.head;\n    let position = -1;\n\n    for (let index = 0; index < this.length; index++) {\n      if (!current) {\n        return position;\n      }\n      if (current.value === value) {\n        position = index;\n        break;\n      }\n      current = current.next;\n    }\n\n    return position;\n  }\n\n  some(fn: (value: T) => boolean): boolean {\n    let current = this.head;\n    let result = false;\n    while (current && !result) {\n      if (fn(current.value)) {\n        result = true;\n        break;\n      }\n      current = current.next;\n    }\n\n    return result;\n  }\n\n  every(fn: (value: T) => boolean): boolean {\n    let current = this.head;\n    let result = true;\n    while (current && result) {\n      if (!fn(current.value)) {\n        result = false;\n      }\n      current = current.next;\n    }\n\n    return result;\n  }\n\n  toString(): string {\n    return '[Linked List]';\n  }\n\n  find(fn: (value: T, index: number) => boolean): T | void {\n    let current = this.head;\n    for (let index = 0; index < this.length; index++) {\n      if (!current) {\n        return;\n      }\n      if (fn(current.value, index)) {\n        return current.value;\n      }\n      current = current.next;\n    }\n  }\n\n  findIndex(fn: (value: T, index: number) => boolean): number {\n    let current = this.head;\n    for (let index = 0; index < this.length; index++) {\n      if (!current) {\n        return -1;\n      }\n\n      if (fn(current.value, index)) {\n        return index;\n      }\n\n      current = current.next;\n    }\n\n    return -1;\n  }\n\n  protected getNode(position: number): ListNode<T>|undefined {\n    if (this.length === 0 || position < 0 || position >= this.length) {\n      throw new Error('Position is out of the list');\n    }\n\n    let current = this.head;\n\n    for (let index = 0; index < position; index++) {\n      current = current?.next;\n    }\n\n    return current;\n  }\n\n  protected createInternalArrayRepresentation(): void {\n    const outArray: T[] = [];\n    let current = this.head;\n\n    while (current) {\n      outArray.push(current.value);\n      current = current.next;\n    }\n    this.asArray = outArray;\n  }\n\n  // Array methods overriding END\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function OnChange(): any {\n  const sufix = 'Change';\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function OnChangeHandler(target: any, propertyKey: string): void {\n    const _key = ` __${propertyKey}Value`;\n    Object.defineProperty(target, propertyKey, {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      get(): any {\n        return this[_key];\n      },\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      set(value: any): void {\n        const prevValue = this[_key];\n        this[_key] = value;\n        if (prevValue !== value && this[propertyKey + sufix]) {\n          this[propertyKey + sufix].emit(value);\n        }\n      }\n    });\n  };\n}\n","import { window } from './facade/browser';\nimport { currentBsVersion } from './theme-provider';\n\nexport class Utils {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  static reflow(element: any): void {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    ((bs: any): void => bs)(element.offsetHeight);\n  }\n\n  // source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  static getStyles(elem: any): any {\n    // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n    // IE throws on elements created in popups\n    // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n    let view = elem.ownerDocument.defaultView;\n\n    if (!view || !view.opener) {\n      view = window;\n    }\n\n    return view.getComputedStyle(elem);\n  }\n\n   static stackOverflowConfig(): { crossorigin?: string, integrity?: string, cdnLink: string } {\n    const bsVer = currentBsVersion();\n      return {\n      crossorigin: \"anonymous\",\n      integrity: bsVer === 'bs5' ? 'sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65' : 'sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2',\n      cdnLink: bsVer === 'bs5' ? 'https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css' : 'https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css',\n    };\n   }\n}\n","import { isDevMode } from '@angular/core';\nconst _messagesHash: { [key: string]: boolean } = {};\nconst _hideMsg = typeof console === 'undefined' || !('warn' in console);\n\nexport function warnOnce(msg: string): void {\n  if (!isDevMode() || _hideMsg || msg in _messagesHash) {\n    return;\n  }\n\n  _messagesHash[msg] = true;\n    console.warn(msg);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["window"],"mappings":"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"}