@ember-eui/core 10.0.4 → 10.0.5

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 (207) hide show
  1. package/declarations/components/eui-global-toast-list.d.ts +0 -1
  2. package/declarations/components/eui-global-toast-list.d.ts.map +1 -1
  3. package/dist/components/eui-accordion.js.map +1 -1
  4. package/dist/components/eui-auto-sizer.js.map +1 -1
  5. package/dist/components/eui-avatar.js.map +1 -1
  6. package/dist/components/eui-badge-group.js.map +1 -1
  7. package/dist/components/eui-badge.js.map +1 -1
  8. package/dist/components/eui-beta-badge.js.map +1 -1
  9. package/dist/components/eui-bottom-bar.js.map +1 -1
  10. package/dist/components/eui-breadcrumbs.js.map +1 -1
  11. package/dist/components/eui-button-content.js.map +1 -1
  12. package/dist/components/eui-button-empty.js.map +1 -1
  13. package/dist/components/eui-button-group-button.js.map +1 -1
  14. package/dist/components/eui-button-group.js.map +1 -1
  15. package/dist/components/eui-button-icon.js.map +1 -1
  16. package/dist/components/eui-button.js.map +1 -1
  17. package/dist/components/eui-call-out.js.map +1 -1
  18. package/dist/components/eui-card-select.js.map +1 -1
  19. package/dist/components/eui-card.js.map +1 -1
  20. package/dist/components/eui-checkable-card.js.map +1 -1
  21. package/dist/components/eui-checkbox-group.js.map +1 -1
  22. package/dist/components/eui-checkbox.js.map +1 -1
  23. package/dist/components/eui-code-block/controls.js.map +1 -1
  24. package/dist/components/eui-code-block/full-screen-display.js.map +1 -1
  25. package/dist/components/eui-code-block/virtualized.js.map +1 -1
  26. package/dist/components/eui-code-block.js.map +1 -1
  27. package/dist/components/eui-code.js.map +1 -1
  28. package/dist/components/eui-collapsible-nav-group.js.map +1 -1
  29. package/dist/components/eui-collapsible-nav.js.map +1 -1
  30. package/dist/components/eui-combo-box/create-option.js.map +1 -1
  31. package/dist/components/eui-combo-box/group.js.map +1 -1
  32. package/dist/components/eui-combo-box/no-matches-message.js.map +1 -1
  33. package/dist/components/eui-combo-box/options.js.map +1 -1
  34. package/dist/components/eui-combo-box/search-message.js.map +1 -1
  35. package/dist/components/eui-combo-box/trigger/input.js.map +1 -1
  36. package/dist/components/eui-combo-box/trigger.js.map +1 -1
  37. package/dist/components/eui-combo-box-pill.js.map +1 -1
  38. package/dist/components/eui-combo-box.js.map +1 -1
  39. package/dist/components/eui-comment-list.js.map +1 -1
  40. package/dist/components/eui-comment-timeline.js.map +1 -1
  41. package/dist/components/eui-comment.js.map +1 -1
  42. package/dist/components/eui-confirm-modal.js.map +1 -1
  43. package/dist/components/eui-context-menu-item.js.map +1 -1
  44. package/dist/components/eui-context-menu-panel.js.map +1 -1
  45. package/dist/components/eui-copy.js.map +1 -1
  46. package/dist/components/eui-described-form-group.js.map +1 -1
  47. package/dist/components/eui-description-list-description.js.map +1 -1
  48. package/dist/components/eui-description-list-title.js.map +1 -1
  49. package/dist/components/eui-description-list.js.map +1 -1
  50. package/dist/components/eui-dual-range.js.map +1 -1
  51. package/dist/components/eui-empty-prompt.js.map +1 -1
  52. package/dist/components/eui-field-number.js.map +1 -1
  53. package/dist/components/eui-field-password.js.map +1 -1
  54. package/dist/components/eui-field-search.js.map +1 -1
  55. package/dist/components/eui-field-text.js.map +1 -1
  56. package/dist/components/eui-file-picker.js.map +1 -1
  57. package/dist/components/eui-flex-grid.js.map +1 -1
  58. package/dist/components/eui-flex-group.js.map +1 -1
  59. package/dist/components/eui-flex-item.js.map +1 -1
  60. package/dist/components/eui-flyout-body.js.map +1 -1
  61. package/dist/components/eui-flyout-footer.js.map +1 -1
  62. package/dist/components/eui-flyout-header.js.map +1 -1
  63. package/dist/components/eui-flyout.js.map +1 -1
  64. package/dist/components/eui-form-control-layout-clear-button.js.map +1 -1
  65. package/dist/components/eui-form-control-layout-custom-icon.js.map +1 -1
  66. package/dist/components/eui-form-control-layout-delimited.js.map +1 -1
  67. package/dist/components/eui-form-control-layout-icons.js.map +1 -1
  68. package/dist/components/eui-form-control-layout.js.map +1 -1
  69. package/dist/components/eui-form-error-text.js.map +1 -1
  70. package/dist/components/eui-form-fieldset.js.map +1 -1
  71. package/dist/components/eui-form-help-text.js.map +1 -1
  72. package/dist/components/eui-form-label.js.map +1 -1
  73. package/dist/components/eui-form-legend.js.map +1 -1
  74. package/dist/components/eui-form-row.js.map +1 -1
  75. package/dist/components/eui-form.js.map +1 -1
  76. package/dist/components/eui-global-toast-list.js.map +1 -1
  77. package/dist/components/eui-header-alert.js.map +1 -1
  78. package/dist/components/eui-header-breadcrumbs.js.map +1 -1
  79. package/dist/components/eui-header-link.js.map +1 -1
  80. package/dist/components/eui-header-links.js.map +1 -1
  81. package/dist/components/eui-header-logo.js.map +1 -1
  82. package/dist/components/eui-header-section-item-button.js.map +1 -1
  83. package/dist/components/eui-header-section-item.js.map +1 -1
  84. package/dist/components/eui-header-section.js.map +1 -1
  85. package/dist/components/eui-header.js.map +1 -1
  86. package/dist/components/eui-health.js.map +1 -1
  87. package/dist/components/eui-hide-for.js.map +1 -1
  88. package/dist/components/eui-horizontal-rule.js.map +1 -1
  89. package/dist/components/eui-i18n/render.js.map +1 -1
  90. package/dist/components/eui-i18n.js.map +1 -1
  91. package/dist/components/eui-icon-tip.js.map +1 -1
  92. package/dist/components/eui-icon.js.map +1 -1
  93. package/dist/components/eui-image.js.map +1 -1
  94. package/dist/components/eui-inner-text.js.map +1 -1
  95. package/dist/components/eui-input-popover.js.map +1 -1
  96. package/dist/components/eui-key-pad-menu-item.js.map +1 -1
  97. package/dist/components/eui-key-pad-menu.js.map +1 -1
  98. package/dist/components/eui-link.js.map +1 -1
  99. package/dist/components/eui-list-group-item.js.map +1 -1
  100. package/dist/components/eui-list-group.js.map +1 -1
  101. package/dist/components/eui-loading-content.js.map +1 -1
  102. package/dist/components/eui-loading-logo.js.map +1 -1
  103. package/dist/components/eui-loading-spinner.js.map +1 -1
  104. package/dist/components/eui-markdown-editor-drop-zone.js.map +1 -1
  105. package/dist/components/eui-markdown-editor-footer/icons/markdown-logo.js.map +1 -1
  106. package/dist/components/eui-markdown-editor-footer.js.map +1 -1
  107. package/dist/components/eui-markdown-editor-text-area.js.map +1 -1
  108. package/dist/components/eui-markdown-editor-toolbar/icons/markdown-checkmark.js.map +1 -1
  109. package/dist/components/eui-markdown-editor-toolbar.js.map +1 -1
  110. package/dist/components/eui-markdown-editor.js.map +1 -1
  111. package/dist/components/eui-markdown-format/markdown-checkbox.js.map +1 -1
  112. package/dist/components/eui-markdown-format/markdown-code-block.js.map +1 -1
  113. package/dist/components/eui-markdown-format/markdown-code.js.map +1 -1
  114. package/dist/components/eui-markdown-format/markdown-tooltip.js.map +1 -1
  115. package/dist/components/eui-markdown-format.js.map +1 -1
  116. package/dist/components/eui-modal-body.js.map +1 -1
  117. package/dist/components/eui-modal-footer.js.map +1 -1
  118. package/dist/components/eui-modal-header-title.js.map +1 -1
  119. package/dist/components/eui-modal-header.js.map +1 -1
  120. package/dist/components/eui-modal.js.map +1 -1
  121. package/dist/components/eui-notification-badge.js.map +1 -1
  122. package/dist/components/eui-notification-event-messages.js.map +1 -1
  123. package/dist/components/eui-notification-event-meta.js.map +1 -1
  124. package/dist/components/eui-notification-event-read-button.js.map +1 -1
  125. package/dist/components/eui-notification-event-read-icon.js.map +1 -1
  126. package/dist/components/eui-notification-event.js.map +1 -1
  127. package/dist/components/eui-overlay-mask.js.map +1 -1
  128. package/dist/components/eui-page-body.js.map +1 -1
  129. package/dist/components/eui-page-content-body.js.map +1 -1
  130. package/dist/components/eui-page-content-header-section.js.map +1 -1
  131. package/dist/components/eui-page-content-header.js.map +1 -1
  132. package/dist/components/eui-page-content.js.map +1 -1
  133. package/dist/components/eui-page-header-content.js.map +1 -1
  134. package/dist/components/eui-page-header-section.js.map +1 -1
  135. package/dist/components/eui-page-header.js.map +1 -1
  136. package/dist/components/eui-page-side-bar.js.map +1 -1
  137. package/dist/components/eui-page-template.js.map +1 -1
  138. package/dist/components/eui-page.js.map +1 -1
  139. package/dist/components/eui-pagination/button-wrapper.js.map +1 -1
  140. package/dist/components/eui-pagination/next-button.js.map +1 -1
  141. package/dist/components/eui-pagination/previous-button.js.map +1 -1
  142. package/dist/components/eui-pagination-button.js.map +1 -1
  143. package/dist/components/eui-pagination.js.map +1 -1
  144. package/dist/components/eui-panel.js.map +1 -1
  145. package/dist/components/eui-popover-footer.js.map +1 -1
  146. package/dist/components/eui-popover-title.js.map +1 -1
  147. package/dist/components/eui-popover.js.map +1 -1
  148. package/dist/components/eui-portal.js.map +1 -1
  149. package/dist/components/eui-progress.js.map +1 -1
  150. package/dist/components/eui-radio-group.js.map +1 -1
  151. package/dist/components/eui-radio.js.map +1 -1
  152. package/dist/components/eui-range-highlight.js.map +1 -1
  153. package/dist/components/eui-range-input.js.map +1 -1
  154. package/dist/components/eui-range-label.js.map +1 -1
  155. package/dist/components/eui-range-levels.js.map +1 -1
  156. package/dist/components/eui-range-slider.js.map +1 -1
  157. package/dist/components/eui-range-thumb.js.map +1 -1
  158. package/dist/components/eui-range-ticks.js.map +1 -1
  159. package/dist/components/eui-range-tooltip.js.map +1 -1
  160. package/dist/components/eui-range-track.js.map +1 -1
  161. package/dist/components/eui-range-wrapper.js.map +1 -1
  162. package/dist/components/eui-range.js.map +1 -1
  163. package/dist/components/eui-select.js.map +1 -1
  164. package/dist/components/eui-selectable-list-item.js.map +1 -1
  165. package/dist/components/eui-show-for.js.map +1 -1
  166. package/dist/components/eui-side-nav-item/button.js.map +1 -1
  167. package/dist/components/eui-side-nav-item.js.map +1 -1
  168. package/dist/components/eui-side-nav.js.map +1 -1
  169. package/dist/components/eui-spacer.js.map +1 -1
  170. package/dist/components/eui-split-panel/inner.js.map +1 -1
  171. package/dist/components/eui-split-panel/outer.js.map +1 -1
  172. package/dist/components/eui-stat/description.js.map +1 -1
  173. package/dist/components/eui-stat/title.js.map +1 -1
  174. package/dist/components/eui-stat.js.map +1 -1
  175. package/dist/components/eui-step-horizontal.js.map +1 -1
  176. package/dist/components/eui-step-number.js.map +1 -1
  177. package/dist/components/eui-step.js.map +1 -1
  178. package/dist/components/eui-steps-horizontal.js.map +1 -1
  179. package/dist/components/eui-steps.js.map +1 -1
  180. package/dist/components/eui-sub-steps.js.map +1 -1
  181. package/dist/components/eui-super-date-picker/date-popover/absolute-tab.js.map +1 -1
  182. package/dist/components/eui-super-date-picker/date-popover/datetime-picker.js.map +1 -1
  183. package/dist/components/eui-super-date-picker/date-popover/eui-date-popover-button.js.map +1 -1
  184. package/dist/components/eui-super-date-picker/date-popover/eui-date-popover-content.js.map +1 -1
  185. package/dist/components/eui-super-date-picker/date-popover/now-tab.js.map +1 -1
  186. package/dist/components/eui-super-date-picker/date-popover/relative-tab.js.map +1 -1
  187. package/dist/components/eui-super-date-picker/eui-date-picker-range.js.map +1 -1
  188. package/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-commonly-used-time-ranges.js.map +1 -1
  189. package/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js.map +1 -1
  190. package/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-recently-used.js.map +1 -1
  191. package/dist/components/eui-super-date-picker/eui-quick-select-popover.js.map +1 -1
  192. package/dist/components/eui-super-date-picker/eui-super-update-button.js.map +1 -1
  193. package/dist/components/eui-super-date-picker.js.map +1 -1
  194. package/dist/components/eui-switch.js.map +1 -1
  195. package/dist/components/eui-tab.js.map +1 -1
  196. package/dist/components/eui-tabbed-content.js.map +1 -1
  197. package/dist/components/eui-tabs.js.map +1 -1
  198. package/dist/components/eui-text-align.js.map +1 -1
  199. package/dist/components/eui-text-area.js.map +1 -1
  200. package/dist/components/eui-text-color.js.map +1 -1
  201. package/dist/components/eui-text.js.map +1 -1
  202. package/dist/components/eui-title.js.map +1 -1
  203. package/dist/components/eui-toast.js.map +1 -1
  204. package/dist/components/eui-tool-tip-popover.js.map +1 -1
  205. package/dist/components/eui-tool-tip.js.map +1 -1
  206. package/dist/components/text-block.js.map +1 -1
  207. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"eui-popover.js","sources":["../../src/components/eui-popover.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { hash } from '@ember/helper';\nimport { concat } from '@ember/helper';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { cancel, later, scheduleOnce } from '@ember/runloop';\nimport { htmlSafe } from '@ember/template';\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { focusTrap } from 'ember-focus-trap';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { and, not, or } from 'ember-truth-helpers';\nimport { tabbable } from 'tabbable';\nimport randomId from '../-private/random-id.ts';\nimport { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport merge from '../helpers/merge.ts';\nimport mutationObserver from '../modifiers/mutation-observer.ts';\nimport outsideClickDetector from '../modifiers/outside-click-detector.ts';\nimport screenReaderOnly from '../modifiers/screen-reader-only.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport { cascadingMenuKeys } from '../utils/accesibility/index.ts';\nimport { anchorPositionMapping, displayMapping } from '../utils/css-mappings/eui-popover.ts';\nimport { findPopoverPosition, getElementZIndex } from '../utils/popover/index.ts';\nimport { getTransitionTimings, getWaitDuration, performOnFrame } from '../utils/transition.ts';\nimport EuiPanel from './eui-panel.gts';\nimport EuiPortal from './eui-portal.gts';\nimport type { paddingSizeMapping } from '../utils/css-mappings/eui-panel.ts';\nimport type { EuiPopoverPosition } from '../utils/popover/types';\nimport type { EmberKeyboardEvent } from 'ember-keyboard/modifiers/on-key';\ntype PanelPaddingSize = keyof typeof paddingSizeMapping;\nexport type PopoverAnchorPosition = 'upCenter' | 'upLeft' | 'upRight' | 'downCenter' | 'downLeft' | 'downRight' | 'leftCenter' | 'leftUp' | 'leftDown' | 'rightCenter' | 'rightUp' | 'rightDown';\nexport type EuiPopoverArgs = {\n panelClasses?: string;\n /**\n * Class name passed to the direct parent of the button\n */ anchorClassName?: string;\n /**\n * Alignment of the popover and arrow relative to the button\n */ anchorPosition?: PopoverAnchorPosition;\n /**\n * Style and position alteration for arrow-less, left-aligned\n * attachment. Intended for use with inputs as anchors, e.g.\n * EuiInputPopover\n */ attachToAnchor?: boolean;\n /**\n * Triggering element for which to align the popover to\n */ button?: Component;\n buttonRef?: (e: HTMLDivElement) => unknown;\n /**\n * Callback to handle hiding of the popover\n */ closePopover: () => void;\n /**\n * Restrict the popover's position within this element\n */ container?: HTMLElement;\n /**\n * CSS display type for both the popover and anchor\n */ display?: keyof typeof displayMapping;\n /**\n * Show arrow indicating to originating button\n */ hasArrow?: boolean;\n /**\n * Specifies what element should initially have focus; Can be a DOM\n * node, or a selector string (which will be passed to\n * document.querySelector() to find the DOM node), or a function that\n * returns a DOM node\n */ initialFocus?: FocusTarget | false;\n /**\n * Passed directly to EuiPortal for DOM positioning. Both properties are\n * required if prop is specified\n */ insert?: {\n sibling: HTMLElement;\n position: 'before' | 'after';\n };\n /**\n * Visibility state of the popover\n */ isOpen?: boolean;\n /**\n * Traps tab focus within the popover contents\n */ ownFocus?: boolean;\n /**\n * Custom class added to the EuiPanel containing the popover contents\n */ panelClassName?: string;\n /**\n * EuiPanel padding on all sides\n */ panelPaddingSize?: PanelPaddingSize;\n /**\n * Standard DOM `style` attribute. Passed to the EuiPanel\n */ panelStyle?: {\n [i: string]: string;\n };\n panelRef?: (e: HTMLElement | null) => unknown;\n popoverRef?: (e: HTMLElement) => unknown;\n /**\n * when not `false`, the popover will check if this popover is inside another popover and if so. will reposition itself to be inside the other popover\n */ shouldAccountForOtherPopovers?: boolean;\n /**\n * When `true`, the popover's position is re-calculated when the user\n * scrolls, this supports having fixed-position popover anchors\n */ repositionOnScroll?: boolean;\n /**\n * By default, popover content inherits the z-index of the anchor\n * component; pass `zIndex` to override\n */ zIndex?: number;\n /**\n * Function callback for when the focus trap is deactivated\n */ onTrapDeactivation?: () => void;\n /**\n * Distance away from the anchor that the popover will render\n */ offset?: number;\n /**\n * Minimum distance between the popover and the bounding container;\n * Pass an array of 4 values to adjust each side differently: `[top, right, bottom, left]`\n * Default is 16\n */ buffer?: number | [number, number, number, number];\n /**\n * Element to pass as the child element of the arrow;\n * Use case is typically limited to an accompanying `EuiBeacon`\n */ arrowChildren?: Component;\n /**\n * Provide a name to the popover panel\n */ ariaLabel?: string;\n /**\n * Alternative option to `aria-label` that takes an `id`.\n * Usually takes the `id` of the popover title\n */ ariaLabelledBy?: string;\n tabindex?: string | number;\n shouldSelfFocus?: boolean;\n isFocusTrapPaused?: boolean;\n focusTrapOptions?: {\n onClickOutside?: (e: Event) => void;\n };\n mutationObserverOptions?: {\n attributes?: boolean;\n childList?: boolean;\n characterData?: boolean;\n subtree?: boolean;\n };\n};\ntype AnchorPosition = 'up' | 'right' | 'down' | 'left';\nconst anchorPositionToPopoverPositionMap: {\n [position in AnchorPosition]: EuiPopoverPosition;\n} = {\n up: 'top',\n right: 'right',\n down: 'bottom',\n left: 'left'\n};\nexport function getPopoverPositionFromAnchorPosition(anchorPosition1: PopoverAnchorPosition): EuiPopoverPosition {\n // maps the anchor position to the matching popover position\n // e.g. \"upLeft\" -> \"top\", \"downRight\" -> \"bottom\"\n // extract the first positional word from anchorPosition:\n // starts at the beginning (\" ^ \") of anchorPosition and\n // captures all of the characters (\" (.*?) \") until the\n // first capital letter (\" [A-Z] \") is encountered\n const match1 = anchorPosition1.match(/^(.*?)[A-Z]/);\n if (match1?.length && match1.length > 1) {\n return anchorPositionToPopoverPositionMap[match1[1] as AnchorPosition];\n }\n return anchorPositionToPopoverPositionMap['up'];\n}\nexport function getPopoverAlignFromAnchorPosition(anchorPosition1: PopoverAnchorPosition): EuiPopoverPosition {\n // maps the gravity to the matching popover position\n // e.g. \"upLeft\" -> \"left\", \"rightDown\" -> \"bottom\"\n // extract the second positional word from anchorPosition:\n // starts a capture group at the first capital letter\n // and includes everything after it\n const match1 = anchorPosition1.match(/([A-Z].*)/);\n // this performs two tasks:\n // 1. normalizes the align position by lowercasing it\n // 2. `center` doesn't exist in the lookup map which converts it to `undefined` meaning no align\n if (match1?.length && match1.length > 1) {\n return anchorPositionToPopoverPositionMap[match1[1]?.toLowerCase() as AnchorPosition];\n }\n return anchorPositionToPopoverPositionMap['left'];\n}\nexport const ANCHOR_POSITIONS = Object.keys(anchorPositionMapping);\nexport const DISPLAY = Object.keys(displayMapping);\nexport type FocusTarget = HTMLElement | string | (() => HTMLElement);\nconst DEFAULT_POPOVER_STYLES = {\n top: 50,\n left: 50\n};\nfunction getElementFromInitialFocus(initialFocus1?: FocusTarget): HTMLElement | null {\n const initialFocusType1 = typeof initialFocus1;\n if (initialFocusType1 === 'string') {\n return document.querySelector(initialFocus1 as string);\n }\n if (initialFocusType1 === 'function') {\n return (initialFocus1 as () => HTMLElement | null)();\n }\n return initialFocus1 as HTMLElement | null;\n}\ntype CssProps = {\n top?: number;\n left?: number;\n right?: number;\n bottom?: number;\n zIndex?: number;\n};\nexport interface EuiPopoverSignature {\n Element: HTMLDivElement;\n Args: EuiPopoverArgs;\n Blocks: {\n button: [];\n content: [];\n arrowChildren: [];\n };\n}\nexport default class EuiPopoverComponent extends Component<EuiPopoverSignature> {\n // Defaults\n @argOrDefaultDecorator(false)\n isOpen: boolean;\n @argOrDefaultDecorator(true)\n ownFocus: boolean;\n @argOrDefaultDecorator('downCenter')\n anchorPosition: PopoverAnchorPosition;\n @argOrDefaultDecorator('m')\n panelPaddingSize: PanelPaddingSize;\n @argOrDefaultDecorator(true)\n hasArrow: boolean;\n @argOrDefaultDecorator('inlineBlock')\n display: string;\n @argOrDefaultDecorator(true)\n shouldSelfFocus: boolean;\n @argOrDefaultDecorator(false)\n isFocusTrapPaused: boolean;\n //State\n @tracked\n prevIsOpen: boolean | undefined;\n @tracked\n suppressingPopover: boolean | undefined;\n @tracked\n isClosing = false;\n @tracked\n isOpening = false;\n @tracked\n popoverStyles: CssProps = {};\n @tracked\n arrowStyles: CssProps | undefined = {};\n @tracked\n arrowPosition: EuiPopoverPosition | null = null;\n @tracked\n openPosition: EuiPopoverPosition | null = null;\n @tracked\n isOpenStable = false;\n @tracked\n isCurrentlyOpen: boolean | undefined;\n @tracked\n popoverHost?: HTMLElement | null = null;\n ///\n private respositionTimeout: ReturnType<typeof later> | null = null;\n private closingTransitionTimeout: ReturnType<typeof later> | null = null;\n private closingTransitionAnimationFrame: number | undefined;\n private updateFocusAnimationFrame: number | undefined;\n private hasSetInitialFocus: boolean = false;\n @tracked\n button: HTMLElement | null = null;\n @tracked\n panel: HTMLElement | null = null;\n constructor(owner1: unknown, args1: EuiPopoverArgs){\n super(owner1, args1);\n assert(`Must provide closePopover function`, this.args.closePopover);\n this.prevIsOpen = this.isOpen;\n this.suppressingPopover = this.isOpen;\n this.isCurrentlyOpen = this.isOpen;\n }\n get insert() {\n if (this.args.insert) {\n return this.args.insert;\n }\n if (this.shouldAccountForOtherPopovers) {\n if (this.popoverHost) {\n return {\n sibling: this.popoverHost.children[0] as HTMLElement,\n position: 'after'\n };\n }\n }\n return undefined;\n }\n @action\n closePopover(): void {\n if (this.isOpen) {\n this.args.closePopover();\n }\n }\n @action\n onEscapeKey(event1: Event, ekEvent1?: EmberKeyboardEvent): void {\n if (this.isOpen) {\n ekEvent1?.stopPropagation();\n ekEvent1?.stopImmediatePropagation();\n event1.preventDefault();\n event1.stopPropagation();\n this.closePopover();\n }\n }\n @action\n onKeyDown(event1: KeyboardEvent, ekEvent1: EmberKeyboardEvent): void {\n if (event1.key === cascadingMenuKeys.ESCAPE) {\n this.onEscapeKey(event1 as unknown as Event, ekEvent1 as unknown as Event);\n }\n }\n @action\n onClickOutside(event1: Event): void {\n if (this.args.focusTrapOptions?.onClickOutside) {\n this.args.focusTrapOptions.onClickOutside(event1);\n } else {\n // only close the popover if the event source isn't the anchor button\n // otherwise, it is up to the anchor to toggle the popover's open status\n if (this.button && this.button.contains(event1.target as Node) === false) {\n this.closePopover();\n }\n }\n }\n updateFocus(): void {\n // Wait for the DOM to update.\n this.updateFocusAnimationFrame = window.requestAnimationFrame(()=>{\n if (!this.ownFocus || !this.panel || this.args.initialFocus === false) {\n return;\n }\n // If we've already focused on something inside the panel, everything's fine.\n if (this.hasSetInitialFocus && this.panel.contains(document.activeElement)) {\n return;\n }\n // Otherwise let's focus the first tabbable item and expedite input from the user.\n let focusTarget1;\n if (this.args.initialFocus != null) {\n focusTarget1 = getElementFromInitialFocus(this.args.initialFocus);\n } else {\n const tabbableItems1 = tabbable(this.panel);\n if (tabbableItems1.length) {\n focusTarget1 = tabbableItems1[0];\n }\n }\n // there's a race condition between the popover content becoming visible and this function call\n // if the element isn't visible yet (due to css styling) then it can't accept focus\n // so wait for another render and try again\n if (focusTarget1 == null) {\n // there isn't a focus target, one of two reasons:\n // #1 is the whole panel hidden? If so, schedule another check\n // #2 panel is visible but no tabbables exist, move focus to the panel\n const panelVisibility1 = window.getComputedStyle(this.panel).opacity;\n if (panelVisibility1 === '0') {\n // #1\n this.updateFocus();\n } else {\n // #2\n focusTarget1 = this.panel;\n }\n } else {\n // found an element to focus, but is it visible?\n const visibility1 = window.getComputedStyle(focusTarget1).visibility;\n if (visibility1 === 'hidden') {\n // not visible, check again next render frame\n this.updateFocus();\n }\n }\n if (focusTarget1 != null) {\n this.hasSetInitialFocus = true;\n focusTarget1.focus();\n }\n });\n }\n @action\n onOpenPopover(): void {\n cancel(this.closingTransitionTimeout as ReturnType<typeof later>);\n // We need to set this state a beat after the render takes place, so that the CSS\n // transition can take effect.\n this.closingTransitionAnimationFrame = window.requestAnimationFrame(()=>{\n this.isOpening = true;\n });\n // for each child element of `this.panel`, find any transition duration we should wait for before stabilizing\n const { durationMatch: durationMatch1, delayMatch: delayMatch1 } = Array.prototype.slice.call(this.panel ? this.panel.children : []).reduce(({ durationMatch: durationMatch1, delayMatch: delayMatch1 }: {\n durationMatch: number;\n delayMatch: number;\n }, element1: HTMLElement)=>{\n const transitionTimings1 = getTransitionTimings(element1);\n return {\n durationMatch: Math.max(durationMatch1, transitionTimings1.durationMatch),\n delayMatch: Math.max(delayMatch1, transitionTimings1.delayMatch)\n };\n }, {\n durationMatch: 0,\n delayMatch: 0\n });\n this.respositionTimeout = later(this, ()=>{\n this.isOpenStable = true;\n const fn1 = (): void =>{\n this.positionPopoverFixed();\n this.updateFocus();\n };\n scheduleOnce('afterRender', this, fn1);\n }, durationMatch1 + delayMatch1);\n }\n get shouldAccountForOtherPopovers() {\n return this.args.shouldAccountForOtherPopovers ?? true;\n }\n checkIfPopoverIsInsideAnotherPopover(ele1: HTMLElement) {\n const otherPopover1 = ele1.closest<HTMLDivElement>('div.euiPopover__panel');\n this.popoverHost = otherPopover1;\n }\n @action\n didInsertPopover(ele1: HTMLDivElement): void {\n if (this.suppressingPopover) {\n // component was created with isOpen=true; now that it's inserted\n // stop suppressing and start opening\n this.suppressingPopover = false;\n this.isOpening = true;\n const fn1 = (): void =>this.onOpenPopover();\n scheduleOnce('afterRender', this, fn1);\n }\n if (this.args.repositionOnScroll) {\n window.addEventListener('scroll', this.positionPopoverFixed, true);\n }\n if (this.shouldAccountForOtherPopovers) {\n this.checkIfPopoverIsInsideAnotherPopover(ele1);\n }\n this.updateFocus();\n }\n @action\n didUpdateRepositionOnScroll(): void {\n if (this.args.repositionOnScroll) {\n window.addEventListener('scroll', this.positionPopoverFixed, true);\n } else {\n window.removeEventListener('scroll', this.positionPopoverFixed, true);\n }\n }\n @action\n didUpdateIsOpen(): void {\n this.isCurrentlyOpen = this.isOpen;\n if (!this.prevIsOpen && this.args.isOpen) {\n this.onOpenPopover();\n }\n if (this.prevIsOpen && !this.args.isOpen) {\n // If the user has just closed the popover, queue up the removal of the content after the\n // transition is complete.\n this.isClosing = true;\n this.isOpening = false;\n this.closingTransitionTimeout = later(this, ()=>{\n this.isClosing = false;\n }, 250);\n }\n this.prevIsOpen = this.args.isOpen;\n }\n willDestroy(): void {\n super.willDestroy();\n window.removeEventListener('scroll', this.positionPopoverFixed, true);\n this.popoverHost = null;\n cancel(this.respositionTimeout as ReturnType<typeof later>);\n cancel(this.closingTransitionTimeout as ReturnType<typeof later>);\n cancelAnimationFrame(this.closingTransitionAnimationFrame as number);\n cancelAnimationFrame(this.updateFocusAnimationFrame as number);\n }\n @action\n onMutation(records1: MutationRecord[]): void {\n const waitDuration1 = getWaitDuration(records1);\n this.positionPopoverFixed();\n performOnFrame(waitDuration1, this.positionPopoverFixed);\n }\n @action\n positionPopover(allowEnforcePosition1: boolean): void {\n if (this.button == null || this.panel == null) return;\n let position1 = getPopoverPositionFromAnchorPosition(this.anchorPosition);\n let forcePosition1 = undefined;\n if (allowEnforcePosition1 && this.isOpenStable && this.openPosition != null) {\n position1 = this.openPosition;\n forcePosition1 = true;\n }\n // get the position of the element relative to the offsetParent, which could be the document\n function getPos1(ele1: HTMLElement): [number, number] {\n let currTop1 = 0;\n let currLeft1 = 0;\n if (ele1.offsetParent) {\n do {\n currTop1 += ele1.offsetTop;\n currLeft1 += ele1.offsetLeft;\n }while ((ele1 = ele1.offsetParent as HTMLElement))\n } else {\n currTop1 = ele1.offsetTop;\n currLeft1 = ele1.offsetLeft;\n }\n return [\n currTop1,\n currLeft1\n ];\n }\n const { top: top1, left: left1, position: foundPosition1, arrow: arrow1, anchorBoundingBox: anchorBoundingBox1 } = findPopoverPosition({\n container: this.args.container,\n host: this.shouldAccountForOtherPopovers ? this.popoverHost : null,\n position: position1,\n forcePosition: forcePosition1,\n align: getPopoverAlignFromAnchorPosition(this.anchorPosition),\n anchor: this.button,\n popover: this.panel,\n offset: !this.args.attachToAnchor && this.hasArrow ? 16 + (this.args.offset || 0) : 8 + (this.args.offset || 0),\n arrowConfig: {\n arrowWidth: 24,\n arrowBuffer: 10\n },\n returnBoundingBox: this.args.attachToAnchor,\n buffer: this.args.buffer\n });\n // the popover's z-index must inherit from the button\n // this keeps a button's popover under a flyout that would cover the button\n // but a popover triggered inside a flyout will appear over that flyout\n const { zIndex: zIndexProp1 } = this.args;\n const zIndex1 = zIndexProp1 == null ? getElementZIndex(this.button, this.panel) + 2000 : zIndexProp1;\n const popoverStyles1 = {\n top: top1,\n left: this.args.attachToAnchor && anchorBoundingBox1 ? anchorBoundingBox1.left : left1,\n zIndex: zIndex1\n };\n const willRenderArrow1 = !this.args.attachToAnchor && this.hasArrow;\n const arrowStyles1 = willRenderArrow1 ? arrow1 : undefined;\n const arrowPosition1 = foundPosition1;\n this.popoverStyles = popoverStyles1;\n this.arrowStyles = arrowStyles1;\n this.arrowPosition = arrowPosition1;\n this.openPosition = foundPosition1;\n }\n get _arrowStyles(): ReturnType<typeof htmlSafe> | undefined {\n const { arrowStyles: arrowStyles1 } = this;\n return arrowStyles1 ? htmlSafe(`top: ${arrowStyles1?.top}px; left: ${arrowStyles1?.left}px;`) : undefined;\n }\n get _popoverStyles(): {\n [i: string]: string;\n } {\n const { panelStyle: panelStyle1 } = this.args;\n const { popoverStyles: popoverStyles1 } = this;\n return {\n ...panelStyle1,\n top: `${popoverStyles1.top}px`,\n left: `${popoverStyles1.left}px`,\n zIndex: `${popoverStyles1.zIndex}`\n };\n }\n get tabindex() {\n if (this.ownFocus) {\n return this.args.tabindex ?? '0';\n }\n return '-1';\n }\n @action\n positionPopoverFixed(): void {\n this.positionPopover(true);\n }\n @action\n positionPopoverFluid(): void {\n this.positionPopover(false);\n }\n @action\n registerButton(btn1: HTMLDivElement): void {\n this.button = btn1;\n this.args.buttonRef?.(btn1);\n }\n @action\n registerPanel(panel1: HTMLElement): void {\n this.panel = panel1;\n this.args.panelRef?.(panel1);\n if (panel1 === null) {\n // panel has unmounted, restore the state defaults\n this.popoverStyles = DEFAULT_POPOVER_STYLES;\n this.arrowStyles = {};\n this.arrowPosition = null;\n this.openPosition = null;\n this.isOpenStable = false;\n window.removeEventListener('resize', this.positionPopoverFluid);\n } else {\n // panel is coming into existence\n this.positionPopoverFluid();\n window.addEventListener('resize', this.positionPopoverFluid);\n }\n }\n static{\n template(`\n {{#let\n (randomId)\n (classNames\n (if this.isOpening \"euiPopover-isOpen\")\n position=this.anchorPosition\n display=this.display\n componentName=\"EuiPopover\"\n )\n (classNames\n \"euiPopover__panel\"\n (concat \"euiPopover__panel--\" this.arrowPosition)\n (if this.isOpening \"euiPopover__panel-isOpen\")\n (if\n (or (not this.hasArrow) @attachToAnchor) \"euiPopover__panel-noArrow\"\n )\n (if @attachToAnchor \"euiPopover__panel-isAttached\")\n @panelClasses\n )\n as |descriptionId classes panelClasses|\n }}\n <div\n class={{classes}}\n {{onKey \"_all\" this.onKeyDown priority=1}}\n {{didInsert this.didInsertPopover}}\n {{didUpdate this.didUpdateIsOpen @isOpen}}\n {{didUpdate this.didUpdateRepositionOnScroll @repositionOnScroll}}\n {{didInsert (optional @popoverRef)}}\n ...attributes\n >\n\n {{! button }}\n <div\n class=\"euiPopover__anchor {{@anchorClassName}}\"\n {{didInsert this.registerButton}}\n >\n {{yield to=\"button\"}}\n </div>\n\n {{! content }}\n {{#if\n (and\n (not this.suppressingPopover)\n (or this.isCurrentlyOpen this.isClosing)\n )\n }}\n <EuiPortal @insert={{this.insert}}>\n {{#let (randomId) as |panelId|}}\n <EuiPanel\n id={{panelId}}\n class={{panelClasses}}\n aria-live={{if this.ownFocus \"off\" \"assertive\"}}\n role=\"dialog\"\n aria-label={{@ariaLabel}}\n aria-labelledby={{@ariaLabelledBy}}\n aria-modal=\"true\"\n aria-describedby={{if this.ownFocus descriptionId}}\n tabindex={{this.tabindex}}\n @hasShadow={{false}}\n @paddingSize={{this.panelPaddingSize}}\n {{simpleStyle this._popoverStyles}}\n {{didInsert this.registerPanel}}\n {{outsideClickDetector onOutsideClick=this.onClickOutside}}\n {{onKey \"Escape\" this.onEscapeKey}}\n {{focusTrap\n isActive=(not\n (or\n (not this.ownFocus) (not this.isOpenStable) this.isClosing\n )\n )\n shouldSelfFocus=this.shouldSelfFocus\n isPaused=this.isFocusTrapPaused\n focusTrapOptions=(merge\n (hash\n returnFocusOnDeactivate=this.isOpenStable\n initialFocus=(or @initialFocus this.panel)\n onDeactivate=(optional @onTrapDeactivation)\n preventScroll=true\n clickOutsideDeactivates=true\n fallbackFocus=(concat \"#\" panelId)\n )\n @focusTrapOptions\n )\n }}\n >\n <div\n class={{concat\n \"euiPopover__panelArrow euiPopover__panelArrow--\"\n this.arrowPosition\n }}\n style={{this._arrowStyles}}\n >\n {{yield to=\"arrowChildren\"}}\n </div>\n {{#if this.ownFocus}}\n <p id={{descriptionId}} {{screenReaderOnly}}>\n You are in a dialog. To close this dialog, hit escape.\n </p>\n {{/if}}\n <div\n {{mutationObserver\n onMutation=this.onMutation\n observerOptions=(merge\n (hash\n attributes=true\n childList=true\n characterData=true\n subtree=true\n )\n @mutationObserverOptions\n )\n }}\n >\n {{yield to=\"content\"}}\n </div>\n </EuiPanel>\n {{/let}}\n </EuiPortal>\n {{/if}}\n\n </div>\n {{/let}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9iZXRvY2FudHU5My9vcGVuc291cmNlL2VtYmVyLWV1aS9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL2V1aS1wb3BvdmVyLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyB0cmFja2VkIH0gZnJvbSAnQGdsaW1tZXIvdHJhY2tpbmcnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGVtYmVyL2RlYnVnJztcbmltcG9ydCB7IGhhc2ggfSBmcm9tICdAZW1iZXIvaGVscGVyJztcbmltcG9ydCB7IGNvbmNhdCB9IGZyb20gJ0BlbWJlci9oZWxwZXInO1xuaW1wb3J0IHsgYWN0aW9uIH0gZnJvbSAnQGVtYmVyL29iamVjdCc7XG5pbXBvcnQgZGlkSW5zZXJ0IGZyb20gJ0BlbWJlci9yZW5kZXItbW9kaWZpZXJzL21vZGlmaWVycy9kaWQtaW5zZXJ0JztcbmltcG9ydCBkaWRVcGRhdGUgZnJvbSAnQGVtYmVyL3JlbmRlci1tb2RpZmllcnMvbW9kaWZpZXJzL2RpZC11cGRhdGUnO1xuaW1wb3J0IHsgY2FuY2VsLCBsYXRlciwgc2NoZWR1bGVPbmNlIH0gZnJvbSAnQGVtYmVyL3J1bmxvb3AnO1xuaW1wb3J0IHsgaHRtbFNhZmUgfSBmcm9tICdAZW1iZXIvdGVtcGxhdGUnO1xuXG5pbXBvcnQgb3B0aW9uYWwgZnJvbSAnZW1iZXItY29tcG9zYWJsZS1oZWxwZXJzL2hlbHBlcnMvb3B0aW9uYWwnO1xuaW1wb3J0IHsgZm9jdXNUcmFwIH0gZnJvbSAnZW1iZXItZm9jdXMtdHJhcCc7XG5pbXBvcnQgb25LZXkgZnJvbSAnZW1iZXIta2V5Ym9hcmQvbW9kaWZpZXJzL29uLWtleSc7XG5pbXBvcnQgeyBhbmQsIG5vdCwgb3IgfSBmcm9tICdlbWJlci10cnV0aC1oZWxwZXJzJztcbmltcG9ydCB7IHRhYmJhYmxlIH0gZnJvbSAndGFiYmFibGUnO1xuXG5pbXBvcnQgcmFuZG9tSWQgZnJvbSAnLi4vLXByaXZhdGUvcmFuZG9tLWlkLnRzJztcbmltcG9ydCB7IGFyZ09yRGVmYXVsdERlY29yYXRvciB9IGZyb20gJy4uL2hlbHBlcnMvYXJnLW9yLWRlZmF1bHQudHMnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnLi4vaGVscGVycy9jbGFzcy1uYW1lcy50cyc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnLi4vaGVscGVycy9tZXJnZS50cyc7XG5pbXBvcnQgbXV0YXRpb25PYnNlcnZlciBmcm9tICcuLi9tb2RpZmllcnMvbXV0YXRpb24tb2JzZXJ2ZXIudHMnO1xuaW1wb3J0IG91dHNpZGVDbGlja0RldGVjdG9yIGZyb20gJy4uL21vZGlmaWVycy9vdXRzaWRlLWNsaWNrLWRldGVjdG9yLnRzJztcbmltcG9ydCBzY3JlZW5SZWFkZXJPbmx5IGZyb20gJy4uL21vZGlmaWVycy9zY3JlZW4tcmVhZGVyLW9ubHkudHMnO1xuaW1wb3J0IHNpbXBsZVN0eWxlIGZyb20gJy4uL21vZGlmaWVycy9zaW1wbGUtc3R5bGUudHMnO1xuaW1wb3J0IHsgY2FzY2FkaW5nTWVudUtleXMgfSBmcm9tICcuLi91dGlscy9hY2Nlc2liaWxpdHkvaW5kZXgudHMnO1xuaW1wb3J0IHtcbiAgYW5jaG9yUG9zaXRpb25NYXBwaW5nLFxuICBkaXNwbGF5TWFwcGluZ1xufSBmcm9tICcuLi91dGlscy9jc3MtbWFwcGluZ3MvZXVpLXBvcG92ZXIudHMnO1xuaW1wb3J0IHsgZmluZFBvcG92ZXJQb3NpdGlvbiwgZ2V0RWxlbWVudFpJbmRleCB9IGZyb20gJy4uL3V0aWxzL3BvcG92ZXIvaW5kZXgudHMnO1xuaW1wb3J0IHtcbiAgZ2V0VHJhbnNpdGlvblRpbWluZ3MsXG4gIGdldFdhaXREdXJhdGlvbixcbiAgcGVyZm9ybU9uRnJhbWVcbn0gZnJvbSAnLi4vdXRpbHMvdHJhbnNpdGlvbi50cyc7XG5pbXBvcnQgRXVpUGFuZWwgZnJvbSAnLi9ldWktcGFuZWwuZ3RzJztcbmltcG9ydCBFdWlQb3J0YWwgZnJvbSAnLi9ldWktcG9ydGFsLmd0cyc7XG5cbmltcG9ydCB0eXBlIHsgcGFkZGluZ1NpemVNYXBwaW5nIH0gZnJvbSAnLi4vdXRpbHMvY3NzLW1hcHBpbmdzL2V1aS1wYW5lbC50cyc7XG5pbXBvcnQgdHlwZSB7IEV1aVBvcG92ZXJQb3NpdGlvbiB9IGZyb20gJy4uL3V0aWxzL3BvcG92ZXIvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBFbWJlcktleWJvYXJkRXZlbnQgfSBmcm9tICdlbWJlci1rZXlib2FyZC9tb2RpZmllcnMvb24ta2V5JztcblxudHlwZSBQYW5lbFBhZGRpbmdTaXplID0ga2V5b2YgdHlwZW9mIHBhZGRpbmdTaXplTWFwcGluZztcblxuZXhwb3J0IHR5cGUgUG9wb3ZlckFuY2hvclBvc2l0aW9uID1cbiAgfCAndXBDZW50ZXInXG4gIHwgJ3VwTGVmdCdcbiAgfCAndXBSaWdodCdcbiAgfCAnZG93bkNlbnRlcidcbiAgfCAnZG93bkxlZnQnXG4gIHwgJ2Rvd25SaWdodCdcbiAgfCAnbGVmdENlbnRlcidcbiAgfCAnbGVmdFVwJ1xuICB8ICdsZWZ0RG93bidcbiAgfCAncmlnaHRDZW50ZXInXG4gIHwgJ3JpZ2h0VXAnXG4gIHwgJ3JpZ2h0RG93bic7XG5cbmV4cG9ydCB0eXBlIEV1aVBvcG92ZXJBcmdzID0ge1xuICBwYW5lbENsYXNzZXM_OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDbGFzcyBuYW1lIHBhc3NlZCB0byB0aGUgZGlyZWN0IHBhcmVudCBvZiB0aGUgYnV0dG9uXG4gICAqL1xuICBhbmNob3JDbGFzc05hbWU_OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbGlnbm1lbnQgb2YgdGhlIHBvcG92ZXIgYW5kIGFycm93IHJlbGF0aXZlIHRvIHRoZSBidXR0b25cbiAgICovXG4gIGFuY2hvclBvc2l0aW9uPzogUG9wb3ZlckFuY2hvclBvc2l0aW9uO1xuICAvKipcbiAgICogU3R5bGUgYW5kIHBvc2l0aW9uIGFsdGVyYXRpb24gZm9yIGFycm93LWxlc3MsIGxlZnQtYWxpZ25lZFxuICAgKiBhdHRhY2htZW50LiBJbnRlbmRlZCBmb3IgdXNlIHdpdGggaW5wdXRzIGFzIGFuY2hvcnMsIGUuZy5cbiAgICogRXVpSW5wdXRQb3BvdmVyXG4gICAqL1xuICBhdHRhY2hUb0FuY2hvcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcmlnZ2VyaW5nIGVsZW1lbnQgZm9yIHdoaWNoIHRvIGFsaWduIHRoZSBwb3BvdmVyIHRvXG4gICAqL1xuICBidXR0b24_OiBDb21wb25lbnQ7XG4gIGJ1dHRvblJlZj86IChlOiBIVE1MRGl2RWxlbWVudCkgPT4gdW5rbm93bjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGhhbmRsZSBoaWRpbmcgb2YgdGhlIHBvcG92ZXJcbiAgICovXG4gIGNsb3NlUG9wb3ZlcjogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFJlc3RyaWN0IHRoZSBwb3BvdmVyJ3MgcG9zaXRpb24gd2l0aGluIHRoaXMgZWxlbWVudFxuICAgKi9cbiAgY29udGFpbmVyPzogSFRNTEVsZW1lbnQ7XG4gIC8qKlxuICAgKiBDU1MgZGlzcGxheSB0eXBlIGZvciBib3RoIHRoZSBwb3BvdmVyIGFuZCBhbmNob3JcbiAgICovXG4gIGRpc3BsYXk_OiBrZXlvZiB0eXBlb2YgZGlzcGxheU1hcHBpbmc7XG4gIC8qKlxuICAgKiBTaG93IGFycm93IGluZGljYXRpbmcgdG8gb3JpZ2luYXRpbmcgYnV0dG9uXG4gICAqL1xuICBoYXNBcnJvdz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hhdCBlbGVtZW50IHNob3VsZCBpbml0aWFsbHkgaGF2ZSBmb2N1czsgQ2FuIGJlIGEgRE9NXG4gICAqIG5vZGUsIG9yIGEgc2VsZWN0b3Igc3RyaW5nICh3aGljaCB3aWxsIGJlIHBhc3NlZCB0b1xuICAgKiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCkgdG8gZmluZCB0aGUgRE9NIG5vZGUpLCBvciBhIGZ1bmN0aW9uIHRoYXRcbiAgICogcmV0dXJucyBhIERPTSBub2RlXG4gICAqL1xuICBpbml0aWFsRm9jdXM_OiBGb2N1c1RhcmdldCB8IGZhbHNlO1xuICAvKipcbiAgICogUGFzc2VkIGRpcmVjdGx5IHRvIEV1aVBvcnRhbCBmb3IgRE9NIHBvc2l0aW9uaW5nLiBCb3RoIHByb3BlcnRpZXMgYXJlXG4gICAqIHJlcXVpcmVkIGlmIHByb3AgaXMgc3BlY2lmaWVkXG4gICAqL1xuICBpbnNlcnQ_OiB7XG4gICAgc2libGluZzogSFRNTEVsZW1lbnQ7XG4gICAgcG9zaXRpb246ICdiZWZvcmUnIHwgJ2FmdGVyJztcbiAgfTtcbiAgLyoqXG4gICAqIFZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIHBvcG92ZXJcbiAgICovXG4gIGlzT3Blbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcmFwcyB0YWIgZm9jdXMgd2l0aGluIHRoZSBwb3BvdmVyIGNvbnRlbnRzXG4gICAqL1xuICBvd25Gb2N1cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXN0b20gY2xhc3MgYWRkZWQgdG8gdGhlIEV1aVBhbmVsIGNvbnRhaW5pbmcgdGhlIHBvcG92ZXIgY29udGVudHNcbiAgICovXG4gIHBhbmVsQ2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogRXVpUGFuZWwgcGFkZGluZyBvbiBhbGwgc2lkZXNcbiAgICovXG4gIHBhbmVsUGFkZGluZ1NpemU_OiBQYW5lbFBhZGRpbmdTaXplO1xuICAvKipcbiAgICogU3RhbmRhcmQgRE9NIGBzdHlsZWAgYXR0cmlidXRlLiBQYXNzZWQgdG8gdGhlIEV1aVBhbmVsXG4gICAqL1xuICBwYW5lbFN0eWxlPzogeyBbaTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHBhbmVsUmVmPzogKGU6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4gdW5rbm93bjtcbiAgcG9wb3ZlclJlZj86IChlOiBIVE1MRWxlbWVudCkgPT4gdW5rbm93bjtcblxuICAvKipcbiAgICogd2hlbiBub3QgYGZhbHNlYCwgdGhlIHBvcG92ZXIgd2lsbCBjaGVjayBpZiB0aGlzIHBvcG92ZXIgaXMgaW5zaWRlIGFub3RoZXIgcG9wb3ZlciBhbmQgaWYgc28uIHdpbGwgcmVwb3NpdGlvbiBpdHNlbGYgdG8gYmUgaW5zaWRlIHRoZSBvdGhlciBwb3BvdmVyXG4gICAqL1xuICBzaG91bGRBY2NvdW50Rm9yT3RoZXJQb3BvdmVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCB0aGUgcG9wb3ZlcidzIHBvc2l0aW9uIGlzIHJlLWNhbGN1bGF0ZWQgd2hlbiB0aGUgdXNlclxuICAgKiBzY3JvbGxzLCB0aGlzIHN1cHBvcnRzIGhhdmluZyBmaXhlZC1wb3NpdGlvbiBwb3BvdmVyIGFuY2hvcnNcbiAgICovXG4gIHJlcG9zaXRpb25PblNjcm9sbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBwb3BvdmVyIGNvbnRlbnQgaW5oZXJpdHMgdGhlIHotaW5kZXggb2YgdGhlIGFuY2hvclxuICAgKiBjb21wb25lbnQ7IHBhc3MgYHpJbmRleGAgdG8gb3ZlcnJpZGVcbiAgICovXG4gIHpJbmRleD86IG51bWJlcjtcbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGNhbGxiYWNrIGZvciB3aGVuIHRoZSBmb2N1cyB0cmFwIGlzIGRlYWN0aXZhdGVkXG4gICAqL1xuICBvblRyYXBEZWFjdGl2YXRpb24_OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogRGlzdGFuY2UgYXdheSBmcm9tIHRoZSBhbmNob3IgdGhhdCB0aGUgcG9wb3ZlciB3aWxsIHJlbmRlclxuICAgKi9cbiAgb2Zmc2V0PzogbnVtYmVyO1xuICAvKipcbiAgICogTWluaW11bSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwb3BvdmVyIGFuZCB0aGUgYm91bmRpbmcgY29udGFpbmVyO1xuICAgKiBQYXNzIGFuIGFycmF5IG9mIDQgdmFsdWVzIHRvIGFkanVzdCBlYWNoIHNpZGUgZGlmZmVyZW50bHk6IGBbdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0XWBcbiAgICogRGVmYXVsdCBpcyAxNlxuICAgKi9cbiAgYnVmZmVyPzogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIC8qKlxuICAgKiBFbGVtZW50IHRvIHBhc3MgYXMgdGhlIGNoaWxkIGVsZW1lbnQgb2YgdGhlIGFycm93O1xuICAgKiBVc2UgY2FzZSBpcyB0eXBpY2FsbHkgbGltaXRlZCB0byBhbiBhY2NvbXBhbnlpbmcgYEV1aUJlYWNvbmBcbiAgICovXG4gIGFycm93Q2hpbGRyZW4_OiBDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBQcm92aWRlIGEgbmFtZSB0byB0aGUgcG9wb3ZlciBwYW5lbFxuICAgKi9cbiAgYXJpYUxhYmVsPzogc3RyaW5nO1xuICAvKipcbiAgICogQWx0ZXJuYXRpdmUgb3B0aW9uIHRvIGBhcmlhLWxhYmVsYCB0aGF0IHRha2VzIGFuIGBpZGAuXG4gICAqIFVzdWFsbHkgdGFrZXMgdGhlIGBpZGAgb2YgdGhlIHBvcG92ZXIgdGl0bGVcbiAgICovXG4gIGFyaWFMYWJlbGxlZEJ5Pzogc3RyaW5nO1xuXG4gIHRhYmluZGV4Pzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIHNob3VsZFNlbGZGb2N1cz86IGJvb2xlYW47XG5cbiAgaXNGb2N1c1RyYXBQYXVzZWQ_OiBib29sZWFuO1xuXG4gIGZvY3VzVHJhcE9wdGlvbnM_OiB7XG4gICAgb25DbGlja091dHNpZGU_OiAoZTogRXZlbnQpID0-IHZvaWQ7XG4gIH07XG5cbiAgbXV0YXRpb25PYnNlcnZlck9wdGlvbnM_OiB7XG4gICAgYXR0cmlidXRlcz86IGJvb2xlYW47XG4gICAgY2hpbGRMaXN0PzogYm9vbGVhbjtcbiAgICBjaGFyYWN0ZXJEYXRhPzogYm9vbGVhbjtcbiAgICBzdWJ0cmVlPzogYm9vbGVhbjtcbiAgfTtcbn07XG5cbnR5cGUgQW5jaG9yUG9zaXRpb24gPSAndXAnIHwgJ3JpZ2h0JyB8ICdkb3duJyB8ICdsZWZ0JztcblxuY29uc3QgYW5jaG9yUG9zaXRpb25Ub1BvcG92ZXJQb3NpdGlvbk1hcDoge1xuICBbcG9zaXRpb24gaW4gQW5jaG9yUG9zaXRpb25dOiBFdWlQb3BvdmVyUG9zaXRpb247XG59ID0ge1xuICB1cDogJ3RvcCcsXG4gIHJpZ2h0OiAncmlnaHQnLFxuICBkb3duOiAnYm90dG9tJyxcbiAgbGVmdDogJ2xlZnQnXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9wb3ZlclBvc2l0aW9uRnJvbUFuY2hvclBvc2l0aW9uKFxuICBhbmNob3JQb3NpdGlvbjogUG9wb3ZlckFuY2hvclBvc2l0aW9uXG4pOiBFdWlQb3BvdmVyUG9zaXRpb24ge1xuICAvLyBtYXBzIHRoZSBhbmNob3IgcG9zaXRpb24gdG8gdGhlIG1hdGNoaW5nIHBvcG92ZXIgcG9zaXRpb25cbiAgLy8gZS5nLiBcInVwTGVmdFwiIC0-IFwidG9wXCIsIFwiZG93blJpZ2h0XCIgLT4gXCJib3R0b21cIlxuXG4gIC8vIGV4dHJhY3QgdGhlIGZpcnN0IHBvc2l0aW9uYWwgd29yZCBmcm9tIGFuY2hvclBvc2l0aW9uOlxuICAvLyBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyAoXCIgXiBcIikgb2YgYW5jaG9yUG9zaXRpb24gYW5kXG4gIC8vIGNhcHR1cmVzIGFsbCBvZiB0aGUgY2hhcmFjdGVycyAoXCIgKC4qPykgXCIpIHVudGlsIHRoZVxuICAvLyBmaXJzdCBjYXBpdGFsIGxldHRlciAoXCIgW0EtWl0gXCIpIGlzIGVuY291bnRlcmVkXG4gIGNvbnN0IG1hdGNoID0gYW5jaG9yUG9zaXRpb24ubWF0Y2goL14oLio_KVtBLVpdLyk7XG5cbiAgaWYgKG1hdGNoPy5sZW5ndGggJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgIHJldHVybiBhbmNob3JQb3NpdGlvblRvUG9wb3ZlclBvc2l0aW9uTWFwW21hdGNoWzFdIGFzIEFuY2hvclBvc2l0aW9uXTtcbiAgfVxuXG4gIHJldHVybiBhbmNob3JQb3NpdGlvblRvUG9wb3ZlclBvc2l0aW9uTWFwWyd1cCddO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9wb3ZlckFsaWduRnJvbUFuY2hvclBvc2l0aW9uKFxuICBhbmNob3JQb3NpdGlvbjogUG9wb3ZlckFuY2hvclBvc2l0aW9uXG4pOiBFdWlQb3BvdmVyUG9zaXRpb24ge1xuICAvLyBtYXBzIHRoZSBncmF2aXR5IHRvIHRoZSBtYXRjaGluZyBwb3BvdmVyIHBvc2l0aW9uXG4gIC8vIGUuZy4gXCJ1cExlZnRcIiAtPiBcImxlZnRcIiwgXCJyaWdodERvd25cIiAtPiBcImJvdHRvbVwiXG5cbiAgLy8gZXh0cmFjdCB0aGUgc2Vjb25kIHBvc2l0aW9uYWwgd29yZCBmcm9tIGFuY2hvclBvc2l0aW9uOlxuICAvLyBzdGFydHMgYSBjYXB0dXJlIGdyb3VwIGF0IHRoZSBmaXJzdCBjYXBpdGFsIGxldHRlclxuICAvLyBhbmQgaW5jbHVkZXMgZXZlcnl0aGluZyBhZnRlciBpdFxuICBjb25zdCBtYXRjaCA9IGFuY2hvclBvc2l0aW9uLm1hdGNoKC8oW0EtWl0uKikvKTtcblxuICAvLyB0aGlzIHBlcmZvcm1zIHR3byB0YXNrczpcbiAgLy8gMS4gbm9ybWFsaXplcyB0aGUgYWxpZ24gcG9zaXRpb24gYnkgbG93ZXJjYXNpbmcgaXRcbiAgLy8gMi4gYGNlbnRlcmAgZG9lc24ndCBleGlzdCBpbiB0aGUgbG9va3VwIG1hcCB3aGljaCBjb252ZXJ0cyBpdCB0byBgdW5kZWZpbmVkYCBtZWFuaW5nIG5vIGFsaWduXG4gIGlmIChtYXRjaD8ubGVuZ3RoICYmIG1hdGNoLmxlbmd0aCA-IDEpIHtcbiAgICByZXR1cm4gYW5jaG9yUG9zaXRpb25Ub1BvcG92ZXJQb3NpdGlvbk1hcFtcbiAgICAgIG1hdGNoWzFdPy50b0xvd2VyQ2FzZSgpIGFzIEFuY2hvclBvc2l0aW9uXG4gICAgXTtcbiAgfVxuXG4gIHJldHVybiBhbmNob3JQb3NpdGlvblRvUG9wb3ZlclBvc2l0aW9uTWFwWydsZWZ0J107XG59XG5cbmV4cG9ydCBjb25zdCBBTkNIT1JfUE9TSVRJT05TID0gT2JqZWN0LmtleXMoYW5jaG9yUG9zaXRpb25NYXBwaW5nKTtcbmV4cG9ydCBjb25zdCBESVNQTEFZID0gT2JqZWN0LmtleXMoZGlzcGxheU1hcHBpbmcpO1xuZXhwb3J0IHR5cGUgRm9jdXNUYXJnZXQgPSBIVE1MRWxlbWVudCB8IHN0cmluZyB8ICgoKSA9PiBIVE1MRWxlbWVudCk7XG5cbmNvbnN0IERFRkFVTFRfUE9QT1ZFUl9TVFlMRVMgPSB7XG4gIHRvcDogNTAsXG4gIGxlZnQ6IDUwXG59O1xuXG5mdW5jdGlvbiBnZXRFbGVtZW50RnJvbUluaXRpYWxGb2N1cyhcbiAgaW5pdGlhbEZvY3VzPzogRm9jdXNUYXJnZXRcbik6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IGluaXRpYWxGb2N1c1R5cGUgPSB0eXBlb2YgaW5pdGlhbEZvY3VzO1xuXG4gIGlmIChpbml0aWFsRm9jdXNUeXBlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGluaXRpYWxGb2N1cyBhcyBzdHJpbmcpO1xuICB9XG5cbiAgaWYgKGluaXRpYWxGb2N1c1R5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gKGluaXRpYWxGb2N1cyBhcyAoKSA9PiBIVE1MRWxlbWVudCB8IG51bGwpKCk7XG4gIH1cblxuICByZXR1cm4gaW5pdGlhbEZvY3VzIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbn1cblxudHlwZSBDc3NQcm9wcyA9IHtcbiAgdG9wPzogbnVtYmVyO1xuICBsZWZ0PzogbnVtYmVyO1xuICByaWdodD86IG51bWJlcjtcbiAgYm90dG9tPzogbnVtYmVyO1xuICB6SW5kZXg_OiBudW1iZXI7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEV1aVBvcG92ZXJTaWduYXR1cmUge1xuICBFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcbiAgQXJnczogRXVpUG9wb3ZlckFyZ3M7XG4gIEJsb2Nrczoge1xuICAgIGJ1dHRvbjogW107XG4gICAgY29udGVudDogW107XG4gICAgYXJyb3dDaGlsZHJlbjogW107XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV1aVBvcG92ZXJDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnQ8RXVpUG9wb3ZlclNpZ25hdHVyZT4ge1xuICAvLyBEZWZhdWx0c1xuICBAYXJnT3JEZWZhdWx0RGVjb3JhdG9yKGZhbHNlKSBpc09wZW4hOiBib29sZWFuO1xuICBAYXJnT3JEZWZhdWx0RGVjb3JhdG9yKHRydWUpIG93bkZvY3VzITogYm9vbGVhbjtcbiAgQGFyZ09yRGVmYXVsdERlY29yYXRvcignZG93bkNlbnRlcicpIGFuY2hvclBvc2l0aW9uITogUG9wb3ZlckFuY2hvclBvc2l0aW9uO1xuICBAYXJnT3JEZWZhdWx0RGVjb3JhdG9yKCdtJykgcGFuZWxQYWRkaW5nU2l6ZSE6IFBhbmVsUGFkZGluZ1NpemU7XG4gIEBhcmdPckRlZmF1bHREZWNvcmF0b3IodHJ1ZSkgaGFzQXJyb3chOiBib29sZWFuO1xuICBAYXJnT3JEZWZhdWx0RGVjb3JhdG9yKCdpbmxpbmVCbG9jaycpIGRpc3BsYXkhOiBzdHJpbmc7XG4gIEBhcmdPckRlZmF1bHREZWNvcmF0b3IodHJ1ZSkgc2hvdWxkU2VsZkZvY3VzITogYm9vbGVhbjtcbiAgQGFyZ09yRGVmYXVsdERlY29yYXRvcihmYWxzZSkgaXNGb2N1c1RyYXBQYXVzZWQhOiBib29sZWFuO1xuXG4gIC8vU3RhdGVcbiAgQHRyYWNrZWQgcHJldklzT3BlbjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgQHRyYWNrZWQgc3VwcHJlc3NpbmdQb3BvdmVyOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBAdHJhY2tlZCBpc0Nsb3NpbmcgPSBmYWxzZTtcbiAgQHRyYWNrZWQgaXNPcGVuaW5nID0gZmFsc2U7XG4gIEB0cmFja2VkIHBvcG92ZXJTdHlsZXM6IENzc1Byb3BzID0ge307XG4gIEB0cmFja2VkIGFycm93U3R5bGVzOiBDc3NQcm9wcyB8IHVuZGVmaW5lZCA9IHt9O1xuICBAdHJhY2tlZCBhcnJvd1Bvc2l0aW9uOiBFdWlQb3BvdmVyUG9zaXRpb24gfCBudWxsID0gbnVsbDtcbiAgQHRyYWNrZWQgb3BlblBvc2l0aW9uOiBFdWlQb3BvdmVyUG9zaXRpb24gfCBudWxsID0gbnVsbDtcbiAgQHRyYWNrZWQgaXNPcGVuU3RhYmxlID0gZmFsc2U7XG4gIEB0cmFja2VkIGlzQ3VycmVudGx5T3BlbjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgQHRyYWNrZWQgcG9wb3Zlckhvc3Q_OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAvLy9cblxuICBwcml2YXRlIHJlc3Bvc2l0aW9uVGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2YgbGF0ZXI-IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY2xvc2luZ1RyYW5zaXRpb25UaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBsYXRlcj4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjbG9zaW5nVHJhbnNpdGlvbkFuaW1hdGlvbkZyYW1lOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgdXBkYXRlRm9jdXNBbmltYXRpb25GcmFtZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhhc1NldEluaXRpYWxGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICBAdHJhY2tlZCBidXR0b246IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIEB0cmFja2VkIHBhbmVsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKG93bmVyOiB1bmtub3duLCBhcmdzOiBFdWlQb3BvdmVyQXJncykge1xuICAgIHN1cGVyKG93bmVyLCBhcmdzKTtcbiAgICBhc3NlcnQoYE11c3QgcHJvdmlkZSBjbG9zZVBvcG92ZXIgZnVuY3Rpb25gLCB0aGlzLmFyZ3MuY2xvc2VQb3BvdmVyKTtcbiAgICB0aGlzLnByZXZJc09wZW4gPSB0aGlzLmlzT3BlbjtcbiAgICB0aGlzLnN1cHByZXNzaW5nUG9wb3ZlciA9IHRoaXMuaXNPcGVuO1xuICAgIHRoaXMuaXNDdXJyZW50bHlPcGVuID0gdGhpcy5pc09wZW47XG4gIH1cblxuICBnZXQgaW5zZXJ0KCkge1xuICAgIGlmICh0aGlzLmFyZ3MuaW5zZXJ0KSB7XG4gICAgICByZXR1cm4gdGhpcy5hcmdzLmluc2VydDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG91bGRBY2NvdW50Rm9yT3RoZXJQb3BvdmVycykge1xuICAgICAgaWYgKHRoaXMucG9wb3Zlckhvc3QpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzaWJsaW5nOiB0aGlzLnBvcG92ZXJIb3N0LmNoaWxkcmVuWzBdIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgIHBvc2l0aW9uOiAnYWZ0ZXInXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgY2xvc2VQb3BvdmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5hcmdzLmNsb3NlUG9wb3ZlcigpO1xuICAgIH1cbiAgfVxuXG4gIEBhY3Rpb25cbiAgb25Fc2NhcGVLZXkoZXZlbnQ6IEV2ZW50LCBla0V2ZW50PzogRW1iZXJLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBla0V2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGVrRXZlbnQ_LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoKTtcbiAgICB9XG4gIH1cblxuICBAYWN0aW9uXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgZWtFdmVudDogRW1iZXJLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gY2FzY2FkaW5nTWVudUtleXMuRVNDQVBFKSB7XG4gICAgICB0aGlzLm9uRXNjYXBlS2V5KGV2ZW50IGFzIHVua25vd24gYXMgRXZlbnQsIGVrRXZlbnQgYXMgdW5rbm93biBhcyBFdmVudCk7XG4gICAgfVxuICB9XG5cbiAgQGFjdGlvblxuICBvbkNsaWNrT3V0c2lkZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hcmdzLmZvY3VzVHJhcE9wdGlvbnM_Lm9uQ2xpY2tPdXRzaWRlKSB7XG4gICAgICB0aGlzLmFyZ3MuZm9jdXNUcmFwT3B0aW9ucy5vbkNsaWNrT3V0c2lkZShldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG9ubHkgY2xvc2UgdGhlIHBvcG92ZXIgaWYgdGhlIGV2ZW50IHNvdXJjZSBpc24ndCB0aGUgYW5jaG9yIGJ1dHRvblxuICAgICAgLy8gb3RoZXJ3aXNlLCBpdCBpcyB1cCB0byB0aGUgYW5jaG9yIHRvIHRvZ2dsZSB0aGUgcG9wb3ZlcidzIG9wZW4gc3RhdHVzXG4gICAgICBpZiAodGhpcy5idXR0b24gJiYgdGhpcy5idXR0b24uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZvY3VzKCk6IHZvaWQge1xuICAgIC8vIFdhaXQgZm9yIHRoZSBET00gdG8gdXBkYXRlLlxuICAgIHRoaXMudXBkYXRlRm9jdXNBbmltYXRpb25GcmFtZSA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLm93bkZvY3VzIHx8ICF0aGlzLnBhbmVsIHx8IHRoaXMuYXJncy5pbml0aWFsRm9jdXMgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBmb2N1c2VkIG9uIHNvbWV0aGluZyBpbnNpZGUgdGhlIHBhbmVsLCBldmVyeXRoaW5nJ3MgZmluZS5cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5oYXNTZXRJbml0aWFsRm9jdXMgJiZcbiAgICAgICAgdGhpcy5wYW5lbC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gT3RoZXJ3aXNlIGxldCdzIGZvY3VzIHRoZSBmaXJzdCB0YWJiYWJsZSBpdGVtIGFuZCBleHBlZGl0ZSBpbnB1dCBmcm9tIHRoZSB1c2VyLlxuICAgICAgbGV0IGZvY3VzVGFyZ2V0O1xuXG4gICAgICBpZiAodGhpcy5hcmdzLmluaXRpYWxGb2N1cyAhPSBudWxsKSB7XG4gICAgICAgIGZvY3VzVGFyZ2V0ID0gZ2V0RWxlbWVudEZyb21Jbml0aWFsRm9jdXModGhpcy5hcmdzLmluaXRpYWxGb2N1cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0YWJiYWJsZUl0ZW1zID0gdGFiYmFibGUodGhpcy5wYW5lbCk7XG5cbiAgICAgICAgaWYgKHRhYmJhYmxlSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgZm9jdXNUYXJnZXQgPSB0YWJiYWJsZUl0ZW1zWzBdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHRoZXJlJ3MgYSByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIHRoZSBwb3BvdmVyIGNvbnRlbnQgYmVjb21pbmcgdmlzaWJsZSBhbmQgdGhpcyBmdW5jdGlvbiBjYWxsXG4gICAgICAvLyBpZiB0aGUgZWxlbWVudCBpc24ndCB2aXNpYmxlIHlldCAoZHVlIHRvIGNzcyBzdHlsaW5nKSB0aGVuIGl0IGNhbid0IGFjY2VwdCBmb2N1c1xuICAgICAgLy8gc28gd2FpdCBmb3IgYW5vdGhlciByZW5kZXIgYW5kIHRyeSBhZ2FpblxuICAgICAgaWYgKGZvY3VzVGFyZ2V0ID09IG51bGwpIHtcbiAgICAgICAgLy8gdGhlcmUgaXNuJ3QgYSBmb2N1cyB0YXJnZXQsIG9uZSBvZiB0d28gcmVhc29uczpcbiAgICAgICAgLy8gIzEgaXMgdGhlIHdob2xlIHBhbmVsIGhpZGRlbj8gSWYgc28sIHNjaGVkdWxlIGFub3RoZXIgY2hlY2tcbiAgICAgICAgLy8gIzIgcGFuZWwgaXMgdmlzaWJsZSBidXQgbm8gdGFiYmFibGVzIGV4aXN0LCBtb3ZlIGZvY3VzIHRvIHRoZSBwYW5lbFxuICAgICAgICBjb25zdCBwYW5lbFZpc2liaWxpdHkgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnBhbmVsKS5vcGFjaXR5O1xuXG4gICAgICAgIGlmIChwYW5lbFZpc2liaWxpdHkgPT09ICcwJykge1xuICAgICAgICAgIC8vICMxXG4gICAgICAgICAgdGhpcy51cGRhdGVGb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vICMyXG4gICAgICAgICAgZm9jdXNUYXJnZXQgPSB0aGlzLnBhbmVsO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBmb3VuZCBhbiBlbGVtZW50IHRvIGZvY3VzLCBidXQgaXMgaXQgdmlzaWJsZT9cbiAgICAgICAgY29uc3QgdmlzaWJpbGl0eSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGZvY3VzVGFyZ2V0KS52aXNpYmlsaXR5O1xuXG4gICAgICAgIGlmICh2aXNpYmlsaXR5ID09PSAnaGlkZGVuJykge1xuICAgICAgICAgIC8vIG5vdCB2aXNpYmxlLCBjaGVjayBhZ2FpbiBuZXh0IHJlbmRlciBmcmFtZVxuICAgICAgICAgIHRoaXMudXBkYXRlRm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZm9jdXNUYXJnZXQgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLmhhc1NldEluaXRpYWxGb2N1cyA9IHRydWU7XG4gICAgICAgIGZvY3VzVGFyZ2V0LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBAYWN0aW9uXG4gIG9uT3BlblBvcG92ZXIoKTogdm9pZCB7XG4gICAgY2FuY2VsKHRoaXMuY2xvc2luZ1RyYW5zaXRpb25UaW1lb3V0IGFzIFJldHVyblR5cGU8dHlwZW9mIGxhdGVyPik7XG4gICAgLy8gV2UgbmVlZCB0byBzZXQgdGhpcyBzdGF0ZSBhIGJlYXQgYWZ0ZXIgdGhlIHJlbmRlciB0YWtlcyBwbGFjZSwgc28gdGhhdCB0aGUgQ1NTXG4gICAgLy8gdHJhbnNpdGlvbiBjYW4gdGFrZSBlZmZlY3QuXG4gICAgdGhpcy5jbG9zaW5nVHJhbnNpdGlvbkFuaW1hdGlvbkZyYW1lID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLmlzT3BlbmluZyA9IHRydWU7XG4gICAgfSk7XG5cbiAgICAvLyBmb3IgZWFjaCBjaGlsZCBlbGVtZW50IG9mIGB0aGlzLnBhbmVsYCwgZmluZCBhbnkgdHJhbnNpdGlvbiBkdXJhdGlvbiB3ZSBzaG91bGQgd2FpdCBmb3IgYmVmb3JlIHN0YWJpbGl6aW5nXG4gICAgY29uc3QgeyBkdXJhdGlvbk1hdGNoLCBkZWxheU1hdGNoIH0gPSBBcnJheS5wcm90b3R5cGUuc2xpY2VcbiAgICAgIC5jYWxsKHRoaXMucGFuZWwgPyB0aGlzLnBhbmVsLmNoaWxkcmVuIDogW10pXG4gICAgICAucmVkdWNlKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgZHVyYXRpb25NYXRjaCxcbiAgICAgICAgICAgIGRlbGF5TWF0Y2hcbiAgICAgICAgICB9OiB7IGR1cmF0aW9uTWF0Y2g6IG51bWJlcjsgZGVsYXlNYXRjaDogbnVtYmVyIH0sXG4gICAgICAgICAgZWxlbWVudDogSFRNTEVsZW1lbnRcbiAgICAgICAgKSA9PiB7XG4gICAgICAgICAgY29uc3QgdHJhbnNpdGlvblRpbWluZ3MgPSBnZXRUcmFuc2l0aW9uVGltaW5ncyhlbGVtZW50KTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkdXJhdGlvbk1hdGNoOiBNYXRoLm1heChcbiAgICAgICAgICAgICAgZHVyYXRpb25NYXRjaCxcbiAgICAgICAgICAgICAgdHJhbnNpdGlvblRpbWluZ3MuZHVyYXRpb25NYXRjaFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGRlbGF5TWF0Y2g6IE1hdGgubWF4KGRlbGF5TWF0Y2gsIHRyYW5zaXRpb25UaW1pbmdzLmRlbGF5TWF0Y2gpXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgeyBkdXJhdGlvbk1hdGNoOiAwLCBkZWxheU1hdGNoOiAwIH1cbiAgICAgICk7XG5cbiAgICB0aGlzLnJlc3Bvc2l0aW9uVGltZW91dCA9IGxhdGVyKFxuICAgICAgdGhpcyxcbiAgICAgICgpID0-IHtcbiAgICAgICAgdGhpcy5pc09wZW5TdGFibGUgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGZuID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMucG9zaXRpb25Qb3BvdmVyRml4ZWQoKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgc2NoZWR1bGVPbmNlKCdhZnRlclJlbmRlcicsIHRoaXMsIGZuKTtcbiAgICAgIH0sXG4gICAgICBkdXJhdGlvbk1hdGNoICsgZGVsYXlNYXRjaFxuICAgICk7XG4gIH1cblxuICBnZXQgc2hvdWxkQWNjb3VudEZvck90aGVyUG9wb3ZlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJncy5zaG91bGRBY2NvdW50Rm9yT3RoZXJQb3BvdmVycyA_PyB0cnVlO1xuICB9XG5cbiAgY2hlY2tJZlBvcG92ZXJJc0luc2lkZUFub3RoZXJQb3BvdmVyKGVsZTogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBvdGhlclBvcG92ZXIgPSBlbGUuY2xvc2VzdDxIVE1MRGl2RWxlbWVudD4oJ2Rpdi5ldWlQb3BvdmVyX19wYW5lbCcpO1xuXG4gICAgdGhpcy5wb3BvdmVySG9zdCA9IG90aGVyUG9wb3ZlcjtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgZGlkSW5zZXJ0UG9wb3ZlcihlbGU6IEhUTUxEaXZFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3VwcHJlc3NpbmdQb3BvdmVyKSB7XG4gICAgICAvLyBjb21wb25lbnQgd2FzIGNyZWF0ZWQgd2l0aCBpc09wZW49dHJ1ZTsgbm93IHRoYXQgaXQncyBpbnNlcnRlZFxuICAgICAgLy8gc3RvcCBzdXBwcmVzc2luZyBhbmQgc3RhcnQgb3BlbmluZ1xuICAgICAgdGhpcy5zdXBwcmVzc2luZ1BvcG92ZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNPcGVuaW5nID0gdHJ1ZTtcblxuICAgICAgY29uc3QgZm4gPSAoKTogdm9pZCA9PiB0aGlzLm9uT3BlblBvcG92ZXIoKTtcblxuICAgICAgc2NoZWR1bGVPbmNlKCdhZnRlclJlbmRlcicsIHRoaXMsIGZuKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcmdzLnJlcG9zaXRpb25PblNjcm9sbCkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMucG9zaXRpb25Qb3BvdmVyRml4ZWQsIHRydWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNob3VsZEFjY291bnRGb3JPdGhlclBvcG92ZXJzKSB7XG4gICAgICB0aGlzLmNoZWNrSWZQb3BvdmVySXNJbnNpZGVBbm90aGVyUG9wb3ZlcihlbGUpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRm9jdXMoKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgZGlkVXBkYXRlUmVwb3NpdGlvbk9uU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFyZ3MucmVwb3NpdGlvbk9uU2Nyb2xsKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5wb3NpdGlvblBvcG92ZXJGaXhlZCwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnBvc2l0aW9uUG9wb3ZlckZpeGVkLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBAYWN0aW9uXG4gIGRpZFVwZGF0ZUlzT3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLmlzQ3VycmVudGx5T3BlbiA9IHRoaXMuaXNPcGVuO1xuXG4gICAgaWYgKCF0aGlzLnByZXZJc09wZW4gJiYgdGhpcy5hcmdzLmlzT3Blbikge1xuICAgICAgdGhpcy5vbk9wZW5Qb3BvdmVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJldklzT3BlbiAmJiAhdGhpcy5hcmdzLmlzT3Blbikge1xuICAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIGp1c3QgY2xvc2VkIHRoZSBwb3BvdmVyLCBxdWV1ZSB1cCB0aGUgcmVtb3ZhbCBvZiB0aGUgY29udGVudCBhZnRlciB0aGVcbiAgICAgIC8vIHRyYW5zaXRpb24gaXMgY29tcGxldGUuXG4gICAgICB0aGlzLmlzQ2xvc2luZyA9IHRydWU7XG4gICAgICB0aGlzLmlzT3BlbmluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jbG9zaW5nVHJhbnNpdGlvblRpbWVvdXQgPSBsYXRlcihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNDbG9zaW5nID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIDI1MFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnByZXZJc09wZW4gPSB0aGlzLmFyZ3MuaXNPcGVuO1xuICB9XG5cbiAgd2lsbERlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIud2lsbERlc3Ryb3koKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5wb3NpdGlvblBvcG92ZXJGaXhlZCwgdHJ1ZSk7XG4gICAgdGhpcy5wb3BvdmVySG9zdCA9IG51bGw7XG4gICAgY2FuY2VsKHRoaXMucmVzcG9zaXRpb25UaW1lb3V0IGFzIFJldHVyblR5cGU8dHlwZW9mIGxhdGVyPik7XG4gICAgY2FuY2VsKHRoaXMuY2xvc2luZ1RyYW5zaXRpb25UaW1lb3V0IGFzIFJldHVyblR5cGU8dHlwZW9mIGxhdGVyPik7XG4gICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5jbG9zaW5nVHJhbnNpdGlvbkFuaW1hdGlvbkZyYW1lIGFzIG51bWJlcik7XG4gICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy51cGRhdGVGb2N1c0FuaW1hdGlvbkZyYW1lIGFzIG51bWJlcik7XG4gIH1cblxuICBAYWN0aW9uXG4gIG9uTXV0YXRpb24ocmVjb3JkczogTXV0YXRpb25SZWNvcmRbXSk6IHZvaWQge1xuICAgIGNvbnN0IHdhaXREdXJhdGlvbiA9IGdldFdhaXREdXJhdGlvbihyZWNvcmRzKTtcblxuICAgIHRoaXMucG9zaXRpb25Qb3BvdmVyRml4ZWQoKTtcblxuICAgIHBlcmZvcm1PbkZyYW1lKHdhaXREdXJhdGlvbiwgdGhpcy5wb3NpdGlvblBvcG92ZXJGaXhlZCk7XG4gIH1cblxuICBAYWN0aW9uXG4gIHBvc2l0aW9uUG9wb3ZlcihhbGxvd0VuZm9yY2VQb3NpdGlvbjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmJ1dHRvbiA9PSBudWxsIHx8IHRoaXMucGFuZWwgPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgbGV0IHBvc2l0aW9uID0gZ2V0UG9wb3ZlclBvc2l0aW9uRnJvbUFuY2hvclBvc2l0aW9uKHRoaXMuYW5jaG9yUG9zaXRpb24pO1xuICAgIGxldCBmb3JjZVBvc2l0aW9uID0gdW5kZWZpbmVkO1xuXG4gICAgaWYgKFxuICAgICAgYWxsb3dFbmZvcmNlUG9zaXRpb24gJiZcbiAgICAgIHRoaXMuaXNPcGVuU3RhYmxlICYmXG4gICAgICB0aGlzLm9wZW5Qb3NpdGlvbiAhPSBudWxsXG4gICAgKSB7XG4gICAgICBwb3NpdGlvbiA9IHRoaXMub3BlblBvc2l0aW9uO1xuICAgICAgZm9yY2VQb3NpdGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gZ2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgZWxlbWVudCByZWxhdGl2ZSB0byB0aGUgb2Zmc2V0UGFyZW50LCB3aGljaCBjb3VsZCBiZSB0aGUgZG9jdW1lbnRcbiAgICBmdW5jdGlvbiBnZXRQb3MoZWxlOiBIVE1MRWxlbWVudCk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgICAgbGV0IGN1cnJUb3AgPSAwO1xuICAgICAgbGV0IGN1cnJMZWZ0ID0gMDtcblxuICAgICAgaWYgKGVsZS5vZmZzZXRQYXJlbnQpIHtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIGN1cnJUb3AgKz0gZWxlLm9mZnNldFRvcDtcbiAgICAgICAgICBjdXJyTGVmdCArPSBlbGUub2Zmc2V0TGVmdDtcbiAgICAgICAgfSB3aGlsZSAoKGVsZSA9IGVsZS5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJUb3AgPSBlbGUub2Zmc2V0VG9wO1xuICAgICAgICBjdXJyTGVmdCA9IGVsZS5vZmZzZXRMZWZ0O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gW2N1cnJUb3AsIGN1cnJMZWZ0XTtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICB0b3AsXG4gICAgICBsZWZ0LFxuICAgICAgcG9zaXRpb246IGZvdW5kUG9zaXRpb24sXG4gICAgICBhcnJvdyxcbiAgICAgIGFuY2hvckJvdW5kaW5nQm94XG4gICAgfSA9IGZpbmRQb3BvdmVyUG9zaXRpb24oe1xuICAgICAgY29udGFpbmVyOiB0aGlzLmFyZ3MuY29udGFpbmVyLFxuICAgICAgaG9zdDogdGhpcy5zaG91bGRBY2NvdW50Rm9yT3RoZXJQb3BvdmVycyA_IHRoaXMucG9wb3Zlckhvc3QgOiBudWxsLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBmb3JjZVBvc2l0aW9uLFxuICAgICAgYWxpZ246IGdldFBvcG92ZXJBbGlnbkZyb21BbmNob3JQb3NpdGlvbih0aGlzLmFuY2hvclBvc2l0aW9uKSxcbiAgICAgIGFuY2hvcjogdGhpcy5idXR0b24sXG4gICAgICBwb3BvdmVyOiB0aGlzLnBhbmVsLFxuICAgICAgb2Zmc2V0OlxuICAgICAgICAhdGhpcy5hcmdzLmF0dGFjaFRvQW5jaG9yICYmIHRoaXMuaGFzQXJyb3dcbiAgICAgICAgICA_IDE2ICsgKHRoaXMuYXJncy5vZmZzZXQgfHwgMClcbiAgICAgICAgICA6IDggKyAodGhpcy5hcmdzLm9mZnNldCB8fCAwKSxcbiAgICAgIGFycm93Q29uZmlnOiB7XG4gICAgICAgIGFycm93V2lkdGg6IDI0LFxuICAgICAgICBhcnJvd0J1ZmZlcjogMTBcbiAgICAgIH0sXG4gICAgICByZXR1cm5Cb3VuZGluZ0JveDogdGhpcy5hcmdzLmF0dGFjaFRvQW5jaG9yLFxuICAgICAgYnVmZmVyOiB0aGlzLmFyZ3MuYnVmZmVyXG4gICAgfSk7XG5cbiAgICAvLyB0aGUgcG9wb3ZlcidzIHotaW5kZXggbXVzdCBpbmhlcml0IGZyb20gdGhlIGJ1dHRvblxuICAgIC8vIHRoaXMga2VlcHMgYSBidXR0b24ncyBwb3BvdmVyIHVuZGVyIGEgZmx5b3V0IHRoYXQgd291bGQgY292ZXIgdGhlIGJ1dHRvblxuICAgIC8vIGJ1dCBhIHBvcG92ZXIgdHJpZ2dlcmVkIGluc2lkZSBhIGZseW91dCB3aWxsIGFwcGVhciBvdmVyIHRoYXQgZmx5b3V0XG4gICAgY29uc3QgeyB6SW5kZXg6IHpJbmRleFByb3AgfSA9IHRoaXMuYXJncztcbiAgICBjb25zdCB6SW5kZXggPVxuICAgICAgekluZGV4UHJvcCA9PSBudWxsXG4gICAgICAgID8gZ2V0RWxlbWVudFpJbmRleCh0aGlzLmJ1dHRvbiwgdGhpcy5wYW5lbCkgKyAyMDAwXG4gICAgICAgIDogekluZGV4UHJvcDtcblxuICAgIGNvbnN0IHBvcG92ZXJTdHlsZXMgPSB7XG4gICAgICB0b3AsXG4gICAgICBsZWZ0OlxuICAgICAgICB0aGlzLmFyZ3MuYXR0YWNoVG9BbmNob3IgJiYgYW5jaG9yQm91bmRpbmdCb3hcbiAgICAgICAgICA_IGFuY2hvckJvdW5kaW5nQm94LmxlZnRcbiAgICAgICAgICA6IGxlZnQsXG4gICAgICB6SW5kZXhcbiAgICB9O1xuXG4gICAgY29uc3Qgd2lsbFJlbmRlckFycm93ID0gIXRoaXMuYXJncy5hdHRhY2hUb0FuY2hvciAmJiB0aGlzLmhhc0Fycm93O1xuICAgIGNvbnN0IGFycm93U3R5bGVzID0gd2lsbFJlbmRlckFycm93ID8gYXJyb3cgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgYXJyb3dQb3NpdGlvbiA9IGZvdW5kUG9zaXRpb247XG5cbiAgICB0aGlzLnBvcG92ZXJTdHlsZXMgPSBwb3BvdmVyU3R5bGVzO1xuICAgIHRoaXMuYXJyb3dTdHlsZXMgPSBhcnJvd1N0eWxlcztcbiAgICB0aGlzLmFycm93UG9zaXRpb24gPSBhcnJvd1Bvc2l0aW9uO1xuICAgIHRoaXMub3BlblBvc2l0aW9uID0gZm91bmRQb3NpdGlvbjtcbiAgfVxuXG4gIGdldCBfYXJyb3dTdHlsZXMoKTogUmV0dXJuVHlwZTx0eXBlb2YgaHRtbFNhZmU-IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB7IGFycm93U3R5bGVzIH0gPSB0aGlzO1xuXG4gICAgcmV0dXJuIGFycm93U3R5bGVzXG4gICAgICA_IGh0bWxTYWZlKGB0b3A6ICR7YXJyb3dTdHlsZXM_LnRvcH1weDsgbGVmdDogJHthcnJvd1N0eWxlcz8ubGVmdH1weDtgKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgX3BvcG92ZXJTdHlsZXMoKTogeyBbaTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHsgcGFuZWxTdHlsZSB9ID0gdGhpcy5hcmdzO1xuICAgIGNvbnN0IHsgcG9wb3ZlclN0eWxlcyB9ID0gdGhpcztcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5wYW5lbFN0eWxlLFxuICAgICAgdG9wOiBgJHtwb3BvdmVyU3R5bGVzLnRvcH1weGAsXG4gICAgICBsZWZ0OiBgJHtwb3BvdmVyU3R5bGVzLmxlZnR9cHhgLFxuICAgICAgekluZGV4OiBgJHtwb3BvdmVyU3R5bGVzLnpJbmRleH1gXG4gICAgfTtcbiAgfVxuXG4gIGdldCB0YWJpbmRleCgpIHtcbiAgICBpZiAodGhpcy5vd25Gb2N1cykge1xuICAgICAgcmV0dXJuIHRoaXMuYXJncy50YWJpbmRleCA_PyAnMCc7XG4gICAgfVxuXG4gICAgcmV0dXJuICctMSc7XG4gIH1cblxuICBAYWN0aW9uXG4gIHBvc2l0aW9uUG9wb3ZlckZpeGVkKCk6IHZvaWQge1xuICAgIHRoaXMucG9zaXRpb25Qb3BvdmVyKHRydWUpO1xuICB9XG5cbiAgQGFjdGlvblxuICBwb3NpdGlvblBvcG92ZXJGbHVpZCgpOiB2b2lkIHtcbiAgICB0aGlzLnBvc2l0aW9uUG9wb3ZlcihmYWxzZSk7XG4gIH1cblxuICBAYWN0aW9uXG4gIHJlZ2lzdGVyQnV0dG9uKGJ0bjogSFRNTERpdkVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmJ1dHRvbiA9IGJ0bjtcbiAgICB0aGlzLmFyZ3MuYnV0dG9uUmVmPy4oYnRuKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgcmVnaXN0ZXJQYW5lbChwYW5lbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnBhbmVsID0gcGFuZWw7XG4gICAgdGhpcy5hcmdzLnBhbmVsUmVmPy4ocGFuZWwpO1xuXG4gICAgaWYgKHBhbmVsID09PSBudWxsKSB7XG4gICAgICAvLyBwYW5lbCBoYXMgdW5tb3VudGVkLCByZXN0b3JlIHRoZSBzdGF0ZSBkZWZhdWx0c1xuICAgICAgdGhpcy5wb3BvdmVyU3R5bGVzID0gREVGQVVMVF9QT1BPVkVSX1NUWUxFUztcbiAgICAgIHRoaXMuYXJyb3dTdHlsZXMgPSB7fTtcbiAgICAgIHRoaXMuYXJyb3dQb3NpdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLm9wZW5Qb3NpdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLmlzT3BlblN0YWJsZSA9IGZhbHNlO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucG9zaXRpb25Qb3BvdmVyRmx1aWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBwYW5lbCBpcyBjb21pbmcgaW50byBleGlzdGVuY2VcbiAgICAgIHRoaXMucG9zaXRpb25Qb3BvdmVyRmx1aWQoKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnBvc2l0aW9uUG9wb3ZlckZsdWlkKTtcbiAgICB9XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAge3sjbGV0XG4gICAgICAocmFuZG9tSWQpXG4gICAgICAoY2xhc3NOYW1lc1xuICAgICAgICAoaWYgdGhpcy5pc09wZW5pbmcgXCJldWlQb3BvdmVyLWlzT3BlblwiKVxuICAgICAgICBwb3NpdGlvbj10aGlzLmFuY2hvclBvc2l0aW9uXG4gICAgICAgIGRpc3BsYXk9dGhpcy5kaXNwbGF5XG4gICAgICAgIGNvbXBvbmVudE5hbWU9XCJFdWlQb3BvdmVyXCJcbiAgICAgIClcbiAgICAgIChjbGFzc05hbWVzXG4gICAgICAgIFwiZXVpUG9wb3Zlcl9fcGFuZWxcIlxuICAgICAgICAoY29uY2F0IFwiZXVpUG9wb3Zlcl9fcGFuZWwtLVwiIHRoaXMuYXJyb3dQb3NpdGlvbilcbiAgICAgICAgKGlmIHRoaXMuaXNPcGVuaW5nIFwiZXVpUG9wb3Zlcl9fcGFuZWwtaXNPcGVuXCIpXG4gICAgICAgIChpZlxuICAgICAgICAgIChvciAobm90IHRoaXMuaGFzQXJyb3cpIEBhdHRhY2hUb0FuY2hvcikgXCJldWlQb3BvdmVyX19wYW5lbC1ub0Fycm93XCJcbiAgICAgICAgKVxuICAgICAgICAoaWYgQGF0dGFjaFRvQW5jaG9yIFwiZXVpUG9wb3Zlcl9fcGFuZWwtaXNBdHRhY2hlZFwiKVxuICAgICAgICBAcGFuZWxDbGFzc2VzXG4gICAgICApXG4gICAgICBhcyB8ZGVzY3JpcHRpb25JZCBjbGFzc2VzIHBhbmVsQ2xhc3Nlc3xcbiAgICB9fVxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz17e2NsYXNzZXN9fVxuICAgICAgICB7e29uS2V5IFwiX2FsbFwiIHRoaXMub25LZXlEb3duIHByaW9yaXR5PTF9fVxuICAgICAgICB7e2RpZEluc2VydCB0aGlzLmRpZEluc2VydFBvcG92ZXJ9fVxuICAgICAgICB7e2RpZFVwZGF0ZSB0aGlzLmRpZFVwZGF0ZUlzT3BlbiBAaXNPcGVufX1cbiAgICAgICAge3tkaWRVcGRhdGUgdGhpcy5kaWRVcGRhdGVSZXBvc2l0aW9uT25TY3JvbGwgQHJlcG9zaXRpb25PblNjcm9sbH19XG4gICAgICAgIHt7ZGlkSW5zZXJ0IChvcHRpb25hbCBAcG9wb3ZlclJlZil9fVxuICAgICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgICA-XG5cbiAgICAgICAge3shIGJ1dHRvbiB9fVxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJldWlQb3BvdmVyX19hbmNob3Ige3tAYW5jaG9yQ2xhc3NOYW1lfX1cIlxuICAgICAgICAgIHt7ZGlkSW5zZXJ0IHRoaXMucmVnaXN0ZXJCdXR0b259fVxuICAgICAgICA-XG4gICAgICAgICAge3t5aWVsZCB0bz1cImJ1dHRvblwifX1cbiAgICAgICAgPC9kaXY-XG5cbiAgICAgICAge3shIGNvbnRlbnQgfX1cbiAgICAgICAge3sjaWZcbiAgICAgICAgICAoYW5kXG4gICAgICAgICAgICAobm90IHRoaXMuc3VwcHJlc3NpbmdQb3BvdmVyKVxuICAgICAgICAgICAgKG9yIHRoaXMuaXNDdXJyZW50bHlPcGVuIHRoaXMuaXNDbG9zaW5nKVxuICAgICAgICAgIClcbiAgICAgICAgfX1cbiAgICAgICAgICA8RXVpUG9ydGFsIEBpbnNlcnQ9e3t0aGlzLmluc2VydH19PlxuICAgICAgICAgICAge3sjbGV0IChyYW5kb21JZCkgYXMgfHBhbmVsSWR8fX1cbiAgICAgICAgICAgICAgPEV1aVBhbmVsXG4gICAgICAgICAgICAgICAgaWQ9e3twYW5lbElkfX1cbiAgICAgICAgICAgICAgICBjbGFzcz17e3BhbmVsQ2xhc3Nlc319XG4gICAgICAgICAgICAgICAgYXJpYS1saXZlPXt7aWYgdGhpcy5vd25Gb2N1cyBcIm9mZlwiIFwiYXNzZXJ0aXZlXCJ9fVxuICAgICAgICAgICAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3tAYXJpYUxhYmVsfX1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e3tAYXJpYUxhYmVsbGVkQnl9fVxuICAgICAgICAgICAgICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PXt7aWYgdGhpcy5vd25Gb2N1cyBkZXNjcmlwdGlvbklkfX1cbiAgICAgICAgICAgICAgICB0YWJpbmRleD17e3RoaXMudGFiaW5kZXh9fVxuICAgICAgICAgICAgICAgIEBoYXNTaGFkb3c9e3tmYWxzZX19XG4gICAgICAgICAgICAgICAgQHBhZGRpbmdTaXplPXt7dGhpcy5wYW5lbFBhZGRpbmdTaXplfX1cbiAgICAgICAgICAgICAgICB7e3NpbXBsZVN0eWxlIHRoaXMuX3BvcG92ZXJTdHlsZXN9fVxuICAgICAgICAgICAgICAgIHt7ZGlkSW5zZXJ0IHRoaXMucmVnaXN0ZXJQYW5lbH19XG4gICAgICAgICAgICAgICAge3tvdXRzaWRlQ2xpY2tEZXRlY3RvciBvbk91dHNpZGVDbGljaz10aGlzLm9uQ2xpY2tPdXRzaWRlfX1cbiAgICAgICAgICAgICAgICB7e29uS2V5IFwiRXNjYXBlXCIgdGhpcy5vbkVzY2FwZUtleX19XG4gICAgICAgICAgICAgICAge3tmb2N1c1RyYXBcbiAgICAgICAgICAgICAgICAgIGlzQWN0aXZlPShub3RcbiAgICAgICAgICAgICAgICAgICAgKG9yXG4gICAgICAgICAgICAgICAgICAgICAgKG5vdCB0aGlzLm93bkZvY3VzKSAobm90IHRoaXMuaXNPcGVuU3RhYmxlKSB0aGlzLmlzQ2xvc2luZ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBzaG91bGRTZWxmRm9jdXM9dGhpcy5zaG91bGRTZWxmRm9jdXNcbiAgICAgICAgICAgICAgICAgIGlzUGF1c2VkPXRoaXMuaXNGb2N1c1RyYXBQYXVzZWRcbiAgICAgICAgICAgICAgICAgIGZvY3VzVHJhcE9wdGlvbnM9KG1lcmdlXG4gICAgICAgICAgICAgICAgICAgIChoYXNoXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuRm9jdXNPbkRlYWN0aXZhdGU9dGhpcy5pc09wZW5TdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsRm9jdXM9KG9yIEBpbml0aWFsRm9jdXMgdGhpcy5wYW5lbClcbiAgICAgICAgICAgICAgICAgICAgICBvbkRlYWN0aXZhdGU9KG9wdGlvbmFsIEBvblRyYXBEZWFjdGl2YXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbD10cnVlXG4gICAgICAgICAgICAgICAgICAgICAgY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM9dHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrRm9jdXM9KGNvbmNhdCBcIiNcIiBwYW5lbElkKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIEBmb2N1c1RyYXBPcHRpb25zXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPXt7Y29uY2F0XG4gICAgICAgICAgICAgICAgICAgIFwiZXVpUG9wb3Zlcl9fcGFuZWxBcnJvdyBldWlQb3BvdmVyX19wYW5lbEFycm93LS1cIlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFycm93UG9zaXRpb25cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBzdHlsZT17e3RoaXMuX2Fycm93U3R5bGVzfX1cbiAgICAgICAgICAgICAgICA-XG4gICAgICAgICAgICAgICAgICB7e3lpZWxkIHRvPVwiYXJyb3dDaGlsZHJlblwifX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7eyNpZiB0aGlzLm93bkZvY3VzfX1cbiAgICAgICAgICAgICAgICAgIDxwIGlkPXt7ZGVzY3JpcHRpb25JZH19IHt7c2NyZWVuUmVhZGVyT25seX19PlxuICAgICAgICAgICAgICAgICAgICBZb3UgYXJlIGluIGEgZGlhbG9nLiBUbyBjbG9zZSB0aGlzIGRpYWxvZywgaGl0IGVzY2FwZS5cbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICB7ey9pZn19XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAge3ttdXRhdGlvbk9ic2VydmVyXG4gICAgICAgICAgICAgICAgICAgIG9uTXV0YXRpb249dGhpcy5vbk11dGF0aW9uXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyT3B0aW9ucz0obWVyZ2VcbiAgICAgICAgICAgICAgICAgICAgICAoaGFzaFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcz10cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZExpc3Q9dHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyRGF0YT10cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0cmVlPXRydWVcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgQG11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3t5aWVsZCB0bz1cImNvbnRlbnRcIn19XG4gICAgICAgICAgICAgICAgPC9kaXY-XG4gICAgICAgICAgICAgIDwvRXVpUGFuZWw-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"],"names":["anchorPositionToPopoverPositionMap","up","right","down","left","getPopoverPositionFromAnchorPosition","anchorPosition1","match1","match","length","getPopoverAlignFromAnchorPosition","toLowerCase","ANCHOR_POSITIONS","Object","keys","anchorPositionMapping","DISPLAY","displayMapping","DEFAULT_POPOVER_STYLES","top","getElementFromInitialFocus","initialFocus1","initialFocusType1","document","querySelector","EuiPopoverComponent","Component","g","this","prototype","argOrDefaultDecorator","i","void 0","tracked","respositionTimeout","closingTransitionTimeout","closingTransitionAnimationFrame","updateFocusAnimationFrame","hasSetInitialFocus","constructor","owner1","args1","assert","args","closePopover","prevIsOpen","isOpen","suppressingPopover","isCurrentlyOpen","insert","shouldAccountForOtherPopovers","popoverHost","sibling","children","position","undefined","n","action","onEscapeKey","event1","ekEvent1","stopPropagation","stopImmediatePropagation","preventDefault","onKeyDown","key","cascadingMenuKeys","ESCAPE","onClickOutside","focusTrapOptions","button","contains","target","updateFocus","window","requestAnimationFrame","ownFocus","panel","initialFocus","activeElement","focusTarget1","tabbableItems1","tabbable","panelVisibility1","getComputedStyle","opacity","visibility1","visibility","focus","onOpenPopover","cancel","isOpening","durationMatch","durationMatch1","delayMatch","delayMatch1","Array","slice","call","reduce","element1","transitionTimings1","getTransitionTimings","Math","max","later","isOpenStable","fn1","positionPopoverFixed","scheduleOnce","checkIfPopoverIsInsideAnotherPopover","ele1","otherPopover1","closest","didInsertPopover","repositionOnScroll","addEventListener","didUpdateRepositionOnScroll","removeEventListener","didUpdateIsOpen","isClosing","willDestroy","cancelAnimationFrame","onMutation","records1","waitDuration1","getWaitDuration","performOnFrame","positionPopover","allowEnforcePosition1","position1","anchorPosition","forcePosition1","openPosition","top1","left1","foundPosition1","arrow","arrow1","anchorBoundingBox","anchorBoundingBox1","findPopoverPosition","container","host","forcePosition","align","anchor","popover","offset","attachToAnchor","hasArrow","arrowConfig","arrowWidth","arrowBuffer","returnBoundingBox","buffer","zIndex","zIndexProp1","zIndex1","getElementZIndex","popoverStyles1","willRenderArrow1","arrowStyles1","arrowPosition1","popoverStyles","arrowStyles","arrowPosition","_arrowStyles","htmlSafe","_popoverStyles","panelStyle","panelStyle1","tabindex","positionPopoverFluid","registerButton","btn1","buttonRef","registerPanel","panel1","panelRef","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","classNames","concat","or","not","onKey","didInsert","didUpdate","optional","and","EuiPortal","EuiPanel","simpleStyle","outsideClickDetector","focusTrap","merge","hash","screenReaderOnly","mutationObserver"],"mappings":"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"}
1
+ {"version":3,"file":"eui-popover.js","sources":["../../src/components/eui-popover.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { hash } from '@ember/helper';\nimport { concat } from '@ember/helper';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { cancel, later, scheduleOnce } from '@ember/runloop';\nimport { htmlSafe } from '@ember/template';\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { focusTrap } from 'ember-focus-trap';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { and, not, or } from 'ember-truth-helpers';\nimport { tabbable } from 'tabbable';\nimport randomId from '../-private/random-id.ts';\nimport { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport merge from '../helpers/merge.ts';\nimport mutationObserver from '../modifiers/mutation-observer.ts';\nimport outsideClickDetector from '../modifiers/outside-click-detector.ts';\nimport screenReaderOnly from '../modifiers/screen-reader-only.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport { cascadingMenuKeys } from '../utils/accesibility/index.ts';\nimport { anchorPositionMapping, displayMapping } from '../utils/css-mappings/eui-popover.ts';\nimport { findPopoverPosition, getElementZIndex } from '../utils/popover/index.ts';\nimport { getTransitionTimings, getWaitDuration, performOnFrame } from '../utils/transition.ts';\nimport EuiPanel from './eui-panel.gts';\nimport EuiPortal from './eui-portal.gts';\nimport type { paddingSizeMapping } from '../utils/css-mappings/eui-panel.ts';\nimport type { EuiPopoverPosition } from '../utils/popover/types';\nimport type { EmberKeyboardEvent } from 'ember-keyboard/modifiers/on-key';\ntype PanelPaddingSize = keyof typeof paddingSizeMapping;\nexport type PopoverAnchorPosition = 'upCenter' | 'upLeft' | 'upRight' | 'downCenter' | 'downLeft' | 'downRight' | 'leftCenter' | 'leftUp' | 'leftDown' | 'rightCenter' | 'rightUp' | 'rightDown';\nexport type EuiPopoverArgs = {\n panelClasses?: string;\n /**\n * Class name passed to the direct parent of the button\n */ anchorClassName?: string;\n /**\n * Alignment of the popover and arrow relative to the button\n */ anchorPosition?: PopoverAnchorPosition;\n /**\n * Style and position alteration for arrow-less, left-aligned\n * attachment. Intended for use with inputs as anchors, e.g.\n * EuiInputPopover\n */ attachToAnchor?: boolean;\n /**\n * Triggering element for which to align the popover to\n */ button?: Component;\n buttonRef?: (e: HTMLDivElement) => unknown;\n /**\n * Callback to handle hiding of the popover\n */ closePopover: () => void;\n /**\n * Restrict the popover's position within this element\n */ container?: HTMLElement;\n /**\n * CSS display type for both the popover and anchor\n */ display?: keyof typeof displayMapping;\n /**\n * Show arrow indicating to originating button\n */ hasArrow?: boolean;\n /**\n * Specifies what element should initially have focus; Can be a DOM\n * node, or a selector string (which will be passed to\n * document.querySelector() to find the DOM node), or a function that\n * returns a DOM node\n */ initialFocus?: FocusTarget | false;\n /**\n * Passed directly to EuiPortal for DOM positioning. Both properties are\n * required if prop is specified\n */ insert?: {\n sibling: HTMLElement;\n position: 'before' | 'after';\n };\n /**\n * Visibility state of the popover\n */ isOpen?: boolean;\n /**\n * Traps tab focus within the popover contents\n */ ownFocus?: boolean;\n /**\n * Custom class added to the EuiPanel containing the popover contents\n */ panelClassName?: string;\n /**\n * EuiPanel padding on all sides\n */ panelPaddingSize?: PanelPaddingSize;\n /**\n * Standard DOM `style` attribute. Passed to the EuiPanel\n */ panelStyle?: {\n [i: string]: string;\n };\n panelRef?: (e: HTMLElement | null) => unknown;\n popoverRef?: (e: HTMLElement) => unknown;\n /**\n * when not `false`, the popover will check if this popover is inside another popover and if so. will reposition itself to be inside the other popover\n */ shouldAccountForOtherPopovers?: boolean;\n /**\n * When `true`, the popover's position is re-calculated when the user\n * scrolls, this supports having fixed-position popover anchors\n */ repositionOnScroll?: boolean;\n /**\n * By default, popover content inherits the z-index of the anchor\n * component; pass `zIndex` to override\n */ zIndex?: number;\n /**\n * Function callback for when the focus trap is deactivated\n */ onTrapDeactivation?: () => void;\n /**\n * Distance away from the anchor that the popover will render\n */ offset?: number;\n /**\n * Minimum distance between the popover and the bounding container;\n * Pass an array of 4 values to adjust each side differently: `[top, right, bottom, left]`\n * Default is 16\n */ buffer?: number | [number, number, number, number];\n /**\n * Element to pass as the child element of the arrow;\n * Use case is typically limited to an accompanying `EuiBeacon`\n */ arrowChildren?: Component;\n /**\n * Provide a name to the popover panel\n */ ariaLabel?: string;\n /**\n * Alternative option to `aria-label` that takes an `id`.\n * Usually takes the `id` of the popover title\n */ ariaLabelledBy?: string;\n tabindex?: string | number;\n shouldSelfFocus?: boolean;\n isFocusTrapPaused?: boolean;\n focusTrapOptions?: {\n onClickOutside?: (e: Event) => void;\n };\n mutationObserverOptions?: {\n attributes?: boolean;\n childList?: boolean;\n characterData?: boolean;\n subtree?: boolean;\n };\n};\ntype AnchorPosition = 'up' | 'right' | 'down' | 'left';\nconst anchorPositionToPopoverPositionMap: {\n [position in AnchorPosition]: EuiPopoverPosition;\n} = {\n up: 'top',\n right: 'right',\n down: 'bottom',\n left: 'left'\n};\nexport function getPopoverPositionFromAnchorPosition(anchorPosition1: PopoverAnchorPosition): EuiPopoverPosition {\n // maps the anchor position to the matching popover position\n // e.g. \"upLeft\" -> \"top\", \"downRight\" -> \"bottom\"\n // extract the first positional word from anchorPosition:\n // starts at the beginning (\" ^ \") of anchorPosition and\n // captures all of the characters (\" (.*?) \") until the\n // first capital letter (\" [A-Z] \") is encountered\n const match1 = anchorPosition1.match(/^(.*?)[A-Z]/);\n if (match1?.length && match1.length > 1) {\n return anchorPositionToPopoverPositionMap[match1[1] as AnchorPosition];\n }\n return anchorPositionToPopoverPositionMap['up'];\n}\nexport function getPopoverAlignFromAnchorPosition(anchorPosition1: PopoverAnchorPosition): EuiPopoverPosition {\n // maps the gravity to the matching popover position\n // e.g. \"upLeft\" -> \"left\", \"rightDown\" -> \"bottom\"\n // extract the second positional word from anchorPosition:\n // starts a capture group at the first capital letter\n // and includes everything after it\n const match1 = anchorPosition1.match(/([A-Z].*)/);\n // this performs two tasks:\n // 1. normalizes the align position by lowercasing it\n // 2. `center` doesn't exist in the lookup map which converts it to `undefined` meaning no align\n if (match1?.length && match1.length > 1) {\n return anchorPositionToPopoverPositionMap[match1[1]?.toLowerCase() as AnchorPosition];\n }\n return anchorPositionToPopoverPositionMap['left'];\n}\nexport const ANCHOR_POSITIONS = Object.keys(anchorPositionMapping);\nexport const DISPLAY = Object.keys(displayMapping);\nexport type FocusTarget = HTMLElement | string | (() => HTMLElement);\nconst DEFAULT_POPOVER_STYLES = {\n top: 50,\n left: 50\n};\nfunction getElementFromInitialFocus(initialFocus1?: FocusTarget): HTMLElement | null {\n const initialFocusType1 = typeof initialFocus1;\n if (initialFocusType1 === 'string') {\n return document.querySelector(initialFocus1 as string);\n }\n if (initialFocusType1 === 'function') {\n return (initialFocus1 as () => HTMLElement | null)();\n }\n return initialFocus1 as HTMLElement | null;\n}\ntype CssProps = {\n top?: number;\n left?: number;\n right?: number;\n bottom?: number;\n zIndex?: number;\n};\nexport interface EuiPopoverSignature {\n Element: HTMLDivElement;\n Args: EuiPopoverArgs;\n Blocks: {\n button: [];\n content: [];\n arrowChildren: [];\n };\n}\nexport default class EuiPopoverComponent extends Component<EuiPopoverSignature> {\n // Defaults\n @argOrDefaultDecorator(false)\n isOpen: boolean;\n @argOrDefaultDecorator(true)\n ownFocus: boolean;\n @argOrDefaultDecorator('downCenter')\n anchorPosition: PopoverAnchorPosition;\n @argOrDefaultDecorator('m')\n panelPaddingSize: PanelPaddingSize;\n @argOrDefaultDecorator(true)\n hasArrow: boolean;\n @argOrDefaultDecorator('inlineBlock')\n display: string;\n @argOrDefaultDecorator(true)\n shouldSelfFocus: boolean;\n @argOrDefaultDecorator(false)\n isFocusTrapPaused: boolean;\n //State\n @tracked\n prevIsOpen: boolean | undefined;\n @tracked\n suppressingPopover: boolean | undefined;\n @tracked\n isClosing = false;\n @tracked\n isOpening = false;\n @tracked\n popoverStyles: CssProps = {};\n @tracked\n arrowStyles: CssProps | undefined = {};\n @tracked\n arrowPosition: EuiPopoverPosition | null = null;\n @tracked\n openPosition: EuiPopoverPosition | null = null;\n @tracked\n isOpenStable = false;\n @tracked\n isCurrentlyOpen: boolean | undefined;\n @tracked\n popoverHost?: HTMLElement | null = null;\n ///\n private respositionTimeout: ReturnType<typeof later> | null = null;\n private closingTransitionTimeout: ReturnType<typeof later> | null = null;\n private closingTransitionAnimationFrame: number | undefined;\n private updateFocusAnimationFrame: number | undefined;\n private hasSetInitialFocus: boolean = false;\n @tracked\n button: HTMLElement | null = null;\n @tracked\n panel: HTMLElement | null = null;\n constructor(owner1: unknown, args1: EuiPopoverArgs){\n super(owner1, args1);\n assert(`Must provide closePopover function`, this.args.closePopover);\n this.prevIsOpen = this.isOpen;\n this.suppressingPopover = this.isOpen;\n this.isCurrentlyOpen = this.isOpen;\n }\n get insert() {\n if (this.args.insert) {\n return this.args.insert;\n }\n if (this.shouldAccountForOtherPopovers) {\n if (this.popoverHost) {\n return {\n sibling: this.popoverHost.children[0] as HTMLElement,\n position: 'after'\n };\n }\n }\n return undefined;\n }\n @action\n closePopover(): void {\n if (this.isOpen) {\n this.args.closePopover();\n }\n }\n @action\n onEscapeKey(event1: Event, ekEvent1?: EmberKeyboardEvent): void {\n if (this.isOpen) {\n ekEvent1?.stopPropagation();\n ekEvent1?.stopImmediatePropagation();\n event1.preventDefault();\n event1.stopPropagation();\n this.closePopover();\n }\n }\n @action\n onKeyDown(event1: KeyboardEvent, ekEvent1: EmberKeyboardEvent): void {\n if (event1.key === cascadingMenuKeys.ESCAPE) {\n this.onEscapeKey(event1 as unknown as Event, ekEvent1 as unknown as Event);\n }\n }\n @action\n onClickOutside(event1: Event): void {\n if (this.args.focusTrapOptions?.onClickOutside) {\n this.args.focusTrapOptions.onClickOutside(event1);\n } else {\n // only close the popover if the event source isn't the anchor button\n // otherwise, it is up to the anchor to toggle the popover's open status\n if (this.button && this.button.contains(event1.target as Node) === false) {\n this.closePopover();\n }\n }\n }\n updateFocus(): void {\n // Wait for the DOM to update.\n this.updateFocusAnimationFrame = window.requestAnimationFrame(()=>{\n if (!this.ownFocus || !this.panel || this.args.initialFocus === false) {\n return;\n }\n // If we've already focused on something inside the panel, everything's fine.\n if (this.hasSetInitialFocus && this.panel.contains(document.activeElement)) {\n return;\n }\n // Otherwise let's focus the first tabbable item and expedite input from the user.\n let focusTarget1;\n if (this.args.initialFocus != null) {\n focusTarget1 = getElementFromInitialFocus(this.args.initialFocus);\n } else {\n const tabbableItems1 = tabbable(this.panel);\n if (tabbableItems1.length) {\n focusTarget1 = tabbableItems1[0];\n }\n }\n // there's a race condition between the popover content becoming visible and this function call\n // if the element isn't visible yet (due to css styling) then it can't accept focus\n // so wait for another render and try again\n if (focusTarget1 == null) {\n // there isn't a focus target, one of two reasons:\n // #1 is the whole panel hidden? If so, schedule another check\n // #2 panel is visible but no tabbables exist, move focus to the panel\n const panelVisibility1 = window.getComputedStyle(this.panel).opacity;\n if (panelVisibility1 === '0') {\n // #1\n this.updateFocus();\n } else {\n // #2\n focusTarget1 = this.panel;\n }\n } else {\n // found an element to focus, but is it visible?\n const visibility1 = window.getComputedStyle(focusTarget1).visibility;\n if (visibility1 === 'hidden') {\n // not visible, check again next render frame\n this.updateFocus();\n }\n }\n if (focusTarget1 != null) {\n this.hasSetInitialFocus = true;\n focusTarget1.focus();\n }\n });\n }\n @action\n onOpenPopover(): void {\n cancel(this.closingTransitionTimeout as ReturnType<typeof later>);\n // We need to set this state a beat after the render takes place, so that the CSS\n // transition can take effect.\n this.closingTransitionAnimationFrame = window.requestAnimationFrame(()=>{\n this.isOpening = true;\n });\n // for each child element of `this.panel`, find any transition duration we should wait for before stabilizing\n const { durationMatch: durationMatch1, delayMatch: delayMatch1 } = Array.prototype.slice.call(this.panel ? this.panel.children : []).reduce(({ durationMatch: durationMatch1, delayMatch: delayMatch1 }: {\n durationMatch: number;\n delayMatch: number;\n }, element1: HTMLElement)=>{\n const transitionTimings1 = getTransitionTimings(element1);\n return {\n durationMatch: Math.max(durationMatch1, transitionTimings1.durationMatch),\n delayMatch: Math.max(delayMatch1, transitionTimings1.delayMatch)\n };\n }, {\n durationMatch: 0,\n delayMatch: 0\n });\n this.respositionTimeout = later(this, ()=>{\n this.isOpenStable = true;\n const fn1 = (): void =>{\n this.positionPopoverFixed();\n this.updateFocus();\n };\n scheduleOnce('afterRender', this, fn1);\n }, durationMatch1 + delayMatch1);\n }\n get shouldAccountForOtherPopovers() {\n return this.args.shouldAccountForOtherPopovers ?? true;\n }\n checkIfPopoverIsInsideAnotherPopover(ele1: HTMLElement) {\n const otherPopover1 = ele1.closest<HTMLDivElement>('div.euiPopover__panel');\n this.popoverHost = otherPopover1;\n }\n @action\n didInsertPopover(ele1: HTMLDivElement): void {\n if (this.suppressingPopover) {\n // component was created with isOpen=true; now that it's inserted\n // stop suppressing and start opening\n this.suppressingPopover = false;\n this.isOpening = true;\n const fn1 = (): void =>this.onOpenPopover();\n scheduleOnce('afterRender', this, fn1);\n }\n if (this.args.repositionOnScroll) {\n window.addEventListener('scroll', this.positionPopoverFixed, true);\n }\n if (this.shouldAccountForOtherPopovers) {\n this.checkIfPopoverIsInsideAnotherPopover(ele1);\n }\n this.updateFocus();\n }\n @action\n didUpdateRepositionOnScroll(): void {\n if (this.args.repositionOnScroll) {\n window.addEventListener('scroll', this.positionPopoverFixed, true);\n } else {\n window.removeEventListener('scroll', this.positionPopoverFixed, true);\n }\n }\n @action\n didUpdateIsOpen(): void {\n this.isCurrentlyOpen = this.isOpen;\n if (!this.prevIsOpen && this.args.isOpen) {\n this.onOpenPopover();\n }\n if (this.prevIsOpen && !this.args.isOpen) {\n // If the user has just closed the popover, queue up the removal of the content after the\n // transition is complete.\n this.isClosing = true;\n this.isOpening = false;\n this.closingTransitionTimeout = later(this, ()=>{\n this.isClosing = false;\n }, 250);\n }\n this.prevIsOpen = this.args.isOpen;\n }\n willDestroy(): void {\n super.willDestroy();\n window.removeEventListener('scroll', this.positionPopoverFixed, true);\n this.popoverHost = null;\n cancel(this.respositionTimeout as ReturnType<typeof later>);\n cancel(this.closingTransitionTimeout as ReturnType<typeof later>);\n cancelAnimationFrame(this.closingTransitionAnimationFrame as number);\n cancelAnimationFrame(this.updateFocusAnimationFrame as number);\n }\n @action\n onMutation(records1: MutationRecord[]): void {\n const waitDuration1 = getWaitDuration(records1);\n this.positionPopoverFixed();\n performOnFrame(waitDuration1, this.positionPopoverFixed);\n }\n @action\n positionPopover(allowEnforcePosition1: boolean): void {\n if (this.button == null || this.panel == null) return;\n let position1 = getPopoverPositionFromAnchorPosition(this.anchorPosition);\n let forcePosition1 = undefined;\n if (allowEnforcePosition1 && this.isOpenStable && this.openPosition != null) {\n position1 = this.openPosition;\n forcePosition1 = true;\n }\n // get the position of the element relative to the offsetParent, which could be the document\n function getPos1(ele1: HTMLElement): [number, number] {\n let currTop1 = 0;\n let currLeft1 = 0;\n if (ele1.offsetParent) {\n do {\n currTop1 += ele1.offsetTop;\n currLeft1 += ele1.offsetLeft;\n }while ((ele1 = ele1.offsetParent as HTMLElement))\n } else {\n currTop1 = ele1.offsetTop;\n currLeft1 = ele1.offsetLeft;\n }\n return [\n currTop1,\n currLeft1\n ];\n }\n const { top: top1, left: left1, position: foundPosition1, arrow: arrow1, anchorBoundingBox: anchorBoundingBox1 } = findPopoverPosition({\n container: this.args.container,\n host: this.shouldAccountForOtherPopovers ? this.popoverHost : null,\n position: position1,\n forcePosition: forcePosition1,\n align: getPopoverAlignFromAnchorPosition(this.anchorPosition),\n anchor: this.button,\n popover: this.panel,\n offset: !this.args.attachToAnchor && this.hasArrow ? 16 + (this.args.offset || 0) : 8 + (this.args.offset || 0),\n arrowConfig: {\n arrowWidth: 24,\n arrowBuffer: 10\n },\n returnBoundingBox: this.args.attachToAnchor,\n buffer: this.args.buffer\n });\n // the popover's z-index must inherit from the button\n // this keeps a button's popover under a flyout that would cover the button\n // but a popover triggered inside a flyout will appear over that flyout\n const { zIndex: zIndexProp1 } = this.args;\n const zIndex1 = zIndexProp1 == null ? getElementZIndex(this.button, this.panel) + 2000 : zIndexProp1;\n const popoverStyles1 = {\n top: top1,\n left: this.args.attachToAnchor && anchorBoundingBox1 ? anchorBoundingBox1.left : left1,\n zIndex: zIndex1\n };\n const willRenderArrow1 = !this.args.attachToAnchor && this.hasArrow;\n const arrowStyles1 = willRenderArrow1 ? arrow1 : undefined;\n const arrowPosition1 = foundPosition1;\n this.popoverStyles = popoverStyles1;\n this.arrowStyles = arrowStyles1;\n this.arrowPosition = arrowPosition1;\n this.openPosition = foundPosition1;\n }\n get _arrowStyles(): ReturnType<typeof htmlSafe> | undefined {\n const { arrowStyles: arrowStyles1 } = this;\n return arrowStyles1 ? htmlSafe(`top: ${arrowStyles1?.top}px; left: ${arrowStyles1?.left}px;`) : undefined;\n }\n get _popoverStyles(): {\n [i: string]: string;\n } {\n const { panelStyle: panelStyle1 } = this.args;\n const { popoverStyles: popoverStyles1 } = this;\n return {\n ...panelStyle1,\n top: `${popoverStyles1.top}px`,\n left: `${popoverStyles1.left}px`,\n zIndex: `${popoverStyles1.zIndex}`\n };\n }\n get tabindex() {\n if (this.ownFocus) {\n return this.args.tabindex ?? '0';\n }\n return '-1';\n }\n @action\n positionPopoverFixed(): void {\n this.positionPopover(true);\n }\n @action\n positionPopoverFluid(): void {\n this.positionPopover(false);\n }\n @action\n registerButton(btn1: HTMLDivElement): void {\n this.button = btn1;\n this.args.buttonRef?.(btn1);\n }\n @action\n registerPanel(panel1: HTMLElement): void {\n this.panel = panel1;\n this.args.panelRef?.(panel1);\n if (panel1 === null) {\n // panel has unmounted, restore the state defaults\n this.popoverStyles = DEFAULT_POPOVER_STYLES;\n this.arrowStyles = {};\n this.arrowPosition = null;\n this.openPosition = null;\n this.isOpenStable = false;\n window.removeEventListener('resize', this.positionPopoverFluid);\n } else {\n // panel is coming into existence\n this.positionPopoverFluid();\n window.addEventListener('resize', this.positionPopoverFluid);\n }\n }\n static{\n template(`\n {{#let\n (randomId)\n (classNames\n (if this.isOpening \"euiPopover-isOpen\")\n position=this.anchorPosition\n display=this.display\n componentName=\"EuiPopover\"\n )\n (classNames\n \"euiPopover__panel\"\n (concat \"euiPopover__panel--\" this.arrowPosition)\n (if this.isOpening \"euiPopover__panel-isOpen\")\n (if\n (or (not this.hasArrow) @attachToAnchor) \"euiPopover__panel-noArrow\"\n )\n (if @attachToAnchor \"euiPopover__panel-isAttached\")\n @panelClasses\n )\n as |descriptionId classes panelClasses|\n }}\n <div\n class={{classes}}\n {{onKey \"_all\" this.onKeyDown priority=1}}\n {{didInsert this.didInsertPopover}}\n {{didUpdate this.didUpdateIsOpen @isOpen}}\n {{didUpdate this.didUpdateRepositionOnScroll @repositionOnScroll}}\n {{didInsert (optional @popoverRef)}}\n ...attributes\n >\n\n {{! button }}\n <div\n class=\"euiPopover__anchor {{@anchorClassName}}\"\n {{didInsert this.registerButton}}\n >\n {{yield to=\"button\"}}\n </div>\n\n {{! content }}\n {{#if\n (and\n (not this.suppressingPopover)\n (or this.isCurrentlyOpen this.isClosing)\n )\n }}\n <EuiPortal @insert={{this.insert}}>\n {{#let (randomId) as |panelId|}}\n <EuiPanel\n id={{panelId}}\n class={{panelClasses}}\n aria-live={{if this.ownFocus \"off\" \"assertive\"}}\n role=\"dialog\"\n aria-label={{@ariaLabel}}\n aria-labelledby={{@ariaLabelledBy}}\n aria-modal=\"true\"\n aria-describedby={{if this.ownFocus descriptionId}}\n tabindex={{this.tabindex}}\n @hasShadow={{false}}\n @paddingSize={{this.panelPaddingSize}}\n {{simpleStyle this._popoverStyles}}\n {{didInsert this.registerPanel}}\n {{outsideClickDetector onOutsideClick=this.onClickOutside}}\n {{onKey \"Escape\" this.onEscapeKey}}\n {{focusTrap\n isActive=(not\n (or\n (not this.ownFocus) (not this.isOpenStable) this.isClosing\n )\n )\n shouldSelfFocus=this.shouldSelfFocus\n isPaused=this.isFocusTrapPaused\n focusTrapOptions=(merge\n (hash\n returnFocusOnDeactivate=this.isOpenStable\n initialFocus=(or @initialFocus this.panel)\n onDeactivate=(optional @onTrapDeactivation)\n preventScroll=true\n clickOutsideDeactivates=true\n fallbackFocus=(concat \"#\" panelId)\n )\n @focusTrapOptions\n )\n }}\n >\n <div\n class={{concat\n \"euiPopover__panelArrow euiPopover__panelArrow--\"\n this.arrowPosition\n }}\n style={{this._arrowStyles}}\n >\n {{yield to=\"arrowChildren\"}}\n </div>\n {{#if this.ownFocus}}\n <p id={{descriptionId}} {{screenReaderOnly}}>\n You are in a dialog. To close this dialog, hit escape.\n </p>\n {{/if}}\n <div\n {{mutationObserver\n onMutation=this.onMutation\n observerOptions=(merge\n (hash\n attributes=true\n childList=true\n characterData=true\n subtree=true\n )\n @mutationObserverOptions\n )\n }}\n >\n {{yield to=\"content\"}}\n </div>\n </EuiPanel>\n {{/let}}\n </EuiPortal>\n {{/if}}\n\n </div>\n {{/let}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9iZXRvY2FudHU5My9wcnlzbWV4L2VtYmVyLWV1aS9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL2V1aS1wb3BvdmVyLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyB0cmFja2VkIH0gZnJvbSAnQGdsaW1tZXIvdHJhY2tpbmcnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGVtYmVyL2RlYnVnJztcbmltcG9ydCB7IGhhc2ggfSBmcm9tICdAZW1iZXIvaGVscGVyJztcbmltcG9ydCB7IGNvbmNhdCB9IGZyb20gJ0BlbWJlci9oZWxwZXInO1xuaW1wb3J0IHsgYWN0aW9uIH0gZnJvbSAnQGVtYmVyL29iamVjdCc7XG5pbXBvcnQgZGlkSW5zZXJ0IGZyb20gJ0BlbWJlci9yZW5kZXItbW9kaWZpZXJzL21vZGlmaWVycy9kaWQtaW5zZXJ0JztcbmltcG9ydCBkaWRVcGRhdGUgZnJvbSAnQGVtYmVyL3JlbmRlci1tb2RpZmllcnMvbW9kaWZpZXJzL2RpZC11cGRhdGUnO1xuaW1wb3J0IHsgY2FuY2VsLCBsYXRlciwgc2NoZWR1bGVPbmNlIH0gZnJvbSAnQGVtYmVyL3J1bmxvb3AnO1xuaW1wb3J0IHsgaHRtbFNhZmUgfSBmcm9tICdAZW1iZXIvdGVtcGxhdGUnO1xuXG5pbXBvcnQgb3B0aW9uYWwgZnJvbSAnZW1iZXItY29tcG9zYWJsZS1oZWxwZXJzL2hlbHBlcnMvb3B0aW9uYWwnO1xuaW1wb3J0IHsgZm9jdXNUcmFwIH0gZnJvbSAnZW1iZXItZm9jdXMtdHJhcCc7XG5pbXBvcnQgb25LZXkgZnJvbSAnZW1iZXIta2V5Ym9hcmQvbW9kaWZpZXJzL29uLWtleSc7XG5pbXBvcnQgeyBhbmQsIG5vdCwgb3IgfSBmcm9tICdlbWJlci10cnV0aC1oZWxwZXJzJztcbmltcG9ydCB7IHRhYmJhYmxlIH0gZnJvbSAndGFiYmFibGUnO1xuXG5pbXBvcnQgcmFuZG9tSWQgZnJvbSAnLi4vLXByaXZhdGUvcmFuZG9tLWlkLnRzJztcbmltcG9ydCB7IGFyZ09yRGVmYXVsdERlY29yYXRvciB9IGZyb20gJy4uL2hlbHBlcnMvYXJnLW9yLWRlZmF1bHQudHMnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnLi4vaGVscGVycy9jbGFzcy1uYW1lcy50cyc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnLi4vaGVscGVycy9tZXJnZS50cyc7XG5pbXBvcnQgbXV0YXRpb25PYnNlcnZlciBmcm9tICcuLi9tb2RpZmllcnMvbXV0YXRpb24tb2JzZXJ2ZXIudHMnO1xuaW1wb3J0IG91dHNpZGVDbGlja0RldGVjdG9yIGZyb20gJy4uL21vZGlmaWVycy9vdXRzaWRlLWNsaWNrLWRldGVjdG9yLnRzJztcbmltcG9ydCBzY3JlZW5SZWFkZXJPbmx5IGZyb20gJy4uL21vZGlmaWVycy9zY3JlZW4tcmVhZGVyLW9ubHkudHMnO1xuaW1wb3J0IHNpbXBsZVN0eWxlIGZyb20gJy4uL21vZGlmaWVycy9zaW1wbGUtc3R5bGUudHMnO1xuaW1wb3J0IHsgY2FzY2FkaW5nTWVudUtleXMgfSBmcm9tICcuLi91dGlscy9hY2Nlc2liaWxpdHkvaW5kZXgudHMnO1xuaW1wb3J0IHtcbiAgYW5jaG9yUG9zaXRpb25NYXBwaW5nLFxuICBkaXNwbGF5TWFwcGluZ1xufSBmcm9tICcuLi91dGlscy9jc3MtbWFwcGluZ3MvZXVpLXBvcG92ZXIudHMnO1xuaW1wb3J0IHsgZmluZFBvcG92ZXJQb3NpdGlvbiwgZ2V0RWxlbWVudFpJbmRleCB9IGZyb20gJy4uL3V0aWxzL3BvcG92ZXIvaW5kZXgudHMnO1xuaW1wb3J0IHtcbiAgZ2V0VHJhbnNpdGlvblRpbWluZ3MsXG4gIGdldFdhaXREdXJhdGlvbixcbiAgcGVyZm9ybU9uRnJhbWVcbn0gZnJvbSAnLi4vdXRpbHMvdHJhbnNpdGlvbi50cyc7XG5pbXBvcnQgRXVpUGFuZWwgZnJvbSAnLi9ldWktcGFuZWwuZ3RzJztcbmltcG9ydCBFdWlQb3J0YWwgZnJvbSAnLi9ldWktcG9ydGFsLmd0cyc7XG5cbmltcG9ydCB0eXBlIHsgcGFkZGluZ1NpemVNYXBwaW5nIH0gZnJvbSAnLi4vdXRpbHMvY3NzLW1hcHBpbmdzL2V1aS1wYW5lbC50cyc7XG5pbXBvcnQgdHlwZSB7IEV1aVBvcG92ZXJQb3NpdGlvbiB9IGZyb20gJy4uL3V0aWxzL3BvcG92ZXIvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBFbWJlcktleWJvYXJkRXZlbnQgfSBmcm9tICdlbWJlci1rZXlib2FyZC9tb2RpZmllcnMvb24ta2V5JztcblxudHlwZSBQYW5lbFBhZGRpbmdTaXplID0ga2V5b2YgdHlwZW9mIHBhZGRpbmdTaXplTWFwcGluZztcblxuZXhwb3J0IHR5cGUgUG9wb3ZlckFuY2hvclBvc2l0aW9uID1cbiAgfCAndXBDZW50ZXInXG4gIHwgJ3VwTGVmdCdcbiAgfCAndXBSaWdodCdcbiAgfCAnZG93bkNlbnRlcidcbiAgfCAnZG93bkxlZnQnXG4gIHwgJ2Rvd25SaWdodCdcbiAgfCAnbGVmdENlbnRlcidcbiAgfCAnbGVmdFVwJ1xuICB8ICdsZWZ0RG93bidcbiAgfCAncmlnaHRDZW50ZXInXG4gIHwgJ3JpZ2h0VXAnXG4gIHwgJ3JpZ2h0RG93bic7XG5cbmV4cG9ydCB0eXBlIEV1aVBvcG92ZXJBcmdzID0ge1xuICBwYW5lbENsYXNzZXM_OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDbGFzcyBuYW1lIHBhc3NlZCB0byB0aGUgZGlyZWN0IHBhcmVudCBvZiB0aGUgYnV0dG9uXG4gICAqL1xuICBhbmNob3JDbGFzc05hbWU_OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbGlnbm1lbnQgb2YgdGhlIHBvcG92ZXIgYW5kIGFycm93IHJlbGF0aXZlIHRvIHRoZSBidXR0b25cbiAgICovXG4gIGFuY2hvclBvc2l0aW9uPzogUG9wb3ZlckFuY2hvclBvc2l0aW9uO1xuICAvKipcbiAgICogU3R5bGUgYW5kIHBvc2l0aW9uIGFsdGVyYXRpb24gZm9yIGFycm93LWxlc3MsIGxlZnQtYWxpZ25lZFxuICAgKiBhdHRhY2htZW50LiBJbnRlbmRlZCBmb3IgdXNlIHdpdGggaW5wdXRzIGFzIGFuY2hvcnMsIGUuZy5cbiAgICogRXVpSW5wdXRQb3BvdmVyXG4gICAqL1xuICBhdHRhY2hUb0FuY2hvcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcmlnZ2VyaW5nIGVsZW1lbnQgZm9yIHdoaWNoIHRvIGFsaWduIHRoZSBwb3BvdmVyIHRvXG4gICAqL1xuICBidXR0b24_OiBDb21wb25lbnQ7XG4gIGJ1dHRvblJlZj86IChlOiBIVE1MRGl2RWxlbWVudCkgPT4gdW5rbm93bjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGhhbmRsZSBoaWRpbmcgb2YgdGhlIHBvcG92ZXJcbiAgICovXG4gIGNsb3NlUG9wb3ZlcjogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFJlc3RyaWN0IHRoZSBwb3BvdmVyJ3MgcG9zaXRpb24gd2l0aGluIHRoaXMgZWxlbWVudFxuICAgKi9cbiAgY29udGFpbmVyPzogSFRNTEVsZW1lbnQ7XG4gIC8qKlxuICAgKiBDU1MgZGlzcGxheSB0eXBlIGZvciBib3RoIHRoZSBwb3BvdmVyIGFuZCBhbmNob3JcbiAgICovXG4gIGRpc3BsYXk_OiBrZXlvZiB0eXBlb2YgZGlzcGxheU1hcHBpbmc7XG4gIC8qKlxuICAgKiBTaG93IGFycm93IGluZGljYXRpbmcgdG8gb3JpZ2luYXRpbmcgYnV0dG9uXG4gICAqL1xuICBoYXNBcnJvdz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hhdCBlbGVtZW50IHNob3VsZCBpbml0aWFsbHkgaGF2ZSBmb2N1czsgQ2FuIGJlIGEgRE9NXG4gICAqIG5vZGUsIG9yIGEgc2VsZWN0b3Igc3RyaW5nICh3aGljaCB3aWxsIGJlIHBhc3NlZCB0b1xuICAgKiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCkgdG8gZmluZCB0aGUgRE9NIG5vZGUpLCBvciBhIGZ1bmN0aW9uIHRoYXRcbiAgICogcmV0dXJucyBhIERPTSBub2RlXG4gICAqL1xuICBpbml0aWFsRm9jdXM_OiBGb2N1c1RhcmdldCB8IGZhbHNlO1xuICAvKipcbiAgICogUGFzc2VkIGRpcmVjdGx5IHRvIEV1aVBvcnRhbCBmb3IgRE9NIHBvc2l0aW9uaW5nLiBCb3RoIHByb3BlcnRpZXMgYXJlXG4gICAqIHJlcXVpcmVkIGlmIHByb3AgaXMgc3BlY2lmaWVkXG4gICAqL1xuICBpbnNlcnQ_OiB7XG4gICAgc2libGluZzogSFRNTEVsZW1lbnQ7XG4gICAgcG9zaXRpb246ICdiZWZvcmUnIHwgJ2FmdGVyJztcbiAgfTtcbiAgLyoqXG4gICAqIFZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIHBvcG92ZXJcbiAgICovXG4gIGlzT3Blbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcmFwcyB0YWIgZm9jdXMgd2l0aGluIHRoZSBwb3BvdmVyIGNvbnRlbnRzXG4gICAqL1xuICBvd25Gb2N1cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXN0b20gY2xhc3MgYWRkZWQgdG8gdGhlIEV1aVBhbmVsIGNvbnRhaW5pbmcgdGhlIHBvcG92ZXIgY29udGVudHNcbiAgICovXG4gIHBhbmVsQ2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogRXVpUGFuZWwgcGFkZGluZyBvbiBhbGwgc2lkZXNcbiAgICovXG4gIHBhbmVsUGFkZGluZ1NpemU_OiBQYW5lbFBhZGRpbmdTaXplO1xuICAvKipcbiAgICogU3RhbmRhcmQgRE9NIGBzdHlsZWAgYXR0cmlidXRlLiBQYXNzZWQgdG8gdGhlIEV1aVBhbmVsXG4gICAqL1xuICBwYW5lbFN0eWxlPzogeyBbaTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHBhbmVsUmVmPzogKGU6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4gdW5rbm93bjtcbiAgcG9wb3ZlclJlZj86IChlOiBIVE1MRWxlbWVudCkgPT4gdW5rbm93bjtcblxuICAvKipcbiAgICogd2hlbiBub3QgYGZhbHNlYCwgdGhlIHBvcG92ZXIgd2lsbCBjaGVjayBpZiB0aGlzIHBvcG92ZXIgaXMgaW5zaWRlIGFub3RoZXIgcG9wb3ZlciBhbmQgaWYgc28uIHdpbGwgcmVwb3NpdGlvbiBpdHNlbGYgdG8gYmUgaW5zaWRlIHRoZSBvdGhlciBwb3BvdmVyXG4gICAqL1xuICBzaG91bGRBY2NvdW50Rm9yT3RoZXJQb3BvdmVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCB0aGUgcG9wb3ZlcidzIHBvc2l0aW9uIGlzIHJlLWNhbGN1bGF0ZWQgd2hlbiB0aGUgdXNlclxuICAgKiBzY3JvbGxzLCB0aGlzIHN1cHBvcnRzIGhhdmluZyBmaXhlZC1wb3NpdGlvbiBwb3BvdmVyIGFuY2hvcnNcbiAgICovXG4gIHJlcG9zaXRpb25PblNjcm9sbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBwb3BvdmVyIGNvbnRlbnQgaW5oZXJpdHMgdGhlIHotaW5kZXggb2YgdGhlIGFuY2hvclxuICAgKiBjb21wb25lbnQ7IHBhc3MgYHpJbmRleGAgdG8gb3ZlcnJpZGVcbiAgICovXG4gIHpJbmRleD86IG51bWJlcjtcbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGNhbGxiYWNrIGZvciB3aGVuIHRoZSBmb2N1cyB0cmFwIGlzIGRlYWN0aXZhdGVkXG4gICAqL1xuICBvblRyYXBEZWFjdGl2YXRpb24_OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogRGlzdGFuY2UgYXdheSBmcm9tIHRoZSBhbmNob3IgdGhhdCB0aGUgcG9wb3ZlciB3aWxsIHJlbmRlclxuICAgKi9cbiAgb2Zmc2V0PzogbnVtYmVyO1xuICAvKipcbiAgICogTWluaW11bSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwb3BvdmVyIGFuZCB0aGUgYm91bmRpbmcgY29udGFpbmVyO1xuICAgKiBQYXNzIGFuIGFycmF5IG9mIDQgdmFsdWVzIHRvIGFkanVzdCBlYWNoIHNpZGUgZGlmZmVyZW50bHk6IGBbdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0XWBcbiAgICogRGVmYXVsdCBpcyAxNlxuICAgKi9cbiAgYnVmZmVyPzogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIC8qKlxuICAgKiBFbGVtZW50IHRvIHBhc3MgYXMgdGhlIGNoaWxkIGVsZW1lbnQgb2YgdGhlIGFycm93O1xuICAgKiBVc2UgY2FzZSBpcyB0eXBpY2FsbHkgbGltaXRlZCB0byBhbiBhY2NvbXBhbnlpbmcgYEV1aUJlYWNvbmBcbiAgICovXG4gIGFycm93Q2hpbGRyZW4_OiBDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBQcm92aWRlIGEgbmFtZSB0byB0aGUgcG9wb3ZlciBwYW5lbFxuICAgKi9cbiAgYXJpYUxhYmVsPzogc3RyaW5nO1xuICAvKipcbiAgICogQWx0ZXJuYXRpdmUgb3B0aW9uIHRvIGBhcmlhLWxhYmVsYCB0aGF0IHRha2VzIGFuIGBpZGAuXG4gICAqIFVzdWFsbHkgdGFrZXMgdGhlIGBpZGAgb2YgdGhlIHBvcG92ZXIgdGl0bGVcbiAgICovXG4gIGFyaWFMYWJlbGxlZEJ5Pzogc3RyaW5nO1xuXG4gIHRhYmluZGV4Pzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIHNob3VsZFNlbGZGb2N1cz86IGJvb2xlYW47XG5cbiAgaXNGb2N1c1RyYXBQYXVzZWQ_OiBib29sZWFuO1xuXG4gIGZvY3VzVHJhcE9wdGlvbnM_OiB7XG4gICAgb25DbGlja091dHNpZGU_OiAoZTogRXZlbnQpID0-IHZvaWQ7XG4gIH07XG5cbiAgbXV0YXRpb25PYnNlcnZlck9wdGlvbnM_OiB7XG4gICAgYXR0cmlidXRlcz86IGJvb2xlYW47XG4gICAgY2hpbGRMaXN0PzogYm9vbGVhbjtcbiAgICBjaGFyYWN0ZXJEYXRhPzogYm9vbGVhbjtcbiAgICBzdWJ0cmVlPzogYm9vbGVhbjtcbiAgfTtcbn07XG5cbnR5cGUgQW5jaG9yUG9zaXRpb24gPSAndXAnIHwgJ3JpZ2h0JyB8ICdkb3duJyB8ICdsZWZ0JztcblxuY29uc3QgYW5jaG9yUG9zaXRpb25Ub1BvcG92ZXJQb3NpdGlvbk1hcDoge1xuICBbcG9zaXRpb24gaW4gQW5jaG9yUG9zaXRpb25dOiBFdWlQb3BvdmVyUG9zaXRpb247XG59ID0ge1xuICB1cDogJ3RvcCcsXG4gIHJpZ2h0OiAncmlnaHQnLFxuICBkb3duOiAnYm90dG9tJyxcbiAgbGVmdDogJ2xlZnQnXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9wb3ZlclBvc2l0aW9uRnJvbUFuY2hvclBvc2l0aW9uKFxuICBhbmNob3JQb3NpdGlvbjogUG9wb3ZlckFuY2hvclBvc2l0aW9uXG4pOiBFdWlQb3BvdmVyUG9zaXRpb24ge1xuICAvLyBtYXBzIHRoZSBhbmNob3IgcG9zaXRpb24gdG8gdGhlIG1hdGNoaW5nIHBvcG92ZXIgcG9zaXRpb25cbiAgLy8gZS5nLiBcInVwTGVmdFwiIC0-IFwidG9wXCIsIFwiZG93blJpZ2h0XCIgLT4gXCJib3R0b21cIlxuXG4gIC8vIGV4dHJhY3QgdGhlIGZpcnN0IHBvc2l0aW9uYWwgd29yZCBmcm9tIGFuY2hvclBvc2l0aW9uOlxuICAvLyBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyAoXCIgXiBcIikgb2YgYW5jaG9yUG9zaXRpb24gYW5kXG4gIC8vIGNhcHR1cmVzIGFsbCBvZiB0aGUgY2hhcmFjdGVycyAoXCIgKC4qPykgXCIpIHVudGlsIHRoZVxuICAvLyBmaXJzdCBjYXBpdGFsIGxldHRlciAoXCIgW0EtWl0gXCIpIGlzIGVuY291bnRlcmVkXG4gIGNvbnN0IG1hdGNoID0gYW5jaG9yUG9zaXRpb24ubWF0Y2goL14oLio_KVtBLVpdLyk7XG5cbiAgaWYgKG1hdGNoPy5sZW5ndGggJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgIHJldHVybiBhbmNob3JQb3NpdGlvblRvUG9wb3ZlclBvc2l0aW9uTWFwW21hdGNoWzFdIGFzIEFuY2hvclBvc2l0aW9uXTtcbiAgfVxuXG4gIHJldHVybiBhbmNob3JQb3NpdGlvblRvUG9wb3ZlclBvc2l0aW9uTWFwWyd1cCddO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9wb3ZlckFsaWduRnJvbUFuY2hvclBvc2l0aW9uKFxuICBhbmNob3JQb3NpdGlvbjogUG9wb3ZlckFuY2hvclBvc2l0aW9uXG4pOiBFdWlQb3BvdmVyUG9zaXRpb24ge1xuICAvLyBtYXBzIHRoZSBncmF2aXR5IHRvIHRoZSBtYXRjaGluZyBwb3BvdmVyIHBvc2l0aW9uXG4gIC8vIGUuZy4gXCJ1cExlZnRcIiAtPiBcImxlZnRcIiwgXCJyaWdodERvd25cIiAtPiBcImJvdHRvbVwiXG5cbiAgLy8gZXh0cmFjdCB0aGUgc2Vjb25kIHBvc2l0aW9uYWwgd29yZCBmcm9tIGFuY2hvclBvc2l0aW9uOlxuICAvLyBzdGFydHMgYSBjYXB0dXJlIGdyb3VwIGF0IHRoZSBmaXJzdCBjYXBpdGFsIGxldHRlclxuICAvLyBhbmQgaW5jbHVkZXMgZXZlcnl0aGluZyBhZnRlciBpdFxuICBjb25zdCBtYXRjaCA9IGFuY2hvclBvc2l0aW9uLm1hdGNoKC8oW0EtWl0uKikvKTtcblxuICAvLyB0aGlzIHBlcmZvcm1zIHR3byB0YXNrczpcbiAgLy8gMS4gbm9ybWFsaXplcyB0aGUgYWxpZ24gcG9zaXRpb24gYnkgbG93ZXJjYXNpbmcgaXRcbiAgLy8gMi4gYGNlbnRlcmAgZG9lc24ndCBleGlzdCBpbiB0aGUgbG9va3VwIG1hcCB3aGljaCBjb252ZXJ0cyBpdCB0byBgdW5kZWZpbmVkYCBtZWFuaW5nIG5vIGFsaWduXG4gIGlmIChtYXRjaD8ubGVuZ3RoICYmIG1hdGNoLmxlbmd0aCA-IDEpIHtcbiAgICByZXR1cm4gYW5jaG9yUG9zaXRpb25Ub1BvcG92ZXJQb3NpdGlvbk1hcFtcbiAgICAgIG1hdGNoWzFdPy50b0xvd2VyQ2FzZSgpIGFzIEFuY2hvclBvc2l0aW9uXG4gICAgXTtcbiAgfVxuXG4gIHJldHVybiBhbmNob3JQb3NpdGlvblRvUG9wb3ZlclBvc2l0aW9uTWFwWydsZWZ0J107XG59XG5cbmV4cG9ydCBjb25zdCBBTkNIT1JfUE9TSVRJT05TID0gT2JqZWN0LmtleXMoYW5jaG9yUG9zaXRpb25NYXBwaW5nKTtcbmV4cG9ydCBjb25zdCBESVNQTEFZID0gT2JqZWN0LmtleXMoZGlzcGxheU1hcHBpbmcpO1xuZXhwb3J0IHR5cGUgRm9jdXNUYXJnZXQgPSBIVE1MRWxlbWVudCB8IHN0cmluZyB8ICgoKSA9PiBIVE1MRWxlbWVudCk7XG5cbmNvbnN0IERFRkFVTFRfUE9QT1ZFUl9TVFlMRVMgPSB7XG4gIHRvcDogNTAsXG4gIGxlZnQ6IDUwXG59O1xuXG5mdW5jdGlvbiBnZXRFbGVtZW50RnJvbUluaXRpYWxGb2N1cyhcbiAgaW5pdGlhbEZvY3VzPzogRm9jdXNUYXJnZXRcbik6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IGluaXRpYWxGb2N1c1R5cGUgPSB0eXBlb2YgaW5pdGlhbEZvY3VzO1xuXG4gIGlmIChpbml0aWFsRm9jdXNUeXBlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGluaXRpYWxGb2N1cyBhcyBzdHJpbmcpO1xuICB9XG5cbiAgaWYgKGluaXRpYWxGb2N1c1R5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gKGluaXRpYWxGb2N1cyBhcyAoKSA9PiBIVE1MRWxlbWVudCB8IG51bGwpKCk7XG4gIH1cblxuICByZXR1cm4gaW5pdGlhbEZvY3VzIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbn1cblxudHlwZSBDc3NQcm9wcyA9IHtcbiAgdG9wPzogbnVtYmVyO1xuICBsZWZ0PzogbnVtYmVyO1xuICByaWdodD86IG51bWJlcjtcbiAgYm90dG9tPzogbnVtYmVyO1xuICB6SW5kZXg_OiBudW1iZXI7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEV1aVBvcG92ZXJTaWduYXR1cmUge1xuICBFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcbiAgQXJnczogRXVpUG9wb3ZlckFyZ3M7XG4gIEJsb2Nrczoge1xuICAgIGJ1dHRvbjogW107XG4gICAgY29udGVudDogW107XG4gICAgYXJyb3dDaGlsZHJlbjogW107XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV1aVBvcG92ZXJDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnQ8RXVpUG9wb3ZlclNpZ25hdHVyZT4ge1xuICAvLyBEZWZhdWx0c1xuICBAYXJnT3JEZWZhdWx0RGVjb3JhdG9yKGZhbHNlKSBpc09wZW4hOiBib29sZWFuO1xuICBAYXJnT3JEZWZhdWx0RGVjb3JhdG9yKHRydWUpIG93bkZvY3VzITogYm9vbGVhbjtcbiAgQGFyZ09yRGVmYXVsdERlY29yYXRvcignZG93bkNlbnRlcicpIGFuY2hvclBvc2l0aW9uITogUG9wb3ZlckFuY2hvclBvc2l0aW9uO1xuICBAYXJnT3JEZWZhdWx0RGVjb3JhdG9yKCdtJykgcGFuZWxQYWRkaW5nU2l6ZSE6IFBhbmVsUGFkZGluZ1NpemU7XG4gIEBhcmdPckRlZmF1bHREZWNvcmF0b3IodHJ1ZSkgaGFzQXJyb3chOiBib29sZWFuO1xuICBAYXJnT3JEZWZhdWx0RGVjb3JhdG9yKCdpbmxpbmVCbG9jaycpIGRpc3BsYXkhOiBzdHJpbmc7XG4gIEBhcmdPckRlZmF1bHREZWNvcmF0b3IodHJ1ZSkgc2hvdWxkU2VsZkZvY3VzITogYm9vbGVhbjtcbiAgQGFyZ09yRGVmYXVsdERlY29yYXRvcihmYWxzZSkgaXNGb2N1c1RyYXBQYXVzZWQhOiBib29sZWFuO1xuXG4gIC8vU3RhdGVcbiAgQHRyYWNrZWQgcHJldklzT3BlbjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgQHRyYWNrZWQgc3VwcHJlc3NpbmdQb3BvdmVyOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBAdHJhY2tlZCBpc0Nsb3NpbmcgPSBmYWxzZTtcbiAgQHRyYWNrZWQgaXNPcGVuaW5nID0gZmFsc2U7XG4gIEB0cmFja2VkIHBvcG92ZXJTdHlsZXM6IENzc1Byb3BzID0ge307XG4gIEB0cmFja2VkIGFycm93U3R5bGVzOiBDc3NQcm9wcyB8IHVuZGVmaW5lZCA9IHt9O1xuICBAdHJhY2tlZCBhcnJvd1Bvc2l0aW9uOiBFdWlQb3BvdmVyUG9zaXRpb24gfCBudWxsID0gbnVsbDtcbiAgQHRyYWNrZWQgb3BlblBvc2l0aW9uOiBFdWlQb3BvdmVyUG9zaXRpb24gfCBudWxsID0gbnVsbDtcbiAgQHRyYWNrZWQgaXNPcGVuU3RhYmxlID0gZmFsc2U7XG4gIEB0cmFja2VkIGlzQ3VycmVudGx5T3BlbjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgQHRyYWNrZWQgcG9wb3Zlckhvc3Q_OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAvLy9cblxuICBwcml2YXRlIHJlc3Bvc2l0aW9uVGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2YgbGF0ZXI-IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY2xvc2luZ1RyYW5zaXRpb25UaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBsYXRlcj4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjbG9zaW5nVHJhbnNpdGlvbkFuaW1hdGlvbkZyYW1lOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgdXBkYXRlRm9jdXNBbmltYXRpb25GcmFtZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhhc1NldEluaXRpYWxGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICBAdHJhY2tlZCBidXR0b246IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIEB0cmFja2VkIHBhbmVsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKG93bmVyOiB1bmtub3duLCBhcmdzOiBFdWlQb3BvdmVyQXJncykge1xuICAgIHN1cGVyKG93bmVyLCBhcmdzKTtcbiAgICBhc3NlcnQoYE11c3QgcHJvdmlkZSBjbG9zZVBvcG92ZXIgZnVuY3Rpb25gLCB0aGlzLmFyZ3MuY2xvc2VQb3BvdmVyKTtcbiAgICB0aGlzLnByZXZJc09wZW4gPSB0aGlzLmlzT3BlbjtcbiAgICB0aGlzLnN1cHByZXNzaW5nUG9wb3ZlciA9IHRoaXMuaXNPcGVuO1xuICAgIHRoaXMuaXNDdXJyZW50bHlPcGVuID0gdGhpcy5pc09wZW47XG4gIH1cblxuICBnZXQgaW5zZXJ0KCkge1xuICAgIGlmICh0aGlzLmFyZ3MuaW5zZXJ0KSB7XG4gICAgICByZXR1cm4gdGhpcy5hcmdzLmluc2VydDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG91bGRBY2NvdW50Rm9yT3RoZXJQb3BvdmVycykge1xuICAgICAgaWYgKHRoaXMucG9wb3Zlckhvc3QpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzaWJsaW5nOiB0aGlzLnBvcG92ZXJIb3N0LmNoaWxkcmVuWzBdIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgIHBvc2l0aW9uOiAnYWZ0ZXInXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgY2xvc2VQb3BvdmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5hcmdzLmNsb3NlUG9wb3ZlcigpO1xuICAgIH1cbiAgfVxuXG4gIEBhY3Rpb25cbiAgb25Fc2NhcGVLZXkoZXZlbnQ6IEV2ZW50LCBla0V2ZW50PzogRW1iZXJLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBla0V2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGVrRXZlbnQ_LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoKTtcbiAgICB9XG4gIH1cblxuICBAYWN0aW9uXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgZWtFdmVudDogRW1iZXJLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gY2FzY2FkaW5nTWVudUtleXMuRVNDQVBFKSB7XG4gICAgICB0aGlzLm9uRXNjYXBlS2V5KGV2ZW50IGFzIHVua25vd24gYXMgRXZlbnQsIGVrRXZlbnQgYXMgdW5rbm93biBhcyBFdmVudCk7XG4gICAgfVxuICB9XG5cbiAgQGFjdGlvblxuICBvbkNsaWNrT3V0c2lkZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hcmdzLmZvY3VzVHJhcE9wdGlvbnM_Lm9uQ2xpY2tPdXRzaWRlKSB7XG4gICAgICB0aGlzLmFyZ3MuZm9jdXNUcmFwT3B0aW9ucy5vbkNsaWNrT3V0c2lkZShldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG9ubHkgY2xvc2UgdGhlIHBvcG92ZXIgaWYgdGhlIGV2ZW50IHNvdXJjZSBpc24ndCB0aGUgYW5jaG9yIGJ1dHRvblxuICAgICAgLy8gb3RoZXJ3aXNlLCBpdCBpcyB1cCB0byB0aGUgYW5jaG9yIHRvIHRvZ2dsZSB0aGUgcG9wb3ZlcidzIG9wZW4gc3RhdHVzXG4gICAgICBpZiAodGhpcy5idXR0b24gJiYgdGhpcy5idXR0b24uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZvY3VzKCk6IHZvaWQge1xuICAgIC8vIFdhaXQgZm9yIHRoZSBET00gdG8gdXBkYXRlLlxuICAgIHRoaXMudXBkYXRlRm9jdXNBbmltYXRpb25GcmFtZSA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLm93bkZvY3VzIHx8ICF0aGlzLnBhbmVsIHx8IHRoaXMuYXJncy5pbml0aWFsRm9jdXMgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBmb2N1c2VkIG9uIHNvbWV0aGluZyBpbnNpZGUgdGhlIHBhbmVsLCBldmVyeXRoaW5nJ3MgZmluZS5cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5oYXNTZXRJbml0aWFsRm9jdXMgJiZcbiAgICAgICAgdGhpcy5wYW5lbC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gT3RoZXJ3aXNlIGxldCdzIGZvY3VzIHRoZSBmaXJzdCB0YWJiYWJsZSBpdGVtIGFuZCBleHBlZGl0ZSBpbnB1dCBmcm9tIHRoZSB1c2VyLlxuICAgICAgbGV0IGZvY3VzVGFyZ2V0O1xuXG4gICAgICBpZiAodGhpcy5hcmdzLmluaXRpYWxGb2N1cyAhPSBudWxsKSB7XG4gICAgICAgIGZvY3VzVGFyZ2V0ID0gZ2V0RWxlbWVudEZyb21Jbml0aWFsRm9jdXModGhpcy5hcmdzLmluaXRpYWxGb2N1cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0YWJiYWJsZUl0ZW1zID0gdGFiYmFibGUodGhpcy5wYW5lbCk7XG5cbiAgICAgICAgaWYgKHRhYmJhYmxlSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgZm9jdXNUYXJnZXQgPSB0YWJiYWJsZUl0ZW1zWzBdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHRoZXJlJ3MgYSByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIHRoZSBwb3BvdmVyIGNvbnRlbnQgYmVjb21pbmcgdmlzaWJsZSBhbmQgdGhpcyBmdW5jdGlvbiBjYWxsXG4gICAgICAvLyBpZiB0aGUgZWxlbWVudCBpc24ndCB2aXNpYmxlIHlldCAoZHVlIHRvIGNzcyBzdHlsaW5nKSB0aGVuIGl0IGNhbid0IGFjY2VwdCBmb2N1c1xuICAgICAgLy8gc28gd2FpdCBmb3IgYW5vdGhlciByZW5kZXIgYW5kIHRyeSBhZ2FpblxuICAgICAgaWYgKGZvY3VzVGFyZ2V0ID09IG51bGwpIHtcbiAgICAgICAgLy8gdGhlcmUgaXNuJ3QgYSBmb2N1cyB0YXJnZXQsIG9uZSBvZiB0d28gcmVhc29uczpcbiAgICAgICAgLy8gIzEgaXMgdGhlIHdob2xlIHBhbmVsIGhpZGRlbj8gSWYgc28sIHNjaGVkdWxlIGFub3RoZXIgY2hlY2tcbiAgICAgICAgLy8gIzIgcGFuZWwgaXMgdmlzaWJsZSBidXQgbm8gdGFiYmFibGVzIGV4aXN0LCBtb3ZlIGZvY3VzIHRvIHRoZSBwYW5lbFxuICAgICAgICBjb25zdCBwYW5lbFZpc2liaWxpdHkgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnBhbmVsKS5vcGFjaXR5O1xuXG4gICAgICAgIGlmIChwYW5lbFZpc2liaWxpdHkgPT09ICcwJykge1xuICAgICAgICAgIC8vICMxXG4gICAgICAgICAgdGhpcy51cGRhdGVGb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vICMyXG4gICAgICAgICAgZm9jdXNUYXJnZXQgPSB0aGlzLnBhbmVsO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBmb3VuZCBhbiBlbGVtZW50IHRvIGZvY3VzLCBidXQgaXMgaXQgdmlzaWJsZT9cbiAgICAgICAgY29uc3QgdmlzaWJpbGl0eSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGZvY3VzVGFyZ2V0KS52aXNpYmlsaXR5O1xuXG4gICAgICAgIGlmICh2aXNpYmlsaXR5ID09PSAnaGlkZGVuJykge1xuICAgICAgICAgIC8vIG5vdCB2aXNpYmxlLCBjaGVjayBhZ2FpbiBuZXh0IHJlbmRlciBmcmFtZVxuICAgICAgICAgIHRoaXMudXBkYXRlRm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZm9jdXNUYXJnZXQgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLmhhc1NldEluaXRpYWxGb2N1cyA9IHRydWU7XG4gICAgICAgIGZvY3VzVGFyZ2V0LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBAYWN0aW9uXG4gIG9uT3BlblBvcG92ZXIoKTogdm9pZCB7XG4gICAgY2FuY2VsKHRoaXMuY2xvc2luZ1RyYW5zaXRpb25UaW1lb3V0IGFzIFJldHVyblR5cGU8dHlwZW9mIGxhdGVyPik7XG4gICAgLy8gV2UgbmVlZCB0byBzZXQgdGhpcyBzdGF0ZSBhIGJlYXQgYWZ0ZXIgdGhlIHJlbmRlciB0YWtlcyBwbGFjZSwgc28gdGhhdCB0aGUgQ1NTXG4gICAgLy8gdHJhbnNpdGlvbiBjYW4gdGFrZSBlZmZlY3QuXG4gICAgdGhpcy5jbG9zaW5nVHJhbnNpdGlvbkFuaW1hdGlvbkZyYW1lID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLmlzT3BlbmluZyA9IHRydWU7XG4gICAgfSk7XG5cbiAgICAvLyBmb3IgZWFjaCBjaGlsZCBlbGVtZW50IG9mIGB0aGlzLnBhbmVsYCwgZmluZCBhbnkgdHJhbnNpdGlvbiBkdXJhdGlvbiB3ZSBzaG91bGQgd2FpdCBmb3IgYmVmb3JlIHN0YWJpbGl6aW5nXG4gICAgY29uc3QgeyBkdXJhdGlvbk1hdGNoLCBkZWxheU1hdGNoIH0gPSBBcnJheS5wcm90b3R5cGUuc2xpY2VcbiAgICAgIC5jYWxsKHRoaXMucGFuZWwgPyB0aGlzLnBhbmVsLmNoaWxkcmVuIDogW10pXG4gICAgICAucmVkdWNlKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgZHVyYXRpb25NYXRjaCxcbiAgICAgICAgICAgIGRlbGF5TWF0Y2hcbiAgICAgICAgICB9OiB7IGR1cmF0aW9uTWF0Y2g6IG51bWJlcjsgZGVsYXlNYXRjaDogbnVtYmVyIH0sXG4gICAgICAgICAgZWxlbWVudDogSFRNTEVsZW1lbnRcbiAgICAgICAgKSA9PiB7XG4gICAgICAgICAgY29uc3QgdHJhbnNpdGlvblRpbWluZ3MgPSBnZXRUcmFuc2l0aW9uVGltaW5ncyhlbGVtZW50KTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkdXJhdGlvbk1hdGNoOiBNYXRoLm1heChcbiAgICAgICAgICAgICAgZHVyYXRpb25NYXRjaCxcbiAgICAgICAgICAgICAgdHJhbnNpdGlvblRpbWluZ3MuZHVyYXRpb25NYXRjaFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGRlbGF5TWF0Y2g6IE1hdGgubWF4KGRlbGF5TWF0Y2gsIHRyYW5zaXRpb25UaW1pbmdzLmRlbGF5TWF0Y2gpXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgeyBkdXJhdGlvbk1hdGNoOiAwLCBkZWxheU1hdGNoOiAwIH1cbiAgICAgICk7XG5cbiAgICB0aGlzLnJlc3Bvc2l0aW9uVGltZW91dCA9IGxhdGVyKFxuICAgICAgdGhpcyxcbiAgICAgICgpID0-IHtcbiAgICAgICAgdGhpcy5pc09wZW5TdGFibGUgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGZuID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMucG9zaXRpb25Qb3BvdmVyRml4ZWQoKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgc2NoZWR1bGVPbmNlKCdhZnRlclJlbmRlcicsIHRoaXMsIGZuKTtcbiAgICAgIH0sXG4gICAgICBkdXJhdGlvbk1hdGNoICsgZGVsYXlNYXRjaFxuICAgICk7XG4gIH1cblxuICBnZXQgc2hvdWxkQWNjb3VudEZvck90aGVyUG9wb3ZlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJncy5zaG91bGRBY2NvdW50Rm9yT3RoZXJQb3BvdmVycyA_PyB0cnVlO1xuICB9XG5cbiAgY2hlY2tJZlBvcG92ZXJJc0luc2lkZUFub3RoZXJQb3BvdmVyKGVsZTogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBvdGhlclBvcG92ZXIgPSBlbGUuY2xvc2VzdDxIVE1MRGl2RWxlbWVudD4oJ2Rpdi5ldWlQb3BvdmVyX19wYW5lbCcpO1xuXG4gICAgdGhpcy5wb3BvdmVySG9zdCA9IG90aGVyUG9wb3ZlcjtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgZGlkSW5zZXJ0UG9wb3ZlcihlbGU6IEhUTUxEaXZFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3VwcHJlc3NpbmdQb3BvdmVyKSB7XG4gICAgICAvLyBjb21wb25lbnQgd2FzIGNyZWF0ZWQgd2l0aCBpc09wZW49dHJ1ZTsgbm93IHRoYXQgaXQncyBpbnNlcnRlZFxuICAgICAgLy8gc3RvcCBzdXBwcmVzc2luZyBhbmQgc3RhcnQgb3BlbmluZ1xuICAgICAgdGhpcy5zdXBwcmVzc2luZ1BvcG92ZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNPcGVuaW5nID0gdHJ1ZTtcblxuICAgICAgY29uc3QgZm4gPSAoKTogdm9pZCA9PiB0aGlzLm9uT3BlblBvcG92ZXIoKTtcblxuICAgICAgc2NoZWR1bGVPbmNlKCdhZnRlclJlbmRlcicsIHRoaXMsIGZuKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcmdzLnJlcG9zaXRpb25PblNjcm9sbCkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMucG9zaXRpb25Qb3BvdmVyRml4ZWQsIHRydWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNob3VsZEFjY291bnRGb3JPdGhlclBvcG92ZXJzKSB7XG4gICAgICB0aGlzLmNoZWNrSWZQb3BvdmVySXNJbnNpZGVBbm90aGVyUG9wb3ZlcihlbGUpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRm9jdXMoKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgZGlkVXBkYXRlUmVwb3NpdGlvbk9uU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFyZ3MucmVwb3NpdGlvbk9uU2Nyb2xsKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5wb3NpdGlvblBvcG92ZXJGaXhlZCwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnBvc2l0aW9uUG9wb3ZlckZpeGVkLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBAYWN0aW9uXG4gIGRpZFVwZGF0ZUlzT3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLmlzQ3VycmVudGx5T3BlbiA9IHRoaXMuaXNPcGVuO1xuXG4gICAgaWYgKCF0aGlzLnByZXZJc09wZW4gJiYgdGhpcy5hcmdzLmlzT3Blbikge1xuICAgICAgdGhpcy5vbk9wZW5Qb3BvdmVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJldklzT3BlbiAmJiAhdGhpcy5hcmdzLmlzT3Blbikge1xuICAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIGp1c3QgY2xvc2VkIHRoZSBwb3BvdmVyLCBxdWV1ZSB1cCB0aGUgcmVtb3ZhbCBvZiB0aGUgY29udGVudCBhZnRlciB0aGVcbiAgICAgIC8vIHRyYW5zaXRpb24gaXMgY29tcGxldGUuXG4gICAgICB0aGlzLmlzQ2xvc2luZyA9IHRydWU7XG4gICAgICB0aGlzLmlzT3BlbmluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jbG9zaW5nVHJhbnNpdGlvblRpbWVvdXQgPSBsYXRlcihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNDbG9zaW5nID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIDI1MFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnByZXZJc09wZW4gPSB0aGlzLmFyZ3MuaXNPcGVuO1xuICB9XG5cbiAgd2lsbERlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIud2lsbERlc3Ryb3koKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5wb3NpdGlvblBvcG92ZXJGaXhlZCwgdHJ1ZSk7XG4gICAgdGhpcy5wb3BvdmVySG9zdCA9IG51bGw7XG4gICAgY2FuY2VsKHRoaXMucmVzcG9zaXRpb25UaW1lb3V0IGFzIFJldHVyblR5cGU8dHlwZW9mIGxhdGVyPik7XG4gICAgY2FuY2VsKHRoaXMuY2xvc2luZ1RyYW5zaXRpb25UaW1lb3V0IGFzIFJldHVyblR5cGU8dHlwZW9mIGxhdGVyPik7XG4gICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5jbG9zaW5nVHJhbnNpdGlvbkFuaW1hdGlvbkZyYW1lIGFzIG51bWJlcik7XG4gICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy51cGRhdGVGb2N1c0FuaW1hdGlvbkZyYW1lIGFzIG51bWJlcik7XG4gIH1cblxuICBAYWN0aW9uXG4gIG9uTXV0YXRpb24ocmVjb3JkczogTXV0YXRpb25SZWNvcmRbXSk6IHZvaWQge1xuICAgIGNvbnN0IHdhaXREdXJhdGlvbiA9IGdldFdhaXREdXJhdGlvbihyZWNvcmRzKTtcblxuICAgIHRoaXMucG9zaXRpb25Qb3BvdmVyRml4ZWQoKTtcblxuICAgIHBlcmZvcm1PbkZyYW1lKHdhaXREdXJhdGlvbiwgdGhpcy5wb3NpdGlvblBvcG92ZXJGaXhlZCk7XG4gIH1cblxuICBAYWN0aW9uXG4gIHBvc2l0aW9uUG9wb3ZlcihhbGxvd0VuZm9yY2VQb3NpdGlvbjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmJ1dHRvbiA9PSBudWxsIHx8IHRoaXMucGFuZWwgPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgbGV0IHBvc2l0aW9uID0gZ2V0UG9wb3ZlclBvc2l0aW9uRnJvbUFuY2hvclBvc2l0aW9uKHRoaXMuYW5jaG9yUG9zaXRpb24pO1xuICAgIGxldCBmb3JjZVBvc2l0aW9uID0gdW5kZWZpbmVkO1xuXG4gICAgaWYgKFxuICAgICAgYWxsb3dFbmZvcmNlUG9zaXRpb24gJiZcbiAgICAgIHRoaXMuaXNPcGVuU3RhYmxlICYmXG4gICAgICB0aGlzLm9wZW5Qb3NpdGlvbiAhPSBudWxsXG4gICAgKSB7XG4gICAgICBwb3NpdGlvbiA9IHRoaXMub3BlblBvc2l0aW9uO1xuICAgICAgZm9yY2VQb3NpdGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gZ2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgZWxlbWVudCByZWxhdGl2ZSB0byB0aGUgb2Zmc2V0UGFyZW50LCB3aGljaCBjb3VsZCBiZSB0aGUgZG9jdW1lbnRcbiAgICBmdW5jdGlvbiBnZXRQb3MoZWxlOiBIVE1MRWxlbWVudCk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgICAgbGV0IGN1cnJUb3AgPSAwO1xuICAgICAgbGV0IGN1cnJMZWZ0ID0gMDtcblxuICAgICAgaWYgKGVsZS5vZmZzZXRQYXJlbnQpIHtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIGN1cnJUb3AgKz0gZWxlLm9mZnNldFRvcDtcbiAgICAgICAgICBjdXJyTGVmdCArPSBlbGUub2Zmc2V0TGVmdDtcbiAgICAgICAgfSB3aGlsZSAoKGVsZSA9IGVsZS5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJUb3AgPSBlbGUub2Zmc2V0VG9wO1xuICAgICAgICBjdXJyTGVmdCA9IGVsZS5vZmZzZXRMZWZ0O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gW2N1cnJUb3AsIGN1cnJMZWZ0XTtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICB0b3AsXG4gICAgICBsZWZ0LFxuICAgICAgcG9zaXRpb246IGZvdW5kUG9zaXRpb24sXG4gICAgICBhcnJvdyxcbiAgICAgIGFuY2hvckJvdW5kaW5nQm94XG4gICAgfSA9IGZpbmRQb3BvdmVyUG9zaXRpb24oe1xuICAgICAgY29udGFpbmVyOiB0aGlzLmFyZ3MuY29udGFpbmVyLFxuICAgICAgaG9zdDogdGhpcy5zaG91bGRBY2NvdW50Rm9yT3RoZXJQb3BvdmVycyA_IHRoaXMucG9wb3Zlckhvc3QgOiBudWxsLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBmb3JjZVBvc2l0aW9uLFxuICAgICAgYWxpZ246IGdldFBvcG92ZXJBbGlnbkZyb21BbmNob3JQb3NpdGlvbih0aGlzLmFuY2hvclBvc2l0aW9uKSxcbiAgICAgIGFuY2hvcjogdGhpcy5idXR0b24sXG4gICAgICBwb3BvdmVyOiB0aGlzLnBhbmVsLFxuICAgICAgb2Zmc2V0OlxuICAgICAgICAhdGhpcy5hcmdzLmF0dGFjaFRvQW5jaG9yICYmIHRoaXMuaGFzQXJyb3dcbiAgICAgICAgICA_IDE2ICsgKHRoaXMuYXJncy5vZmZzZXQgfHwgMClcbiAgICAgICAgICA6IDggKyAodGhpcy5hcmdzLm9mZnNldCB8fCAwKSxcbiAgICAgIGFycm93Q29uZmlnOiB7XG4gICAgICAgIGFycm93V2lkdGg6IDI0LFxuICAgICAgICBhcnJvd0J1ZmZlcjogMTBcbiAgICAgIH0sXG4gICAgICByZXR1cm5Cb3VuZGluZ0JveDogdGhpcy5hcmdzLmF0dGFjaFRvQW5jaG9yLFxuICAgICAgYnVmZmVyOiB0aGlzLmFyZ3MuYnVmZmVyXG4gICAgfSk7XG5cbiAgICAvLyB0aGUgcG9wb3ZlcidzIHotaW5kZXggbXVzdCBpbmhlcml0IGZyb20gdGhlIGJ1dHRvblxuICAgIC8vIHRoaXMga2VlcHMgYSBidXR0b24ncyBwb3BvdmVyIHVuZGVyIGEgZmx5b3V0IHRoYXQgd291bGQgY292ZXIgdGhlIGJ1dHRvblxuICAgIC8vIGJ1dCBhIHBvcG92ZXIgdHJpZ2dlcmVkIGluc2lkZSBhIGZseW91dCB3aWxsIGFwcGVhciBvdmVyIHRoYXQgZmx5b3V0XG4gICAgY29uc3QgeyB6SW5kZXg6IHpJbmRleFByb3AgfSA9IHRoaXMuYXJncztcbiAgICBjb25zdCB6SW5kZXggPVxuICAgICAgekluZGV4UHJvcCA9PSBudWxsXG4gICAgICAgID8gZ2V0RWxlbWVudFpJbmRleCh0aGlzLmJ1dHRvbiwgdGhpcy5wYW5lbCkgKyAyMDAwXG4gICAgICAgIDogekluZGV4UHJvcDtcblxuICAgIGNvbnN0IHBvcG92ZXJTdHlsZXMgPSB7XG4gICAgICB0b3AsXG4gICAgICBsZWZ0OlxuICAgICAgICB0aGlzLmFyZ3MuYXR0YWNoVG9BbmNob3IgJiYgYW5jaG9yQm91bmRpbmdCb3hcbiAgICAgICAgICA_IGFuY2hvckJvdW5kaW5nQm94LmxlZnRcbiAgICAgICAgICA6IGxlZnQsXG4gICAgICB6SW5kZXhcbiAgICB9O1xuXG4gICAgY29uc3Qgd2lsbFJlbmRlckFycm93ID0gIXRoaXMuYXJncy5hdHRhY2hUb0FuY2hvciAmJiB0aGlzLmhhc0Fycm93O1xuICAgIGNvbnN0IGFycm93U3R5bGVzID0gd2lsbFJlbmRlckFycm93ID8gYXJyb3cgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgYXJyb3dQb3NpdGlvbiA9IGZvdW5kUG9zaXRpb247XG5cbiAgICB0aGlzLnBvcG92ZXJTdHlsZXMgPSBwb3BvdmVyU3R5bGVzO1xuICAgIHRoaXMuYXJyb3dTdHlsZXMgPSBhcnJvd1N0eWxlcztcbiAgICB0aGlzLmFycm93UG9zaXRpb24gPSBhcnJvd1Bvc2l0aW9uO1xuICAgIHRoaXMub3BlblBvc2l0aW9uID0gZm91bmRQb3NpdGlvbjtcbiAgfVxuXG4gIGdldCBfYXJyb3dTdHlsZXMoKTogUmV0dXJuVHlwZTx0eXBlb2YgaHRtbFNhZmU-IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB7IGFycm93U3R5bGVzIH0gPSB0aGlzO1xuXG4gICAgcmV0dXJuIGFycm93U3R5bGVzXG4gICAgICA_IGh0bWxTYWZlKGB0b3A6ICR7YXJyb3dTdHlsZXM_LnRvcH1weDsgbGVmdDogJHthcnJvd1N0eWxlcz8ubGVmdH1weDtgKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgX3BvcG92ZXJTdHlsZXMoKTogeyBbaTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHsgcGFuZWxTdHlsZSB9ID0gdGhpcy5hcmdzO1xuICAgIGNvbnN0IHsgcG9wb3ZlclN0eWxlcyB9ID0gdGhpcztcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5wYW5lbFN0eWxlLFxuICAgICAgdG9wOiBgJHtwb3BvdmVyU3R5bGVzLnRvcH1weGAsXG4gICAgICBsZWZ0OiBgJHtwb3BvdmVyU3R5bGVzLmxlZnR9cHhgLFxuICAgICAgekluZGV4OiBgJHtwb3BvdmVyU3R5bGVzLnpJbmRleH1gXG4gICAgfTtcbiAgfVxuXG4gIGdldCB0YWJpbmRleCgpIHtcbiAgICBpZiAodGhpcy5vd25Gb2N1cykge1xuICAgICAgcmV0dXJuIHRoaXMuYXJncy50YWJpbmRleCA_PyAnMCc7XG4gICAgfVxuXG4gICAgcmV0dXJuICctMSc7XG4gIH1cblxuICBAYWN0aW9uXG4gIHBvc2l0aW9uUG9wb3ZlckZpeGVkKCk6IHZvaWQge1xuICAgIHRoaXMucG9zaXRpb25Qb3BvdmVyKHRydWUpO1xuICB9XG5cbiAgQGFjdGlvblxuICBwb3NpdGlvblBvcG92ZXJGbHVpZCgpOiB2b2lkIHtcbiAgICB0aGlzLnBvc2l0aW9uUG9wb3ZlcihmYWxzZSk7XG4gIH1cblxuICBAYWN0aW9uXG4gIHJlZ2lzdGVyQnV0dG9uKGJ0bjogSFRNTERpdkVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmJ1dHRvbiA9IGJ0bjtcbiAgICB0aGlzLmFyZ3MuYnV0dG9uUmVmPy4oYnRuKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgcmVnaXN0ZXJQYW5lbChwYW5lbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnBhbmVsID0gcGFuZWw7XG4gICAgdGhpcy5hcmdzLnBhbmVsUmVmPy4ocGFuZWwpO1xuXG4gICAgaWYgKHBhbmVsID09PSBudWxsKSB7XG4gICAgICAvLyBwYW5lbCBoYXMgdW5tb3VudGVkLCByZXN0b3JlIHRoZSBzdGF0ZSBkZWZhdWx0c1xuICAgICAgdGhpcy5wb3BvdmVyU3R5bGVzID0gREVGQVVMVF9QT1BPVkVSX1NUWUxFUztcbiAgICAgIHRoaXMuYXJyb3dTdHlsZXMgPSB7fTtcbiAgICAgIHRoaXMuYXJyb3dQb3NpdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLm9wZW5Qb3NpdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLmlzT3BlblN0YWJsZSA9IGZhbHNlO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucG9zaXRpb25Qb3BvdmVyRmx1aWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBwYW5lbCBpcyBjb21pbmcgaW50byBleGlzdGVuY2VcbiAgICAgIHRoaXMucG9zaXRpb25Qb3BvdmVyRmx1aWQoKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnBvc2l0aW9uUG9wb3ZlckZsdWlkKTtcbiAgICB9XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAge3sjbGV0XG4gICAgICAocmFuZG9tSWQpXG4gICAgICAoY2xhc3NOYW1lc1xuICAgICAgICAoaWYgdGhpcy5pc09wZW5pbmcgXCJldWlQb3BvdmVyLWlzT3BlblwiKVxuICAgICAgICBwb3NpdGlvbj10aGlzLmFuY2hvclBvc2l0aW9uXG4gICAgICAgIGRpc3BsYXk9dGhpcy5kaXNwbGF5XG4gICAgICAgIGNvbXBvbmVudE5hbWU9XCJFdWlQb3BvdmVyXCJcbiAgICAgIClcbiAgICAgIChjbGFzc05hbWVzXG4gICAgICAgIFwiZXVpUG9wb3Zlcl9fcGFuZWxcIlxuICAgICAgICAoY29uY2F0IFwiZXVpUG9wb3Zlcl9fcGFuZWwtLVwiIHRoaXMuYXJyb3dQb3NpdGlvbilcbiAgICAgICAgKGlmIHRoaXMuaXNPcGVuaW5nIFwiZXVpUG9wb3Zlcl9fcGFuZWwtaXNPcGVuXCIpXG4gICAgICAgIChpZlxuICAgICAgICAgIChvciAobm90IHRoaXMuaGFzQXJyb3cpIEBhdHRhY2hUb0FuY2hvcikgXCJldWlQb3BvdmVyX19wYW5lbC1ub0Fycm93XCJcbiAgICAgICAgKVxuICAgICAgICAoaWYgQGF0dGFjaFRvQW5jaG9yIFwiZXVpUG9wb3Zlcl9fcGFuZWwtaXNBdHRhY2hlZFwiKVxuICAgICAgICBAcGFuZWxDbGFzc2VzXG4gICAgICApXG4gICAgICBhcyB8ZGVzY3JpcHRpb25JZCBjbGFzc2VzIHBhbmVsQ2xhc3Nlc3xcbiAgICB9fVxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz17e2NsYXNzZXN9fVxuICAgICAgICB7e29uS2V5IFwiX2FsbFwiIHRoaXMub25LZXlEb3duIHByaW9yaXR5PTF9fVxuICAgICAgICB7e2RpZEluc2VydCB0aGlzLmRpZEluc2VydFBvcG92ZXJ9fVxuICAgICAgICB7e2RpZFVwZGF0ZSB0aGlzLmRpZFVwZGF0ZUlzT3BlbiBAaXNPcGVufX1cbiAgICAgICAge3tkaWRVcGRhdGUgdGhpcy5kaWRVcGRhdGVSZXBvc2l0aW9uT25TY3JvbGwgQHJlcG9zaXRpb25PblNjcm9sbH19XG4gICAgICAgIHt7ZGlkSW5zZXJ0IChvcHRpb25hbCBAcG9wb3ZlclJlZil9fVxuICAgICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgICA-XG5cbiAgICAgICAge3shIGJ1dHRvbiB9fVxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJldWlQb3BvdmVyX19hbmNob3Ige3tAYW5jaG9yQ2xhc3NOYW1lfX1cIlxuICAgICAgICAgIHt7ZGlkSW5zZXJ0IHRoaXMucmVnaXN0ZXJCdXR0b259fVxuICAgICAgICA-XG4gICAgICAgICAge3t5aWVsZCB0bz1cImJ1dHRvblwifX1cbiAgICAgICAgPC9kaXY-XG5cbiAgICAgICAge3shIGNvbnRlbnQgfX1cbiAgICAgICAge3sjaWZcbiAgICAgICAgICAoYW5kXG4gICAgICAgICAgICAobm90IHRoaXMuc3VwcHJlc3NpbmdQb3BvdmVyKVxuICAgICAgICAgICAgKG9yIHRoaXMuaXNDdXJyZW50bHlPcGVuIHRoaXMuaXNDbG9zaW5nKVxuICAgICAgICAgIClcbiAgICAgICAgfX1cbiAgICAgICAgICA8RXVpUG9ydGFsIEBpbnNlcnQ9e3t0aGlzLmluc2VydH19PlxuICAgICAgICAgICAge3sjbGV0IChyYW5kb21JZCkgYXMgfHBhbmVsSWR8fX1cbiAgICAgICAgICAgICAgPEV1aVBhbmVsXG4gICAgICAgICAgICAgICAgaWQ9e3twYW5lbElkfX1cbiAgICAgICAgICAgICAgICBjbGFzcz17e3BhbmVsQ2xhc3Nlc319XG4gICAgICAgICAgICAgICAgYXJpYS1saXZlPXt7aWYgdGhpcy5vd25Gb2N1cyBcIm9mZlwiIFwiYXNzZXJ0aXZlXCJ9fVxuICAgICAgICAgICAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3tAYXJpYUxhYmVsfX1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e3tAYXJpYUxhYmVsbGVkQnl9fVxuICAgICAgICAgICAgICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PXt7aWYgdGhpcy5vd25Gb2N1cyBkZXNjcmlwdGlvbklkfX1cbiAgICAgICAgICAgICAgICB0YWJpbmRleD17e3RoaXMudGFiaW5kZXh9fVxuICAgICAgICAgICAgICAgIEBoYXNTaGFkb3c9e3tmYWxzZX19XG4gICAgICAgICAgICAgICAgQHBhZGRpbmdTaXplPXt7dGhpcy5wYW5lbFBhZGRpbmdTaXplfX1cbiAgICAgICAgICAgICAgICB7e3NpbXBsZVN0eWxlIHRoaXMuX3BvcG92ZXJTdHlsZXN9fVxuICAgICAgICAgICAgICAgIHt7ZGlkSW5zZXJ0IHRoaXMucmVnaXN0ZXJQYW5lbH19XG4gICAgICAgICAgICAgICAge3tvdXRzaWRlQ2xpY2tEZXRlY3RvciBvbk91dHNpZGVDbGljaz10aGlzLm9uQ2xpY2tPdXRzaWRlfX1cbiAgICAgICAgICAgICAgICB7e29uS2V5IFwiRXNjYXBlXCIgdGhpcy5vbkVzY2FwZUtleX19XG4gICAgICAgICAgICAgICAge3tmb2N1c1RyYXBcbiAgICAgICAgICAgICAgICAgIGlzQWN0aXZlPShub3RcbiAgICAgICAgICAgICAgICAgICAgKG9yXG4gICAgICAgICAgICAgICAgICAgICAgKG5vdCB0aGlzLm93bkZvY3VzKSAobm90IHRoaXMuaXNPcGVuU3RhYmxlKSB0aGlzLmlzQ2xvc2luZ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBzaG91bGRTZWxmRm9jdXM9dGhpcy5zaG91bGRTZWxmRm9jdXNcbiAgICAgICAgICAgICAgICAgIGlzUGF1c2VkPXRoaXMuaXNGb2N1c1RyYXBQYXVzZWRcbiAgICAgICAgICAgICAgICAgIGZvY3VzVHJhcE9wdGlvbnM9KG1lcmdlXG4gICAgICAgICAgICAgICAgICAgIChoYXNoXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuRm9jdXNPbkRlYWN0aXZhdGU9dGhpcy5pc09wZW5TdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsRm9jdXM9KG9yIEBpbml0aWFsRm9jdXMgdGhpcy5wYW5lbClcbiAgICAgICAgICAgICAgICAgICAgICBvbkRlYWN0aXZhdGU9KG9wdGlvbmFsIEBvblRyYXBEZWFjdGl2YXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbD10cnVlXG4gICAgICAgICAgICAgICAgICAgICAgY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM9dHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrRm9jdXM9KGNvbmNhdCBcIiNcIiBwYW5lbElkKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIEBmb2N1c1RyYXBPcHRpb25zXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPXt7Y29uY2F0XG4gICAgICAgICAgICAgICAgICAgIFwiZXVpUG9wb3Zlcl9fcGFuZWxBcnJvdyBldWlQb3BvdmVyX19wYW5lbEFycm93LS1cIlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFycm93UG9zaXRpb25cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBzdHlsZT17e3RoaXMuX2Fycm93U3R5bGVzfX1cbiAgICAgICAgICAgICAgICA-XG4gICAgICAgICAgICAgICAgICB7e3lpZWxkIHRvPVwiYXJyb3dDaGlsZHJlblwifX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7eyNpZiB0aGlzLm93bkZvY3VzfX1cbiAgICAgICAgICAgICAgICAgIDxwIGlkPXt7ZGVzY3JpcHRpb25JZH19IHt7c2NyZWVuUmVhZGVyT25seX19PlxuICAgICAgICAgICAgICAgICAgICBZb3UgYXJlIGluIGEgZGlhbG9nLiBUbyBjbG9zZSB0aGlzIGRpYWxvZywgaGl0IGVzY2FwZS5cbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICB7ey9pZn19XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAge3ttdXRhdGlvbk9ic2VydmVyXG4gICAgICAgICAgICAgICAgICAgIG9uTXV0YXRpb249dGhpcy5vbk11dGF0aW9uXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyT3B0aW9ucz0obWVyZ2VcbiAgICAgICAgICAgICAgICAgICAgICAoaGFzaFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcz10cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZExpc3Q9dHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyRGF0YT10cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0cmVlPXRydWVcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgQG11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3t5aWVsZCB0bz1cImNvbnRlbnRcIn19XG4gICAgICAgICAgICAgICAgPC9kaXY-XG4gICAgICAgICAgICAgIDwvRXVpUGFuZWw-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"],"names":["anchorPositionToPopoverPositionMap","up","right","down","left","getPopoverPositionFromAnchorPosition","anchorPosition1","match1","match","length","getPopoverAlignFromAnchorPosition","toLowerCase","ANCHOR_POSITIONS","Object","keys","anchorPositionMapping","DISPLAY","displayMapping","DEFAULT_POPOVER_STYLES","top","getElementFromInitialFocus","initialFocus1","initialFocusType1","document","querySelector","EuiPopoverComponent","Component","g","this","prototype","argOrDefaultDecorator","i","void 0","tracked","respositionTimeout","closingTransitionTimeout","closingTransitionAnimationFrame","updateFocusAnimationFrame","hasSetInitialFocus","constructor","owner1","args1","assert","args","closePopover","prevIsOpen","isOpen","suppressingPopover","isCurrentlyOpen","insert","shouldAccountForOtherPopovers","popoverHost","sibling","children","position","undefined","n","action","onEscapeKey","event1","ekEvent1","stopPropagation","stopImmediatePropagation","preventDefault","onKeyDown","key","cascadingMenuKeys","ESCAPE","onClickOutside","focusTrapOptions","button","contains","target","updateFocus","window","requestAnimationFrame","ownFocus","panel","initialFocus","activeElement","focusTarget1","tabbableItems1","tabbable","panelVisibility1","getComputedStyle","opacity","visibility1","visibility","focus","onOpenPopover","cancel","isOpening","durationMatch","durationMatch1","delayMatch","delayMatch1","Array","slice","call","reduce","element1","transitionTimings1","getTransitionTimings","Math","max","later","isOpenStable","fn1","positionPopoverFixed","scheduleOnce","checkIfPopoverIsInsideAnotherPopover","ele1","otherPopover1","closest","didInsertPopover","repositionOnScroll","addEventListener","didUpdateRepositionOnScroll","removeEventListener","didUpdateIsOpen","isClosing","willDestroy","cancelAnimationFrame","onMutation","records1","waitDuration1","getWaitDuration","performOnFrame","positionPopover","allowEnforcePosition1","position1","anchorPosition","forcePosition1","openPosition","top1","left1","foundPosition1","arrow","arrow1","anchorBoundingBox","anchorBoundingBox1","findPopoverPosition","container","host","forcePosition","align","anchor","popover","offset","attachToAnchor","hasArrow","arrowConfig","arrowWidth","arrowBuffer","returnBoundingBox","buffer","zIndex","zIndexProp1","zIndex1","getElementZIndex","popoverStyles1","willRenderArrow1","arrowStyles1","arrowPosition1","popoverStyles","arrowStyles","arrowPosition","_arrowStyles","htmlSafe","_popoverStyles","panelStyle","panelStyle1","tabindex","positionPopoverFluid","registerButton","btn1","buttonRef","registerPanel","panel1","panelRef","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","classNames","concat","or","not","onKey","didInsert","didUpdate","optional","and","EuiPortal","EuiPanel","simpleStyle","outsideClickDetector","focusTrap","merge","hash","screenReaderOnly","mutationObserver"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"eui-portal.js","sources":["../../src/components/eui-portal.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { guidFor } from '@ember/object/internals';\nimport { isBlank } from '@ember/utils';\nimport { keysOf } from './common.ts';\ninterface InsertPositionsMap {\n [key: string]: string;\n}\nexport const insertPositions: InsertPositionsMap = {\n after: 'afterend',\n before: 'beforebegin'\n};\nexport const INSERT_POSITIONS: EuiPortalInsertPosition[] = keysOf(insertPositions);\ntype EuiPortalInsertPosition = keyof typeof insertPositions;\nexport interface EuiPortalArgs {\n insert?: {\n sibling: HTMLElement;\n position: EuiPortalInsertPosition;\n };\n portalRef?: (ref: HTMLDivElement | null) => void;\n}\nexport interface EuiPortalSignature {\n Args: EuiPortalArgs;\n Element: HTMLDivElement;\n Blocks: {\n default: [];\n };\n}\nexport default class EuiPortal extends Component<EuiPortalSignature> {\n @tracked\n portalNode: HTMLElement;\n constructor(owner1: unknown, args1: EuiPortalArgs){\n super(owner1, args1);\n const { insert: insert1 } = this.args;\n this.portalNode = document.createElement('div');\n this.portalNode.id = `${guidFor({})}-portal`;\n if (isBlank(this.args.insert)) {\n document.body.appendChild(this.portalNode);\n } else {\n // inserting before or after an element\n const { sibling: sibling1, position: position1 } = insert1!;\n sibling1.insertAdjacentElement(insertPositions[position1] as InsertPosition, this.portalNode);\n }\n }\n willDestroy(): void {\n super.willDestroy();\n if (this.portalNode.parentNode) {\n this.portalNode.parentNode.removeChild(this.portalNode);\n }\n }\n static{\n template(`\n {{#if this.portalNode}}\n {{#in-element this.portalNode}}\n {{yield}}\n {{/in-element}}\n {{/if}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9iZXRvY2FudHU5My9vcGVuc291cmNlL2VtYmVyLWV1aS9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL2V1aS1wb3J0YWwuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IHRyYWNrZWQgfSBmcm9tICdAZ2xpbW1lci90cmFja2luZyc7XG5pbXBvcnQgeyBndWlkRm9yIH0gZnJvbSAnQGVtYmVyL29iamVjdC9pbnRlcm5hbHMnO1xuaW1wb3J0IHsgaXNCbGFuayB9IGZyb20gJ0BlbWJlci91dGlscyc7XG5cbmltcG9ydCB7IGtleXNPZiB9IGZyb20gJy4vY29tbW9uLnRzJztcblxuaW50ZXJmYWNlIEluc2VydFBvc2l0aW9uc01hcCB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGluc2VydFBvc2l0aW9uczogSW5zZXJ0UG9zaXRpb25zTWFwID0ge1xuICBhZnRlcjogJ2FmdGVyZW5kJyxcbiAgYmVmb3JlOiAnYmVmb3JlYmVnaW4nXG59O1xuXG5leHBvcnQgY29uc3QgSU5TRVJUX1BPU0lUSU9OUzogRXVpUG9ydGFsSW5zZXJ0UG9zaXRpb25bXSA9XG4gIGtleXNPZihpbnNlcnRQb3NpdGlvbnMpO1xuXG50eXBlIEV1aVBvcnRhbEluc2VydFBvc2l0aW9uID0ga2V5b2YgdHlwZW9mIGluc2VydFBvc2l0aW9ucztcblxuZXhwb3J0IGludGVyZmFjZSBFdWlQb3J0YWxBcmdzIHtcbiAgaW5zZXJ0PzogeyBzaWJsaW5nOiBIVE1MRWxlbWVudDsgcG9zaXRpb246IEV1aVBvcnRhbEluc2VydFBvc2l0aW9uIH07XG4gIHBvcnRhbFJlZj86IChyZWY6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdWlQb3J0YWxTaWduYXR1cmUge1xuICBBcmdzOiBFdWlQb3J0YWxBcmdzO1xuICBFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcbiAgQmxvY2tzOiB7IGRlZmF1bHQ6IFtdIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV1aVBvcnRhbCBleHRlbmRzIENvbXBvbmVudDxFdWlQb3J0YWxTaWduYXR1cmU-IHtcbiAgQHRyYWNrZWQgcG9ydGFsTm9kZSE6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKG93bmVyOiB1bmtub3duLCBhcmdzOiBFdWlQb3J0YWxBcmdzKSB7XG4gICAgc3VwZXIob3duZXIsIGFyZ3MpO1xuXG4gICAgY29uc3QgeyBpbnNlcnQgfSA9IHRoaXMuYXJncztcblxuICAgIHRoaXMucG9ydGFsTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMucG9ydGFsTm9kZS5pZCA9IGAke2d1aWRGb3Ioe30pfS1wb3J0YWxgO1xuXG4gICAgaWYgKGlzQmxhbmsodGhpcy5hcmdzLmluc2VydCkpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5wb3J0YWxOb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW5zZXJ0aW5nIGJlZm9yZSBvciBhZnRlciBhbiBlbGVtZW50XG4gICAgICBjb25zdCB7IHNpYmxpbmcsIHBvc2l0aW9uIH0gPSBpbnNlcnQhO1xuXG4gICAgICBzaWJsaW5nLmluc2VydEFkamFjZW50RWxlbWVudChcbiAgICAgICAgaW5zZXJ0UG9zaXRpb25zW3Bvc2l0aW9uXSBhcyBJbnNlcnRQb3NpdGlvbixcbiAgICAgICAgdGhpcy5wb3J0YWxOb2RlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHdpbGxEZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLndpbGxEZXN0cm95KCk7XG5cbiAgICBpZiAodGhpcy5wb3J0YWxOb2RlLnBhcmVudE5vZGUpIHtcbiAgICAgIHRoaXMucG9ydGFsTm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucG9ydGFsTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgPHRlbXBsYXRlPlxuICAgIHt7I2lmIHRoaXMucG9ydGFsTm9kZX19XG4gICAgICB7eyNpbi1lbGVtZW50IHRoaXMucG9ydGFsTm9kZX19XG4gICAgICAgIHt7eWllbGR9fVxuICAgICAge3svaW4tZWxlbWVudH19XG4gICAge3svaWZ9fVxuICA8L3RlbXBsYXRlPlxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLGVBQWUscUJBQXFCO0FBQzNDLFNBQVMsT0FBTyxRQUFRLG9CQUFvQjtBQUM1QyxTQUFTLE9BQU8sUUFBUSwwQkFBMEI7QUFDbEQsU0FBUyxPQUFPLFFBQVEsZUFBZTtBQUV2QyxTQUFTLE1BQU0sUUFBUSxjQUFjO1VBRTNCO0tBQ1AsS0FBSyxNQUFNLEdBQUcsTUFBTTs7QUFHdkIsT0FBTyxNQUFNLGlCQUFpQixxQkFBcUI7SUFDakQsT0FBTztJQUNQLFFBQVE7QUFDVixFQUFFO0FBRUYsT0FBTyxNQUFNLGtCQUFrQiw0QkFDN0IsT0FBTyxpQkFBaUI7S0FFckIsdUNBQXVDO0FBRTVDLGlCQUFpQjtJQUNmO1FBQVcsU0FBUztRQUFhLFVBQVU7O0lBQzNDLGFBQWEsS0FBSyxpQkFBaUIsSUFBSSxLQUFLLElBQUk7O0FBR2xELGlCQUFpQjtJQUNmLE1BQU07SUFDTixTQUFTO0lBQ1Q7UUFBVTs7O0FBR1osZUFBZSxNQUFNLGtCQUFrQixVQUFVO0lBQy9DLENBQUM7SUFBUSxZQUFhLFlBQVk7SUFFbEMsWUFBWSxRQUFPLE9BQU8sRUFBRSxPQUFNLGFBQWEsQ0FBRTtRQUMvQyxLQUFLLENBQUMsUUFBTztRQUViLE1BQU0sRUFBRSxRQUFBLE9BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJO1FBRTVCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUU1QyxJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDN0IsU0FBUyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQzNDLE9BQU87WUFDTCx1Q0FBdUM7WUFDdkMsTUFBTSxFQUFFLFNBQUEsUUFBTyxFQUFFLFVBQUEsU0FBUSxFQUFFLEdBQUc7WUFFOUIsU0FBUSxxQkFBcUIsQ0FDM0IsZUFBZSxDQUFDLFVBQVMsSUFBSSxnQkFDN0IsSUFBSSxDQUFDLFVBQVU7UUFFbkI7SUFDRjtJQUVBLGVBQWUsSUFBSSxDQUFDO1FBQ2xCLEtBQUssQ0FBQztRQUVOLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQ3hEO0lBQ0Y7SUFFQSxNQUFBO1FBQUEsU0FBVSxDQUFBOzs7Ozs7RUFNVixDQUFBLEVBQUE7WUFBQSxXQUFBLElBQVc7WUFBWDtnQkFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7WUFBRDtRQUFBO0lBQUEsQ0FOQTtBQU9aIn0"],"names":["insertPositions","after","before","INSERT_POSITIONS","keysOf","EuiPortal","Component","g","this","prototype","tracked","i","void 0","constructor","owner1","args1","insert","insert1","args","portalNode","document","createElement","id","guidFor","isBlank","body","appendChild","sibling","sibling1","position","position1","insertAdjacentElement","willDestroy","parentNode","removeChild","setComponentTemplate","precompileTemplate","strictMode"],"mappings":";;;;;;;;;AAWO,MAAMA,eAAiB,GAAqB;AACjDC,EAAAA,KAAA,EAAO,UAAA;AACPC,EAAAA,MAAA,EAAQ,aAAA;AACV,EAAA;AAEaC,MAAAA,gBAAkB,GAC7BC,MAAA,CAAOJ,eAAA,EAAA;AAeM,MAAMK,SAAA,SAAkBC,SAAA,CAAU;AAAA,EAAA;AAAAC,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,iBAC9CC,OAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,WAAA,IAAAC,CAAA,CAAAH,IAAA,iBAAAI,KAAA,CAAA,EAAA;EAEDC,WAAYC,CAAAA,MAAc,EAAEC,KAAmB,EAAE;IAC/C,KAAK,CAACD,MAAA,EAAOC,KAAA,CAAA,CAAA;IAEb,MAAM;AAAEC,MAAAA,MAAA,EAAAC,OAAAA;KAAQ,GAAG,IAAI,CAACC,IAAI,CAAA;AAE5B,IAAA,IAAI,CAACC,UAAU,GAAGC,QAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA;IACzC,IAAI,CAACF,UAAU,CAACG,EAAE,GAAI,GAAEC,OAAA,CAAQ,EAAC,CAAG,CAAQ,OAAA,CAAA,CAAA;AAE5C,IAAA,IAAIC,OAAA,CAAQ,IAAI,CAACN,IAAI,CAACF,MAAM,CAAG,EAAA;AAC7BI,MAAAA,QAAA,CAASK,IAAI,CAACC,WAAW,CAAC,IAAI,CAACP,UAAU,CAAA,CAAA;KACpC,MAAA;AACL;MACA,MAAM;AAAEQ,QAAAA,OAAA,EAAAC,QAAO;AAAEC,QAAAA,QAAA,EAAAC,SAAAA;AAAQ,OAAE,GAAGb,OAAA,CAAA;MAE9BW,QAAA,CAAQG,qBAAqB,CAC3B/B,eAAe,CAAC8B,SAAA,CAAS,EACzB,IAAI,CAACX,UAAU,CAAA,CAAA;AAEnB,KAAA;AACF,GAAA;AAEAa,EAAAA,WAAAA,GAAoB;AAClB,IAAA,KAAK,CAACA,WAAA,EAAA,CAAA;AAEN,IAAA,IAAI,IAAI,CAACb,UAAU,CAACc,UAAU,EAAE;MAC9B,IAAI,CAACd,UAAU,CAACc,UAAU,CAACC,WAAW,CAAC,IAAI,CAACf,UAAU,CAAA,CAAA;AACxD,KAAA;AACF,GAAA;AAEA,EAAA;IAAAgB,oBAAA,CAAAC,kBAAA,CAMA,iIAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
1
+ {"version":3,"file":"eui-portal.js","sources":["../../src/components/eui-portal.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { guidFor } from '@ember/object/internals';\nimport { isBlank } from '@ember/utils';\nimport { keysOf } from './common.ts';\ninterface InsertPositionsMap {\n [key: string]: string;\n}\nexport const insertPositions: InsertPositionsMap = {\n after: 'afterend',\n before: 'beforebegin'\n};\nexport const INSERT_POSITIONS: EuiPortalInsertPosition[] = keysOf(insertPositions);\ntype EuiPortalInsertPosition = keyof typeof insertPositions;\nexport interface EuiPortalArgs {\n insert?: {\n sibling: HTMLElement;\n position: EuiPortalInsertPosition;\n };\n portalRef?: (ref: HTMLDivElement | null) => void;\n}\nexport interface EuiPortalSignature {\n Args: EuiPortalArgs;\n Element: HTMLDivElement;\n Blocks: {\n default: [];\n };\n}\nexport default class EuiPortal extends Component<EuiPortalSignature> {\n @tracked\n portalNode: HTMLElement;\n constructor(owner1: unknown, args1: EuiPortalArgs){\n super(owner1, args1);\n const { insert: insert1 } = this.args;\n this.portalNode = document.createElement('div');\n this.portalNode.id = `${guidFor({})}-portal`;\n if (isBlank(this.args.insert)) {\n document.body.appendChild(this.portalNode);\n } else {\n // inserting before or after an element\n const { sibling: sibling1, position: position1 } = insert1!;\n sibling1.insertAdjacentElement(insertPositions[position1] as InsertPosition, this.portalNode);\n }\n }\n willDestroy(): void {\n super.willDestroy();\n if (this.portalNode.parentNode) {\n this.portalNode.parentNode.removeChild(this.portalNode);\n }\n }\n static{\n template(`\n {{#if this.portalNode}}\n {{#in-element this.portalNode}}\n {{yield}}\n {{/in-element}}\n {{/if}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9iZXRvY2FudHU5My9wcnlzbWV4L2VtYmVyLWV1aS9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL2V1aS1wb3J0YWwuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IHRyYWNrZWQgfSBmcm9tICdAZ2xpbW1lci90cmFja2luZyc7XG5pbXBvcnQgeyBndWlkRm9yIH0gZnJvbSAnQGVtYmVyL29iamVjdC9pbnRlcm5hbHMnO1xuaW1wb3J0IHsgaXNCbGFuayB9IGZyb20gJ0BlbWJlci91dGlscyc7XG5cbmltcG9ydCB7IGtleXNPZiB9IGZyb20gJy4vY29tbW9uLnRzJztcblxuaW50ZXJmYWNlIEluc2VydFBvc2l0aW9uc01hcCB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGluc2VydFBvc2l0aW9uczogSW5zZXJ0UG9zaXRpb25zTWFwID0ge1xuICBhZnRlcjogJ2FmdGVyZW5kJyxcbiAgYmVmb3JlOiAnYmVmb3JlYmVnaW4nXG59O1xuXG5leHBvcnQgY29uc3QgSU5TRVJUX1BPU0lUSU9OUzogRXVpUG9ydGFsSW5zZXJ0UG9zaXRpb25bXSA9XG4gIGtleXNPZihpbnNlcnRQb3NpdGlvbnMpO1xuXG50eXBlIEV1aVBvcnRhbEluc2VydFBvc2l0aW9uID0ga2V5b2YgdHlwZW9mIGluc2VydFBvc2l0aW9ucztcblxuZXhwb3J0IGludGVyZmFjZSBFdWlQb3J0YWxBcmdzIHtcbiAgaW5zZXJ0PzogeyBzaWJsaW5nOiBIVE1MRWxlbWVudDsgcG9zaXRpb246IEV1aVBvcnRhbEluc2VydFBvc2l0aW9uIH07XG4gIHBvcnRhbFJlZj86IChyZWY6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdWlQb3J0YWxTaWduYXR1cmUge1xuICBBcmdzOiBFdWlQb3J0YWxBcmdzO1xuICBFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcbiAgQmxvY2tzOiB7IGRlZmF1bHQ6IFtdIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV1aVBvcnRhbCBleHRlbmRzIENvbXBvbmVudDxFdWlQb3J0YWxTaWduYXR1cmU-IHtcbiAgQHRyYWNrZWQgcG9ydGFsTm9kZSE6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKG93bmVyOiB1bmtub3duLCBhcmdzOiBFdWlQb3J0YWxBcmdzKSB7XG4gICAgc3VwZXIob3duZXIsIGFyZ3MpO1xuXG4gICAgY29uc3QgeyBpbnNlcnQgfSA9IHRoaXMuYXJncztcblxuICAgIHRoaXMucG9ydGFsTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMucG9ydGFsTm9kZS5pZCA9IGAke2d1aWRGb3Ioe30pfS1wb3J0YWxgO1xuXG4gICAgaWYgKGlzQmxhbmsodGhpcy5hcmdzLmluc2VydCkpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5wb3J0YWxOb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW5zZXJ0aW5nIGJlZm9yZSBvciBhZnRlciBhbiBlbGVtZW50XG4gICAgICBjb25zdCB7IHNpYmxpbmcsIHBvc2l0aW9uIH0gPSBpbnNlcnQhO1xuXG4gICAgICBzaWJsaW5nLmluc2VydEFkamFjZW50RWxlbWVudChcbiAgICAgICAgaW5zZXJ0UG9zaXRpb25zW3Bvc2l0aW9uXSBhcyBJbnNlcnRQb3NpdGlvbixcbiAgICAgICAgdGhpcy5wb3J0YWxOb2RlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHdpbGxEZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLndpbGxEZXN0cm95KCk7XG5cbiAgICBpZiAodGhpcy5wb3J0YWxOb2RlLnBhcmVudE5vZGUpIHtcbiAgICAgIHRoaXMucG9ydGFsTm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucG9ydGFsTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgPHRlbXBsYXRlPlxuICAgIHt7I2lmIHRoaXMucG9ydGFsTm9kZX19XG4gICAgICB7eyNpbi1lbGVtZW50IHRoaXMucG9ydGFsTm9kZX19XG4gICAgICAgIHt7eWllbGR9fVxuICAgICAge3svaW4tZWxlbWVudH19XG4gICAge3svaWZ9fVxuICA8L3RlbXBsYXRlPlxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLGVBQWUscUJBQXFCO0FBQzNDLFNBQVMsT0FBTyxRQUFRLG9CQUFvQjtBQUM1QyxTQUFTLE9BQU8sUUFBUSwwQkFBMEI7QUFDbEQsU0FBUyxPQUFPLFFBQVEsZUFBZTtBQUV2QyxTQUFTLE1BQU0sUUFBUSxjQUFjO1VBRTNCO0tBQ1AsS0FBSyxNQUFNLEdBQUcsTUFBTTs7QUFHdkIsT0FBTyxNQUFNLGlCQUFpQixxQkFBcUI7SUFDakQsT0FBTztJQUNQLFFBQVE7QUFDVixFQUFFO0FBRUYsT0FBTyxNQUFNLGtCQUFrQiw0QkFDN0IsT0FBTyxpQkFBaUI7S0FFckIsdUNBQXVDO0FBRTVDLGlCQUFpQjtJQUNmO1FBQVcsU0FBUztRQUFhLFVBQVU7O0lBQzNDLGFBQWEsS0FBSyxpQkFBaUIsSUFBSSxLQUFLLElBQUk7O0FBR2xELGlCQUFpQjtJQUNmLE1BQU07SUFDTixTQUFTO0lBQ1Q7UUFBVTs7O0FBR1osZUFBZSxNQUFNLGtCQUFrQixVQUFVO0lBQy9DLENBQUM7SUFBUSxZQUFhLFlBQVk7SUFFbEMsWUFBWSxRQUFPLE9BQU8sRUFBRSxPQUFNLGFBQWEsQ0FBRTtRQUMvQyxLQUFLLENBQUMsUUFBTztRQUViLE1BQU0sRUFBRSxRQUFBLE9BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJO1FBRTVCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUU1QyxJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDN0IsU0FBUyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQzNDLE9BQU87WUFDTCx1Q0FBdUM7WUFDdkMsTUFBTSxFQUFFLFNBQUEsUUFBTyxFQUFFLFVBQUEsU0FBUSxFQUFFLEdBQUc7WUFFOUIsU0FBUSxxQkFBcUIsQ0FDM0IsZUFBZSxDQUFDLFVBQVMsSUFBSSxnQkFDN0IsSUFBSSxDQUFDLFVBQVU7UUFFbkI7SUFDRjtJQUVBLGVBQWUsSUFBSSxDQUFDO1FBQ2xCLEtBQUssQ0FBQztRQUVOLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQ3hEO0lBQ0Y7SUFFQSxNQUFBO1FBQUEsU0FBVSxDQUFBOzs7Ozs7RUFNVixDQUFBLEVBQUE7WUFBQSxXQUFBLElBQVc7WUFBWDtnQkFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7WUFBRDtRQUFBO0lBQUEsQ0FOQTtBQU9aIn0"],"names":["insertPositions","after","before","INSERT_POSITIONS","keysOf","EuiPortal","Component","g","this","prototype","tracked","i","void 0","constructor","owner1","args1","insert","insert1","args","portalNode","document","createElement","id","guidFor","isBlank","body","appendChild","sibling","sibling1","position","position1","insertAdjacentElement","willDestroy","parentNode","removeChild","setComponentTemplate","precompileTemplate","strictMode"],"mappings":";;;;;;;;;AAWO,MAAMA,eAAiB,GAAqB;AACjDC,EAAAA,KAAA,EAAO,UAAA;AACPC,EAAAA,MAAA,EAAQ,aAAA;AACV,EAAA;AAEaC,MAAAA,gBAAkB,GAC7BC,MAAA,CAAOJ,eAAA,EAAA;AAeM,MAAMK,SAAA,SAAkBC,SAAA,CAAU;AAAA,EAAA;AAAAC,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,iBAC9CC,OAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,WAAA,IAAAC,CAAA,CAAAH,IAAA,iBAAAI,KAAA,CAAA,EAAA;EAEDC,WAAYC,CAAAA,MAAc,EAAEC,KAAmB,EAAE;IAC/C,KAAK,CAACD,MAAA,EAAOC,KAAA,CAAA,CAAA;IAEb,MAAM;AAAEC,MAAAA,MAAA,EAAAC,OAAAA;KAAQ,GAAG,IAAI,CAACC,IAAI,CAAA;AAE5B,IAAA,IAAI,CAACC,UAAU,GAAGC,QAAA,CAASC,aAAa,CAAC,KAAA,CAAA,CAAA;IACzC,IAAI,CAACF,UAAU,CAACG,EAAE,GAAI,GAAEC,OAAA,CAAQ,EAAC,CAAG,CAAQ,OAAA,CAAA,CAAA;AAE5C,IAAA,IAAIC,OAAA,CAAQ,IAAI,CAACN,IAAI,CAACF,MAAM,CAAG,EAAA;AAC7BI,MAAAA,QAAA,CAASK,IAAI,CAACC,WAAW,CAAC,IAAI,CAACP,UAAU,CAAA,CAAA;KACpC,MAAA;AACL;MACA,MAAM;AAAEQ,QAAAA,OAAA,EAAAC,QAAO;AAAEC,QAAAA,QAAA,EAAAC,SAAAA;AAAQ,OAAE,GAAGb,OAAA,CAAA;MAE9BW,QAAA,CAAQG,qBAAqB,CAC3B/B,eAAe,CAAC8B,SAAA,CAAS,EACzB,IAAI,CAACX,UAAU,CAAA,CAAA;AAEnB,KAAA;AACF,GAAA;AAEAa,EAAAA,WAAAA,GAAoB;AAClB,IAAA,KAAK,CAACA,WAAA,EAAA,CAAA;AAEN,IAAA,IAAI,IAAI,CAACb,UAAU,CAACc,UAAU,EAAE;MAC9B,IAAI,CAACd,UAAU,CAACc,UAAU,CAACC,WAAW,CAAC,IAAI,CAACf,UAAU,CAAA,CAAA;AACxD,KAAA;AACF,GAAA;AAEA,EAAA;IAAAgB,oBAAA,CAAAC,kBAAA,CAMA,iIAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"eui-progress.js","sources":["../../src/components/eui-progress.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { and, eq, or } from 'ember-truth-helpers';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport type { colorToClassMap, positionsToClassMap, sizeToClassMapping } from '../utils/css-mappings/eui-progress.ts';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\nexport interface EuiProgressSignature {\n Element: HTMLDivElement | HTMLProgressElement;\n Args: {\n max?: number;\n value?: number;\n size?: keyof typeof sizeToClassMapping;\n position?: keyof typeof positionsToClassMap;\n color?: keyof typeof colorToClassMap;\n labelClasses?: string;\n valueText?: string | boolean;\n label?: string;\n };\n Blocks: {\n label?: [];\n valueText?: [];\n };\n}\nconst EuiProgress: TemplateOnlyComponent<EuiProgressSignature> = template(`\n {{#if @max}}\n {{#if (or (has-block \"label\") (has-block \"valueText\") @valueText)}}\n <div\n class={{classNames\n (if (eq @size \"l\") \"euiProgress__data--l\")\n componentName=\"EuiProgressData\"\n color=(argOrDefault @color \"success\")\n }}\n >\n {{#if (has-block \"label\")}}\n <span class=\"euiProgress__label\">\n {{yield to=\"label\"}}\n </span>\n {{/if}}\n {{#if (or (has-block \"valueText\") @valueText)}}\n <span class=\"euiProgress__valueText {{@labelClasses}}\">\n {{#if (eq @valueText true)}}\n {{@value}}\n {{else}}\n {{yield to=\"valueText\"}}\n {{/if}}\n </span>\n {{/if}}\n </div>\n {{/if}}\n <progress\n class={{classNames\n \"euiProgress--native\"\n componentName=\"EuiProgress\"\n size=(argOrDefault @size \"m\")\n position=(argOrDefault @position \"static\")\n color=(argOrDefault @color \"success\")\n }}\n max={{@max}}\n value={{@value}}\n aria-hidden={{and\n (has-block \"label\")\n (or @valueText (has-block \"valueText\"))\n }}\n ...attributes\n ></progress>\n {{else}}\n <div\n class={{classNames\n \"euiProgress--indeterminate\"\n componentName=\"EuiProgress\"\n size=(argOrDefault @size \"m\")\n position=(argOrDefault @position \"static\")\n color=(argOrDefault @color \"success\")\n }}\n ...attributes\n ></div>\n {{/if}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default EuiProgress;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9iZXRvY2FudHU5My9vcGVuc291cmNlL2VtYmVyLWV1aS9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL2V1aS1wcm9ncmVzcy5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5kLGVxLCBvciB9IGZyb20gJ2VtYmVyLXRydXRoLWhlbHBlcnMnO1xuXG5pbXBvcnQgYXJnT3JEZWZhdWx0IGZyb20gJy4uL2hlbHBlcnMvYXJnLW9yLWRlZmF1bHQudHMnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnLi4vaGVscGVycy9jbGFzcy1uYW1lcy50cyc7XG5cbmltcG9ydCB0eXBlIHtcbiAgY29sb3JUb0NsYXNzTWFwLFxuICBwb3NpdGlvbnNUb0NsYXNzTWFwLFxuICBzaXplVG9DbGFzc01hcHBpbmd9IGZyb20gJy4uL3V0aWxzL2Nzcy1tYXBwaW5ncy9ldWktcHJvZ3Jlc3MudHMnO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZU9ubHlDb21wb25lbnQgfSBmcm9tICdAZW1iZXIvY29tcG9uZW50L3RlbXBsYXRlLW9ubHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV1aVByb2dyZXNzU2lnbmF0dXJlIHtcbiAgRWxlbWVudDogSFRNTERpdkVsZW1lbnQgfCBIVE1MUHJvZ3Jlc3NFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgbWF4PzogbnVtYmVyO1xuICAgIHZhbHVlPzogbnVtYmVyO1xuICAgIHNpemU_OiBrZXlvZiB0eXBlb2Ygc2l6ZVRvQ2xhc3NNYXBwaW5nO1xuICAgIHBvc2l0aW9uPzoga2V5b2YgdHlwZW9mIHBvc2l0aW9uc1RvQ2xhc3NNYXA7XG4gICAgY29sb3I_OiBrZXlvZiB0eXBlb2YgY29sb3JUb0NsYXNzTWFwO1xuICAgIGxhYmVsQ2xhc3Nlcz86IHN0cmluZztcbiAgICB2YWx1ZVRleHQ_OiBzdHJpbmcgfCBib29sZWFuO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICBsYWJlbD86IFtdO1xuICAgIHZhbHVlVGV4dD86IFtdO1xuICB9O1xufVxuXG5jb25zdCBFdWlQcm9ncmVzczogVGVtcGxhdGVPbmx5Q29tcG9uZW50PEV1aVByb2dyZXNzU2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAge3sjaWYgQG1heH19XG4gICAge3sjaWYgKG9yIChoYXMtYmxvY2sgXCJsYWJlbFwiKSAoaGFzLWJsb2NrIFwidmFsdWVUZXh0XCIpIEB2YWx1ZVRleHQpfX1cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9e3tjbGFzc05hbWVzXG4gICAgICAgICAgKGlmIChlcSBAc2l6ZSBcImxcIikgXCJldWlQcm9ncmVzc19fZGF0YS0tbFwiKVxuICAgICAgICAgIGNvbXBvbmVudE5hbWU9XCJFdWlQcm9ncmVzc0RhdGFcIlxuICAgICAgICAgIGNvbG9yPShhcmdPckRlZmF1bHQgQGNvbG9yIFwic3VjY2Vzc1wiKVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7eyNpZiAoaGFzLWJsb2NrIFwibGFiZWxcIil9fVxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXVpUHJvZ3Jlc3NfX2xhYmVsXCI-XG4gICAgICAgICAgICB7e3lpZWxkIHRvPVwibGFiZWxcIn19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICB7ey9pZn19XG4gICAgICAgIHt7I2lmIChvciAoaGFzLWJsb2NrIFwidmFsdWVUZXh0XCIpIEB2YWx1ZVRleHQpfX1cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImV1aVByb2dyZXNzX192YWx1ZVRleHQge3tAbGFiZWxDbGFzc2VzfX1cIj5cbiAgICAgICAgICAgIHt7I2lmIChlcSBAdmFsdWVUZXh0IHRydWUpfX1cbiAgICAgICAgICAgICAge3tAdmFsdWV9fVxuICAgICAgICAgICAge3tlbHNlfX1cbiAgICAgICAgICAgICAge3t5aWVsZCB0bz1cInZhbHVlVGV4dFwifX1cbiAgICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICA8L3NwYW4-XG4gICAgICAgIHt7L2lmfX1cbiAgICAgIDwvZGl2PlxuICAgIHt7L2lmfX1cbiAgICA8cHJvZ3Jlc3NcbiAgICAgIGNsYXNzPXt7Y2xhc3NOYW1lc1xuICAgICAgICBcImV1aVByb2dyZXNzLS1uYXRpdmVcIlxuICAgICAgICBjb21wb25lbnROYW1lPVwiRXVpUHJvZ3Jlc3NcIlxuICAgICAgICBzaXplPShhcmdPckRlZmF1bHQgQHNpemUgXCJtXCIpXG4gICAgICAgIHBvc2l0aW9uPShhcmdPckRlZmF1bHQgQHBvc2l0aW9uIFwic3RhdGljXCIpXG4gICAgICAgIGNvbG9yPShhcmdPckRlZmF1bHQgQGNvbG9yIFwic3VjY2Vzc1wiKVxuICAgICAgfX1cbiAgICAgIG1heD17e0BtYXh9fVxuICAgICAgdmFsdWU9e3tAdmFsdWV9fVxuICAgICAgYXJpYS1oaWRkZW49e3thbmRcbiAgICAgICAgKGhhcy1ibG9jayBcImxhYmVsXCIpXG4gICAgICAgIChvciBAdmFsdWVUZXh0IChoYXMtYmxvY2sgXCJ2YWx1ZVRleHRcIikpXG4gICAgICB9fVxuICAgICAgLi4uYXR0cmlidXRlc1xuICAgID48L3Byb2dyZXNzPlxuICB7e2Vsc2V9fVxuICAgIDxkaXZcbiAgICAgIGNsYXNzPXt7Y2xhc3NOYW1lc1xuICAgICAgICBcImV1aVByb2dyZXNzLS1pbmRldGVybWluYXRlXCJcbiAgICAgICAgY29tcG9uZW50TmFtZT1cIkV1aVByb2dyZXNzXCJcbiAgICAgICAgc2l6ZT0oYXJnT3JEZWZhdWx0IEBzaXplIFwibVwiKVxuICAgICAgICBwb3NpdGlvbj0oYXJnT3JEZWZhdWx0IEBwb3NpdGlvbiBcInN0YXRpY1wiKVxuICAgICAgICBjb2xvcj0oYXJnT3JEZWZhdWx0IEBjb2xvciBcInN1Y2Nlc3NcIilcbiAgICAgIH19XG4gICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgPjwvZGl2PlxuICB7ey9pZn19XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgRXVpUHJvZ3Jlc3M7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVMsR0FBRyxFQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsc0JBQXNCO0FBRWpELE9BQU8sa0JBQWtCLCtCQUErQjtBQUN4RCxPQUFPLGdCQUFnQiw0QkFBNEI7QUFFbkQsY0FDRSxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGtCQUFrQixRQUFPLHdDQUF3QztBQUNuRSxjQUFjLHFCQUFxQixRQUFRLGlDQUFpQztBQUU1RSxpQkFBaUI7SUFDZixTQUFTLGlCQUFpQjtJQUMxQjtRQUNFLE1BQU0sTUFBTTtRQUNaLFFBQVEsTUFBTTtRQUNkLG9CQUFvQjtRQUNwQix3QkFBd0I7UUFDeEIscUJBQXFCO1FBQ3JCLGVBQWUsTUFBTTtRQUNyQixZQUFZLE1BQU0sR0FBRyxPQUFPO1FBQzVCLFFBQVEsTUFBTTs7SUFFaEI7UUFDRTtRQUNBOzs7QUFJSixNQUFNLGFBQWEsc0JBQXNCLHdCQUF3QixTQUFVLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNEM0UsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBO0FBRVYsZUFBZSxZQUFZIn0"],"names":["EuiProgress","setComponentTemplate","precompileTemplate","strictMode","scope","or","classNames","eq","argOrDefault","and","templateOnly"],"mappings":";;;;;;;AA6BA,MAAMA,WAAmC,GAAAC,oBAAA,CAAwBC,kBAAA,CAsDjE,00CAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,YAAA;AAAAC,IAAAA,GAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"eui-progress.js","sources":["../../src/components/eui-progress.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { and, eq, or } from 'ember-truth-helpers';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport type { colorToClassMap, positionsToClassMap, sizeToClassMapping } from '../utils/css-mappings/eui-progress.ts';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\nexport interface EuiProgressSignature {\n Element: HTMLDivElement | HTMLProgressElement;\n Args: {\n max?: number;\n value?: number;\n size?: keyof typeof sizeToClassMapping;\n position?: keyof typeof positionsToClassMap;\n color?: keyof typeof colorToClassMap;\n labelClasses?: string;\n valueText?: string | boolean;\n label?: string;\n };\n Blocks: {\n label?: [];\n valueText?: [];\n };\n}\nconst EuiProgress: TemplateOnlyComponent<EuiProgressSignature> = template(`\n {{#if @max}}\n {{#if (or (has-block \"label\") (has-block \"valueText\") @valueText)}}\n <div\n class={{classNames\n (if (eq @size \"l\") \"euiProgress__data--l\")\n componentName=\"EuiProgressData\"\n color=(argOrDefault @color \"success\")\n }}\n >\n {{#if (has-block \"label\")}}\n <span class=\"euiProgress__label\">\n {{yield to=\"label\"}}\n </span>\n {{/if}}\n {{#if (or (has-block \"valueText\") @valueText)}}\n <span class=\"euiProgress__valueText {{@labelClasses}}\">\n {{#if (eq @valueText true)}}\n {{@value}}\n {{else}}\n {{yield to=\"valueText\"}}\n {{/if}}\n </span>\n {{/if}}\n </div>\n {{/if}}\n <progress\n class={{classNames\n \"euiProgress--native\"\n componentName=\"EuiProgress\"\n size=(argOrDefault @size \"m\")\n position=(argOrDefault @position \"static\")\n color=(argOrDefault @color \"success\")\n }}\n max={{@max}}\n value={{@value}}\n aria-hidden={{and\n (has-block \"label\")\n (or @valueText (has-block \"valueText\"))\n }}\n ...attributes\n ></progress>\n {{else}}\n <div\n class={{classNames\n \"euiProgress--indeterminate\"\n componentName=\"EuiProgress\"\n size=(argOrDefault @size \"m\")\n position=(argOrDefault @position \"static\")\n color=(argOrDefault @color \"success\")\n }}\n ...attributes\n ></div>\n {{/if}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default EuiProgress;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9iZXRvY2FudHU5My9wcnlzbWV4L2VtYmVyLWV1aS9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL2V1aS1wcm9ncmVzcy5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5kLGVxLCBvciB9IGZyb20gJ2VtYmVyLXRydXRoLWhlbHBlcnMnO1xuXG5pbXBvcnQgYXJnT3JEZWZhdWx0IGZyb20gJy4uL2hlbHBlcnMvYXJnLW9yLWRlZmF1bHQudHMnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnLi4vaGVscGVycy9jbGFzcy1uYW1lcy50cyc7XG5cbmltcG9ydCB0eXBlIHtcbiAgY29sb3JUb0NsYXNzTWFwLFxuICBwb3NpdGlvbnNUb0NsYXNzTWFwLFxuICBzaXplVG9DbGFzc01hcHBpbmd9IGZyb20gJy4uL3V0aWxzL2Nzcy1tYXBwaW5ncy9ldWktcHJvZ3Jlc3MudHMnO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZU9ubHlDb21wb25lbnQgfSBmcm9tICdAZW1iZXIvY29tcG9uZW50L3RlbXBsYXRlLW9ubHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV1aVByb2dyZXNzU2lnbmF0dXJlIHtcbiAgRWxlbWVudDogSFRNTERpdkVsZW1lbnQgfCBIVE1MUHJvZ3Jlc3NFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgbWF4PzogbnVtYmVyO1xuICAgIHZhbHVlPzogbnVtYmVyO1xuICAgIHNpemU_OiBrZXlvZiB0eXBlb2Ygc2l6ZVRvQ2xhc3NNYXBwaW5nO1xuICAgIHBvc2l0aW9uPzoga2V5b2YgdHlwZW9mIHBvc2l0aW9uc1RvQ2xhc3NNYXA7XG4gICAgY29sb3I_OiBrZXlvZiB0eXBlb2YgY29sb3JUb0NsYXNzTWFwO1xuICAgIGxhYmVsQ2xhc3Nlcz86IHN0cmluZztcbiAgICB2YWx1ZVRleHQ_OiBzdHJpbmcgfCBib29sZWFuO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICBsYWJlbD86IFtdO1xuICAgIHZhbHVlVGV4dD86IFtdO1xuICB9O1xufVxuXG5jb25zdCBFdWlQcm9ncmVzczogVGVtcGxhdGVPbmx5Q29tcG9uZW50PEV1aVByb2dyZXNzU2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAge3sjaWYgQG1heH19XG4gICAge3sjaWYgKG9yIChoYXMtYmxvY2sgXCJsYWJlbFwiKSAoaGFzLWJsb2NrIFwidmFsdWVUZXh0XCIpIEB2YWx1ZVRleHQpfX1cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9e3tjbGFzc05hbWVzXG4gICAgICAgICAgKGlmIChlcSBAc2l6ZSBcImxcIikgXCJldWlQcm9ncmVzc19fZGF0YS0tbFwiKVxuICAgICAgICAgIGNvbXBvbmVudE5hbWU9XCJFdWlQcm9ncmVzc0RhdGFcIlxuICAgICAgICAgIGNvbG9yPShhcmdPckRlZmF1bHQgQGNvbG9yIFwic3VjY2Vzc1wiKVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7eyNpZiAoaGFzLWJsb2NrIFwibGFiZWxcIil9fVxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXVpUHJvZ3Jlc3NfX2xhYmVsXCI-XG4gICAgICAgICAgICB7e3lpZWxkIHRvPVwibGFiZWxcIn19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICB7ey9pZn19XG4gICAgICAgIHt7I2lmIChvciAoaGFzLWJsb2NrIFwidmFsdWVUZXh0XCIpIEB2YWx1ZVRleHQpfX1cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImV1aVByb2dyZXNzX192YWx1ZVRleHQge3tAbGFiZWxDbGFzc2VzfX1cIj5cbiAgICAgICAgICAgIHt7I2lmIChlcSBAdmFsdWVUZXh0IHRydWUpfX1cbiAgICAgICAgICAgICAge3tAdmFsdWV9fVxuICAgICAgICAgICAge3tlbHNlfX1cbiAgICAgICAgICAgICAge3t5aWVsZCB0bz1cInZhbHVlVGV4dFwifX1cbiAgICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICA8L3NwYW4-XG4gICAgICAgIHt7L2lmfX1cbiAgICAgIDwvZGl2PlxuICAgIHt7L2lmfX1cbiAgICA8cHJvZ3Jlc3NcbiAgICAgIGNsYXNzPXt7Y2xhc3NOYW1lc1xuICAgICAgICBcImV1aVByb2dyZXNzLS1uYXRpdmVcIlxuICAgICAgICBjb21wb25lbnROYW1lPVwiRXVpUHJvZ3Jlc3NcIlxuICAgICAgICBzaXplPShhcmdPckRlZmF1bHQgQHNpemUgXCJtXCIpXG4gICAgICAgIHBvc2l0aW9uPShhcmdPckRlZmF1bHQgQHBvc2l0aW9uIFwic3RhdGljXCIpXG4gICAgICAgIGNvbG9yPShhcmdPckRlZmF1bHQgQGNvbG9yIFwic3VjY2Vzc1wiKVxuICAgICAgfX1cbiAgICAgIG1heD17e0BtYXh9fVxuICAgICAgdmFsdWU9e3tAdmFsdWV9fVxuICAgICAgYXJpYS1oaWRkZW49e3thbmRcbiAgICAgICAgKGhhcy1ibG9jayBcImxhYmVsXCIpXG4gICAgICAgIChvciBAdmFsdWVUZXh0IChoYXMtYmxvY2sgXCJ2YWx1ZVRleHRcIikpXG4gICAgICB9fVxuICAgICAgLi4uYXR0cmlidXRlc1xuICAgID48L3Byb2dyZXNzPlxuICB7e2Vsc2V9fVxuICAgIDxkaXZcbiAgICAgIGNsYXNzPXt7Y2xhc3NOYW1lc1xuICAgICAgICBcImV1aVByb2dyZXNzLS1pbmRldGVybWluYXRlXCJcbiAgICAgICAgY29tcG9uZW50TmFtZT1cIkV1aVByb2dyZXNzXCJcbiAgICAgICAgc2l6ZT0oYXJnT3JEZWZhdWx0IEBzaXplIFwibVwiKVxuICAgICAgICBwb3NpdGlvbj0oYXJnT3JEZWZhdWx0IEBwb3NpdGlvbiBcInN0YXRpY1wiKVxuICAgICAgICBjb2xvcj0oYXJnT3JEZWZhdWx0IEBjb2xvciBcInN1Y2Nlc3NcIilcbiAgICAgIH19XG4gICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgPjwvZGl2PlxuICB7ey9pZn19XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgRXVpUHJvZ3Jlc3M7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVMsR0FBRyxFQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsc0JBQXNCO0FBRWpELE9BQU8sa0JBQWtCLCtCQUErQjtBQUN4RCxPQUFPLGdCQUFnQiw0QkFBNEI7QUFFbkQsY0FDRSxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGtCQUFrQixRQUFPLHdDQUF3QztBQUNuRSxjQUFjLHFCQUFxQixRQUFRLGlDQUFpQztBQUU1RSxpQkFBaUI7SUFDZixTQUFTLGlCQUFpQjtJQUMxQjtRQUNFLE1BQU0sTUFBTTtRQUNaLFFBQVEsTUFBTTtRQUNkLG9CQUFvQjtRQUNwQix3QkFBd0I7UUFDeEIscUJBQXFCO1FBQ3JCLGVBQWUsTUFBTTtRQUNyQixZQUFZLE1BQU0sR0FBRyxPQUFPO1FBQzVCLFFBQVEsTUFBTTs7SUFFaEI7UUFDRTtRQUNBOzs7QUFJSixNQUFNLGFBQWEsc0JBQXNCLHdCQUF3QixTQUFVLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNEM0UsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBO0FBRVYsZUFBZSxZQUFZIn0"],"names":["EuiProgress","setComponentTemplate","precompileTemplate","strictMode","scope","or","classNames","eq","argOrDefault","and","templateOnly"],"mappings":";;;;;;;AA6BA,MAAMA,WAAmC,GAAAC,oBAAA,CAAwBC,kBAAA,CAsDjE,00CAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,YAAA;AAAAC,IAAAA,GAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}