@ember-eui/core 16.0.0 → 16.0.2

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 (116) hide show
  1. package/declarations/components/eui-aspect-ratio.d.ts +5 -0
  2. package/declarations/components/eui-aspect-ratio.d.ts.map +1 -1
  3. package/declarations/components/eui-avatar.d.ts +6 -0
  4. package/declarations/components/eui-avatar.d.ts.map +1 -1
  5. package/declarations/components/eui-basic-table.d.ts.map +1 -1
  6. package/declarations/components/eui-color-picker.d.ts +3 -0
  7. package/declarations/components/eui-color-picker.d.ts.map +1 -1
  8. package/declarations/components/eui-color-stops/thumb.d.ts +3 -1
  9. package/declarations/components/eui-color-stops/thumb.d.ts.map +1 -1
  10. package/declarations/components/eui-combo-box.d.ts +2 -0
  11. package/declarations/components/eui-combo-box.d.ts.map +1 -1
  12. package/declarations/components/eui-data-grid/body.d.ts +2 -0
  13. package/declarations/components/eui-data-grid/body.d.ts.map +1 -1
  14. package/declarations/components/eui-data-grid.d.ts.map +1 -1
  15. package/declarations/components/eui-dual-range.d.ts +2 -0
  16. package/declarations/components/eui-dual-range.d.ts.map +1 -1
  17. package/declarations/components/eui-focus-trap.d.ts +1 -0
  18. package/declarations/components/eui-focus-trap.d.ts.map +1 -1
  19. package/declarations/components/eui-global-toast-list.d.ts +8 -1
  20. package/declarations/components/eui-global-toast-list.d.ts.map +1 -1
  21. package/declarations/components/eui-markdown-editor-drop-zone.d.ts.map +1 -1
  22. package/declarations/components/eui-markdown-editor.d.ts.map +1 -1
  23. package/declarations/components/eui-markdown-format.d.ts +2 -0
  24. package/declarations/components/eui-markdown-format.d.ts.map +1 -1
  25. package/declarations/components/eui-overlay-mask.d.ts +5 -2
  26. package/declarations/components/eui-overlay-mask.d.ts.map +1 -1
  27. package/declarations/components/eui-popover.d.ts +5 -1
  28. package/declarations/components/eui-popover.d.ts.map +1 -1
  29. package/declarations/components/eui-range.d.ts +3 -0
  30. package/declarations/components/eui-range.d.ts.map +1 -1
  31. package/declarations/components/eui-saturation.d.ts +3 -1
  32. package/declarations/components/eui-saturation.d.ts.map +1 -1
  33. package/declarations/components/eui-search-bar/field-value-selection-filter.d.ts.map +1 -1
  34. package/declarations/components/eui-text-color.d.ts +6 -0
  35. package/declarations/components/eui-text-color.d.ts.map +1 -1
  36. package/declarations/components/eui-text.d.ts.map +1 -1
  37. package/declarations/components/eui-token.d.ts +11 -0
  38. package/declarations/components/eui-token.d.ts.map +1 -1
  39. package/declarations/components/eui-tool-tip.d.ts +1 -2
  40. package/declarations/components/eui-tool-tip.d.ts.map +1 -1
  41. package/declarations/modifiers/outside-click-detector.d.ts +3 -0
  42. package/declarations/modifiers/outside-click-detector.d.ts.map +1 -1
  43. package/declarations/modifiers/resize-observer.d.ts +3 -0
  44. package/declarations/modifiers/resize-observer.d.ts.map +1 -1
  45. package/declarations/utils/css-mappings/eui-avatar.d.ts +2 -2
  46. package/declarations/utils/css-mappings/eui-avatar.d.ts.map +1 -1
  47. package/declarations/utils/css-mappings/eui-badge.d.ts +1 -1
  48. package/declarations/utils/css-mappings/eui-badge.d.ts.map +1 -1
  49. package/declarations/utils/css-mappings/eui-context-menu-item.d.ts +3 -3
  50. package/declarations/utils/eui/flyout-manager/reducer.d.ts.map +1 -1
  51. package/declarations/utils/eui/styles.d.ts +5 -0
  52. package/declarations/utils/eui/styles.d.ts.map +1 -1
  53. package/declarations/utils/retain-document-listener.d.ts +8 -0
  54. package/declarations/utils/retain-document-listener.d.ts.map +1 -0
  55. package/declarations/utils/transition.d.ts +1 -1
  56. package/declarations/utils/transition.d.ts.map +1 -1
  57. package/dist/components/eui-aspect-ratio.js +20 -5
  58. package/dist/components/eui-aspect-ratio.js.map +1 -1
  59. package/dist/components/eui-avatar.js +16 -4
  60. package/dist/components/eui-avatar.js.map +1 -1
  61. package/dist/components/eui-basic-table.js +4 -2
  62. package/dist/components/eui-basic-table.js.map +1 -1
  63. package/dist/components/eui-color-picker.js +8 -2
  64. package/dist/components/eui-color-picker.js.map +1 -1
  65. package/dist/components/eui-color-stops/thumb.js +17 -5
  66. package/dist/components/eui-color-stops/thumb.js.map +1 -1
  67. package/dist/components/eui-combo-box.js +16 -0
  68. package/dist/components/eui-combo-box.js.map +1 -1
  69. package/dist/components/eui-data-grid/body.js +21 -1
  70. package/dist/components/eui-data-grid/body.js.map +1 -1
  71. package/dist/components/eui-data-grid.js +6 -4
  72. package/dist/components/eui-data-grid.js.map +1 -1
  73. package/dist/components/eui-dual-range.js +5 -2
  74. package/dist/components/eui-dual-range.js.map +1 -1
  75. package/dist/components/eui-focus-trap.js +4 -1
  76. package/dist/components/eui-focus-trap.js.map +1 -1
  77. package/dist/components/eui-global-toast-list.js +33 -5
  78. package/dist/components/eui-global-toast-list.js.map +1 -1
  79. package/dist/components/eui-markdown-editor-drop-zone.js +2 -0
  80. package/dist/components/eui-markdown-editor-drop-zone.js.map +1 -1
  81. package/dist/components/eui-markdown-editor.js +3 -1
  82. package/dist/components/eui-markdown-editor.js.map +1 -1
  83. package/dist/components/eui-markdown-format.js +9 -3
  84. package/dist/components/eui-markdown-format.js.map +1 -1
  85. package/dist/components/eui-overlay-mask.js +2 -0
  86. package/dist/components/eui-overlay-mask.js.map +1 -1
  87. package/dist/components/eui-popover.js +22 -2
  88. package/dist/components/eui-popover.js.map +1 -1
  89. package/dist/components/eui-range.js +10 -3
  90. package/dist/components/eui-range.js.map +1 -1
  91. package/dist/components/eui-saturation.js +16 -4
  92. package/dist/components/eui-saturation.js.map +1 -1
  93. package/dist/components/eui-search-bar/field-value-selection-filter.js +8 -3
  94. package/dist/components/eui-search-bar/field-value-selection-filter.js.map +1 -1
  95. package/dist/components/eui-text-color.js +20 -6
  96. package/dist/components/eui-text-color.js.map +1 -1
  97. package/dist/components/eui-text.js +6 -3
  98. package/dist/components/eui-text.js.map +1 -1
  99. package/dist/components/eui-token.js +31 -17
  100. package/dist/components/eui-token.js.map +1 -1
  101. package/dist/components/eui-tool-tip.js +9 -17
  102. package/dist/components/eui-tool-tip.js.map +1 -1
  103. package/dist/icons-DCTZo11a.js.map +1 -1
  104. package/dist/modifiers/outside-click-detector.js +12 -2
  105. package/dist/modifiers/outside-click-detector.js.map +1 -1
  106. package/dist/modifiers/resize-observer.js +19 -4
  107. package/dist/modifiers/resize-observer.js.map +1 -1
  108. package/dist/utils/eui/flyout-manager/reducer.js +7 -1
  109. package/dist/utils/eui/flyout-manager/reducer.js.map +1 -1
  110. package/dist/utils/eui/styles.js +5 -0
  111. package/dist/utils/eui/styles.js.map +1 -1
  112. package/dist/utils/retain-document-listener.js +30 -0
  113. package/dist/utils/retain-document-listener.js.map +1 -0
  114. package/dist/utils/transition.js +8 -3
  115. package/dist/utils/transition.js.map +1 -1
  116. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"eui-text.js","sources":["../../src/components/eui-text.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached } from '@glimmer/tracking';\nimport { getEuiThemeContext } from '../utils/emotion/consume.ts';\nimport { euiClass, useEuiBorealisStyles } from '../utils/eui/styles.ts';\nimport type { EuiCss } from '../utils/eui/styles.ts';\nimport { euiTextStyles } from '../utils/eui/styles.generated.ts';\nimport { euiTextAlignCss } from './eui-text-align.gts';\nimport { euiTextColorCss } from './eui-text-color.gts';\n\nimport type { CSSObject } from '@emotion/css/create-instance';\nimport type { EuiBorealisContext } from '../utils/eui/theme.ts';\nimport type { EuiTextAlignment } from './eui-text-align.gts';\nimport type { EuiTextColorValue } from './eui-text-color.gts';\n\n/**\n * The parts of React EUI's global reset that EuiText content relies on,\n * scoped to descendants. `:where()` keeps them below every upstream rule.\n */\nexport function euiTextReset({ euiTheme }: EuiBorealisContext): CSSObject {\n return {\n boxSizing: 'border-box',\n margin: 0,\n fontFamily: euiTheme.font.family,\n '& :where(*, *::before, *::after)': { boxSizing: 'border-box' },\n '& :where(h1, h2, h3, h4, h5, h6, p, blockquote, pre, dl, dt, dd, ol, ul, li, figure)':\n { margin: 0, padding: 0 },\n '& :where(h1, h2, h3, h4, h5, h6, p)': {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit'\n },\n '& :where(code, pre, kbd, samp)': { fontFamily: euiTheme.font.familyCode },\n '& :where(strong)': { fontWeight: euiTheme.font.weight.bold },\n '& :where(em)': { fontStyle: 'italic' },\n '& :where(blockquote, q)': { quotes: 'none' }\n };\n}\n\n/** Styles plain HTML content (`<p>`, `<ul>`, `<h3>`, `<code>`…) with EUI's typography. */\nexport interface EuiTextSignature {\n Element: HTMLDivElement;\n Args: {\n /**\n * The element to render: a tag name such as `'span'` or `'p'`\n * (upstream's `component`). Defaults to `'div'`.\n */\n component?: string;\n /**\n * `true` lets text span the container's full width; `false` caps lines\n * at a readable width. Defaults to `true`.\n */\n grow?: boolean;\n /** `'xs'`, `'s'`, `'m'` or `'relative'` (inherits). Defaults to `'s'`. */\n size?: 'xs' | 's' | 'm' | 'relative';\n /** `'left'`, `'center'` or `'right'` (logical, so they flip in RTL). */\n textAlign?: EuiTextAlignment;\n /**\n * Any EuiTextColor value: a named color such as `'subdued'` or\n * `'danger'`, or a CSS color. Inherits when omitted.\n */\n color?: EuiTextColorValue;\n /**\n * Extra styles composed last into this component's class (like upstream's\n * `css` prop). Prefer this to an extra class when styling it from a parent.\n */\n css?: EuiCss;\n };\n Blocks: {\n /** HTML content (paragraphs, lists, headings, code…), styled by EuiText. */\n default: [];\n };\n}\n\n/**\n * The tag to render. Typed as `'div'` (the default) so that callers keep\n * `HTMLDivElement` attributes; `@component` may name any element.\n */\nfunction tagName(component: string | undefined): 'div' {\n return (component || 'div') as 'div';\n}\n\nexport default class EuiText extends Component<EuiTextSignature> {\n @cached\n get classes() {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiTextStyles);\n const { color, textAlign } = this.args;\n // Same order as upstream's cloned element: text, then color, then align.\n return euiClass(\n context,\n euiTextReset(context.upstream),\n styles.euiText,\n this.args.grow === false ? styles.constrainedWidth : undefined,\n styles[this.args.size ?? 's'],\n color ? euiTextColorCss(context, color) : undefined,\n textAlign ? euiTextAlignCss(textAlign) : undefined,\n this.args.css\n );\n }\n\n <template>\n {{#let (element (tagName @component)) as |Tag|}}\n <Tag class=\"euiText {{this.classes}}\" ...attributes>{{yield}}</Tag>\n {{/let}}\n </template>\n}\n"],"names":["euiTextReset","euiTheme","boxSizing","margin","fontFamily","font","family","padding","fontWeight","fontSize","familyCode","weight","bold","fontStyle","quotes","tagName","component","EuiText","Component","classes","context","getEuiThemeContext","styles","useEuiBorealisStyles","euiTextStyles","color","textAlign","args","euiClass","upstream","euiText","grow","constrainedWidth","undefined","size","euiTextColorCss","euiTextAlignCss","css","n","prototype","cached","setComponentTemplate","precompileTemplate","strictMode","scope"],"mappings":";;;;;;;;;;;AAkBO,SAASA,YAAAA,CAAa;AAAEC,EAAAA;CAA8B,EAAG;EAC9D,OAAO;AACLC,IAAAA,SAAA,EAAW,YAAA;AACXC,IAAAA,MAAA,EAAQ,CAAA;AACRC,IAAAA,UAAA,EAAYH,QAAA,CAASI,IAAI,CAACC,MAAM;AAChC,IAAA,kCAAA,EAAoC;AAAEJ,MAAAA,SAAA,EAAW;KAAa;AAC9D,IAAA,sFAAA,EACE;AAAEC,MAAAA,MAAA,EAAQ,CAAA;AAAGI,MAAAA,OAAA,EAAS;KAAE;AAC1B,IAAA,qCAAA,EAAuC;AACrCH,MAAAA,UAAA,EAAY,SAAA;AACZI,MAAAA,UAAA,EAAY,SAAA;AACZC,MAAAA,QAAA,EAAU;KACZ;AACA,IAAA,gCAAA,EAAkC;AAAEL,MAAAA,UAAA,EAAYH,QAAA,CAASI,IAAI,CAACK;KAAW;AACzE,IAAA,kBAAA,EAAoB;AAAEF,MAAAA,UAAA,EAAYP,QAAA,CAASI,IAAI,CAACM,MAAM,CAACC;KAAK;AAC5D,IAAA,cAAA,EAAgB;AAAEC,MAAAA,SAAA,EAAW;KAAS;AACtC,IAAA,yBAAA,EAA2B;AAAEC,MAAAA,MAAA,EAAQ;AAAO;GAC9C;AACF;AAEA;;AAmCA;;;AAGC;AACD,SAASC,OAAAA,CAAQC,SAA6B,EAAG;EAC/C,OAAQA,SAAA,IAAa,KAAK;AAC5B;AAEe,MAAMC,gBAAgBC,SAAA,CAAU;EAC7C,IACIC,OAAAA,GAAU;AACZ,IAAA,MAAMC,OAAA,GAAUC,mBAAmB,IAAI,CAAA;AACvC,IAAA,MAAMC,MAAA,GAASC,qBAAqBH,OAAA,EAASI,aAAA,CAAA;IAC7C,MAAM;MAAEC,KAAK;AAAEC,MAAAA;KAAW,GAAG,IAAI,CAACC,IAAI;AACtC;AACA,IAAA,OAAOC,SACLR,OAAA,EACApB,YAAA,CAAaoB,QAAQS,QAAQ,CAAA,EAC7BP,OAAOQ,OAAO,EACd,IAAI,CAACH,IAAI,CAACI,IAAI,KAAK,QAAQT,MAAA,CAAOU,gBAAgB,GAAGC,SAAA,EACrDX,MAAM,CAAC,IAAI,CAACK,IAAI,CAACO,IAAI,IAAI,GAAA,CAAI,EAC7BT,QAAQU,eAAA,CAAgBf,OAAA,EAASK,SAASQ,SAAA,EAC1CP,SAAA,GAAYU,gBAAgBV,SAAA,CAAA,GAAaO,SAAA,EACzC,IAAI,CAACN,IAAI,CAACU,GAAG,CAAA;AAEjB,EAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAhBCC,MAAA,CAAA,CAAA;AAAA;AAkBD,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,qIAAA,EAIA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;AAAA7B,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;"}
1
+ {"version":3,"file":"eui-text.js","sources":["../../src/components/eui-text.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached } from '@glimmer/tracking';\n\nimport style from 'ember-style-modifier/modifiers/style';\n\nimport { getEuiThemeContext } from '../utils/emotion/consume.ts';\nimport { euiClass, useEuiBorealisStyles } from '../utils/eui/styles.ts';\nimport type { EuiCss } from '../utils/eui/styles.ts';\nimport { euiTextStyles } from '../utils/eui/styles.generated.ts';\nimport { euiTextAlignCss } from './eui-text-align.gts';\nimport { euiTextColorCss, euiTextColorInlineStyle } from './eui-text-color.gts';\n\nimport type { CSSObject } from '@emotion/css/create-instance';\nimport type { EuiBorealisContext } from '../utils/eui/theme.ts';\nimport type { EuiTextAlignment } from './eui-text-align.gts';\nimport type { EuiTextColorValue } from './eui-text-color.gts';\n\n/**\n * The parts of React EUI's global reset that EuiText content relies on,\n * scoped to descendants. `:where()` keeps them below every upstream rule.\n */\nexport function euiTextReset({ euiTheme }: EuiBorealisContext): CSSObject {\n return {\n boxSizing: 'border-box',\n margin: 0,\n fontFamily: euiTheme.font.family,\n '& :where(*, *::before, *::after)': { boxSizing: 'border-box' },\n '& :where(h1, h2, h3, h4, h5, h6, p, blockquote, pre, dl, dt, dd, ol, ul, li, figure)':\n { margin: 0, padding: 0 },\n '& :where(h1, h2, h3, h4, h5, h6, p)': {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit'\n },\n '& :where(code, pre, kbd, samp)': { fontFamily: euiTheme.font.familyCode },\n '& :where(strong)': { fontWeight: euiTheme.font.weight.bold },\n '& :where(em)': { fontStyle: 'italic' },\n '& :where(blockquote, q)': { quotes: 'none' }\n };\n}\n\n/** Styles plain HTML content (`<p>`, `<ul>`, `<h3>`, `<code>`…) with EUI's typography. */\nexport interface EuiTextSignature {\n Element: HTMLDivElement;\n Args: {\n /**\n * The element to render: a tag name such as `'span'` or `'p'`\n * (upstream's `component`). Defaults to `'div'`.\n */\n component?: string;\n /**\n * `true` lets text span the container's full width; `false` caps lines\n * at a readable width. Defaults to `true`.\n */\n grow?: boolean;\n /** `'xs'`, `'s'`, `'m'` or `'relative'` (inherits). Defaults to `'s'`. */\n size?: 'xs' | 's' | 'm' | 'relative';\n /** `'left'`, `'center'` or `'right'` (logical, so they flip in RTL). */\n textAlign?: EuiTextAlignment;\n /**\n * Any EuiTextColor value: a named color such as `'subdued'` or\n * `'danger'`, or a CSS color. Inherits when omitted.\n */\n color?: EuiTextColorValue;\n /**\n * Extra styles composed last into this component's class (like upstream's\n * `css` prop). Prefer this to an extra class when styling it from a parent.\n */\n css?: EuiCss;\n };\n Blocks: {\n /** HTML content (paragraphs, lists, headings, code…), styled by EuiText. */\n default: [];\n };\n}\n\n/**\n * The tag to render. Typed as `'div'` (the default) so that callers keep\n * `HTMLDivElement` attributes; `@component` may name any element.\n */\nfunction tagName(component: string | undefined): 'div' {\n return (component || 'div') as 'div';\n}\n\nexport default class EuiText extends Component<EuiTextSignature> {\n @cached\n get classes() {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiTextStyles);\n const { color, textAlign } = this.args;\n // Same order as upstream's cloned element: text, then color, then align.\n return euiClass(\n context,\n euiTextReset(context.upstream),\n styles.euiText,\n this.args.grow === false ? styles.constrainedWidth : undefined,\n styles[this.args.size ?? 's'],\n color ? euiTextColorCss(context, color) : undefined,\n textAlign ? euiTextAlignCss(textAlign) : undefined,\n this.args.css\n );\n }\n\n <template>\n {{#let (element (tagName @component)) as |Tag|}}\n <Tag class=\"euiText {{this.classes}}\" ...attributes {{style (euiTextColorInlineStyle @color)}}>{{yield}}</Tag>\n {{/let}}\n </template>\n}\n"],"names":["euiTextReset","euiTheme","boxSizing","margin","fontFamily","font","family","padding","fontWeight","fontSize","familyCode","weight","bold","fontStyle","quotes","tagName","component","EuiText","Component","classes","context","getEuiThemeContext","styles","useEuiBorealisStyles","euiTextStyles","color","textAlign","args","euiClass","upstream","euiText","grow","constrainedWidth","undefined","size","euiTextColorCss","euiTextAlignCss","css","n","prototype","cached","setComponentTemplate","precompileTemplate","strictMode","scope","style","euiTextColorInlineStyle"],"mappings":";;;;;;;;;;;;AAqBO,SAASA,YAAAA,CAAa;AAAEC,EAAAA;CAA8B,EAAG;EAC9D,OAAO;AACLC,IAAAA,SAAA,EAAW,YAAA;AACXC,IAAAA,MAAA,EAAQ,CAAA;AACRC,IAAAA,UAAA,EAAYH,QAAA,CAASI,IAAI,CAACC,MAAM;AAChC,IAAA,kCAAA,EAAoC;AAAEJ,MAAAA,SAAA,EAAW;KAAa;AAC9D,IAAA,sFAAA,EACE;AAAEC,MAAAA,MAAA,EAAQ,CAAA;AAAGI,MAAAA,OAAA,EAAS;KAAE;AAC1B,IAAA,qCAAA,EAAuC;AACrCH,MAAAA,UAAA,EAAY,SAAA;AACZI,MAAAA,UAAA,EAAY,SAAA;AACZC,MAAAA,QAAA,EAAU;KACZ;AACA,IAAA,gCAAA,EAAkC;AAAEL,MAAAA,UAAA,EAAYH,QAAA,CAASI,IAAI,CAACK;KAAW;AACzE,IAAA,kBAAA,EAAoB;AAAEF,MAAAA,UAAA,EAAYP,QAAA,CAASI,IAAI,CAACM,MAAM,CAACC;KAAK;AAC5D,IAAA,cAAA,EAAgB;AAAEC,MAAAA,SAAA,EAAW;KAAS;AACtC,IAAA,yBAAA,EAA2B;AAAEC,MAAAA,MAAA,EAAQ;AAAO;GAC9C;AACF;AAEA;;AAmCA;;;AAGC;AACD,SAASC,OAAAA,CAAQC,SAA6B,EAAG;EAC/C,OAAQA,SAAA,IAAa,KAAK;AAC5B;AAEe,MAAMC,gBAAgBC,SAAA,CAAU;EAC7C,IACIC,OAAAA,GAAU;AACZ,IAAA,MAAMC,OAAA,GAAUC,mBAAmB,IAAI,CAAA;AACvC,IAAA,MAAMC,MAAA,GAASC,qBAAqBH,OAAA,EAASI,aAAA,CAAA;IAC7C,MAAM;MAAEC,KAAK;AAAEC,MAAAA;KAAW,GAAG,IAAI,CAACC,IAAI;AACtC;AACA,IAAA,OAAOC,SACLR,OAAA,EACApB,YAAA,CAAaoB,QAAQS,QAAQ,CAAA,EAC7BP,OAAOQ,OAAO,EACd,IAAI,CAACH,IAAI,CAACI,IAAI,KAAK,QAAQT,MAAA,CAAOU,gBAAgB,GAAGC,SAAA,EACrDX,MAAM,CAAC,IAAI,CAACK,IAAI,CAACO,IAAI,IAAI,GAAA,CAAI,EAC7BT,QAAQU,eAAA,CAAgBf,OAAA,EAASK,SAASQ,SAAA,EAC1CP,SAAA,GAAYU,gBAAgBV,SAAA,CAAA,GAAaO,SAAA,EACzC,IAAI,CAACN,IAAI,CAACU,GAAG,CAAA;AAEjB,EAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAhBCC,MAAA,CAAA,CAAA;AAAA;AAkBD,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,gLAAA,EAIA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAA7B,OAAA;QAAA8B,KAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;"}
@@ -1,5 +1,6 @@
1
1
  import Component from '@glimmer/component';
2
2
  import { cached } from '@glimmer/tracking';
3
+ import style from 'ember-style-modifier/modifiers/style';
3
4
  import { hexToRgb } from '../helpers/hex-to-rgb.js';
4
5
  import { isColorDark } from '../helpers/is-color-dark.js';
5
6
  import { getEuiThemeContext } from '../utils/emotion/consume.js';
@@ -48,39 +49,52 @@ function oneOf(values, value, fallback) {
48
49
  }
49
50
  return size;
50
51
  }
51
- get classes() {
52
+ get preset() {
52
53
  const {
53
54
  iconType
54
55
  } = this.args;
56
+ return typeof iconType === 'string' ? TOKEN_DEFAULTS[TOKEN_ALIASES[iconType] ?? iconType] : undefined;
57
+ }
58
+ get color() {
59
+ return this.args.color || this.preset?.color || 'gray';
60
+ }
61
+ get isCustomColor() {
62
+ return !TOKEN_COLORS.includes(this.color);
63
+ }
64
+ /**
65
+ * Upstream's inline `style` for a custom color. Inline, so each custom
66
+ * color doesn't add a class that stays in the style cache for good.
67
+ */
68
+ get inlineStyle() {
69
+ if (!this.isCustomColor) return {};
70
+ const color = this.color;
71
+ return oneOf(FILLS, this.args.fill, 'light') === 'none' ? {
72
+ color
73
+ } : {
74
+ color: isColorDark(...hexToRgb(color)) ? '#FFFFFF' : '#000000',
75
+ backgroundColor: color
76
+ };
77
+ }
78
+ get classes() {
55
79
  const context = getEuiThemeContext(this);
56
- const preset = typeof iconType === 'string' ? TOKEN_DEFAULTS[TOKEN_ALIASES[iconType] ?? iconType] : undefined;
57
- const color = this.args.color || preset?.color || 'gray';
80
+ const preset = this.preset;
81
+ const color = this.color;
58
82
  const shape = oneOf(SHAPES, this.args.shape || preset?.shape, 'circle');
59
83
  const fill = oneOf(FILLS, this.args.fill, 'light');
60
84
  // upstream builds the styles for the requested fill, before a custom
61
85
  // color switches the token to `dark`
62
86
  const styles = useEuiBorealisStyles(context, TOKEN_STYLES[fill]);
63
- let custom;
64
- let colorStyles = styles[color];
65
- if (!TOKEN_COLORS.includes(color)) {
66
- colorStyles = styles['customColor'];
67
- // Upstream sets these inline; a class keeps the caller's `style`.
68
- custom = fill === 'none' ? {
69
- color
70
- } : {
71
- color: isColorDark(...hexToRgb(color)) ? '#FFFFFF' : '#000000',
72
- backgroundColor: color
73
- };
74
- }
75
- return `euiToken ${euiClass(context, styles['euiToken'], styles[shape], styles[fill], styles[this.size], colorStyles, custom)}`;
87
+ const colorStyles = this.isCustomColor ? styles['customColor'] : styles[color];
88
+ return `euiToken ${euiClass(context, styles['euiToken'], styles[shape], styles[fill], styles[this.size], colorStyles)}`;
76
89
  }
77
90
  static {
78
91
  n(this.prototype, "classes", [cached]);
79
92
  }
80
93
  static {
81
- setComponentTemplate(precompileTemplate("<span class={{this.classes}} ...attributes>\n <EuiIcon @type={{@iconType}} @size={{this.iconSize}} @title={{@title}} @aria-label={{@aria-label}} @aria-labelledby={{@aria-labelledby}} aria-describedby={{@aria-describedby}} />\n</span>", {
94
+ setComponentTemplate(precompileTemplate("<span class={{this.classes}} ...attributes {{style this.inlineStyle}}>\n <EuiIcon @type={{@iconType}} @size={{this.iconSize}} @title={{@title}} @aria-label={{@aria-label}} @aria-labelledby={{@aria-labelledby}} aria-describedby={{@aria-describedby}} />\n</span>", {
82
95
  strictMode: true,
83
96
  scope: () => ({
97
+ style,
84
98
  EuiIcon
85
99
  })
86
100
  }), this);
@@ -1 +1 @@
1
- {"version":3,"file":"eui-token.js","sources":["../../src/components/eui-token.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached } from '@glimmer/tracking';\n\nimport { hexToRgb } from '../helpers/hex-to-rgb.ts';\nimport { isColorDark } from '../helpers/is-color-dark.ts';\nimport { getEuiThemeContext } from '../utils/emotion/consume.ts';\nimport { euiClass, useEuiBorealisStyles } from '../utils/eui/styles.ts';\nimport type { EuiBorealisContext } from '../utils/eui/theme.ts';\nimport { TOKEN_MAP } from '../utils/eui/styles.generated.ts';\nimport { euiTokenStyles, TOKEN_COLORS } from '../utils/eui/token.ts';\nimport EuiIcon from './eui-icon.gts';\n\nimport type { CSSObject } from '@emotion/css/create-instance';\nimport type { EuiTokenFill } from '../utils/eui/token.ts';\nimport type { IconType } from './eui-icon';\n\nexport const SIZES = ['xs', 's', 'm', 'l'] as const;\nexport const SHAPES = ['circle', 'square', 'rectangle'] as const;\nexport const FILLS = ['light', 'dark', 'none'] as const;\n\n/** One stable factory per fill, so styles memoize per resolved theme. */\nconst TOKEN_STYLES = Object.fromEntries(\n FILLS.map((fill) => [\n fill,\n (theme: EuiBorealisContext) => euiTokenStyles(theme, fill)\n ])\n) as Record<(typeof FILLS)[number], (theme: EuiBorealisContext) => ReturnType<typeof euiTokenStyles>>;\nexport { TOKEN_COLORS as COLORS };\n\ntype TokenSize = (typeof SIZES)[number];\ntype TokenShape = (typeof SHAPES)[number];\n\nconst TOKEN_DEFAULTS = TOKEN_MAP as Record<\n string,\n { shape?: TokenShape; color?: string }\n>;\n\n/**\n * Icons this addon still ships under their pre-rename names, mapped to the\n * upstream 123 token they became (so they keep a preset).\n */\nconst TOKEN_ALIASES: Record<string, string> = {\n tokenDenseVector: 'tokenVectorDense'\n};\n\nfunction oneOf<T extends string>(\n values: readonly T[],\n value: unknown,\n fallback: T\n): T {\n return (values as readonly unknown[]).includes(value) ? (value as T) : fallback;\n}\n\n/**\n * A small icon in a colored shape that tells the type of a value or code\n * symbol, e.g. a field's type (string, number, date) in a list of fields.\n */\nexport interface EuiTokenSignature {\n Element: HTMLSpanElement;\n Args: {\n /**\n * The icon: one of EUI's `token*` icons (`'tokenString'`,\n * `'tokenNumber'`, `'tokenDate'`, …), which come with their own shape\n * and color, or any other `EuiIcon` type.\n */\n iconType: IconType;\n /**\n * `'euiColorVis0'` to `'euiColorVis9'`, `'gray'`, or a hex color (which\n * forces `@fill=\"dark\"` unless `@fill=\"none\"`). Defaults to the token\n * icon's color, or `'gray'`.\n */\n color?: string;\n /** `'circle'`, `'square'` or `'rectangle'`. Defaults to the token icon's, or `'circle'`. */\n shape?: TokenShape;\n /**\n * `'light'` (tinted with a border), `'dark'` (solid) or `'none'`.\n * Defaults to `'light'`.\n */\n fill?: EuiTokenFill;\n /** `'xs'` (8px), `'s'` (16px), `'m'` (24px) or `'l'` (32px). Defaults to `'s'`. */\n size?: TokenSize;\n /** Title of the icon, read by screen readers, e.g. \"String field\". */\n title?: string;\n /** Accessible label of the icon, instead of `@title`. */\n 'aria-label'?: string;\n /** Id(s) of the element(s) labelling the icon. */\n 'aria-labelledby'?: string;\n /** Id(s) of the element(s) describing the icon. */\n 'aria-describedby'?: string;\n };\n}\n\n/** Native Ember token using the upstream EUI 123 / Borealis styles. */\nexport default class EuiToken extends Component<EuiTokenSignature> {\n get size(): TokenSize {\n return oneOf(SIZES, this.args.size, 's');\n }\n\n /** Icons have no `xs`, and token icons look best one size up at `s`. */\n get iconSize(): 's' | 'm' | 'l' {\n const { iconType } = this.args;\n const size = this.size;\n\n if (size === 'xs') return 's';\n if (typeof iconType === 'string' && iconType.indexOf('token') === 0 && size === 's') {\n return 'm';\n }\n\n return size;\n }\n\n @cached\n get classes(): string {\n const { iconType } = this.args;\n const context = getEuiThemeContext(this);\n const preset =\n typeof iconType === 'string'\n ? TOKEN_DEFAULTS[TOKEN_ALIASES[iconType] ?? iconType]\n : undefined;\n const color = this.args.color || preset?.color || 'gray';\n const shape = oneOf(SHAPES, this.args.shape || preset?.shape, 'circle');\n const fill = oneOf(FILLS, this.args.fill, 'light');\n // upstream builds the styles for the requested fill, before a custom\n // color switches the token to `dark`\n const styles = useEuiBorealisStyles(context, TOKEN_STYLES[fill]);\n let custom: CSSObject | undefined;\n let colorStyles = styles[color];\n\n if (!(TOKEN_COLORS as readonly string[]).includes(color)) {\n colorStyles = styles['customColor'];\n // Upstream sets these inline; a class keeps the caller's `style`.\n custom =\n fill === 'none'\n ? { color }\n : {\n color: isColorDark(...hexToRgb(color)) ? '#FFFFFF' : '#000000',\n backgroundColor: color\n };\n }\n\n return `euiToken ${euiClass(\n context,\n styles['euiToken'],\n styles[shape],\n styles[fill],\n styles[this.size],\n colorStyles,\n custom\n )}`;\n }\n\n <template>\n <span class={{this.classes}} ...attributes>\n <EuiIcon\n @type={{@iconType}}\n @size={{this.iconSize}}\n @title={{@title}}\n @aria-label={{@aria-label}}\n @aria-labelledby={{@aria-labelledby}}\n aria-describedby={{@aria-describedby}}\n />\n </span>\n </template>\n}\n"],"names":["SIZES","SHAPES","FILLS","TOKEN_STYLES","Object","fromEntries","map","fill","theme","euiTokenStyles","TOKEN_DEFAULTS","TOKEN_MAP","TOKEN_ALIASES","tokenDenseVector","oneOf","values","value","fallback","includes","EuiToken","Component","size","args","iconSize","iconType","indexOf","classes","context","getEuiThemeContext","preset","undefined","color","shape","styles","useEuiBorealisStyles","custom","colorStyles","TOKEN_COLORS","isColorDark","hexToRgb","backgroundColor","euiClass","n","prototype","cached","setComponentTemplate","precompileTemplate","strictMode","scope","EuiIcon"],"mappings":"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"}
1
+ {"version":3,"file":"eui-token.js","sources":["../../src/components/eui-token.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached } from '@glimmer/tracking';\n\nimport style from 'ember-style-modifier/modifiers/style';\n\nimport { hexToRgb } from '../helpers/hex-to-rgb.ts';\nimport { isColorDark } from '../helpers/is-color-dark.ts';\nimport { getEuiThemeContext } from '../utils/emotion/consume.ts';\nimport { euiClass, useEuiBorealisStyles } from '../utils/eui/styles.ts';\nimport type { EuiBorealisContext } from '../utils/eui/theme.ts';\nimport { TOKEN_MAP } from '../utils/eui/styles.generated.ts';\nimport { euiTokenStyles, TOKEN_COLORS } from '../utils/eui/token.ts';\nimport EuiIcon from './eui-icon.gts';\n\nimport type { EuiTokenFill } from '../utils/eui/token.ts';\nimport type { IconType } from './eui-icon';\n\nexport const SIZES = ['xs', 's', 'm', 'l'] as const;\nexport const SHAPES = ['circle', 'square', 'rectangle'] as const;\nexport const FILLS = ['light', 'dark', 'none'] as const;\n\n/** One stable factory per fill, so styles memoize per resolved theme. */\nconst TOKEN_STYLES = Object.fromEntries(\n FILLS.map((fill) => [\n fill,\n (theme: EuiBorealisContext) => euiTokenStyles(theme, fill)\n ])\n) as Record<(typeof FILLS)[number], (theme: EuiBorealisContext) => ReturnType<typeof euiTokenStyles>>;\nexport { TOKEN_COLORS as COLORS };\n\ntype TokenSize = (typeof SIZES)[number];\ntype TokenShape = (typeof SHAPES)[number];\n\nconst TOKEN_DEFAULTS = TOKEN_MAP as Record<\n string,\n { shape?: TokenShape; color?: string }\n>;\n\n/**\n * Icons this addon still ships under their pre-rename names, mapped to the\n * upstream 123 token they became (so they keep a preset).\n */\nconst TOKEN_ALIASES: Record<string, string> = {\n tokenDenseVector: 'tokenVectorDense'\n};\n\nfunction oneOf<T extends string>(\n values: readonly T[],\n value: unknown,\n fallback: T\n): T {\n return (values as readonly unknown[]).includes(value) ? (value as T) : fallback;\n}\n\n/**\n * A small icon in a colored shape that tells the type of a value or code\n * symbol, e.g. a field's type (string, number, date) in a list of fields.\n */\nexport interface EuiTokenSignature {\n Element: HTMLSpanElement;\n Args: {\n /**\n * The icon: one of EUI's `token*` icons (`'tokenString'`,\n * `'tokenNumber'`, `'tokenDate'`, …), which come with their own shape\n * and color, or any other `EuiIcon` type.\n */\n iconType: IconType;\n /**\n * `'euiColorVis0'` to `'euiColorVis9'`, `'gray'`, or a hex color (which\n * forces `@fill=\"dark\"` unless `@fill=\"none\"`). Defaults to the token\n * icon's color, or `'gray'`.\n */\n color?: string;\n /** `'circle'`, `'square'` or `'rectangle'`. Defaults to the token icon's, or `'circle'`. */\n shape?: TokenShape;\n /**\n * `'light'` (tinted with a border), `'dark'` (solid) or `'none'`.\n * Defaults to `'light'`.\n */\n fill?: EuiTokenFill;\n /** `'xs'` (8px), `'s'` (16px), `'m'` (24px) or `'l'` (32px). Defaults to `'s'`. */\n size?: TokenSize;\n /** Title of the icon, read by screen readers, e.g. \"String field\". */\n title?: string;\n /** Accessible label of the icon, instead of `@title`. */\n 'aria-label'?: string;\n /** Id(s) of the element(s) labelling the icon. */\n 'aria-labelledby'?: string;\n /** Id(s) of the element(s) describing the icon. */\n 'aria-describedby'?: string;\n };\n}\n\n/** Native Ember token using the upstream EUI 123 / Borealis styles. */\nexport default class EuiToken extends Component<EuiTokenSignature> {\n get size(): TokenSize {\n return oneOf(SIZES, this.args.size, 's');\n }\n\n /** Icons have no `xs`, and token icons look best one size up at `s`. */\n get iconSize(): 's' | 'm' | 'l' {\n const { iconType } = this.args;\n const size = this.size;\n\n if (size === 'xs') return 's';\n if (typeof iconType === 'string' && iconType.indexOf('token') === 0 && size === 's') {\n return 'm';\n }\n\n return size;\n }\n\n get preset() {\n const { iconType } = this.args;\n return typeof iconType === 'string'\n ? TOKEN_DEFAULTS[TOKEN_ALIASES[iconType] ?? iconType]\n : undefined;\n }\n\n get color(): string {\n return this.args.color || this.preset?.color || 'gray';\n }\n\n get isCustomColor(): boolean {\n return !(TOKEN_COLORS as readonly string[]).includes(this.color);\n }\n\n /**\n * Upstream's inline `style` for a custom color. Inline, so each custom\n * color doesn't add a class that stays in the style cache for good.\n */\n get inlineStyle(): Record<string, string> {\n if (!this.isCustomColor) return {};\n const color = this.color;\n return oneOf(FILLS, this.args.fill, 'light') === 'none'\n ? { color }\n : {\n color: isColorDark(...hexToRgb(color)) ? '#FFFFFF' : '#000000',\n backgroundColor: color\n };\n }\n\n @cached\n get classes(): string {\n const context = getEuiThemeContext(this);\n const preset = this.preset;\n const color = this.color;\n const shape = oneOf(SHAPES, this.args.shape || preset?.shape, 'circle');\n const fill = oneOf(FILLS, this.args.fill, 'light');\n // upstream builds the styles for the requested fill, before a custom\n // color switches the token to `dark`\n const styles = useEuiBorealisStyles(context, TOKEN_STYLES[fill]);\n const colorStyles = this.isCustomColor\n ? styles['customColor']\n : styles[color];\n\n return `euiToken ${euiClass(\n context,\n styles['euiToken'],\n styles[shape],\n styles[fill],\n styles[this.size],\n colorStyles\n )}`;\n }\n\n <template>\n <span class={{this.classes}} ...attributes {{style this.inlineStyle}}>\n <EuiIcon\n @type={{@iconType}}\n @size={{this.iconSize}}\n @title={{@title}}\n @aria-label={{@aria-label}}\n @aria-labelledby={{@aria-labelledby}}\n aria-describedby={{@aria-describedby}}\n />\n </span>\n </template>\n}\n"],"names":["SIZES","SHAPES","FILLS","TOKEN_STYLES","Object","fromEntries","map","fill","theme","euiTokenStyles","TOKEN_DEFAULTS","TOKEN_MAP","TOKEN_ALIASES","tokenDenseVector","oneOf","values","value","fallback","includes","EuiToken","Component","size","args","iconSize","iconType","indexOf","preset","undefined","color","isCustomColor","TOKEN_COLORS","inlineStyle","isColorDark","hexToRgb","backgroundColor","classes","context","getEuiThemeContext","shape","styles","useEuiBorealisStyles","colorStyles","euiClass","n","prototype","cached","setComponentTemplate","precompileTemplate","strictMode","scope","style","EuiIcon"],"mappings":"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"}
@@ -6,7 +6,7 @@ import { action } from '@ember/object';
6
6
  import { guidFor } from '@ember/object/internals';
7
7
  import didInsert from '@ember/render-modifiers/modifiers/did-insert';
8
8
  import didUpdate from '@ember/render-modifiers/modifiers/did-update';
9
- import { next, cancel, later, scheduleOnce } from '@ember/runloop';
9
+ import { cancel, next, later, scheduleOnce } from '@ember/runloop';
10
10
  import { isHTMLSafe } from '@ember/template';
11
11
  import { modifier } from 'ember-modifier';
12
12
  import style from 'ember-style-modifier/modifiers/style';
@@ -187,6 +187,7 @@ class EuiToolTip extends Component {
187
187
  }
188
188
  #_attachTo = (i(this, "_attachTo"), void 0);
189
189
  timeoutId;
190
+ attachToTimer;
190
191
  updateAttachTo() {
191
192
  if (!this.args.attachTo && this._attachTo) {
192
193
  this.removeAttachToHandlers();
@@ -194,7 +195,12 @@ class EuiToolTip extends Component {
194
195
  return;
195
196
  }
196
197
  if (this.args.attachTo && this.args.attachTo !== this._attachTo) {
197
- next(() => {
198
+ cancel(this.attachToTimer);
199
+ this.attachToTimer = next(() => {
200
+ this.attachToTimer = undefined;
201
+ // destroyed in the same tick: willDestroy already removed the
202
+ // handlers, so adding them now would leave them on `@attachTo`
203
+ if (this.isDestroying || this.isDestroyed) return;
198
204
  this.removeAttachToHandlers();
199
205
  this._attachTo = this.args.attachTo;
200
206
  this.setupAttachToHandlers();
@@ -447,21 +453,6 @@ class EuiToolTip extends Component {
447
453
  static {
448
454
  n(this.prototype, "onKeyDown", [action]);
449
455
  }
450
- hasFocusMouseMoveListener() {
451
- this.hideToolTip();
452
- window.removeEventListener('mousemove', this.hasFocusMouseMoveListener);
453
- }
454
- static {
455
- n(this.prototype, "hasFocusMouseMoveListener", [action]);
456
- }
457
- onKeyUp(event) {
458
- if (event.key === keys.TAB) {
459
- window.addEventListener('mousemove', this.hasFocusMouseMoveListener);
460
- }
461
- }
462
- static {
463
- n(this.prototype, "onKeyUp", [action]);
464
- }
465
456
  onFocus() {
466
457
  this.hasFocus = true;
467
458
  this.showToolTip();
@@ -502,6 +493,7 @@ class EuiToolTip extends Component {
502
493
  willDestroy() {
503
494
  super.willDestroy();
504
495
  this.clearAnimationTimeout();
496
+ cancel(this.attachToTimer);
505
497
  toolTipManager.deregisterToolTip(this.hideToolTip);
506
498
  this.removeAttachToHandlers();
507
499
  window.removeEventListener('scroll', this.positionToolTip, true);
@@ -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 { concat } from '@ember/helper';\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-update';\nimport { cancel, later, next, scheduleOnce } from '@ember/runloop';\nimport { isHTMLSafe } from '@ember/template';\nimport type { SafeString } from '@ember/template';\n\nimport { modifier } from 'ember-modifier';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport cssStyle from '../-private/css-style.ts';\nimport spreadAttributes from '../-private/eui-spread-attributes.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport { getEuiThemeContext } from '../utils/emotion/consume.ts';\nimport { euiClass, useEuiBorealisStyles } from '../utils/eui/styles.ts';\nimport type { EuiCss } from '../utils/eui/styles.ts';\nimport {\n euiToolTipAnchorStyles,\n euiToolTipStyles\n} from '../utils/eui/styles.generated.ts';\nimport { keys } from '../utils/keys.ts';\nimport { findPopoverPosition, getElementZIndex } from '../utils/popover/index.ts';\nimport EuiPortal from './eui-portal.gts';\nimport EuiToolTipPopover from './eui-tool-tip-popover.gts';\n\nimport type { CssProperties } from '../-private/css-style.ts';\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 zIndex?: string;\n}\n\ntype EuiToolTipDisplay = 'inlineBlock' | 'block' | 'flex';\n\n/**\n * Upstream `anchorProps`, for the `span.euiToolTipAnchor` wrapper.\n * `className` and `css` are added to its classes, `style` is its inline\n * style (upstream's object of CSS properties, or a safe string;\n * `@anchorStyle` wins), `on<Event>` functions (e.g. `onMouseEnter`,\n * `onMouseLeave`) are added as listeners next to the tooltip's own, and\n * any other key (`id`, `data-test-subj`, `aria-*`, …) is set as an\n * attribute.\n */\nexport interface EuiToolTipAnchorProps {\n className?: string;\n css?: EuiCss;\n style?: CssProperties | SafeString | string;\n [key: string]: unknown;\n}\n\n/** `anchorProps.style` as a `style` attribute value. */\nexport function anchorPropsStyle(\n style: EuiToolTipAnchorProps['style']\n): string | SafeString | undefined {\n if (!style) return undefined;\n if (typeof style === 'string' || isHTMLSafe(style)) {\n return style as string | SafeString;\n }\n return cssStyle(style as CssProperties);\n}\n\nconst ANCHOR_PROPS_HANDLED = ['className', 'css', 'style'] as const;\n\n/** `on<Event>` functions of `@anchorProps` as listeners (upstream spread). */\nconst anchorListeners = modifier(\n (element: HTMLElement, [props]: [EuiToolTipAnchorProps | undefined]) => {\n const cleanups: Array<() => void> = [];\n\n for (const [key, value] of Object.entries(props ?? {})) {\n if (!/^on[A-Z]/.test(key) || typeof value !== 'function') continue;\n\n const type = key.slice(2).toLowerCase();\n\n element.addEventListener(type, value as EventListener);\n cleanups.push(() =>\n element.removeEventListener(type, value as EventListener)\n );\n }\n\n return () => cleanups.forEach((cleanup) => cleanup());\n }\n);\n\n/** Upstream default distance between the anchor and the tooltip. */\nexport const DEFAULT_TOOLTIP_OFFSET = 16;\n\n/** A tooltip shown right after another closes skips the fade in (upstream). */\nconst SKIP_ANIMATION_WINDOW = 250;\n\n/**\n * Upstream `toolTipManager`: one tooltip is visible at a time, and a\n * tooltip replacing another (or shown right after one closed) appears\n * without the entry animation.\n */\nclass ToolTipManager {\n toolTipsToHide = new Set<() => void>();\n lastHiddenAt: number | null = null;\n\n registerTooltip(hideCallback: () => void): { skipAnimation: boolean } | null {\n if (this.toolTipsToHide.has(hideCallback)) return null;\n\n const hadOpen = this.toolTipsToHide.size > 0;\n const recentlyClosed =\n this.lastHiddenAt !== null &&\n Date.now() - this.lastHiddenAt < SKIP_ANIMATION_WINDOW;\n\n this.toolTipsToHide.forEach((hide) => hide());\n this.toolTipsToHide.clear();\n this.toolTipsToHide.add(hideCallback);\n\n return { skipAnimation: hadOpen || recentlyClosed };\n }\n\n deregisterToolTip(hideCallback: () => void): void {\n if (this.toolTipsToHide.delete(hideCallback)) this.lastHiddenAt = Date.now();\n }\n}\n\nexport const toolTipManager = new ToolTipManager();\n\n/**\n * Upstream links the anchor's child to the visible tooltip with\n * `aria-describedby` (the tooltip id first, existing ids kept). Only the id\n * added here is removed again.\n */\nconst describedBy = modifier(\n (\n anchor: HTMLElement,\n [target, id, isVisible]: [Element | null | undefined, string, boolean]\n ) => {\n const element = target ?? anchor.firstElementChild;\n\n if (!element || !isVisible) return;\n\n const current = (element.getAttribute('aria-describedby') ?? '')\n .split(/\\s+/)\n .filter(Boolean);\n\n if (current.includes(id)) return;\n\n element.setAttribute('aria-describedby', [id, ...current].join(' '));\n\n return () => {\n const remaining = (element.getAttribute('aria-describedby') ?? '')\n .split(/\\s+/)\n .filter((token) => token && token !== id);\n\n if (remaining.length) {\n element.setAttribute('aria-describedby', remaining.join(' '));\n } else {\n element.removeAttribute('aria-describedby');\n }\n };\n }\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};\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 * Display of the anchor wrapper: `'inlineBlock'`, `'block'` or `'flex'`.\n * Defaults to `'inlineBlock'`.\n */\n display?: EuiToolTipDisplay;\n /**\n * Distance between the anchor and the tooltip. Defaults to `16`.\n */\n offset?: number;\n /**\n * Keeps the tooltip visual only: the anchor's element is not linked to\n * it with `aria-describedby`, and Escape does not stop propagating.\n * Use when the anchor's label already says the same. Defaults to `false`.\n */\n disableScreenReaderOutput?: boolean;\n /**\n * Delay before showing: `'regular'` (250ms) or `'long'` (for\n * repeated items). Defaults to `'regular'`.\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: `'top'`, `'right'`, `'bottom'` or `'left'`. If\n * there is not enough room for it this will be changed. Defaults to\n * `'top'`.\n */\n position?: ToolTipPositions;\n\n /**\n * Shows the tooltip for another element (or selector) instead of the\n * `<:anchor>` block's content.\n */\n attachTo?: undefined | HTMLElement | string | null;\n\n /**\n * Repositions the tooltip when any scrollable ancestor (or the window)\n * scrolls. Needed for fixed-position anchors or a tooltip inside a\n * scrollable container. Defaults to `false`.\n */\n repositionOnScroll?: boolean;\n\n /** Shows (`true`) or hides (`false`) the tooltip from outside. */\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 /** Called when the anchor gets focus. */\n onFocus?: () => void;\n /** Called when the anchor loses focus. */\n onBlur?: () => void;\n\n /** Render the title. Defaults to `true`. */\n hasTitle?: boolean;\n /**\n * Extra styles composed last into the tooltip's class (like upstream's\n * `css` prop). Prefer this to `@className` for styles.\n */\n css?: EuiCss;\n /**\n * Extra styles composed last into the anchor wrapper's class (like\n * upstream's `anchorProps.css`). Prefer this to `@anchorClassName` for\n * styles.\n */\n anchorCss?: EuiCss;\n /**\n * Inline style of the anchor wrapper (upstream's `anchorProps.style`),\n * a style string or a safe string.\n */\n anchorStyle?: string | SafeString;\n /**\n * Props for the anchor wrapper (upstream `anchorProps`), see\n * {@link EuiToolTipAnchorProps}.\n */\n anchorProps?: EuiToolTipAnchorProps;\n};\n\n/**\n * A short hint shown on hover or focus of its anchor. Keep the content\n * short and non-essential; it is not reachable on touch screens.\n */\nexport interface EuiToolTipSignature {\n Element: EuiTooltipPopoverSignature['Element'];\n Args: EuiTooltipArgs;\n Blocks: {\n /** Same as `<:anchor>`. */\n default?: [id: string];\n /** The title, instead of `@title`. */\n title?: [];\n /** The content, instead of `@content`. */\n content?: [];\n /**\n * The element the tooltip is for (hover/focus shows it); yields the\n * tooltip's id for `aria-describedby`.\n */\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 skipAnimation = false;\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.onAnchorBlur);\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.onAnchorBlur);\n }\n }\n\n private listeningToScroll = false;\n\n /** Adds or removes the capturing scroll listener (`@repositionOnScroll`). */\n @action\n syncScrollListener(): void {\n const wanted = this.args.repositionOnScroll === true;\n\n if (wanted && !this.listeningToScroll) {\n window.addEventListener('scroll', this.positionToolTip, true);\n } else if (!wanted && this.listeningToScroll) {\n window.removeEventListener('scroll', this.positionToolTip, true);\n }\n\n this.listeningToScroll = wanted;\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.markVisible();\n };\n\n this.timeoutId = later(\n this,\n () => {\n scheduleOnce('afterRender', this, fn);\n },\n delayToMsMap[this.delay]\n );\n }\n }\n\n /** Shows the tooltip through the manager (hides any other one). */\n markVisible(): void {\n if (this.isDestroying || this.isDestroyed) return;\n\n const result = toolTipManager.registerTooltip(this.hideToolTip);\n\n if (result) this.skipAnimation = result.skipAnimation;\n\n this.visible = true;\n }\n\n get anchorDisplay(): EuiToolTipDisplay {\n return this.args.display ?? 'inlineBlock';\n }\n\n /** Upstream `euiToolTipAnchorStyles`: display and disabled children. */\n @cached\n get anchorClasses(): string {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiToolTipAnchorStyles);\n\n return `euiToolTipAnchor ${euiClass(\n context,\n styles.euiToolTipAnchor,\n styles[this.anchorDisplay] ?? styles.inlineBlock,\n this.args.anchorCss,\n this.args.anchorProps?.css\n )}`;\n }\n\n get anchorStyle(): string | SafeString | undefined {\n return this.args.anchorStyle ?? anchorPropsStyle(this.args.anchorProps?.style);\n }\n\n get anchorPropsHandled(): readonly string[] {\n return ANCHOR_PROPS_HANDLED;\n }\n\n @cached\n get arrowClasses(): string {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiToolTipStyles);\n\n return `euiToolTip__arrow ${euiClass(\n context,\n styles.euiToolTip__arrow,\n styles.arrowPositions[this.calculatedPosition]\n )}`;\n }\n\n get popoverStyles(): ToolTipStyles & { animation?: string } {\n // inline `animation: none` overrides the fade in (upstream)\n return this.skipAnimation\n ? { ...this.toolTipStyles, animation: 'none' }\n : this.toolTipStyles;\n }\n\n get describesAnchor(): boolean {\n return this.visible && !this.args.disableScreenReaderOutput;\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: this.args.offset ?? DEFAULT_TOOLTIP_OFFSET,\n // upstream: the arrow stays out of the control-radius corners\n arrowConfig: {\n arrowWidth: 12,\n arrowBuffer: 4,\n borderRadius:\n parseFloat(\n String(getEuiThemeContext(this).upstream.euiTheme.border.radius.control)\n ) || undefined\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 // Upstream's tooltip stays at `levels.toast`; an anchor inside a layer\n // stacked higher (e.g. an options list or popover in a modal) would hide\n // it, so never stack below the anchor.\n const { levels } = getEuiThemeContext(this).upstream.euiTheme;\n const anchorZIndex = getElementZIndex(\n this._anchor as HTMLElement,\n this.popover\n );\n if (anchorZIndex >= Number(levels.toast)) {\n toolTipStyles.zIndex = String(anchorZIndex + 1);\n }\n\n if (!this.visible) this.markVisible();\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 toolTipManager.deregisterToolTip(this.hideToolTip);\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 /** Escape hides the tooltip (upstream). */\n @action\n onKeyDown(event: KeyboardEvent): void {\n if (event.key !== keys.ESCAPE) return;\n\n // a visual-only tooltip does not take the Escape key from the page\n if (!this.args.disableScreenReaderOutput && this.visible) {\n event.stopPropagation();\n }\n\n this.hasFocus = false;\n this.hideToolTip();\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 /** The anchor lost focus: hide, then `@onBlur` (upstream). */\n @action\n onAnchorBlur(): void {\n this.onBlur();\n this.args.onBlur?.();\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 toolTipManager.deregisterToolTip(this.hideToolTip);\n this.removeAttachToHandlers();\n window.removeEventListener('scroll', this.positionToolTip, true);\n this.listeningToScroll = false;\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 {{didInsert this.syncScrollListener}}\n {{didUpdate this.syncScrollListener @repositionOnScroll}}\n {{didUpdate this.updateAttachTo @attachTo}}\n {{describedBy this.attachTo this.id this.describesAnchor}}\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 {{! A11y: NVDA merges identical markup into one stop; the id keeps\n wrappers apart (upstream) }}\n <span\n id={{if (not @disableScreenReaderOutput) (concat this.id \"-wrapper\")}}\n class={{classNames\n this.anchorClasses\n @anchorClassName\n @anchorProps.className\n }}\n style={{this.anchorStyle}}\n {{spreadAttributes @anchorProps this.anchorPropsHandled}}\n {{anchorListeners @anchorProps}}\n {{didInsert this.didInsertAnchor}}\n {{didInsert this.syncScrollListener}}\n {{didUpdate this.syncScrollListener @repositionOnScroll}}\n {{describedBy null this.id this.describesAnchor}}\n {{on \"keydown\" this.onKeyDown}}\n {{on \"mouseover\" this.showToolTip}}\n {{on \"focusin\" this.onFocus}}\n {{on \"focusout\" this.onAnchorBlur}}\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 \"euiToolTip\" @className}}\n @calculatedPosition={{this.calculatedPosition}}\n @positionToolTip={{this.positionToolTip}}\n @popoverRef={{this.setPopoverRef}}\n @css={{@css}}\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.popoverStyles}}\n >\n <:title>\n {{#if hasTitleBlock}}\n {{yield to=\"title\"}}\n {{else}}\n {{@title}}\n {{/if}}\n </:title>\n <:content>\n <div\n class={{this.arrowClasses}}\n {{style this.arrowStyles}}\n ></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","anchorPropsStyle","style","undefined","isHTMLSafe","cssStyle","ANCHOR_PROPS_HANDLED","anchorListeners","modifier","element","props","cleanups","key","value","Object","entries","test","type","slice","toLowerCase","addEventListener","push","removeEventListener","forEach","cleanup","DEFAULT_TOOLTIP_OFFSET","SKIP_ANIMATION_WINDOW","ToolTipManager","toolTipsToHide","Set","lastHiddenAt","registerTooltip","hideCallback","has","hadOpen","size","recentlyClosed","Date","now","hide","clear","add","skipAnimation","deregisterToolTip","delete","toolTipManager","describedBy","anchor","target","id","isVisible","firstElementChild","current","getAttribute","split","filter","Boolean","includes","setAttribute","join","remaining","token","length","removeAttribute","DEFAULT_TOOLTIP_STYLES","top","left","opacity","visibility","EuiToolTip","Component","popover","g","prototype","argOrDefaultDecorator","i","tracked","position","args","guidFor","timeoutId","updateAttachTo","attachTo","_attachTo","removeAttachToHandlers","next","setupAttachToHandlers","n","action","showToolTip","onFocus","onMouseOut","onAnchorBlur","positionToolTip","listeningToScroll","syncScrollListener","wanted","repositionOnScroll","window","clearAnimationTimeout","cancel","visibleDidUpdate","visible","requestAnimationFrame","testAnchor","document","body","contains","_anchor","hideToolTip","didInsertAnchor","ref","setPopoverRef","toolTipStyles","arrowStyles","fn","markVisible","later","scheduleOnce","delay","isDestroying","isDestroyed","result","anchorDisplay","display","anchorClasses","context","getEuiThemeContext","styles","useEuiBorealisStyles","euiToolTipAnchorStyles","euiClass","euiToolTipAnchor","inlineBlock","anchorCss","anchorProps","css","cached","anchorStyle","anchorPropsHandled","arrowClasses","euiToolTipStyles","euiToolTip__arrow","arrowPositions","calculatedPosition","popoverStyles","animation","describesAnchor","disableScreenReaderOutput","querySelector","requestedPosition","arrow","findPopoverPosition","offset","arrowConfig","arrowWidth","arrowBuffer","borderRadius","parseFloat","String","upstream","euiTheme","border","radius","control","windowWidth","documentElement","clientWidth","innerWidth","useRightValue","right","offsetWidth","levels","anchorZIndex","getElementZIndex","Number","toast","zIndex","isShown","onKeyDown","event","keys","ESCAPE","stopPropagation","hasFocus","hasFocusMouseMoveListener","onKeyUp","TAB","onBlur","relatedTarget","willDestroy","setComponentTemplate","precompileTemplate","strictMode","scope","didInsert","didUpdate","eq","not","concat","classNames","spreadAttributes","on","and","or","EuiPortal","EuiToolTipPopover","argOrDefault","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 { concat } from '@ember/helper';\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-update';\nimport { cancel, later, next, scheduleOnce } from '@ember/runloop';\nimport { isHTMLSafe } from '@ember/template';\nimport type { SafeString } from '@ember/template';\n\nimport { modifier } from 'ember-modifier';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport cssStyle from '../-private/css-style.ts';\nimport spreadAttributes from '../-private/eui-spread-attributes.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport { getEuiThemeContext } from '../utils/emotion/consume.ts';\nimport { euiClass, useEuiBorealisStyles } from '../utils/eui/styles.ts';\nimport type { EuiCss } from '../utils/eui/styles.ts';\nimport {\n euiToolTipAnchorStyles,\n euiToolTipStyles\n} from '../utils/eui/styles.generated.ts';\nimport { keys } from '../utils/keys.ts';\nimport { findPopoverPosition, getElementZIndex } from '../utils/popover/index.ts';\nimport EuiPortal from './eui-portal.gts';\nimport EuiToolTipPopover from './eui-tool-tip-popover.gts';\n\nimport type { CssProperties } from '../-private/css-style.ts';\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 zIndex?: string;\n}\n\ntype EuiToolTipDisplay = 'inlineBlock' | 'block' | 'flex';\n\n/**\n * Upstream `anchorProps`, for the `span.euiToolTipAnchor` wrapper.\n * `className` and `css` are added to its classes, `style` is its inline\n * style (upstream's object of CSS properties, or a safe string;\n * `@anchorStyle` wins), `on<Event>` functions (e.g. `onMouseEnter`,\n * `onMouseLeave`) are added as listeners next to the tooltip's own, and\n * any other key (`id`, `data-test-subj`, `aria-*`, …) is set as an\n * attribute.\n */\nexport interface EuiToolTipAnchorProps {\n className?: string;\n css?: EuiCss;\n style?: CssProperties | SafeString | string;\n [key: string]: unknown;\n}\n\n/** `anchorProps.style` as a `style` attribute value. */\nexport function anchorPropsStyle(\n style: EuiToolTipAnchorProps['style']\n): string | SafeString | undefined {\n if (!style) return undefined;\n if (typeof style === 'string' || isHTMLSafe(style)) {\n return style as string | SafeString;\n }\n return cssStyle(style as CssProperties);\n}\n\nconst ANCHOR_PROPS_HANDLED = ['className', 'css', 'style'] as const;\n\n/** `on<Event>` functions of `@anchorProps` as listeners (upstream spread). */\nconst anchorListeners = modifier(\n (element: HTMLElement, [props]: [EuiToolTipAnchorProps | undefined]) => {\n const cleanups: Array<() => void> = [];\n\n for (const [key, value] of Object.entries(props ?? {})) {\n if (!/^on[A-Z]/.test(key) || typeof value !== 'function') continue;\n\n const type = key.slice(2).toLowerCase();\n\n element.addEventListener(type, value as EventListener);\n cleanups.push(() =>\n element.removeEventListener(type, value as EventListener)\n );\n }\n\n return () => cleanups.forEach((cleanup) => cleanup());\n }\n);\n\n/** Upstream default distance between the anchor and the tooltip. */\nexport const DEFAULT_TOOLTIP_OFFSET = 16;\n\n/** A tooltip shown right after another closes skips the fade in (upstream). */\nconst SKIP_ANIMATION_WINDOW = 250;\n\n/**\n * Upstream `toolTipManager`: one tooltip is visible at a time, and a\n * tooltip replacing another (or shown right after one closed) appears\n * without the entry animation.\n */\nclass ToolTipManager {\n toolTipsToHide = new Set<() => void>();\n lastHiddenAt: number | null = null;\n\n registerTooltip(hideCallback: () => void): { skipAnimation: boolean } | null {\n if (this.toolTipsToHide.has(hideCallback)) return null;\n\n const hadOpen = this.toolTipsToHide.size > 0;\n const recentlyClosed =\n this.lastHiddenAt !== null &&\n Date.now() - this.lastHiddenAt < SKIP_ANIMATION_WINDOW;\n\n this.toolTipsToHide.forEach((hide) => hide());\n this.toolTipsToHide.clear();\n this.toolTipsToHide.add(hideCallback);\n\n return { skipAnimation: hadOpen || recentlyClosed };\n }\n\n deregisterToolTip(hideCallback: () => void): void {\n if (this.toolTipsToHide.delete(hideCallback)) this.lastHiddenAt = Date.now();\n }\n}\n\nexport const toolTipManager = new ToolTipManager();\n\n/**\n * Upstream links the anchor's child to the visible tooltip with\n * `aria-describedby` (the tooltip id first, existing ids kept). Only the id\n * added here is removed again.\n */\nconst describedBy = modifier(\n (\n anchor: HTMLElement,\n [target, id, isVisible]: [Element | null | undefined, string, boolean]\n ) => {\n const element = target ?? anchor.firstElementChild;\n\n if (!element || !isVisible) return;\n\n const current = (element.getAttribute('aria-describedby') ?? '')\n .split(/\\s+/)\n .filter(Boolean);\n\n if (current.includes(id)) return;\n\n element.setAttribute('aria-describedby', [id, ...current].join(' '));\n\n return () => {\n const remaining = (element.getAttribute('aria-describedby') ?? '')\n .split(/\\s+/)\n .filter((token) => token && token !== id);\n\n if (remaining.length) {\n element.setAttribute('aria-describedby', remaining.join(' '));\n } else {\n element.removeAttribute('aria-describedby');\n }\n };\n }\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};\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 * Display of the anchor wrapper: `'inlineBlock'`, `'block'` or `'flex'`.\n * Defaults to `'inlineBlock'`.\n */\n display?: EuiToolTipDisplay;\n /**\n * Distance between the anchor and the tooltip. Defaults to `16`.\n */\n offset?: number;\n /**\n * Keeps the tooltip visual only: the anchor's element is not linked to\n * it with `aria-describedby`, and Escape does not stop propagating.\n * Use when the anchor's label already says the same. Defaults to `false`.\n */\n disableScreenReaderOutput?: boolean;\n /**\n * Delay before showing: `'regular'` (250ms) or `'long'` (for\n * repeated items). Defaults to `'regular'`.\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: `'top'`, `'right'`, `'bottom'` or `'left'`. If\n * there is not enough room for it this will be changed. Defaults to\n * `'top'`.\n */\n position?: ToolTipPositions;\n\n /**\n * Shows the tooltip for another element (or selector) instead of the\n * `<:anchor>` block's content.\n */\n attachTo?: undefined | HTMLElement | string | null;\n\n /**\n * Repositions the tooltip when any scrollable ancestor (or the window)\n * scrolls. Needed for fixed-position anchors or a tooltip inside a\n * scrollable container. Defaults to `false`.\n */\n repositionOnScroll?: boolean;\n\n /** Shows (`true`) or hides (`false`) the tooltip from outside. */\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 /** Called when the anchor gets focus. */\n onFocus?: () => void;\n /** Called when the anchor loses focus. */\n onBlur?: () => void;\n\n /** Render the title. Defaults to `true`. */\n hasTitle?: boolean;\n /**\n * Extra styles composed last into the tooltip's class (like upstream's\n * `css` prop). Prefer this to `@className` for styles.\n */\n css?: EuiCss;\n /**\n * Extra styles composed last into the anchor wrapper's class (like\n * upstream's `anchorProps.css`). Prefer this to `@anchorClassName` for\n * styles.\n */\n anchorCss?: EuiCss;\n /**\n * Inline style of the anchor wrapper (upstream's `anchorProps.style`),\n * a style string or a safe string.\n */\n anchorStyle?: string | SafeString;\n /**\n * Props for the anchor wrapper (upstream `anchorProps`), see\n * {@link EuiToolTipAnchorProps}.\n */\n anchorProps?: EuiToolTipAnchorProps;\n};\n\n/**\n * A short hint shown on hover or focus of its anchor. Keep the content\n * short and non-essential; it is not reachable on touch screens.\n */\nexport interface EuiToolTipSignature {\n Element: EuiTooltipPopoverSignature['Element'];\n Args: EuiTooltipArgs;\n Blocks: {\n /** Same as `<:anchor>`. */\n default?: [id: string];\n /** The title, instead of `@title`. */\n title?: [];\n /** The content, instead of `@content`. */\n content?: [];\n /**\n * The element the tooltip is for (hover/focus shows it); yields the\n * tooltip's id for `aria-describedby`.\n */\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 skipAnimation = false;\n @tracked id: string = this.args.id || guidFor({});\n @tracked _attachTo: undefined | HTMLElement | string | null = null;\n\n private timeoutId?: ReturnType<typeof later>;\n private attachToTimer?: ReturnType<typeof next>;\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 cancel(this.attachToTimer);\n this.attachToTimer = next(() => {\n this.attachToTimer = undefined;\n // destroyed in the same tick: willDestroy already removed the\n // handlers, so adding them now would leave them on `@attachTo`\n if (this.isDestroying || this.isDestroyed) return;\n\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.onAnchorBlur);\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.onAnchorBlur);\n }\n }\n\n private listeningToScroll = false;\n\n /** Adds or removes the capturing scroll listener (`@repositionOnScroll`). */\n @action\n syncScrollListener(): void {\n const wanted = this.args.repositionOnScroll === true;\n\n if (wanted && !this.listeningToScroll) {\n window.addEventListener('scroll', this.positionToolTip, true);\n } else if (!wanted && this.listeningToScroll) {\n window.removeEventListener('scroll', this.positionToolTip, true);\n }\n\n this.listeningToScroll = wanted;\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.markVisible();\n };\n\n this.timeoutId = later(\n this,\n () => {\n scheduleOnce('afterRender', this, fn);\n },\n delayToMsMap[this.delay]\n );\n }\n }\n\n /** Shows the tooltip through the manager (hides any other one). */\n markVisible(): void {\n if (this.isDestroying || this.isDestroyed) return;\n\n const result = toolTipManager.registerTooltip(this.hideToolTip);\n\n if (result) this.skipAnimation = result.skipAnimation;\n\n this.visible = true;\n }\n\n get anchorDisplay(): EuiToolTipDisplay {\n return this.args.display ?? 'inlineBlock';\n }\n\n /** Upstream `euiToolTipAnchorStyles`: display and disabled children. */\n @cached\n get anchorClasses(): string {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiToolTipAnchorStyles);\n\n return `euiToolTipAnchor ${euiClass(\n context,\n styles.euiToolTipAnchor,\n styles[this.anchorDisplay] ?? styles.inlineBlock,\n this.args.anchorCss,\n this.args.anchorProps?.css\n )}`;\n }\n\n get anchorStyle(): string | SafeString | undefined {\n return this.args.anchorStyle ?? anchorPropsStyle(this.args.anchorProps?.style);\n }\n\n get anchorPropsHandled(): readonly string[] {\n return ANCHOR_PROPS_HANDLED;\n }\n\n @cached\n get arrowClasses(): string {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiToolTipStyles);\n\n return `euiToolTip__arrow ${euiClass(\n context,\n styles.euiToolTip__arrow,\n styles.arrowPositions[this.calculatedPosition]\n )}`;\n }\n\n get popoverStyles(): ToolTipStyles & { animation?: string } {\n // inline `animation: none` overrides the fade in (upstream)\n return this.skipAnimation\n ? { ...this.toolTipStyles, animation: 'none' }\n : this.toolTipStyles;\n }\n\n get describesAnchor(): boolean {\n return this.visible && !this.args.disableScreenReaderOutput;\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: this.args.offset ?? DEFAULT_TOOLTIP_OFFSET,\n // upstream: the arrow stays out of the control-radius corners\n arrowConfig: {\n arrowWidth: 12,\n arrowBuffer: 4,\n borderRadius:\n parseFloat(\n String(getEuiThemeContext(this).upstream.euiTheme.border.radius.control)\n ) || undefined\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 // Upstream's tooltip stays at `levels.toast`; an anchor inside a layer\n // stacked higher (e.g. an options list or popover in a modal) would hide\n // it, so never stack below the anchor.\n const { levels } = getEuiThemeContext(this).upstream.euiTheme;\n const anchorZIndex = getElementZIndex(\n this._anchor as HTMLElement,\n this.popover\n );\n if (anchorZIndex >= Number(levels.toast)) {\n toolTipStyles.zIndex = String(anchorZIndex + 1);\n }\n\n if (!this.visible) this.markVisible();\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 toolTipManager.deregisterToolTip(this.hideToolTip);\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 /** Escape hides the tooltip (upstream). */\n @action\n onKeyDown(event: KeyboardEvent): void {\n if (event.key !== keys.ESCAPE) return;\n\n // a visual-only tooltip does not take the Escape key from the page\n if (!this.args.disableScreenReaderOutput && this.visible) {\n event.stopPropagation();\n }\n\n this.hasFocus = false;\n this.hideToolTip();\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 /** The anchor lost focus: hide, then `@onBlur` (upstream). */\n @action\n onAnchorBlur(): void {\n this.onBlur();\n this.args.onBlur?.();\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 cancel(this.attachToTimer);\n toolTipManager.deregisterToolTip(this.hideToolTip);\n this.removeAttachToHandlers();\n window.removeEventListener('scroll', this.positionToolTip, true);\n this.listeningToScroll = false;\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 {{didInsert this.syncScrollListener}}\n {{didUpdate this.syncScrollListener @repositionOnScroll}}\n {{didUpdate this.updateAttachTo @attachTo}}\n {{describedBy this.attachTo this.id this.describesAnchor}}\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 {{! A11y: NVDA merges identical markup into one stop; the id keeps\n wrappers apart (upstream) }}\n <span\n id={{if (not @disableScreenReaderOutput) (concat this.id \"-wrapper\")}}\n class={{classNames\n this.anchorClasses\n @anchorClassName\n @anchorProps.className\n }}\n style={{this.anchorStyle}}\n {{spreadAttributes @anchorProps this.anchorPropsHandled}}\n {{anchorListeners @anchorProps}}\n {{didInsert this.didInsertAnchor}}\n {{didInsert this.syncScrollListener}}\n {{didUpdate this.syncScrollListener @repositionOnScroll}}\n {{describedBy null this.id this.describesAnchor}}\n {{on \"keydown\" this.onKeyDown}}\n {{on \"mouseover\" this.showToolTip}}\n {{on \"focusin\" this.onFocus}}\n {{on \"focusout\" this.onAnchorBlur}}\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 \"euiToolTip\" @className}}\n @calculatedPosition={{this.calculatedPosition}}\n @positionToolTip={{this.positionToolTip}}\n @popoverRef={{this.setPopoverRef}}\n @css={{@css}}\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.popoverStyles}}\n >\n <:title>\n {{#if hasTitleBlock}}\n {{yield to=\"title\"}}\n {{else}}\n {{@title}}\n {{/if}}\n </:title>\n <:content>\n <div\n class={{this.arrowClasses}}\n {{style this.arrowStyles}}\n ></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","anchorPropsStyle","style","undefined","isHTMLSafe","cssStyle","ANCHOR_PROPS_HANDLED","anchorListeners","modifier","element","props","cleanups","key","value","Object","entries","test","type","slice","toLowerCase","addEventListener","push","removeEventListener","forEach","cleanup","DEFAULT_TOOLTIP_OFFSET","SKIP_ANIMATION_WINDOW","ToolTipManager","toolTipsToHide","Set","lastHiddenAt","registerTooltip","hideCallback","has","hadOpen","size","recentlyClosed","Date","now","hide","clear","add","skipAnimation","deregisterToolTip","delete","toolTipManager","describedBy","anchor","target","id","isVisible","firstElementChild","current","getAttribute","split","filter","Boolean","includes","setAttribute","join","remaining","token","length","removeAttribute","DEFAULT_TOOLTIP_STYLES","top","left","opacity","visibility","EuiToolTip","Component","popover","g","prototype","argOrDefaultDecorator","i","tracked","position","args","guidFor","timeoutId","attachToTimer","updateAttachTo","attachTo","_attachTo","removeAttachToHandlers","cancel","next","isDestroying","isDestroyed","setupAttachToHandlers","n","action","showToolTip","onFocus","onMouseOut","onAnchorBlur","positionToolTip","listeningToScroll","syncScrollListener","wanted","repositionOnScroll","window","clearAnimationTimeout","visibleDidUpdate","visible","requestAnimationFrame","testAnchor","document","body","contains","_anchor","hideToolTip","didInsertAnchor","ref","setPopoverRef","toolTipStyles","arrowStyles","fn","markVisible","later","scheduleOnce","delay","result","anchorDisplay","display","anchorClasses","context","getEuiThemeContext","styles","useEuiBorealisStyles","euiToolTipAnchorStyles","euiClass","euiToolTipAnchor","inlineBlock","anchorCss","anchorProps","css","cached","anchorStyle","anchorPropsHandled","arrowClasses","euiToolTipStyles","euiToolTip__arrow","arrowPositions","calculatedPosition","popoverStyles","animation","describesAnchor","disableScreenReaderOutput","querySelector","requestedPosition","arrow","findPopoverPosition","offset","arrowConfig","arrowWidth","arrowBuffer","borderRadius","parseFloat","String","upstream","euiTheme","border","radius","control","windowWidth","documentElement","clientWidth","innerWidth","useRightValue","right","offsetWidth","levels","anchorZIndex","getElementZIndex","Number","toast","zIndex","isShown","onKeyDown","event","keys","ESCAPE","stopPropagation","hasFocus","onBlur","relatedTarget","willDestroy","setComponentTemplate","precompileTemplate","strictMode","scope","didInsert","didUpdate","eq","not","concat","classNames","spreadAttributes","on","and","or","EuiPortal","EuiToolTipPopover","argOrDefault","resizeObserver"],"mappings":"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"}