UNPKG

29 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../../../src/utils/trigger.class.ts","../../../../src/utils/triggers.ts","../../../../src/utils/theme-provider.ts","../../../../src/utils/facade/browser.ts","../../../../src/utils/linked-list.class.ts","../../../../src/utils/utils.class.ts","../../../../src/utils/warn-once.ts","../../../../src/utils/decorators.ts"],"names":["Trigger","open","close","this","prototype","isManual","DEFAULT_ALIASES","hover","focus","parseTriggers","triggers","aliases","trimmedTriggers","trim","length","parsedTriggers","split","map","trigger","triggerPair","alias","manualTriggers","filter","Error","BsVerions","guessedVersion","win","window","document","location","gc","performance","Event","MouseEvent","KeyboardEvent","EventTarget","History","Location","EventListener","_guessBsVersion","spanEl","createElement","innerText","classList","add","head","appendChild","rect","getBoundingClientRect","overflowStyle","getComputedStyle","overflow","removeChild","top","isBs3","__theme","isBs4","isBs5","getBsVer","currentBsVersion","bsVer","resVersion","Object","keys","find","key","LinkedList","asArray","get","position","current","index","next","value","node","undefined","previous","tail","currentPreviousNode","getNode","currentNextNode","createInternalArrayRepresentation","remove","_a","removedNode","set","toArray","findAll","fn","result","push","_this","args","_i","arguments","forEach","arg","pop","last","unshift","reverse","shift","lastItem","indexOf","some","every","toString","findIndex","outArray","Utils","reflow","element","offsetHeight","getStyles","elem","view","ownerDocument","defaultView","opener","stackOverflowConfig","crossorigin","integrity","cdnLink","_messagesHash","_hideMsg","console","sufix","target","propertyKey","_key","defineProperty","prevValue","emit","renderer","showFn","hideFn","toggleFn","listeners","Function","listen","unsubscribeFn","options","_registerHide","registerHide","useToggle","toggle","show","hide","_hide_1","outsideEsc","event","contains","targets","outsideClick","theme","msg","isDevMode","warn"],"mappings":"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","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 _hide = renderer.listen(target, trigger.close, options.hide);\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","import { window } from './facade/browser';\n\nexport type AvailableBsVersions = 'bs3' | 'bs4' | 'bs5';\n\ninterface IObjectKeys {\n [key: string]: boolean;\n}\n\nexport interface IBsVersion extends IObjectKeys{\n isBs3: boolean;\n isBs4: boolean;\n isBs5: boolean;\n}\n\nexport enum BsVerions {\n isBs3 = 'bs3',\n isBs4 = 'bs4',\n isBs5 = 'bs5'\n}\n\nlet guessedVersion: AvailableBsVersions;\n\nfunction _guessBsVersion(): AvailableBsVersions {\n if (typeof window.document === 'undefined') {\n return 'bs4';\n }\n const spanEl = window.document.createElement('span');\n spanEl.innerText = 'testing bs version';\n spanEl.classList.add('d-none');\n spanEl.classList.add('visually-hidden');\n window.document.head.appendChild(spanEl);\n const rect = spanEl.getBoundingClientRect();\n const overflowStyle = window.getComputedStyle(spanEl).overflow;\n window.document.head.removeChild(spanEl);\n if (!rect || (rect && rect.top !== 0)) {\n return 'bs3';\n }\n if (overflowStyle && overflowStyle === 'hidden') {\n return 'bs5';\n }\n return 'bs4';\n}\n\nexport function setTheme(theme: AvailableBsVersions): void {\n guessedVersion = theme;\n}\n\n// todo: in ngx-bootstrap, bs4 will became a default one\nexport function isBs3(): boolean {\n if (typeof window === 'undefined') {\n return true;\n }\n\n if (typeof window.__theme === 'undefined') {\n if (guessedVersion) {\n return guessedVersion === 'bs3';\n }\n guessedVersion = _guessBsVersion();\n\n return guessedVersion === 'bs3';\n }\n\n return window.__theme === 'bs3';\n}\n\nexport function isBs4(): boolean {\n if (isBs3()) return false;\n\n if (guessedVersion) return guessedVersion === 'bs4';\n\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs4';\n}\n\nexport function isBs5(): boolean {\n if (isBs3() || isBs4()) return false;\n\n if (guessedVersion) return guessedVersion === 'bs5';\n\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs5';\n}\n\nexport function getBsVer(): IBsVersion {\n return {\n isBs3: isBs3(),\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","/**\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","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;\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","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: bsVer !== 'bs3' ? \"anonymous\" : undefined,\n integrity: bsVer === 'bs5' ? 'sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We' : bsVer === 'bs4' ? 'sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2' : undefined,\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',\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","// 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"]}
\No newline at end of file