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