@ember-eui/core 12.0.10 → 12.0.12

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 (104) hide show
  1. package/declarations/components/eui-accordion.d.ts +3 -2
  2. package/declarations/components/eui-accordion.d.ts.map +1 -1
  3. package/declarations/components/eui-auto-sizer.d.ts.map +1 -1
  4. package/declarations/components/eui-card.d.ts +1 -0
  5. package/declarations/components/eui-card.d.ts.map +1 -1
  6. package/declarations/components/eui-code-block.d.ts +1 -0
  7. package/declarations/components/eui-code-block.d.ts.map +1 -1
  8. package/declarations/components/eui-code.d.ts +2 -2
  9. package/declarations/components/eui-code.d.ts.map +1 -1
  10. package/declarations/components/eui-context-menu-item.d.ts +1 -0
  11. package/declarations/components/eui-context-menu-item.d.ts.map +1 -1
  12. package/declarations/components/eui-dual-range.d.ts +1 -0
  13. package/declarations/components/eui-dual-range.d.ts.map +1 -1
  14. package/declarations/components/eui-field-search.d.ts +1 -0
  15. package/declarations/components/eui-field-search.d.ts.map +1 -1
  16. package/declarations/components/eui-file-picker.d.ts +1 -0
  17. package/declarations/components/eui-file-picker.d.ts.map +1 -1
  18. package/declarations/components/eui-flyout.d.ts +1 -1
  19. package/declarations/components/eui-flyout.d.ts.map +1 -1
  20. package/declarations/components/eui-header-section-item-button.d.ts +1 -0
  21. package/declarations/components/eui-header-section-item-button.d.ts.map +1 -1
  22. package/declarations/components/eui-inner-text.d.ts.map +1 -1
  23. package/declarations/components/eui-input-popover.d.ts +1 -0
  24. package/declarations/components/eui-input-popover.d.ts.map +1 -1
  25. package/declarations/components/eui-markdown-editor-footer.d.ts.map +1 -1
  26. package/declarations/components/eui-markdown-editor-toolbar.d.ts.map +1 -1
  27. package/declarations/components/eui-markdown-editor.d.ts +1 -0
  28. package/declarations/components/eui-markdown-editor.d.ts.map +1 -1
  29. package/declarations/components/eui-overlay-mask.d.ts +1 -0
  30. package/declarations/components/eui-overlay-mask.d.ts.map +1 -1
  31. package/declarations/components/eui-popover.d.ts.map +1 -1
  32. package/declarations/components/eui-portal.d.ts +1 -1
  33. package/declarations/components/eui-portal.d.ts.map +1 -1
  34. package/declarations/components/eui-range-ticks.d.ts +2 -1
  35. package/declarations/components/eui-range-ticks.d.ts.map +1 -1
  36. package/declarations/components/eui-range-track.d.ts +2 -1
  37. package/declarations/components/eui-range-track.d.ts.map +1 -1
  38. package/declarations/components/eui-range.d.ts +2 -2
  39. package/declarations/components/eui-range.d.ts.map +1 -1
  40. package/declarations/components/eui-tool-tip-popover.d.ts.map +1 -1
  41. package/declarations/components/eui-tool-tip.d.ts +1 -1
  42. package/declarations/components/eui-tool-tip.d.ts.map +1 -1
  43. package/declarations/components/eui-wrapping-popover.d.ts.map +1 -1
  44. package/declarations/modifiers/outside-click-detector.d.ts +3 -3
  45. package/declarations/modifiers/outside-click-detector.d.ts.map +1 -1
  46. package/declarations/modifiers/resize-observer.d.ts +4 -4
  47. package/declarations/modifiers/resize-observer.d.ts.map +1 -1
  48. package/dist/components/eui-accordion.js +13 -10
  49. package/dist/components/eui-accordion.js.map +1 -1
  50. package/dist/components/eui-auto-sizer.js +4 -0
  51. package/dist/components/eui-auto-sizer.js.map +1 -1
  52. package/dist/components/eui-card.js +4 -0
  53. package/dist/components/eui-card.js.map +1 -1
  54. package/dist/components/eui-code-block.js +7 -0
  55. package/dist/components/eui-code-block.js.map +1 -1
  56. package/dist/components/eui-code.js +3 -1
  57. package/dist/components/eui-code.js.map +1 -1
  58. package/dist/components/eui-collapsible-nav-group.js +2 -2
  59. package/dist/components/eui-collapsible-nav-group.js.map +1 -1
  60. package/dist/components/eui-context-menu-item.js +4 -0
  61. package/dist/components/eui-context-menu-item.js.map +1 -1
  62. package/dist/components/eui-dual-range.js +4 -0
  63. package/dist/components/eui-dual-range.js.map +1 -1
  64. package/dist/components/eui-field-search.js +4 -0
  65. package/dist/components/eui-field-search.js.map +1 -1
  66. package/dist/components/eui-file-picker.js +4 -0
  67. package/dist/components/eui-file-picker.js.map +1 -1
  68. package/dist/components/eui-flyout.js.map +1 -1
  69. package/dist/components/eui-header-section-item-button.js +5 -0
  70. package/dist/components/eui-header-section-item-button.js.map +1 -1
  71. package/dist/components/eui-inner-text.js +1 -0
  72. package/dist/components/eui-inner-text.js.map +1 -1
  73. package/dist/components/eui-input-popover.js +5 -0
  74. package/dist/components/eui-input-popover.js.map +1 -1
  75. package/dist/components/eui-markdown-editor-footer.js +14 -5
  76. package/dist/components/eui-markdown-editor-footer.js.map +1 -1
  77. package/dist/components/eui-markdown-editor-toolbar.js +4 -2
  78. package/dist/components/eui-markdown-editor-toolbar.js.map +1 -1
  79. package/dist/components/eui-markdown-editor.js +6 -0
  80. package/dist/components/eui-markdown-editor.js.map +1 -1
  81. package/dist/components/eui-notification-event-messages.js +2 -2
  82. package/dist/components/eui-notification-event-messages.js.map +1 -1
  83. package/dist/components/eui-overlay-mask.js +4 -0
  84. package/dist/components/eui-overlay-mask.js.map +1 -1
  85. package/dist/components/eui-popover.js +3 -0
  86. package/dist/components/eui-popover.js.map +1 -1
  87. package/dist/components/eui-portal.js +2 -1
  88. package/dist/components/eui-portal.js.map +1 -1
  89. package/dist/components/eui-range-ticks.js +4 -1
  90. package/dist/components/eui-range-ticks.js.map +1 -1
  91. package/dist/components/eui-range-track.js +4 -0
  92. package/dist/components/eui-range-track.js.map +1 -1
  93. package/dist/components/eui-range.js.map +1 -1
  94. package/dist/components/eui-tool-tip-popover.js +1 -0
  95. package/dist/components/eui-tool-tip-popover.js.map +1 -1
  96. package/dist/components/eui-tool-tip.js +8 -5
  97. package/dist/components/eui-tool-tip.js.map +1 -1
  98. package/dist/components/eui-wrapping-popover.js +2 -0
  99. package/dist/components/eui-wrapping-popover.js.map +1 -1
  100. package/dist/modifiers/outside-click-detector.js +6 -3
  101. package/dist/modifiers/outside-click-detector.js.map +1 -1
  102. package/dist/modifiers/resize-observer.js +10 -3
  103. package/dist/modifiers/resize-observer.js.map +1 -1
  104. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"eui-tool-tip.js","sources":["../../src/components/eui-tool-tip.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-insert';\nimport { cancel, later, next, scheduleOnce } from '@ember/runloop';\n\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, or } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport { keys } from '../utils/keys.ts';\nimport { findPopoverPosition } from '../utils/popover/index.ts';\nimport EuiPortal from './eui-portal.gts';\nimport EuiToolTipPopover from './eui-tool-tip-popover.gts';\n\nimport type { EuiTooltipPopoverSignature } from './eui-tool-tip-popover';\n\nexport type ToolTipPositions = 'top' | 'right' | 'bottom' | 'left';\n\nexport type ToolTipDelay = 'regular' | 'long';\n\nconst delayToMsMap: { [key in ToolTipDelay]: number } = {\n regular: 250,\n long: 250 * 5\n};\n\ninterface ToolTipStyles {\n top: string;\n left: string | 'auto';\n right?: string | 'auto';\n opacity?: string;\n visibility?: 'hidden';\n display?: 'inlineBlock';\n}\n\nconst displayToClassNameMap = {\n inlineBlock: undefined,\n block: 'euiToolTipAnchor--displayBlock'\n};\n\nconst DEFAULT_TOOLTIP_STYLES: ToolTipStyles = {\n // position the tooltip content near the top-left\n // corner of the window so it can't create scrollbars\n // 50,50 because who knows what negative margins, padding, etc\n top: '50px',\n left: '50px',\n // just in case, avoid any potential flicker by hiding\n // the tooltip before it is positioned\n opacity: '0',\n // prevent accidental mouse interaction while positioning\n visibility: 'hidden',\n display: 'inlineBlock'\n};\n\nexport type EuiTooltipArgs = {\n /**\n * Passes onto the the trigger.\n */\n anchorClassName?: string;\n /**\n * Passes onto the tooltip itself, not the trigger.\n */\n className?: string;\n /**\n * The main content of your tooltip.\n */\n content?: string;\n /**\n * Common display alternatives for the anchor wrapper\n */\n display?: keyof typeof displayToClassNameMap;\n /**\n * Delay before showing tooltip. Good for repeatable items.\n */\n delay?: ToolTipDelay;\n /**\n * An optional title for your tooltip.\n */\n title?: string;\n /**\n * Unless you provide one, this will be randomly generated.\n */\n id?: string;\n /**\n * Suggested position. If there is not enough room for it this will be changed.\n */\n position?: ToolTipPositions;\n\n attachTo?: undefined | HTMLElement | string | null;\n\n isShown?: boolean | undefined;\n\n /**\n * If supplied, called when mouse movement causes the tool tip to be\n * hidden.\n */\n onMouseOut?: (event: MouseEvent) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n\n hasTitle?: boolean;\n};\n\nexport interface EuiToolTipSignature {\n Element: EuiTooltipPopoverSignature['Element'];\n Args: EuiTooltipArgs;\n Blocks: {\n default?: [id: string];\n title?: [];\n content?: [];\n anchor?: [id: string];\n };\n}\n\nexport default class EuiToolTip extends Component<EuiToolTipSignature> {\n anchor: null | HTMLElement = null;\n popover: null | HTMLElement = null;\n\n @argOrDefaultDecorator('top') position!: ToolTipPositions;\n @argOrDefaultDecorator('regular') delay!: ToolTipDelay;\n\n //STATE\n @tracked visible = false;\n @tracked hasFocus = false;\n @tracked calculatedPosition: ToolTipPositions = this.position;\n @tracked toolTipStyles: ToolTipStyles = DEFAULT_TOOLTIP_STYLES;\n @tracked arrowStyles: { left?: string; top?: string } = {};\n @tracked id: string = this.args.id || guidFor({});\n @tracked _attachTo: undefined | HTMLElement | string | null = null;\n\n private timeoutId?: ReturnType<typeof later>;\n\n @action\n updateAttachTo(): void {\n if (!this.args.attachTo && this._attachTo) {\n this.removeAttachToHandlers();\n this._attachTo = null;\n\n return;\n }\n\n if (this.args.attachTo && this.args.attachTo !== this._attachTo) {\n next(() => {\n this.removeAttachToHandlers();\n this._attachTo = this.args.attachTo;\n this.setupAttachToHandlers();\n });\n }\n }\n\n @action\n setupAttachToHandlers(): void {\n if (this._attachTo && this.attachTo) {\n this.attachTo.addEventListener('mousemove', this.showToolTip);\n this.attachTo.addEventListener('focusin', this.onFocus);\n //@ts-expect-error\n this.attachTo.addEventListener('mouseout', this.onMouseOut);\n this.attachTo.addEventListener('focusout', this.onBlur);\n this.positionToolTip();\n }\n }\n\n @action\n removeAttachToHandlers(): void {\n if (this._attachTo && this.attachTo) {\n this.attachTo.removeEventListener('mousemove', this.showToolTip);\n this.attachTo.removeEventListener('focusin', this.onFocus);\n //@ts-expect-error\n this.attachTo.removeEventListener('mouseout', this.onMouseOut);\n this.attachTo.removeEventListener('focusout', this.onBlur);\n }\n }\n\n @action\n clearAnimationTimeout(): void {\n if (this.timeoutId) {\n cancel(this.timeoutId);\n this.timeoutId = undefined;\n }\n }\n\n @action\n visibleDidUpdate(value: boolean): void {\n if (this.visible === false && value === true) {\n requestAnimationFrame(this.testAnchor);\n }\n }\n\n willDestroy(): void {\n super.willDestroy();\n this.clearAnimationTimeout();\n this.removeAttachToHandlers();\n }\n\n @action\n testAnchor(): void {\n // when the tooltip is visible, this checks if the anchor is still part of document\n // this fixes when the react root is removed from the dom without unmounting\n // https://github.com/elastic/eui/issues/1105\n if (document.body.contains(this._anchor) === false) {\n // the anchor is no longer part of `document`\n this.hideToolTip();\n } else {\n if (this.visible) {\n // if still visible, keep checking\n requestAnimationFrame(this.testAnchor);\n }\n }\n }\n\n @action\n didInsertAnchor(ref: HTMLElement): void {\n this.anchor = ref;\n }\n\n @action\n setPopoverRef(ref: HTMLElement | null): void {\n this.popover = ref;\n\n // if the popover has been unmounted, clear\n // any previous knowledge about its size\n if (ref === null) {\n this.toolTipStyles = DEFAULT_TOOLTIP_STYLES;\n this.arrowStyles = {};\n } else {\n this.positionToolTip();\n }\n }\n\n @action\n showToolTip(): void {\n if (!this.timeoutId && !this.visible) {\n const fn = (): void => {\n this.visible = true;\n };\n\n this.timeoutId = later(\n this,\n () => {\n scheduleOnce('afterRender', this, fn);\n },\n delayToMsMap[this.delay]\n );\n }\n }\n\n @cached\n get attachTo(): Element | null | undefined {\n if (typeof this._attachTo === 'string') {\n return document.querySelector(this._attachTo);\n } else {\n return this._attachTo;\n }\n }\n\n get _anchor(): Element | null {\n return this.attachTo || this.anchor;\n }\n\n @action\n positionToolTip(): void {\n const requestedPosition = this.position;\n\n if (!this._anchor || !this.popover) {\n return;\n }\n\n const { position, left, top, arrow } = findPopoverPosition({\n anchor: this._anchor as HTMLElement,\n popover: this.popover,\n position: requestedPosition,\n offset: 16, // offset popover 16px from the anchor\n arrowConfig: {\n arrowWidth: 12,\n arrowBuffer: 4\n }\n });\n\n const windowWidth =\n document.documentElement.clientWidth || window.innerWidth;\n const useRightValue = windowWidth / 2 < left;\n\n const toolTipStyles: ToolTipStyles = {\n top: `${top}px`,\n left: useRightValue ? 'auto' : `${left}px`,\n right: useRightValue\n ? `${windowWidth - left - this.popover.offsetWidth}px`\n : 'auto'\n };\n\n this.visible = true;\n this.calculatedPosition = position;\n this.toolTipStyles = toolTipStyles;\n\n if (arrow) {\n this.arrowStyles = {\n left: `${arrow.left}px`,\n top: `${arrow?.top}px`\n };\n }\n }\n\n @action\n hideToolTip(): void {\n if (this.args.isShown === true) {\n return;\n }\n\n this.clearAnimationTimeout();\n\n const fn = (): void => {\n if (!this.isDestroying || !this.isDestroyed) {\n this.visible = false;\n }\n };\n\n scheduleOnce('afterRender', this, fn);\n }\n\n @action\n hasFocusMouseMoveListener(): void {\n this.hideToolTip();\n window.removeEventListener('mousemove', this.hasFocusMouseMoveListener);\n }\n\n @action\n onKeyUp(event: KeyboardEvent): void {\n if (event.key === keys.TAB) {\n window.addEventListener('mousemove', this.hasFocusMouseMoveListener);\n }\n }\n\n @action\n onFocus(): void {\n this.hasFocus = true;\n this.showToolTip();\n }\n\n @action\n onBlur(): void {\n this.hasFocus = false;\n this.hideToolTip();\n }\n\n @action\n onMouseOut(event: MouseEvent): void {\n // Prevent mousing over children from hiding the tooltip by testing for whether the mouse has\n // left the anchor for a non-child.\n if (\n this._anchor === event.relatedTarget ||\n (this._anchor != null &&\n !this._anchor.contains(event.relatedTarget as Node))\n ) {\n if (!this.hasFocus) {\n this.hideToolTip();\n }\n }\n\n if (this.args.onMouseOut) {\n this.args.onMouseOut(event);\n }\n }\n\n <template>\n {{#let\n (has-block \"content\") (has-block \"title\") (has-block \"anchor\")\n as |hasContentBlock hasTitleBlock hasAnchorBlock|\n }}\n {{#if @attachTo}}\n <span\n {{didInsert this.updateAttachTo}}\n {{didUpdate this.updateAttachTo @attachTo}}\n {{didUpdate\n (if (eq @isShown true) this.onFocus this.onBlur)\n @isShown\n }}\n {{didInsert (if (eq @isShown true) this.onFocus this.onBlur)}}\n ></span>\n {{else}}\n <span\n role=\"tooltip\"\n class={{classNames\n \"euiToolTipAnchor\"\n (if (eq @display \"block\") \"euiToolTipAnchor--displayBlock\")\n @anchorClassName\n }}\n {{didInsert this.didInsertAnchor}}\n {{on \"mouseover\" this.showToolTip}}\n {{on \"focusin\" this.onFocus}}\n {{on \"focusout\" this.onBlur}}\n {{on \"mouseout\" this.onMouseOut}}\n {{didUpdate\n (if (eq @isShown true) this.onFocus this.onBlur)\n @isShown\n }}\n {{didInsert (if (eq @isShown true) this.onFocus this.onBlur)}}\n >\n {{#if hasAnchorBlock}}\n {{yield this.id to=\"anchor\"}}\n {{else}}\n {{yield this.id}}\n {{/if}}\n </span>\n {{/if}}\n {{#if\n (and this.visible (or @title @content hasContentBlock hasTitleBlock))\n }}\n <EuiPortal>\n <EuiToolTipPopover\n class={{classNames\n \"euiToolTip\"\n @className\n componentName=\"EuiToolTip\"\n position=this.calculatedPosition\n }}\n @positionToolTip={{this.positionToolTip}}\n @popoverRef={{this.setPopoverRef}}\n id={{this.id}}\n @hasTitle={{if\n (and (argOrDefault @hasTitle true) (or hasTitleBlock @title))\n true\n }}\n role=\"tooltip\"\n ...attributes\n {{style this.toolTipStyles}}\n >\n <:title>\n {{#if hasTitleBlock}}\n {{yield to=\"title\"}}\n {{else}}\n {{@title}}\n {{/if}}\n </:title>\n <:content>\n <div class=\"euiToolTip__arrow\" {{style this.arrowStyles}}></div>\n <div {{resizeObserver onResize=this.positionToolTip}}>\n {{#if hasContentBlock}}\n {{yield to=\"content\"}}\n {{else}}\n {{@content}}\n {{/if}}\n </div>\n </:content>\n </EuiToolTipPopover>\n </EuiPortal>\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["delayToMsMap","regular","long","DEFAULT_TOOLTIP_STYLES","top","left","opacity","visibility","display","EuiToolTip","Component","anchor","popover","g","prototype","argOrDefaultDecorator","i","void 0","tracked","position","args","id","guidFor","timeoutId","updateAttachTo","attachTo","_attachTo","removeAttachToHandlers","next","setupAttachToHandlers","n","action","addEventListener","showToolTip","onFocus","onMouseOut","onBlur","positionToolTip","removeEventListener","clearAnimationTimeout","cancel","undefined","visibleDidUpdate","value","visible","requestAnimationFrame","testAnchor","willDestroy","document","body","contains","_anchor","hideToolTip","didInsertAnchor","ref","setPopoverRef","toolTipStyles","arrowStyles","fn","later","scheduleOnce","delay","querySelector","cached","requestedPosition","arrow","findPopoverPosition","offset","arrowConfig","arrowWidth","arrowBuffer","windowWidth","documentElement","clientWidth","window","innerWidth","useRightValue","right","offsetWidth","calculatedPosition","isShown","isDestroying","isDestroyed","hasFocusMouseMoveListener","onKeyUp","event","key","keys","TAB","hasFocus","relatedTarget","setComponentTemplate","precompileTemplate","strictMode","scope","didInsert","didUpdate","eq","classNames","on","and","or","EuiPortal","EuiToolTipPopover","argOrDefault","style","resizeObserver"],"mappings":"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"}
1
+ {"version":3,"file":"eui-tool-tip.js","sources":["../../src/components/eui-tool-tip.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-insert';\nimport { cancel, later, next, scheduleOnce } from '@ember/runloop';\n\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, or } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport { keys } from '../utils/keys.ts';\nimport { findPopoverPosition } from '../utils/popover/index.ts';\nimport EuiPortal from './eui-portal.gts';\nimport EuiToolTipPopover from './eui-tool-tip-popover.gts';\n\nimport type { EuiTooltipPopoverSignature } from './eui-tool-tip-popover';\n\nexport type ToolTipPositions = 'top' | 'right' | 'bottom' | 'left';\n\nexport type ToolTipDelay = 'regular' | 'long';\n\nconst delayToMsMap: { [key in ToolTipDelay]: number } = {\n regular: 250,\n long: 250 * 5\n};\n\ninterface ToolTipStyles {\n top: string;\n left: string | 'auto';\n right?: string | 'auto';\n opacity?: string;\n visibility?: 'hidden';\n display?: 'inlineBlock';\n}\n\nconst displayToClassNameMap = {\n inlineBlock: undefined,\n block: 'euiToolTipAnchor--displayBlock'\n};\n\nconst DEFAULT_TOOLTIP_STYLES: ToolTipStyles = {\n // position the tooltip content near the top-left\n // corner of the window so it can't create scrollbars\n // 50,50 because who knows what negative margins, padding, etc\n top: '50px',\n left: '50px',\n // just in case, avoid any potential flicker by hiding\n // the tooltip before it is positioned\n opacity: '0',\n // prevent accidental mouse interaction while positioning\n visibility: 'hidden',\n display: 'inlineBlock'\n};\n\nexport type EuiTooltipArgs = {\n /**\n * Passes onto the the trigger.\n */\n anchorClassName?: string;\n /**\n * Passes onto the tooltip itself, not the trigger.\n */\n className?: string;\n /**\n * The main content of your tooltip.\n */\n content?: string;\n /**\n * Common display alternatives for the anchor wrapper\n */\n display?: keyof typeof displayToClassNameMap;\n /**\n * Delay before showing tooltip. Good for repeatable items.\n */\n delay?: ToolTipDelay;\n /**\n * An optional title for your tooltip.\n */\n title?: string;\n /**\n * Unless you provide one, this will be randomly generated.\n */\n id?: string;\n /**\n * Suggested position. If there is not enough room for it this will be changed.\n */\n position?: ToolTipPositions;\n\n attachTo?: undefined | HTMLElement | string | null;\n\n isShown?: boolean | undefined;\n\n /**\n * If supplied, called when mouse movement causes the tool tip to be\n * hidden.\n */\n onMouseOut?: (event: MouseEvent) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n\n hasTitle?: boolean;\n};\n\nexport interface EuiToolTipSignature {\n Element: EuiTooltipPopoverSignature['Element'];\n Args: EuiTooltipArgs;\n Blocks: {\n default?: [id: string];\n title?: [];\n content?: [];\n anchor?: [id: string];\n };\n}\n\nexport default class EuiToolTip extends Component<EuiToolTipSignature> {\n anchor: null | HTMLElement = null;\n popover: null | HTMLElement = null;\n\n @argOrDefaultDecorator('top') position!: ToolTipPositions;\n @argOrDefaultDecorator('regular') delay!: ToolTipDelay;\n\n //STATE\n @tracked visible = false;\n @tracked hasFocus = false;\n @tracked calculatedPosition: ToolTipPositions = this.position;\n @tracked toolTipStyles: ToolTipStyles = DEFAULT_TOOLTIP_STYLES;\n @tracked arrowStyles: { left?: string; top?: string } = {};\n @tracked id: string = this.args.id || guidFor({});\n @tracked _attachTo: undefined | HTMLElement | string | null = null;\n\n private timeoutId?: ReturnType<typeof later>;\n\n @action\n updateAttachTo(): void {\n if (!this.args.attachTo && this._attachTo) {\n this.removeAttachToHandlers();\n this._attachTo = null;\n\n return;\n }\n\n if (this.args.attachTo && this.args.attachTo !== this._attachTo) {\n next(() => {\n this.removeAttachToHandlers();\n this._attachTo = this.args.attachTo;\n this.setupAttachToHandlers();\n });\n }\n }\n\n @action\n setupAttachToHandlers(): void {\n if (this._attachTo && this.attachTo) {\n this.attachTo.addEventListener('mousemove', this.showToolTip);\n this.attachTo.addEventListener('focusin', this.onFocus);\n //@ts-expect-error\n this.attachTo.addEventListener('mouseout', this.onMouseOut);\n this.attachTo.addEventListener('focusout', this.onBlur);\n this.positionToolTip();\n }\n }\n\n @action\n removeAttachToHandlers(): void {\n if (this._attachTo && this.attachTo) {\n this.attachTo.removeEventListener('mousemove', this.showToolTip);\n this.attachTo.removeEventListener('focusin', this.onFocus);\n //@ts-expect-error\n this.attachTo.removeEventListener('mouseout', this.onMouseOut);\n this.attachTo.removeEventListener('focusout', this.onBlur);\n }\n }\n\n @action\n clearAnimationTimeout(): void {\n if (this.timeoutId) {\n cancel(this.timeoutId);\n this.timeoutId = undefined;\n }\n }\n\n @action\n visibleDidUpdate(value: boolean): void {\n if (this.visible === false && value === true) {\n requestAnimationFrame(this.testAnchor);\n }\n }\n\n @action\n testAnchor(): void {\n // when the tooltip is visible, this checks if the anchor is still part of document\n // this fixes when the react root is removed from the dom without unmounting\n // https://github.com/elastic/eui/issues/1105\n if (document.body.contains(this._anchor) === false) {\n // the anchor is no longer part of `document`\n this.hideToolTip();\n } else {\n if (this.visible) {\n // if still visible, keep checking\n requestAnimationFrame(this.testAnchor);\n }\n }\n }\n\n @action\n didInsertAnchor(ref: HTMLElement): void {\n this.anchor = ref;\n }\n\n @action\n setPopoverRef(ref: HTMLElement | null): void {\n this.popover = ref;\n\n // if the popover has been unmounted, clear\n // any previous knowledge about its size\n if (ref === null) {\n this.toolTipStyles = DEFAULT_TOOLTIP_STYLES;\n this.arrowStyles = {};\n } else {\n this.positionToolTip();\n }\n }\n\n @action\n showToolTip(): void {\n if (!this.timeoutId && !this.visible) {\n const fn = (): void => {\n this.visible = true;\n };\n\n this.timeoutId = later(\n this,\n () => {\n scheduleOnce('afterRender', this, fn);\n },\n delayToMsMap[this.delay]\n );\n }\n }\n\n @cached\n get attachTo(): Element | null | undefined {\n if (typeof this._attachTo === 'string') {\n return document.querySelector(this._attachTo);\n } else {\n return this._attachTo;\n }\n }\n\n get _anchor(): Element | null {\n return this.attachTo || this.anchor;\n }\n\n @action\n positionToolTip(): void {\n const requestedPosition = this.position;\n\n if (!this._anchor || !this.popover) {\n return;\n }\n\n const { position, left, top, arrow } = findPopoverPosition({\n anchor: this._anchor as HTMLElement,\n popover: this.popover,\n position: requestedPosition,\n offset: 16, // offset popover 16px from the anchor\n arrowConfig: {\n arrowWidth: 12,\n arrowBuffer: 4\n }\n });\n\n const windowWidth =\n document.documentElement.clientWidth || window.innerWidth;\n const useRightValue = windowWidth / 2 < left;\n\n const toolTipStyles: ToolTipStyles = {\n top: `${top}px`,\n left: useRightValue ? 'auto' : `${left}px`,\n right: useRightValue\n ? `${windowWidth - left - this.popover.offsetWidth}px`\n : 'auto'\n };\n\n this.visible = true;\n this.calculatedPosition = position;\n this.toolTipStyles = toolTipStyles;\n\n if (arrow) {\n this.arrowStyles = {\n left: `${arrow.left}px`,\n top: `${arrow?.top}px`\n };\n }\n }\n\n @action\n hideToolTip(): void {\n if (this.args.isShown === true) {\n return;\n }\n\n this.clearAnimationTimeout();\n\n const fn = (): void => {\n if (!this.isDestroying || !this.isDestroyed) {\n this.visible = false;\n }\n };\n\n scheduleOnce('afterRender', this, fn);\n }\n\n @action\n hasFocusMouseMoveListener(): void {\n this.hideToolTip();\n window.removeEventListener('mousemove', this.hasFocusMouseMoveListener);\n }\n\n @action\n onKeyUp(event: KeyboardEvent): void {\n if (event.key === keys.TAB) {\n window.addEventListener('mousemove', this.hasFocusMouseMoveListener);\n }\n }\n\n @action\n onFocus(): void {\n this.hasFocus = true;\n this.showToolTip();\n }\n\n @action\n onBlur(): void {\n this.hasFocus = false;\n this.hideToolTip();\n }\n\n @action\n onMouseOut(event: MouseEvent): void {\n // Prevent mousing over children from hiding the tooltip by testing for whether the mouse has\n // left the anchor for a non-child.\n if (\n this._anchor === event.relatedTarget ||\n (this._anchor != null &&\n !this._anchor.contains(event.relatedTarget as Node))\n ) {\n if (!this.hasFocus) {\n this.hideToolTip();\n }\n }\n\n if (this.args.onMouseOut) {\n this.args.onMouseOut(event);\n }\n }\n\n willDestroy(): void {\n super.willDestroy();\n\n this.clearAnimationTimeout();\n this.removeAttachToHandlers();\n this.anchor = null;\n this.popover = null;\n this._attachTo = null;\n }\n\n <template>\n {{#let\n (has-block \"content\") (has-block \"title\") (has-block \"anchor\")\n as |hasContentBlock hasTitleBlock hasAnchorBlock|\n }}\n {{#if @attachTo}}\n <span\n {{didInsert this.updateAttachTo}}\n {{didUpdate this.updateAttachTo @attachTo}}\n {{didUpdate\n (if (eq @isShown true) this.onFocus this.onBlur)\n @isShown\n }}\n {{didInsert (if (eq @isShown true) this.onFocus this.onBlur)}}\n ></span>\n {{else}}\n <span\n role=\"tooltip\"\n class={{classNames\n \"euiToolTipAnchor\"\n (if (eq @display \"block\") \"euiToolTipAnchor--displayBlock\")\n @anchorClassName\n }}\n {{didInsert this.didInsertAnchor}}\n {{on \"mouseover\" this.showToolTip}}\n {{on \"focusin\" this.onFocus}}\n {{on \"focusout\" this.onBlur}}\n {{on \"mouseout\" this.onMouseOut}}\n {{didUpdate\n (if (eq @isShown true) this.onFocus this.onBlur)\n @isShown\n }}\n {{didInsert (if (eq @isShown true) this.onFocus this.onBlur)}}\n >\n {{#if hasAnchorBlock}}\n {{yield this.id to=\"anchor\"}}\n {{else}}\n {{yield this.id}}\n {{/if}}\n </span>\n {{/if}}\n {{#if\n (and this.visible (or @title @content hasContentBlock hasTitleBlock))\n }}\n <EuiPortal>\n <EuiToolTipPopover\n class={{classNames\n \"euiToolTip\"\n @className\n componentName=\"EuiToolTip\"\n position=this.calculatedPosition\n }}\n @positionToolTip={{this.positionToolTip}}\n @popoverRef={{this.setPopoverRef}}\n id={{this.id}}\n @hasTitle={{if\n (and (argOrDefault @hasTitle true) (or hasTitleBlock @title))\n true\n }}\n role=\"tooltip\"\n ...attributes\n {{style this.toolTipStyles}}\n >\n <:title>\n {{#if hasTitleBlock}}\n {{yield to=\"title\"}}\n {{else}}\n {{@title}}\n {{/if}}\n </:title>\n <:content>\n <div class=\"euiToolTip__arrow\" {{style this.arrowStyles}}></div>\n <div {{resizeObserver onResize=this.positionToolTip}}>\n {{#if hasContentBlock}}\n {{yield to=\"content\"}}\n {{else}}\n {{@content}}\n {{/if}}\n </div>\n </:content>\n </EuiToolTipPopover>\n </EuiPortal>\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["delayToMsMap","regular","long","DEFAULT_TOOLTIP_STYLES","top","left","opacity","visibility","display","EuiToolTip","Component","anchor","popover","g","prototype","argOrDefaultDecorator","i","void 0","tracked","position","args","id","guidFor","timeoutId","updateAttachTo","attachTo","_attachTo","removeAttachToHandlers","next","setupAttachToHandlers","n","action","addEventListener","showToolTip","onFocus","onMouseOut","onBlur","positionToolTip","removeEventListener","clearAnimationTimeout","cancel","undefined","visibleDidUpdate","value","visible","requestAnimationFrame","testAnchor","document","body","contains","_anchor","hideToolTip","didInsertAnchor","ref","setPopoverRef","toolTipStyles","arrowStyles","fn","later","scheduleOnce","delay","querySelector","cached","requestedPosition","arrow","findPopoverPosition","offset","arrowConfig","arrowWidth","arrowBuffer","windowWidth","documentElement","clientWidth","window","innerWidth","useRightValue","right","offsetWidth","calculatedPosition","isShown","isDestroying","isDestroyed","hasFocusMouseMoveListener","onKeyUp","event","key","keys","TAB","hasFocus","relatedTarget","willDestroy","setComponentTemplate","precompileTemplate","strictMode","scope","didInsert","didUpdate","eq","classNames","on","and","or","EuiPortal","EuiToolTipPopover","argOrDefault","style","resizeObserver"],"mappings":"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"}
@@ -34,6 +34,8 @@ class EuiWrappingPopover extends Component {
34
34
  }
35
35
  }
36
36
  this.args.onWrappingDestroy?.();
37
+ this.portal = null;
38
+ this.anchor = null;
37
39
  }
38
40
  static {
39
41
  setComponentTemplate(precompileTemplate("\n <EuiPortal @portalRef={{this.setPortalRef}} @insert={{this.insert}}>\n <EuiPopover @closePopover={{@closePopover}} @isOpen={{@isOpen}} @anchorClassName={{@anchorClassName}} @portalRef={{@popoverPortalRef}} @anchorPosition={{@anchorPosition}} @attachToAnchor={{@attachToAnchor}} @container={{@container}} @display={{@display}} @hasArrow={{@hasArrow}} @initialFocus={{@initialFocus}} @ownFocus={{@ownFocus}} @panelClassName={{@panelClassName}} @panelPaddingSize={{@panelPaddingSize}} @panelStyle={{@panelStyle}} @panelRef={{@panelRef}} @popoverRef={{@popoverRef}} ...attributes>\n <:button>\n <div {{this.setAnchorRef}} class=\"euiWrappingPopover__anchor\" />\n </:button>\n\n <:content>\n {{yield}}\n </:content>\n </EuiPopover>\n </EuiPortal>\n ", {
@@ -1 +1 @@
1
- {"version":3,"file":"eui-wrapping-popover.js","sources":["../../src/components/eui-wrapping-popover.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nimport { modifier } from 'ember-modifier';\n\nimport EuiPopover from './eui-popover.gts';\nimport EuiPortal from './eui-portal.gts';\n\nimport type { EuiPopoverSignature } from './eui-popover.gts';\n\nexport interface EuiWrappingPopoverSignature {\n Element: EuiPopoverSignature['Element'];\n Args: EuiPopoverSignature['Args'] & {\n button?: HTMLElement;\n onWrappingDestroy?: () => void;\n portalRef?: (ref: HTMLElement) => void;\n popoverPortalRef?: (ref: HTMLElement) => void;\n };\n Blocks: {\n default: [];\n };\n}\n\nexport default class EuiWrappingPopover extends Component<EuiWrappingPopoverSignature> {\n private portal: HTMLElement | null = null;\n private anchor: HTMLElement | null = null;\n\n setAnchorRef = modifier((element: HTMLElement) => {\n this.anchor = element;\n this.anchor.insertAdjacentElement('beforebegin', this.args.button!);\n });\n\n setPortalRef = (element: HTMLElement) => {\n this.portal = element;\n this.args.portalRef?.(element);\n };\n\n get insert(): { sibling: HTMLElement; position: 'after' } | undefined {\n if (this.args.button) {\n return {\n sibling: this.args.button,\n position: 'after'\n };\n }\n\n return;\n }\n\n willDestroy() {\n super.willDestroy();\n\n if (this.args.button && this.args.button.parentNode) {\n if (this.portal) {\n this.portal.insertAdjacentElement('beforebegin', this.args.button);\n }\n }\n this.args.onWrappingDestroy?.();\n }\n\n <template>\n <EuiPortal @portalRef={{this.setPortalRef}} @insert={{this.insert}}>\n <EuiPopover\n @closePopover={{@closePopover}}\n @isOpen={{@isOpen}}\n @anchorClassName={{@anchorClassName}}\n @portalRef={{@popoverPortalRef}}\n @anchorPosition={{@anchorPosition}}\n @attachToAnchor={{@attachToAnchor}}\n @container={{@container}}\n @display={{@display}}\n @hasArrow={{@hasArrow}}\n @initialFocus={{@initialFocus}}\n @ownFocus={{@ownFocus}}\n @panelClassName={{@panelClassName}}\n @panelPaddingSize={{@panelPaddingSize}}\n @panelStyle={{@panelStyle}}\n @panelRef={{@panelRef}}\n @popoverRef={{@popoverRef}}\n ...attributes\n >\n <:button>\n <div {{this.setAnchorRef}} class=\"euiWrappingPopover__anchor\" />\n </:button>\n\n <:content>\n {{yield}}\n </:content>\n </EuiPopover>\n </EuiPortal>\n </template>\n}\n"],"names":["EuiWrappingPopover","Component","portal","anchor","setAnchorRef","modifier","element","insertAdjacentElement","args","button","setPortalRef","portalRef","insert","sibling","position","willDestroy","parentNode","onWrappingDestroy","setComponentTemplate","precompileTemplate","strictMode","scope","EuiPortal","EuiPopover"],"mappings":";;;;;;;;AAuBe,MAAMA,2BAA2BC,SAAU,CAAA;AAChDC,EAAAA,MAAQ,GAAqB,IAAK;AAClCC,EAAAA,MAAQ,GAAqB,IAAK;AAE1CC,EAAAA,YAAe,GAAAC,QAAA,CAAUC,OAAS,IAAA;IAChC,IAAI,CAACH,MAAM,GAAGG,OAAA;AACd,IAAA,IAAI,CAACH,MAAM,CAACI,qBAAqB,CAAC,eAAe,IAAI,CAACC,IAAI,CAACC,MAAM,CAAA;AACnE,GAAG,CAAA;EAEHC,YAAA,GAAgBJ,OAAS,IAAA;IACvB,IAAI,CAACJ,MAAM,GAAGI,OAAA;AACd,IAAA,IAAI,CAACE,IAAI,CAACG,SAAS,GAAGL,OAAA,CAAA;GACtB;EAEF,IAAIM,MAAAA,GAAkE;AACpE,IAAA,IAAI,IAAI,CAACJ,IAAI,CAACC,MAAM,EAAE;MACpB,OAAO;AACLI,QAAAA,OAAA,EAAS,IAAI,CAACL,IAAI,CAACC,MAAM;AACzBK,QAAAA,QAAU,EAAA;OACZ;AACF;AAEA,IAAA;AACF;AAEAC,EAAAA,WAAcA,GAAA;IACZ,KAAK,CAACA,WAAA,EAAA;AAEN,IAAA,IAAI,IAAI,CAACP,IAAI,CAACC,MAAM,IAAI,IAAI,CAACD,IAAI,CAACC,MAAM,CAACO,UAAU,EAAE;MACnD,IAAI,IAAI,CAACd,MAAM,EAAE;AACf,QAAA,IAAI,CAACA,MAAM,CAACK,qBAAqB,CAAC,eAAe,IAAI,CAACC,IAAI,CAACC,MAAM,CAAA;AACnE;AACF;AACA,IAAA,IAAI,CAACD,IAAI,CAACS,iBAAiB,IAAA;AAC7B;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CA8BA,6yBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,SAAA;AAAAC,oBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
1
+ {"version":3,"file":"eui-wrapping-popover.js","sources":["../../src/components/eui-wrapping-popover.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nimport { modifier } from 'ember-modifier';\n\nimport EuiPopover from './eui-popover.gts';\nimport EuiPortal from './eui-portal.gts';\n\nimport type { EuiPopoverSignature } from './eui-popover.gts';\n\nexport interface EuiWrappingPopoverSignature {\n Element: EuiPopoverSignature['Element'];\n Args: EuiPopoverSignature['Args'] & {\n button?: HTMLElement;\n onWrappingDestroy?: () => void;\n portalRef?: (ref: HTMLElement) => void;\n popoverPortalRef?: (ref: HTMLElement) => void;\n };\n Blocks: {\n default: [];\n };\n}\n\nexport default class EuiWrappingPopover extends Component<EuiWrappingPopoverSignature> {\n private portal: HTMLElement | null = null;\n private anchor: HTMLElement | null = null;\n\n setAnchorRef = modifier((element: HTMLElement) => {\n this.anchor = element;\n this.anchor.insertAdjacentElement('beforebegin', this.args.button!);\n });\n\n setPortalRef = (element: HTMLElement) => {\n this.portal = element;\n this.args.portalRef?.(element);\n };\n\n get insert(): { sibling: HTMLElement; position: 'after' } | undefined {\n if (this.args.button) {\n return {\n sibling: this.args.button,\n position: 'after'\n };\n }\n\n return;\n }\n\n willDestroy() {\n super.willDestroy();\n\n if (this.args.button && this.args.button.parentNode) {\n if (this.portal) {\n this.portal.insertAdjacentElement('beforebegin', this.args.button);\n }\n }\n\n this.args.onWrappingDestroy?.();\n this.portal = null;\n this.anchor = null;\n }\n\n <template>\n <EuiPortal @portalRef={{this.setPortalRef}} @insert={{this.insert}}>\n <EuiPopover\n @closePopover={{@closePopover}}\n @isOpen={{@isOpen}}\n @anchorClassName={{@anchorClassName}}\n @portalRef={{@popoverPortalRef}}\n @anchorPosition={{@anchorPosition}}\n @attachToAnchor={{@attachToAnchor}}\n @container={{@container}}\n @display={{@display}}\n @hasArrow={{@hasArrow}}\n @initialFocus={{@initialFocus}}\n @ownFocus={{@ownFocus}}\n @panelClassName={{@panelClassName}}\n @panelPaddingSize={{@panelPaddingSize}}\n @panelStyle={{@panelStyle}}\n @panelRef={{@panelRef}}\n @popoverRef={{@popoverRef}}\n ...attributes\n >\n <:button>\n <div {{this.setAnchorRef}} class=\"euiWrappingPopover__anchor\" />\n </:button>\n\n <:content>\n {{yield}}\n </:content>\n </EuiPopover>\n </EuiPortal>\n </template>\n}\n"],"names":["EuiWrappingPopover","Component","portal","anchor","setAnchorRef","modifier","element","insertAdjacentElement","args","button","setPortalRef","portalRef","insert","sibling","position","willDestroy","parentNode","onWrappingDestroy","setComponentTemplate","precompileTemplate","strictMode","scope","EuiPortal","EuiPopover"],"mappings":";;;;;;;;AAuBe,MAAMA,2BAA2BC,SAAU,CAAA;AAChDC,EAAAA,MAAQ,GAAqB,IAAK;AAClCC,EAAAA,MAAQ,GAAqB,IAAK;AAE1CC,EAAAA,YAAe,GAAAC,QAAA,CAAUC,OAAS,IAAA;IAChC,IAAI,CAACH,MAAM,GAAGG,OAAA;AACd,IAAA,IAAI,CAACH,MAAM,CAACI,qBAAqB,CAAC,eAAe,IAAI,CAACC,IAAI,CAACC,MAAM,CAAA;AACnE,GAAG,CAAA;EAEHC,YAAA,GAAgBJ,OAAS,IAAA;IACvB,IAAI,CAACJ,MAAM,GAAGI,OAAA;AACd,IAAA,IAAI,CAACE,IAAI,CAACG,SAAS,GAAGL,OAAA,CAAA;GACtB;EAEF,IAAIM,MAAAA,GAAkE;AACpE,IAAA,IAAI,IAAI,CAACJ,IAAI,CAACC,MAAM,EAAE;MACpB,OAAO;AACLI,QAAAA,OAAA,EAAS,IAAI,CAACL,IAAI,CAACC,MAAM;AACzBK,QAAAA,QAAU,EAAA;OACZ;AACF;AAEA,IAAA;AACF;AAEAC,EAAAA,WAAcA,GAAA;IACZ,KAAK,CAACA,WAAA,EAAA;AAEN,IAAA,IAAI,IAAI,CAACP,IAAI,CAACC,MAAM,IAAI,IAAI,CAACD,IAAI,CAACC,MAAM,CAACO,UAAU,EAAE;MACnD,IAAI,IAAI,CAACd,MAAM,EAAE;AACf,QAAA,IAAI,CAACA,MAAM,CAACK,qBAAqB,CAAC,eAAe,IAAI,CAACC,IAAI,CAACC,MAAM,CAAA;AACnE;AACF;AAEA,IAAA,IAAI,CAACD,IAAI,CAACS,iBAAiB,IAAA;IAC3B,IAAI,CAACf,MAAM,GAAG,IAAA;IACd,IAAI,CAACC,MAAM,GAAG,IAAA;AAChB;AAEA,EAAA;IAAAe,oBAAA,CAAAC,kBAAA,CA8BA,6yBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,SAAA;AAAAC,oBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -7,9 +7,9 @@ import { n } from 'decorator-transforms/runtime';
7
7
  class OutsideClickDetector extends Modifier {
8
8
  id;
9
9
  capturedDownIds = [];
10
- element;
11
- named;
12
- positional;
10
+ element = null;
11
+ named = null;
12
+ positional = null;
13
13
  onClickOutside(e) {
14
14
  const {
15
15
  isDisabled,
@@ -47,6 +47,9 @@ class OutsideClickDetector extends Modifier {
47
47
  document.removeEventListener('mouseup', this.onClickOutside);
48
48
  document.removeEventListener('touchend', this.onClickOutside);
49
49
  this.removeElementEvents();
50
+ this.element = null;
51
+ this.named = null;
52
+ this.positional = null;
50
53
  }
51
54
  addElementEvents() {
52
55
  if (this.element) {
@@ -1 +1 @@
1
- {"version":3,"file":"outside-click-detector.js","sources":["../../src/modifiers/outside-click-detector.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport Modifier from 'ember-modifier';\n\ninterface Named {\n onOutsideClick: (event: Event) => void;\n isDisabled?: boolean;\n onMouseDown?: (event: MouseEvent | TouchEvent) => void;\n onMouseUp?: (event: MouseEvent | TouchEvent) => void;\n onTouchStart?: (event: MouseEvent | TouchEvent) => void;\n onTouchEnd?: (event: MouseEvent | TouchEvent) => void;\n}\n\ntype Positional = [];\n\ninterface OutsideClickDetectorModifierArgs {\n Element: Element;\n Args: {\n Positional: Positional;\n Named: Named;\n };\n}\n\nexport interface EuiEvent extends Event {\n euiGeneratedBy: string[];\n}\n\nexport default class OutsideClickDetector extends Modifier<OutsideClickDetectorModifierArgs> {\n id!: string;\n capturedDownIds: string[] = [];\n\n element?: HTMLElement;\n named?: Named;\n positional?: Positional;\n\n @action\n onClickOutside(e: Event): void {\n const { isDisabled, onOutsideClick } = this.named!;\n\n if (isDisabled) {\n this.capturedDownIds = [];\n\n return;\n }\n\n const event = e as unknown as EuiEvent;\n\n if (\n (event.euiGeneratedBy && event.euiGeneratedBy.includes(this.id)) ||\n this.capturedDownIds.includes(this.id)\n ) {\n this.capturedDownIds = [];\n\n return;\n }\n\n this.capturedDownIds = [];\n\n return onOutsideClick(event);\n }\n\n modify(element: HTMLElement, positional: Positional, named: Named): void {\n this.element = element;\n this.named = named;\n this.positional = positional;\n this._setup();\n registerDestructor(this, () => this._teardown());\n }\n\n _setup(): void {\n this.id = guidFor({});\n document.addEventListener('mouseup', this.onClickOutside);\n document.addEventListener('touchend', this.onClickOutside);\n this.addElementEvents();\n }\n\n _teardown(): void {\n document.removeEventListener('mouseup', this.onClickOutside);\n document.removeEventListener('touchend', this.onClickOutside);\n this.removeElementEvents();\n }\n\n addElementEvents(): void {\n if (this.element) {\n this.element.addEventListener('mousedown', this.onChildMouseDown);\n this.element.addEventListener('touchstart', this.onChildMouseDown);\n this.element.addEventListener('mouseup', this.onChildMouseUp);\n this.element.addEventListener('touchend', this.onChildMouseUp);\n }\n }\n\n removeElementEvents(): void {\n if (this.element) {\n this.element.removeEventListener('mousedown', this.onChildMouseDown);\n this.element.removeEventListener('touchstart', this.onChildMouseDown);\n this.element.removeEventListener('mouseup', this.onChildMouseUp);\n this.element.removeEventListener('touchend', this.onChildMouseUp);\n }\n }\n\n @action\n onChildClick(\n event: MouseEvent | TouchEvent,\n cb: (event: MouseEvent | TouchEvent) => void\n ): void {\n // to support nested click detectors, build an array\n // of detector ids that have been encountered;\n\n if (event.hasOwnProperty('euiGeneratedBy')) {\n (event as unknown as EuiEvent).euiGeneratedBy.push(this.id);\n } else {\n (event as unknown as EuiEvent).euiGeneratedBy = [this.id];\n }\n\n if (cb) cb(event);\n }\n\n @action\n onChildMouseDown(event: MouseEvent | TouchEvent): any {\n this.onChildClick(event, (e) => {\n const nativeEvent = e as unknown as EuiEvent;\n\n this.capturedDownIds = nativeEvent.euiGeneratedBy;\n this.named?.onMouseDown?.(e);\n this.named?.onTouchStart?.(e);\n });\n }\n\n @action\n onChildMouseUp(event: TouchEvent | MouseEvent): any {\n this.onChildClick(event, (e) => {\n this.named?.onMouseUp?.(e);\n this.named?.onTouchEnd?.(e);\n });\n }\n}\n"],"names":["OutsideClickDetector","Modifier","id","capturedDownIds","element","named","positional","onClickOutside","e","isDisabled","onOutsideClick","event","euiGeneratedBy","includes","n","prototype","action","modify","_setup","registerDestructor","_teardown","guidFor","document","addEventListener","addElementEvents","removeEventListener","removeElementEvents","onChildMouseDown","onChildMouseUp","onChildClick","cb","hasOwnProperty","push","nativeEvent","onMouseDown","onTouchStart","onMouseUp","onTouchEnd"],"mappings":";;;;;;AA6Be,MAAMA,oBAAoB,SAASC,QAAQ,CAAmC;EAC3FC,EAAE;AACFC,EAAAA,eAAe,GAAa,EAAE;EAE9BC,OAAO;EACPC,KAAK;EACLC,UAAU;EAGVC,cAAcA,CAACC,CAAQ,EAAQ;IAC7B,MAAM;MAAEC,UAAU;AAAEC,MAAAA;KAAgB,GAAG,IAAI,CAACL,KAAM;AAElD,IAAA,IAAII,UAAU,EAAE;MACd,IAAI,CAACN,eAAe,GAAG,EAAE;AAEzB,MAAA;AACF;IAEA,MAAMQ,KAAK,GAAGH,CAAwB;IAEtC,IACGG,KAAK,CAACC,cAAc,IAAID,KAAK,CAACC,cAAc,CAACC,QAAQ,CAAC,IAAI,CAACX,EAAE,CAAC,IAC/D,IAAI,CAACC,eAAe,CAACU,QAAQ,CAAC,IAAI,CAACX,EAAE,CAAC,EACtC;MACA,IAAI,CAACC,eAAe,GAAG,EAAE;AAEzB,MAAA;AACF;IAEA,IAAI,CAACA,eAAe,GAAG,EAAE;IAEzB,OAAOO,cAAc,CAACC,KAAK,CAAC;AAC9B;AAAC,EAAA;IAAAG,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,gBAAA,EAAA,CAxBAC,MAAM,CAAA,CAAA;AAAA;AA0BPC,EAAAA,MAAMA,CAACb,OAAoB,EAAEE,UAAsB,EAAED,KAAY,EAAQ;IACvE,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACY,MAAM,EAAE;IACbC,kBAAkB,CAAC,IAAI,EAAE,MAAM,IAAI,CAACC,SAAS,EAAE,CAAC;AAClD;AAEAF,EAAAA,MAAMA,GAAS;AACb,IAAA,IAAI,CAAChB,EAAE,GAAGmB,OAAO,CAAC,EAAE,CAAC;IACrBC,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAChB,cAAc,CAAC;IACzDe,QAAQ,CAACC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAChB,cAAc,CAAC;IAC1D,IAAI,CAACiB,gBAAgB,EAAE;AACzB;AAEAJ,EAAAA,SAASA,GAAS;IAChBE,QAAQ,CAACG,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAClB,cAAc,CAAC;IAC5De,QAAQ,CAACG,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAClB,cAAc,CAAC;IAC7D,IAAI,CAACmB,mBAAmB,EAAE;AAC5B;AAEAF,EAAAA,gBAAgBA,GAAS;IACvB,IAAI,IAAI,CAACpB,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,CAACmB,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACI,gBAAgB,CAAC;MACjE,IAAI,CAACvB,OAAO,CAACmB,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAACI,gBAAgB,CAAC;MAClE,IAAI,CAACvB,OAAO,CAACmB,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACK,cAAc,CAAC;MAC7D,IAAI,CAACxB,OAAO,CAACmB,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAACK,cAAc,CAAC;AAChE;AACF;AAEAF,EAAAA,mBAAmBA,GAAS;IAC1B,IAAI,IAAI,CAACtB,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,CAACqB,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACE,gBAAgB,CAAC;MACpE,IAAI,CAACvB,OAAO,CAACqB,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAACE,gBAAgB,CAAC;MACrE,IAAI,CAACvB,OAAO,CAACqB,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACG,cAAc,CAAC;MAChE,IAAI,CAACxB,OAAO,CAACqB,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAACG,cAAc,CAAC;AACnE;AACF;AAGAC,EAAAA,YAAYA,CACVlB,KAA8B,EAC9BmB,EAA4C,EACtC;AACN;AACA;;AAEA,IAAA,IAAInB,KAAK,CAACoB,cAAc,CAAC,gBAAgB,CAAC,EAAE;MACzCpB,KAAK,CAAyBC,cAAc,CAACoB,IAAI,CAAC,IAAI,CAAC9B,EAAE,CAAC;AAC7D,KAAC,MAAM;AACJS,MAAAA,KAAK,CAAyBC,cAAc,GAAG,CAAC,IAAI,CAACV,EAAE,CAAC;AAC3D;AAEA,IAAA,IAAI4B,EAAE,EAAEA,EAAE,CAACnB,KAAK,CAAC;AACnB;AAAC,EAAA;IAAAG,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,cAAA,EAAA,CAfAC,MAAM,CAAA,CAAA;AAAA;EAkBPW,gBAAgBA,CAAChB,KAA8B,EAAO;AACpD,IAAA,IAAI,CAACkB,YAAY,CAAClB,KAAK,EAAGH,CAAC,IAAK;MAC9B,MAAMyB,WAAW,GAAGzB,CAAwB;AAE5C,MAAA,IAAI,CAACL,eAAe,GAAG8B,WAAW,CAACrB,cAAc;AACjD,MAAA,IAAI,CAACP,KAAK,EAAE6B,WAAW,GAAG1B,CAAC,CAAC;AAC5B,MAAA,IAAI,CAACH,KAAK,EAAE8B,YAAY,GAAG3B,CAAC,CAAC;AAC/B,KAAC,CAAC;AACJ;AAAC,EAAA;IAAAM,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,kBAAA,EAAA,CATAC,MAAM,CAAA,CAAA;AAAA;EAYPY,cAAcA,CAACjB,KAA8B,EAAO;AAClD,IAAA,IAAI,CAACkB,YAAY,CAAClB,KAAK,EAAGH,CAAC,IAAK;AAC9B,MAAA,IAAI,CAACH,KAAK,EAAE+B,SAAS,GAAG5B,CAAC,CAAC;AAC1B,MAAA,IAAI,CAACH,KAAK,EAAEgC,UAAU,GAAG7B,CAAC,CAAC;AAC7B,KAAC,CAAC;AACJ;AAAC,EAAA;IAAAM,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,gBAAA,EAAA,CANAC,MAAM,CAAA,CAAA;AAAA;AAOT;;;;"}
1
+ {"version":3,"file":"outside-click-detector.js","sources":["../../src/modifiers/outside-click-detector.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport Modifier from 'ember-modifier';\n\ninterface Named {\n onOutsideClick: (event: Event) => void;\n isDisabled?: boolean;\n onMouseDown?: (event: MouseEvent | TouchEvent) => void;\n onMouseUp?: (event: MouseEvent | TouchEvent) => void;\n onTouchStart?: (event: MouseEvent | TouchEvent) => void;\n onTouchEnd?: (event: MouseEvent | TouchEvent) => void;\n}\n\ntype Positional = [];\n\ninterface OutsideClickDetectorModifierArgs {\n Element: Element;\n Args: {\n Positional: Positional;\n Named: Named;\n };\n}\n\nexport interface EuiEvent extends Event {\n euiGeneratedBy: string[];\n}\n\nexport default class OutsideClickDetector extends Modifier<OutsideClickDetectorModifierArgs> {\n id!: string;\n capturedDownIds: string[] = [];\n\n element: HTMLElement | null = null;\n named: Named | null = null;\n positional: Positional | null = null;\n\n @action\n onClickOutside(e: Event): void {\n const { isDisabled, onOutsideClick } = this.named!;\n\n if (isDisabled) {\n this.capturedDownIds = [];\n\n return;\n }\n\n const event = e as unknown as EuiEvent;\n\n if (\n (event.euiGeneratedBy && event.euiGeneratedBy.includes(this.id)) ||\n this.capturedDownIds.includes(this.id)\n ) {\n this.capturedDownIds = [];\n\n return;\n }\n\n this.capturedDownIds = [];\n\n return onOutsideClick(event);\n }\n\n modify(element: HTMLElement, positional: Positional, named: Named): void {\n this.element = element;\n this.named = named;\n this.positional = positional;\n this._setup();\n registerDestructor(this, () => this._teardown());\n }\n\n _setup(): void {\n this.id = guidFor({});\n document.addEventListener('mouseup', this.onClickOutside);\n document.addEventListener('touchend', this.onClickOutside);\n this.addElementEvents();\n }\n\n _teardown(): void {\n document.removeEventListener('mouseup', this.onClickOutside);\n document.removeEventListener('touchend', this.onClickOutside);\n this.removeElementEvents();\n this.element = null;\n this.named = null;\n this.positional = null;\n }\n\n addElementEvents(): void {\n if (this.element) {\n this.element.addEventListener('mousedown', this.onChildMouseDown);\n this.element.addEventListener('touchstart', this.onChildMouseDown);\n this.element.addEventListener('mouseup', this.onChildMouseUp);\n this.element.addEventListener('touchend', this.onChildMouseUp);\n }\n }\n\n removeElementEvents(): void {\n if (this.element) {\n this.element.removeEventListener('mousedown', this.onChildMouseDown);\n this.element.removeEventListener('touchstart', this.onChildMouseDown);\n this.element.removeEventListener('mouseup', this.onChildMouseUp);\n this.element.removeEventListener('touchend', this.onChildMouseUp);\n }\n }\n\n @action\n onChildClick(\n event: MouseEvent | TouchEvent,\n cb: (event: MouseEvent | TouchEvent) => void\n ): void {\n // to support nested click detectors, build an array\n // of detector ids that have been encountered;\n\n if (event.hasOwnProperty('euiGeneratedBy')) {\n (event as unknown as EuiEvent).euiGeneratedBy.push(this.id);\n } else {\n (event as unknown as EuiEvent).euiGeneratedBy = [this.id];\n }\n\n if (cb) cb(event);\n }\n\n @action\n onChildMouseDown(event: MouseEvent | TouchEvent): any {\n this.onChildClick(event, (e) => {\n const nativeEvent = e as unknown as EuiEvent;\n\n this.capturedDownIds = nativeEvent.euiGeneratedBy;\n this.named?.onMouseDown?.(e);\n this.named?.onTouchStart?.(e);\n });\n }\n\n @action\n onChildMouseUp(event: TouchEvent | MouseEvent): any {\n this.onChildClick(event, (e) => {\n this.named?.onMouseUp?.(e);\n this.named?.onTouchEnd?.(e);\n });\n }\n}\n"],"names":["OutsideClickDetector","Modifier","id","capturedDownIds","element","named","positional","onClickOutside","e","isDisabled","onOutsideClick","event","euiGeneratedBy","includes","n","prototype","action","modify","_setup","registerDestructor","_teardown","guidFor","document","addEventListener","addElementEvents","removeEventListener","removeElementEvents","onChildMouseDown","onChildMouseUp","onChildClick","cb","hasOwnProperty","push","nativeEvent","onMouseDown","onTouchStart","onMouseUp","onTouchEnd"],"mappings":";;;;;;AA6Be,MAAMA,oBAAoB,SAASC,QAAQ,CAAmC;EAC3FC,EAAE;AACFC,EAAAA,eAAe,GAAa,EAAE;AAE9BC,EAAAA,OAAO,GAAuB,IAAI;AAClCC,EAAAA,KAAK,GAAiB,IAAI;AAC1BC,EAAAA,UAAU,GAAsB,IAAI;EAGpCC,cAAcA,CAACC,CAAQ,EAAQ;IAC7B,MAAM;MAAEC,UAAU;AAAEC,MAAAA;KAAgB,GAAG,IAAI,CAACL,KAAM;AAElD,IAAA,IAAII,UAAU,EAAE;MACd,IAAI,CAACN,eAAe,GAAG,EAAE;AAEzB,MAAA;AACF;IAEA,MAAMQ,KAAK,GAAGH,CAAwB;IAEtC,IACGG,KAAK,CAACC,cAAc,IAAID,KAAK,CAACC,cAAc,CAACC,QAAQ,CAAC,IAAI,CAACX,EAAE,CAAC,IAC/D,IAAI,CAACC,eAAe,CAACU,QAAQ,CAAC,IAAI,CAACX,EAAE,CAAC,EACtC;MACA,IAAI,CAACC,eAAe,GAAG,EAAE;AAEzB,MAAA;AACF;IAEA,IAAI,CAACA,eAAe,GAAG,EAAE;IAEzB,OAAOO,cAAc,CAACC,KAAK,CAAC;AAC9B;AAAC,EAAA;IAAAG,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,gBAAA,EAAA,CAxBAC,MAAM,CAAA,CAAA;AAAA;AA0BPC,EAAAA,MAAMA,CAACb,OAAoB,EAAEE,UAAsB,EAAED,KAAY,EAAQ;IACvE,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACY,MAAM,EAAE;IACbC,kBAAkB,CAAC,IAAI,EAAE,MAAM,IAAI,CAACC,SAAS,EAAE,CAAC;AAClD;AAEAF,EAAAA,MAAMA,GAAS;AACb,IAAA,IAAI,CAAChB,EAAE,GAAGmB,OAAO,CAAC,EAAE,CAAC;IACrBC,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAChB,cAAc,CAAC;IACzDe,QAAQ,CAACC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAChB,cAAc,CAAC;IAC1D,IAAI,CAACiB,gBAAgB,EAAE;AACzB;AAEAJ,EAAAA,SAASA,GAAS;IAChBE,QAAQ,CAACG,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAClB,cAAc,CAAC;IAC5De,QAAQ,CAACG,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAClB,cAAc,CAAC;IAC7D,IAAI,CAACmB,mBAAmB,EAAE;IAC1B,IAAI,CAACtB,OAAO,GAAG,IAAI;IACnB,IAAI,CAACC,KAAK,GAAG,IAAI;IACjB,IAAI,CAACC,UAAU,GAAG,IAAI;AACxB;AAEAkB,EAAAA,gBAAgBA,GAAS;IACvB,IAAI,IAAI,CAACpB,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,CAACmB,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACI,gBAAgB,CAAC;MACjE,IAAI,CAACvB,OAAO,CAACmB,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAACI,gBAAgB,CAAC;MAClE,IAAI,CAACvB,OAAO,CAACmB,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACK,cAAc,CAAC;MAC7D,IAAI,CAACxB,OAAO,CAACmB,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAACK,cAAc,CAAC;AAChE;AACF;AAEAF,EAAAA,mBAAmBA,GAAS;IAC1B,IAAI,IAAI,CAACtB,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,CAACqB,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACE,gBAAgB,CAAC;MACpE,IAAI,CAACvB,OAAO,CAACqB,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAACE,gBAAgB,CAAC;MACrE,IAAI,CAACvB,OAAO,CAACqB,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACG,cAAc,CAAC;MAChE,IAAI,CAACxB,OAAO,CAACqB,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAACG,cAAc,CAAC;AACnE;AACF;AAGAC,EAAAA,YAAYA,CACVlB,KAA8B,EAC9BmB,EAA4C,EACtC;AACN;AACA;;AAEA,IAAA,IAAInB,KAAK,CAACoB,cAAc,CAAC,gBAAgB,CAAC,EAAE;MACzCpB,KAAK,CAAyBC,cAAc,CAACoB,IAAI,CAAC,IAAI,CAAC9B,EAAE,CAAC;AAC7D,KAAC,MAAM;AACJS,MAAAA,KAAK,CAAyBC,cAAc,GAAG,CAAC,IAAI,CAACV,EAAE,CAAC;AAC3D;AAEA,IAAA,IAAI4B,EAAE,EAAEA,EAAE,CAACnB,KAAK,CAAC;AACnB;AAAC,EAAA;IAAAG,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,cAAA,EAAA,CAfAC,MAAM,CAAA,CAAA;AAAA;EAkBPW,gBAAgBA,CAAChB,KAA8B,EAAO;AACpD,IAAA,IAAI,CAACkB,YAAY,CAAClB,KAAK,EAAGH,CAAC,IAAK;MAC9B,MAAMyB,WAAW,GAAGzB,CAAwB;AAE5C,MAAA,IAAI,CAACL,eAAe,GAAG8B,WAAW,CAACrB,cAAc;AACjD,MAAA,IAAI,CAACP,KAAK,EAAE6B,WAAW,GAAG1B,CAAC,CAAC;AAC5B,MAAA,IAAI,CAACH,KAAK,EAAE8B,YAAY,GAAG3B,CAAC,CAAC;AAC/B,KAAC,CAAC;AACJ;AAAC,EAAA;IAAAM,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,kBAAA,EAAA,CATAC,MAAM,CAAA,CAAA;AAAA;EAYPY,cAAcA,CAACjB,KAA8B,EAAO;AAClD,IAAA,IAAI,CAACkB,YAAY,CAAClB,KAAK,EAAGH,CAAC,IAAK;AAC9B,MAAA,IAAI,CAACH,KAAK,EAAE+B,SAAS,GAAG5B,CAAC,CAAC;AAC1B,MAAA,IAAI,CAACH,KAAK,EAAEgC,UAAU,GAAG7B,CAAC,CAAC;AAC7B,KAAC,CAAC;AACJ;AAAC,EAAA;IAAAM,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,gBAAA,EAAA,CANAC,MAAM,CAAA,CAAA;AAAA;AAOT;;;;"}
@@ -41,9 +41,9 @@ class ResizeObserver extends Modifier {
41
41
  height = 0;
42
42
  width = 0;
43
43
  observer = null;
44
- element;
45
- named;
46
- positional;
44
+ element = null;
45
+ named = null;
46
+ positional = null;
47
47
  setSize({
48
48
  width,
49
49
  height
@@ -84,6 +84,9 @@ class ResizeObserver extends Modifier {
84
84
  height: boundingRect.height
85
85
  });
86
86
  this.observer = makeResizeObserver(element, () => {
87
+ if (!element) {
88
+ return;
89
+ }
87
90
  const boundingRect = element.getBoundingClientRect();
88
91
  setSize({
89
92
  width: boundingRect.width,
@@ -99,6 +102,10 @@ class ResizeObserver extends Modifier {
99
102
  }
100
103
  _teardown() {
101
104
  this.observer?.disconnect();
105
+ this.observer = null;
106
+ this.element = null;
107
+ this.named = null;
108
+ this.positional = null;
102
109
  }
103
110
  }
104
111
 
@@ -1 +1 @@
1
- {"version":3,"file":"resize-observer.js","sources":["../../src/modifiers/resize-observer.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { action } from '@ember/object';\n\nimport Modifier from 'ember-modifier';\n\n// IE11 and Safari don't support the `ResizeObserver` API at the time of writing\nconst hasResizeObserver =\n typeof window !== 'undefined' &&\n typeof (window as any).ResizeObserver !== 'undefined';\n\nexport interface Observer {\n disconnect: () => void;\n observe: (element: Element, options?: { [key: string]: any }) => void;\n}\n\nconst mutationObserverOptions = {\n // [MutationObserverInit](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserverInit)\n attributes: true, // Account for style changes from `className` or `style`\n characterData: true, // Account for text content size differences\n childList: true, // Account for adding/removing child nodes\n subtree: true // Account for deep child nodes\n};\n\ninterface ResizeObserverSignature {\n Element: Element;\n Args: {\n Positional: [('width' | 'height')] | [];\n Named: {\n onResize: (dimensions: { height: number; width: number }) => void;\n };\n }\n}\n\nconst makeCompatibleObserver = (node: Element, callback: () => void) => {\n const observer = new MutationObserver(callback);\n //eslint-disable-next-line\n observer.observe(node, mutationObserverOptions);\n\n window.addEventListener('resize', callback);\n\n const _disconnect = observer.disconnect.bind(observer);\n\n observer.disconnect = () => {\n _disconnect();\n window.removeEventListener('resize', callback);\n };\n\n return observer;\n};\n\nconst makeResizeObserver = (node: Element, callback: () => void) => {\n let observer: Observer | undefined;\n\n if (hasResizeObserver) {\n observer = new (window as any).ResizeObserver(callback);\n observer!.observe(node);\n } else {\n observer = makeCompatibleObserver(node, callback);\n requestAnimationFrame(callback); // Mimic ResizeObserver behavior of triggering a resize event on init\n }\n\n return observer;\n};\n\nexport default class ResizeObserver extends Modifier<ResizeObserverSignature> {\n height: number = 0;\n width: number = 0;\n observer: Observer | null = null;\n\n element!: Element;\n named!: ResizeObserverSignature['Args']['Named'];\n positional!: ResizeObserverSignature['Args']['Positional'];\n\n @action\n setSize({ width, height }: { width: number; height: number }) {\n let [dimension] = this.positional;\n const doesWidthMatter = dimension !== 'height';\n const doesHeightMatter = dimension !== 'width';\n\n if (\n (doesWidthMatter && width !== this.width) ||\n (doesHeightMatter && height !== this.height)\n ) {\n this.width = width;\n this.height = height;\n this.named?.onResize({ width, height });\n }\n }\n\n\n modify(\n element: Element,\n positional: ResizeObserverSignature['Args']['Positional'] = [],\n named: ResizeObserverSignature['Args']['Named']\n ) {\n this.element = element;\n this.named = named;\n this.positional = positional;\n this._setup();\n registerDestructor(this, () => this._teardown());\n }\n\n _setup() {\n let { setSize, element } = this;\n\n if (element != null) {\n // ResizeObserver's first call to the observation callback is scheduled in the future\n // so find the element's initial dimensions now\n const boundingRect = element.getBoundingClientRect();\n\n setSize({\n width: boundingRect.width,\n height: boundingRect.height\n });\n\n this.observer = makeResizeObserver(element, () => {\n const boundingRect = element.getBoundingClientRect();\n\n setSize({\n width: boundingRect.width,\n height: boundingRect.height\n });\n })!;\n } else {\n setSize({\n width: 0,\n height: 0\n });\n }\n }\n\n _teardown() {\n this.observer?.disconnect();\n }\n}\n"],"names":["hasResizeObserver","window","ResizeObserver","mutationObserverOptions","attributes","characterData","childList","subtree","makeCompatibleObserver","node","callback","observer","MutationObserver","observe","addEventListener","_disconnect","disconnect","bind","removeEventListener","makeResizeObserver","requestAnimationFrame","Modifier","height","width","element","named","positional","setSize","dimension","doesWidthMatter","doesHeightMatter","onResize","n","prototype","action","modify","_setup","registerDestructor","_teardown","boundingRect","getBoundingClientRect"],"mappings":";;;;;AAMA,MAAMA,iBAAiB,GACrB,OAAOC,MAAM,KAAK,WAAW,IAC7B,OAAQA,MAAM,CAASC,cAAc,KAAK,WAAW;AAOvD,MAAMC,uBAAuB,GAAG;AAC9B;AACAC,EAAAA,UAAU,EAAE,IAAI;AAAE;AAClBC,EAAAA,aAAa,EAAE,IAAI;AAAE;AACrBC,EAAAA,SAAS,EAAE,IAAI;AAAE;EACjBC,OAAO,EAAE,IAAI;AACf,CAAC;AAYD,MAAMC,sBAAsB,GAAGA,CAACC,IAAa,EAAEC,QAAoB,KAAK;AACtE,EAAA,MAAMC,QAAQ,GAAG,IAAIC,gBAAgB,CAACF,QAAQ,CAAC;AAC/C;AACAC,EAAAA,QAAQ,CAACE,OAAO,CAACJ,IAAI,EAAEN,uBAAuB,CAAC;AAE/CF,EAAAA,MAAM,CAACa,gBAAgB,CAAC,QAAQ,EAAEJ,QAAQ,CAAC;EAE3C,MAAMK,WAAW,GAAGJ,QAAQ,CAACK,UAAU,CAACC,IAAI,CAACN,QAAQ,CAAC;EAEtDA,QAAQ,CAACK,UAAU,GAAG,MAAM;AAC1BD,IAAAA,WAAW,EAAE;AACbd,IAAAA,MAAM,CAACiB,mBAAmB,CAAC,QAAQ,EAAER,QAAQ,CAAC;GAC/C;AAED,EAAA,OAAOC,QAAQ;AACjB,CAAC;AAED,MAAMQ,kBAAkB,GAAGA,CAACV,IAAa,EAAEC,QAAoB,KAAK;AAClE,EAAA,IAAIC,QAA8B;AAElC,EAAA,IAAIX,iBAAiB,EAAE;AACrBW,IAAAA,QAAQ,GAAG,IAAKV,MAAM,CAASC,cAAc,CAACQ,QAAQ,CAAC;AACvDC,IAAAA,QAAQ,CAAEE,OAAO,CAACJ,IAAI,CAAC;AACzB,GAAC,MAAM;AACLE,IAAAA,QAAQ,GAAGH,sBAAsB,CAACC,IAAI,EAAEC,QAAQ,CAAC;AACjDU,IAAAA,qBAAqB,CAACV,QAAQ,CAAC,CAAC;AAClC;AAEA,EAAA,OAAOC,QAAQ;AACjB,CAAC;AAEc,MAAMT,cAAc,SAASmB,QAAQ,CAA0B;AAC5EC,EAAAA,MAAM,GAAW,CAAC;AAClBC,EAAAA,KAAK,GAAW,CAAC;AACjBZ,EAAAA,QAAQ,GAAoB,IAAI;EAEhCa,OAAO;EACPC,KAAK;EACLC,UAAU;AAGVC,EAAAA,OAAOA,CAAC;IAAEJ,KAAK;AAAED,IAAAA;AAA0C,GAAC,EAAE;AAC5D,IAAA,IAAI,CAACM,SAAS,CAAC,GAAG,IAAI,CAACF,UAAU;AACjC,IAAA,MAAMG,eAAe,GAAGD,SAAS,KAAK,QAAQ;AAC9C,IAAA,MAAME,gBAAgB,GAAGF,SAAS,KAAK,OAAO;AAE9C,IAAA,IACGC,eAAe,IAAIN,KAAK,KAAK,IAAI,CAACA,KAAK,IACvCO,gBAAgB,IAAIR,MAAM,KAAK,IAAI,CAACA,MAAO,EAC5C;MACA,IAAI,CAACC,KAAK,GAAGA,KAAK;MAClB,IAAI,CAACD,MAAM,GAAGA,MAAM;AACpB,MAAA,IAAI,CAACG,KAAK,EAAEM,QAAQ,CAAC;QAAER,KAAK;AAAED,QAAAA;AAAO,OAAC,CAAC;AACzC;AACF;AAAC,EAAA;IAAAU,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAdAC,MAAM,CAAA,CAAA;AAAA;EAiBPC,MAAMA,CACJX,OAAgB,EAChBE,UAAyD,GAAG,EAAE,EAC9DD,KAA+C,EAC/C;IACA,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACU,MAAM,EAAE;IACbC,kBAAkB,CAAC,IAAI,EAAE,MAAM,IAAI,CAACC,SAAS,EAAE,CAAC;AAClD;AAEAF,EAAAA,MAAMA,GAAG;IACP,IAAI;MAAET,OAAO;AAAEH,MAAAA;AAAQ,KAAC,GAAG,IAAI;IAE/B,IAAIA,OAAO,IAAI,IAAI,EAAE;AACnB;AACA;AACA,MAAA,MAAMe,YAAY,GAAGf,OAAO,CAACgB,qBAAqB,EAAE;AAEpDb,MAAAA,OAAO,CAAC;QACNJ,KAAK,EAAEgB,YAAY,CAAChB,KAAK;QACzBD,MAAM,EAAEiB,YAAY,CAACjB;AACvB,OAAC,CAAC;AAEF,MAAA,IAAI,CAACX,QAAQ,GAAGQ,kBAAkB,CAACK,OAAO,EAAE,MAAM;AAChD,QAAA,MAAMe,YAAY,GAAGf,OAAO,CAACgB,qBAAqB,EAAE;AAEpDb,QAAAA,OAAO,CAAC;UACNJ,KAAK,EAAEgB,YAAY,CAAChB,KAAK;UACzBD,MAAM,EAAEiB,YAAY,CAACjB;AACvB,SAAC,CAAC;AACJ,OAAC,CAAE;AACL,KAAC,MAAM;AACLK,MAAAA,OAAO,CAAC;AACNJ,QAAAA,KAAK,EAAE,CAAC;AACRD,QAAAA,MAAM,EAAE;AACV,OAAC,CAAC;AACJ;AACF;AAEAgB,EAAAA,SAASA,GAAG;AACV,IAAA,IAAI,CAAC3B,QAAQ,EAAEK,UAAU,EAAE;AAC7B;AACF;;;;"}
1
+ {"version":3,"file":"resize-observer.js","sources":["../../src/modifiers/resize-observer.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { action } from '@ember/object';\n\nimport Modifier from 'ember-modifier';\n\n// IE11 and Safari don't support the `ResizeObserver` API at the time of writing\nconst hasResizeObserver =\n typeof window !== 'undefined' &&\n typeof (window as any).ResizeObserver !== 'undefined';\n\nexport interface Observer {\n disconnect: () => void;\n observe: (element: Element, options?: { [key: string]: any }) => void;\n}\n\nconst mutationObserverOptions = {\n // [MutationObserverInit](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserverInit)\n attributes: true, // Account for style changes from `className` or `style`\n characterData: true, // Account for text content size differences\n childList: true, // Account for adding/removing child nodes\n subtree: true // Account for deep child nodes\n};\n\ninterface ResizeObserverSignature {\n Element: Element;\n Args: {\n Positional: ['width' | 'height'] | [];\n Named: {\n onResize: (dimensions: { height: number; width: number }) => void;\n };\n };\n}\n\nconst makeCompatibleObserver = (node: Element, callback: () => void) => {\n const observer = new MutationObserver(callback);\n //eslint-disable-next-line\n observer.observe(node, mutationObserverOptions);\n\n window.addEventListener('resize', callback);\n\n const _disconnect = observer.disconnect.bind(observer);\n\n observer.disconnect = () => {\n _disconnect();\n window.removeEventListener('resize', callback);\n };\n\n return observer;\n};\n\nconst makeResizeObserver = (node: Element, callback: () => void) => {\n let observer: Observer | undefined;\n\n if (hasResizeObserver) {\n observer = new (window as any).ResizeObserver(callback);\n observer!.observe(node);\n } else {\n observer = makeCompatibleObserver(node, callback);\n requestAnimationFrame(callback); // Mimic ResizeObserver behavior of triggering a resize event on init\n }\n\n return observer;\n};\n\nexport default class ResizeObserver extends Modifier<ResizeObserverSignature> {\n height: number = 0;\n width: number = 0;\n observer: Observer | null = null;\n\n element: Element | null = null;\n named: ResizeObserverSignature['Args']['Named'] | null = null;\n positional: ResizeObserverSignature['Args']['Positional'] | null = null;\n\n @action\n setSize({ width, height }: { width: number; height: number }) {\n let [dimension] = this.positional!;\n const doesWidthMatter = dimension !== 'height';\n const doesHeightMatter = dimension !== 'width';\n\n if (\n (doesWidthMatter && width !== this.width) ||\n (doesHeightMatter && height !== this.height)\n ) {\n this.width = width;\n this.height = height;\n this.named?.onResize({ width, height });\n }\n }\n\n modify(\n element: Element,\n positional: ResizeObserverSignature['Args']['Positional'] = [],\n named: ResizeObserverSignature['Args']['Named']\n ) {\n this.element = element;\n this.named = named;\n this.positional = positional;\n this._setup();\n registerDestructor(this, () => this._teardown());\n }\n\n _setup() {\n let { setSize, element } = this;\n\n if (element != null) {\n // ResizeObserver's first call to the observation callback is scheduled in the future\n // so find the element's initial dimensions now\n const boundingRect = element.getBoundingClientRect();\n\n setSize({\n width: boundingRect.width,\n height: boundingRect.height\n });\n\n this.observer = makeResizeObserver(element, () => {\n if (!element) {\n return;\n }\n\n const boundingRect = element.getBoundingClientRect();\n\n setSize({\n width: boundingRect.width,\n height: boundingRect.height\n });\n })!;\n } else {\n setSize({\n width: 0,\n height: 0\n });\n }\n }\n\n _teardown() {\n this.observer?.disconnect();\n this.observer = null;\n this.element = null;\n this.named = null;\n this.positional = null;\n }\n}\n"],"names":["hasResizeObserver","window","ResizeObserver","mutationObserverOptions","attributes","characterData","childList","subtree","makeCompatibleObserver","node","callback","observer","MutationObserver","observe","addEventListener","_disconnect","disconnect","bind","removeEventListener","makeResizeObserver","requestAnimationFrame","Modifier","height","width","element","named","positional","setSize","dimension","doesWidthMatter","doesHeightMatter","onResize","n","prototype","action","modify","_setup","registerDestructor","_teardown","boundingRect","getBoundingClientRect"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ember-eui/core",
3
- "version": "12.0.10",
3
+ "version": "12.0.12",
4
4
  "description": "Ember Components for Elastic UI",
5
5
  "keywords": [
6
6
  "ember-addon",