ngx-bootstrap 3.1.3 → 3.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/CONTRIBUTING.md +1 -1
  3. package/README.md +5 -5
  4. package/accordion/package.json +1 -1
  5. package/alert/package.json +1 -1
  6. package/bundles/ngx-bootstrap.es2015.js +117 -23
  7. package/bundles/ngx-bootstrap.es2015.js.map +1 -1
  8. package/buttons/package.json +1 -1
  9. package/carousel/package.json +1 -1
  10. package/chronos/package.json +1 -1
  11. package/collapse/package.json +1 -1
  12. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js +10 -1
  13. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js.map +1 -1
  14. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js +1 -1
  15. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js.map +1 -1
  16. package/component-loader/esm2015/component-loader.class.js +11 -2
  17. package/component-loader/esm2015/listen-options.model.js +3 -1
  18. package/component-loader/esm5/component-loader.class.js +11 -2
  19. package/component-loader/esm5/listen-options.model.js +3 -1
  20. package/component-loader/fesm2015/ngx-bootstrap-component-loader.js +11 -2
  21. package/component-loader/fesm2015/ngx-bootstrap-component-loader.js.map +1 -1
  22. package/component-loader/fesm5/ngx-bootstrap-component-loader.js +11 -2
  23. package/component-loader/fesm5/ngx-bootstrap-component-loader.js.map +1 -1
  24. package/component-loader/listen-options.model.d.ts +1 -0
  25. package/component-loader/ngx-bootstrap-component-loader.metadata.json +1 -1
  26. package/component-loader/package.json +1 -1
  27. package/datepicker/bs-datepicker.component.d.ts +1 -0
  28. package/datepicker/bs-datepicker.config.d.ts +4 -0
  29. package/datepicker/bs-datepicker.css +5 -6
  30. package/datepicker/bs-datepicker.css.map +2 -2
  31. package/datepicker/bs-datepicker.module.d.ts +0 -1
  32. package/datepicker/bs-datepicker.scss +7 -8
  33. package/datepicker/bs-daterangepicker.component.d.ts +1 -0
  34. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js +42 -9
  35. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js.map +1 -1
  36. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js +1 -1
  37. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js.map +1 -1
  38. package/datepicker/esm2015/bs-datepicker-input.directive.js +2 -1
  39. package/datepicker/esm2015/bs-datepicker.component.js +6 -1
  40. package/datepicker/esm2015/bs-datepicker.config.js +6 -1
  41. package/datepicker/esm2015/bs-datepicker.module.js +1 -9
  42. package/datepicker/esm2015/bs-daterangepicker-input.directive.js +9 -4
  43. package/datepicker/esm2015/bs-daterangepicker.component.js +6 -1
  44. package/datepicker/esm2015/engine/flag-days-calendar.js +5 -2
  45. package/datepicker/esm2015/models/index.js +3 -1
  46. package/datepicker/esm2015/themes/bs/bs-datepicker-day-decorator.directive.js +32 -2
  47. package/datepicker/esm5/bs-datepicker-input.directive.js +2 -1
  48. package/datepicker/esm5/bs-datepicker.component.js +6 -1
  49. package/datepicker/esm5/bs-datepicker.config.js +6 -1
  50. package/datepicker/esm5/bs-datepicker.module.js +1 -5
  51. package/datepicker/esm5/bs-daterangepicker-input.directive.js +9 -4
  52. package/datepicker/esm5/bs-daterangepicker.component.js +6 -1
  53. package/datepicker/esm5/engine/flag-days-calendar.js +5 -2
  54. package/datepicker/esm5/models/index.js +3 -1
  55. package/datepicker/esm5/themes/bs/bs-datepicker-day-decorator.directive.js +29 -3
  56. package/datepicker/fesm2015/ngx-bootstrap-datepicker.js +44 -13
  57. package/datepicker/fesm2015/ngx-bootstrap-datepicker.js.map +1 -1
  58. package/datepicker/fesm5/ngx-bootstrap-datepicker.js +41 -10
  59. package/datepicker/fesm5/ngx-bootstrap-datepicker.js.map +1 -1
  60. package/datepicker/models/index.d.ts +1 -0
  61. package/datepicker/ngx-bootstrap-datepicker.metadata.json +1 -1
  62. package/datepicker/package.json +1 -1
  63. package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +8 -1
  64. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js +3 -1
  65. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js.map +1 -1
  66. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js +1 -1
  67. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js.map +1 -1
  68. package/dropdown/esm2015/bs-dropdown.directive.js +3 -1
  69. package/dropdown/esm5/bs-dropdown.directive.js +3 -1
  70. package/dropdown/fesm2015/ngx-bootstrap-dropdown.js +3 -1
  71. package/dropdown/fesm2015/ngx-bootstrap-dropdown.js.map +1 -1
  72. package/dropdown/fesm5/ngx-bootstrap-dropdown.js +3 -1
  73. package/dropdown/fesm5/ngx-bootstrap-dropdown.js.map +1 -1
  74. package/dropdown/package.json +1 -1
  75. package/locale/package.json +1 -1
  76. package/mini-ngrx/package.json +1 -1
  77. package/modal/package.json +1 -1
  78. package/package.json +2 -2
  79. package/pagination/package.json +1 -1
  80. package/popover/bundles/ngx-bootstrap-popover.umd.js +2 -2
  81. package/popover/bundles/ngx-bootstrap-popover.umd.js.map +1 -1
  82. package/popover/bundles/ngx-bootstrap-popover.umd.min.js +1 -1
  83. package/popover/bundles/ngx-bootstrap-popover.umd.min.js.map +1 -1
  84. package/popover/esm2015/popover-container.component.js +3 -3
  85. package/popover/esm5/popover-container.component.js +2 -2
  86. package/popover/fesm2015/ngx-bootstrap-popover.js +3 -3
  87. package/popover/fesm2015/ngx-bootstrap-popover.js.map +1 -1
  88. package/popover/fesm5/ngx-bootstrap-popover.js +2 -2
  89. package/popover/fesm5/ngx-bootstrap-popover.js.map +1 -1
  90. package/popover/ngx-bootstrap-popover.metadata.json +1 -1
  91. package/popover/package.json +1 -1
  92. package/positioning/package.json +1 -1
  93. package/progressbar/package.json +1 -1
  94. package/rating/package.json +1 -1
  95. package/sortable/package.json +1 -1
  96. package/tabs/package.json +1 -1
  97. package/timepicker/package.json +1 -1
  98. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js +10 -4
  99. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js.map +1 -1
  100. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js +1 -1
  101. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js.map +1 -1
  102. package/tooltip/esm2015/tooltip-container.component.js +6 -3
  103. package/tooltip/esm2015/tooltip.directive.js +13 -4
  104. package/tooltip/esm5/tooltip-container.component.js +5 -2
  105. package/tooltip/esm5/tooltip.directive.js +13 -4
  106. package/tooltip/fesm2015/ngx-bootstrap-tooltip.js +12 -6
  107. package/tooltip/fesm2015/ngx-bootstrap-tooltip.js.map +1 -1
  108. package/tooltip/fesm5/ngx-bootstrap-tooltip.js +11 -5
  109. package/tooltip/fesm5/ngx-bootstrap-tooltip.js.map +1 -1
  110. package/tooltip/ngx-bootstrap-tooltip.metadata.json +1 -1
  111. package/tooltip/package.json +1 -1
  112. package/tooltip/tooltip-container.component.d.ts +1 -0
  113. package/tooltip/tooltip.directive.d.ts +2 -0
  114. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js +35 -7
  115. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js.map +1 -1
  116. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js +1 -1
  117. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js.map +1 -1
  118. package/typeahead/esm2015/ngx-bootstrap-typeahead.js +2 -2
  119. package/typeahead/esm2015/public_api.js +2 -1
  120. package/typeahead/esm2015/typeahead.config.js +35 -0
  121. package/typeahead/esm2015/typeahead.directive.js +21 -7
  122. package/typeahead/esm2015/typeahead.module.js +3 -2
  123. package/typeahead/esm5/ngx-bootstrap-typeahead.js +2 -2
  124. package/typeahead/esm5/public_api.js +2 -1
  125. package/typeahead/esm5/typeahead.config.js +37 -0
  126. package/typeahead/esm5/typeahead.directive.js +20 -7
  127. package/typeahead/esm5/typeahead.module.js +3 -2
  128. package/typeahead/fesm2015/ngx-bootstrap-typeahead.js +37 -10
  129. package/typeahead/fesm2015/ngx-bootstrap-typeahead.js.map +1 -1
  130. package/typeahead/fesm5/ngx-bootstrap-typeahead.js +37 -10
  131. package/typeahead/fesm5/ngx-bootstrap-typeahead.js.map +1 -1
  132. package/typeahead/ngx-bootstrap-typeahead.metadata.json +1 -1
  133. package/typeahead/package.json +1 -1
  134. package/typeahead/public_api.d.ts +1 -0
  135. package/typeahead/typeahead.config.d.ts +5 -0
  136. package/typeahead/typeahead.directive.d.ts +4 -1
  137. package/utils/bundles/ngx-bootstrap-utils.umd.js +22 -1
  138. package/utils/bundles/ngx-bootstrap-utils.umd.js.map +1 -1
  139. package/utils/bundles/ngx-bootstrap-utils.umd.min.js +1 -1
  140. package/utils/bundles/ngx-bootstrap-utils.umd.min.js.map +1 -1
  141. package/utils/esm2015/ngx-bootstrap-utils.js +2 -2
  142. package/utils/esm2015/public_api.js +2 -2
  143. package/utils/esm2015/triggers.js +23 -1
  144. package/utils/esm5/ngx-bootstrap-utils.js +2 -2
  145. package/utils/esm5/public_api.js +2 -2
  146. package/utils/esm5/triggers.js +23 -1
  147. package/utils/fesm2015/ngx-bootstrap-utils.js +22 -2
  148. package/utils/fesm2015/ngx-bootstrap-utils.js.map +1 -1
  149. package/utils/fesm5/ngx-bootstrap-utils.js +22 -2
  150. package/utils/fesm5/ngx-bootstrap-utils.js.map +1 -1
  151. package/utils/ngx-bootstrap-utils.metadata.json +1 -1
  152. package/utils/package.json +1 -1
  153. package/utils/public_api.d.ts +1 -1
  154. package/utils/triggers.d.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-bootstrap-utils.umd.js.map","sources":["ng://ngx-bootstrap/utils/trigger.class.ts","ng://ngx-bootstrap/utils/triggers.ts","ng://ngx-bootstrap/utils/facade/browser.ts","ng://ngx-bootstrap/utils/theme-provider.ts","ng://ngx-bootstrap/utils/linked-list.class.ts","ng://ngx-bootstrap/utils/decorators.ts","ng://ngx-bootstrap/utils/utils.class.ts","ng://ngx-bootstrap/utils/warn-once.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/* tslint:disable-next-line: no-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 show?: BsEventCallback;\n hide?: BsEventCallback;\n toggle?: BsEventCallback;\n}\n\nconst DEFAULT_ALIASES = {\n hover: ['mouseover', 'mouseout'],\n focus: ['focusin', 'focusout']\n};\n\n/* tslint:disable-next-line: no-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 /* tslint:disable-next-line: no-any */\n target: any,\n triggers: string,\n showFn: BsEventCallback,\n hideFn: BsEventCallback,\n toggleFn: BsEventCallback): Function {\n const parsedTriggers = parseTriggers(triggers);\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\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(\n renderer.listen(target, trigger.open, showFn),\n renderer.listen(target, trigger.close, hideFn)\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function listenToTriggersV2(renderer: Renderer2,\n options: ListenOptions): Function {\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;\n }\n\n // all listeners\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n // lazy listeners registration\n const _registerHide: Function[] = [];\n const registerHide = () => {\n // add hide listeners to unregister array\n _registerHide.forEach((fn: Function) => 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) {\n _registerHide.push(() =>\n renderer.listen(target, trigger.close, options.hide)\n );\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, () => showFn(registerHide))\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function registerOutsideClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideClick) {\n return Function.prototype;\n }\n\n /* tslint:disable-next-line: no-any */\n return renderer.listen('document', 'click', (event: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\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 */\nconst win = (typeof window !== 'undefined' && window) || {} as any;\n\nexport { win as window };\nexport const document = win.document;\nexport const location = win.location;\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\nlet guessedVersion: 'bs3' | 'bs4';\n\nfunction _guessBsVersion(): 'bs3' | 'bs4' {\n if (typeof document === 'undefined') {\n return null;\n }\n const spanEl = document.createElement('span');\n spanEl.innerText = 'test bs version';\n document.body.appendChild(spanEl);\n spanEl.classList.add('d-none');\n const rect = spanEl.getBoundingClientRect();\n document.body.removeChild(spanEl);\n if (!rect) {\n return 'bs3';\n }\n\n return rect.top === 0 ? 'bs4' : 'bs3';\n}\n\nexport function setTheme(theme: 'bs3' | 'bs4'): 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 !== 'bs4';\n}\n","export class LinkedList<T> {\n length = 0;\n /* tslint:disable-next-line: no-any*/\n protected head: any;\n /* tslint:disable-next-line: no-any*/\n protected tail: any;\n /* tslint:disable-next-line: no-any*/\n protected current: any;\n protected asArray: T[] = [];\n\n get(position: number): T {\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 /* tslint:disable-next-line: no-any*/\n const node: any = {\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) {\n // first node\n node.next = this.head;\n this.head.previous = node;\n this.head = node;\n } else if (position === this.length) {\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\n currentPreviousNode.next = node;\n currentNextNode.previous = node;\n\n node.previous = currentPreviousNode;\n node.next = currentNextNode;\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) {\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) {\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 removedNode.next.previous = removedNode.previous;\n removedNode.previous.next = removedNode.next;\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 node.value = value;\n this.createInternalArrayRepresentation();\n }\n\n toArray(): T[] {\n return this.asArray;\n }\n\n /* tslint:disable-next-line: no-any*/\n findAll(fn: any): any[] {\n let current = this.head;\n /* tslint:disable-next-line: no-any*/\n const result: any[] = [];\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result.push({index, value: current.value});\n }\n current = current.next;\n }\n\n return result;\n }\n\n // Array methods overriding start\n push(...args: T[]): number {\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg);\n });\n\n return this.length;\n }\n\n pop(): T {\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 /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg, 0);\n });\n\n return this.length;\n }\n\n shift(): T {\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 /* tslint:disable-next-line: no-any*/\n forEach(fn: any): void {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\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 = 0;\n\n for (let index = 0; index < this.length; index++) {\n if (current.value === value) {\n position = index;\n break;\n }\n current = current.next;\n }\n\n return position;\n }\n\n /* tslint:disable-next-line: no-any*/\n some(fn: any): 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 /* tslint:disable-next-line: no-any*/\n every(fn: any): 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 /* tslint:disable-next-line: no-any*/\n find(fn: any): T {\n let current = this.head;\n let result: T;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = current.value;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n findIndex(fn: any): number {\n let current = this.head;\n let result: number;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = index;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n protected getNode(position: number): any {\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 /* tslint:disable-next-line: no-any*/\n const outArray: any[] = [];\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","/*tslint:disable:no-invalid-this */\n/* tslint:disable-next-line: no-any */\nexport function OnChange(defaultValue?: any): any {\n const sufix = 'Change';\n\n /* tslint:disable-next-line: no-any */\n return function OnChangeHandler(target: any, propertyKey: string): void {\n const _key = ` __${propertyKey}Value`;\n Object.defineProperty(target, propertyKey, {\n /* tslint:disable-next-line: no-any */\n get(): any {\n return this[_key];\n },\n /* tslint:disable-next-line: no-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/* tslint:enable */\n","import { window } from './facade/browser';\n\nexport class Utils {\n /* tslint:disable-next-line: no-any */\n static reflow(element: any): void {\n /* tslint:disable-next-line: no-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 /* tslint:disable-next-line: no-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","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 /*tslint:disable-next-line*/\n console.warn(msg);\n}\n"],"names":["document","window","isDevMode"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-bootstrap-utils.umd.js.map","sources":["ng://ngx-bootstrap/utils/trigger.class.ts","ng://ngx-bootstrap/utils/triggers.ts","ng://ngx-bootstrap/utils/facade/browser.ts","ng://ngx-bootstrap/utils/theme-provider.ts","ng://ngx-bootstrap/utils/linked-list.class.ts","ng://ngx-bootstrap/utils/decorators.ts","ng://ngx-bootstrap/utils/utils.class.ts","ng://ngx-bootstrap/utils/warn-once.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/* tslint:disable-next-line: no-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/* tslint:disable-next-line: no-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 /* tslint:disable-next-line: no-any */\n target: any,\n triggers: string,\n showFn: BsEventCallback,\n hideFn: BsEventCallback,\n toggleFn: BsEventCallback): Function {\n const parsedTriggers = parseTriggers(triggers);\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\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(\n renderer.listen(target, trigger.open, showFn),\n renderer.listen(target, trigger.close, hideFn)\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function listenToTriggersV2(renderer: Renderer2,\n options: ListenOptions): Function {\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;\n }\n\n // all listeners\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n // lazy listeners registration\n const _registerHide: Function[] = [];\n const registerHide = () => {\n // add hide listeners to unregister array\n _registerHide.forEach((fn: Function) => 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) {\n _registerHide.push(() =>\n renderer.listen(target, trigger.close, options.hide)\n );\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, () => showFn(registerHide))\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function registerOutsideClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideClick) {\n return Function.prototype;\n }\n\n /* tslint:disable-next-line: no-any */\n return renderer.listen('document', 'click', (event: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\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: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\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 */\nconst win = (typeof window !== 'undefined' && window) || {} as any;\n\nexport { win as window };\nexport const document = win.document;\nexport const location = win.location;\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\nlet guessedVersion: 'bs3' | 'bs4';\n\nfunction _guessBsVersion(): 'bs3' | 'bs4' {\n if (typeof document === 'undefined') {\n return null;\n }\n const spanEl = document.createElement('span');\n spanEl.innerText = 'test bs version';\n document.body.appendChild(spanEl);\n spanEl.classList.add('d-none');\n const rect = spanEl.getBoundingClientRect();\n document.body.removeChild(spanEl);\n if (!rect) {\n return 'bs3';\n }\n\n return rect.top === 0 ? 'bs4' : 'bs3';\n}\n\nexport function setTheme(theme: 'bs3' | 'bs4'): 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 !== 'bs4';\n}\n","export class LinkedList<T> {\n length = 0;\n /* tslint:disable-next-line: no-any*/\n protected head: any;\n /* tslint:disable-next-line: no-any*/\n protected tail: any;\n /* tslint:disable-next-line: no-any*/\n protected current: any;\n protected asArray: T[] = [];\n\n get(position: number): T {\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 /* tslint:disable-next-line: no-any*/\n const node: any = {\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) {\n // first node\n node.next = this.head;\n this.head.previous = node;\n this.head = node;\n } else if (position === this.length) {\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\n currentPreviousNode.next = node;\n currentNextNode.previous = node;\n\n node.previous = currentPreviousNode;\n node.next = currentNextNode;\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) {\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) {\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 removedNode.next.previous = removedNode.previous;\n removedNode.previous.next = removedNode.next;\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 node.value = value;\n this.createInternalArrayRepresentation();\n }\n\n toArray(): T[] {\n return this.asArray;\n }\n\n /* tslint:disable-next-line: no-any*/\n findAll(fn: any): any[] {\n let current = this.head;\n /* tslint:disable-next-line: no-any*/\n const result: any[] = [];\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result.push({index, value: current.value});\n }\n current = current.next;\n }\n\n return result;\n }\n\n // Array methods overriding start\n push(...args: T[]): number {\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg);\n });\n\n return this.length;\n }\n\n pop(): T {\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 /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg, 0);\n });\n\n return this.length;\n }\n\n shift(): T {\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 /* tslint:disable-next-line: no-any*/\n forEach(fn: any): void {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\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 = 0;\n\n for (let index = 0; index < this.length; index++) {\n if (current.value === value) {\n position = index;\n break;\n }\n current = current.next;\n }\n\n return position;\n }\n\n /* tslint:disable-next-line: no-any*/\n some(fn: any): 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 /* tslint:disable-next-line: no-any*/\n every(fn: any): 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 /* tslint:disable-next-line: no-any*/\n find(fn: any): T {\n let current = this.head;\n let result: T;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = current.value;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n findIndex(fn: any): number {\n let current = this.head;\n let result: number;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = index;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n protected getNode(position: number): any {\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 /* tslint:disable-next-line: no-any*/\n const outArray: any[] = [];\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","/*tslint:disable:no-invalid-this */\n/* tslint:disable-next-line: no-any */\nexport function OnChange(defaultValue?: any): any {\n const sufix = 'Change';\n\n /* tslint:disable-next-line: no-any */\n return function OnChangeHandler(target: any, propertyKey: string): void {\n const _key = ` __${propertyKey}Value`;\n Object.defineProperty(target, propertyKey, {\n /* tslint:disable-next-line: no-any */\n get(): any {\n return this[_key];\n },\n /* tslint:disable-next-line: no-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/* tslint:enable */\n","import { window } from './facade/browser';\n\nexport class Utils {\n /* tslint:disable-next-line: no-any */\n static reflow(element: any): void {\n /* tslint:disable-next-line: no-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 /* tslint:disable-next-line: no-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","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 /*tslint:disable-next-line*/\n console.warn(msg);\n}\n"],"names":["document","window","isDevMode"],"mappings":"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"}
@@ -6,5 +6,5 @@
6
6
  * Use of this source code is governed by an MIT-style license that can be
7
7
  * found in the LICENSE file at https://angular.io/license
8
8
  */
9
- var r,i="undefined"!=typeof window&&window||{},n=i.document;i.location,i.gc,i.performance&&i.performance,i.Event,i.MouseEvent,i.KeyboardEvent,i.EventTarget,i.History,i.Location,i.EventListener;var u=function(){function t(){this.length=0,this.asArray=[]}return t.prototype.get=function(t){if(!(0===this.length||t<0||t>=this.length)){for(var e=this.head,n=0;n<t;n++)e=e.next;return e.value}},t.prototype.add=function(t,e){if(void 0===e&&(e=this.length),e<0||e>this.length)throw new Error("Position is out of the list");var n={value:t,next:undefined,previous:undefined};if(0===this.length)this.head=n,this.tail=n,this.current=n;else if(0===e)n.next=this.head,this.head.previous=n,this.head=n;else if(e===this.length)(this.tail.next=n).previous=this.tail,this.tail=n;else{var r=this.getNode(e-1),i=r.next;r.next=n,(i.previous=n).previous=r,n.next=i}this.length++,this.createInternalArrayRepresentation()},t.prototype.remove=function(t){if(void 0===t&&(t=0),0===this.length||t<0||t>=this.length)throw new Error("Position is out of the list");if(0===t)this.head=this.head.next,this.head?this.head.previous=undefined:this.tail=undefined;else if(t===this.length-1)this.tail=this.tail.previous,this.tail.next=undefined;else{var e=this.getNode(t);e.next.previous=e.previous,e.previous.next=e.next}this.length--,this.createInternalArrayRepresentation()},t.prototype.set=function(t,e){if(0===this.length||t<0||t>=this.length)throw new Error("Position is out of the list");this.getNode(t).value=e,this.createInternalArrayRepresentation()},t.prototype.toArray=function(){return this.asArray},t.prototype.findAll=function(t){for(var e=this.head,n=[],r=0;r<this.length;r++)t(e.value,r)&&n.push({index:r,value:e.value}),e=e.next;return n},t.prototype.push=function(){for(var e=this,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return t.forEach(function(t){e.add(t)}),this.length},t.prototype.pop=function(){if(0===this.length)return undefined;var t=this.tail;return this.remove(this.length-1),t.value},t.prototype.unshift=function(){for(var e=this,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return t.reverse(),t.forEach(function(t){e.add(t,0)}),this.length},t.prototype.shift=function(){if(0===this.length)return undefined;var t=this.head.value;return this.remove(),t},t.prototype.forEach=function(t){for(var e=this.head,n=0;n<this.length;n++)t(e.value,n),e=e.next},t.prototype.indexOf=function(t){for(var e=this.head,n=0,r=0;r<this.length;r++){if(e.value===t){n=r;break}e=e.next}return n},t.prototype.some=function(t){for(var e=this.head,n=!1;e&&!n;){if(t(e.value)){n=!0;break}e=e.next}return n},t.prototype.every=function(t){for(var e=this.head,n=!0;e&&n;)t(e.value)||(n=!1),e=e.next;return n},t.prototype.toString=function(){return"[Linked List]"},t.prototype.find=function(t){for(var e,n=this.head,r=0;r<this.length;r++){if(t(n.value,r)){e=n.value;break}n=n.next}return e},t.prototype.findIndex=function(t){for(var e,n=this.head,r=0;r<this.length;r++){if(t(n.value,r)){e=r;break}n=n.next}return e},t.prototype.getNode=function(t){if(0===this.length||t<0||t>=this.length)throw new Error("Position is out of the list");for(var e=this.head,n=0;n<t;n++)e=e.next;return e},t.prototype.createInternalArrayRepresentation=function(){for(var t=[],e=this.head;e;)t.push(e.value),e=e.next;this.asArray=t},t}();var a=function(){function t(){}return t.reflow=function(t){t.offsetHeight},t.getStyles=function(t){var e=t.ownerDocument.defaultView;return e&&e.opener||(e=i),e.getComputedStyle(t)},t}(),f={},l="undefined"==typeof console||!("warn"in console);t.isBs3=function c(){return void 0===i||("undefined"==typeof i.__theme?r?"bs3"===r:"bs3"===(r=function n(){if("undefined"==typeof document)return null;var t=document.createElement("span");t.innerText="test bs version",document.body.appendChild(t),t.classList.add("d-none");var e=t.getBoundingClientRect();return document.body.removeChild(t),e&&0===e.top?"bs4":"bs3"}()):"bs4"!==i.__theme)},t.LinkedList=u,t.listenToTriggersV2=function p(r,i){var t=h(i.triggers),o=i.target;if(1===t.length&&t[0].isManual())return Function.prototype;var s=[],u=[],a=function(){u.forEach(function(t){return s.push(t())}),u.length=0};return t.forEach(function(t){var e=t.open===t.close,n=e?i.toggle:i.show;e||u.push(function(){return r.listen(o,t.close,i.hide)}),s.push(r.listen(o,t.open,function(){return n(a)}))}),function(){s.forEach(function(t){return t()})}},t.registerOutsideClick=function d(t,n){return n.outsideClick?t.listen("document","click",function(e){return n.target&&n.target.contains(e.target)?undefined:n.targets&&n.targets.some(function(t){return t.contains(e.target)})?undefined:void n.hide()}):Function.prototype},t.OnChange=function g(t){return function(t,e){var n=" __"+e+"Value";Object.defineProperty(t,e,{get:function(){return this[n]},set:function(t){this[n]!==(this[n]=t)&&this[e+"Change"]&&this[e+"Change"].emit(t)}})}},t.setTheme=function v(t){r=t},t.Trigger=o,t.Utils=a,t.window=i,t.document=n,t.warnOnce=function y(t){!e.isDevMode()||l||t in f||(f[t]=!0,console.warn(t))},t.parseTriggers=h,t.listenToTriggers=function m(e,n,t,r,i,o){var s=h(t),u=[];return 1===s.length&&s[0].isManual()?Function.prototype:(s.forEach(function(t){t.open!==t.close?u.push(e.listen(n,t.open,r),e.listen(n,t.close,i)):u.push(e.listen(n,t.open,o))}),function(){u.forEach(function(t){return t()})})},Object.defineProperty(t,"__esModule",{value:!0})});
9
+ var r,i="undefined"!=typeof window&&window||{},n=i.document;i.location,i.gc,i.performance&&i.performance,i.Event,i.MouseEvent,i.KeyboardEvent,i.EventTarget,i.History,i.Location,i.EventListener;var u=function(){function t(){this.length=0,this.asArray=[]}return t.prototype.get=function(t){if(!(0===this.length||t<0||t>=this.length)){for(var e=this.head,n=0;n<t;n++)e=e.next;return e.value}},t.prototype.add=function(t,e){if(void 0===e&&(e=this.length),e<0||e>this.length)throw new Error("Position is out of the list");var n={value:t,next:undefined,previous:undefined};if(0===this.length)this.head=n,this.tail=n,this.current=n;else if(0===e)n.next=this.head,this.head.previous=n,this.head=n;else if(e===this.length)(this.tail.next=n).previous=this.tail,this.tail=n;else{var r=this.getNode(e-1),i=r.next;r.next=n,(i.previous=n).previous=r,n.next=i}this.length++,this.createInternalArrayRepresentation()},t.prototype.remove=function(t){if(void 0===t&&(t=0),0===this.length||t<0||t>=this.length)throw new Error("Position is out of the list");if(0===t)this.head=this.head.next,this.head?this.head.previous=undefined:this.tail=undefined;else if(t===this.length-1)this.tail=this.tail.previous,this.tail.next=undefined;else{var e=this.getNode(t);e.next.previous=e.previous,e.previous.next=e.next}this.length--,this.createInternalArrayRepresentation()},t.prototype.set=function(t,e){if(0===this.length||t<0||t>=this.length)throw new Error("Position is out of the list");this.getNode(t).value=e,this.createInternalArrayRepresentation()},t.prototype.toArray=function(){return this.asArray},t.prototype.findAll=function(t){for(var e=this.head,n=[],r=0;r<this.length;r++)t(e.value,r)&&n.push({index:r,value:e.value}),e=e.next;return n},t.prototype.push=function(){for(var e=this,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return t.forEach(function(t){e.add(t)}),this.length},t.prototype.pop=function(){if(0===this.length)return undefined;var t=this.tail;return this.remove(this.length-1),t.value},t.prototype.unshift=function(){for(var e=this,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return t.reverse(),t.forEach(function(t){e.add(t,0)}),this.length},t.prototype.shift=function(){if(0===this.length)return undefined;var t=this.head.value;return this.remove(),t},t.prototype.forEach=function(t){for(var e=this.head,n=0;n<this.length;n++)t(e.value,n),e=e.next},t.prototype.indexOf=function(t){for(var e=this.head,n=0,r=0;r<this.length;r++){if(e.value===t){n=r;break}e=e.next}return n},t.prototype.some=function(t){for(var e=this.head,n=!1;e&&!n;){if(t(e.value)){n=!0;break}e=e.next}return n},t.prototype.every=function(t){for(var e=this.head,n=!0;e&&n;)t(e.value)||(n=!1),e=e.next;return n},t.prototype.toString=function(){return"[Linked List]"},t.prototype.find=function(t){for(var e,n=this.head,r=0;r<this.length;r++){if(t(n.value,r)){e=n.value;break}n=n.next}return e},t.prototype.findIndex=function(t){for(var e,n=this.head,r=0;r<this.length;r++){if(t(n.value,r)){e=r;break}n=n.next}return e},t.prototype.getNode=function(t){if(0===this.length||t<0||t>=this.length)throw new Error("Position is out of the list");for(var e=this.head,n=0;n<t;n++)e=e.next;return e},t.prototype.createInternalArrayRepresentation=function(){for(var t=[],e=this.head;e;)t.push(e.value),e=e.next;this.asArray=t},t}();var a=function(){function t(){}return t.reflow=function(t){t.offsetHeight},t.getStyles=function(t){var e=t.ownerDocument.defaultView;return e&&e.opener||(e=i),e.getComputedStyle(t)},t}(),f={},l="undefined"==typeof console||!("warn"in console);t.isBs3=function c(){return void 0===i||("undefined"==typeof i.__theme?r?"bs3"===r:"bs3"===(r=function n(){if("undefined"==typeof document)return null;var t=document.createElement("span");t.innerText="test bs version",document.body.appendChild(t),t.classList.add("d-none");var e=t.getBoundingClientRect();return document.body.removeChild(t),e&&0===e.top?"bs4":"bs3"}()):"bs4"!==i.__theme)},t.LinkedList=u,t.listenToTriggersV2=function d(r,i){var t=h(i.triggers),o=i.target;if(1===t.length&&t[0].isManual())return Function.prototype;var s=[],u=[],a=function(){u.forEach(function(t){return s.push(t())}),u.length=0};return t.forEach(function(t){var e=t.open===t.close,n=e?i.toggle:i.show;e||u.push(function(){return r.listen(o,t.close,i.hide)}),s.push(r.listen(o,t.open,function(){return n(a)}))}),function(){s.forEach(function(t){return t()})}},t.registerOutsideClick=function p(t,n){return n.outsideClick?t.listen("document","click",function(e){return n.target&&n.target.contains(e.target)?undefined:n.targets&&n.targets.some(function(t){return t.contains(e.target)})?undefined:void n.hide()}):Function.prototype},t.registerEscClick=function g(t,n){return n.outsideEsc?t.listen("document","keyup.esc",function(e){return n.target&&n.target.contains(e.target)?undefined:n.targets&&n.targets.some(function(t){return t.contains(e.target)})?undefined:void n.hide()}):Function.prototype},t.OnChange=function v(t){return function(t,e){var n=" __"+e+"Value";Object.defineProperty(t,e,{get:function(){return this[n]},set:function(t){this[n]!==(this[n]=t)&&this[e+"Change"]&&this[e+"Change"].emit(t)}})}},t.setTheme=function y(t){r=t},t.Trigger=o,t.Utils=a,t.window=i,t.document=n,t.warnOnce=function m(t){!e.isDevMode()||l||t in f||(f[t]=!0,console.warn(t))},t.parseTriggers=h,t.listenToTriggers=function x(e,n,t,r,i,o){var s=h(t),u=[];return 1===s.length&&s[0].isManual()?Function.prototype:(s.forEach(function(t){t.open!==t.close?u.push(e.listen(n,t.open,r),e.listen(n,t.close,i)):u.push(e.listen(n,t.open,o))}),function(){u.forEach(function(t){return t()})})},Object.defineProperty(t,"__esModule",{value:!0})});
10
10
  //# sourceMappingURL=ngx-bootstrap-utils.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["ng://ngx-bootstrap/utils/trigger.class.ts","ng://ngx-bootstrap/utils/triggers.ts","ng://ngx-bootstrap/utils/facade/browser.ts","ng://ngx-bootstrap/utils/theme-provider.ts","ng://ngx-bootstrap/utils/linked-list.class.ts","ng://ngx-bootstrap/utils/utils.class.ts","ng://ngx-bootstrap/utils/warn-once.ts","ng://ngx-bootstrap/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","guessedVersion","win","window","document","location","gc","performance","Event","MouseEvent","KeyboardEvent","EventTarget","History","Location","EventListener","LinkedList","get","position","current","head","index","next","value","add","node","undefined","previous","tail","currentPreviousNode","getNode","currentNextNode","createInternalArrayRepresentation","remove","removedNode","set","toArray","asArray","findAll","fn","result","push","_this","args","_i","arguments","forEach","arg","pop","last","unshift","reverse","shift","lastItem","indexOf","some","every","toString","find","findIndex","outArray","Utils","reflow","element","offsetHeight","getStyles","elem","view","ownerDocument","defaultView","opener","getComputedStyle","_messagesHash","_hideMsg","console","isBs3","__theme","_guessBsVersion","spanEl","createElement","innerText","body","appendChild","classList","rect","getBoundingClientRect","removeChild","top","listenToTriggersV2","renderer","options","target","Function","listeners","_registerHide","registerHide","useToggle","showFn","toggle","show","listen","hide","unsubscribeFn","registerOutsideClick","outsideClick","event","contains","targets","OnChange","defaultValue","propertyKey","_key","Object","defineProperty","emit","setTheme","theme","warnOnce","msg","isDevMode","warn","listenToTriggers","hideFn","toggleFn"],"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/* tslint:disable-next-line: no-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 show?: BsEventCallback;\n hide?: BsEventCallback;\n toggle?: BsEventCallback;\n}\n\nconst DEFAULT_ALIASES = {\n hover: ['mouseover', 'mouseout'],\n focus: ['focusin', 'focusout']\n};\n\n/* tslint:disable-next-line: no-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 /* tslint:disable-next-line: no-any */\n target: any,\n triggers: string,\n showFn: BsEventCallback,\n hideFn: BsEventCallback,\n toggleFn: BsEventCallback): Function {\n const parsedTriggers = parseTriggers(triggers);\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\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(\n renderer.listen(target, trigger.open, showFn),\n renderer.listen(target, trigger.close, hideFn)\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function listenToTriggersV2(renderer: Renderer2,\n options: ListenOptions): Function {\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;\n }\n\n // all listeners\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n // lazy listeners registration\n const _registerHide: Function[] = [];\n const registerHide = () => {\n // add hide listeners to unregister array\n _registerHide.forEach((fn: Function) => 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) {\n _registerHide.push(() =>\n renderer.listen(target, trigger.close, options.hide)\n );\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, () => showFn(registerHide))\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function registerOutsideClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideClick) {\n return Function.prototype;\n }\n\n /* tslint:disable-next-line: no-any */\n return renderer.listen('document', 'click', (event: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\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 */\nconst win = (typeof window !== 'undefined' && window) || {} as any;\n\nexport { win as window };\nexport const document = win.document;\nexport const location = win.location;\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\nlet guessedVersion: 'bs3' | 'bs4';\n\nfunction _guessBsVersion(): 'bs3' | 'bs4' {\n if (typeof document === 'undefined') {\n return null;\n }\n const spanEl = document.createElement('span');\n spanEl.innerText = 'test bs version';\n document.body.appendChild(spanEl);\n spanEl.classList.add('d-none');\n const rect = spanEl.getBoundingClientRect();\n document.body.removeChild(spanEl);\n if (!rect) {\n return 'bs3';\n }\n\n return rect.top === 0 ? 'bs4' : 'bs3';\n}\n\nexport function setTheme(theme: 'bs3' | 'bs4'): 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 !== 'bs4';\n}\n","export class LinkedList<T> {\n length = 0;\n /* tslint:disable-next-line: no-any*/\n protected head: any;\n /* tslint:disable-next-line: no-any*/\n protected tail: any;\n /* tslint:disable-next-line: no-any*/\n protected current: any;\n protected asArray: T[] = [];\n\n get(position: number): T {\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 /* tslint:disable-next-line: no-any*/\n const node: any = {\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) {\n // first node\n node.next = this.head;\n this.head.previous = node;\n this.head = node;\n } else if (position === this.length) {\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\n currentPreviousNode.next = node;\n currentNextNode.previous = node;\n\n node.previous = currentPreviousNode;\n node.next = currentNextNode;\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) {\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) {\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 removedNode.next.previous = removedNode.previous;\n removedNode.previous.next = removedNode.next;\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 node.value = value;\n this.createInternalArrayRepresentation();\n }\n\n toArray(): T[] {\n return this.asArray;\n }\n\n /* tslint:disable-next-line: no-any*/\n findAll(fn: any): any[] {\n let current = this.head;\n /* tslint:disable-next-line: no-any*/\n const result: any[] = [];\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result.push({index, value: current.value});\n }\n current = current.next;\n }\n\n return result;\n }\n\n // Array methods overriding start\n push(...args: T[]): number {\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg);\n });\n\n return this.length;\n }\n\n pop(): T {\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 /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg, 0);\n });\n\n return this.length;\n }\n\n shift(): T {\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 /* tslint:disable-next-line: no-any*/\n forEach(fn: any): void {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\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 = 0;\n\n for (let index = 0; index < this.length; index++) {\n if (current.value === value) {\n position = index;\n break;\n }\n current = current.next;\n }\n\n return position;\n }\n\n /* tslint:disable-next-line: no-any*/\n some(fn: any): 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 /* tslint:disable-next-line: no-any*/\n every(fn: any): 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 /* tslint:disable-next-line: no-any*/\n find(fn: any): T {\n let current = this.head;\n let result: T;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = current.value;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n findIndex(fn: any): number {\n let current = this.head;\n let result: number;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = index;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n protected getNode(position: number): any {\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 /* tslint:disable-next-line: no-any*/\n const outArray: any[] = [];\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';\n\nexport class Utils {\n /* tslint:disable-next-line: no-any */\n static reflow(element: any): void {\n /* tslint:disable-next-line: no-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 /* tslint:disable-next-line: no-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","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 /*tslint:disable-next-line*/\n console.warn(msg);\n}\n","/*tslint:disable:no-invalid-this */\n/* tslint:disable-next-line: no-any */\nexport function OnChange(defaultValue?: any): any {\n const sufix = 'Change';\n\n /* tslint:disable-next-line: no-any */\n return function OnChangeHandler(target: any, propertyKey: string): void {\n const _key = ` __${propertyKey}Value`;\n Object.defineProperty(target, propertyKey, {\n /* tslint:disable-next-line: no-any */\n get(): any {\n return this[_key];\n },\n /* tslint:disable-next-line: no-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/* tslint:enable */\n"]}
1
+ {"version":3,"sources":["ng://ngx-bootstrap/utils/trigger.class.ts","ng://ngx-bootstrap/utils/triggers.ts","ng://ngx-bootstrap/utils/facade/browser.ts","ng://ngx-bootstrap/utils/theme-provider.ts","ng://ngx-bootstrap/utils/linked-list.class.ts","ng://ngx-bootstrap/utils/utils.class.ts","ng://ngx-bootstrap/utils/warn-once.ts","ng://ngx-bootstrap/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","guessedVersion","win","window","document","location","gc","performance","Event","MouseEvent","KeyboardEvent","EventTarget","History","Location","EventListener","LinkedList","get","position","current","head","index","next","value","add","node","undefined","previous","tail","currentPreviousNode","getNode","currentNextNode","createInternalArrayRepresentation","remove","removedNode","set","toArray","asArray","findAll","fn","result","push","_this","args","_i","arguments","forEach","arg","pop","last","unshift","reverse","shift","lastItem","indexOf","some","every","toString","find","findIndex","outArray","Utils","reflow","element","offsetHeight","getStyles","elem","view","ownerDocument","defaultView","opener","getComputedStyle","_messagesHash","_hideMsg","console","isBs3","__theme","_guessBsVersion","spanEl","createElement","innerText","body","appendChild","classList","rect","getBoundingClientRect","removeChild","top","listenToTriggersV2","renderer","options","target","Function","listeners","_registerHide","registerHide","useToggle","showFn","toggle","show","listen","hide","unsubscribeFn","registerOutsideClick","outsideClick","event","contains","targets","registerEscClick","outsideEsc","OnChange","defaultValue","propertyKey","_key","Object","defineProperty","emit","setTheme","theme","warnOnce","msg","isDevMode","warn","listenToTriggers","hideFn","toggleFn"],"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/* tslint:disable-next-line: no-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/* tslint:disable-next-line: no-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 /* tslint:disable-next-line: no-any */\n target: any,\n triggers: string,\n showFn: BsEventCallback,\n hideFn: BsEventCallback,\n toggleFn: BsEventCallback): Function {\n const parsedTriggers = parseTriggers(triggers);\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\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(\n renderer.listen(target, trigger.open, showFn),\n renderer.listen(target, trigger.close, hideFn)\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function listenToTriggersV2(renderer: Renderer2,\n options: ListenOptions): Function {\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;\n }\n\n // all listeners\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n // lazy listeners registration\n const _registerHide: Function[] = [];\n const registerHide = () => {\n // add hide listeners to unregister array\n _registerHide.forEach((fn: Function) => 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) {\n _registerHide.push(() =>\n renderer.listen(target, trigger.close, options.hide)\n );\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, () => showFn(registerHide))\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function registerOutsideClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideClick) {\n return Function.prototype;\n }\n\n /* tslint:disable-next-line: no-any */\n return renderer.listen('document', 'click', (event: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\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: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\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 */\nconst win = (typeof window !== 'undefined' && window) || {} as any;\n\nexport { win as window };\nexport const document = win.document;\nexport const location = win.location;\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\nlet guessedVersion: 'bs3' | 'bs4';\n\nfunction _guessBsVersion(): 'bs3' | 'bs4' {\n if (typeof document === 'undefined') {\n return null;\n }\n const spanEl = document.createElement('span');\n spanEl.innerText = 'test bs version';\n document.body.appendChild(spanEl);\n spanEl.classList.add('d-none');\n const rect = spanEl.getBoundingClientRect();\n document.body.removeChild(spanEl);\n if (!rect) {\n return 'bs3';\n }\n\n return rect.top === 0 ? 'bs4' : 'bs3';\n}\n\nexport function setTheme(theme: 'bs3' | 'bs4'): 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 !== 'bs4';\n}\n","export class LinkedList<T> {\n length = 0;\n /* tslint:disable-next-line: no-any*/\n protected head: any;\n /* tslint:disable-next-line: no-any*/\n protected tail: any;\n /* tslint:disable-next-line: no-any*/\n protected current: any;\n protected asArray: T[] = [];\n\n get(position: number): T {\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 /* tslint:disable-next-line: no-any*/\n const node: any = {\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) {\n // first node\n node.next = this.head;\n this.head.previous = node;\n this.head = node;\n } else if (position === this.length) {\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\n currentPreviousNode.next = node;\n currentNextNode.previous = node;\n\n node.previous = currentPreviousNode;\n node.next = currentNextNode;\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) {\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) {\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 removedNode.next.previous = removedNode.previous;\n removedNode.previous.next = removedNode.next;\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 node.value = value;\n this.createInternalArrayRepresentation();\n }\n\n toArray(): T[] {\n return this.asArray;\n }\n\n /* tslint:disable-next-line: no-any*/\n findAll(fn: any): any[] {\n let current = this.head;\n /* tslint:disable-next-line: no-any*/\n const result: any[] = [];\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result.push({index, value: current.value});\n }\n current = current.next;\n }\n\n return result;\n }\n\n // Array methods overriding start\n push(...args: T[]): number {\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg);\n });\n\n return this.length;\n }\n\n pop(): T {\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 /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg, 0);\n });\n\n return this.length;\n }\n\n shift(): T {\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 /* tslint:disable-next-line: no-any*/\n forEach(fn: any): void {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\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 = 0;\n\n for (let index = 0; index < this.length; index++) {\n if (current.value === value) {\n position = index;\n break;\n }\n current = current.next;\n }\n\n return position;\n }\n\n /* tslint:disable-next-line: no-any*/\n some(fn: any): 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 /* tslint:disable-next-line: no-any*/\n every(fn: any): 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 /* tslint:disable-next-line: no-any*/\n find(fn: any): T {\n let current = this.head;\n let result: T;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = current.value;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n findIndex(fn: any): number {\n let current = this.head;\n let result: number;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = index;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n protected getNode(position: number): any {\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 /* tslint:disable-next-line: no-any*/\n const outArray: any[] = [];\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';\n\nexport class Utils {\n /* tslint:disable-next-line: no-any */\n static reflow(element: any): void {\n /* tslint:disable-next-line: no-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 /* tslint:disable-next-line: no-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","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 /*tslint:disable-next-line*/\n console.warn(msg);\n}\n","/*tslint:disable:no-invalid-this */\n/* tslint:disable-next-line: no-any */\nexport function OnChange(defaultValue?: any): any {\n const sufix = 'Change';\n\n /* tslint:disable-next-line: no-any */\n return function OnChangeHandler(target: any, propertyKey: string): void {\n const _key = ` __${propertyKey}Value`;\n Object.defineProperty(target, propertyKey, {\n /* tslint:disable-next-line: no-any */\n get(): any {\n return this[_key];\n },\n /* tslint:disable-next-line: no-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/* tslint:enable */\n"]}
@@ -5,6 +5,6 @@
5
5
  /**
6
6
  * Generated bundle index. Do not edit.
7
7
  */
8
- export { isBs3, LinkedList, listenToTriggersV2, registerOutsideClick, OnChange, setTheme, Trigger, Utils, window, document, warnOnce, parseTriggers, listenToTriggers } from './public_api';
8
+ export { isBs3, LinkedList, listenToTriggersV2, registerOutsideClick, registerEscClick, OnChange, setTheme, Trigger, Utils, window, document, warnOnce, parseTriggers, listenToTriggers } from './public_api';
9
9
 
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWJvb3RzdHJhcC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvdXRpbHMvIiwic291cmNlcyI6WyJuZ3gtYm9vdHN0cmFwLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSw2S0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWJvb3RzdHJhcC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvdXRpbHMvIiwic291cmNlcyI6WyJuZ3gtYm9vdHN0cmFwLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwrTEFBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
@@ -5,7 +5,7 @@
5
5
  export { parseTriggers, listenToTriggers } from './triggers';
6
6
  export { isBs3 } from './theme-provider';
7
7
  export { LinkedList } from './linked-list.class';
8
- export { listenToTriggersV2, registerOutsideClick } from './triggers';
8
+ export { listenToTriggersV2, registerOutsideClick, registerEscClick } from './triggers';
9
9
  export { OnChange } from './decorators';
10
10
  export { setTheme } from './theme-provider';
11
11
  export { Trigger } from './trigger.class';
@@ -13,4 +13,4 @@ export { Utils } from './utils.class';
13
13
  export { window, document } from './facade/browser';
14
14
  export { warnOnce } from './warn-once';
15
15
 
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvdXRpbHMvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnREFBYyxZQUFZLENBQUM7QUFDM0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQUssYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90cmlnZ2Vycyc7XG5leHBvcnQgeyBpc0JzMyB9IGZyb20gJy4vdGhlbWUtcHJvdmlkZXInO1xuZXhwb3J0IHsgTGlua2VkTGlzdCB9IGZyb20gJy4vbGlua2VkLWxpc3QuY2xhc3MnO1xuZXhwb3J0IHsgbGlzdGVuVG9UcmlnZ2Vyc1YyLCByZWdpc3Rlck91dHNpZGVDbGljayB9IGZyb20gJy4vdHJpZ2dlcnMnO1xuZXhwb3J0IHsgT25DaGFuZ2UgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuZXhwb3J0IHsgc2V0VGhlbWUgfSBmcm9tICcuL3RoZW1lLXByb3ZpZGVyJztcbmV4cG9ydCB7IFRyaWdnZXIgfSBmcm9tICcuL3RyaWdnZXIuY2xhc3MnO1xuZXhwb3J0IHsgVXRpbHMgfSBmcm9tICcuL3V0aWxzLmNsYXNzJztcbmV4cG9ydCB7IHdpbmRvdywgZG9jdW1lbnQgfSBmcm9tICcuL2ZhY2FkZS9icm93c2VyJztcbmV4cG9ydCB7IHdhcm5PbmNlIH1mcm9tICcuL3dhcm4tb25jZSc7XG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvdXRpbHMvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnREFBYyxZQUFZLENBQUM7QUFDM0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDakIsTUFBTSxZQUFZLENBQUM7QUFFcEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQUssYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90cmlnZ2Vycyc7XG5leHBvcnQgeyBpc0JzMyB9IGZyb20gJy4vdGhlbWUtcHJvdmlkZXInO1xuZXhwb3J0IHsgTGlua2VkTGlzdCB9IGZyb20gJy4vbGlua2VkLWxpc3QuY2xhc3MnO1xuXG5leHBvcnQge1xuICBsaXN0ZW5Ub1RyaWdnZXJzVjIsXG4gIHJlZ2lzdGVyT3V0c2lkZUNsaWNrLFxuICByZWdpc3RlckVzY0NsaWNrXG59IGZyb20gJy4vdHJpZ2dlcnMnO1xuXG5leHBvcnQgeyBPbkNoYW5nZSB9IGZyb20gJy4vZGVjb3JhdG9ycyc7XG5leHBvcnQgeyBzZXRUaGVtZSB9IGZyb20gJy4vdGhlbWUtcHJvdmlkZXInO1xuZXhwb3J0IHsgVHJpZ2dlciB9IGZyb20gJy4vdHJpZ2dlci5jbGFzcyc7XG5leHBvcnQgeyBVdGlscyB9IGZyb20gJy4vdXRpbHMuY2xhc3MnO1xuZXhwb3J0IHsgd2luZG93LCBkb2N1bWVudCB9IGZyb20gJy4vZmFjYWRlL2Jyb3dzZXInO1xuZXhwb3J0IHsgd2Fybk9uY2UgfWZyb20gJy4vd2Fybi1vbmNlJztcbiJdfQ==
@@ -17,6 +17,8 @@ function ListenOptions_tsickle_Closure_declarations() {
17
17
  /** @type {?|undefined} */
18
18
  ListenOptions.prototype.outsideClick;
19
19
  /** @type {?|undefined} */
20
+ ListenOptions.prototype.outsideEsc;
21
+ /** @type {?|undefined} */
20
22
  ListenOptions.prototype.show;
21
23
  /** @type {?|undefined} */
22
24
  ListenOptions.prototype.hide;
@@ -139,5 +141,25 @@ export function registerOutsideClick(renderer, options) {
139
141
  options.hide();
140
142
  });
141
143
  }
144
+ /**
145
+ * @param {?} renderer
146
+ * @param {?} options
147
+ * @return {?}
148
+ */
149
+ export function registerEscClick(renderer, options) {
150
+ if (!options.outsideEsc) {
151
+ return Function.prototype;
152
+ }
153
+ return renderer.listen('document', 'keyup.esc', (event) => {
154
+ if (options.target && options.target.contains(event.target)) {
155
+ return undefined;
156
+ }
157
+ if (options.targets &&
158
+ options.targets.some(target => target.contains(event.target))) {
159
+ return undefined;
160
+ }
161
+ options.hide();
162
+ });
163
+ }
142
164
 
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlcnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYm9vdHN0cmFwL3V0aWxzLyIsInNvdXJjZXMiOlsidHJpZ2dlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUtBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZTFDLHVCQUFNLGVBQWUsR0FBRztJQUN0QixLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDO0lBQ2hDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUM7Q0FDL0IsQ0FBQzs7Ozs7O0FBR0YsTUFBTSx3QkFBd0IsUUFBZ0IsRUFBRSxVQUFlLGVBQWU7SUFDNUUsdUJBQU0sZUFBZSxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRWhELEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsRUFBRSxDQUFDO0tBQ1g7SUFFRCx1QkFBTSxjQUFjLEdBQUcsZUFBZTtTQUNuQyxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ1osR0FBRyxDQUFDLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVDLEdBQUcsQ0FBQyxDQUFDLFdBQXFCLEVBQUUsRUFBRTtRQUM3Qix1QkFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQztRQUVyRCxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3hDLENBQUMsQ0FBQztJQUVMLHVCQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBb0IsRUFB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RCxPQUFPLENBQUMsT0FBTztZQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQzlELENBQUMsQ0FBQyxDQUFDO1lBQ0QsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUNsQjtRQUVELE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUNoQixDQUFDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGNvcHlyaWdodCBWYWxvciBTb2Z0d2FyZVxuICogQGNvcHlyaWdodCBBbmd1bGFyIG5nLWJvb3RzdHJhcCB0ZWFtXG4gKi9cbmltcG9ydCB7IFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJpZ2dlciB9IGZyb20gJy4vdHJpZ2dlci5jbGFzcyc7XG5cbi8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG5leHBvcnQgdHlwZSBCc0V2ZW50Q2FsbGJhY2sgPSAoZXZlbnQ/OiBhbnkpID0+IGJvb2xlYW4gfCB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpc3Rlbk9wdGlvbnMge1xuICB0YXJnZXQ/OiBIVE1MRWxlbWVudDtcbiAgdGFyZ2V0cz86IEhUTUxFbGVtZW50W107XG4gIHRyaWdnZXJzPzogc3RyaW5nO1xuICBvdXRzaWRlQ2xpY2s/OiBib29sZWFuO1xuICBzaG93PzogQnNFdmVudENhbGxiYWNrO1xuICBoaWRlPzogQnNFdmVudENhbGxiYWNrO1xuICB0b2dnbGU/OiBCc0V2ZW50Q2FsbGJhY2s7XG59XG5cbmNvbnN0IERFRkFVTFRfQUxJQVNFUyA9IHtcbiAgaG92ZXI6IFsnbW91c2VvdmVyJywgJ21vdXNlb3V0J10sXG4gIGZvY3VzOiBbJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnXVxufTtcblxuLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRyaWdnZXJzKHRyaWdnZXJzOiBzdHJpbmcsIGFsaWFzZXM6IGFueSA9IERFRkFVTFRfQUxJQVNFUyk6IFRyaWdnZXJbXSB7XG4gIGNvbnN0IHRyaW1tZWRUcmlnZ2VycyA9ICh0cmlnZ2VycyB8fCAnJykudHJpbSgpO1xuXG4gIGlmICh0cmltbWVkVHJpZ2dlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgcGFyc2VkVHJpZ2dlcnMgPSB0cmltbWVkVHJpZ2dlcnNcbiAgICAuc3BsaXQoL1xccysvKVxuICAgIC5tYXAoKHRyaWdnZXI6IHN0cmluZykgPT4gdHJpZ2dlci5zcGxpdCgnOicpKVxuICAgIC5tYXAoKHRyaWdnZXJQYWlyOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgY29uc3QgYWxpYXMgPSBhbGlhc2VzW3RyaWdnZXJQYWlyWzBdXSB8fCB0cmlnZ2VyUGFpcjtcblxuICAgICAgcmV0dXJuIG5ldyBUcmlnZ2VyKGFsaWFzWzBdLCBhbGlhc1sxXSk7XG4gICAgfSk7XG5cbiAgY29uc3QgbWFudWFsVHJpZ2dlcnMgPSBwYXJzZWRUcmlnZ2Vycy5maWx0ZXIoKHRyaWdnZXJQYWlyOiBUcmlnZ2VyKSA9PlxuICAgIHRyaWdnZXJQYWlyLmlzTWFudWFsKClcbiAgKTtcblxuICBpZiAobWFudWFsVHJpZ2dlcnMubGVuZ3RoID4gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVHJpZ2dlcnMgcGFyc2UgZXJyb3I6IG9ubHkgb25lIG1hbnVhbCB0cmlnZ2VyIGlzIGFsbG93ZWQnKTtcbiAgfVxuXG4gIGlmIChtYW51YWxUcmlnZ2Vycy5sZW5ndGggPT09IDEgJiYgcGFyc2VkVHJpZ2dlcnMubGVuZ3RoID4gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVHJpZ2dlcnMgcGFyc2UgZXJyb3I6IG1hbnVhbCB0cmlnZ2VyIGNhblxcJ3QgYmUgbWl4ZWQgd2l0aCBvdGhlciB0cmlnZ2VycycpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZFRyaWdnZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuVG9UcmlnZ2VycyhyZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGbjogQnNFdmVudENhbGxiYWNrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUZuOiBCc0V2ZW50Q2FsbGJhY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVGbjogQnNFdmVudENhbGxiYWNrKTogRnVuY3Rpb24ge1xuICBjb25zdCBwYXJzZWRUcmlnZ2VycyA9IHBhcnNlVHJpZ2dlcnModHJpZ2dlcnMpO1xuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuICBjb25zdCBsaXN0ZW5lcnM6IGFueVtdID0gW107XG5cbiAgaWYgKHBhcnNlZFRyaWdnZXJzLmxlbmd0aCA9PT0gMSAmJiBwYXJzZWRUcmlnZ2Vyc1swXS5pc01hbnVhbCgpKSB7XG4gICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgfVxuXG4gIHBhcnNlZFRyaWdnZXJzLmZvckVhY2goKHRyaWdnZXI6IFRyaWdnZXIpID0+IHtcbiAgICBpZiAodHJpZ2dlci5vcGVuID09PSB0cmlnZ2VyLmNsb3NlKSB7XG4gICAgICBsaXN0ZW5lcnMucHVzaChyZW5kZXJlci5saXN0ZW4odGFyZ2V0LCB0cmlnZ2VyLm9wZW4sIHRvZ2dsZUZuKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsaXN0ZW5lcnMucHVzaChcbiAgICAgIHJlbmRlcmVyLmxpc3Rlbih0YXJnZXQsIHRyaWdnZXIub3Blbiwgc2hvd0ZuKSxcbiAgICAgIHJlbmRlcmVyLmxpc3Rlbih0YXJnZXQsIHRyaWdnZXIuY2xvc2UsIGhpZGVGbilcbiAgICApO1xuICB9KTtcblxuICByZXR1cm4gKCkgPT4ge1xuICAgIGxpc3RlbmVycy5mb3JFYWNoKCh1bnN1YnNjcmliZUZuOiBGdW5jdGlvbikgPT4gdW5zdWJzY3JpYmVGbigpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RlblRvVHJpZ2dlcnNWMihyZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBMaXN0ZW5PcHRpb25zKTogRnVuY3Rpb24ge1xuICBjb25zdCBwYXJzZWRUcmlnZ2VycyA9IHBhcnNlVHJpZ2dlcnMob3B0aW9ucy50cmlnZ2Vycyk7XG4gIGNvbnN0IHRhcmdldCA9IG9wdGlvbnMudGFyZ2V0O1xuICAvLyBkbyBub3RoaW5nXG4gIGlmIChwYXJzZWRUcmlnZ2Vycy5sZW5ndGggPT09IDEgJiYgcGFyc2VkVHJpZ2dlcnNbMF0uaXNNYW51YWwoKSkge1xuICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGU7XG4gIH1cblxuICAvLyBhbGwgbGlzdGVuZXJzXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG4gIGNvbnN0IGxpc3RlbmVyczogYW55W10gPSBbXTtcblxuICAvLyBsYXp5IGxpc3RlbmVycyByZWdpc3RyYXRpb25cbiAgY29uc3QgX3JlZ2lzdGVySGlkZTogRnVuY3Rpb25bXSA9IFtdO1xuICBjb25zdCByZWdpc3RlckhpZGUgPSAoKSA9PiB7XG4gICAgLy8gYWRkIGhpZGUgbGlzdGVuZXJzIHRvIHVucmVnaXN0ZXIgYXJyYXlcbiAgICBfcmVnaXN0ZXJIaWRlLmZvckVhY2goKGZuOiBGdW5jdGlvbikgPT4gbGlzdGVuZXJzLnB1c2goZm4oKSkpO1xuICAgIC8vIHJlZ2lzdGVyIGhpZGUgZXZlbnRzIG9ubHkgb25jZVxuICAgIF9yZWdpc3RlckhpZGUubGVuZ3RoID0gMDtcbiAgfTtcblxuICAvLyByZWdpc3RlciBvcGVuXFxjbG9zZVxcdG9nZ2xlIGxpc3RlbmVyc1xuICBwYXJzZWRUcmlnZ2Vycy5mb3JFYWNoKCh0cmlnZ2VyOiBUcmlnZ2VyKSA9PiB7XG4gICAgY29uc3QgdXNlVG9nZ2xlID0gdHJpZ2dlci5vcGVuID09PSB0cmlnZ2VyLmNsb3NlO1xuICAgIGNvbnN0IHNob3dGbiA9IHVzZVRvZ2dsZSA/IG9wdGlvbnMudG9nZ2xlIDogb3B0aW9ucy5zaG93O1xuXG4gICAgaWYgKCF1c2VUb2dnbGUpIHtcbiAgICAgIF9yZWdpc3RlckhpZGUucHVzaCgoKSA9PlxuICAgICAgICByZW5kZXJlci5saXN0ZW4odGFyZ2V0LCB0cmlnZ2VyLmNsb3NlLCBvcHRpb25zLmhpZGUpXG4gICAgICApO1xuICAgIH1cblxuICAgIGxpc3RlbmVycy5wdXNoKFxuICAgICAgcmVuZGVyZXIubGlzdGVuKHRhcmdldCwgdHJpZ2dlci5vcGVuLCAoKSA9PiBzaG93Rm4ocmVnaXN0ZXJIaWRlKSlcbiAgICApO1xuICB9KTtcblxuICByZXR1cm4gKCkgPT4ge1xuICAgIGxpc3RlbmVycy5mb3JFYWNoKCh1bnN1YnNjcmliZUZuOiBGdW5jdGlvbikgPT4gdW5zdWJzY3JpYmVGbigpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyT3V0c2lkZUNsaWNrKHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogTGlzdGVuT3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMub3V0c2lkZUNsaWNrKSB7XG4gICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgfVxuXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG4gIHJldHVybiByZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKGV2ZW50OiBhbnkpID0+IHtcbiAgICBpZiAob3B0aW9ucy50YXJnZXQgJiYgb3B0aW9ucy50YXJnZXQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgb3B0aW9ucy50YXJnZXRzICYmXG4gICAgICBvcHRpb25zLnRhcmdldHMuc29tZSh0YXJnZXQgPT4gdGFyZ2V0LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG9wdGlvbnMuaGlkZSgpO1xuICB9KTtcbn1cbiJdfQ==
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlcnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYm9vdHN0cmFwL3V0aWxzLyIsInNvdXJjZXMiOlsidHJpZ2dlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUtBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQjFDLHVCQUFNLGVBQWUsR0FBRztJQUN0QixLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDO0lBQ2hDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUM7Q0FDL0IsQ0FBQzs7Ozs7O0FBR0YsTUFBTSx3QkFBd0IsUUFBZ0IsRUFBRSxVQUFlLGVBQWU7SUFDNUUsdUJBQU0sZUFBZSxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRWhELEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsRUFBRSxDQUFDO0tBQ1g7SUFFRCx1QkFBTSxjQUFjLEdBQUcsZUFBZTtTQUNuQyxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ1osR0FBRyxDQUFDLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVDLEdBQUcsQ0FBQyxDQUFDLFdBQXFCLEVBQUUsRUFBRTtRQUM3Qix1QkFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQztRQUVyRCxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3hDLENBQUMsQ0FBQztJQUVMLHVCQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBb0Is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Q0FDRCxPQUFPLENBQUMsT0FBTztZQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQzlELENBQUMsQ0FBQyxDQUFDO1lBQ0QsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUNsQjtRQUVELE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUNoQixDQUFDLENBQUM7Q0FDSjs7Ozs7O0FBRUQsTUFBTSwyQkFBMkIsUUFBbUIsRUFDbkIsT0FBc0I7SUFDckQsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUN4QixNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztLQUMzQjtJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtRQUM3RCxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUQsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUNsQjtRQUNELEVBQUUsQ0FBQyxDQUNELE9BQU8sQ0FBQyxPQUFPO1lBQ2YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FDOUQsQ0FBQyxDQUFDLENBQUM7WUFDRCxNQUFNLENBQUMsU0FBUyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0tBQ2hCLENBQUMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY29weXJpZ2h0IFZhbG9yIFNvZnR3YXJlXG4gKiBAY29weXJpZ2h0IEFuZ3VsYXIgbmctYm9vdHN0cmFwIHRlYW1cbiAqL1xuaW1wb3J0IHsgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmlnZ2VyIH0gZnJvbSAnLi90cmlnZ2VyLmNsYXNzJztcblxuLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbmV4cG9ydCB0eXBlIEJzRXZlbnRDYWxsYmFjayA9IChldmVudD86IGFueSkgPT4gYm9vbGVhbiB8IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdGVuT3B0aW9ucyB7XG4gIHRhcmdldD86IEhUTUxFbGVtZW50O1xuICB0YXJnZXRzPzogSFRNTEVsZW1lbnRbXTtcbiAgdHJpZ2dlcnM/OiBzdHJpbmc7XG4gIG91dHNpZGVDbGljaz86IGJvb2xlYW47XG4gIG91dHNpZGVFc2M/OiBib29sZWFuO1xuICBzaG93PzogQnNFdmVudENhbGxiYWNrO1xuICBoaWRlPzogQnNFdmVudENhbGxiYWNrO1xuICB0b2dnbGU/OiBCc0V2ZW50Q2FsbGJhY2s7XG59XG5cbmNvbnN0IERFRkFVTFRfQUxJQVNFUyA9IHtcbiAgaG92ZXI6IFsnbW91c2VvdmVyJywgJ21vdXNlb3V0J10sXG4gIGZvY3VzOiBbJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnXVxufTtcblxuLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRyaWdnZXJzKHRyaWdnZXJzOiBzdHJpbmcsIGFsaWFzZXM6IGFueSA9IERFRkFVTFRfQUxJQVNFUyk6IFRyaWdnZXJbXSB7XG4gIGNvbnN0IHRyaW1tZWRUcmlnZ2VycyA9ICh0cmlnZ2VycyB8fCAnJykudHJpbSgpO1xuXG4gIGlmICh0cmltbWVkVHJpZ2dlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgcGFyc2VkVHJpZ2dlcnMgPSB0cmltbWVkVHJpZ2dlcnNcbiAgICAuc3BsaXQoL1xccysvKVxuICAgIC5tYXAoKHRyaWdnZXI6IHN0cmluZykgPT4gdHJpZ2dlci5zcGxpdCgnOicpKVxuICAgIC5tYXAoKHRyaWdnZXJQYWlyOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgY29uc3QgYWxpYXMgPSBhbGlhc2VzW3RyaWdnZXJQYWlyWzBdXSB8fCB0cmlnZ2VyUGFpcjtcblxuICAgICAgcmV0dXJuIG5ldyBUcmlnZ2VyKGFsaWFzWzBdLCBhbGlhc1sxXSk7XG4gICAgfSk7XG5cbiAgY29uc3QgbWFudWFsVHJpZ2dlcnMgPSBwYXJzZWRUcmlnZ2Vycy5maWx0ZXIoKHRyaWdnZXJQYWlyOiBUcmlnZ2VyKSA9PlxuICAgIHRyaWdnZXJQYWlyLmlzTWFudWFsKClcbiAgKTtcblxuICBpZiAobWFudWFsVHJpZ2dlcnMubGVuZ3RoID4gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVHJpZ2dlcnMgcGFyc2UgZXJyb3I6IG9ubHkgb25lIG1hbnVhbCB0cmlnZ2VyIGlzIGFsbG93ZWQnKTtcbiAgfVxuXG4gIGlmIChtYW51YWxUcmlnZ2Vycy5sZW5ndGggPT09IDEgJiYgcGFyc2VkVHJpZ2dlcnMubGVuZ3RoID4gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVHJpZ2dlcnMgcGFyc2UgZXJyb3I6IG1hbnVhbCB0cmlnZ2VyIGNhblxcJ3QgYmUgbWl4ZWQgd2l0aCBvdGhlciB0cmlnZ2VycycpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZFRyaWdnZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuVG9UcmlnZ2VycyhyZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGbjogQnNFdmVudENhbGxiYWNrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUZuOiBCc0V2ZW50Q2FsbGJhY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVGbjogQnNFdmVudENhbGxiYWNrKTogRnVuY3Rpb24ge1xuICBjb25zdCBwYXJzZWRUcmlnZ2VycyA9IHBhcnNlVHJpZ2dlcnModHJpZ2dlcnMpO1xuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuICBjb25zdCBsaXN0ZW5lcnM6IGFueVtdID0gW107XG5cbiAgaWYgKHBhcnNlZFRyaWdnZXJzLmxlbmd0aCA9PT0gMSAmJiBwYXJzZWRUcmlnZ2Vyc1swXS5pc01hbnVhbCgpKSB7XG4gICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgfVxuXG4gIHBhcnNlZFRyaWdnZXJzLmZvckVhY2goKHRyaWdnZXI6IFRyaWdnZXIpID0+IHtcbiAgICBpZiAodHJpZ2dlci5vcGVuID09PSB0cmlnZ2VyLmNsb3NlKSB7XG4gICAgICBsaXN0ZW5lcnMucHVzaChyZW5kZXJlci5saXN0ZW4odGFyZ2V0LCB0cmlnZ2VyLm9wZW4sIHRvZ2dsZUZuKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsaXN0ZW5lcnMucHVzaChcbiAgICAgIHJlbmRlcmVyLmxpc3Rlbih0YXJnZXQsIHRyaWdnZXIub3Blbiwgc2hvd0ZuKSxcbiAgICAgIHJlbmRlcmVyLmxpc3Rlbih0YXJnZXQsIHRyaWdnZXIuY2xvc2UsIGhpZGVGbilcbiAgICApO1xuICB9KTtcblxuICByZXR1cm4gKCkgPT4ge1xuICAgIGxpc3RlbmVycy5mb3JFYWNoKCh1bnN1YnNjcmliZUZuOiBGdW5jdGlvbikgPT4gdW5zdWJzY3JpYmVGbigpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RlblRvVHJpZ2dlcnNWMihyZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBMaXN0ZW5PcHRpb25zKTogRnVuY3Rpb24ge1xuICBjb25zdCBwYXJzZWRUcmlnZ2VycyA9IHBhcnNlVHJpZ2dlcnMob3B0aW9ucy50cmlnZ2Vycyk7XG4gIGNvbnN0IHRhcmdldCA9IG9wdGlvbnMudGFyZ2V0O1xuICAvLyBkbyBub3RoaW5nXG4gIGlmIChwYXJzZWRUcmlnZ2Vycy5sZW5ndGggPT09IDEgJiYgcGFyc2VkVHJpZ2dlcnNbMF0uaXNNYW51YWwoKSkge1xuICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGU7XG4gIH1cblxuICAvLyBhbGwgbGlzdGVuZXJzXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG4gIGNvbnN0IGxpc3RlbmVyczogYW55W10gPSBbXTtcblxuICAvLyBsYXp5IGxpc3RlbmVycyByZWdpc3RyYXRpb25cbiAgY29uc3QgX3JlZ2lzdGVySGlkZTogRnVuY3Rpb25bXSA9IFtdO1xuICBjb25zdCByZWdpc3RlckhpZGUgPSAoKSA9PiB7XG4gICAgLy8gYWRkIGhpZGUgbGlzdGVuZXJzIHRvIHVucmVnaXN0ZXIgYXJyYXlcbiAgICBfcmVnaXN0ZXJIaWRlLmZvckVhY2goKGZuOiBGdW5jdGlvbikgPT4gbGlzdGVuZXJzLnB1c2goZm4oKSkpO1xuICAgIC8vIHJlZ2lzdGVyIGhpZGUgZXZlbnRzIG9ubHkgb25jZVxuICAgIF9yZWdpc3RlckhpZGUubGVuZ3RoID0gMDtcbiAgfTtcblxuICAvLyByZWdpc3RlciBvcGVuXFxjbG9zZVxcdG9nZ2xlIGxpc3RlbmVyc1xuICBwYXJzZWRUcmlnZ2Vycy5mb3JFYWNoKCh0cmlnZ2VyOiBUcmlnZ2VyKSA9PiB7XG4gICAgY29uc3QgdXNlVG9nZ2xlID0gdHJpZ2dlci5vcGVuID09PSB0cmlnZ2VyLmNsb3NlO1xuICAgIGNvbnN0IHNob3dGbiA9IHVzZVRvZ2dsZSA/IG9wdGlvbnMudG9nZ2xlIDogb3B0aW9ucy5zaG93O1xuXG4gICAgaWYgKCF1c2VUb2dnbGUpIHtcbiAgICAgIF9yZWdpc3RlckhpZGUucHVzaCgoKSA9PlxuICAgICAgICByZW5kZXJlci5saXN0ZW4odGFyZ2V0LCB0cmlnZ2VyLmNsb3NlLCBvcHRpb25zLmhpZGUpXG4gICAgICApO1xuICAgIH1cblxuICAgIGxpc3RlbmVycy5wdXNoKFxuICAgICAgcmVuZGVyZXIubGlzdGVuKHRhcmdldCwgdHJpZ2dlci5vcGVuLCAoKSA9PiBzaG93Rm4ocmVnaXN0ZXJIaWRlKSlcbiAgICApO1xuICB9KTtcblxuICByZXR1cm4gKCkgPT4ge1xuICAgIGxpc3RlbmVycy5mb3JFYWNoKCh1bnN1YnNjcmliZUZuOiBGdW5jdGlvbikgPT4gdW5zdWJzY3JpYmVGbigpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyT3V0c2lkZUNsaWNrKHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogTGlzdGVuT3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMub3V0c2lkZUNsaWNrKSB7XG4gICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgfVxuXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG4gIHJldHVybiByZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKGV2ZW50OiBhbnkpID0+IHtcbiAgICBpZiAob3B0aW9ucy50YXJnZXQgJiYgb3B0aW9ucy50YXJnZXQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgb3B0aW9ucy50YXJnZXRzICYmXG4gICAgICBvcHRpb25zLnRhcmdldHMuc29tZSh0YXJnZXQgPT4gdGFyZ2V0LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG9wdGlvbnMuaGlkZSgpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRXNjQ2xpY2socmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IExpc3Rlbk9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zLm91dHNpZGVFc2MpIHtcbiAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlO1xuICB9XG5cbiAgcmV0dXJuIHJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAna2V5dXAuZXNjJywgKGV2ZW50OiBhbnkpID0+IHtcbiAgICBpZiAob3B0aW9ucy50YXJnZXQgJiYgb3B0aW9ucy50YXJnZXQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgb3B0aW9ucy50YXJnZXRzICYmXG4gICAgICBvcHRpb25zLnRhcmdldHMuc29tZSh0YXJnZXQgPT4gdGFyZ2V0LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG9wdGlvbnMuaGlkZSgpO1xuICB9KTtcbn1cbiJdfQ==
@@ -5,6 +5,6 @@
5
5
  /**
6
6
  * Generated bundle index. Do not edit.
7
7
  */
8
- export { isBs3, LinkedList, listenToTriggersV2, registerOutsideClick, OnChange, setTheme, Trigger, Utils, window, document, warnOnce, parseTriggers, listenToTriggers } from './public_api';
8
+ export { isBs3, LinkedList, listenToTriggersV2, registerOutsideClick, registerEscClick, OnChange, setTheme, Trigger, Utils, window, document, warnOnce, parseTriggers, listenToTriggers } from './public_api';
9
9
 
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWJvb3RzdHJhcC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvdXRpbHMvIiwic291cmNlcyI6WyJuZ3gtYm9vdHN0cmFwLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSw2S0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWJvb3RzdHJhcC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvdXRpbHMvIiwic291cmNlcyI6WyJuZ3gtYm9vdHN0cmFwLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwrTEFBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
@@ -5,7 +5,7 @@
5
5
  export { parseTriggers, listenToTriggers } from './triggers';
6
6
  export { isBs3 } from './theme-provider';
7
7
  export { LinkedList } from './linked-list.class';
8
- export { listenToTriggersV2, registerOutsideClick } from './triggers';
8
+ export { listenToTriggersV2, registerOutsideClick, registerEscClick } from './triggers';
9
9
  export { OnChange } from './decorators';
10
10
  export { setTheme } from './theme-provider';
11
11
  export { Trigger } from './trigger.class';
@@ -13,4 +13,4 @@ export { Utils } from './utils.class';
13
13
  export { window, document } from './facade/browser';
14
14
  export { warnOnce } from './warn-once';
15
15
 
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvdXRpbHMvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnREFBYyxZQUFZLENBQUM7QUFDM0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQUssYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90cmlnZ2Vycyc7XG5leHBvcnQgeyBpc0JzMyB9IGZyb20gJy4vdGhlbWUtcHJvdmlkZXInO1xuZXhwb3J0IHsgTGlua2VkTGlzdCB9IGZyb20gJy4vbGlua2VkLWxpc3QuY2xhc3MnO1xuZXhwb3J0IHsgbGlzdGVuVG9UcmlnZ2Vyc1YyLCByZWdpc3Rlck91dHNpZGVDbGljayB9IGZyb20gJy4vdHJpZ2dlcnMnO1xuZXhwb3J0IHsgT25DaGFuZ2UgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuZXhwb3J0IHsgc2V0VGhlbWUgfSBmcm9tICcuL3RoZW1lLXByb3ZpZGVyJztcbmV4cG9ydCB7IFRyaWdnZXIgfSBmcm9tICcuL3RyaWdnZXIuY2xhc3MnO1xuZXhwb3J0IHsgVXRpbHMgfSBmcm9tICcuL3V0aWxzLmNsYXNzJztcbmV4cG9ydCB7IHdpbmRvdywgZG9jdW1lbnQgfSBmcm9tICcuL2ZhY2FkZS9icm93c2VyJztcbmV4cG9ydCB7IHdhcm5PbmNlIH1mcm9tICcuL3dhcm4tb25jZSc7XG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvdXRpbHMvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnREFBYyxZQUFZLENBQUM7QUFDM0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDakIsTUFBTSxZQUFZLENBQUM7QUFFcEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQUssYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90cmlnZ2Vycyc7XG5leHBvcnQgeyBpc0JzMyB9IGZyb20gJy4vdGhlbWUtcHJvdmlkZXInO1xuZXhwb3J0IHsgTGlua2VkTGlzdCB9IGZyb20gJy4vbGlua2VkLWxpc3QuY2xhc3MnO1xuXG5leHBvcnQge1xuICBsaXN0ZW5Ub1RyaWdnZXJzVjIsXG4gIHJlZ2lzdGVyT3V0c2lkZUNsaWNrLFxuICByZWdpc3RlckVzY0NsaWNrXG59IGZyb20gJy4vdHJpZ2dlcnMnO1xuXG5leHBvcnQgeyBPbkNoYW5nZSB9IGZyb20gJy4vZGVjb3JhdG9ycyc7XG5leHBvcnQgeyBzZXRUaGVtZSB9IGZyb20gJy4vdGhlbWUtcHJvdmlkZXInO1xuZXhwb3J0IHsgVHJpZ2dlciB9IGZyb20gJy4vdHJpZ2dlci5jbGFzcyc7XG5leHBvcnQgeyBVdGlscyB9IGZyb20gJy4vdXRpbHMuY2xhc3MnO1xuZXhwb3J0IHsgd2luZG93LCBkb2N1bWVudCB9IGZyb20gJy4vZmFjYWRlL2Jyb3dzZXInO1xuZXhwb3J0IHsgd2Fybk9uY2UgfWZyb20gJy4vd2Fybi1vbmNlJztcbiJdfQ==
@@ -17,6 +17,8 @@ function ListenOptions_tsickle_Closure_declarations() {
17
17
  /** @type {?|undefined} */
18
18
  ListenOptions.prototype.outsideClick;
19
19
  /** @type {?|undefined} */
20
+ ListenOptions.prototype.outsideEsc;
21
+ /** @type {?|undefined} */
20
22
  ListenOptions.prototype.show;
21
23
  /** @type {?|undefined} */
22
24
  ListenOptions.prototype.hide;
@@ -144,5 +146,25 @@ export function registerOutsideClick(renderer, options) {
144
146
  options.hide();
145
147
  });
146
148
  }
149
+ /**
150
+ * @param {?} renderer
151
+ * @param {?} options
152
+ * @return {?}
153
+ */
154
+ export function registerEscClick(renderer, options) {
155
+ if (!options.outsideEsc) {
156
+ return Function.prototype;
157
+ }
158
+ return renderer.listen('document', 'keyup.esc', function (event) {
159
+ if (options.target && options.target.contains(event.target)) {
160
+ return undefined;
161
+ }
162
+ if (options.targets &&
163
+ options.targets.some(function (target) { return target.contains(event.target); })) {
164
+ return undefined;
165
+ }
166
+ options.hide();
167
+ });
168
+ }
147
169
 
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlcnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYm9vdHN0cmFwL3V0aWxzLyIsInNvdXJjZXMiOlsidHJpZ2dlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUtBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZTFDLHFCQUFNLGVBQWUsR0FBRztJQUN0QixLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDO0lBQ2hDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUM7Q0FDL0IsQ0FBQzs7Ozs7O0FBR0YsTUFBTSx3QkFBd0IsUUFBZ0IsRUFBRSxPQUE4QjtJQUE5Qix3QkFBQSxFQUFBLHlCQUE4QjtJQUM1RSxxQkFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFaEQsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxFQUFFLENBQUM7S0FDWDtJQUVELHFCQUFNLGNBQWMsR0FBRyxlQUFlO1NBQ25DLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDWixHQUFHLENBQUMsVUFBQyxPQUFlLElBQUssT0FBQSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFsQixDQUFrQixDQUFDO1NBQzVDLEdBQUcsQ0FBQyxVQUFDLFdBQXFCO1FBQ3pCLHFCQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDO1FBRXJELE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDeEMsQ0FBQyxDQUFDO0lBRUwscUJBQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENB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QU8sQ0FBQyxPQUFPO1lBQ2YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBQSxNQUFNLElBQUksT0FBQSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBN0IsQ0FBNkIsQ0FDOUQsQ0FBQyxDQUFDLENBQUM7WUFDRCxNQUFNLENBQUMsU0FBUyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0tBQ2hCLENBQUMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY29weXJpZ2h0IFZhbG9yIFNvZnR3YXJlXG4gKiBAY29weXJpZ2h0IEFuZ3VsYXIgbmctYm9vdHN0cmFwIHRlYW1cbiAqL1xuaW1wb3J0IHsgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmlnZ2VyIH0gZnJvbSAnLi90cmlnZ2VyLmNsYXNzJztcblxuLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbmV4cG9ydCB0eXBlIEJzRXZlbnRDYWxsYmFjayA9IChldmVudD86IGFueSkgPT4gYm9vbGVhbiB8IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdGVuT3B0aW9ucyB7XG4gIHRhcmdldD86IEhUTUxFbGVtZW50O1xuICB0YXJnZXRzPzogSFRNTEVsZW1lbnRbXTtcbiAgdHJpZ2dlcnM/OiBzdHJpbmc7XG4gIG91dHNpZGVDbGljaz86IGJvb2xlYW47XG4gIHNob3c/OiBCc0V2ZW50Q2FsbGJhY2s7XG4gIGhpZGU/OiBCc0V2ZW50Q2FsbGJhY2s7XG4gIHRvZ2dsZT86IEJzRXZlbnRDYWxsYmFjaztcbn1cblxuY29uc3QgREVGQVVMVF9BTElBU0VTID0ge1xuICBob3ZlcjogWydtb3VzZW92ZXInLCAnbW91c2VvdXQnXSxcbiAgZm9jdXM6IFsnZm9jdXNpbicsICdmb2N1c291dCddXG59O1xuXG4vKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVHJpZ2dlcnModHJpZ2dlcnM6IHN0cmluZywgYWxpYXNlczogYW55ID0gREVGQVVMVF9BTElBU0VTKTogVHJpZ2dlcltdIHtcbiAgY29uc3QgdHJpbW1lZFRyaWdnZXJzID0gKHRyaWdnZXJzIHx8ICcnKS50cmltKCk7XG5cbiAgaWYgKHRyaW1tZWRUcmlnZ2Vycy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBwYXJzZWRUcmlnZ2VycyA9IHRyaW1tZWRUcmlnZ2Vyc1xuICAgIC5zcGxpdCgvXFxzKy8pXG4gICAgLm1hcCgodHJpZ2dlcjogc3RyaW5nKSA9PiB0cmlnZ2VyLnNwbGl0KCc6JykpXG4gICAgLm1hcCgodHJpZ2dlclBhaXI6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBjb25zdCBhbGlhcyA9IGFsaWFzZXNbdHJpZ2dlclBhaXJbMF1dIHx8IHRyaWdnZXJQYWlyO1xuXG4gICAgICByZXR1cm4gbmV3IFRyaWdnZXIoYWxpYXNbMF0sIGFsaWFzWzFdKTtcbiAgICB9KTtcblxuICBjb25zdCBtYW51YWxUcmlnZ2VycyA9IHBhcnNlZFRyaWdnZXJzLmZpbHRlcigodHJpZ2dlclBhaXI6IFRyaWdnZXIpID0+XG4gICAgdHJpZ2dlclBhaXIuaXNNYW51YWwoKVxuICApO1xuXG4gIGlmIChtYW51YWxUcmlnZ2Vycy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUcmlnZ2VycyBwYXJzZSBlcnJvcjogb25seSBvbmUgbWFudWFsIHRyaWdnZXIgaXMgYWxsb3dlZCcpO1xuICB9XG5cbiAgaWYgKG1hbnVhbFRyaWdnZXJzLmxlbmd0aCA9PT0gMSAmJiBwYXJzZWRUcmlnZ2Vycy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUcmlnZ2VycyBwYXJzZSBlcnJvcjogbWFudWFsIHRyaWdnZXIgY2FuXFwndCBiZSBtaXhlZCB3aXRoIG90aGVyIHRyaWdnZXJzJyk7XG4gIH1cblxuICByZXR1cm4gcGFyc2VkVHJpZ2dlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0ZW5Ub1RyaWdnZXJzKHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vyczogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0ZuOiBCc0V2ZW50Q2FsbGJhY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlRm46IEJzRXZlbnRDYWxsYmFjayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUZuOiBCc0V2ZW50Q2FsbGJhY2spOiBGdW5jdGlvbiB7XG4gIGNvbnN0IHBhcnNlZFRyaWdnZXJzID0gcGFyc2VUcmlnZ2Vycyh0cmlnZ2Vycyk7XG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG4gIGNvbnN0IGxpc3RlbmVyczogYW55W10gPSBbXTtcblxuICBpZiAocGFyc2VkVHJpZ2dlcnMubGVuZ3RoID09PSAxICYmIHBhcnNlZFRyaWdnZXJzWzBdLmlzTWFudWFsKCkpIHtcbiAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlO1xuICB9XG5cbiAgcGFyc2VkVHJpZ2dlcnMuZm9yRWFjaCgodHJpZ2dlcjogVHJpZ2dlcikgPT4ge1xuICAgIGlmICh0cmlnZ2VyLm9wZW4gPT09IHRyaWdnZXIuY2xvc2UpIHtcbiAgICAgIGxpc3RlbmVycy5wdXNoKHJlbmRlcmVyLmxpc3Rlbih0YXJnZXQsIHRyaWdnZXIub3BlbiwgdG9nZ2xlRm4pKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxpc3RlbmVycy5wdXNoKFxuICAgICAgcmVuZGVyZXIubGlzdGVuKHRhcmdldCwgdHJpZ2dlci5vcGVuLCBzaG93Rm4pLFxuICAgICAgcmVuZGVyZXIubGlzdGVuKHRhcmdldCwgdHJpZ2dlci5jbG9zZSwgaGlkZUZuKVxuICAgICk7XG4gIH0pO1xuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgbGlzdGVuZXJzLmZvckVhY2goKHVuc3Vic2NyaWJlRm46IEZ1bmN0aW9uKSA9PiB1bnN1YnNjcmliZUZuKCkpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuVG9UcmlnZ2Vyc1YyKHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IExpc3Rlbk9wdGlvbnMpOiBGdW5jdGlvbiB7XG4gIGNvbnN0IHBhcnNlZFRyaWdnZXJzID0gcGFyc2VUcmlnZ2VycyhvcHRpb25zLnRyaWdnZXJzKTtcbiAgY29uc3QgdGFyZ2V0ID0gb3B0aW9ucy50YXJnZXQ7XG4gIC8vIGRvIG5vdGhpbmdcbiAgaWYgKHBhcnNlZFRyaWdnZXJzLmxlbmd0aCA9PT0gMSAmJiBwYXJzZWRUcmlnZ2Vyc1swXS5pc01hbnVhbCgpKSB7XG4gICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgfVxuXG4gIC8vIGFsbCBsaXN0ZW5lcnNcbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbiAgY29uc3QgbGlzdGVuZXJzOiBhbnlbXSA9IFtdO1xuXG4gIC8vIGxhenkgbGlzdGVuZXJzIHJlZ2lzdHJhdGlvblxuICBjb25zdCBfcmVnaXN0ZXJIaWRlOiBGdW5jdGlvbltdID0gW107XG4gIGNvbnN0IHJlZ2lzdGVySGlkZSA9ICgpID0+IHtcbiAgICAvLyBhZGQgaGlkZSBsaXN0ZW5lcnMgdG8gdW5yZWdpc3RlciBhcnJheVxuICAgIF9yZWdpc3RlckhpZGUuZm9yRWFjaCgoZm46IEZ1bmN0aW9uKSA9PiBsaXN0ZW5lcnMucHVzaChmbigpKSk7XG4gICAgLy8gcmVnaXN0ZXIgaGlkZSBldmVudHMgb25seSBvbmNlXG4gICAgX3JlZ2lzdGVySGlkZS5sZW5ndGggPSAwO1xuICB9O1xuXG4gIC8vIHJlZ2lzdGVyIG9wZW5cXGNsb3NlXFx0b2dnbGUgbGlzdGVuZXJzXG4gIHBhcnNlZFRyaWdnZXJzLmZvckVhY2goKHRyaWdnZXI6IFRyaWdnZXIpID0+IHtcbiAgICBjb25zdCB1c2VUb2dnbGUgPSB0cmlnZ2VyLm9wZW4gPT09IHRyaWdnZXIuY2xvc2U7XG4gICAgY29uc3Qgc2hvd0ZuID0gdXNlVG9nZ2xlID8gb3B0aW9ucy50b2dnbGUgOiBvcHRpb25zLnNob3c7XG5cbiAgICBpZiAoIXVzZVRvZ2dsZSkge1xuICAgICAgX3JlZ2lzdGVySGlkZS5wdXNoKCgpID0+XG4gICAgICAgIHJlbmRlcmVyLmxpc3Rlbih0YXJnZXQsIHRyaWdnZXIuY2xvc2UsIG9wdGlvbnMuaGlkZSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGlzdGVuZXJzLnB1c2goXG4gICAgICByZW5kZXJlci5saXN0ZW4odGFyZ2V0LCB0cmlnZ2VyLm9wZW4sICgpID0+IHNob3dGbihyZWdpc3RlckhpZGUpKVxuICAgICk7XG4gIH0pO1xuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgbGlzdGVuZXJzLmZvckVhY2goKHVuc3Vic2NyaWJlRm46IEZ1bmN0aW9uKSA9PiB1bnN1YnNjcmliZUZuKCkpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJPdXRzaWRlQ2xpY2socmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBMaXN0ZW5PcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucy5vdXRzaWRlQ2xpY2spIHtcbiAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlO1xuICB9XG5cbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbiAgcmV0dXJuIHJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgIGlmIChvcHRpb25zLnRhcmdldCAmJiBvcHRpb25zLnRhcmdldC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBvcHRpb25zLnRhcmdldHMgJiZcbiAgICAgIG9wdGlvbnMudGFyZ2V0cy5zb21lKHRhcmdldCA9PiB0YXJnZXQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSlcbiAgICApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgb3B0aW9ucy5oaWRlKCk7XG4gIH0pO1xufVxuIl19
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlcnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYm9vdHN0cmFwL3V0aWxzLyIsInNvdXJjZXMiOlsidHJpZ2dlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUtBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQjFDLHFCQUFNLGVBQWUsR0FBRztJQUN0QixLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDO0lBQ2hDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUM7Q0FDL0IsQ0FBQzs7Ozs7O0FBR0YsTUFBTSx3QkFBd0IsUUFBZ0IsRUFBRSxPQUE4QjtJQUE5Qix3QkFBQSxFQUFBLHlCQUE4QjtJQUM1RSxxQkFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFaEQsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxFQUFFLENBQUM7S0FDWDtJQUVELHFCQUFNLGNBQWMsR0FBRyxlQUFlO1NBQ25DLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDWixHQUFHLENBQUMsVUFBQyxPQUFlLElBQUssT0FBQSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFsQixDQUFrQixDQUFDO1NBQzVDLEdBQUcsQ0FBQyxVQUFDLFdBQXFCO1FBQ3pCLHFCQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDO1FBRXJELE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDeEMsQ0FBQyxDQUFDO0lBRUwscUJBQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxNQUFN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LE9BQU8sQ0FBQyxPQUFPO1lBQ2YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBQSxNQUFNLElBQUksT0FBQSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBN0IsQ0FBNkIsQ0FDOUQsQ0FBQyxDQUFDLENBQUM7WUFDRCxNQUFNLENBQUMsU0FBUyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0tBQ2hCLENBQUMsQ0FBQztDQUNKOzs7Ozs7QUFFRCxNQUFNLDJCQUEyQixRQUFtQixFQUNuQixPQUFzQjtJQUNyRCxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0tBQzNCO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFDLEtBQVU7UUFDekQsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVELE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDbEI7UUFDRCxFQUFFLENBQUMsQ0FDRCxPQUFPLENBQUMsT0FBTztZQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQUEsTUFBTSxJQUFJLE9BQUEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQTdCLENBQTZCLENBQzlELENBQUMsQ0FBQyxDQUFDO1lBQ0QsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUNsQjtRQUVELE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUNoQixDQUFDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGNvcHlyaWdodCBWYWxvciBTb2Z0d2FyZVxuICogQGNvcHlyaWdodCBBbmd1bGFyIG5nLWJvb3RzdHJhcCB0ZWFtXG4gKi9cbmltcG9ydCB7IFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJpZ2dlciB9IGZyb20gJy4vdHJpZ2dlci5jbGFzcyc7XG5cbi8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG5leHBvcnQgdHlwZSBCc0V2ZW50Q2FsbGJhY2sgPSAoZXZlbnQ/OiBhbnkpID0+IGJvb2xlYW4gfCB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpc3Rlbk9wdGlvbnMge1xuICB0YXJnZXQ/OiBIVE1MRWxlbWVudDtcbiAgdGFyZ2V0cz86IEhUTUxFbGVtZW50W107XG4gIHRyaWdnZXJzPzogc3RyaW5nO1xuICBvdXRzaWRlQ2xpY2s/OiBib29sZWFuO1xuICBvdXRzaWRlRXNjPzogYm9vbGVhbjtcbiAgc2hvdz86IEJzRXZlbnRDYWxsYmFjaztcbiAgaGlkZT86IEJzRXZlbnRDYWxsYmFjaztcbiAgdG9nZ2xlPzogQnNFdmVudENhbGxiYWNrO1xufVxuXG5jb25zdCBERUZBVUxUX0FMSUFTRVMgPSB7XG4gIGhvdmVyOiBbJ21vdXNlb3ZlcicsICdtb3VzZW91dCddLFxuICBmb2N1czogWydmb2N1c2luJywgJ2ZvY3Vzb3V0J11cbn07XG5cbi8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUcmlnZ2Vycyh0cmlnZ2Vyczogc3RyaW5nLCBhbGlhc2VzOiBhbnkgPSBERUZBVUxUX0FMSUFTRVMpOiBUcmlnZ2VyW10ge1xuICBjb25zdCB0cmltbWVkVHJpZ2dlcnMgPSAodHJpZ2dlcnMgfHwgJycpLnRyaW0oKTtcblxuICBpZiAodHJpbW1lZFRyaWdnZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZFRyaWdnZXJzID0gdHJpbW1lZFRyaWdnZXJzXG4gICAgLnNwbGl0KC9cXHMrLylcbiAgICAubWFwKCh0cmlnZ2VyOiBzdHJpbmcpID0+IHRyaWdnZXIuc3BsaXQoJzonKSlcbiAgICAubWFwKCh0cmlnZ2VyUGFpcjogc3RyaW5nW10pID0+IHtcbiAgICAgIGNvbnN0IGFsaWFzID0gYWxpYXNlc1t0cmlnZ2VyUGFpclswXV0gfHwgdHJpZ2dlclBhaXI7XG5cbiAgICAgIHJldHVybiBuZXcgVHJpZ2dlcihhbGlhc1swXSwgYWxpYXNbMV0pO1xuICAgIH0pO1xuXG4gIGNvbnN0IG1hbnVhbFRyaWdnZXJzID0gcGFyc2VkVHJpZ2dlcnMuZmlsdGVyKCh0cmlnZ2VyUGFpcjogVHJpZ2dlcikgPT5cbiAgICB0cmlnZ2VyUGFpci5pc01hbnVhbCgpXG4gICk7XG5cbiAgaWYgKG1hbnVhbFRyaWdnZXJzLmxlbmd0aCA+IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyaWdnZXJzIHBhcnNlIGVycm9yOiBvbmx5IG9uZSBtYW51YWwgdHJpZ2dlciBpcyBhbGxvd2VkJyk7XG4gIH1cblxuICBpZiAobWFudWFsVHJpZ2dlcnMubGVuZ3RoID09PSAxICYmIHBhcnNlZFRyaWdnZXJzLmxlbmd0aCA+IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyaWdnZXJzIHBhcnNlIGVycm9yOiBtYW51YWwgdHJpZ2dlciBjYW5cXCd0IGJlIG1peGVkIHdpdGggb3RoZXIgdHJpZ2dlcnMnKTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZWRUcmlnZ2Vycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RlblRvVHJpZ2dlcnMocmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Rm46IEJzRXZlbnRDYWxsYmFjayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVGbjogQnNFdmVudENhbGxiYWNrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRm46IEJzRXZlbnRDYWxsYmFjayk6IEZ1bmN0aW9uIHtcbiAgY29uc3QgcGFyc2VkVHJpZ2dlcnMgPSBwYXJzZVRyaWdnZXJzKHRyaWdnZXJzKTtcbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbiAgY29uc3QgbGlzdGVuZXJzOiBhbnlbXSA9IFtdO1xuXG4gIGlmIChwYXJzZWRUcmlnZ2Vycy5sZW5ndGggPT09IDEgJiYgcGFyc2VkVHJpZ2dlcnNbMF0uaXNNYW51YWwoKSkge1xuICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGU7XG4gIH1cblxuICBwYXJzZWRUcmlnZ2Vycy5mb3JFYWNoKCh0cmlnZ2VyOiBUcmlnZ2VyKSA9PiB7XG4gICAgaWYgKHRyaWdnZXIub3BlbiA9PT0gdHJpZ2dlci5jbG9zZSkge1xuICAgICAgbGlzdGVuZXJzLnB1c2gocmVuZGVyZXIubGlzdGVuKHRhcmdldCwgdHJpZ2dlci5vcGVuLCB0b2dnbGVGbikpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGlzdGVuZXJzLnB1c2goXG4gICAgICByZW5kZXJlci5saXN0ZW4odGFyZ2V0LCB0cmlnZ2VyLm9wZW4sIHNob3dGbiksXG4gICAgICByZW5kZXJlci5saXN0ZW4odGFyZ2V0LCB0cmlnZ2VyLmNsb3NlLCBoaWRlRm4pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBsaXN0ZW5lcnMuZm9yRWFjaCgodW5zdWJzY3JpYmVGbjogRnVuY3Rpb24pID0+IHVuc3Vic2NyaWJlRm4oKSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0ZW5Ub1RyaWdnZXJzVjIocmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogTGlzdGVuT3B0aW9ucyk6IEZ1bmN0aW9uIHtcbiAgY29uc3QgcGFyc2VkVHJpZ2dlcnMgPSBwYXJzZVRyaWdnZXJzKG9wdGlvbnMudHJpZ2dlcnMpO1xuICBjb25zdCB0YXJnZXQgPSBvcHRpb25zLnRhcmdldDtcbiAgLy8gZG8gbm90aGluZ1xuICBpZiAocGFyc2VkVHJpZ2dlcnMubGVuZ3RoID09PSAxICYmIHBhcnNlZFRyaWdnZXJzWzBdLmlzTWFudWFsKCkpIHtcbiAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlO1xuICB9XG5cbiAgLy8gYWxsIGxpc3RlbmVyc1xuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuICBjb25zdCBsaXN0ZW5lcnM6IGFueVtdID0gW107XG5cbiAgLy8gbGF6eSBsaXN0ZW5lcnMgcmVnaXN0cmF0aW9uXG4gIGNvbnN0IF9yZWdpc3RlckhpZGU6IEZ1bmN0aW9uW10gPSBbXTtcbiAgY29uc3QgcmVnaXN0ZXJIaWRlID0gKCkgPT4ge1xuICAgIC8vIGFkZCBoaWRlIGxpc3RlbmVycyB0byB1bnJlZ2lzdGVyIGFycmF5XG4gICAgX3JlZ2lzdGVySGlkZS5mb3JFYWNoKChmbjogRnVuY3Rpb24pID0+IGxpc3RlbmVycy5wdXNoKGZuKCkpKTtcbiAgICAvLyByZWdpc3RlciBoaWRlIGV2ZW50cyBvbmx5IG9uY2VcbiAgICBfcmVnaXN0ZXJIaWRlLmxlbmd0aCA9IDA7XG4gIH07XG5cbiAgLy8gcmVnaXN0ZXIgb3BlblxcY2xvc2VcXHRvZ2dsZSBsaXN0ZW5lcnNcbiAgcGFyc2VkVHJpZ2dlcnMuZm9yRWFjaCgodHJpZ2dlcjogVHJpZ2dlcikgPT4ge1xuICAgIGNvbnN0IHVzZVRvZ2dsZSA9IHRyaWdnZXIub3BlbiA9PT0gdHJpZ2dlci5jbG9zZTtcbiAgICBjb25zdCBzaG93Rm4gPSB1c2VUb2dnbGUgPyBvcHRpb25zLnRvZ2dsZSA6IG9wdGlvbnMuc2hvdztcblxuICAgIGlmICghdXNlVG9nZ2xlKSB7XG4gICAgICBfcmVnaXN0ZXJIaWRlLnB1c2goKCkgPT5cbiAgICAgICAgcmVuZGVyZXIubGlzdGVuKHRhcmdldCwgdHJpZ2dlci5jbG9zZSwgb3B0aW9ucy5oaWRlKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsaXN0ZW5lcnMucHVzaChcbiAgICAgIHJlbmRlcmVyLmxpc3Rlbih0YXJnZXQsIHRyaWdnZXIub3BlbiwgKCkgPT4gc2hvd0ZuKHJlZ2lzdGVySGlkZSkpXG4gICAgKTtcbiAgfSk7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBsaXN0ZW5lcnMuZm9yRWFjaCgodW5zdWJzY3JpYmVGbjogRnVuY3Rpb24pID0+IHVuc3Vic2NyaWJlRm4oKSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlck91dHNpZGVDbGljayhyZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IExpc3Rlbk9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zLm91dHNpZGVDbGljaykge1xuICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGU7XG4gIH1cblxuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuICByZXR1cm4gcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsIChldmVudDogYW55KSA9PiB7XG4gICAgaWYgKG9wdGlvbnMudGFyZ2V0ICYmIG9wdGlvbnMudGFyZ2V0LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIG9wdGlvbnMudGFyZ2V0cyAmJlxuICAgICAgb3B0aW9ucy50YXJnZXRzLnNvbWUodGFyZ2V0ID0+IHRhcmdldC5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBvcHRpb25zLmhpZGUoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckVzY0NsaWNrKHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBMaXN0ZW5PcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucy5vdXRzaWRlRXNjKSB7XG4gICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgfVxuXG4gIHJldHVybiByZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2tleXVwLmVzYycsIChldmVudDogYW55KSA9PiB7XG4gICAgaWYgKG9wdGlvbnMudGFyZ2V0ICYmIG9wdGlvbnMudGFyZ2V0LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIG9wdGlvbnMudGFyZ2V0cyAmJlxuICAgICAgb3B0aW9ucy50YXJnZXRzLnNvbWUodGFyZ2V0ID0+IHRhcmdldC5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBvcHRpb25zLmhpZGUoKTtcbiAgfSk7XG59XG4iXX0=