Skip to content

Instantly share code, notes, and snippets.

@evoactivity
Last active February 10, 2025 13:21
Show Gist options
  • Save evoactivity/14f5b1438cf5a1bcb93b80fe999078ef to your computer and use it in GitHub Desktop.
Save evoactivity/14f5b1438cf5a1bcb93b80fe999078ef to your computer and use it in GitHub Desktop.
ember-eui fix
diff --git a/dist/_app_/utils/accesibility/accessible-click-keys.js b/dist/_app_/utils/accesibility/accessible-click-keys.js
deleted file mode 100644
index 9a8d342bfdd5eb7bb846d936cf9dbdebbaf3f2d0..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/accesibility/cascading-menu-keys.js b/dist/_app_/utils/accesibility/cascading-menu-keys.js
deleted file mode 100644
index bda2478b4a5464ea12a24c014821bbf2514b7cc1..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/accesibility/combo-box-keys.js b/dist/_app_/utils/accesibility/combo-box-keys.js
deleted file mode 100644
index fe5d1c462d311f2974a5c1b88097e39971c5eabb..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/accesibility/index.js b/dist/_app_/utils/accesibility/index.js
deleted file mode 100644
index 6119d7578ca7775225bdd21d1a27456385d9380d..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/breakpoint.js b/dist/_app_/utils/breakpoint.js
deleted file mode 100644
index 9fdf461da4da56e225dddb0e0dd241cc0cfcba48..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/browser/browser.js b/dist/_app_/utils/browser/browser.js
deleted file mode 100644
index 76929e642191997d5dc83c7618e5b1b130362481..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/browser/index.js b/dist/_app_/utils/browser/index.js
deleted file mode 100644
index 3888383e2118f0ca6ddf387e7527b77ad6eac0ed..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/code/utils.js b/dist/_app_/utils/code/utils.js
deleted file mode 100644
index de2323d63070b368a99408405a13296ef066f956..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/color/color_palette.js b/dist/_app_/utils/color/color_palette.js
deleted file mode 100644
index 73f89128cfe37e28984f0581f7d0afa93922ae9d..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/color/eui_palettes.js b/dist/_app_/utils/color/eui_palettes.js
deleted file mode 100644
index 62872a3c1d7b9da9d74baea45f2ae99b52949c31..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/color/index.js b/dist/_app_/utils/color/index.js
deleted file mode 100644
index 215dd9be8cdf8a5c7931c09e6b233bba3a0ac57b..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/copy-to-clipboard.js b/dist/_app_/utils/copy-to-clipboard.js
deleted file mode 100644
index c20e7e5d16501beabd8472d48dad9cf40df6f6ea..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-accordion.js b/dist/_app_/utils/css-mappings/eui-accordion.js
deleted file mode 100644
index 8732ad733ba3b34b9d5fd3dd5f20b0ea151ca6a0..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-avatar.js b/dist/_app_/utils/css-mappings/eui-avatar.js
deleted file mode 100644
index 5aa18a8c0ff489a97a13afeef78fedb9dc38aff1..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-badge-group.js b/dist/_app_/utils/css-mappings/eui-badge-group.js
deleted file mode 100644
index 715ec940c48da3a02a634d0c0d9a775ceca83f28..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-badge.js b/dist/_app_/utils/css-mappings/eui-badge.js
deleted file mode 100644
index 47460f75f1284aa58bc3e8558e0cc73642019749..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-beta-badge.js b/dist/_app_/utils/css-mappings/eui-beta-badge.js
deleted file mode 100644
index 575942f6332ba59f36b025dbebe5e0a2a5f299a5..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-bottom-bar.js b/dist/_app_/utils/css-mappings/eui-bottom-bar.js
deleted file mode 100644
index 35ed95afcb7fea4bf5f42840b84d131e8751af55..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-button-empty.js b/dist/_app_/utils/css-mappings/eui-button-empty.js
deleted file mode 100644
index e35a4ae3c4ce59e987a89a87398304f92a9a0fc7..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-button-group-button.js b/dist/_app_/utils/css-mappings/eui-button-group-button.js
deleted file mode 100644
index 010894848b106b490543ed3fbc01829a3d654c0b..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-button-group.js b/dist/_app_/utils/css-mappings/eui-button-group.js
deleted file mode 100644
index a1eb75c6fe1c1fc8f8bb3eee97e8a4340b68d49a..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-button-icon.js b/dist/_app_/utils/css-mappings/eui-button-icon.js
deleted file mode 100644
index d8c22bf07d24a04dbbbde99c3e8d2daec5bf539f..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-button.js b/dist/_app_/utils/css-mappings/eui-button.js
deleted file mode 100644
index 1a7702bf52f031fdd2f6ae83bc4933299c961e76..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-call-out.js b/dist/_app_/utils/css-mappings/eui-call-out.js
deleted file mode 100644
index 5a01cb42381db408530adac957b2e1a5fd86fb7b..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-card-select.js b/dist/_app_/utils/css-mappings/eui-card-select.js
deleted file mode 100644
index 4c6434f590f545e04212ef6d99eca0d4f0215526..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-card.js b/dist/_app_/utils/css-mappings/eui-card.js
deleted file mode 100644
index 70751dbdee2974d3284de01169c5b8095d646021..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-code-block.js b/dist/_app_/utils/css-mappings/eui-code-block.js
deleted file mode 100644
index 9f6156e2df6a38ac02c62d01793d1690b639a884..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-collapsible-nav-group.js b/dist/_app_/utils/css-mappings/eui-collapsible-nav-group.js
deleted file mode 100644
index 794c92b6b41a015cf63ebe6c236715844fa62121..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-comment-event.js b/dist/_app_/utils/css-mappings/eui-comment-event.js
deleted file mode 100644
index 5819f96d2befbb9a493488e7246c280e01aea001..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-comment-timeline-icon.js b/dist/_app_/utils/css-mappings/eui-comment-timeline-icon.js
deleted file mode 100644
index 28f12f025f1a151b907e71e4e1ab060cf0b1210f..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-context-menu-item.js b/dist/_app_/utils/css-mappings/eui-context-menu-item.js
deleted file mode 100644
index 4acba583a9f75c4bbdfbdaafdd951606891aba96..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-described-form-group.js b/dist/_app_/utils/css-mappings/eui-described-form-group.js
deleted file mode 100644
index dc3f25577741b3b43ce7a04564df65b42f453e61..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-description-list.js b/dist/_app_/utils/css-mappings/eui-description-list.js
deleted file mode 100644
index cffc519b4d0acc3894dcca3922d621c0f62e2dfc..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-empty-prompt.js b/dist/_app_/utils/css-mappings/eui-empty-prompt.js
deleted file mode 100644
index 373774ff90ee60e7d5dc7332c7d4c63dfb8cb0ff..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-file-picker.js b/dist/_app_/utils/css-mappings/eui-file-picker.js
deleted file mode 100644
index 277640861f33d5461716d56f09f81985fdc2e507..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-flex-grid.js b/dist/_app_/utils/css-mappings/eui-flex-grid.js
deleted file mode 100644
index 2d534254bb72c1eb5e661d106032ba2d08fb033e..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-flex-group.js b/dist/_app_/utils/css-mappings/eui-flex-group.js
deleted file mode 100644
index 247b41583665e37328ab836a5a38a04660eb3aca..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-flex-item.js b/dist/_app_/utils/css-mappings/eui-flex-item.js
deleted file mode 100644
index 240c414fa951838cfe00c381d035f0270c3814f9..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-flyout.js b/dist/_app_/utils/css-mappings/eui-flyout.js
deleted file mode 100644
index aac883d9ebdce71c15237e40c48dd1e6da1b029d..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-form-control-layout-clear-button.js b/dist/_app_/utils/css-mappings/eui-form-control-layout-clear-button.js
deleted file mode 100644
index c084935f391db32df0fdc9a36cefcf92260e23da..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-form-row.js b/dist/_app_/utils/css-mappings/eui-form-row.js
deleted file mode 100644
index f0bce72ddd09aa406ca7ffc6b85a33beb3f26d96..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-global-toast-list.js b/dist/_app_/utils/css-mappings/eui-global-toast-list.js
deleted file mode 100644
index 8863ab53d8440742cc0603f22295a4b69d776090..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-header-links.js b/dist/_app_/utils/css-mappings/eui-header-links.js
deleted file mode 100644
index 7c85eb7d23b6acac1fd54fbea102cf59fcc459fe..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-header-section-item.js b/dist/_app_/utils/css-mappings/eui-header-section-item.js
deleted file mode 100644
index ec05891ccabc67616191a1e67c2b4ebb62e22cb1..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-header-section.js b/dist/_app_/utils/css-mappings/eui-header-section.js
deleted file mode 100644
index 7f5e68fdaee89b92d0d2cf69bedb6c04ebce5ea3..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-header.js b/dist/_app_/utils/css-mappings/eui-header.js
deleted file mode 100644
index f6a7f37e0b86ba313675ae083eda0d9c1537adac..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-health.js b/dist/_app_/utils/css-mappings/eui-health.js
deleted file mode 100644
index cd835eafd507225168a2e7c0654580c8acace360..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-horizontal-rule.js b/dist/_app_/utils/css-mappings/eui-horizontal-rule.js
deleted file mode 100644
index e51b131ee6f7664352cc17bcd530e4c520bb2b8b..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-icon.js b/dist/_app_/utils/css-mappings/eui-icon.js
deleted file mode 100644
index d7d0dcb3eb4ed5928a414a20038cbca10e82341a..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-image.js b/dist/_app_/utils/css-mappings/eui-image.js
deleted file mode 100644
index 77fd5cb4500569b8f18325ee57b3b87fa5dab56e..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-link.js b/dist/_app_/utils/css-mappings/eui-link.js
deleted file mode 100644
index 3cae64c0dc3cd0ce80fad75c2ea9e7e5e7d861ca..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-list-group-item.js b/dist/_app_/utils/css-mappings/eui-list-group-item.js
deleted file mode 100644
index c617e838183cc47ba6d4ce4d00ccf3288f0625f2..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-list-group.js b/dist/_app_/utils/css-mappings/eui-list-group.js
deleted file mode 100644
index a65665761c3f5fdc98dc405e51c45cf43b2f2daa..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-loading-spinner.js b/dist/_app_/utils/css-mappings/eui-loading-spinner.js
deleted file mode 100644
index 60793ed8def540ed8c5382e583b4373a722ce131..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-modal.js b/dist/_app_/utils/css-mappings/eui-modal.js
deleted file mode 100644
index bfcf97b01ae6e9cf9c2067310efc6bea0a8cd596..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-notification-badge.js b/dist/_app_/utils/css-mappings/eui-notification-badge.js
deleted file mode 100644
index 13ccba6c22adab716a7869e6bdc2f607401188a3..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-page-body.js b/dist/_app_/utils/css-mappings/eui-page-body.js
deleted file mode 100644
index 89a76259a687814cd2aa4e9e71fae0656ca2da1d..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-page-content-body.js b/dist/_app_/utils/css-mappings/eui-page-content-body.js
deleted file mode 100644
index cee0a6eb3069ee8abf117147ccbff29fb054ef10..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-page-content.js b/dist/_app_/utils/css-mappings/eui-page-content.js
deleted file mode 100644
index fa5c6773e24af6f5f24bc49e45872bbf1822297d..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-page-header.js b/dist/_app_/utils/css-mappings/eui-page-header.js
deleted file mode 100644
index b6d22f0d9b81d6d76be04981fada8952659a45cd..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-page-side-bar.js b/dist/_app_/utils/css-mappings/eui-page-side-bar.js
deleted file mode 100644
index b7855556c90c6dd5c50368fed48bbd1e550702c9..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-page.js b/dist/_app_/utils/css-mappings/eui-page.js
deleted file mode 100644
index 113b6ae21b2e8e26c0adf33cf7dec436ca2ffa08..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-panel.js b/dist/_app_/utils/css-mappings/eui-panel.js
deleted file mode 100644
index b478d39bb4fb219824774d3207c2ddab3df1040e..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-popover-footer.js b/dist/_app_/utils/css-mappings/eui-popover-footer.js
deleted file mode 100644
index 516b80ab401c7f9c8a7bbda75dccf54fa02667a3..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-popover-title.js b/dist/_app_/utils/css-mappings/eui-popover-title.js
deleted file mode 100644
index ba3e6c8b8778e12d66657277c54fb870e02fc7a0..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-popover.js b/dist/_app_/utils/css-mappings/eui-popover.js
deleted file mode 100644
index 782f214bd23a383eea5468d262992f0bb2e75a87..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-progress-data.js b/dist/_app_/utils/css-mappings/eui-progress-data.js
deleted file mode 100644
index d08082faf950c87e6e4fbe534fd93be3f5ac4004..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-progress.js b/dist/_app_/utils/css-mappings/eui-progress.js
deleted file mode 100644
index c258cbff827b1e87acc1381c0f2e996fe944ac1c..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-range-highlight.js b/dist/_app_/utils/css-mappings/eui-range-highlight.js
deleted file mode 100644
index be01c7bd053dfd88e184d9dda4ceddb98f1ee479..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-range-input.js b/dist/_app_/utils/css-mappings/eui-range-input.js
deleted file mode 100644
index a5e2d5b86ed95993892f8df0ab0c4f5c034fba30..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-range-levels.js b/dist/_app_/utils/css-mappings/eui-range-levels.js
deleted file mode 100644
index 7edc1aacb404337742e7ee8d5e3d4bd86eb6ff46..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-selectable-list-item.js b/dist/_app_/utils/css-mappings/eui-selectable-list-item.js
deleted file mode 100644
index 27a24299dc1d544b100cba8128d6b1ac3b7f725c..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-spacer.js b/dist/_app_/utils/css-mappings/eui-spacer.js
deleted file mode 100644
index 177eea22d8007ec773eec68f050139c10f8e62d9..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-stat.js b/dist/_app_/utils/css-mappings/eui-stat.js
deleted file mode 100644
index 238436b0a94e055336f8298ecd1a86a1d00be767..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-step-number.js b/dist/_app_/utils/css-mappings/eui-step-number.js
deleted file mode 100644
index 940f160b79eeeceed836919c350e9f0b4e74e8ac..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-tabs.js b/dist/_app_/utils/css-mappings/eui-tabs.js
deleted file mode 100644
index 13b3efc8bff92b5b775c97674cc3b83071b3d82b..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-text-align.js b/dist/_app_/utils/css-mappings/eui-text-align.js
deleted file mode 100644
index 6ba3f60aad7c900f4a85a8b089cc38fa32240cd1..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-text-area.js b/dist/_app_/utils/css-mappings/eui-text-area.js
deleted file mode 100644
index 6259cb2ec80ce636d5ec149641ae1cb95aa82f5d..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-text-color.js b/dist/_app_/utils/css-mappings/eui-text-color.js
deleted file mode 100644
index a6a3160c57dc2e677b5efbbba610e161e9d5d2b8..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-text.js b/dist/_app_/utils/css-mappings/eui-text.js
deleted file mode 100644
index f6aad2df8c91ff5b083acfe07bd400b98028bf77..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-title.js b/dist/_app_/utils/css-mappings/eui-title.js
deleted file mode 100644
index 691af09140a522fa8d612d330bf5f8deb84fa875..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-toast.js b/dist/_app_/utils/css-mappings/eui-toast.js
deleted file mode 100644
index 46c85a9a0bc564a0397d1eddf9483c7bcbbfc880..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/eui-tool-tip.js b/dist/_app_/utils/css-mappings/eui-tool-tip.js
deleted file mode 100644
index 16b88559fd9e1068bd84dc0910867c1a0e36e968..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/css-mappings/index.js b/dist/_app_/utils/css-mappings/index.js
deleted file mode 100644
index 7638e6c868a4d6091507a81a56cf3248650315dc..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/detect-element-resize.js b/dist/_app_/utils/detect-element-resize.js
deleted file mode 100644
index f0629529fbd674e90a6c6366f706a881aee501dc..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/index.js b/dist/_app_/utils/index.js
deleted file mode 100644
index 6e3f58491a0fca5478042444865132b80e587b1a..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/keys.js b/dist/_app_/utils/keys.js
deleted file mode 100644
index 3a16a382b46fc55114cb352b382a1fc2315786a8..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/markdown-actions.js b/dist/_app_/utils/markdown/markdown-actions.js
deleted file mode 100644
index 6976cfeab872c1abb32b4c27a4ab2c73cf586b2d..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/markdown-modes.js b/dist/_app_/utils/markdown/markdown-modes.js
deleted file mode 100644
index 18a8ce14e75c0a43b515113e4bef995ccae94822..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/markdown-types.js b/dist/_app_/utils/markdown/markdown-types.js
deleted file mode 100644
index 46401e05804efca610fb47f80db7a83c676d358f..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/plugins/markdown-add-components/index.js b/dist/_app_/utils/markdown/plugins/markdown-add-components/index.js
deleted file mode 100644
index f6719ee020764ca178ec9ce931a4a117e88ee22a..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/plugins/markdown-add-components/processor.js b/dist/_app_/utils/markdown/plugins/markdown-add-components/processor.js
deleted file mode 100644
index 3c113719b33ea67556f552d817d3e28fef092de1..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/plugins/markdown-checkbox/index.js b/dist/_app_/utils/markdown/plugins/markdown-checkbox/index.js
deleted file mode 100644
index af713343744ceb5af6c81002c6da7e8f3a85974f..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/plugins/markdown-checkbox/parser.js b/dist/_app_/utils/markdown/plugins/markdown-checkbox/parser.js
deleted file mode 100644
index 49f450a22b279ab3eb2d26159b70b4598eeffe85..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/plugins/markdown-default-plugins/index.js b/dist/_app_/utils/markdown/plugins/markdown-default-plugins/index.js
deleted file mode 100644
index 3bd722ad5e1aa8843104ed295d8dc7afe48e53ae..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/plugins/markdown-default-plugins/parsing-plugins.js b/dist/_app_/utils/markdown/plugins/markdown-default-plugins/parsing-plugins.js
deleted file mode 100644
index a18e854a43c470df6506226f5be0a6cbd6a562a4..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/plugins/markdown-default-plugins/plugins.js b/dist/_app_/utils/markdown/plugins/markdown-default-plugins/plugins.js
deleted file mode 100644
index 4a171146070e3f21ffa0767784eb0f7abe70a7de..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/plugins/markdown-default-plugins/processing-plugins.js b/dist/_app_/utils/markdown/plugins/markdown-default-plugins/processing-plugins.js
deleted file mode 100644
index bae7c90eaf831b87e7957e6d766f410fba6cd8ac..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/plugins/markdown-default-plugins/ui-plugins.js b/dist/_app_/utils/markdown/plugins/markdown-default-plugins/ui-plugins.js
deleted file mode 100644
index 8e34c1c559a381b22f04ad818eeed2fc64bbbd22..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/plugins/markdown-tooltip/index.js b/dist/_app_/utils/markdown/plugins/markdown-tooltip/index.js
deleted file mode 100644
index b21da6c95ab741892c37a03231abe1e90b422251..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/plugins/markdown-tooltip/parser.js b/dist/_app_/utils/markdown/plugins/markdown-tooltip/parser.js
deleted file mode 100644
index 61cd4f38a40360c6c919269eb887b0bf454f2f9c..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/plugins/markdown-tooltip/plugin.js b/dist/_app_/utils/markdown/plugins/markdown-tooltip/plugin.js
deleted file mode 100644
index 681c0ac214a74ab64a9643f1535bd86cff86a8aa..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/plugins/to-dom.js b/dist/_app_/utils/markdown/plugins/to-dom.js
deleted file mode 100644
index f5636481226ef9410b9149389030cad7da33717a..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/markdown/remark/remark-prismjs.js b/dist/_app_/utils/markdown/remark/remark-prismjs.js
deleted file mode 100644
index 8159ab07d43544d3de7641921b94ef48cc65c88b..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/maybe-unwrap-proxy.js b/dist/_app_/utils/maybe-unwrap-proxy.js
deleted file mode 100644
index d90fc2e2a16faa5c8938bbc39a77207951fbd70b..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/number/index.js b/dist/_app_/utils/number/index.js
deleted file mode 100644
index 933df5321e889c7c63cce6a8fb069762c6996387..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/number/number.js b/dist/_app_/utils/number/number.js
deleted file mode 100644
index 9255c6a237170b0ec36b98c5b2a540bf1e091499..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/popover/index.js b/dist/_app_/utils/popover/index.js
deleted file mode 100644
index 2cc5e798dfd48775b2d72ac390761c6558b26bbd..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/popover/types.js b/dist/_app_/utils/popover/types.js
deleted file mode 100644
index f8a83d5aee2d0f957c11b162776ef80adba6a5e3..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/predicate/common_predicates.js b/dist/_app_/utils/predicate/common_predicates.js
deleted file mode 100644
index cc5039092b87a1338c75181bbdaa7be018424480..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/predicate/index.js b/dist/_app_/utils/predicate/index.js
deleted file mode 100644
index 1e712f7db66f0e5e9d9a365168bd5e2f910020f6..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/predicate/lodash_predicates.js b/dist/_app_/utils/predicate/lodash_predicates.js
deleted file mode 100644
index e56af4c660e80b8ddbdef16bae7022d0ff273107..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/range/index.js b/dist/_app_/utils/range/index.js
deleted file mode 100644
index c4b1a9b4fe7cb1653e36496b3620c8d5731202cb..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/timer.js b/dist/_app_/utils/timer.js
deleted file mode 100644
index d71c0769abdf99d6165461153ced90d0eb33316c..0000000000000000000000000000000000000000
diff --git a/dist/_app_/utils/transition.js b/dist/_app_/utils/transition.js
deleted file mode 100644
index c9744b9c6047a81dfb1f91201e324e869cd65eaf..0000000000000000000000000000000000000000
diff --git a/dist/components/eui-accordion.js b/dist/components/eui-accordion.js
index 69b86aea61c244bec2ad1287a0960275fa6b157e..ccde6c595cfcc3c8a5ca207b1779153bd2ad947e 100644
--- a/dist/components/eui-accordion.js
+++ b/dist/components/eui-accordion.js
@@ -5,7 +5,7 @@ import { action } from '@ember/object';
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
import didUpdate from '@ember/render-modifiers/modifiers/did-update';
import { htmlSafe } from '@ember/template';
-import queue from 'ember-composable-helpers/helpers/queue';
+import queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';
import { element } from 'ember-element-helper';
import set from 'ember-set-helper/helpers/set';
import { not, eq, and } from 'ember-truth-helpers';
diff --git a/dist/components/eui-accordion.js.map b/dist/components/eui-accordion.js.map
index 97f74605036e53f664f9664fd83fd113eb262f1e..c23a48f2ecb13fe0a707aabec58c03652710a816 100644
--- a/dist/components/eui-accordion.js.map
+++ b/dist/components/eui-accordion.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-accordion.js","sources":["../../src/components/eui-accordion.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { htmlSafe } from '@ember/template';\nimport type Owner from '@ember/owner';\n\nimport queue from 'ember-composable-helpers/helpers/queue';\nimport { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiLoadingSpinner from './eui-loading-spinner.gts';\n\nimport type { paddingMapping } from '../utils/css-mappings/eui-accordion.ts';\nimport type { CommonArgs } from './common.ts';\n\ntype EuiAccordionPaddingSize = keyof typeof paddingMapping;\n\ntype AccordionArgs = {\n id?: string;\n\n element?: 'div' | 'fieldset';\n /**\n * Class that will apply to the trigger for the accordion.\n */\n buttonClassName?: string;\n\n buttonProps?: CommonArgs;\n\n /**\n * Applied to the main button receiving the `onToggle` event.\n * Anything other than the default `button` does not support removing the arrow display (for accessibility of focus).\n */\n buttonElement?: 'div' | 'legend' | 'button';\n /**\n * Extra props to pass to the EuiButtonIcon containing the arrow.\n */\n arrowProps?: {\n className?: string;\n };\n\n /**\n * Class that will apply to the trigger content for the accordion.\n */\n buttonContentClassName?: string;\n /**\n * The content of the clickable trigger\n */\n buttonContent?: Component;\n /**\n * Will appear right aligned against the button. Useful for separate actions like deletions.\n */\n extraAction?: Component | boolean;\n /**\n * The accordion will start in the open state.\n */\n initialIsOpen?: boolean;\n /**\n * Optional callback method called on open and close with a single `isOpen` parameter\n */\n onToggle?: (isOpen: boolean) => void;\n /**\n * The padding around the exposed accordion content.\n */\n paddingSize?: EuiAccordionPaddingSize;\n /**\n * Placement of the arrow indicator, or 'none' to hide it.\n */\n arrowDisplay?: 'left' | 'right' | 'none';\n /**\n * Control the opening of accordion via prop\n */\n forceState?: 'closed' | 'open';\n /**\n * Change `extraAction` and children into a loading spinner\n */\n isLoading?: boolean;\n /**\n * Choose whether the loading message replaces the content. Customize the message by passing a node\n */\n isLoadingMessage?: boolean | Component;\n\n isOpen?: boolean;\n\n childClassName?: string;\n triggerClassName?: string;\n childContentClassName?: string;\n};\n\nexport interface EuiAccordionSignature {\n Element: any;\n Args: AccordionArgs;\n Blocks: {\n buttonContent: [boolean | undefined];\n content: [];\n extraAction: [boolean | undefined];\n };\n}\n\nexport default class EuiAccordionAccordionComponent extends Component<EuiAccordionSignature> {\n // Defaults\n @argOrDefaultDecorator(false) isLoading!: boolean;\n @argOrDefaultDecorator(false) isLoadingMessage!: boolean;\n @argOrDefaultDecorator(false) initialIsOpen!: boolean;\n @argOrDefaultDecorator('none') paddingSize!: EuiAccordionPaddingSize;\n @argOrDefaultDecorator('left') arrowDisplay!: AccordionArgs['arrowDisplay'];\n\n @tracked _opened;\n @tracked childWrapper: HTMLDivElement | null = null;\n @tracked childContent: HTMLDivElement | null = null;\n\n constructor(owner: Owner, args: AccordionArgs) {\n super(owner, args);\n\n this._opened = this.args.forceState\n ? this.args.forceState === 'open'\n : this.args.initialIsOpen;\n }\n\n get buttonElement() {\n return this.args.element === 'fieldset' ? 'legend' : 'button';\n }\n\n get buttonElementIsFocusable() {\n return this.buttonElement === 'button';\n }\n\n get _arrowDisplay() {\n return this.arrowDisplay === 'none' && !this.buttonElementIsFocusable\n ? 'left'\n : this.arrowDisplay;\n }\n\n get isOpen(): boolean | undefined {\n return this.args.forceState\n ? this.args.forceState === 'open'\n : this._opened;\n }\n\n get hasLoadingMessage(): boolean {\n return this.isLoadingMessage && this.isLoadingMessage !== true;\n }\n\n get buttonClasses(): string {\n return [\n 'euiAccordion__button',\n this.args.buttonClassName,\n this.args.buttonProps?.className\n ].join(' ');\n }\n\n get buttonContentClasses(): string {\n return [\n 'euiAccordion__buttonContent',\n this.args.buttonContentClassName\n ].join(' ');\n }\n\n get childContentStyle(): string | ReturnType<typeof htmlSafe> {\n return this._opened ? '' : htmlSafe(`height: 0px;`);\n }\n\n setChildContentHeight = () => {\n const { forceState } = this.args;\n\n requestAnimationFrame(() => {\n const height =\n this.childContent && (forceState ? forceState === 'open' : this._opened)\n ? this.childContent.clientHeight\n : 0;\n\n this.childWrapper &&\n this.childWrapper.setAttribute('style', `height: ${height}px`);\n });\n };\n\n @action\n onToggle(): void {\n if (this.args.forceState) {\n this.args.onToggle?.(this.args.forceState === 'open' ? false : true);\n } else {\n this._opened = !this._opened;\n\n if (this._opened && this.childWrapper) {\n this.childWrapper.focus();\n }\n\n this.args.onToggle?.(this._opened);\n }\n }\n\n <template>\n {{#let (argOrDefault @element \"div\") as |tagName|}}\n {{#if tagName}}\n {{#let\n (element tagName) (element this.buttonElement)\n as |Accordion ButtonElement|\n }}\n {{#if (and Accordion ButtonElement)}}\n <Accordion\n class={{classNames\n (if this.isOpen \"euiAccordion-isOpen\")\n componentName=\"EuiAccordion\"\n }}\n ...attributes\n >\n <div\n class={{classNames\n \"euiAccordion__triggerWrapper\"\n @triggerClassName\n }}\n >\n {{#if (eq this._arrowDisplay \"left\")}}\n <EuiButtonIcon\n class={{classNames\n \"euiAccordion__iconButton\"\n (if this.isOpen \"euiAccordion__iconButton-isOpen\")\n (if\n (eq this._arrowDisplay \"right\")\n \"euiAccordion__iconButton--right\"\n )\n (if @arrowProps.className @arrowProps.className)\n }}\n @iconType=\"arrowRight\"\n {{on \"click\" this.onToggle}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n tabindex={{if this.buttonElementIsFocusable \"-1\" \"0\"}}\n />\n {{/if}}\n <ButtonElement\n type=\"button\"\n id={{argOrDefault @buttonProps.id (randomId)}}\n class={{this.buttonClasses}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n aria-labelledby={{argOrDefault @buttonProps.id (randomId)}}\n {{on \"click\" this.onToggle}}\n >\n <span class={{this.buttonContentClasses}}>\n {{yield this.isOpen to=\"buttonContent\"}}\n </span>\n </ButtonElement>\n {{#if\n (and\n @extraAction (has-block \"extraAction\") (not this.isLoading)\n )\n }}\n <div class=\"euiAccordion__optionalAction\">\n {{yield this.isOpen to=\"extraAction\"}}\n </div>\n {{else if this.isLoading}}\n <div class=\"euiAccordion__optionalAction\">\n <EuiLoadingSpinner />\n </div>\n {{/if}}\n {{#if (eq this._arrowDisplay \"right\")}}\n <EuiButtonIcon\n @color=\"text\"\n class={{classNames\n \"euiAccordion__iconButton\"\n (if this.isOpen \"euiAccordion__iconButton-isOpen\")\n (if\n (eq this._arrowDisplay \"right\")\n \"euiAccordion__iconButton--right\"\n )\n (if @arrowProps.className @arrowProps.className)\n }}\n @iconType=\"arrowRight\"\n {{on \"click\" this.onToggle}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n tabindex={{if this.buttonElementIsFocusable \"-1\" \"0\"}}\n />\n {{/if}}\n </div>\n <div\n class=\"euiAccordion__childWrapper\"\n style={{this.childContentStyle}}\n id={{@id}}\n {{didInsert (set this \"childWrapper\")}}\n tabindex=\"-1\"\n role=\"region\"\n >\n <div\n class={{classNames\n (if this.isLoading \"euiAccordion__children-isLoading\")\n @childClassName\n }}\n {{didInsert\n (queue (set this \"childContent\") this.setChildContentHeight)\n }}\n {{resizeObserver onResize=this.setChildContentHeight}}\n {{didUpdate this.setChildContentHeight @forceState}}\n >\n {{#if (and this.isLoading this.isLoadingMessage)}}\n <EuiLoadingSpinner class=\"euiAccordion__spinner\" />\n <span>\n {{#if this.hasLoadingMessage}}\n {{this.isLoadingMessage}}\n {{else}}\n {{! <EuiI18n @token=\"euiAccordion.isLoading\" @default=\"Loading\" /> }}\n Loading...\n {{/if}}\n </span>\n {{else}}\n <div\n class={{classNames\n componentName=\"EuiAccordion\"\n paddingSize=this.paddingSize\n }}\n >\n {{yield to=\"content\"}}\n </div>\n {{/if}}\n </div>\n </div>\n </Accordion>\n {{/if}}\n {{/let}}\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiAccordionAccordionComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","constructor","owner","args","_opened","forceState","initialIsOpen","buttonElement","element","buttonElementIsFocusable","_arrowDisplay","arrowDisplay","isOpen","hasLoadingMessage","isLoadingMessage","buttonClasses","buttonClassName","buttonProps","className","join","buttonContentClasses","buttonContentClassName","childContentStyle","htmlSafe","setChildContentHeight","requestAnimationFrame","height","childContent","clientHeight","childWrapper","setAttribute","onToggle","focus","n","action","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","and","classNames","eq","EuiButtonIcon","on","randomId","not","EuiLoadingSpinner","didInsert","set","queue","resizeObserver","didUpdate"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"eui-accordion.js","sources":["../../src/components/eui-accordion.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { htmlSafe } from '@ember/template';\nimport type Owner from '@ember/owner';\n\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\nimport { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiLoadingSpinner from './eui-loading-spinner.gts';\n\nimport type { paddingMapping } from '../utils/css-mappings/eui-accordion.ts';\nimport type { CommonArgs } from './common.ts';\n\ntype EuiAccordionPaddingSize = keyof typeof paddingMapping;\n\ntype AccordionArgs = {\n id?: string;\n\n element?: 'div' | 'fieldset';\n /**\n * Class that will apply to the trigger for the accordion.\n */\n buttonClassName?: string;\n\n buttonProps?: CommonArgs;\n\n /**\n * Applied to the main button receiving the `onToggle` event.\n * Anything other than the default `button` does not support removing the arrow display (for accessibility of focus).\n */\n buttonElement?: 'div' | 'legend' | 'button';\n /**\n * Extra props to pass to the EuiButtonIcon containing the arrow.\n */\n arrowProps?: {\n className?: string;\n };\n\n /**\n * Class that will apply to the trigger content for the accordion.\n */\n buttonContentClassName?: string;\n /**\n * The content of the clickable trigger\n */\n buttonContent?: Component;\n /**\n * Will appear right aligned against the button. Useful for separate actions like deletions.\n */\n extraAction?: Component | boolean;\n /**\n * The accordion will start in the open state.\n */\n initialIsOpen?: boolean;\n /**\n * Optional callback method called on open and close with a single `isOpen` parameter\n */\n onToggle?: (isOpen: boolean) => void;\n /**\n * The padding around the exposed accordion content.\n */\n paddingSize?: EuiAccordionPaddingSize;\n /**\n * Placement of the arrow indicator, or 'none' to hide it.\n */\n arrowDisplay?: 'left' | 'right' | 'none';\n /**\n * Control the opening of accordion via prop\n */\n forceState?: 'closed' | 'open';\n /**\n * Change `extraAction` and children into a loading spinner\n */\n isLoading?: boolean;\n /**\n * Choose whether the loading message replaces the content. Customize the message by passing a node\n */\n isLoadingMessage?: boolean | Component;\n\n isOpen?: boolean;\n\n childClassName?: string;\n triggerClassName?: string;\n childContentClassName?: string;\n};\n\nexport interface EuiAccordionSignature {\n Element: any;\n Args: AccordionArgs;\n Blocks: {\n buttonContent: [boolean | undefined];\n content: [];\n extraAction: [boolean | undefined];\n };\n}\n\nexport default class EuiAccordionAccordionComponent extends Component<EuiAccordionSignature> {\n // Defaults\n @argOrDefaultDecorator(false) isLoading!: boolean;\n @argOrDefaultDecorator(false) isLoadingMessage!: boolean;\n @argOrDefaultDecorator(false) initialIsOpen!: boolean;\n @argOrDefaultDecorator('none') paddingSize!: EuiAccordionPaddingSize;\n @argOrDefaultDecorator('left') arrowDisplay!: AccordionArgs['arrowDisplay'];\n\n @tracked _opened;\n @tracked childWrapper: HTMLDivElement | null = null;\n @tracked childContent: HTMLDivElement | null = null;\n\n constructor(owner: Owner, args: AccordionArgs) {\n super(owner, args);\n\n this._opened = this.args.forceState\n ? this.args.forceState === 'open'\n : this.args.initialIsOpen;\n }\n\n get buttonElement() {\n return this.args.element === 'fieldset' ? 'legend' : 'button';\n }\n\n get buttonElementIsFocusable() {\n return this.buttonElement === 'button';\n }\n\n get _arrowDisplay() {\n return this.arrowDisplay === 'none' && !this.buttonElementIsFocusable\n ? 'left'\n : this.arrowDisplay;\n }\n\n get isOpen(): boolean | undefined {\n return this.args.forceState\n ? this.args.forceState === 'open'\n : this._opened;\n }\n\n get hasLoadingMessage(): boolean {\n return this.isLoadingMessage && this.isLoadingMessage !== true;\n }\n\n get buttonClasses(): string {\n return [\n 'euiAccordion__button',\n this.args.buttonClassName,\n this.args.buttonProps?.className\n ].join(' ');\n }\n\n get buttonContentClasses(): string {\n return [\n 'euiAccordion__buttonContent',\n this.args.buttonContentClassName\n ].join(' ');\n }\n\n get childContentStyle(): string | ReturnType<typeof htmlSafe> {\n return this._opened ? '' : htmlSafe(`height: 0px;`);\n }\n\n setChildContentHeight = () => {\n const { forceState } = this.args;\n\n requestAnimationFrame(() => {\n const height =\n this.childContent && (forceState ? forceState === 'open' : this._opened)\n ? this.childContent.clientHeight\n : 0;\n\n this.childWrapper &&\n this.childWrapper.setAttribute('style', `height: ${height}px`);\n });\n };\n\n @action\n onToggle(): void {\n if (this.args.forceState) {\n this.args.onToggle?.(this.args.forceState === 'open' ? false : true);\n } else {\n this._opened = !this._opened;\n\n if (this._opened && this.childWrapper) {\n this.childWrapper.focus();\n }\n\n this.args.onToggle?.(this._opened);\n }\n }\n\n <template>\n {{#let (argOrDefault @element \"div\") as |tagName|}}\n {{#if tagName}}\n {{#let\n (element tagName) (element this.buttonElement)\n as |Accordion ButtonElement|\n }}\n {{#if (and Accordion ButtonElement)}}\n <Accordion\n class={{classNames\n (if this.isOpen \"euiAccordion-isOpen\")\n componentName=\"EuiAccordion\"\n }}\n ...attributes\n >\n <div\n class={{classNames\n \"euiAccordion__triggerWrapper\"\n @triggerClassName\n }}\n >\n {{#if (eq this._arrowDisplay \"left\")}}\n <EuiButtonIcon\n class={{classNames\n \"euiAccordion__iconButton\"\n (if this.isOpen \"euiAccordion__iconButton-isOpen\")\n (if\n (eq this._arrowDisplay \"right\")\n \"euiAccordion__iconButton--right\"\n )\n (if @arrowProps.className @arrowProps.className)\n }}\n @iconType=\"arrowRight\"\n {{on \"click\" this.onToggle}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n tabindex={{if this.buttonElementIsFocusable \"-1\" \"0\"}}\n />\n {{/if}}\n <ButtonElement\n type=\"button\"\n id={{argOrDefault @buttonProps.id (randomId)}}\n class={{this.buttonClasses}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n aria-labelledby={{argOrDefault @buttonProps.id (randomId)}}\n {{on \"click\" this.onToggle}}\n >\n <span class={{this.buttonContentClasses}}>\n {{yield this.isOpen to=\"buttonContent\"}}\n </span>\n </ButtonElement>\n {{#if\n (and\n @extraAction (has-block \"extraAction\") (not this.isLoading)\n )\n }}\n <div class=\"euiAccordion__optionalAction\">\n {{yield this.isOpen to=\"extraAction\"}}\n </div>\n {{else if this.isLoading}}\n <div class=\"euiAccordion__optionalAction\">\n <EuiLoadingSpinner />\n </div>\n {{/if}}\n {{#if (eq this._arrowDisplay \"right\")}}\n <EuiButtonIcon\n @color=\"text\"\n class={{classNames\n \"euiAccordion__iconButton\"\n (if this.isOpen \"euiAccordion__iconButton-isOpen\")\n (if\n (eq this._arrowDisplay \"right\")\n \"euiAccordion__iconButton--right\"\n )\n (if @arrowProps.className @arrowProps.className)\n }}\n @iconType=\"arrowRight\"\n {{on \"click\" this.onToggle}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n tabindex={{if this.buttonElementIsFocusable \"-1\" \"0\"}}\n />\n {{/if}}\n </div>\n <div\n class=\"euiAccordion__childWrapper\"\n style={{this.childContentStyle}}\n id={{@id}}\n {{didInsert (set this \"childWrapper\")}}\n tabindex=\"-1\"\n role=\"region\"\n >\n <div\n class={{classNames\n (if this.isLoading \"euiAccordion__children-isLoading\")\n @childClassName\n }}\n {{didInsert\n (queue (set this \"childContent\") this.setChildContentHeight)\n }}\n {{resizeObserver onResize=this.setChildContentHeight}}\n {{didUpdate this.setChildContentHeight @forceState}}\n >\n {{#if (and this.isLoading this.isLoadingMessage)}}\n <EuiLoadingSpinner class=\"euiAccordion__spinner\" />\n <span>\n {{#if this.hasLoadingMessage}}\n {{this.isLoadingMessage}}\n {{else}}\n {{! <EuiI18n @token=\"euiAccordion.isLoading\" @default=\"Loading\" /> }}\n Loading...\n {{/if}}\n </span>\n {{else}}\n <div\n class={{classNames\n componentName=\"EuiAccordion\"\n paddingSize=this.paddingSize\n }}\n >\n {{yield to=\"content\"}}\n </div>\n {{/if}}\n </div>\n </div>\n </Accordion>\n {{/if}}\n {{/let}}\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiAccordionAccordionComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","constructor","owner","args","_opened","forceState","initialIsOpen","buttonElement","element","buttonElementIsFocusable","_arrowDisplay","arrowDisplay","isOpen","hasLoadingMessage","isLoadingMessage","buttonClasses","buttonClassName","buttonProps","className","join","buttonContentClasses","buttonContentClassName","childContentStyle","htmlSafe","setChildContentHeight","requestAnimationFrame","height","childContent","clientHeight","childWrapper","setAttribute","onToggle","focus","n","action","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","and","classNames","eq","EuiButtonIcon","on","randomId","not","EuiLoadingSpinner","didInsert","set","queue","resizeObserver","didUpdate"],"mappings":"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"}
diff --git a/dist/components/eui-badge.js b/dist/components/eui-badge.js
index 0c82ff5fb7da74538614f9d209f1c4a0d50c4a68..e713baff2b1dc0f9b0617b90cf1c4a50dd74c5da 100644
--- a/dist/components/eui-badge.js
+++ b/dist/components/eui-badge.js
@@ -1,6 +1,6 @@
import { hash } from '@ember/helper';
import { on } from '@ember/modifier';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import { not, or, and } from 'ember-truth-helpers';
import argOrDefault from '../helpers/arg-or-default.js';
import classNames from '../helpers/class-names.js';
diff --git a/dist/components/eui-badge.js.map b/dist/components/eui-badge.js.map
index 177240fd18aa6459d92fcb35add4b5ccdc850025..1cef3d271b3f40bf624272087d30bf4abd857977 100644
--- a/dist/components/eui-badge.js.map
+++ b/dist/components/eui-badge.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-badge.js","sources":["../../src/components/eui-badge.gts"],"sourcesContent":["import { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport inlineStyles from '../helpers/inline-styles.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport EuiIcon from './eui-icon.gts';\n\nimport type { colorMapping, EuiBadgeColorType } from '../utils/css-mappings/eui-badge.ts';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiBadgeSignature {\n Element: HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement;\n Args: {\n color?: keyof typeof colorMapping | EuiBadgeColorType | string;\n iconType?: EuiIconSignature['Args']['type'];\n iconSide?: 'left' | 'right';\n iconOnClick?: () => void;\n iconOnClickAriaLabel?: string;\n iconUseSvg?: boolean;\n isDisabled?: boolean;\n onClick?: () => void;\n onClickAriaLabel?: string;\n href?: string;\n target?: string;\n closeButtonProps?: {\n tabIndex?: number;\n dataSelectedIconIndex?: number;\n iconClasses?: string;\n };\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiBadge: TemplateOnlyComponent<EuiBadgeSignature> = <template>\n {{#if (and (or @onClick @href) (not @iconType))}}\n {{#if @onClick}}\n <button\n type=\"button\"\n class={{classNames\n \"euiBadge-isClickable\"\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n color=(argOrDefault @color \"default\")\n }}\n aria-label={{@onClickAriaLabel}}\n disabled={{@isDisabled}}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n {{on \"click\" (optional @onClick)}}\n >\n <span class=\"euiBadge__content\">\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n </span>\n </button>\n {{else}}\n <a\n class={{classNames\n \"euiBadge-isClickable\"\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n color=(argOrDefault @color \"default\")\n }}\n target={{@target}}\n href={{@href}}\n aria-label={{if @onClick @onClickAriaLabel}}\n disabled={{@isDisabled}}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n >\n <span class=\"euiBadge__content\">\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n </span>\n </a>\n {{/if}}\n {{else if @iconType}}\n <span\n class={{classNames\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n iconSide=(argOrDefault @iconSide \"left\")\n color=(argOrDefault @color \"default\")\n }}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n >\n <span class=\"euiBadge__content\">\n {{#if (has-block)}}\n {{#if @onClick}}\n <button\n class=\"euiBadge__childButton\"\n type=\"button\"\n disabled={{@isDisabled}}\n {{on \"click\" (optional @onClick)}}\n >\n {{yield}}\n </button>\n {{else if @href}}\n <a\n class=\"euiBadge__childButton\"\n href={{@href}}\n disabled={{@isDisabled}}\n >\n {{yield}}\n </a>\n {{else}}\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n {{/if}}\n {{/if}}\n {{#if @iconOnClick}}\n {{! template-lint-disable }}\n <button\n type=\"button\"\n class=\"euiBadge__iconButton\"\n aria-label={{@iconOnClickAriaLabel}}\n disabled={{@isDisabled}}\n title={{@iconOnClickAriaLabel}}\n tabindex={{@closeButtonProps.tabIndex}}\n data-selected-index={{@closeButtonProps.dataSelectedIconIndex}}\n {{on \"click\" (optional @iconOnClick)}}\n >\n <EuiIcon\n @color=\"inherit\"\n @iconClasses={{classNames\n \"euiBadge__icon\"\n @closeButtonProps.iconClasses\n }}\n @type={{@iconType}}\n @useSvg={{@iconUseSvg}}\n @size={{if (has-block) \"s\" \"m\"}}\n />\n </button>\n {{! tempalte-lint-enable}}\n {{else}}\n <EuiIcon\n @color=\"inherit\"\n @type={{@iconType}}\n @useSvg={{@iconUseSvg}}\n @size={{if (has-block) \"s\" \"m\"}}\n @iconClasses=\"euiBadge__icon\"\n />\n {{/if}}\n </span>\n </span>\n {{else}}\n <span\n class={{classNames\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n iconSide=(argOrDefault @iconSide \"left\")\n color=(argOrDefault @color \"default\")\n }}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n >\n <span class=\"euiBadge__content\">\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n </span>\n </span>\n {{/if}}\n</template>;\n\nexport default EuiBadge;\n"],"names":["EuiBadge","setComponentTemplate","precompileTemplate","strictMode","scope","and","or","not","classNames","argOrDefault","simpleStyle","inlineStyles","hash","on","optional","EuiIcon","templateOnly"],"mappings":";;;;;;;;;;;;;AAyCA,MAAMA,QAAqD,GAAAC,oBAAA,CAAAC,kBAAA,CA0J3D,w9GAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;IAAAC,WAAA;IAAAC,YAAA;IAAAC,IAAA;IAAAC,EAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-badge.js","sources":["../../src/components/eui-badge.gts"],"sourcesContent":["import { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport inlineStyles from '../helpers/inline-styles.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport EuiIcon from './eui-icon.gts';\n\nimport type { colorMapping, EuiBadgeColorType } from '../utils/css-mappings/eui-badge.ts';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiBadgeSignature {\n Element: HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement;\n Args: {\n color?: keyof typeof colorMapping | EuiBadgeColorType | string;\n iconType?: EuiIconSignature['Args']['type'];\n iconSide?: 'left' | 'right';\n iconOnClick?: () => void;\n iconOnClickAriaLabel?: string;\n iconUseSvg?: boolean;\n isDisabled?: boolean;\n onClick?: () => void;\n onClickAriaLabel?: string;\n href?: string;\n target?: string;\n closeButtonProps?: {\n tabIndex?: number;\n dataSelectedIconIndex?: number;\n iconClasses?: string;\n };\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiBadge: TemplateOnlyComponent<EuiBadgeSignature> = <template>\n {{#if (and (or @onClick @href) (not @iconType))}}\n {{#if @onClick}}\n <button\n type=\"button\"\n class={{classNames\n \"euiBadge-isClickable\"\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n color=(argOrDefault @color \"default\")\n }}\n aria-label={{@onClickAriaLabel}}\n disabled={{@isDisabled}}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n {{on \"click\" (optional @onClick)}}\n >\n <span class=\"euiBadge__content\">\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n </span>\n </button>\n {{else}}\n <a\n class={{classNames\n \"euiBadge-isClickable\"\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n color=(argOrDefault @color \"default\")\n }}\n target={{@target}}\n href={{@href}}\n aria-label={{if @onClick @onClickAriaLabel}}\n disabled={{@isDisabled}}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n >\n <span class=\"euiBadge__content\">\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n </span>\n </a>\n {{/if}}\n {{else if @iconType}}\n <span\n class={{classNames\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n iconSide=(argOrDefault @iconSide \"left\")\n color=(argOrDefault @color \"default\")\n }}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n >\n <span class=\"euiBadge__content\">\n {{#if (has-block)}}\n {{#if @onClick}}\n <button\n class=\"euiBadge__childButton\"\n type=\"button\"\n disabled={{@isDisabled}}\n {{on \"click\" (optional @onClick)}}\n >\n {{yield}}\n </button>\n {{else if @href}}\n <a\n class=\"euiBadge__childButton\"\n href={{@href}}\n disabled={{@isDisabled}}\n >\n {{yield}}\n </a>\n {{else}}\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n {{/if}}\n {{/if}}\n {{#if @iconOnClick}}\n {{! template-lint-disable }}\n <button\n type=\"button\"\n class=\"euiBadge__iconButton\"\n aria-label={{@iconOnClickAriaLabel}}\n disabled={{@isDisabled}}\n title={{@iconOnClickAriaLabel}}\n tabindex={{@closeButtonProps.tabIndex}}\n data-selected-index={{@closeButtonProps.dataSelectedIconIndex}}\n {{on \"click\" (optional @iconOnClick)}}\n >\n <EuiIcon\n @color=\"inherit\"\n @iconClasses={{classNames\n \"euiBadge__icon\"\n @closeButtonProps.iconClasses\n }}\n @type={{@iconType}}\n @useSvg={{@iconUseSvg}}\n @size={{if (has-block) \"s\" \"m\"}}\n />\n </button>\n {{! tempalte-lint-enable}}\n {{else}}\n <EuiIcon\n @color=\"inherit\"\n @type={{@iconType}}\n @useSvg={{@iconUseSvg}}\n @size={{if (has-block) \"s\" \"m\"}}\n @iconClasses=\"euiBadge__icon\"\n />\n {{/if}}\n </span>\n </span>\n {{else}}\n <span\n class={{classNames\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n iconSide=(argOrDefault @iconSide \"left\")\n color=(argOrDefault @color \"default\")\n }}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n >\n <span class=\"euiBadge__content\">\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n </span>\n </span>\n {{/if}}\n</template>;\n\nexport default EuiBadge;\n"],"names":["EuiBadge","setComponentTemplate","precompileTemplate","strictMode","scope","and","or","not","classNames","argOrDefault","simpleStyle","inlineStyles","hash","on","optional","EuiIcon","templateOnly"],"mappings":";;;;;;;;;;;;;AAyCA,MAAMA,QAAqD,GAAAC,oBAAA,CAAAC,kBAAA,CA0J3D,w9GAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;IAAAC,WAAA;IAAAC,YAAA;IAAAC,IAAA;IAAAC,EAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-breadcrumbs.js b/dist/components/eui-breadcrumbs.js
index a09ee0058a83e9a6ccc5d3343ad20824e4650101..3570275d24385c707ddf50404f39a5dc8f7acb30 100644
--- a/dist/components/eui-breadcrumbs.js
+++ b/dist/components/eui-breadcrumbs.js
@@ -4,7 +4,7 @@ import { fn } from '@ember/helper';
import { on } from '@ember/modifier';
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
import { throttle } from '@ember/runloop';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import sub from 'ember-math-helpers/helpers/sub';
import { modifier } from 'ember-modifier';
import { not, and, eq } from 'ember-truth-helpers';
diff --git a/dist/components/eui-breadcrumbs.js.map b/dist/components/eui-breadcrumbs.js.map
index 603de86e4ab7f679e9f2ed52c358745f87162ca0..d9869d230b934a39a789c8e2d2d327f83caf9440 100644
--- a/dist/components/eui-breadcrumbs.js.map
+++ b/dist/components/eui-breadcrumbs.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-breadcrumbs.js","sources":["../../src/components/eui-breadcrumbs.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { throttle } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport sub from 'ember-math-helpers/helpers/sub';\nimport { modifier } from 'ember-modifier';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport classNames from '../helpers/class-names.ts';\nimport useState from '../helpers/use-state.ts';\nimport { getBreakpoint } from '../utils/breakpoint.ts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiInnerText from './eui-inner-text.gts';\nimport EuiLink from './eui-link.gts';\nimport EuiPopover from './eui-popover.gts';\n\nimport type { EuiBreakpointSize } from '../utils/breakpoint.ts';\n\nexport type EuiBreadcrumbResponsiveMaxCount = {\n /**\n * Any of the following keys are allowed: `'xs' | 's' | 'm' | 'l' | 'xl'`\n * Omitting a key will display all breadcrumbs at that breakpoint\n */\n [key in EuiBreakpointSize]?: number;\n};\n\nconst responsiveDefault: EuiBreadcrumbResponsiveMaxCount = {\n xs: 1,\n s: 2,\n m: 4\n};\n\nexport type EuiBreadcrumb = {\n /**\n * Visible label of the breadcrumb\n */\n text: string;\n href?: string;\n onClick?: (e: MouseEvent) => void;\n\n className?: string;\n /**\n * Force a max-width on the breadcrumb text\n */\n truncate?: boolean;\n\n ellipsis?: boolean;\n\n color?: string;\n\n 'aria-current': string;\n};\n\nconst onWindowResizeModifier = modifier(\n (\n _ele: HTMLElement,\n _pos,\n {\n functionToCallOnWindowResize\n }: { functionToCallOnWindowResize: () => void }\n ) => {\n window.addEventListener('resize', functionToCallOnWindowResize);\n\n return () => {\n window.removeEventListener('resize', functionToCallOnWindowResize);\n };\n }\n);\n\nconst limitedBreadcrumbs = (max: number, breadcrumbs: EuiBreadcrumb[]) => {\n const breadcrumbsAtStart = [];\n const breadcrumbsAtEnd = [];\n const limit = Math.min(max, breadcrumbs.length);\n const start = Math.floor(limit / 2);\n const overflowBreadcrumbs = breadcrumbs.slice(\n start,\n start + breadcrumbs.length - limit\n );\n\n if (\n overflowBreadcrumbs.length &&\n overflowBreadcrumbs[overflowBreadcrumbs.length - 1]\n ) {\n overflowBreadcrumbs[overflowBreadcrumbs.length - 1]!['aria-current'] =\n 'false';\n }\n\n for (let i = 0; i < limit; i++) {\n // We'll alternate with displaying breadcrumbs at the end and at the start, but be biased\n // towards breadcrumbs the end so that if max is an odd number, we'll have one more\n // breadcrumb visible at the end than at the beginning.\n const isEven = i % 2 === 0;\n\n // We're picking breadcrumbs from the front AND the back, so we treat each iteration as a\n // half-iteration.\n const normalizedIndex = Math.floor(i * 0.5);\n const indexOfBreadcrumb = isEven\n ? breadcrumbs.length - 1 - normalizedIndex\n : normalizedIndex;\n const breadcrumb = breadcrumbs[indexOfBreadcrumb];\n\n if (isEven && breadcrumb) {\n breadcrumbsAtEnd.unshift(breadcrumb);\n } else if (breadcrumb) {\n breadcrumbsAtStart.push(breadcrumb);\n }\n }\n\n if (max < breadcrumbs.length) {\n breadcrumbsAtStart.push({ ellipsis: true } as EuiBreadcrumb);\n }\n\n return {\n breadcrumbs: [...breadcrumbsAtStart, ...breadcrumbsAtEnd],\n overflowBreadcrumbs\n };\n};\n\ninterface EuiBreadcrumbsComponentArgs {\n /**\n * Hides extra (above the max) breadcrumbs under a collapsed item as the window gets smaller.\n * Pass a custom #EuiBreadcrumbResponsiveMaxCount object to change the number of breadcrumbs to show at the particular breakpoints.\n *\n * Pass `false` to turn this behavior off.\n *\n * Default: `{ xs: 1, s: 2, m: 4 }`\n */\n responsive?: boolean | EuiBreadcrumbResponsiveMaxCount;\n\n /**\n * Forces all breadcrumbs to single line and\n * truncates each breadcrumb to a particular width,\n * except for the last item\n */\n truncate?: boolean;\n\n /**\n * Collapses the inner items past the maximum set here\n * into a single ellipses item.\n * Omitting or passing a `0` value will show all breadcrumbs.\n */\n max?: number | null;\n\n /**\n * The array of individual #EuiBreadcrumb items\n */\n breadcrumbs: EuiBreadcrumb[];\n}\n\nexport interface EuiBreadcrumbsSignature {\n Element: HTMLElement;\n Args: EuiBreadcrumbsComponentArgs;\n Blocks: { default: [] };\n}\n\nexport default class EuiBreadcrumbs extends Component<EuiBreadcrumbsSignature> {\n @tracked currentBreakpoint;\n\n constructor(owner: Owner, args: EuiBreadcrumbsComponentArgs) {\n super(owner, args);\n this.currentBreakpoint = getBreakpoint(\n typeof window === 'undefined' ? -Infinity : window.innerWidth\n );\n }\n\n functionToCallOnWindowResize = () => {\n throttle(() => {\n const newBreakpoint = getBreakpoint(window.innerWidth);\n\n if (newBreakpoint !== this.currentBreakpoint) {\n this.currentBreakpoint = newBreakpoint;\n }\n }, 50);\n };\n\n get responsiveObject() {\n return typeof this.args.responsive === 'object'\n ? this.args.responsive\n : responsiveDefault;\n }\n\n get max() {\n if (this.args.max === null) {\n return null;\n }\n\n return this.args.max ?? 5;\n }\n\n get truncate() {\n return this.args.truncate ?? true;\n }\n\n get calculatedMax(): EuiBreadcrumbsComponentArgs['max'] {\n // The max property collapses any breadcrumbs past the max quantity.\n // This is the same behavior we want for responsiveness.\n // So calculate the max value based on the combination of `max` and `responsive`\n let calculatedMax: EuiBreadcrumbsComponentArgs['max'] = this.max;\n\n // Set the calculated max to the number associated with the currentBreakpoint key if it exists\n if (\n this.args.responsive &&\n this.responsiveObject[this.currentBreakpoint as EuiBreakpointSize]\n ) {\n calculatedMax =\n this.responsiveObject[this.currentBreakpoint as EuiBreakpointSize];\n }\n\n // Final check is to make sure max is used over a larger breakpoint value\n if (this.max && calculatedMax) {\n calculatedMax = this.max < calculatedMax ? this.max : calculatedMax;\n }\n\n return calculatedMax;\n }\n\n @cached\n get limitedBreadcrumbs() {\n const calculatedMax = this.calculatedMax;\n\n return calculatedMax\n ? limitedBreadcrumbs(calculatedMax, this.args.breadcrumbs)\n : {\n breadcrumbs: this.args.breadcrumbs,\n overflowBreadcrumbs: [] as EuiBreadcrumb[]\n };\n }\n\n <template>\n <nav\n {{onWindowResizeModifier\n functionToCallOnWindowResize=this.functionToCallOnWindowResize\n }}\n class={{classNames\n \"euiBreadcrumbs\"\n (if this.truncate \"euiBreadcrumbs--truncate\")\n }}\n ...attributes\n >\n <ol class=\"euiBreadcrumbs__list\">\n\n {{#each this.limitedBreadcrumbs.breadcrumbs as |breadcrumb index|}}\n\n {{#if breadcrumb.ellipsis}}\n {{#let (useState false) as |popOverState|}}\n <li class=\"euiBreadcrumb euiBreadcrumb--collapsed\">\n <EuiPopover\n @isOpen={{popOverState.value}}\n @closePopover={{fn popOverState.setState false}}\n >\n <:button>\n <EuiLink\n class=\"euiBreadcrumb__content\"\n @color=\"subdued\"\n aria-label=\"See collapsed breadcrumbs\"\n title=\"See collapsed breadcrumbs\"\n {{on \"click\" (fn popOverState.setState true)}}\n >\n &hellip;<EuiIcon @type=\"arrowDown\" @size=\"s\" />\n </EuiLink>\n </:button>\n <:content>\n <EuiBreadcrumbs\n class=\"euiBreadcrumbs__inPopover\"\n @breadcrumbs={{this.limitedBreadcrumbs.overflowBreadcrumbs}}\n @responsive={{false}}\n @truncate={{false}}\n @max={{0}}\n />\n </:content>\n </EuiPopover>\n\n </li>\n\n {{/let}}\n {{else}}\n <EuiInnerText as |setInnerTextRef innerText|>\n {{#let\n (eq index (sub this.limitedBreadcrumbs.breadcrumbs.length 1))\n (if (eq innerText \"\") undefined innerText)\n as |isLastBreadcrumb title|\n }}\n <li\n class={{classNames\n \"euiBreadcrumb\"\n (if isLastBreadcrumb \"euiBreadcrumb--last\")\n (if breadcrumb.truncate \"euiBreadcrumb--truncate\")\n }}\n >\n {{#if (and (not breadcrumb.href) (not breadcrumb.onClick))}}\n <span\n {{didInsert setInnerTextRef}}\n title={{title}}\n class={{classNames\n \"euiBreadcrumb__content\"\n breadcrumb.className\n }}\n aria-current={{if isLastBreadcrumb \"page\" undefined}}\n >\n {{breadcrumb.text}}\n </span>\n {{else}}\n <EuiLink\n {{didInsert setInnerTextRef}}\n @color={{if\n breadcrumb.color\n breadcrumb.color\n (if isLastBreadcrumb \"text\" \"subdued\")\n }}\n @href={{breadcrumb.href}}\n title={{title}}\n class={{classNames\n \"euiBreadcrumb__content\"\n breadcrumb.className\n }}\n {{on \"click\" (optional breadcrumb.onClick)}}\n aria-current={{if isLastBreadcrumb \"page\" undefined}}\n >\n {{breadcrumb.text}}\n </EuiLink>\n {{/if}}\n\n </li>\n {{/let}}\n </EuiInnerText>\n {{/if}}\n\n {{/each}}\n\n </ol>\n </nav>\n </template>\n}\n"],"names":["responsiveDefault","xs","s","m","onWindowResizeModifier","modifier","_ele","_pos","functionToCallOnWindowResize","window","addEventListener","removeEventListener","limitedBreadcrumbs","max","breadcrumbs","breadcrumbsAtStart","breadcrumbsAtEnd","limit","Math","min","length","start","floor","overflowBreadcrumbs","slice","i","isEven","normalizedIndex","indexOfBreadcrumb","breadcrumb","unshift","push","ellipsis","EuiBreadcrumbs","Component","g","prototype","tracked","void 0","constructor","owner","args","currentBreakpoint","getBreakpoint","Infinity","innerWidth","throttle","newBreakpoint","responsiveObject","responsive","truncate","calculatedMax","n","cached","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","useState","EuiPopover","fn","EuiLink","on","EuiIcon","EuiInnerText","eq","sub","and","not","didInsert","optional"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"eui-breadcrumbs.js","sources":["../../src/components/eui-breadcrumbs.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { throttle } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport sub from 'ember-math-helpers/helpers/sub';\nimport { modifier } from 'ember-modifier';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport classNames from '../helpers/class-names.ts';\nimport useState from '../helpers/use-state.ts';\nimport { getBreakpoint } from '../utils/breakpoint.ts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiInnerText from './eui-inner-text.gts';\nimport EuiLink from './eui-link.gts';\nimport EuiPopover from './eui-popover.gts';\n\nimport type { EuiBreakpointSize } from '../utils/breakpoint.ts';\n\nexport type EuiBreadcrumbResponsiveMaxCount = {\n /**\n * Any of the following keys are allowed: `'xs' | 's' | 'm' | 'l' | 'xl'`\n * Omitting a key will display all breadcrumbs at that breakpoint\n */\n [key in EuiBreakpointSize]?: number;\n};\n\nconst responsiveDefault: EuiBreadcrumbResponsiveMaxCount = {\n xs: 1,\n s: 2,\n m: 4\n};\n\nexport type EuiBreadcrumb = {\n /**\n * Visible label of the breadcrumb\n */\n text: string;\n href?: string;\n onClick?: (e: MouseEvent) => void;\n\n className?: string;\n /**\n * Force a max-width on the breadcrumb text\n */\n truncate?: boolean;\n\n ellipsis?: boolean;\n\n color?: string;\n\n 'aria-current': string;\n};\n\nconst onWindowResizeModifier = modifier(\n (\n _ele: HTMLElement,\n _pos,\n {\n functionToCallOnWindowResize\n }: { functionToCallOnWindowResize: () => void }\n ) => {\n window.addEventListener('resize', functionToCallOnWindowResize);\n\n return () => {\n window.removeEventListener('resize', functionToCallOnWindowResize);\n };\n }\n);\n\nconst limitedBreadcrumbs = (max: number, breadcrumbs: EuiBreadcrumb[]) => {\n const breadcrumbsAtStart = [];\n const breadcrumbsAtEnd = [];\n const limit = Math.min(max, breadcrumbs.length);\n const start = Math.floor(limit / 2);\n const overflowBreadcrumbs = breadcrumbs.slice(\n start,\n start + breadcrumbs.length - limit\n );\n\n if (\n overflowBreadcrumbs.length &&\n overflowBreadcrumbs[overflowBreadcrumbs.length - 1]\n ) {\n overflowBreadcrumbs[overflowBreadcrumbs.length - 1]!['aria-current'] =\n 'false';\n }\n\n for (let i = 0; i < limit; i++) {\n // We'll alternate with displaying breadcrumbs at the end and at the start, but be biased\n // towards breadcrumbs the end so that if max is an odd number, we'll have one more\n // breadcrumb visible at the end than at the beginning.\n const isEven = i % 2 === 0;\n\n // We're picking breadcrumbs from the front AND the back, so we treat each iteration as a\n // half-iteration.\n const normalizedIndex = Math.floor(i * 0.5);\n const indexOfBreadcrumb = isEven\n ? breadcrumbs.length - 1 - normalizedIndex\n : normalizedIndex;\n const breadcrumb = breadcrumbs[indexOfBreadcrumb];\n\n if (isEven && breadcrumb) {\n breadcrumbsAtEnd.unshift(breadcrumb);\n } else if (breadcrumb) {\n breadcrumbsAtStart.push(breadcrumb);\n }\n }\n\n if (max < breadcrumbs.length) {\n breadcrumbsAtStart.push({ ellipsis: true } as EuiBreadcrumb);\n }\n\n return {\n breadcrumbs: [...breadcrumbsAtStart, ...breadcrumbsAtEnd],\n overflowBreadcrumbs\n };\n};\n\ninterface EuiBreadcrumbsComponentArgs {\n /**\n * Hides extra (above the max) breadcrumbs under a collapsed item as the window gets smaller.\n * Pass a custom #EuiBreadcrumbResponsiveMaxCount object to change the number of breadcrumbs to show at the particular breakpoints.\n *\n * Pass `false` to turn this behavior off.\n *\n * Default: `{ xs: 1, s: 2, m: 4 }`\n */\n responsive?: boolean | EuiBreadcrumbResponsiveMaxCount;\n\n /**\n * Forces all breadcrumbs to single line and\n * truncates each breadcrumb to a particular width,\n * except for the last item\n */\n truncate?: boolean;\n\n /**\n * Collapses the inner items past the maximum set here\n * into a single ellipses item.\n * Omitting or passing a `0` value will show all breadcrumbs.\n */\n max?: number | null;\n\n /**\n * The array of individual #EuiBreadcrumb items\n */\n breadcrumbs: EuiBreadcrumb[];\n}\n\nexport interface EuiBreadcrumbsSignature {\n Element: HTMLElement;\n Args: EuiBreadcrumbsComponentArgs;\n Blocks: { default: [] };\n}\n\nexport default class EuiBreadcrumbs extends Component<EuiBreadcrumbsSignature> {\n @tracked currentBreakpoint;\n\n constructor(owner: Owner, args: EuiBreadcrumbsComponentArgs) {\n super(owner, args);\n this.currentBreakpoint = getBreakpoint(\n typeof window === 'undefined' ? -Infinity : window.innerWidth\n );\n }\n\n functionToCallOnWindowResize = () => {\n throttle(() => {\n const newBreakpoint = getBreakpoint(window.innerWidth);\n\n if (newBreakpoint !== this.currentBreakpoint) {\n this.currentBreakpoint = newBreakpoint;\n }\n }, 50);\n };\n\n get responsiveObject() {\n return typeof this.args.responsive === 'object'\n ? this.args.responsive\n : responsiveDefault;\n }\n\n get max() {\n if (this.args.max === null) {\n return null;\n }\n\n return this.args.max ?? 5;\n }\n\n get truncate() {\n return this.args.truncate ?? true;\n }\n\n get calculatedMax(): EuiBreadcrumbsComponentArgs['max'] {\n // The max property collapses any breadcrumbs past the max quantity.\n // This is the same behavior we want for responsiveness.\n // So calculate the max value based on the combination of `max` and `responsive`\n let calculatedMax: EuiBreadcrumbsComponentArgs['max'] = this.max;\n\n // Set the calculated max to the number associated with the currentBreakpoint key if it exists\n if (\n this.args.responsive &&\n this.responsiveObject[this.currentBreakpoint as EuiBreakpointSize]\n ) {\n calculatedMax =\n this.responsiveObject[this.currentBreakpoint as EuiBreakpointSize];\n }\n\n // Final check is to make sure max is used over a larger breakpoint value\n if (this.max && calculatedMax) {\n calculatedMax = this.max < calculatedMax ? this.max : calculatedMax;\n }\n\n return calculatedMax;\n }\n\n @cached\n get limitedBreadcrumbs() {\n const calculatedMax = this.calculatedMax;\n\n return calculatedMax\n ? limitedBreadcrumbs(calculatedMax, this.args.breadcrumbs)\n : {\n breadcrumbs: this.args.breadcrumbs,\n overflowBreadcrumbs: [] as EuiBreadcrumb[]\n };\n }\n\n <template>\n <nav\n {{onWindowResizeModifier\n functionToCallOnWindowResize=this.functionToCallOnWindowResize\n }}\n class={{classNames\n \"euiBreadcrumbs\"\n (if this.truncate \"euiBreadcrumbs--truncate\")\n }}\n ...attributes\n >\n <ol class=\"euiBreadcrumbs__list\">\n\n {{#each this.limitedBreadcrumbs.breadcrumbs as |breadcrumb index|}}\n\n {{#if breadcrumb.ellipsis}}\n {{#let (useState false) as |popOverState|}}\n <li class=\"euiBreadcrumb euiBreadcrumb--collapsed\">\n <EuiPopover\n @isOpen={{popOverState.value}}\n @closePopover={{fn popOverState.setState false}}\n >\n <:button>\n <EuiLink\n class=\"euiBreadcrumb__content\"\n @color=\"subdued\"\n aria-label=\"See collapsed breadcrumbs\"\n title=\"See collapsed breadcrumbs\"\n {{on \"click\" (fn popOverState.setState true)}}\n >\n &hellip;<EuiIcon @type=\"arrowDown\" @size=\"s\" />\n </EuiLink>\n </:button>\n <:content>\n <EuiBreadcrumbs\n class=\"euiBreadcrumbs__inPopover\"\n @breadcrumbs={{this.limitedBreadcrumbs.overflowBreadcrumbs}}\n @responsive={{false}}\n @truncate={{false}}\n @max={{0}}\n />\n </:content>\n </EuiPopover>\n\n </li>\n\n {{/let}}\n {{else}}\n <EuiInnerText as |setInnerTextRef innerText|>\n {{#let\n (eq index (sub this.limitedBreadcrumbs.breadcrumbs.length 1))\n (if (eq innerText \"\") undefined innerText)\n as |isLastBreadcrumb title|\n }}\n <li\n class={{classNames\n \"euiBreadcrumb\"\n (if isLastBreadcrumb \"euiBreadcrumb--last\")\n (if breadcrumb.truncate \"euiBreadcrumb--truncate\")\n }}\n >\n {{#if (and (not breadcrumb.href) (not breadcrumb.onClick))}}\n <span\n {{didInsert setInnerTextRef}}\n title={{title}}\n class={{classNames\n \"euiBreadcrumb__content\"\n breadcrumb.className\n }}\n aria-current={{if isLastBreadcrumb \"page\" undefined}}\n >\n {{breadcrumb.text}}\n </span>\n {{else}}\n <EuiLink\n {{didInsert setInnerTextRef}}\n @color={{if\n breadcrumb.color\n breadcrumb.color\n (if isLastBreadcrumb \"text\" \"subdued\")\n }}\n @href={{breadcrumb.href}}\n title={{title}}\n class={{classNames\n \"euiBreadcrumb__content\"\n breadcrumb.className\n }}\n {{on \"click\" (optional breadcrumb.onClick)}}\n aria-current={{if isLastBreadcrumb \"page\" undefined}}\n >\n {{breadcrumb.text}}\n </EuiLink>\n {{/if}}\n\n </li>\n {{/let}}\n </EuiInnerText>\n {{/if}}\n\n {{/each}}\n\n </ol>\n </nav>\n </template>\n}\n"],"names":["responsiveDefault","xs","s","m","onWindowResizeModifier","modifier","_ele","_pos","functionToCallOnWindowResize","window","addEventListener","removeEventListener","limitedBreadcrumbs","max","breadcrumbs","breadcrumbsAtStart","breadcrumbsAtEnd","limit","Math","min","length","start","floor","overflowBreadcrumbs","slice","i","isEven","normalizedIndex","indexOfBreadcrumb","breadcrumb","unshift","push","ellipsis","EuiBreadcrumbs","Component","g","prototype","tracked","void 0","constructor","owner","args","currentBreakpoint","getBreakpoint","Infinity","innerWidth","throttle","newBreakpoint","responsiveObject","responsive","truncate","calculatedMax","n","cached","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","useState","EuiPopover","fn","EuiLink","on","EuiIcon","EuiInnerText","eq","sub","and","not","didInsert","optional"],"mappings":"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"}
diff --git a/dist/components/eui-button-group-button.js b/dist/components/eui-button-group-button.js
index 9efb0b84412c4f3dbf5146628dd55a30f14d450f..2ab0f09d64e57aea612f53bfa1b809b14cdaf23c 100644
--- a/dist/components/eui-button-group-button.js
+++ b/dist/components/eui-button-group-button.js
@@ -1,7 +1,7 @@
import { fn } from '@ember/helper';
import { on } from '@ember/modifier';
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
-import noop from 'ember-composable-helpers/helpers/noop';
+import noop from '@nullvoxpopuli/ember-composable-helpers/helpers/noop';
import { eq, and, notEq } from 'ember-truth-helpers';
import randomId from '../-private/random-id.js';
import classNames from '../helpers/class-names.js';
diff --git a/dist/components/eui-button-group-button.js.map b/dist/components/eui-button-group-button.js.map
index 8fb2f0fe04a8a8d5dc5afb3536d5295d21b4c1f1..41e3cc19d29cd2809252621eda9955a489359b91 100644
--- a/dist/components/eui-button-group-button.js.map
+++ b/dist/components/eui-button-group-button.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-button-group-button.js","sources":["../../src/components/eui-button-group-button.gts"],"sourcesContent":["import { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport noop from 'ember-composable-helpers/helpers/noop';\nimport { and, eq, notEq } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiButton from './eui-button.gts';\nimport EuiInnerText from './eui-inner-text.gts';\n\nimport type { EuiButtonSignature } from './eui-button';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiButtonGroupButtonSignature {\n Element: EuiButtonSignature['Element'];\n Args: {\n id: string;\n value?: string;\n element?: 'label' | 'button';\n name?: string;\n label?: string;\n isDisabled?: boolean;\n isSelected?: boolean;\n isIconOnly?: boolean;\n size?: EuiButtonSignature['Args']['size'];\n color?: EuiButtonSignature['Args']['color'];\n contentClasses?: EuiButtonSignature['Args']['contentClasses'];\n iconSide?: EuiButtonSignature['Args']['iconSide'];\n iconType?: EuiButtonSignature['Args']['iconType'];\n iconSize?: EuiButtonSignature['Args']['iconSize'];\n iconClasses?: EuiButtonSignature['Args']['iconClasses'];\n isLoading?: EuiButtonSignature['Args']['isLoading'];\n textClasses?: EuiButtonSignature['Args']['textClasses'];\n type?: EuiButtonSignature['Args']['type'];\n onChange: (id: string, value?: string) => void;\n };\n}\n\nconst EuiButtonGroupButton: TemplateOnlyComponent<EuiButtonGroupButtonSignature> =\n <template>\n {{#let\n (if @isDisabled \"button\" @element)\n (randomId)\n (classNames\n (if @isSelected \"euiButtonGroupButton-isSelected\")\n (if @isIconOnly \"euiButtonGroupButton-isIconOnly\")\n )\n as |element newId classes|\n }}\n {{#let (notEq @element \"label\") as |isNotLabel|}}\n <EuiInnerText as |setInnerTextRef innerText|>\n <EuiButton\n @baseClassName=\"euiButtonGroupButton\"\n class={{classes}}\n @element={{element}}\n @fill={{and (notEq @size \"compressed\") @isSelected}}\n @isDisabled={{@isDisabled}}\n @size={{if (eq @size \"compressed\") \"s\" @size}}\n @color={{@color}}\n @contentClasses={{@contentClasses}}\n @iconSide={{@iconSide}}\n @iconType={{@iconType}}\n @iconSize={{@iconSize}}\n @iconClasses={{@iconClasses}}\n @isLoading={{@isLoading}}\n @textClasses={{classNames\n @textClasses\n (if\n @isIconOnly\n \"euiScreenReaderOnly\"\n \"euiButtonGroupButton__textShift\"\n )\n }}\n @isSelected={{if isNotLabel @isSelected}}\n type={{if isNotLabel @type}}\n for={{if (eq element \"label\") newId}}\n id={{if isNotLabel newId}}\n title={{innerText}}\n {{on \"click\" (if isNotLabel (fn @onChange @id) (noop))}}\n {{didInsert setInnerTextRef}}\n ...attributes\n >\n {{#if (eq element \"label\")}}\n <input\n id={{newId}}\n class=\"euiScreenReaderOnly\"\n name={{@name}}\n checked={{@isSelected}}\n disabled={{@isDisabled}}\n value={{@value}}\n type=\"radio\"\n {{on \"change\" (fn @onChange @id @value)}}\n />\n {{/if}}\n {{@label}}\n </EuiButton>\n </EuiInnerText>\n {{/let}}\n {{/let}}\n </template>;\n\nexport default EuiButtonGroupButton;\n"],"names":["EuiButtonGroupButton","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","classNames","notEq","EuiInnerText","EuiButton","and","eq","on","fn","noop","didInsert","templateOnly"],"mappings":";;;;;;;;;;;;;AAwCA,MAAMA,oBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CA4DA,69CAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,KAAA;kBAAAC,QAAA;IAAAC,SAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,IAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-button-group-button.js","sources":["../../src/components/eui-button-group-button.gts"],"sourcesContent":["import { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport noop from '@nullvoxpopuli/ember-composable-helpers/helpers/noop';\nimport { and, eq, notEq } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiButton from './eui-button.gts';\nimport EuiInnerText from './eui-inner-text.gts';\n\nimport type { EuiButtonSignature } from './eui-button';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiButtonGroupButtonSignature {\n Element: EuiButtonSignature['Element'];\n Args: {\n id: string;\n value?: string;\n element?: 'label' | 'button';\n name?: string;\n label?: string;\n isDisabled?: boolean;\n isSelected?: boolean;\n isIconOnly?: boolean;\n size?: EuiButtonSignature['Args']['size'];\n color?: EuiButtonSignature['Args']['color'];\n contentClasses?: EuiButtonSignature['Args']['contentClasses'];\n iconSide?: EuiButtonSignature['Args']['iconSide'];\n iconType?: EuiButtonSignature['Args']['iconType'];\n iconSize?: EuiButtonSignature['Args']['iconSize'];\n iconClasses?: EuiButtonSignature['Args']['iconClasses'];\n isLoading?: EuiButtonSignature['Args']['isLoading'];\n textClasses?: EuiButtonSignature['Args']['textClasses'];\n type?: EuiButtonSignature['Args']['type'];\n onChange: (id: string, value?: string) => void;\n };\n}\n\nconst EuiButtonGroupButton: TemplateOnlyComponent<EuiButtonGroupButtonSignature> =\n <template>\n {{#let\n (if @isDisabled \"button\" @element)\n (randomId)\n (classNames\n (if @isSelected \"euiButtonGroupButton-isSelected\")\n (if @isIconOnly \"euiButtonGroupButton-isIconOnly\")\n )\n as |element newId classes|\n }}\n {{#let (notEq @element \"label\") as |isNotLabel|}}\n <EuiInnerText as |setInnerTextRef innerText|>\n <EuiButton\n @baseClassName=\"euiButtonGroupButton\"\n class={{classes}}\n @element={{element}}\n @fill={{and (notEq @size \"compressed\") @isSelected}}\n @isDisabled={{@isDisabled}}\n @size={{if (eq @size \"compressed\") \"s\" @size}}\n @color={{@color}}\n @contentClasses={{@contentClasses}}\n @iconSide={{@iconSide}}\n @iconType={{@iconType}}\n @iconSize={{@iconSize}}\n @iconClasses={{@iconClasses}}\n @isLoading={{@isLoading}}\n @textClasses={{classNames\n @textClasses\n (if\n @isIconOnly\n \"euiScreenReaderOnly\"\n \"euiButtonGroupButton__textShift\"\n )\n }}\n @isSelected={{if isNotLabel @isSelected}}\n type={{if isNotLabel @type}}\n for={{if (eq element \"label\") newId}}\n id={{if isNotLabel newId}}\n title={{innerText}}\n {{on \"click\" (if isNotLabel (fn @onChange @id) (noop))}}\n {{didInsert setInnerTextRef}}\n ...attributes\n >\n {{#if (eq element \"label\")}}\n <input\n id={{newId}}\n class=\"euiScreenReaderOnly\"\n name={{@name}}\n checked={{@isSelected}}\n disabled={{@isDisabled}}\n value={{@value}}\n type=\"radio\"\n {{on \"change\" (fn @onChange @id @value)}}\n />\n {{/if}}\n {{@label}}\n </EuiButton>\n </EuiInnerText>\n {{/let}}\n {{/let}}\n </template>;\n\nexport default EuiButtonGroupButton;\n"],"names":["EuiButtonGroupButton","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","classNames","notEq","EuiInnerText","EuiButton","and","eq","on","fn","noop","didInsert","templateOnly"],"mappings":";;;;;;;;;;;;;AAwCA,MAAMA,oBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CA4DA,69CAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,KAAA;kBAAAC,QAAA;IAAAC,SAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,IAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-card-select.js b/dist/components/eui-card-select.js
index d362e74e5c04c684b4621459d3ac84ffd481f86a..6aeda1fba5edee434a6e5ef488c79f273eef059d 100644
--- a/dist/components/eui-card-select.js
+++ b/dist/components/eui-card-select.js
@@ -1,6 +1,6 @@
import Component from '@glimmer/component';
import { on } from '@ember/modifier';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import argOrDefault from '../helpers/arg-or-default.js';
import classNames from '../helpers/class-names.js';
import EuiButtonEmpty from './eui-button-empty.js';
diff --git a/dist/components/eui-card-select.js.map b/dist/components/eui-card-select.js.map
index 6efe31840f483798cbbf7a7ed4516f694d174b66..b2aeb21d74ac93e3ef79520424b9723d87287b5a 100644
--- a/dist/components/eui-card-select.js.map
+++ b/dist/components/eui-card-select.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-card-select.js","sources":["../../src/components/eui-card-select.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiButtonEmpty from './eui-button-empty.gts';\n\nimport type { EuiButtonEmptySignature } from './eui-button-empty';\n\nexport type EuiCardSelectProps = {\n /**\n * Is in the selected state\n */\n isSelected?: boolean;\n isDisabled?: boolean;\n buttonId?: string;\n color?: EuiButtonEmptySignature['Args']['color'];\n isLoading?: EuiButtonEmptySignature['Args']['isLoading'];\n href?: EuiButtonEmptySignature['Args']['href'];\n iconSide?: EuiButtonEmptySignature['Args']['iconSide'];\n flush?: EuiButtonEmptySignature['Args']['flush'];\n type?: EuiButtonEmptySignature['Args']['type'];\n onClick?: (e: MouseEvent) => void;\n};\n\nexport function euiCardSelectableColor(\n color: string | undefined,\n isSelected: boolean | undefined\n): string {\n let calculatedColor;\n\n if (color) {\n calculatedColor = color;\n } else if (isSelected) {\n calculatedColor = 'success';\n } else {\n calculatedColor = 'text';\n }\n\n return calculatedColor;\n}\n\nexport interface EuiCardSelectSignature {\n Element: EuiButtonEmptySignature['Element'];\n Args: EuiCardSelectProps;\n Blocks: {\n default: [];\n };\n}\n\nexport default class EuiCardSelectComponent extends Component<EuiCardSelectSignature> {\n get selectColorClass() {\n return `euiCardSelect--${euiCardSelectableColor(\n this.args.color,\n this.args.isSelected\n )}`;\n }\n\n <template>\n <EuiButtonEmpty\n class={{classNames this.selectColorClass componentName=\"EuiCardSelect\"}}\n id={{@buttonId}}\n @color={{argOrDefault @color \"text\"}}\n @size=\"xs\"\n @isDisabled={{@isDisabled}}\n @iconType={{if @isSelected \"check\" undefined}}\n @isLoading={{@isLoading}}\n @href={{@href}}\n @iconSide={{@iconSide}}\n @flush={{@flush}}\n @type={{@type}}\n role=\"switch\"\n aria-checked={{@isSelected}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n {{#if (has-block)}}\n {{yield}}\n {{else if @isSelected}}\n Selected\n {{else if @isDisabled}}\n Unavailable\n {{else}}\n Select\n {{/if}}\n </EuiButtonEmpty>\n </template>\n}\n"],"names":["euiCardSelectableColor","color","isSelected","calculatedColor","EuiCardSelectComponent","Component","selectColorClass","args","setComponentTemplate","precompileTemplate","strictMode","scope","EuiButtonEmpty","classNames","argOrDefault","on","optional"],"mappings":";;;;;;;;;AA2BO,SAASA,sBAAAA,CACdC,KAAyB,EACzBC,UAA+B,EACxB;AACP,EAAA,IAAIC,eAAA;AAEJ,EAAA,IAAIF,KAAO,EAAA;AACTE,IAAAA,eAAkB,GAAAF,KAAA;GACpB,MAAO,IAAIC,UAAY,EAAA;AACrBC,IAAAA,eAAkB,GAAA,SAAA;AACpB,GAAO,MAAA;AACLA,IAAAA,eAAkB,GAAA,MAAA;AACpB;AAEA,EAAA,OAAOA,eAAA;AACT;AAUe,MAAMC,+BAA+BC,SAAU,CAAA;EAC5D,IAAIC,gBAAmBA,GAAA;AACrB,IAAA,OAAO,CAAkBN,eAAAA,EAAAA,sBACvB,CAAA,IAAI,CAACO,IAAI,CAACN,KAAK,EACf,IAAI,CAACM,IAAI,CAACL,UAAU,EACnB,CAAA;AACL;AAEA,EAAA;IAAAM,oBAAA,CAAAC,kBAAA,CA4BA,upBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,cAAA;QAAAC,UAAA;QAAAC,YAAA;QAAAC,EAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-card-select.js","sources":["../../src/components/eui-card-select.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiButtonEmpty from './eui-button-empty.gts';\n\nimport type { EuiButtonEmptySignature } from './eui-button-empty';\n\nexport type EuiCardSelectProps = {\n /**\n * Is in the selected state\n */\n isSelected?: boolean;\n isDisabled?: boolean;\n buttonId?: string;\n color?: EuiButtonEmptySignature['Args']['color'];\n isLoading?: EuiButtonEmptySignature['Args']['isLoading'];\n href?: EuiButtonEmptySignature['Args']['href'];\n iconSide?: EuiButtonEmptySignature['Args']['iconSide'];\n flush?: EuiButtonEmptySignature['Args']['flush'];\n type?: EuiButtonEmptySignature['Args']['type'];\n onClick?: (e: MouseEvent) => void;\n};\n\nexport function euiCardSelectableColor(\n color: string | undefined,\n isSelected: boolean | undefined\n): string {\n let calculatedColor;\n\n if (color) {\n calculatedColor = color;\n } else if (isSelected) {\n calculatedColor = 'success';\n } else {\n calculatedColor = 'text';\n }\n\n return calculatedColor;\n}\n\nexport interface EuiCardSelectSignature {\n Element: EuiButtonEmptySignature['Element'];\n Args: EuiCardSelectProps;\n Blocks: {\n default: [];\n };\n}\n\nexport default class EuiCardSelectComponent extends Component<EuiCardSelectSignature> {\n get selectColorClass() {\n return `euiCardSelect--${euiCardSelectableColor(\n this.args.color,\n this.args.isSelected\n )}`;\n }\n\n <template>\n <EuiButtonEmpty\n class={{classNames this.selectColorClass componentName=\"EuiCardSelect\"}}\n id={{@buttonId}}\n @color={{argOrDefault @color \"text\"}}\n @size=\"xs\"\n @isDisabled={{@isDisabled}}\n @iconType={{if @isSelected \"check\" undefined}}\n @isLoading={{@isLoading}}\n @href={{@href}}\n @iconSide={{@iconSide}}\n @flush={{@flush}}\n @type={{@type}}\n role=\"switch\"\n aria-checked={{@isSelected}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n {{#if (has-block)}}\n {{yield}}\n {{else if @isSelected}}\n Selected\n {{else if @isDisabled}}\n Unavailable\n {{else}}\n Select\n {{/if}}\n </EuiButtonEmpty>\n </template>\n}\n"],"names":["euiCardSelectableColor","color","isSelected","calculatedColor","EuiCardSelectComponent","Component","selectColorClass","args","setComponentTemplate","precompileTemplate","strictMode","scope","EuiButtonEmpty","classNames","argOrDefault","on","optional"],"mappings":";;;;;;;;;AA2BO,SAASA,sBAAAA,CACdC,KAAyB,EACzBC,UAA+B,EACxB;AACP,EAAA,IAAIC,eAAA;AAEJ,EAAA,IAAIF,KAAO,EAAA;AACTE,IAAAA,eAAkB,GAAAF,KAAA;GACpB,MAAO,IAAIC,UAAY,EAAA;AACrBC,IAAAA,eAAkB,GAAA,SAAA;AACpB,GAAO,MAAA;AACLA,IAAAA,eAAkB,GAAA,MAAA;AACpB;AAEA,EAAA,OAAOA,eAAA;AACT;AAUe,MAAMC,+BAA+BC,SAAU,CAAA;EAC5D,IAAIC,gBAAmBA,GAAA;AACrB,IAAA,OAAO,CAAkBN,eAAAA,EAAAA,sBACvB,CAAA,IAAI,CAACO,IAAI,CAACN,KAAK,EACf,IAAI,CAACM,IAAI,CAACL,UAAU,EACnB,CAAA;AACL;AAEA,EAAA;IAAAM,oBAAA,CAAAC,kBAAA,CA4BA,upBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,cAAA;QAAAC,UAAA;QAAAC,YAAA;QAAAC,EAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
diff --git a/dist/components/eui-card.js b/dist/components/eui-card.js
index 274c39dfaba52ed84ceb239bbc9fd242ba71505e..11cb018a70b27f3caf7d7d34ccfbe4807972d405 100644
--- a/dist/components/eui-card.js
+++ b/dist/components/eui-card.js
@@ -2,7 +2,7 @@ import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { on } from '@ember/modifier';
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import { element } from 'ember-element-helper';
import set from 'ember-set-helper/helpers/set';
import { notEq, eq, or, not, and } from 'ember-truth-helpers';
diff --git a/dist/components/eui-card.js.map b/dist/components/eui-card.js.map
index fba716ad72e6b001c401ef3f73d4ce18f28660c6..55d2cf5f8c13f519cb10d4cc5f2f021349f5534e 100644
--- a/dist/components/eui-card.js.map
+++ b/dist/components/eui-card.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-card.js","sources":["../../src/components/eui-card.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not, notEq, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiBetaBadge from './eui-beta-badge.gts';\nimport { euiCardSelectableColor } from './eui-card-select.gts';\nimport EuiCardSelect from './eui-card-select.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiPanel from './eui-panel.gts';\nimport EuiText from './eui-text.gts';\nimport EuiTitle from './eui-title.gts';\n\nimport type { EuiCardSelectProps } from './eui-card-select';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { EuiPanelSignature } from './eui-panel';\nimport type { EuiTitleSignature } from './eui-title';\n\ntype EuiCardComponentArgs = {\n footer?: string;\n selectable?: EuiCardSelectProps;\n /**\n * Class that will apply to the card top section.\n */\n topClassName?: string;\n\n /**\n * Class that will apply to the card content section.\n */\n contentClassName?: string;\n\n /**\n * Class that will apply to the card footer section.\n */\n footerClassName?: string;\n\n target?: string;\n\n betaBadgeProps?: {\n label: string;\n title?: string;\n tooltipContent?: string;\n };\n\n description?: string;\n\n /**\n * The title of the card.\n */\n title?: string;\n titleSize?: EuiTitleSignature['Args']['size'];\n\n /**\n * The title element. Will wrap the title in a heading tag.\n */\n titleElement?: string;\n\n href?: string;\n\n onClick?: (e: MouseEvent) => void;\n\n isDisabled?: boolean;\n\n textAlign?: 'left' | 'center' | 'right';\n\n image?: string;\n icon?: string;\n layout?: 'horizontal' | 'vertical';\n\n display?: EuiPanelSignature['Args']['color'];\n paddingSize?: EuiPanelSignature['Args']['paddingSize'];\n\n iconSize?: EuiIconSignature['Args']['size'];\n};\n\nexport interface EuiCardSignature {\n Element: EuiPanelSignature['Element'];\n Args: EuiCardComponentArgs;\n Blocks: {\n icon: ['euiCard__icon'];\n title: [() => void];\n description: [];\n body: [];\n footer: [];\n };\n}\n\nexport default class EuiCardComponent extends Component<EuiCardSignature> {\n @tracked link: HTMLAnchorElement | HTMLButtonElement | null = null;\n\n outerOnClick = (e: MouseEvent) => {\n if (this.link && this.link !== e.target) {\n this.link.click();\n }\n };\n\n get selectableColorClass() {\n const selectable = this.args.selectable;\n\n return selectable\n ? `euiCard--isSelectable--${euiCardSelectableColor(\n selectable.color,\n selectable.isSelected\n )}`\n : undefined;\n }\n\n get topClasses(): string {\n return ['euiCard__top', this.args.topClassName].join(' ');\n }\n\n get contentClasses(): string {\n return ['euiCard__content', this.args.contentClassName].join(' ');\n }\n\n get footerClasses(): string {\n return ['euiCard__footer', this.args.footerClassName].join(' ');\n }\n\n <template>\n {{#let\n (if @selectable (randomId))\n (and\n (not @isDisabled)\n (or @onClick @href (and @selectable (not @selectable.isDisabled)))\n )\n (argOrDefault @titleElement \"span\")\n (argOrDefault @layout \"vertical\")\n as |selectableId isClickable titleElement layout|\n }}\n <EuiPanel\n class={{classNames\n (if (eq layout \"horizontal\") \"euiCard--horizontal\")\n (if isClickable \"euiCard--isClickable\")\n (if @betaBadgeProps.label \"euiCard--hasBetaBadge\")\n (if\n @icon \"euiCard--hasIcon\" (if (has-block \"icon\") \"euiCard--hasIcon\")\n )\n (if @selectable \"euiCard--isSelectable\")\n (if (and @selectable @selectable.isSelected) \"euiCard-isSelected\")\n (if @isDisabled \"euiCard-isDisabled\")\n this.selectableColorClass\n componentName=\"EuiCard\"\n textAlign=(argOrDefault @textAlign \"center\")\n }}\n @color={{if @isDisabled \"subdued\" @display}}\n @onClick={{if isClickable this.outerOnClick}}\n @hasShadow={{if (or @isDisabled @display) true}}\n @hasBorder={{if @display true undefined}}\n @paddingSize={{@paddingSize}}\n ...attributes\n >\n\n {{#if (or (has-block \"icon\") (or @image @icon))}}\n <div class={{this.topClasses}}>\n {{#if (has-block \"icon\")}}\n {{yield \"euiCard__icon\" to=\"icon\"}}\n {{else}}\n {{#if (or @image @icon)}}\n {{#if (and @image (notEq layout \"horizontal\"))}}\n <div class=\"euiCard__image\">\n <img src={{@image}} alt=\"card-top\" />\n </div>\n {{/if}}\n {{#if @icon}}\n <EuiIcon\n @iconClasses=\"euiCard__icon\"\n @type={{@icon}}\n @size={{@iconSize}}\n />\n {{/if}}\n {{/if}}\n {{/if}}\n </div>\n {{/if}}\n\n <div class={{this.contentClasses}}>\n <EuiTitle\n class=\"euiCard__title\"\n @size={{argOrDefault @titleSize \"s\"}}\n >\n {{#if (has-block \"title\")}}\n {{yield (set this \"link\") to=\"title\"}}\n {{else if (and (not @isDisabled) @href)}}\n <a\n class=\"euiCard__titleAnchor\"\n target={{@target}}\n disabled={{@isDisabled}}\n href={{@href}}\n {{didInsert (set this \"link\")}}\n >\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n\n </a>\n {{else if (or @isDisabled @onClick)}}\n <button\n type=\"button\"\n class=\"euiCard__titleButton\"\n disabled={{@isDisabled}}\n {{didInsert (set this \"link\")}}\n {{on \"click\" (optional @onClick)}}\n >\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n </button>\n {{else}}\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n {{/if}}\n </EuiTitle>\n {{#if (or @description (has-block \"description\"))}}\n <EuiText @grow={{true}} @size=\"s\" class=\"euiCard__description\">\n {{#if (has-block \"description\")}}\n <p>{{yield to=\"description\"}}</p>\n {{else}}\n <p>{{@description}}</p>\n {{/if}}\n </EuiText>\n {{/if}}\n {{yield to=\"body\"}}\n </div>\n {{#if @betaBadgeProps.label}}\n <span class=\"euiCard__betaBadgeWrapper\">\n <EuiBetaBadge\n class=\"euiCard__betaBadge\"\n @label={{@betaBadgeProps.label}}\n @title={{@betaBadgeProps.title}}\n @tooltipContent={{@betaBadgeProps.tooltipContent}}\n />\n </span>\n {{/if}}\n {{#if (and (eq layout \"vertical\") (or (has-block \"footer\") @footer))}}\n <div class={{this.footerClasses}}>\n {{#if (has-block \"footer\")}}\n {{yield to=\"footer\"}}\n {{else}}\n {{@footer}}\n {{/if}}\n </div>\n {{/if}}\n {{#if @selectable}}\n <EuiCardSelect\n @type={{@selectable.type}}\n @buttonId={{selectableId}}\n @isSelected={{@selectable.isSelected}}\n @isDisabled={{@selectable.isDisabled}}\n @color={{@selectable.color}}\n @isLoading={{@selectable.isLoading}}\n @href={{@selectable.href}}\n @iconSide={{@selectable.iconSide}}\n @flush={{@selectable.flush}}\n {{didInsert (set this \"link\")}}\n @onClick={{optional @selectable.onClick}}\n />\n {{/if}}\n </EuiPanel>\n {{/let}}\n </template>\n}\n"],"names":["EuiCardComponent","Component","g","prototype","tracked","i","void 0","outerOnClick","e","link","target","click","selectableColorClass","selectable","args","euiCardSelectableColor","color","isSelected","undefined","topClasses","topClassName","join","contentClasses","contentClassName","footerClasses","footerClassName","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","and","not","or","argOrDefault","EuiPanel","classNames","eq","notEq","EuiIcon","EuiTitle","set","didInsert","element","on","optional","EuiText","EuiBetaBadge","EuiCardSelect"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+Fe,MAAMA,yBAAyBC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,MAAA,EAAA,CACrDC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6D,IAAK;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,KAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAAC,SAAA;EAEnEC,YAAA,GAAgBC,CAAG,IAAA;IACjB,IAAI,IAAI,CAACC,IAAI,IAAI,IAAI,CAACA,IAAI,KAAKD,CAAE,CAAAE,MAAM,EAAE;AACvC,MAAA,IAAI,CAACD,IAAI,CAACE,KAAK,EAAA;AACjB;GACA;EAEF,IAAIC,oBAAuBA,GAAA;AACzB,IAAA,MAAMC,UAAa,GAAA,IAAI,CAACC,IAAI,CAACD,UAAU;AAEvC,IAAA,OAAOA,UACH,GAAA,CAA0BE,uBAAAA,EAAAA,sBACxB,CAAAF,UAAA,CAAWG,KAAK,EAChBH,UAAW,CAAAI,UAAU,CACrB,CAAA,CAAC,GACHC,SAAA;AACN;EAEA,IAAIC,UAAAA,GAAqB;AACvB,IAAA,OAAO,CAAC,cAAA,EAAgB,IAAI,CAACL,IAAI,CAACM,YAAY,CAAC,CAACC,IAAI,CAAC,GAAA,CAAA;AACvD;EAEA,IAAIC,cAAAA,GAAyB;AAC3B,IAAA,OAAO,CAAC,kBAAA,EAAoB,IAAI,CAACR,IAAI,CAACS,gBAAgB,CAAC,CAACF,IAAI,CAAC,GAAA,CAAA;AAC/D;EAEA,IAAIG,aAAAA,GAAwB;AAC1B,IAAA,OAAO,CAAC,iBAAA,EAAmB,IAAI,CAACV,IAAI,CAACW,eAAe,CAAC,CAACJ,IAAI,CAAC,GAAA,CAAA;AAC7D;AAEA,EAAA;IAAAK,oBAAA,CAAAC,kBAAA,CA0JA,y0JAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,YAAA;QAAAC,QAAA;QAAAC,UAAA;QAAAC,EAAA;QAAAC,KAAA;QAAAC,OAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,SAAA;QAAAC,OAAA;QAAAC,EAAA;QAAAC,QAAA;iBAAAC,gBAAA;QAAAC,YAAA;AAAAC,uBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-card.js","sources":["../../src/components/eui-card.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not, notEq, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiBetaBadge from './eui-beta-badge.gts';\nimport { euiCardSelectableColor } from './eui-card-select.gts';\nimport EuiCardSelect from './eui-card-select.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiPanel from './eui-panel.gts';\nimport EuiText from './eui-text.gts';\nimport EuiTitle from './eui-title.gts';\n\nimport type { EuiCardSelectProps } from './eui-card-select';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { EuiPanelSignature } from './eui-panel';\nimport type { EuiTitleSignature } from './eui-title';\n\ntype EuiCardComponentArgs = {\n footer?: string;\n selectable?: EuiCardSelectProps;\n /**\n * Class that will apply to the card top section.\n */\n topClassName?: string;\n\n /**\n * Class that will apply to the card content section.\n */\n contentClassName?: string;\n\n /**\n * Class that will apply to the card footer section.\n */\n footerClassName?: string;\n\n target?: string;\n\n betaBadgeProps?: {\n label: string;\n title?: string;\n tooltipContent?: string;\n };\n\n description?: string;\n\n /**\n * The title of the card.\n */\n title?: string;\n titleSize?: EuiTitleSignature['Args']['size'];\n\n /**\n * The title element. Will wrap the title in a heading tag.\n */\n titleElement?: string;\n\n href?: string;\n\n onClick?: (e: MouseEvent) => void;\n\n isDisabled?: boolean;\n\n textAlign?: 'left' | 'center' | 'right';\n\n image?: string;\n icon?: string;\n layout?: 'horizontal' | 'vertical';\n\n display?: EuiPanelSignature['Args']['color'];\n paddingSize?: EuiPanelSignature['Args']['paddingSize'];\n\n iconSize?: EuiIconSignature['Args']['size'];\n};\n\nexport interface EuiCardSignature {\n Element: EuiPanelSignature['Element'];\n Args: EuiCardComponentArgs;\n Blocks: {\n icon: ['euiCard__icon'];\n title: [() => void];\n description: [];\n body: [];\n footer: [];\n };\n}\n\nexport default class EuiCardComponent extends Component<EuiCardSignature> {\n @tracked link: HTMLAnchorElement | HTMLButtonElement | null = null;\n\n outerOnClick = (e: MouseEvent) => {\n if (this.link && this.link !== e.target) {\n this.link.click();\n }\n };\n\n get selectableColorClass() {\n const selectable = this.args.selectable;\n\n return selectable\n ? `euiCard--isSelectable--${euiCardSelectableColor(\n selectable.color,\n selectable.isSelected\n )}`\n : undefined;\n }\n\n get topClasses(): string {\n return ['euiCard__top', this.args.topClassName].join(' ');\n }\n\n get contentClasses(): string {\n return ['euiCard__content', this.args.contentClassName].join(' ');\n }\n\n get footerClasses(): string {\n return ['euiCard__footer', this.args.footerClassName].join(' ');\n }\n\n <template>\n {{#let\n (if @selectable (randomId))\n (and\n (not @isDisabled)\n (or @onClick @href (and @selectable (not @selectable.isDisabled)))\n )\n (argOrDefault @titleElement \"span\")\n (argOrDefault @layout \"vertical\")\n as |selectableId isClickable titleElement layout|\n }}\n <EuiPanel\n class={{classNames\n (if (eq layout \"horizontal\") \"euiCard--horizontal\")\n (if isClickable \"euiCard--isClickable\")\n (if @betaBadgeProps.label \"euiCard--hasBetaBadge\")\n (if\n @icon \"euiCard--hasIcon\" (if (has-block \"icon\") \"euiCard--hasIcon\")\n )\n (if @selectable \"euiCard--isSelectable\")\n (if (and @selectable @selectable.isSelected) \"euiCard-isSelected\")\n (if @isDisabled \"euiCard-isDisabled\")\n this.selectableColorClass\n componentName=\"EuiCard\"\n textAlign=(argOrDefault @textAlign \"center\")\n }}\n @color={{if @isDisabled \"subdued\" @display}}\n @onClick={{if isClickable this.outerOnClick}}\n @hasShadow={{if (or @isDisabled @display) true}}\n @hasBorder={{if @display true undefined}}\n @paddingSize={{@paddingSize}}\n ...attributes\n >\n\n {{#if (or (has-block \"icon\") (or @image @icon))}}\n <div class={{this.topClasses}}>\n {{#if (has-block \"icon\")}}\n {{yield \"euiCard__icon\" to=\"icon\"}}\n {{else}}\n {{#if (or @image @icon)}}\n {{#if (and @image (notEq layout \"horizontal\"))}}\n <div class=\"euiCard__image\">\n <img src={{@image}} alt=\"card-top\" />\n </div>\n {{/if}}\n {{#if @icon}}\n <EuiIcon\n @iconClasses=\"euiCard__icon\"\n @type={{@icon}}\n @size={{@iconSize}}\n />\n {{/if}}\n {{/if}}\n {{/if}}\n </div>\n {{/if}}\n\n <div class={{this.contentClasses}}>\n <EuiTitle\n class=\"euiCard__title\"\n @size={{argOrDefault @titleSize \"s\"}}\n >\n {{#if (has-block \"title\")}}\n {{yield (set this \"link\") to=\"title\"}}\n {{else if (and (not @isDisabled) @href)}}\n <a\n class=\"euiCard__titleAnchor\"\n target={{@target}}\n disabled={{@isDisabled}}\n href={{@href}}\n {{didInsert (set this \"link\")}}\n >\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n\n </a>\n {{else if (or @isDisabled @onClick)}}\n <button\n type=\"button\"\n class=\"euiCard__titleButton\"\n disabled={{@isDisabled}}\n {{didInsert (set this \"link\")}}\n {{on \"click\" (optional @onClick)}}\n >\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n </button>\n {{else}}\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n {{/if}}\n </EuiTitle>\n {{#if (or @description (has-block \"description\"))}}\n <EuiText @grow={{true}} @size=\"s\" class=\"euiCard__description\">\n {{#if (has-block \"description\")}}\n <p>{{yield to=\"description\"}}</p>\n {{else}}\n <p>{{@description}}</p>\n {{/if}}\n </EuiText>\n {{/if}}\n {{yield to=\"body\"}}\n </div>\n {{#if @betaBadgeProps.label}}\n <span class=\"euiCard__betaBadgeWrapper\">\n <EuiBetaBadge\n class=\"euiCard__betaBadge\"\n @label={{@betaBadgeProps.label}}\n @title={{@betaBadgeProps.title}}\n @tooltipContent={{@betaBadgeProps.tooltipContent}}\n />\n </span>\n {{/if}}\n {{#if (and (eq layout \"vertical\") (or (has-block \"footer\") @footer))}}\n <div class={{this.footerClasses}}>\n {{#if (has-block \"footer\")}}\n {{yield to=\"footer\"}}\n {{else}}\n {{@footer}}\n {{/if}}\n </div>\n {{/if}}\n {{#if @selectable}}\n <EuiCardSelect\n @type={{@selectable.type}}\n @buttonId={{selectableId}}\n @isSelected={{@selectable.isSelected}}\n @isDisabled={{@selectable.isDisabled}}\n @color={{@selectable.color}}\n @isLoading={{@selectable.isLoading}}\n @href={{@selectable.href}}\n @iconSide={{@selectable.iconSide}}\n @flush={{@selectable.flush}}\n {{didInsert (set this \"link\")}}\n @onClick={{optional @selectable.onClick}}\n />\n {{/if}}\n </EuiPanel>\n {{/let}}\n </template>\n}\n"],"names":["EuiCardComponent","Component","g","prototype","tracked","i","void 0","outerOnClick","e","link","target","click","selectableColorClass","selectable","args","euiCardSelectableColor","color","isSelected","undefined","topClasses","topClassName","join","contentClasses","contentClassName","footerClasses","footerClassName","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","and","not","or","argOrDefault","EuiPanel","classNames","eq","notEq","EuiIcon","EuiTitle","set","didInsert","element","on","optional","EuiText","EuiBetaBadge","EuiCardSelect"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+Fe,MAAMA,yBAAyBC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,MAAA,EAAA,CACrDC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6D,IAAK;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,KAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAAC,SAAA;EAEnEC,YAAA,GAAgBC,CAAG,IAAA;IACjB,IAAI,IAAI,CAACC,IAAI,IAAI,IAAI,CAACA,IAAI,KAAKD,CAAE,CAAAE,MAAM,EAAE;AACvC,MAAA,IAAI,CAACD,IAAI,CAACE,KAAK,EAAA;AACjB;GACA;EAEF,IAAIC,oBAAuBA,GAAA;AACzB,IAAA,MAAMC,UAAa,GAAA,IAAI,CAACC,IAAI,CAACD,UAAU;AAEvC,IAAA,OAAOA,UACH,GAAA,CAA0BE,uBAAAA,EAAAA,sBACxB,CAAAF,UAAA,CAAWG,KAAK,EAChBH,UAAW,CAAAI,UAAU,CACrB,CAAA,CAAC,GACHC,SAAA;AACN;EAEA,IAAIC,UAAAA,GAAqB;AACvB,IAAA,OAAO,CAAC,cAAA,EAAgB,IAAI,CAACL,IAAI,CAACM,YAAY,CAAC,CAACC,IAAI,CAAC,GAAA,CAAA;AACvD;EAEA,IAAIC,cAAAA,GAAyB;AAC3B,IAAA,OAAO,CAAC,kBAAA,EAAoB,IAAI,CAACR,IAAI,CAACS,gBAAgB,CAAC,CAACF,IAAI,CAAC,GAAA,CAAA;AAC/D;EAEA,IAAIG,aAAAA,GAAwB;AAC1B,IAAA,OAAO,CAAC,iBAAA,EAAmB,IAAI,CAACV,IAAI,CAACW,eAAe,CAAC,CAACJ,IAAI,CAAC,GAAA,CAAA;AAC7D;AAEA,EAAA;IAAAK,oBAAA,CAAAC,kBAAA,CA0JA,y0JAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,YAAA;QAAAC,QAAA;QAAAC,UAAA;QAAAC,EAAA;QAAAC,KAAA;QAAAC,OAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,SAAA;QAAAC,OAAA;QAAAC,EAAA;QAAAC,QAAA;iBAAAC,gBAAA;QAAAC,YAAA;AAAAC,uBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
diff --git a/dist/components/eui-checkbox.js b/dist/components/eui-checkbox.js
index 5aa39b6831c5ebfb0fc80e4ff7bbdf1c3570d4a9..2bf52324019c37001909a0139418d976fd9266e6 100644
--- a/dist/components/eui-checkbox.js
+++ b/dist/components/eui-checkbox.js
@@ -1,5 +1,5 @@
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import { modifier } from 'ember-modifier';
import { or, not, and } from 'ember-truth-helpers';
import randomId from '../-private/random-id.js';
diff --git a/dist/components/eui-checkbox.js.map b/dist/components/eui-checkbox.js.map
index 9ed1d4884861f0f93b55301cc5c00f243dbc060d..276434d63b76d1a19e53e32a05be052323d719c2 100644
--- a/dist/components/eui-checkbox.js.map
+++ b/dist/components/eui-checkbox.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-checkbox.js","sources":["../../src/components/eui-checkbox.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { modifier } from 'ember-modifier';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nconst indeterminateModifier = modifier(function invalidateIndeterminate(\n element: HTMLInputElement,\n [indeterminate]: [boolean?]\n) {\n if (element) {\n element.indeterminate = indeterminate!;\n }\n});\n\nexport interface EuiCheckboxSignature {\n Element: HTMLInputElement;\n Args: {\n checked?: boolean;\n disabled?: boolean;\n indeterminate?: boolean;\n icon?: boolean;\n compressed?: boolean;\n label?: string;\n labelProps?: {\n className?: string;\n };\n containerClass?: string;\n className?: string;\n inputRef?: (element: HTMLInputElement) => void;\n isFakeLabelBlock?: boolean;\n id?: string;\n name?: string;\n };\n Blocks: {\n label?: [];\n };\n}\n\nconst EuiCheckbox: TemplateOnlyComponent<EuiCheckboxSignature> = <template>\n {{#let\n (and (has-block \"label\") (not (argOrDefault @isFakeLabelBlock false)))\n (argOrDefault @id (randomId))\n as |hasLabelBlock id|\n }}\n {{#let\n (classNames\n (if @icon \"euiCheckbox--withIcon\")\n (if (not (or hasLabelBlock @label)) \"euiCheckbox--noLabel\")\n (if @compressed \"euiCheckbox--compressed\")\n \"euiCheckbox\"\n @className\n @containerClass\n )\n as |classes|\n }}\n <div class={{classes}}>\n <input\n class=\"euiCheckbox__input\"\n type=\"checkbox\"\n id={{id}}\n checked={{@checked}}\n disabled={{@disabled}}\n name={{@name}}\n ...attributes\n {{indeterminateModifier @indeterminate}}\n {{didInsert (optional @inputRef)}}\n />\n <div class=\"euiCheckbox__square\"></div>\n {{#if (or hasLabelBlock @label)}}\n <label\n class={{classNames \"euiCheckbox__label\" @labelProps.className}}\n for={{id}}\n >\n {{#if hasLabelBlock}}\n {{yield to=\"label\"}}\n {{else}}\n {{@label}}\n {{/if}}\n </label>\n {{/if}}\n </div>\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiCheckbox;\n"],"names":["indeterminateModifier","modifier","invalidateIndeterminate","element","indeterminate","EuiCheckbox","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","didInsert","optional","templateOnly"],"mappings":";;;;;;;;;;;AAYA,MAAMA,qBAAA,GAAwBC,QAAS,CAAA,SAASC,uBAC9CA,CAAAC,OAAyB,EACzB,CAACC,aAAiB,CAAS,EAAA;AAE3B,EAAA,IAAID,OAAS,EAAA;IACXA,OAAA,CAAQC,aAAa,GAAGA,aAAA;AAC1B;AACF,CAAA,CAAA;AA0BA,MAAMC,WAA2D,GAAAC,oBAAA,CAAAC,kBAAA,CA6CjE,ygCAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAf,qBAAA;IAAAgB,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-checkbox.js","sources":["../../src/components/eui-checkbox.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { modifier } from 'ember-modifier';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nconst indeterminateModifier = modifier(function invalidateIndeterminate(\n element: HTMLInputElement,\n [indeterminate]: [boolean?]\n) {\n if (element) {\n element.indeterminate = indeterminate!;\n }\n});\n\nexport interface EuiCheckboxSignature {\n Element: HTMLInputElement;\n Args: {\n checked?: boolean;\n disabled?: boolean;\n indeterminate?: boolean;\n icon?: boolean;\n compressed?: boolean;\n label?: string;\n labelProps?: {\n className?: string;\n };\n containerClass?: string;\n className?: string;\n inputRef?: (element: HTMLInputElement) => void;\n isFakeLabelBlock?: boolean;\n id?: string;\n name?: string;\n };\n Blocks: {\n label?: [];\n };\n}\n\nconst EuiCheckbox: TemplateOnlyComponent<EuiCheckboxSignature> = <template>\n {{#let\n (and (has-block \"label\") (not (argOrDefault @isFakeLabelBlock false)))\n (argOrDefault @id (randomId))\n as |hasLabelBlock id|\n }}\n {{#let\n (classNames\n (if @icon \"euiCheckbox--withIcon\")\n (if (not (or hasLabelBlock @label)) \"euiCheckbox--noLabel\")\n (if @compressed \"euiCheckbox--compressed\")\n \"euiCheckbox\"\n @className\n @containerClass\n )\n as |classes|\n }}\n <div class={{classes}}>\n <input\n class=\"euiCheckbox__input\"\n type=\"checkbox\"\n id={{id}}\n checked={{@checked}}\n disabled={{@disabled}}\n name={{@name}}\n ...attributes\n {{indeterminateModifier @indeterminate}}\n {{didInsert (optional @inputRef)}}\n />\n <div class=\"euiCheckbox__square\"></div>\n {{#if (or hasLabelBlock @label)}}\n <label\n class={{classNames \"euiCheckbox__label\" @labelProps.className}}\n for={{id}}\n >\n {{#if hasLabelBlock}}\n {{yield to=\"label\"}}\n {{else}}\n {{@label}}\n {{/if}}\n </label>\n {{/if}}\n </div>\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiCheckbox;\n"],"names":["indeterminateModifier","modifier","invalidateIndeterminate","element","indeterminate","EuiCheckbox","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","didInsert","optional","templateOnly"],"mappings":";;;;;;;;;;;AAYA,MAAMA,qBAAA,GAAwBC,QAAS,CAAA,SAASC,uBAC9CA,CAAAC,OAAyB,EACzB,CAACC,aAAiB,CAAS,EAAA;AAE3B,EAAA,IAAID,OAAS,EAAA;IACXA,OAAA,CAAQC,aAAa,GAAGA,aAAA;AAC1B;AACF,CAAA,CAAA;AA0BA,MAAMC,WAA2D,GAAAC,oBAAA,CAAAC,kBAAA,CA6CjE,ygCAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAf,qBAAA;IAAAgB,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-combo-box/trigger.js b/dist/components/eui-combo-box/trigger.js
index bc9255f2e63304bef968cba7b6f6596f168a12e0..93274100ed6b87ffe7a044f6529686d9d466ba44 100644
--- a/dist/components/eui-combo-box/trigger.js
+++ b/dist/components/eui-combo-box/trigger.js
@@ -2,7 +2,7 @@ import { array, fn } from '@ember/helper';
import { on } from '@ember/modifier';
import didUpdate from '@ember/render-modifiers/modifiers/did-update';
import { EnsureSafeComponentHelper } from '@embroider/util';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import EmberPowerSelectMultipleTrigger from 'ember-power-select/components/power-select-multiple/trigger';
import { not, or, and } from 'ember-truth-helpers';
import argOrDefault from '../../helpers/arg-or-default.js';
diff --git a/dist/components/eui-combo-box/trigger.js.map b/dist/components/eui-combo-box/trigger.js.map
index bdff06cf4f292274182a9f8131a064f8fe01b747..a6a031c352e1118a473577fbdb2baee52d5fa94c 100644
--- a/dist/components/eui-combo-box/trigger.js.map
+++ b/dist/components/eui-combo-box/trigger.js.map
@@ -1 +1 @@
-{"version":3,"file":"trigger.js","sources":["../../../src/components/eui-combo-box/trigger.gts"],"sourcesContent":["import { fn } from '@ember/helper';\nimport { array } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { EnsureSafeComponentHelper } from '@embroider/util';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport EmberPowerSelectMultipleTrigger from 'ember-power-select/components/power-select-multiple/trigger';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault from '../../helpers/arg-or-default.ts';\nimport classNames from '../../helpers/class-names.ts';\nimport EuiComboBoxPill from '../eui-combo-box-pill.gts';\nimport EuiFormControlLayout from '../eui-form-control-layout.gts';\nimport EuiComboBoxTriggerInput from './trigger/input.gts';\n\nexport default class EuiComboBoxTriggerComponent extends EmberPowerSelectMultipleTrigger {\n <template>\n {{! @glint-nocheck: not typesafe yet }}\n <EuiFormControlLayout\n @icon={{argOrDefault @icon \"arrowDown\"}}\n @iconSide=\"right\"\n @fullWidth={{@fullWidth}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @clear={{if\n (and @select.selected @allowClear)\n (fn @select.actions.select (array))\n }}\n @isLoading={{@isLoading}}\n @disabled={{@select.disabled}}\n >\n <:field>\n {{! template-lint-disable }}\n <ul\n id=\"ember-power-select-multiple-options-{{@select.uniqueId}}\"\n class={{classNames\n \"euiComboBox__inputWrap ember-power-select-multiple-options\"\n (if @compressed \"euiComboBox__inputWrap--compressed\")\n (if @fullWidth \"euiComboBox__inputWrap--fullWidth\")\n (if @singleSelection \"euiComboBox__inputWrap--noWrap\")\n (if @isLoading \"euiComboBox__inputWrap--isLoading\")\n (if @allowClear \"euiComboBox__inputWrap-isClearable\")\n }}\n ...attributes\n {{didUpdate this.openChanged @select.isOpen}}\n {{on \"touchstart\" this.chooseOption}}\n {{on \"mousedown\" this.chooseOption}}\n >\n {{! template-lint-enable }}\n {{#if\n (or\n (and @singleSelection (not @select.searchText))\n (not @singleSelection)\n )\n }}\n {{#each @select.selected as |opt idx|}}\n {{#if @selectedItemComponent}}\n {{#let\n (component\n (EnsureSafeComponentHelper @selectedItemComponent)\n extra=@extra\n option=opt\n select=@select\n )\n as |SelectedItemComponent|\n }}\n <SelectedItemComponent />\n {{/let}}\n {{else}}\n <EuiComboBoxPill\n class=\"ember-power-select-multiple-option\n {{if\n opt.disabled\n 'ember-power-select-multiple-option--disabled'\n }}\"\n @option={{opt}}\n @onClose={{if\n (or @select.disabled @singleSelection)\n false\n (if @onClose (fn (optional @onClose) opt) true)\n }}\n @dataSelectedIconIndex={{idx}}\n @color={{opt.color}}\n @asPlainText={{@singleSelection.asPlainText}}\n >\n {{yield opt @select}}\n </EuiComboBoxPill>\n {{/if}}\n {{else}}{{#if (and @placeholder (not @searchEnabled))}}\n <span class=\"ember-power-select-placeholder\">\n {{@placeholder}}\n </span>\n {{/if}}{{/each}}\n {{/if}}\n {{#if @searchEnabled}}\n {{#if (and this.maybePlaceholder (not @select.searchText))}}\n <p class=\"euiComboBoxPlaceholder\">\n {{this.maybePlaceholder}}\n </p>\n {{/if}}\n {{#let\n (component\n EuiComboBoxTriggerInput\n select=@select\n ariaActiveDescendant=@ariaActiveDescendant\n ariaLabelledBy=@ariaLabelledBy\n ariaLabel=@ariaLabel\n listboxId=@listboxId\n tabindex=@tabindex\n buildSelection=@buildSelection\n placeholder=@placeholder\n placeholderComponent=@placeholderComponent\n searchField=@searchField\n onFocus=@onFocus\n isInvalid=@isInvalid\n onBlur=@onBlur\n onKeydown=@onKeydown\n onInput=@onInput\n onCreateOption=@onCreateOption\n )\n as |InputComponent|\n }}\n {{#let\n (component\n (EnsureSafeComponentHelper @placeholderComponent)\n select=@select\n placeholder=@placeholder\n isMultipleWithSearch=true\n inputComponent=InputComponent\n displayPlaceholder=(and\n (not @select.searchText) (not @select.selected)\n )\n )\n as |PlaceholderComponent|\n }}\n <PlaceholderComponent />\n {{/let}}\n {{/let}}\n {{else}}\n {{! template-lint-disable }}\n <div\n class=\"euiComboBox__input\"\n style=\"font-size: 14px; display: inline-block;\"\n ></div>\n {{! template-lint-enable }}\n {{/if}}\n </ul>\n </:field>\n </EuiFormControlLayout>\n </template>\n}\n"],"names":["EuiComboBoxTriggerComponent","EmberPowerSelectMultipleTrigger","setComponentTemplate","precompileTemplate","strictMode","scope","EuiFormControlLayout","argOrDefault","and","fn","array","classNames","didUpdate","on","or","not","EnsureSafeComponentHelper","EuiComboBoxPill","optional","EuiComboBoxTriggerInput"],"mappings":";;;;;;;;;;;;;;;AAgBe,MAAMA,2BAAoC,SAAAC,+BAAA,CAAA;AACvD,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAqIA,0hHAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,oBAAA;QAAAC,YAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,KAAA;QAAAC,UAAA;QAAAC,SAAA;QAAAC,EAAA;QAAAC,EAAA;QAAAC,GAAA;QAAAC,yBAAA;QAAAC,eAAA;QAAAC,QAAA;AAAAC,iCAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
\ No newline at end of file
+{"version":3,"file":"trigger.js","sources":["../../../src/components/eui-combo-box/trigger.gts"],"sourcesContent":["import { fn } from '@ember/helper';\nimport { array } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { EnsureSafeComponentHelper } from '@embroider/util';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport EmberPowerSelectMultipleTrigger from 'ember-power-select/components/power-select-multiple/trigger';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault from '../../helpers/arg-or-default.ts';\nimport classNames from '../../helpers/class-names.ts';\nimport EuiComboBoxPill from '../eui-combo-box-pill.gts';\nimport EuiFormControlLayout from '../eui-form-control-layout.gts';\nimport EuiComboBoxTriggerInput from './trigger/input.gts';\n\nexport default class EuiComboBoxTriggerComponent extends EmberPowerSelectMultipleTrigger {\n <template>\n {{! @glint-nocheck: not typesafe yet }}\n <EuiFormControlLayout\n @icon={{argOrDefault @icon \"arrowDown\"}}\n @iconSide=\"right\"\n @fullWidth={{@fullWidth}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @clear={{if\n (and @select.selected @allowClear)\n (fn @select.actions.select (array))\n }}\n @isLoading={{@isLoading}}\n @disabled={{@select.disabled}}\n >\n <:field>\n {{! template-lint-disable }}\n <ul\n id=\"ember-power-select-multiple-options-{{@select.uniqueId}}\"\n class={{classNames\n \"euiComboBox__inputWrap ember-power-select-multiple-options\"\n (if @compressed \"euiComboBox__inputWrap--compressed\")\n (if @fullWidth \"euiComboBox__inputWrap--fullWidth\")\n (if @singleSelection \"euiComboBox__inputWrap--noWrap\")\n (if @isLoading \"euiComboBox__inputWrap--isLoading\")\n (if @allowClear \"euiComboBox__inputWrap-isClearable\")\n }}\n ...attributes\n {{didUpdate this.openChanged @select.isOpen}}\n {{on \"touchstart\" this.chooseOption}}\n {{on \"mousedown\" this.chooseOption}}\n >\n {{! template-lint-enable }}\n {{#if\n (or\n (and @singleSelection (not @select.searchText))\n (not @singleSelection)\n )\n }}\n {{#each @select.selected as |opt idx|}}\n {{#if @selectedItemComponent}}\n {{#let\n (component\n (EnsureSafeComponentHelper @selectedItemComponent)\n extra=@extra\n option=opt\n select=@select\n )\n as |SelectedItemComponent|\n }}\n <SelectedItemComponent />\n {{/let}}\n {{else}}\n <EuiComboBoxPill\n class=\"ember-power-select-multiple-option\n {{if\n opt.disabled\n 'ember-power-select-multiple-option--disabled'\n }}\"\n @option={{opt}}\n @onClose={{if\n (or @select.disabled @singleSelection)\n false\n (if @onClose (fn (optional @onClose) opt) true)\n }}\n @dataSelectedIconIndex={{idx}}\n @color={{opt.color}}\n @asPlainText={{@singleSelection.asPlainText}}\n >\n {{yield opt @select}}\n </EuiComboBoxPill>\n {{/if}}\n {{else}}{{#if (and @placeholder (not @searchEnabled))}}\n <span class=\"ember-power-select-placeholder\">\n {{@placeholder}}\n </span>\n {{/if}}{{/each}}\n {{/if}}\n {{#if @searchEnabled}}\n {{#if (and this.maybePlaceholder (not @select.searchText))}}\n <p class=\"euiComboBoxPlaceholder\">\n {{this.maybePlaceholder}}\n </p>\n {{/if}}\n {{#let\n (component\n EuiComboBoxTriggerInput\n select=@select\n ariaActiveDescendant=@ariaActiveDescendant\n ariaLabelledBy=@ariaLabelledBy\n ariaLabel=@ariaLabel\n listboxId=@listboxId\n tabindex=@tabindex\n buildSelection=@buildSelection\n placeholder=@placeholder\n placeholderComponent=@placeholderComponent\n searchField=@searchField\n onFocus=@onFocus\n isInvalid=@isInvalid\n onBlur=@onBlur\n onKeydown=@onKeydown\n onInput=@onInput\n onCreateOption=@onCreateOption\n )\n as |InputComponent|\n }}\n {{#let\n (component\n (EnsureSafeComponentHelper @placeholderComponent)\n select=@select\n placeholder=@placeholder\n isMultipleWithSearch=true\n inputComponent=InputComponent\n displayPlaceholder=(and\n (not @select.searchText) (not @select.selected)\n )\n )\n as |PlaceholderComponent|\n }}\n <PlaceholderComponent />\n {{/let}}\n {{/let}}\n {{else}}\n {{! template-lint-disable }}\n <div\n class=\"euiComboBox__input\"\n style=\"font-size: 14px; display: inline-block;\"\n ></div>\n {{! template-lint-enable }}\n {{/if}}\n </ul>\n </:field>\n </EuiFormControlLayout>\n </template>\n}\n"],"names":["EuiComboBoxTriggerComponent","EmberPowerSelectMultipleTrigger","setComponentTemplate","precompileTemplate","strictMode","scope","EuiFormControlLayout","argOrDefault","and","fn","array","classNames","didUpdate","on","or","not","EnsureSafeComponentHelper","EuiComboBoxPill","optional","EuiComboBoxTriggerInput"],"mappings":";;;;;;;;;;;;;;;AAgBe,MAAMA,2BAAoC,SAAAC,+BAAA,CAAA;AACvD,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAqIA,0hHAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,oBAAA;QAAAC,YAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,KAAA;QAAAC,UAAA;QAAAC,SAAA;QAAAC,EAAA;QAAAC,EAAA;QAAAC,GAAA;QAAAC,yBAAA;QAAAC,eAAA;QAAAC,QAAA;AAAAC,iCAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
diff --git a/dist/components/eui-combo-box-pill.js b/dist/components/eui-combo-box-pill.js
index ae64c87534a428d708f9a86311b4bfd9e311886a..9024dbf48bedbc2797e71d3a39000b31a2fa83a0 100644
--- a/dist/components/eui-combo-box-pill.js
+++ b/dist/components/eui-combo-box-pill.js
@@ -1,5 +1,5 @@
import { fn, hash } from '@ember/helper';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import classNames from '../helpers/class-names.js';
import EuiBadge from './eui-badge.js';
import { precompileTemplate } from '@ember/template-compilation';
diff --git a/dist/components/eui-combo-box-pill.js.map b/dist/components/eui-combo-box-pill.js.map
index 2a5a93faceedd1f47597af6e56ef8b7cacdceebc..0a252d7f57fae2189783717e0d63e9718d467a87 100644
--- a/dist/components/eui-combo-box-pill.js.map
+++ b/dist/components/eui-combo-box-pill.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-combo-box-pill.js","sources":["../../src/components/eui-combo-box-pill.gts"],"sourcesContent":["import { hash } from '@ember/helper';\nimport { fn } from '@ember/helper';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\n\nimport classNames from '../helpers/class-names.ts';\nimport EuiBadge from './eui-badge.gts';\n\nimport type { EuiBadgeSignature } from './eui-badge';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiComboBoxPill {\n Element: EuiBadgeSignature['Element'];\n Args: {\n /**\n * The color of the pill\n */\n asPlainText?: boolean;\n\n onClose?: (option: unknown) => void;\n\n color?: EuiBadgeSignature['Args']['color'];\n\n dataSelectedIconIndex?: number;\n\n iconOnClickAriaLabel?: string;\n\n option?: unknown;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiComboBoxPill: TemplateOnlyComponent<EuiComboBoxPill> = <template>\n {{#let\n (classNames\n \"euiComboBoxPill\" (if @asPlainText \"euiComboBoxPill--plainText\")\n )\n (optional @onClose)\n as |classes onClose|\n }}\n {{#if @onClose}}\n <EuiBadge\n class={{classes}}\n @closeButtonProps={{hash\n tabIndex=-1\n dataSelectedIconIndex=@dataSelectedIconIndex\n }}\n @color={{@color}}\n @iconOnClick={{fn onClose @option}}\n @iconOnClickAriaLabel={{@iconOnClickAriaLabel}}\n @iconSide=\"right\"\n @iconType=\"cross\"\n ...attributes\n >\n {{yield}}\n </EuiBadge>\n {{else if @asPlainText}}\n <span class={{classes}}>\n {{yield}}\n </span>\n {{else}}\n <EuiBadge\n class={{classes}}\n @color={{@color}}\n @closeButtonProps={{hash dataSelectedIconIndex=@dataSelectedIconIndex}}\n ...attributes\n >\n {{yield}}\n </EuiBadge>\n {{/if}}\n {{/let}}\n</template>;\n\nexport default EuiComboBoxPill;\n"],"names":["EuiComboBoxPill","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","optional","EuiBadge","hash","fn","templateOnly"],"mappings":";;;;;;;;AAkCA,MAAMA,eAA0D,GAAAC,oBAAA,CAAAC,kBAAA,CAuChE,oxBAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,IAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-combo-box-pill.js","sources":["../../src/components/eui-combo-box-pill.gts"],"sourcesContent":["import { hash } from '@ember/helper';\nimport { fn } from '@ember/helper';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\n\nimport classNames from '../helpers/class-names.ts';\nimport EuiBadge from './eui-badge.gts';\n\nimport type { EuiBadgeSignature } from './eui-badge';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiComboBoxPill {\n Element: EuiBadgeSignature['Element'];\n Args: {\n /**\n * The color of the pill\n */\n asPlainText?: boolean;\n\n onClose?: (option: unknown) => void;\n\n color?: EuiBadgeSignature['Args']['color'];\n\n dataSelectedIconIndex?: number;\n\n iconOnClickAriaLabel?: string;\n\n option?: unknown;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiComboBoxPill: TemplateOnlyComponent<EuiComboBoxPill> = <template>\n {{#let\n (classNames\n \"euiComboBoxPill\" (if @asPlainText \"euiComboBoxPill--plainText\")\n )\n (optional @onClose)\n as |classes onClose|\n }}\n {{#if @onClose}}\n <EuiBadge\n class={{classes}}\n @closeButtonProps={{hash\n tabIndex=-1\n dataSelectedIconIndex=@dataSelectedIconIndex\n }}\n @color={{@color}}\n @iconOnClick={{fn onClose @option}}\n @iconOnClickAriaLabel={{@iconOnClickAriaLabel}}\n @iconSide=\"right\"\n @iconType=\"cross\"\n ...attributes\n >\n {{yield}}\n </EuiBadge>\n {{else if @asPlainText}}\n <span class={{classes}}>\n {{yield}}\n </span>\n {{else}}\n <EuiBadge\n class={{classes}}\n @color={{@color}}\n @closeButtonProps={{hash dataSelectedIconIndex=@dataSelectedIconIndex}}\n ...attributes\n >\n {{yield}}\n </EuiBadge>\n {{/if}}\n {{/let}}\n</template>;\n\nexport default EuiComboBoxPill;\n"],"names":["EuiComboBoxPill","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","optional","EuiBadge","hash","fn","templateOnly"],"mappings":";;;;;;;;AAkCA,MAAMA,eAA0D,GAAAC,oBAAA,CAAAC,kBAAA,CAuChE,oxBAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,IAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-combo-box.js b/dist/components/eui-combo-box.js
index 2fccc6711fcc992e951935394b0ad4b94dbbe391..229004bb9160c38f39a0cce670f250167ecd5896 100644
--- a/dist/components/eui-combo-box.js
+++ b/dist/components/eui-combo-box.js
@@ -5,9 +5,9 @@ import { action } from '@ember/object';
import { inject } from '@ember/service';
import { isEqual } from '@ember/utils';
import 'ember-basic-dropdown/styles';
-import optional from 'ember-composable-helpers/helpers/optional';
-import pipe from 'ember-composable-helpers/helpers/pipe';
-import queue from 'ember-composable-helpers/helpers/queue';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
+import pipe from '@nullvoxpopuli/ember-composable-helpers/helpers/pipe';
+import queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';
import PowerSelectMultiple from 'ember-power-select/components/power-select-multiple';
import { emberPowerSelectIsGroup } from 'ember-power-select/helpers/ember-power-select-is-group';
import { not, and } from 'ember-truth-helpers';
diff --git a/dist/components/eui-combo-box.js.map b/dist/components/eui-combo-box.js.map
index 51af9531b5736ec6c71d30cd5aa1d9875b500b62..e5fa268f0b1f70bae3a098c8d7656385349e2db9 100644
--- a/dist/components/eui-combo-box.js.map
+++ b/dist/components/eui-combo-box.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-combo-box.js","sources":["../../src/components/eui-combo-box.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { isArray } from '@ember/array';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEqual } from '@ember/utils';\nimport 'ember-basic-dropdown/styles';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport pipe from 'ember-composable-helpers/helpers/pipe';\nimport queue from 'ember-composable-helpers/helpers/queue';\nimport PowerSelectMultiple from 'ember-power-select/components/power-select-multiple';\nimport { emberPowerSelectIsGroup } from 'ember-power-select/helpers/ember-power-select-is-group';\nimport { and, not } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiComboBoxCreateOption from './eui-combo-box/create-option.gts';\nimport EuiComboBoxGroup from './eui-combo-box/group.gts';\nimport EuiComboBoxNoMatchesMessage from './eui-combo-box/no-matches-message.gts';\nimport EuiComboBoxOptions from './eui-combo-box/options.gts';\nimport EuiComboBoxSearchMessage from './eui-combo-box/search-message.gts';\nimport EuiComboBoxTrigger from './eui-combo-box/trigger.gts';\n\nimport type EuiI18n from '../services/eui-i18n';\n\ninterface PromiseProxy<T> extends Promise<T> {\n content: any;\n}\n\ninterface Select {\n selected: any;\n actions: {\n search: (str: string) => void;\n };\n}\n\nexport interface EuiComboBoxSignature {\n Element: HTMLDivElement;\n Args: {\n singleSelection?:\n | boolean\n | {\n asPlainText?: boolean;\n };\n onCreateOption?: (search: string) => boolean | undefined;\n options: any[];\n search?: (term: string, select: Select) => any[] | PromiseProxy<any[]>;\n searchField?: string;\n isInvalid?: boolean;\n fullWidth?: boolean;\n searchMessage?: string;\n searchEnabled?: boolean;\n isClearable?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n readOnly?: boolean;\n searchMessageComponent?: any;\n compressed?: boolean;\n onFocus?: (e: FocusEvent) => void;\n onBlur?: (e: FocusEvent) => void;\n onClose?: (e: Event) => void;\n onOpen?: (e: Event) => void;\n renderInPlace?: boolean;\n customOptionText?: string;\n loadingMessage?: any;\n selectedItemComponent?: any;\n beforeOptionsComponent?: any;\n placeholderComponent?: any;\n afterOptionsComponent?: any;\n searchPlaceholder?: any;\n dropdownClass?: string;\n selectedOptions?: any[];\n onChange: (selected: any[]) => void;\n placeholder?: string;\n extra?: any;\n closeOnSelect?: boolean;\n autoFocus?: boolean;\n defaultHighlighted?: any;\n matchTriggerWidth?: boolean;\n tabindex?: number;\n initiallyOpen?: boolean;\n horizontalPosition?: string;\n verticalPosition?: string;\n destination?: string;\n preventScroll?: boolean;\n noMatchesMessage?: string;\n noMatchesMessageComponent?: any;\n };\n Blocks: {\n default: [any, number, Select];\n };\n}\n\ninterface Sliceable<T> {\n slice(): T[];\n}\n\nconst isSliceable = <T,>(coll: any): coll is Sliceable<T> => {\n return isArray(coll);\n};\n\nexport const toPlainArray = <T,>(collection: T[] | Sliceable<T>): T[] => {\n if (isSliceable<T>(collection)) {\n return collection.slice();\n } else {\n return collection;\n }\n};\n\nexport default class EuiComboBoxComponent extends Component<EuiComboBoxSignature> {\n @service declare euiI18n: EuiI18n;\n\n @tracked select: any = null;\n @tracked private _resolvedOptions?: any[];\n @tracked searchText = '';\n @tracked private _searchResult?: any[];\n\n private _filterResultsCache: {\n results: any[];\n options: any[];\n searchText: string;\n } = { results: [], options: [], searchText: this.searchText };\n\n get loadingMessage() {\n return (\n this.args.loadingMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.loadingMessage',\n 'Loading options...'\n )\n );\n }\n\n get noMatchesMessage() {\n return (\n this.args.noMatchesMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.noMatchesMessage',\n 'No results found'\n )\n );\n }\n\n get searchMessage() {\n return (\n this.args.searchMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.searchMessage',\n 'Type to search'\n )\n );\n }\n\n <template>\n {{! @glint-nocheck: not typesafe yet }}\n <PowerSelectMultiple\n ...attributes\n @onChange={{pipe this.onChange @onChange}}\n @onFocus={{@onFocus}}\n @onBlur={{@onBlur}}\n @onOpen={{@onOpen}}\n @onClose={{@onClose}}\n @placeholderComponent={{@placeholderComponent}}\n @searchMessage={{this.searchMessage}}\n @searchMessageComponent={{if\n @searchMessageComponent\n @searchMessageComponent\n EuiComboBoxSearchMessage\n }}\n @noMatchesMessage={{this.noMatchesMessage}}\n @matchTriggerWidth={{@matchTriggerWidth}}\n @options={{this.options}}\n @selected={{@selectedOptions}}\n @closeOnSelect={{@closeOnSelect}}\n @defaultHighlighted={{@defaultHighlighted}}\n @searchField={{@searchField}}\n @searchEnabled={{argOrDefault @searchEnabled true}}\n @tabindex={{@tabindex}}\n @initiallyOpened={{and (not @isDisabled) @autoFocus}}\n @triggerComponent={{component\n EuiComboBoxTrigger\n fullWidth=@fullWidth\n compressed=@compressed\n isInvalid=@isInvalid\n singleSelection=@singleSelection\n onClose=@removeTag\n onCreateOption=(if @onCreateOption this.onCreateOption)\n isLoading=@isLoading\n autoFocus=(and (not @isDisabled) @autoFocus)\n icon=@triggerIcon\n }}\n @matcher={{@matcher}}\n @initiallyOpen={{@initiallyOpen}}\n @typeAheadOptionMatcher={{@typeAheadOptionMatcher}}\n @buildSelection={{this.buildSelection}}\n @search={{@search}}\n @onInput={{@onInput}}\n @onKeydown={{@onKeydown}}\n @scrollTo={{this.scrollTo}}\n @registerAPI={{queue this.registerAPI (optional @registerApi)}}\n @horizontalPosition={{@horizontalPosition}}\n @destination={{@destination}}\n @preventScroll={{@preventScroll}}\n @renderInPlace={{@renderInPlace}}\n @verticalPosition={{@verticalPosition}}\n @disabled={{@isDisabled}}\n @calculatePosition={{@calculatePosition}}\n @eventType={{@eventType}}\n @ariaLabel={{@ariaLabel}}\n @ariaLabelledBy={{@ariaLabelledBy}}\n @required={{@required}}\n @triggerRole={{@triggerRole}}\n @title={{@title}}\n @triggerId={{@triggerId}}\n @allowClear={{and (argOrDefault @isClearable true) (not @isDisabled)}}\n @loadingMessage={{this.loadingMessage}}\n @selectedItemComponent={{@selectedItemComponent}}\n @beforeOptionsComponent={{@beforeOptionsComponent}}\n @afterOptionsComponent={{@afterOptionsComponent}}\n @placeholder={{@placeholder}}\n @searchPlaceholder={{@searchPlaceholder}}\n @optionsComponent={{component\n EuiComboBoxOptions\n rowHeight=@rowHeight\n class=@optionsClass\n }}\n @extra={{@extra}}\n @groupComponent={{component EuiComboBoxGroup}}\n @triggerClass={{classNames\n \"euiComboBox\"\n (if @compressed \"euiComboBox--compressed\")\n (if @fullWidth \"euiComboBox--fullWidth\")\n (if @isDisabled \"euiComboBox-isDisabled\")\n (if @isInvalid \"euiComboBox-isInvalid\")\n (if this.select.isOpen \"euiComboBox-isOpen\")\n }}\n @noMatchesMessageComponent={{if\n @onCreateOption\n (component\n EuiComboBoxCreateOption\n customOptionText=@customOptionText\n onCreateOption=this.onCreateOption\n select=this.select\n )\n (component EuiComboBoxNoMatchesMessage)\n }}\n @dropdownClass=\"euiComboBoxOptionsList euiPanel euiPanel--borderRadiusMedium euiPanel--noShadow euiPanel--plain euiPopover__panel-isAttached euiPopover__panel euiPopover__panel-noArrow euiPopover__panel--bottom euiPopover__panel-isOpen euiComboBoxOptionsList__rowWrap {{@dropdownClass}}\"\n as |option i|\n >\n {{yield option i}}\n </PowerSelectMultiple>\n </template>\n\n //This is to allow scrolling between virtualized groups\n @cached\n get opts() {\n return this.results.reduce((acc, curr) => {\n if (emberPowerSelectIsGroup([curr])) {\n acc.push(curr, ...curr.options);\n } else {\n acc.push(curr);\n }\n\n return acc;\n }, []);\n }\n\n @cached\n get options(): any[] {\n if (this._resolvedOptions) return toPlainArray(this._resolvedOptions);\n\n if (this.args.options) {\n return toPlainArray(this.args.options);\n } else {\n return [];\n }\n }\n\n @cached\n get results(): any[] {\n if (this.searchText.length > 0) {\n if (this.args.search) {\n return toPlainArray(this._searchResult || this.options);\n } else {\n if (\n this._filterResultsCache.options === this.options &&\n this._filterResultsCache.searchText === this.searchText\n ) {\n // This is an optimization to avoid filtering several times, which may be a bit expensive\n // if there are many options, if neither the options nor the searchtext have changed\n return this._filterResultsCache.results;\n }\n\n //@ts-ignore\n let results = this._filter(this.options, this.searchText);\n //eslint-disable-next-line\n this._filterResultsCache = {\n results,\n options: this.options,\n searchText: this.searchText\n };\n\n return results;\n }\n } else {\n return this.options;\n }\n }\n\n @action\n scrollTo(option: any, select: { results: []; uniqueId: string }): void {\n let optionsList = document.querySelector(\n `[aria-controls=\"ember-power-select-trigger-${select.uniqueId}\"]`\n ) as HTMLElement;\n\n if (!optionsList) {\n return;\n }\n\n let index = this.opts.indexOf(option);\n\n if (index === -1) {\n return;\n }\n\n let optionElement = optionsList.querySelector(\n `[data-option-index=\"${index}\"]`\n ) as HTMLElement;\n\n if (!optionElement) {\n return;\n }\n\n let optionTopScroll = optionElement.offsetTop;\n let optionBottomScroll = optionTopScroll + optionElement.offsetHeight;\n\n if (optionBottomScroll > optionsList.offsetHeight + optionsList.scrollTop) {\n optionsList.scrollTop = optionBottomScroll - optionsList.offsetHeight;\n } else if (optionTopScroll < optionsList.scrollTop) {\n optionsList.scrollTop = optionTopScroll;\n }\n }\n\n @action\n registerAPI(select: Select) {\n this.select = select;\n }\n\n @action\n onChange(selected: any[]) {\n if (this.args.singleSelection) {\n return selected.length > 0 ? [selected[selected.length - 1]] : [];\n }\n\n return selected;\n }\n\n @action\n onCreateOption() {\n let option;\n\n if (\n this.args.onCreateOption &&\n typeof this.args.onCreateOption === 'function'\n ) {\n // The `onCreateOption` function can be used to sanitize the input or explicitly return `false` to reject the input\n option = this.args.onCreateOption(this.select.searchText);\n\n if (option === false) {\n return;\n }\n }\n\n let search = option || this.select.searchText;\n\n this.select.actions.search('');\n this.select.actions.close();\n\n return search;\n }\n\n @action\n buildSelection(option: any, select: Select) {\n let newSelection = (select.selected || []).slice(0);\n let idx = -1;\n\n for (let i = 0; i < newSelection.length; i++) {\n if (isEqual(newSelection[i], option)) {\n idx = i;\n\n break;\n }\n }\n\n if (idx > -1) {\n newSelection.splice(idx, 1);\n } else {\n newSelection.push(option);\n }\n\n if (this.args.singleSelection && newSelection.length === 0) {\n select.actions.search('');\n }\n\n if (select?.selected?.length < newSelection.length) {\n select.actions.search('');\n }\n\n return newSelection;\n }\n}\n"],"names":["isSliceable","coll","isArray","toPlainArray","collection","slice","EuiComboBoxComponent","Component","g","prototype","service","i","void 0","tracked","_filterResultsCache","results","options","searchText","loadingMessage","args","euiI18n","lookupToken","noMatchesMessage","searchMessage","setComponentTemplate","precompileTemplate","strictMode","scope","PowerSelectMultiple","pipe","EuiComboBoxSearchMessage","argOrDefault","and","not","EuiComboBoxTrigger","queue","optional","EuiComboBoxOptions","EuiComboBoxGroup","classNames","EuiComboBoxCreateOption","EuiComboBoxNoMatchesMessage","opts","reduce","acc","curr","emberPowerSelectIsGroup","push","n","cached","_resolvedOptions","length","search","_searchResult","_filter","scrollTo","option","select","optionsList","document","querySelector","uniqueId","index","indexOf","optionElement","optionTopScroll","offsetTop","optionBottomScroll","offsetHeight","scrollTop","action","registerAPI","onChange","selected","singleSelection","onCreateOption","actions","close","buildSelection","newSelection","idx","isEqual","splice"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"eui-combo-box.js","sources":["../../src/components/eui-combo-box.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { isArray } from '@ember/array';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEqual } from '@ember/utils';\nimport 'ember-basic-dropdown/styles';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport pipe from '@nullvoxpopuli/ember-composable-helpers/helpers/pipe';\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\nimport PowerSelectMultiple from 'ember-power-select/components/power-select-multiple';\nimport { emberPowerSelectIsGroup } from 'ember-power-select/helpers/ember-power-select-is-group';\nimport { and, not } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiComboBoxCreateOption from './eui-combo-box/create-option.gts';\nimport EuiComboBoxGroup from './eui-combo-box/group.gts';\nimport EuiComboBoxNoMatchesMessage from './eui-combo-box/no-matches-message.gts';\nimport EuiComboBoxOptions from './eui-combo-box/options.gts';\nimport EuiComboBoxSearchMessage from './eui-combo-box/search-message.gts';\nimport EuiComboBoxTrigger from './eui-combo-box/trigger.gts';\n\nimport type EuiI18n from '../services/eui-i18n';\n\ninterface PromiseProxy<T> extends Promise<T> {\n content: any;\n}\n\ninterface Select {\n selected: any;\n actions: {\n search: (str: string) => void;\n };\n}\n\nexport interface EuiComboBoxSignature {\n Element: HTMLDivElement;\n Args: {\n singleSelection?:\n | boolean\n | {\n asPlainText?: boolean;\n };\n onCreateOption?: (search: string) => boolean | undefined;\n options: any[];\n search?: (term: string, select: Select) => any[] | PromiseProxy<any[]>;\n searchField?: string;\n isInvalid?: boolean;\n fullWidth?: boolean;\n searchMessage?: string;\n searchEnabled?: boolean;\n isClearable?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n readOnly?: boolean;\n searchMessageComponent?: any;\n compressed?: boolean;\n onFocus?: (e: FocusEvent) => void;\n onBlur?: (e: FocusEvent) => void;\n onClose?: (e: Event) => void;\n onOpen?: (e: Event) => void;\n renderInPlace?: boolean;\n customOptionText?: string;\n loadingMessage?: any;\n selectedItemComponent?: any;\n beforeOptionsComponent?: any;\n placeholderComponent?: any;\n afterOptionsComponent?: any;\n searchPlaceholder?: any;\n dropdownClass?: string;\n selectedOptions?: any[];\n onChange: (selected: any[]) => void;\n placeholder?: string;\n extra?: any;\n closeOnSelect?: boolean;\n autoFocus?: boolean;\n defaultHighlighted?: any;\n matchTriggerWidth?: boolean;\n tabindex?: number;\n initiallyOpen?: boolean;\n horizontalPosition?: string;\n verticalPosition?: string;\n destination?: string;\n preventScroll?: boolean;\n noMatchesMessage?: string;\n noMatchesMessageComponent?: any;\n };\n Blocks: {\n default: [any, number, Select];\n };\n}\n\ninterface Sliceable<T> {\n slice(): T[];\n}\n\nconst isSliceable = <T,>(coll: any): coll is Sliceable<T> => {\n return isArray(coll);\n};\n\nexport const toPlainArray = <T,>(collection: T[] | Sliceable<T>): T[] => {\n if (isSliceable<T>(collection)) {\n return collection.slice();\n } else {\n return collection;\n }\n};\n\nexport default class EuiComboBoxComponent extends Component<EuiComboBoxSignature> {\n @service declare euiI18n: EuiI18n;\n\n @tracked select: any = null;\n @tracked private _resolvedOptions?: any[];\n @tracked searchText = '';\n @tracked private _searchResult?: any[];\n\n private _filterResultsCache: {\n results: any[];\n options: any[];\n searchText: string;\n } = { results: [], options: [], searchText: this.searchText };\n\n get loadingMessage() {\n return (\n this.args.loadingMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.loadingMessage',\n 'Loading options...'\n )\n );\n }\n\n get noMatchesMessage() {\n return (\n this.args.noMatchesMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.noMatchesMessage',\n 'No results found'\n )\n );\n }\n\n get searchMessage() {\n return (\n this.args.searchMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.searchMessage',\n 'Type to search'\n )\n );\n }\n\n <template>\n {{! @glint-nocheck: not typesafe yet }}\n <PowerSelectMultiple\n ...attributes\n @onChange={{pipe this.onChange @onChange}}\n @onFocus={{@onFocus}}\n @onBlur={{@onBlur}}\n @onOpen={{@onOpen}}\n @onClose={{@onClose}}\n @placeholderComponent={{@placeholderComponent}}\n @searchMessage={{this.searchMessage}}\n @searchMessageComponent={{if\n @searchMessageComponent\n @searchMessageComponent\n EuiComboBoxSearchMessage\n }}\n @noMatchesMessage={{this.noMatchesMessage}}\n @matchTriggerWidth={{@matchTriggerWidth}}\n @options={{this.options}}\n @selected={{@selectedOptions}}\n @closeOnSelect={{@closeOnSelect}}\n @defaultHighlighted={{@defaultHighlighted}}\n @searchField={{@searchField}}\n @searchEnabled={{argOrDefault @searchEnabled true}}\n @tabindex={{@tabindex}}\n @initiallyOpened={{and (not @isDisabled) @autoFocus}}\n @triggerComponent={{component\n EuiComboBoxTrigger\n fullWidth=@fullWidth\n compressed=@compressed\n isInvalid=@isInvalid\n singleSelection=@singleSelection\n onClose=@removeTag\n onCreateOption=(if @onCreateOption this.onCreateOption)\n isLoading=@isLoading\n autoFocus=(and (not @isDisabled) @autoFocus)\n icon=@triggerIcon\n }}\n @matcher={{@matcher}}\n @initiallyOpen={{@initiallyOpen}}\n @typeAheadOptionMatcher={{@typeAheadOptionMatcher}}\n @buildSelection={{this.buildSelection}}\n @search={{@search}}\n @onInput={{@onInput}}\n @onKeydown={{@onKeydown}}\n @scrollTo={{this.scrollTo}}\n @registerAPI={{queue this.registerAPI (optional @registerApi)}}\n @horizontalPosition={{@horizontalPosition}}\n @destination={{@destination}}\n @preventScroll={{@preventScroll}}\n @renderInPlace={{@renderInPlace}}\n @verticalPosition={{@verticalPosition}}\n @disabled={{@isDisabled}}\n @calculatePosition={{@calculatePosition}}\n @eventType={{@eventType}}\n @ariaLabel={{@ariaLabel}}\n @ariaLabelledBy={{@ariaLabelledBy}}\n @required={{@required}}\n @triggerRole={{@triggerRole}}\n @title={{@title}}\n @triggerId={{@triggerId}}\n @allowClear={{and (argOrDefault @isClearable true) (not @isDisabled)}}\n @loadingMessage={{this.loadingMessage}}\n @selectedItemComponent={{@selectedItemComponent}}\n @beforeOptionsComponent={{@beforeOptionsComponent}}\n @afterOptionsComponent={{@afterOptionsComponent}}\n @placeholder={{@placeholder}}\n @searchPlaceholder={{@searchPlaceholder}}\n @optionsComponent={{component\n EuiComboBoxOptions\n rowHeight=@rowHeight\n class=@optionsClass\n }}\n @extra={{@extra}}\n @groupComponent={{component EuiComboBoxGroup}}\n @triggerClass={{classNames\n \"euiComboBox\"\n (if @compressed \"euiComboBox--compressed\")\n (if @fullWidth \"euiComboBox--fullWidth\")\n (if @isDisabled \"euiComboBox-isDisabled\")\n (if @isInvalid \"euiComboBox-isInvalid\")\n (if this.select.isOpen \"euiComboBox-isOpen\")\n }}\n @noMatchesMessageComponent={{if\n @onCreateOption\n (component\n EuiComboBoxCreateOption\n customOptionText=@customOptionText\n onCreateOption=this.onCreateOption\n select=this.select\n )\n (component EuiComboBoxNoMatchesMessage)\n }}\n @dropdownClass=\"euiComboBoxOptionsList euiPanel euiPanel--borderRadiusMedium euiPanel--noShadow euiPanel--plain euiPopover__panel-isAttached euiPopover__panel euiPopover__panel-noArrow euiPopover__panel--bottom euiPopover__panel-isOpen euiComboBoxOptionsList__rowWrap {{@dropdownClass}}\"\n as |option i|\n >\n {{yield option i}}\n </PowerSelectMultiple>\n </template>\n\n //This is to allow scrolling between virtualized groups\n @cached\n get opts() {\n return this.results.reduce((acc, curr) => {\n if (emberPowerSelectIsGroup([curr])) {\n acc.push(curr, ...curr.options);\n } else {\n acc.push(curr);\n }\n\n return acc;\n }, []);\n }\n\n @cached\n get options(): any[] {\n if (this._resolvedOptions) return toPlainArray(this._resolvedOptions);\n\n if (this.args.options) {\n return toPlainArray(this.args.options);\n } else {\n return [];\n }\n }\n\n @cached\n get results(): any[] {\n if (this.searchText.length > 0) {\n if (this.args.search) {\n return toPlainArray(this._searchResult || this.options);\n } else {\n if (\n this._filterResultsCache.options === this.options &&\n this._filterResultsCache.searchText === this.searchText\n ) {\n // This is an optimization to avoid filtering several times, which may be a bit expensive\n // if there are many options, if neither the options nor the searchtext have changed\n return this._filterResultsCache.results;\n }\n\n //@ts-ignore\n let results = this._filter(this.options, this.searchText);\n //eslint-disable-next-line\n this._filterResultsCache = {\n results,\n options: this.options,\n searchText: this.searchText\n };\n\n return results;\n }\n } else {\n return this.options;\n }\n }\n\n @action\n scrollTo(option: any, select: { results: []; uniqueId: string }): void {\n let optionsList = document.querySelector(\n `[aria-controls=\"ember-power-select-trigger-${select.uniqueId}\"]`\n ) as HTMLElement;\n\n if (!optionsList) {\n return;\n }\n\n let index = this.opts.indexOf(option);\n\n if (index === -1) {\n return;\n }\n\n let optionElement = optionsList.querySelector(\n `[data-option-index=\"${index}\"]`\n ) as HTMLElement;\n\n if (!optionElement) {\n return;\n }\n\n let optionTopScroll = optionElement.offsetTop;\n let optionBottomScroll = optionTopScroll + optionElement.offsetHeight;\n\n if (optionBottomScroll > optionsList.offsetHeight + optionsList.scrollTop) {\n optionsList.scrollTop = optionBottomScroll - optionsList.offsetHeight;\n } else if (optionTopScroll < optionsList.scrollTop) {\n optionsList.scrollTop = optionTopScroll;\n }\n }\n\n @action\n registerAPI(select: Select) {\n this.select = select;\n }\n\n @action\n onChange(selected: any[]) {\n if (this.args.singleSelection) {\n return selected.length > 0 ? [selected[selected.length - 1]] : [];\n }\n\n return selected;\n }\n\n @action\n onCreateOption() {\n let option;\n\n if (\n this.args.onCreateOption &&\n typeof this.args.onCreateOption === 'function'\n ) {\n // The `onCreateOption` function can be used to sanitize the input or explicitly return `false` to reject the input\n option = this.args.onCreateOption(this.select.searchText);\n\n if (option === false) {\n return;\n }\n }\n\n let search = option || this.select.searchText;\n\n this.select.actions.search('');\n this.select.actions.close();\n\n return search;\n }\n\n @action\n buildSelection(option: any, select: Select) {\n let newSelection = (select.selected || []).slice(0);\n let idx = -1;\n\n for (let i = 0; i < newSelection.length; i++) {\n if (isEqual(newSelection[i], option)) {\n idx = i;\n\n break;\n }\n }\n\n if (idx > -1) {\n newSelection.splice(idx, 1);\n } else {\n newSelection.push(option);\n }\n\n if (this.args.singleSelection && newSelection.length === 0) {\n select.actions.search('');\n }\n\n if (select?.selected?.length < newSelection.length) {\n select.actions.search('');\n }\n\n return newSelection;\n }\n}\n"],"names":["isSliceable","coll","isArray","toPlainArray","collection","slice","EuiComboBoxComponent","Component","g","prototype","service","i","void 0","tracked","_filterResultsCache","results","options","searchText","loadingMessage","args","euiI18n","lookupToken","noMatchesMessage","searchMessage","setComponentTemplate","precompileTemplate","strictMode","scope","PowerSelectMultiple","pipe","EuiComboBoxSearchMessage","argOrDefault","and","not","EuiComboBoxTrigger","queue","optional","EuiComboBoxOptions","EuiComboBoxGroup","classNames","EuiComboBoxCreateOption","EuiComboBoxNoMatchesMessage","opts","reduce","acc","curr","emberPowerSelectIsGroup","push","n","cached","_resolvedOptions","length","search","_searchResult","_filter","scrollTo","option","select","optionsList","document","querySelector","uniqueId","index","indexOf","optionElement","optionTopScroll","offsetTop","optionBottomScroll","offsetHeight","scrollTop","action","registerAPI","onChange","selected","singleSelection","onCreateOption","actions","close","buildSelection","newSelection","idx","isEqual","splice"],"mappings":"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"}
diff --git a/dist/components/eui-dual-range.js b/dist/components/eui-dual-range.js
index 53180dd4bc3d9e96c9043769cc38958bce7e19a7..4e97c2ead67a7d25a9d9b108ce22e2f8b479faf4 100644
--- a/dist/components/eui-dual-range.js
+++ b/dist/components/eui-dual-range.js
@@ -6,7 +6,7 @@ import { action } from '@ember/object';
import { guidFor } from '@ember/object/internals';
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
import { later } from '@ember/runloop';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import onKey from 'ember-keyboard/modifiers/on-key';
import { eq, or, not, and } from 'ember-truth-helpers';
import argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.js';
diff --git a/dist/components/eui-dual-range.js.map b/dist/components/eui-dual-range.js.map
index 7821e11df320d84de53320070ff62293d91d815c..e96b9c651340863a46bc09a20a309a8878119fc3 100644
--- a/dist/components/eui-dual-range.js.map
+++ b/dist/components/eui-dual-range.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-dual-range.js","sources":["../../src/components/eui-dual-range.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } 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 { later } from '@ember/runloop';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport castTo from '../helpers/cast-to.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport { keys } from '../utils/keys.ts';\nimport { isWithinRange } from '../utils/number/index.ts';\nimport { EUI_THUMB_SIZE } from '../utils/range/index.ts';\nimport EuiFormControlLayoutDelimited from './eui-form-control-layout-delimited.gts';\nimport EuiInputPopover from './eui-input-popover.gts';\nimport EuiRangeHighlight from './eui-range-highlight.gts';\nimport EuiRangeInput from './eui-range-input.gts';\nimport EuiRangeLabel from './eui-range-label.gts';\nimport EuiRangeSlider from './eui-range-slider.gts';\nimport EuiRangeThumb from './eui-range-thumb.gts';\nimport EuiRangeTrack from './eui-range-track.gts';\nimport EuiRangeWrapper from './eui-range-wrapper.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { EuiRangeArgs } from './eui-range';\nimport type {\n EuiRangeInputArgs,\n EuiRangeInputSignature\n} from './eui-range-input';\nimport type { EuiRangeLevel } from './eui-range-levels';\nimport type { EuiRangeTick } from './eui-range-ticks';\n\nexport type ValueMember = number | string;\n\nexport interface EuiDualRangeArgs {\n value: [ValueMember, ValueMember];\n onBlur?: (event: FocusEvent) => void;\n onFocus?: (event: FocusEvent) => void;\n onChange: (\n values: [ValueMember, ValueMember],\n isValid: boolean,\n event: Event | MouseEvent | KeyboardEvent\n ) => void;\n fullWidth?: boolean;\n isInvalid?: boolean;\n /**\n * Create colored indicators for certain intervals\n */\n levels?: EuiRangeLevel[];\n /**\n * Shows static min/max labels on the sides of the range slider\n */\n showLabels?: boolean;\n /**\n * Pass `true` to displays an extra input control for direct manipulation.\n * Pass `'inputWithPopover'` to only show the input but show the range in a dropdown.\n */\n showInput?: EuiRangeArgs['showInput'];\n /**\n * Modifies the number of tick marks and at what interval\n */\n tickInterval?: number;\n /**\n * Specified ticks at specified values\n */\n ticks?: EuiRangeTick[];\n /**\n * Creates an input group with element(s) coming before input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */\n prepend?: EuiFormControlLayoutSignature['Blocks']['prepend'];\n /**\n * Creates an input group with element(s) coming after input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */\n append?: EuiFormControlLayoutSignature['Blocks']['append'];\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */\n minInputProps?: Partial<EuiRangeInputArgs>;\n\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */\n maxInputProps?: Partial<EuiRangeInputArgs>;\n\n readOnly?: boolean;\n\n disabled?: boolean;\n\n isPrependProvided?: boolean;\n\n isAppendProvided?: boolean;\n\n isFakeMaxBlock?: boolean;\n\n isFakeMinBlock?: boolean;\n\n disable?: boolean;\n\n ariaDescribedby?: string;\n\n ariaLabel?: string;\n\n name?: string;\n\n id?: string;\n\n compressed?: boolean;\n\n showRange?: boolean;\n\n showTicks?: boolean;\n\n step?: number;\n\n min?: number;\n\n max?: number;\n}\n\nexport interface EuiDualRangeSignature {\n Element: EuiRangeInputSignature['Element'];\n Args: EuiDualRangeArgs;\n Blocks: {\n prepend: EuiRangeInputSignature['Blocks']['prepend'];\n append: EuiRangeInputSignature['Blocks']['append'];\n min: [number?];\n max: [number?];\n };\n}\n\nexport default class EuiDualRangeComponent extends Component<EuiDualRangeSignature> {\n // Defaults\n @argOrDefaultDecorator(0) min!: number;\n @argOrDefaultDecorator(100) max!: number;\n @argOrDefaultDecorator(1) step!: number;\n @argOrDefaultDecorator(false) fullWidth!: boolean;\n @argOrDefaultDecorator(false) compressed!: boolean;\n @argOrDefaultDecorator(false) showLabels!: boolean;\n @argOrDefaultDecorator(false) showInput!: boolean | string;\n @argOrDefaultDecorator(true) showRange!: boolean;\n @argOrDefaultDecorator(false) showTicks!: boolean;\n @argOrDefaultDecorator([]) levels!: EuiRangeLevel[];\n\n //State\n @tracked id: string = this.args.id || guidFor({});\n @tracked hasFocus = false;\n @tracked rangeSliderRefAvailable = false;\n @tracked isPopoverOpen = false;\n @tracked rangeWidth: number | undefined;\n @tracked isVisible = true;\n ///\n\n preventPopoverClose = false;\n rangeSliderRef: HTMLInputElement | null = null;\n\n @action\n didInsertRangeSlider(ref: HTMLInputElement | null): void {\n this.rangeSliderRef = ref;\n\n this.rangeSliderRefAvailable = !!ref;\n this.rangeWidth = ref ? ref.clientWidth : undefined;\n\n if (this.rangeSliderRef?.clientWidth && !this.isVisible) {\n this.isVisible = true;\n }\n }\n\n get lowerValue(): ValueMember {\n return this.args.value ? this.args.value[0] : this.min;\n }\n\n get upperValue(): ValueMember {\n return this.args.value ? this.args.value[1] : this.max;\n }\n\n get lowerValueIsValid(): boolean {\n return isWithinRange(this.min, this.upperValue, this.lowerValue);\n }\n\n get upperValueIsValid(): boolean {\n return isWithinRange(this.lowerValue, this.max, this.upperValue);\n }\n\n get isValid(): boolean {\n return this.lowerValueIsValid && this.upperValueIsValid;\n }\n\n @action\n _determineInvalidThumbMovement(\n newVal: ValueMember,\n lower: ValueMember,\n upper: ValueMember,\n e: Event\n ): void {\n // If the values are invalid, find whether the new value is in the upper\n // or lower half and move the appropriate handle to the new value,\n // while the other handle gets moved to the opposite bound (if invalid)\n const lowerHalf = Math.abs(this.max - this.min) / 2 + this.min;\n const newValIsLow = isWithinRange(this.min, lowerHalf, newVal);\n\n if (newValIsLow) {\n lower = newVal;\n upper = !this.upperValueIsValid ? this.max : upper;\n } else {\n lower = !this.lowerValueIsValid ? this.min : lower;\n upper = newVal;\n }\n\n this._handleOnChange(lower, upper, e);\n }\n\n @action\n _determineValidThumbMovement(\n newVal: ValueMember,\n lower: ValueMember,\n upper: ValueMember,\n e: Event\n ): void {\n // Lower thumb targeted or right-moving swap has occurred\n if (\n Math.abs((lower as number) - (newVal as number)) <\n Math.abs((upper as number) - (newVal as number))\n ) {\n lower = newVal;\n }\n // Upper thumb targeted or left-moving swap has occurred\n else {\n upper = newVal;\n }\n\n this._handleOnChange(lower, upper, e);\n }\n\n @action\n _determineThumbMovement(newVal: number, e: Event): void {\n // Determine thumb movement based on slider interaction\n if (!this.isValid) {\n // Non-standard positioning follows\n this._determineInvalidThumbMovement(\n newVal,\n this.lowerValue,\n this.upperValue,\n e\n );\n } else {\n // Standard positioning based on click event proximity to thumb locations\n this._determineValidThumbMovement(\n newVal,\n this.lowerValue,\n this.upperValue,\n e\n );\n }\n }\n\n @action\n _handleOnChange(lower: ValueMember, upper: ValueMember, e: Event): void {\n const isValid =\n isWithinRange(this.min, upper, lower) &&\n isWithinRange(lower, this.max, upper);\n\n this.args.onChange([lower, upper], isValid, e);\n }\n\n @action\n handleSliderChange(e: Event): void {\n this._determineThumbMovement(\n Number((e.currentTarget as HTMLInputElement).value),\n e\n );\n }\n\n @action\n _resetToRangeEnds(e: KeyboardEvent): void {\n // Arbitrary decision to pass `min` instead of `max`. Result is the same.\n this._determineInvalidThumbMovement(\n this.min,\n this.lowerValue,\n this.upperValue,\n e\n );\n }\n\n @action\n _isDirectionalKeyPress(event: KeyboardEvent): boolean {\n return (\n [\n keys.ARROW_UP,\n keys.ARROW_RIGHT,\n keys.ARROW_DOWN,\n keys.ARROW_LEFT\n ].indexOf(event.key as keys) > -1\n );\n }\n\n @action\n handleInputKeyDown(e: KeyboardEvent): void {\n // Relevant only when initial values are both `''` and `showInput` is set\n if (this._isDirectionalKeyPress(e) && !this.isValid) {\n e.preventDefault();\n this._resetToRangeEnds(e);\n }\n }\n\n @action\n handleLowerInputChange(e: Event): void {\n this._handleOnChange(\n (e.target as HTMLInputElement).value,\n this.upperValue,\n e\n );\n }\n\n @action\n handleUpperInputChange(e: Event): void {\n this._handleOnChange(\n this.lowerValue,\n (e.target as HTMLInputElement).value,\n e\n );\n }\n\n @action\n _handleKeyDown(value: ValueMember, event: KeyboardEvent): number {\n let newVal = Number(value);\n let stepRemainder = 0;\n const step = this.args.step || 1;\n\n switch (event.key) {\n case keys.ARROW_UP:\n case keys.ARROW_RIGHT:\n event.preventDefault();\n newVal += step;\n stepRemainder = (newVal - this.min) % step;\n\n if (step !== 1 && stepRemainder > 0) {\n newVal = newVal - stepRemainder;\n }\n\n break;\n case keys.ARROW_DOWN:\n case keys.ARROW_LEFT:\n event.preventDefault();\n newVal -= step;\n stepRemainder = (newVal - this.min) % step;\n\n if (step !== 1 && stepRemainder > 0) {\n newVal = newVal + (step - stepRemainder);\n }\n\n break;\n }\n\n return newVal;\n }\n\n @action\n handleLowerKeyDown(event: KeyboardEvent): void {\n let lower = this.lowerValue;\n\n switch (event.key) {\n case keys.TAB:\n return;\n default:\n if (!this.lowerValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event.preventDefault();\n this._resetToRangeEnds(event);\n\n return;\n }\n\n lower = this._handleKeyDown(lower, event);\n }\n\n if (lower >= (this.upperValue as number) || lower < this.min) return;\n this._handleOnChange(lower, this.upperValue, event);\n }\n\n @action\n handleUpperKeyDown(event: KeyboardEvent): void {\n let upper = this.upperValue;\n\n switch (event.key) {\n case keys.TAB:\n return;\n default:\n if (!this.upperValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event.preventDefault();\n this._resetToRangeEnds(event);\n\n return;\n }\n\n upper = this._handleKeyDown(upper, event);\n }\n\n if (upper <= (this.lowerValue as number) || upper > this.max) return;\n this._handleOnChange(this.lowerValue, upper, event);\n }\n\n @action\n calculateThumbPositionStyle(value: number, width?: number): { left: string } {\n // Calculate the left position based on value\n const decimal = (value - this.min) / (this.max - this.min);\n // Must be between 0-100%\n let valuePosition = decimal <= 1 ? decimal : 1;\n\n valuePosition = valuePosition >= 0 ? valuePosition : 0;\n\n const trackWidth =\n this.args.showInput === 'inputWithPopover' && !!width\n ? width\n : this.rangeSliderRef?.clientWidth;\n\n let thumbToTrackRatio = 0;\n\n if (trackWidth) {\n thumbToTrackRatio = EUI_THUMB_SIZE / trackWidth;\n } else {\n thumbToTrackRatio = EUI_THUMB_SIZE / 1;\n }\n\n const trackPositionScale = (1 - thumbToTrackRatio) * 100;\n\n return { left: `${valuePosition * trackPositionScale}%` };\n }\n\n @action\n setPreventPopoverClose(value: boolean): void {\n this.preventPopoverClose = value;\n }\n\n get calculateLowerValueThumbPositionStyle(): { left: string } {\n return this.calculateThumbPositionStyle(\n Number(this.lowerValue) || this.min,\n this.rangeWidth\n );\n }\n\n get calculateUpperValueThumbPositionStyle(): { left: string } {\n return this.calculateThumbPositionStyle(\n Number(this.upperValue) || this.max,\n this.rangeWidth\n );\n }\n\n @action\n toggleHasFocus(): void {\n this.hasFocus = !this.hasFocus;\n }\n\n @action\n onThumbFocus(e: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.hasFocus = true;\n }\n\n @action\n onThumbBlur(e: FocusEvent): void {\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.hasFocus = false;\n }\n\n @action\n onInputFocus(e: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.preventPopoverClose = true;\n this.isPopoverOpen = true;\n }\n\n @action\n onInputBlur(e: FocusEvent): void {\n later(\n this,\n () => {\n // Safari does not recognize any focus-related eventing for input[type=range]\n // making it impossible to capture its state using active/focus/relatedTarget\n // Instead, a prevention flag is set on mousedown, with a waiting period here.\n // Mousedown is viable because in the popover case, it is inaccessible via keyboard (intentionally)\n if (this.preventPopoverClose) {\n this.preventPopoverClose = false;\n\n return;\n }\n\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.closePopover();\n },\n 200\n );\n }\n\n @action\n closePopover(): void {\n this.preventPopoverClose = false;\n this.isPopoverOpen = false;\n }\n\n @action\n onResize(width?: number): void {\n this.rangeWidth = width;\n }\n\n get digitTolerance(): number {\n return Math.max(String(this.min).length, String(this.max).length);\n }\n\n get showInputOnly(): boolean {\n return this.showInput === 'inputWithPopover';\n }\n\n get canShowDropdown(): boolean {\n return this.showInputOnly && !this.args.readOnly && !this.args.disabled;\n }\n\n <template>\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (and (not (argOrDefault @isFakeMaxBlock false)) (has-block \"max\"))\n (and (not (argOrDefault @isFakeMinBlock false)) (has-block \"min\"))\n as |hasPrepend hasAppend hasMaxBlock hasMinBlock|\n }}\n {{#if this.showInputOnly}}\n <EuiInputPopover\n class=\"euiRange__popover\"\n @fullWidth={{this.fullWidth}}\n @isOpen={{this.isPopoverOpen}}\n @closePopover={{this.closePopover}}\n @disableFocusTrap={{true}}\n @onPanelResize={{this.onResize}}\n >\n <:input>\n <EuiFormControlLayoutDelimited\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses to=\"prepend\"}}\n </:prepend>\n <:startControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleLowerInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:startControl>\n <:endControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleUpperInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:endControl>\n <:append as |appendClasses|>\n {{yield appendClasses to=\"append\"}}\n </:append>\n </EuiFormControlLayoutDelimited>\n </:input>\n <:content>\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n </EuiRangeWrapper>\n </:content>\n </EuiInputPopover>\n {{else}}\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showInput}}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleLowerInputChange}}\n />\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{/if}}\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{!@glint-expect-error}}\n {{on \"click\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{on \"keydown\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if this.showInput}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{! maxinput }}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @controlOnly={{this.showInputOnly}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleUpperInputChange}}\n />\n {{/if}}\n </EuiRangeWrapper>\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiDualRangeComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","args","id","guidFor","preventPopoverClose","rangeSliderRef","didInsertRangeSlider","ref","rangeSliderRefAvailable","rangeWidth","clientWidth","undefined","isVisible","n","action","lowerValue","value","min","upperValue","max","lowerValueIsValid","isWithinRange","upperValueIsValid","isValid","_determineInvalidThumbMovement","newVal","lower","upper","e","lowerHalf","Math","abs","newValIsLow","_handleOnChange","_determineValidThumbMovement","_determineThumbMovement","onChange","handleSliderChange","Number","currentTarget","_resetToRangeEnds","_isDirectionalKeyPress","event","keys","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","ARROW_LEFT","indexOf","key","handleInputKeyDown","preventDefault","handleLowerInputChange","target","handleUpperInputChange","_handleKeyDown","stepRemainder","step","handleLowerKeyDown","TAB","handleUpperKeyDown","calculateThumbPositionStyle","width","decimal","valuePosition","trackWidth","showInput","thumbToTrackRatio","EUI_THUMB_SIZE","trackPositionScale","left","setPreventPopoverClose","calculateLowerValueThumbPositionStyle","calculateUpperValueThumbPositionStyle","toggleHasFocus","hasFocus","onThumbFocus","onFocus","onThumbBlur","onBlur","onInputFocus","isPopoverOpen","onInputBlur","later","closePopover","onResize","digitTolerance","String","length","showInputOnly","canShowDropdown","readOnly","disabled","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","not","EuiInputPopover","EuiFormControlLayoutDelimited","or","EuiRangeInput","castTo","on","fn","onKey","optional","EuiRangeWrapper","EuiRangeLabel","EuiRangeTrack","eq","EuiRangeHighlight","EuiRangeSlider","didInsert","EuiRangeThumb","simpleStyle"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"eui-dual-range.js","sources":["../../src/components/eui-dual-range.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } 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 { later } from '@ember/runloop';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport castTo from '../helpers/cast-to.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport { keys } from '../utils/keys.ts';\nimport { isWithinRange } from '../utils/number/index.ts';\nimport { EUI_THUMB_SIZE } from '../utils/range/index.ts';\nimport EuiFormControlLayoutDelimited from './eui-form-control-layout-delimited.gts';\nimport EuiInputPopover from './eui-input-popover.gts';\nimport EuiRangeHighlight from './eui-range-highlight.gts';\nimport EuiRangeInput from './eui-range-input.gts';\nimport EuiRangeLabel from './eui-range-label.gts';\nimport EuiRangeSlider from './eui-range-slider.gts';\nimport EuiRangeThumb from './eui-range-thumb.gts';\nimport EuiRangeTrack from './eui-range-track.gts';\nimport EuiRangeWrapper from './eui-range-wrapper.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { EuiRangeArgs } from './eui-range';\nimport type {\n EuiRangeInputArgs,\n EuiRangeInputSignature\n} from './eui-range-input';\nimport type { EuiRangeLevel } from './eui-range-levels';\nimport type { EuiRangeTick } from './eui-range-ticks';\n\nexport type ValueMember = number | string;\n\nexport interface EuiDualRangeArgs {\n value: [ValueMember, ValueMember];\n onBlur?: (event: FocusEvent) => void;\n onFocus?: (event: FocusEvent) => void;\n onChange: (\n values: [ValueMember, ValueMember],\n isValid: boolean,\n event: Event | MouseEvent | KeyboardEvent\n ) => void;\n fullWidth?: boolean;\n isInvalid?: boolean;\n /**\n * Create colored indicators for certain intervals\n */\n levels?: EuiRangeLevel[];\n /**\n * Shows static min/max labels on the sides of the range slider\n */\n showLabels?: boolean;\n /**\n * Pass `true` to displays an extra input control for direct manipulation.\n * Pass `'inputWithPopover'` to only show the input but show the range in a dropdown.\n */\n showInput?: EuiRangeArgs['showInput'];\n /**\n * Modifies the number of tick marks and at what interval\n */\n tickInterval?: number;\n /**\n * Specified ticks at specified values\n */\n ticks?: EuiRangeTick[];\n /**\n * Creates an input group with element(s) coming before input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */\n prepend?: EuiFormControlLayoutSignature['Blocks']['prepend'];\n /**\n * Creates an input group with element(s) coming after input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */\n append?: EuiFormControlLayoutSignature['Blocks']['append'];\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */\n minInputProps?: Partial<EuiRangeInputArgs>;\n\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */\n maxInputProps?: Partial<EuiRangeInputArgs>;\n\n readOnly?: boolean;\n\n disabled?: boolean;\n\n isPrependProvided?: boolean;\n\n isAppendProvided?: boolean;\n\n isFakeMaxBlock?: boolean;\n\n isFakeMinBlock?: boolean;\n\n disable?: boolean;\n\n ariaDescribedby?: string;\n\n ariaLabel?: string;\n\n name?: string;\n\n id?: string;\n\n compressed?: boolean;\n\n showRange?: boolean;\n\n showTicks?: boolean;\n\n step?: number;\n\n min?: number;\n\n max?: number;\n}\n\nexport interface EuiDualRangeSignature {\n Element: EuiRangeInputSignature['Element'];\n Args: EuiDualRangeArgs;\n Blocks: {\n prepend: EuiRangeInputSignature['Blocks']['prepend'];\n append: EuiRangeInputSignature['Blocks']['append'];\n min: [number?];\n max: [number?];\n };\n}\n\nexport default class EuiDualRangeComponent extends Component<EuiDualRangeSignature> {\n // Defaults\n @argOrDefaultDecorator(0) min!: number;\n @argOrDefaultDecorator(100) max!: number;\n @argOrDefaultDecorator(1) step!: number;\n @argOrDefaultDecorator(false) fullWidth!: boolean;\n @argOrDefaultDecorator(false) compressed!: boolean;\n @argOrDefaultDecorator(false) showLabels!: boolean;\n @argOrDefaultDecorator(false) showInput!: boolean | string;\n @argOrDefaultDecorator(true) showRange!: boolean;\n @argOrDefaultDecorator(false) showTicks!: boolean;\n @argOrDefaultDecorator([]) levels!: EuiRangeLevel[];\n\n //State\n @tracked id: string = this.args.id || guidFor({});\n @tracked hasFocus = false;\n @tracked rangeSliderRefAvailable = false;\n @tracked isPopoverOpen = false;\n @tracked rangeWidth: number | undefined;\n @tracked isVisible = true;\n ///\n\n preventPopoverClose = false;\n rangeSliderRef: HTMLInputElement | null = null;\n\n @action\n didInsertRangeSlider(ref: HTMLInputElement | null): void {\n this.rangeSliderRef = ref;\n\n this.rangeSliderRefAvailable = !!ref;\n this.rangeWidth = ref ? ref.clientWidth : undefined;\n\n if (this.rangeSliderRef?.clientWidth && !this.isVisible) {\n this.isVisible = true;\n }\n }\n\n get lowerValue(): ValueMember {\n return this.args.value ? this.args.value[0] : this.min;\n }\n\n get upperValue(): ValueMember {\n return this.args.value ? this.args.value[1] : this.max;\n }\n\n get lowerValueIsValid(): boolean {\n return isWithinRange(this.min, this.upperValue, this.lowerValue);\n }\n\n get upperValueIsValid(): boolean {\n return isWithinRange(this.lowerValue, this.max, this.upperValue);\n }\n\n get isValid(): boolean {\n return this.lowerValueIsValid && this.upperValueIsValid;\n }\n\n @action\n _determineInvalidThumbMovement(\n newVal: ValueMember,\n lower: ValueMember,\n upper: ValueMember,\n e: Event\n ): void {\n // If the values are invalid, find whether the new value is in the upper\n // or lower half and move the appropriate handle to the new value,\n // while the other handle gets moved to the opposite bound (if invalid)\n const lowerHalf = Math.abs(this.max - this.min) / 2 + this.min;\n const newValIsLow = isWithinRange(this.min, lowerHalf, newVal);\n\n if (newValIsLow) {\n lower = newVal;\n upper = !this.upperValueIsValid ? this.max : upper;\n } else {\n lower = !this.lowerValueIsValid ? this.min : lower;\n upper = newVal;\n }\n\n this._handleOnChange(lower, upper, e);\n }\n\n @action\n _determineValidThumbMovement(\n newVal: ValueMember,\n lower: ValueMember,\n upper: ValueMember,\n e: Event\n ): void {\n // Lower thumb targeted or right-moving swap has occurred\n if (\n Math.abs((lower as number) - (newVal as number)) <\n Math.abs((upper as number) - (newVal as number))\n ) {\n lower = newVal;\n }\n // Upper thumb targeted or left-moving swap has occurred\n else {\n upper = newVal;\n }\n\n this._handleOnChange(lower, upper, e);\n }\n\n @action\n _determineThumbMovement(newVal: number, e: Event): void {\n // Determine thumb movement based on slider interaction\n if (!this.isValid) {\n // Non-standard positioning follows\n this._determineInvalidThumbMovement(\n newVal,\n this.lowerValue,\n this.upperValue,\n e\n );\n } else {\n // Standard positioning based on click event proximity to thumb locations\n this._determineValidThumbMovement(\n newVal,\n this.lowerValue,\n this.upperValue,\n e\n );\n }\n }\n\n @action\n _handleOnChange(lower: ValueMember, upper: ValueMember, e: Event): void {\n const isValid =\n isWithinRange(this.min, upper, lower) &&\n isWithinRange(lower, this.max, upper);\n\n this.args.onChange([lower, upper], isValid, e);\n }\n\n @action\n handleSliderChange(e: Event): void {\n this._determineThumbMovement(\n Number((e.currentTarget as HTMLInputElement).value),\n e\n );\n }\n\n @action\n _resetToRangeEnds(e: KeyboardEvent): void {\n // Arbitrary decision to pass `min` instead of `max`. Result is the same.\n this._determineInvalidThumbMovement(\n this.min,\n this.lowerValue,\n this.upperValue,\n e\n );\n }\n\n @action\n _isDirectionalKeyPress(event: KeyboardEvent): boolean {\n return (\n [\n keys.ARROW_UP,\n keys.ARROW_RIGHT,\n keys.ARROW_DOWN,\n keys.ARROW_LEFT\n ].indexOf(event.key as keys) > -1\n );\n }\n\n @action\n handleInputKeyDown(e: KeyboardEvent): void {\n // Relevant only when initial values are both `''` and `showInput` is set\n if (this._isDirectionalKeyPress(e) && !this.isValid) {\n e.preventDefault();\n this._resetToRangeEnds(e);\n }\n }\n\n @action\n handleLowerInputChange(e: Event): void {\n this._handleOnChange(\n (e.target as HTMLInputElement).value,\n this.upperValue,\n e\n );\n }\n\n @action\n handleUpperInputChange(e: Event): void {\n this._handleOnChange(\n this.lowerValue,\n (e.target as HTMLInputElement).value,\n e\n );\n }\n\n @action\n _handleKeyDown(value: ValueMember, event: KeyboardEvent): number {\n let newVal = Number(value);\n let stepRemainder = 0;\n const step = this.args.step || 1;\n\n switch (event.key) {\n case keys.ARROW_UP:\n case keys.ARROW_RIGHT:\n event.preventDefault();\n newVal += step;\n stepRemainder = (newVal - this.min) % step;\n\n if (step !== 1 && stepRemainder > 0) {\n newVal = newVal - stepRemainder;\n }\n\n break;\n case keys.ARROW_DOWN:\n case keys.ARROW_LEFT:\n event.preventDefault();\n newVal -= step;\n stepRemainder = (newVal - this.min) % step;\n\n if (step !== 1 && stepRemainder > 0) {\n newVal = newVal + (step - stepRemainder);\n }\n\n break;\n }\n\n return newVal;\n }\n\n @action\n handleLowerKeyDown(event: KeyboardEvent): void {\n let lower = this.lowerValue;\n\n switch (event.key) {\n case keys.TAB:\n return;\n default:\n if (!this.lowerValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event.preventDefault();\n this._resetToRangeEnds(event);\n\n return;\n }\n\n lower = this._handleKeyDown(lower, event);\n }\n\n if (lower >= (this.upperValue as number) || lower < this.min) return;\n this._handleOnChange(lower, this.upperValue, event);\n }\n\n @action\n handleUpperKeyDown(event: KeyboardEvent): void {\n let upper = this.upperValue;\n\n switch (event.key) {\n case keys.TAB:\n return;\n default:\n if (!this.upperValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event.preventDefault();\n this._resetToRangeEnds(event);\n\n return;\n }\n\n upper = this._handleKeyDown(upper, event);\n }\n\n if (upper <= (this.lowerValue as number) || upper > this.max) return;\n this._handleOnChange(this.lowerValue, upper, event);\n }\n\n @action\n calculateThumbPositionStyle(value: number, width?: number): { left: string } {\n // Calculate the left position based on value\n const decimal = (value - this.min) / (this.max - this.min);\n // Must be between 0-100%\n let valuePosition = decimal <= 1 ? decimal : 1;\n\n valuePosition = valuePosition >= 0 ? valuePosition : 0;\n\n const trackWidth =\n this.args.showInput === 'inputWithPopover' && !!width\n ? width\n : this.rangeSliderRef?.clientWidth;\n\n let thumbToTrackRatio = 0;\n\n if (trackWidth) {\n thumbToTrackRatio = EUI_THUMB_SIZE / trackWidth;\n } else {\n thumbToTrackRatio = EUI_THUMB_SIZE / 1;\n }\n\n const trackPositionScale = (1 - thumbToTrackRatio) * 100;\n\n return { left: `${valuePosition * trackPositionScale}%` };\n }\n\n @action\n setPreventPopoverClose(value: boolean): void {\n this.preventPopoverClose = value;\n }\n\n get calculateLowerValueThumbPositionStyle(): { left: string } {\n return this.calculateThumbPositionStyle(\n Number(this.lowerValue) || this.min,\n this.rangeWidth\n );\n }\n\n get calculateUpperValueThumbPositionStyle(): { left: string } {\n return this.calculateThumbPositionStyle(\n Number(this.upperValue) || this.max,\n this.rangeWidth\n );\n }\n\n @action\n toggleHasFocus(): void {\n this.hasFocus = !this.hasFocus;\n }\n\n @action\n onThumbFocus(e: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.hasFocus = true;\n }\n\n @action\n onThumbBlur(e: FocusEvent): void {\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.hasFocus = false;\n }\n\n @action\n onInputFocus(e: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.preventPopoverClose = true;\n this.isPopoverOpen = true;\n }\n\n @action\n onInputBlur(e: FocusEvent): void {\n later(\n this,\n () => {\n // Safari does not recognize any focus-related eventing for input[type=range]\n // making it impossible to capture its state using active/focus/relatedTarget\n // Instead, a prevention flag is set on mousedown, with a waiting period here.\n // Mousedown is viable because in the popover case, it is inaccessible via keyboard (intentionally)\n if (this.preventPopoverClose) {\n this.preventPopoverClose = false;\n\n return;\n }\n\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.closePopover();\n },\n 200\n );\n }\n\n @action\n closePopover(): void {\n this.preventPopoverClose = false;\n this.isPopoverOpen = false;\n }\n\n @action\n onResize(width?: number): void {\n this.rangeWidth = width;\n }\n\n get digitTolerance(): number {\n return Math.max(String(this.min).length, String(this.max).length);\n }\n\n get showInputOnly(): boolean {\n return this.showInput === 'inputWithPopover';\n }\n\n get canShowDropdown(): boolean {\n return this.showInputOnly && !this.args.readOnly && !this.args.disabled;\n }\n\n <template>\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (and (not (argOrDefault @isFakeMaxBlock false)) (has-block \"max\"))\n (and (not (argOrDefault @isFakeMinBlock false)) (has-block \"min\"))\n as |hasPrepend hasAppend hasMaxBlock hasMinBlock|\n }}\n {{#if this.showInputOnly}}\n <EuiInputPopover\n class=\"euiRange__popover\"\n @fullWidth={{this.fullWidth}}\n @isOpen={{this.isPopoverOpen}}\n @closePopover={{this.closePopover}}\n @disableFocusTrap={{true}}\n @onPanelResize={{this.onResize}}\n >\n <:input>\n <EuiFormControlLayoutDelimited\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses to=\"prepend\"}}\n </:prepend>\n <:startControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleLowerInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:startControl>\n <:endControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleUpperInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:endControl>\n <:append as |appendClasses|>\n {{yield appendClasses to=\"append\"}}\n </:append>\n </EuiFormControlLayoutDelimited>\n </:input>\n <:content>\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n </EuiRangeWrapper>\n </:content>\n </EuiInputPopover>\n {{else}}\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showInput}}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleLowerInputChange}}\n />\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{/if}}\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{!@glint-expect-error}}\n {{on \"click\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{on \"keydown\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if this.showInput}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{! maxinput }}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @controlOnly={{this.showInputOnly}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleUpperInputChange}}\n />\n {{/if}}\n </EuiRangeWrapper>\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiDualRangeComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","args","id","guidFor","preventPopoverClose","rangeSliderRef","didInsertRangeSlider","ref","rangeSliderRefAvailable","rangeWidth","clientWidth","undefined","isVisible","n","action","lowerValue","value","min","upperValue","max","lowerValueIsValid","isWithinRange","upperValueIsValid","isValid","_determineInvalidThumbMovement","newVal","lower","upper","e","lowerHalf","Math","abs","newValIsLow","_handleOnChange","_determineValidThumbMovement","_determineThumbMovement","onChange","handleSliderChange","Number","currentTarget","_resetToRangeEnds","_isDirectionalKeyPress","event","keys","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","ARROW_LEFT","indexOf","key","handleInputKeyDown","preventDefault","handleLowerInputChange","target","handleUpperInputChange","_handleKeyDown","stepRemainder","step","handleLowerKeyDown","TAB","handleUpperKeyDown","calculateThumbPositionStyle","width","decimal","valuePosition","trackWidth","showInput","thumbToTrackRatio","EUI_THUMB_SIZE","trackPositionScale","left","setPreventPopoverClose","calculateLowerValueThumbPositionStyle","calculateUpperValueThumbPositionStyle","toggleHasFocus","hasFocus","onThumbFocus","onFocus","onThumbBlur","onBlur","onInputFocus","isPopoverOpen","onInputBlur","later","closePopover","onResize","digitTolerance","String","length","showInputOnly","canShowDropdown","readOnly","disabled","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","not","EuiInputPopover","EuiFormControlLayoutDelimited","or","EuiRangeInput","castTo","on","fn","onKey","optional","EuiRangeWrapper","EuiRangeLabel","EuiRangeTrack","eq","EuiRangeHighlight","EuiRangeSlider","didInsert","EuiRangeThumb","simpleStyle"],"mappings":"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"}
diff --git a/dist/components/eui-field-number.js b/dist/components/eui-field-number.js
index 11bfc51f8bdc0b0b61d44cf8998d28d5d33facd5..326e46d1ee11820bcd95994c3d1d72300a6808e1 100644
--- a/dist/components/eui-field-number.js
+++ b/dist/components/eui-field-number.js
@@ -1,5 +1,5 @@
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import { or, and } from 'ember-truth-helpers';
import randomId from '../-private/random-id.js';
import argOrDefault from '../helpers/arg-or-default.js';
diff --git a/dist/components/eui-field-number.js.map b/dist/components/eui-field-number.js.map
index 1557867f2c1659995c733e58b6809cf6a295c507..a8eeec85fff8af9b0d70a0c068bfb3dcb4d310b6 100644
--- a/dist/components/eui-field-number.js.map
+++ b/dist/components/eui-field-number.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-field-number.js","sources":["../../src/components/eui-field-number.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { and, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\n\nimport type { CommonArgs } from './common.ts';\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { IconType } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport type EuiFieldNumberArgs = CommonArgs & {\n id?: string;\n icon?: IconType;\n isInvalid?: boolean;\n fullWidth?: boolean;\n isLoading?: boolean;\n readOnly?: boolean;\n min?: number | string;\n max?: number | string;\n value?: number | string;\n disabled?: boolean;\n\n /**\n * Specifies the granularity that the value must adhere to.\n * Accepts a `number` or the string `'any'` for no stepping to allow for any value.\n * Defaults to `1`\n */\n step?: number | 'any';\n inputRef?: (ele: Element) => void;\n\n /**\n * Creates an input group with element(s) coming before input.\n * `string` | `Component` or an array of these\n */\n prepend?: EuiFormControlLayoutSignature['Blocks']['prepend'];\n\n /**\n * Creates an input group with element(s) coming after input.\n * `string` | `Component` or an array of these\n */\n append?: EuiFormControlLayoutSignature['Blocks']['append'];\n\n /**\n * Completely removes form control layout wrapper and ignores\n * icon, prepend, and append. Best used inside EuiFormControlLayoutDelimited.\n */\n controlOnly?: boolean;\n\n /**\n * when `true` creates a shorter height input\n */\n compressed?: boolean;\n\n isPrependProvided?: boolean;\n isAppendProvided?: boolean;\n\n clear?: EuiFormControlLayoutSignature['Args']['clear'];\n};\n\nexport interface EuiFieldNumberSignature {\n Element: HTMLInputElement;\n Args: EuiFieldNumberArgs;\n Blocks: {\n default: [string];\n prepend: [string];\n append: [string];\n };\n}\n\nconst EuiFieldNumber: TemplateOnlyComponent<EuiFieldNumberSignature> =\n <template>\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |hasPrepend hasAppend inputId|\n }}\n {{#let\n (classNames\n (if @icon \"euiFieldNumber--withIcon\")\n (if @fullWidth \"euiFieldNumber--fullWidth\")\n (if @compressed \"euiFieldNumber--compressed\")\n (if (or hasPrepend hasAppend) \"euiFieldNumber--inGroup\")\n (if @isLoading \"euiFieldNumber--isLoading\")\n \"euiFieldNumber\"\n )\n as |classes|\n }}\n {{#if @controlOnly}}\n <input\n id={{@id}}\n class={{classes}}\n value={{@value}}\n min={{@min}}\n max={{@max}}\n disabled={{@disabled}}\n step={{@step}}\n type=\"number\"\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n />\n {{else}}\n <EuiFormControlLayout\n @icon={{@icon}}\n @clear={{@clear}}\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses to=\"prepend\"}}\n </:prepend>\n <:field>\n <input\n id={{inputId}}\n class={{classes}}\n value={{@value}}\n min={{@min}}\n max={{@max}}\n disabled={{@disabled}}\n step={{@step}}\n type=\"number\"\n {{validatableControl @isInvalid}}\n ...attributes\n />\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses to=\"append\"}}\n </:append>\n </EuiFormControlLayout>\n {{/if}}\n {{/let}}\n {{/let}}\n </template>;\n\nexport default EuiFieldNumber;\n"],"names":["EuiFieldNumber","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","randomId","classNames","or","validatableControl","didInsert","optional","EuiFormControlLayout","templateOnly"],"mappings":";;;;;;;;;;;;AA2EA,MAAMA,cACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAmEA,qkDAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-field-number.js","sources":["../../src/components/eui-field-number.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { and, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\n\nimport type { CommonArgs } from './common.ts';\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { IconType } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport type EuiFieldNumberArgs = CommonArgs & {\n id?: string;\n icon?: IconType;\n isInvalid?: boolean;\n fullWidth?: boolean;\n isLoading?: boolean;\n readOnly?: boolean;\n min?: number | string;\n max?: number | string;\n value?: number | string;\n disabled?: boolean;\n\n /**\n * Specifies the granularity that the value must adhere to.\n * Accepts a `number` or the string `'any'` for no stepping to allow for any value.\n * Defaults to `1`\n */\n step?: number | 'any';\n inputRef?: (ele: Element) => void;\n\n /**\n * Creates an input group with element(s) coming before input.\n * `string` | `Component` or an array of these\n */\n prepend?: EuiFormControlLayoutSignature['Blocks']['prepend'];\n\n /**\n * Creates an input group with element(s) coming after input.\n * `string` | `Component` or an array of these\n */\n append?: EuiFormControlLayoutSignature['Blocks']['append'];\n\n /**\n * Completely removes form control layout wrapper and ignores\n * icon, prepend, and append. Best used inside EuiFormControlLayoutDelimited.\n */\n controlOnly?: boolean;\n\n /**\n * when `true` creates a shorter height input\n */\n compressed?: boolean;\n\n isPrependProvided?: boolean;\n isAppendProvided?: boolean;\n\n clear?: EuiFormControlLayoutSignature['Args']['clear'];\n};\n\nexport interface EuiFieldNumberSignature {\n Element: HTMLInputElement;\n Args: EuiFieldNumberArgs;\n Blocks: {\n default: [string];\n prepend: [string];\n append: [string];\n };\n}\n\nconst EuiFieldNumber: TemplateOnlyComponent<EuiFieldNumberSignature> =\n <template>\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |hasPrepend hasAppend inputId|\n }}\n {{#let\n (classNames\n (if @icon \"euiFieldNumber--withIcon\")\n (if @fullWidth \"euiFieldNumber--fullWidth\")\n (if @compressed \"euiFieldNumber--compressed\")\n (if (or hasPrepend hasAppend) \"euiFieldNumber--inGroup\")\n (if @isLoading \"euiFieldNumber--isLoading\")\n \"euiFieldNumber\"\n )\n as |classes|\n }}\n {{#if @controlOnly}}\n <input\n id={{@id}}\n class={{classes}}\n value={{@value}}\n min={{@min}}\n max={{@max}}\n disabled={{@disabled}}\n step={{@step}}\n type=\"number\"\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n />\n {{else}}\n <EuiFormControlLayout\n @icon={{@icon}}\n @clear={{@clear}}\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses to=\"prepend\"}}\n </:prepend>\n <:field>\n <input\n id={{inputId}}\n class={{classes}}\n value={{@value}}\n min={{@min}}\n max={{@max}}\n disabled={{@disabled}}\n step={{@step}}\n type=\"number\"\n {{validatableControl @isInvalid}}\n ...attributes\n />\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses to=\"append\"}}\n </:append>\n </EuiFormControlLayout>\n {{/if}}\n {{/let}}\n {{/let}}\n </template>;\n\nexport default EuiFieldNumber;\n"],"names":["EuiFieldNumber","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","randomId","classNames","or","validatableControl","didInsert","optional","EuiFormControlLayout","templateOnly"],"mappings":";;;;;;;;;;;;AA2EA,MAAMA,cACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAmEA,qkDAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-field-password.js b/dist/components/eui-field-password.js
index 42175960ffdc50db4d1a4fa3466c625fc467e4a0..cd196465c3bfbce77bb2fe475409e9a9494ab09b 100644
--- a/dist/components/eui-field-password.js
+++ b/dist/components/eui-field-password.js
@@ -1,7 +1,7 @@
import { fn } from '@ember/helper';
import { on } from '@ember/modifier';
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import { or, eq, not, and } from 'ember-truth-helpers';
import randomId from '../-private/random-id.js';
import argOrDefault from '../helpers/arg-or-default.js';
diff --git a/dist/components/eui-field-password.js.map b/dist/components/eui-field-password.js.map
index f755752a27344e8523d71c0320bf3c0fa029e90e..dac8b26cbe7578bad7d13e31672aef378e3dad5d 100644
--- a/dist/components/eui-field-password.js.map
+++ b/dist/components/eui-field-password.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-field-password.js","sources":["../../src/components/eui-field-password.gts"],"sourcesContent":["import { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport useState from '../helpers/use-state.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiFieldPasswordSignature {\n Element: HTMLInputElement;\n Args: {\n value?: string;\n id?: string;\n type?: 'dual' | 'text' | 'password';\n fullWidth?: boolean;\n compressed?: boolean;\n isLoading?: boolean;\n readOnly?: boolean;\n disabled?: boolean;\n isInvalid?: boolean;\n clear?: EuiFormControlLayoutSignature['Args']['clear'];\n inputRef?: (element: HTMLInputElement) => void;\n isFakePrependBlock?: boolean;\n isFakeAppendBlock?: boolean;\n placeholder?: string;\n };\n Blocks: {\n prepend: [unknown, string];\n append: [unknown, string];\n };\n}\n\nconst EuiFieldPassword: TemplateOnlyComponent<EuiFieldPasswordSignature> =\n <template>\n {{#let\n (argOrDefault @type \"dual\")\n (and (not (argOrDefault @isFakePrependBlock false)) (has-block \"prepend\"))\n (and (not (argOrDefault @isFakeAppendBlock false)) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |type hasPrepend hasAppend inputId|\n }}\n {{#let\n (useState (if (eq type \"dual\") \"password\" type))\n as |inputTypeState|\n }}\n {{#let\n (classNames\n (if @fullWidth \"euiFieldPassword--fullWidth\")\n (if @compressed \"euiFieldPassword--compressed\")\n (if\n (or hasPrepend hasAppend (eq type \"dual\"))\n \"euiFieldPassword--inGroup\"\n )\n (if @isLoading \"euiFieldPassword--isLoading\")\n (if (eq type \"dual\") \"euiFieldPassword--withToggle\")\n \"euiFieldPassword\"\n )\n as |classes|\n }}\n {{#let (eq inputTypeState.value \"text\") as |isVisible|}}\n <EuiFormControlLayout\n @icon=\"lock\"\n @clear={{@clear}}\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend (or hasAppend (eq type \"dual\"))}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses inputId to=\"prepend\"}}\n </:prepend>\n <:field>\n <input\n id={{inputId}}\n class={{classes}}\n type={{inputTypeState.value}}\n value={{@value}}\n disabled={{@disabled}}\n placeholder={{@placeholder}}\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n />\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses inputId to=\"append\"}}\n {{#if (eq type \"dual\")}}\n <EuiButtonIcon\n tabindex=\"-1\"\n @iconType={{if isVisible \"eyeClosed\" \"eye\"}}\n {{on\n \"click\"\n (fn\n inputTypeState.setState (if isVisible \"password\" \"text\")\n )\n }}\n />\n {{/if}}\n </:append>\n </EuiFormControlLayout>\n {{/let}}\n {{/let}}\n {{/let}}\n {{/let}}\n </template>;\n\nexport default EuiFieldPassword;\n"],"names":["EuiFieldPassword","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","and","not","randomId","useState","eq","classNames","or","EuiFormControlLayout","validatableControl","didInsert","optional","EuiButtonIcon","on","fn","templateOnly"],"mappings":";;;;;;;;;;;;;;;;AA0CA,MAAMA,gBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAyEA,s6DAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,YAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,EAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,oBAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;IAAAC,aAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-field-password.js","sources":["../../src/components/eui-field-password.gts"],"sourcesContent":["import { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport useState from '../helpers/use-state.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiFieldPasswordSignature {\n Element: HTMLInputElement;\n Args: {\n value?: string;\n id?: string;\n type?: 'dual' | 'text' | 'password';\n fullWidth?: boolean;\n compressed?: boolean;\n isLoading?: boolean;\n readOnly?: boolean;\n disabled?: boolean;\n isInvalid?: boolean;\n clear?: EuiFormControlLayoutSignature['Args']['clear'];\n inputRef?: (element: HTMLInputElement) => void;\n isFakePrependBlock?: boolean;\n isFakeAppendBlock?: boolean;\n placeholder?: string;\n };\n Blocks: {\n prepend: [unknown, string];\n append: [unknown, string];\n };\n}\n\nconst EuiFieldPassword: TemplateOnlyComponent<EuiFieldPasswordSignature> =\n <template>\n {{#let\n (argOrDefault @type \"dual\")\n (and (not (argOrDefault @isFakePrependBlock false)) (has-block \"prepend\"))\n (and (not (argOrDefault @isFakeAppendBlock false)) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |type hasPrepend hasAppend inputId|\n }}\n {{#let\n (useState (if (eq type \"dual\") \"password\" type))\n as |inputTypeState|\n }}\n {{#let\n (classNames\n (if @fullWidth \"euiFieldPassword--fullWidth\")\n (if @compressed \"euiFieldPassword--compressed\")\n (if\n (or hasPrepend hasAppend (eq type \"dual\"))\n \"euiFieldPassword--inGroup\"\n )\n (if @isLoading \"euiFieldPassword--isLoading\")\n (if (eq type \"dual\") \"euiFieldPassword--withToggle\")\n \"euiFieldPassword\"\n )\n as |classes|\n }}\n {{#let (eq inputTypeState.value \"text\") as |isVisible|}}\n <EuiFormControlLayout\n @icon=\"lock\"\n @clear={{@clear}}\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend (or hasAppend (eq type \"dual\"))}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses inputId to=\"prepend\"}}\n </:prepend>\n <:field>\n <input\n id={{inputId}}\n class={{classes}}\n type={{inputTypeState.value}}\n value={{@value}}\n disabled={{@disabled}}\n placeholder={{@placeholder}}\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n />\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses inputId to=\"append\"}}\n {{#if (eq type \"dual\")}}\n <EuiButtonIcon\n tabindex=\"-1\"\n @iconType={{if isVisible \"eyeClosed\" \"eye\"}}\n {{on\n \"click\"\n (fn\n inputTypeState.setState (if isVisible \"password\" \"text\")\n )\n }}\n />\n {{/if}}\n </:append>\n </EuiFormControlLayout>\n {{/let}}\n {{/let}}\n {{/let}}\n {{/let}}\n </template>;\n\nexport default EuiFieldPassword;\n"],"names":["EuiFieldPassword","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","and","not","randomId","useState","eq","classNames","or","EuiFormControlLayout","validatableControl","didInsert","optional","EuiButtonIcon","on","fn","templateOnly"],"mappings":";;;;;;;;;;;;;;;;AA0CA,MAAMA,gBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAyEA,s6DAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,YAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,EAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,oBAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;IAAAC,aAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-field-text.js b/dist/components/eui-field-text.js
index 6218d8dd035bc39a99c3024643d21f89a0ae2752..90bf3b7072d35ceb3e2bd1595576e15ea22b0414 100644
--- a/dist/components/eui-field-text.js
+++ b/dist/components/eui-field-text.js
@@ -1,5 +1,5 @@
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import { or, not, and } from 'ember-truth-helpers';
import randomId from '../-private/random-id.js';
import argOrDefault from '../helpers/arg-or-default.js';
diff --git a/dist/components/eui-field-text.js.map b/dist/components/eui-field-text.js.map
index 9c8488ae260bcd38527d7eee40cb93657dfefc00..2b0d4f928f25b64c639d2a4de0db62b73d530435 100644
--- a/dist/components/eui-field-text.js.map
+++ b/dist/components/eui-field-text.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-field-text.js","sources":["../../src/components/eui-field-text.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiFieldTextSignature {\n Element: HTMLInputElement;\n Args: {\n id?: string;\n value?: string;\n placeholder?: string;\n icon?: EuiFormControlLayoutSignature['Args']['icon'];\n fullWidth?: boolean;\n isLoading?: boolean;\n compressed?: boolean;\n readOnly?: boolean;\n disabled?: boolean;\n clear?: () => void;\n controlOnly?: boolean;\n isInvalid?: boolean;\n inputRef?: (element: HTMLInputElement | null) => void;\n isFakePrependBlock?: boolean;\n isFakeAppendBlock?: boolean;\n };\n Blocks: {\n prepend: [...EuiFormControlLayoutSignature['Blocks']['prepend'], string];\n append: [...EuiFormControlLayoutSignature['Blocks']['append'], string];\n };\n}\n\nconst EuiFieldText: TemplateOnlyComponent<EuiFieldTextSignature> = <template>\n {{#let\n (and (not (argOrDefault @isFakePrependBlock false)) (has-block \"prepend\"))\n (and (not (argOrDefault @isFakeAppendBlock false)) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |hasPrepend hasAppend inputId|\n }}\n {{#let\n (classNames\n (if @icon \"euiFieldText--withIcon\")\n (if @fullWidth \"euiFieldText--fullWidth\")\n (if @compressed \"euiFieldText--compressed\")\n (if (or hasPrepend hasAppend) \"euiFieldText--inGroup\")\n (if @isLoading \"euiFieldText--isLoading\")\n \"euiFieldText\"\n )\n as |classes|\n }}\n {{#if @controlOnly}}\n <input\n id={{inputId}}\n value={{@value}}\n class={{classes}}\n disabled={{@disabled}}\n type=\"text\"\n placeholder={{@placeholder}}\n ...attributes\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n />\n {{else}}\n <EuiFormControlLayout\n @icon={{@icon}}\n @clear={{@clear}}\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses inputId to=\"prepend\"}}\n </:prepend>\n <:field>\n <input\n id={{inputId}}\n value={{@value}}\n class={{classes}}\n disabled={{@disabled}}\n type=\"text\"\n placeholder={{@placeholder}}\n readonly={{@readOnly}}\n ...attributes\n {{validatableControl @isInvalid}}\n />\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses inputId to=\"append\"}}\n </:append>\n </EuiFormControlLayout>\n {{/if}}\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiFieldText;\n"],"names":["EuiFieldText","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","validatableControl","didInsert","optional","EuiFormControlLayout","templateOnly"],"mappings":";;;;;;;;;;;;AAuCA,MAAMA,YAA6D,GAAAC,oBAAA,CAAAC,kBAAA,CAgEnE,gjDAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-field-text.js","sources":["../../src/components/eui-field-text.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiFieldTextSignature {\n Element: HTMLInputElement;\n Args: {\n id?: string;\n value?: string;\n placeholder?: string;\n icon?: EuiFormControlLayoutSignature['Args']['icon'];\n fullWidth?: boolean;\n isLoading?: boolean;\n compressed?: boolean;\n readOnly?: boolean;\n disabled?: boolean;\n clear?: () => void;\n controlOnly?: boolean;\n isInvalid?: boolean;\n inputRef?: (element: HTMLInputElement | null) => void;\n isFakePrependBlock?: boolean;\n isFakeAppendBlock?: boolean;\n };\n Blocks: {\n prepend: [...EuiFormControlLayoutSignature['Blocks']['prepend'], string];\n append: [...EuiFormControlLayoutSignature['Blocks']['append'], string];\n };\n}\n\nconst EuiFieldText: TemplateOnlyComponent<EuiFieldTextSignature> = <template>\n {{#let\n (and (not (argOrDefault @isFakePrependBlock false)) (has-block \"prepend\"))\n (and (not (argOrDefault @isFakeAppendBlock false)) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |hasPrepend hasAppend inputId|\n }}\n {{#let\n (classNames\n (if @icon \"euiFieldText--withIcon\")\n (if @fullWidth \"euiFieldText--fullWidth\")\n (if @compressed \"euiFieldText--compressed\")\n (if (or hasPrepend hasAppend) \"euiFieldText--inGroup\")\n (if @isLoading \"euiFieldText--isLoading\")\n \"euiFieldText\"\n )\n as |classes|\n }}\n {{#if @controlOnly}}\n <input\n id={{inputId}}\n value={{@value}}\n class={{classes}}\n disabled={{@disabled}}\n type=\"text\"\n placeholder={{@placeholder}}\n ...attributes\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n />\n {{else}}\n <EuiFormControlLayout\n @icon={{@icon}}\n @clear={{@clear}}\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses inputId to=\"prepend\"}}\n </:prepend>\n <:field>\n <input\n id={{inputId}}\n value={{@value}}\n class={{classes}}\n disabled={{@disabled}}\n type=\"text\"\n placeholder={{@placeholder}}\n readonly={{@readOnly}}\n ...attributes\n {{validatableControl @isInvalid}}\n />\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses inputId to=\"append\"}}\n </:append>\n </EuiFormControlLayout>\n {{/if}}\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiFieldText;\n"],"names":["EuiFieldText","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","validatableControl","didInsert","optional","EuiFormControlLayout","templateOnly"],"mappings":";;;;;;;;;;;;AAuCA,MAAMA,YAA6D,GAAAC,oBAAA,CAAAC,kBAAA,CAgEnE,gjDAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-global-toast-list.js b/dist/components/eui-global-toast-list.js
index 067db2d3db3fd5765c8f73fac84b586c224682cf..2459744449386d00e90709ad0bf906d7aa06b219 100644
--- a/dist/components/eui-global-toast-list.js
+++ b/dist/components/eui-global-toast-list.js
@@ -5,8 +5,8 @@ import { on } from '@ember/modifier';
import { action } from '@ember/object';
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
import { inject } from '@ember/service';
-import optional from 'ember-composable-helpers/helpers/optional';
-import queue from 'ember-composable-helpers/helpers/queue';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
+import queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';
import argOrDefault from '../helpers/arg-or-default.js';
import classNames from '../helpers/class-names.js';
import Timer from '../utils/timer.js';
diff --git a/dist/components/eui-global-toast-list.js.map b/dist/components/eui-global-toast-list.js.map
index f3a9f059900af703fe45a8628c92d7327edb4651..14718fa6e194518f5cbdb892126591662e2c7047 100644
--- a/dist/components/eui-global-toast-list.js.map
+++ b/dist/components/eui-global-toast-list.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-global-toast-list.js","sources":["../../src/components/eui-global-toast-list.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { get } from '@ember/helper';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { inject as service } from '@ember/service';\nimport type Owner from '@ember/owner';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport queue from 'ember-composable-helpers/helpers/queue';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport Timer from '../utils/timer.ts';\nimport EuiToast from './eui-toast.gts';\n\nimport type EuiToasterService from '../services/eui-toaster';\nimport type {\n EuiToastProps,\n EuiToastPropsWithId\n} from '../services/eui-toaster';\nimport type { sideMapping } from '../utils/css-mappings/eui-global-toast-list.ts';\n\ntype EuiToastSide = keyof typeof sideMapping;\n\ntype GlobalToastListArgs = {\n dismissToast?: (this: EuiGlobalToastList, toast: EuiToastProps) => void;\n toastLifeTimeMs: number;\n\n /*\n Determines which side of the browser window the toasts should appear\n Default: 'right'\n\n */\n side?: EuiToastSide;\n};\n\nconst TOAST_FADE_OUT_MS = 250;\n\nexport interface EuiGlobalToastListItemSignature {\n Element: HTMLDivElement;\n Args: GlobalToastListArgs;\n}\n\nexport default class EuiGlobalToastList extends Component<EuiGlobalToastListItemSignature> {\n @service declare euiToaster: EuiToasterService;\n\n dismissTimeoutIds: number[] = [];\n toastIdToTimerMap: { [toastId: string]: Timer } = {};\n\n isScrollingToBottom = false;\n isScrolledToBottom = true;\n isUserInteracting = false;\n\n // See [Return Value](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame#Return_value)\n // for information on initial value of 0\n isScrollingAnimationFrame = 0;\n startScrollingAnimationFrame = 0;\n\n listElement: Element | null = null;\n @tracked toastIdToDismissedMap: {\n [toastId: string]: boolean;\n } = {};\n\n startScrollingToBottom(): void {\n this.isScrollingToBottom = true;\n\n const scrollToBottom = () => {\n // Although we cancel the requestAnimationFrame in componentWillUnmount,\n // it's possible for this.listElement to become null in the meantime\n if (!this.listElement) {\n return;\n }\n\n const position = this.listElement.scrollTop;\n const destination =\n this.listElement.scrollHeight - this.listElement.clientHeight;\n const distanceToDestination = destination - position;\n\n if (distanceToDestination < 5) {\n this.listElement.scrollTop = destination;\n this.isScrollingToBottom = false;\n this.isScrolledToBottom = true;\n\n return;\n }\n\n this.listElement.scrollTop = position + distanceToDestination * 0.25;\n\n if (this.isScrollingToBottom) {\n this.isScrollingAnimationFrame =\n window.requestAnimationFrame(scrollToBottom);\n }\n };\n\n this.startScrollingAnimationFrame =\n window.requestAnimationFrame(scrollToBottom);\n }\n\n @action\n didInsertToast(toast: EuiToastPropsWithId): void {\n this.scheduleToastForDismissal(toast);\n\n if (!this.isUserInteracting) {\n // If the user has scrolled up the toast list then we don't want to annoy them by scrolling\n // all the way back to the bottom.\n if (this.isScrolledToBottom) {\n this.startScrollingToBottom();\n }\n }\n }\n\n @action\n onMouseEnter(): void {\n // Stop scrolling to bottom if we're in mid-scroll, because the user wants to interact with\n // the list.\n this.isScrollingToBottom = false;\n this.isUserInteracting = true;\n\n // Don't let toasts dismiss themselves while the user is interacting with them.\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.pause();\n }\n }\n }\n\n @action\n onMouseLeave(): void {\n this.isUserInteracting = false;\n\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.resume();\n }\n }\n }\n\n @action\n onScroll(): void {\n if (this.listElement) {\n this.isScrolledToBottom =\n this.listElement.scrollHeight - this.listElement.scrollTop ===\n this.listElement.clientHeight;\n }\n }\n\n scheduleAllToastsForDismissal(): void {\n this.euiToaster.toasts.forEach((toast) => {\n if (!this.toastIdToTimerMap[toast.id]) {\n this.scheduleToastForDismissal(toast);\n }\n });\n }\n\n @action\n scheduleToastForDismissal(toast: EuiToastPropsWithId): void {\n // Start fading the toast out once its lifetime elapses.\n this.toastIdToTimerMap[toast.id] = new Timer(\n this.dismissToast.bind(this, toast),\n toast.toastLifeTimeMs != null\n ? toast.toastLifeTimeMs\n : this.args.toastLifeTimeMs\n );\n }\n\n @action\n dismissToast(toast: EuiToastPropsWithId): void {\n // Remove the toast after it's done fading out.\n this.dismissTimeoutIds.push(\n window.setTimeout(() => {\n // Because this is wrapped in a setTimeout, and because React does not guarantee when\n // state updates happen, it is possible to double-dismiss a toast\n // including by double-clicking the \"x\" button on the toast\n // so, first check to make sure we haven't already dismissed this toast\n if (this.toastIdToTimerMap.hasOwnProperty(toast.id)) {\n if (this.args.dismissToast) {\n this.args.dismissToast.apply(this, [toast]);\n }\n\n this.toastIdToTimerMap[toast.id]!.clear();\n delete this.toastIdToTimerMap[toast.id];\n\n delete this.toastIdToDismissedMap[toast.id];\n this.toastIdToDismissedMap = {\n ...this.toastIdToDismissedMap\n };\n this.euiToaster.remove(toast);\n }\n }, TOAST_FADE_OUT_MS)\n );\n\n this.toastIdToDismissedMap = {\n ...this.toastIdToDismissedMap,\n [toast.id]: true\n };\n }\n\n constructor(owner: Owner, args: GlobalToastListArgs) {\n super(owner, args);\n this.scheduleAllToastsForDismissal();\n }\n\n @action\n didInsert(element: Element): void {\n this.listElement = element;\n }\n\n willDestroy(): void {\n super.willDestroy();\n\n if (this.isScrollingAnimationFrame !== 0) {\n window.cancelAnimationFrame(this.isScrollingAnimationFrame);\n }\n\n if (this.startScrollingAnimationFrame !== 0) {\n window.cancelAnimationFrame(this.startScrollingAnimationFrame);\n }\n\n this.dismissTimeoutIds.forEach(clearTimeout);\n\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.clear();\n }\n }\n }\n\n <template>\n <div\n aria-live=\"polite\"\n role=\"region\"\n class={{classNames\n componentName=\"EuiGlobalToastList\"\n side=(argOrDefault @side \"right\")\n }}\n style={{unless this.euiToaster.toasts.length \"padding:0px;\"}}\n {{didInsert this.didInsert}}\n {{on \"scroll\" this.onScroll}}\n {{on \"mouseenter\" this.onMouseEnter}}\n {{on \"mouseleave\" this.onMouseLeave}}\n ...attributes\n >\n {{#each this.euiToaster.toasts as |toast|}}\n <EuiToast\n class={{classNames\n \"euiGlobalToastListItem\"\n (if\n (get this.toastIdToDismissedMap toast.id)\n \"euiGlobalToastListItem-isDismissed\"\n )\n }}\n @title={{toast.title}}\n @useMarkdownFormat={{toast.useMarkdownFormat}}\n @body={{toast.body}}\n @color={{toast.color}}\n @iconType={{toast.iconType}}\n @onClose={{queue\n (fn this.dismissToast toast)\n (optional toast.onClose)\n }}\n {{didInsert (fn this.didInsertToast toast)}}\n {{on \"focus\" this.onMouseEnter}}\n {{on \"blur\" this.onMouseLeave}}\n />\n {{/each}}\n </div>\n </template>\n}\n"],"names":["TOAST_FADE_OUT_MS","EuiGlobalToastList","Component","g","prototype","service","i","void 0","dismissTimeoutIds","toastIdToTimerMap","isScrollingToBottom","isScrolledToBottom","isUserInteracting","isScrollingAnimationFrame","startScrollingAnimationFrame","listElement","tracked","startScrollingToBottom","scrollToBottom","position","scrollTop","destination","scrollHeight","clientHeight","distanceToDestination","window","requestAnimationFrame","didInsertToast","toast","scheduleToastForDismissal","n","action","onMouseEnter","toastId","hasOwnProperty","timer","pause","onMouseLeave","resume","onScroll","scheduleAllToastsForDismissal","euiToaster","toasts","forEach","id","Timer","dismissToast","bind","toastLifeTimeMs","args","push","setTimeout","apply","clear","toastIdToDismissedMap","remove","constructor","owner","didInsert","element","willDestroy","cancelAnimationFrame","clearTimeout","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","argOrDefault","on","EuiToast","get","queue","fn","optional"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"eui-global-toast-list.js","sources":["../../src/components/eui-global-toast-list.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { get } from '@ember/helper';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { inject as service } from '@ember/service';\nimport type Owner from '@ember/owner';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport Timer from '../utils/timer.ts';\nimport EuiToast from './eui-toast.gts';\n\nimport type EuiToasterService from '../services/eui-toaster';\nimport type {\n EuiToastProps,\n EuiToastPropsWithId\n} from '../services/eui-toaster';\nimport type { sideMapping } from '../utils/css-mappings/eui-global-toast-list.ts';\n\ntype EuiToastSide = keyof typeof sideMapping;\n\ntype GlobalToastListArgs = {\n dismissToast?: (this: EuiGlobalToastList, toast: EuiToastProps) => void;\n toastLifeTimeMs: number;\n\n /*\n Determines which side of the browser window the toasts should appear\n Default: 'right'\n\n */\n side?: EuiToastSide;\n};\n\nconst TOAST_FADE_OUT_MS = 250;\n\nexport interface EuiGlobalToastListItemSignature {\n Element: HTMLDivElement;\n Args: GlobalToastListArgs;\n}\n\nexport default class EuiGlobalToastList extends Component<EuiGlobalToastListItemSignature> {\n @service declare euiToaster: EuiToasterService;\n\n dismissTimeoutIds: number[] = [];\n toastIdToTimerMap: { [toastId: string]: Timer } = {};\n\n isScrollingToBottom = false;\n isScrolledToBottom = true;\n isUserInteracting = false;\n\n // See [Return Value](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame#Return_value)\n // for information on initial value of 0\n isScrollingAnimationFrame = 0;\n startScrollingAnimationFrame = 0;\n\n listElement: Element | null = null;\n @tracked toastIdToDismissedMap: {\n [toastId: string]: boolean;\n } = {};\n\n startScrollingToBottom(): void {\n this.isScrollingToBottom = true;\n\n const scrollToBottom = () => {\n // Although we cancel the requestAnimationFrame in componentWillUnmount,\n // it's possible for this.listElement to become null in the meantime\n if (!this.listElement) {\n return;\n }\n\n const position = this.listElement.scrollTop;\n const destination =\n this.listElement.scrollHeight - this.listElement.clientHeight;\n const distanceToDestination = destination - position;\n\n if (distanceToDestination < 5) {\n this.listElement.scrollTop = destination;\n this.isScrollingToBottom = false;\n this.isScrolledToBottom = true;\n\n return;\n }\n\n this.listElement.scrollTop = position + distanceToDestination * 0.25;\n\n if (this.isScrollingToBottom) {\n this.isScrollingAnimationFrame =\n window.requestAnimationFrame(scrollToBottom);\n }\n };\n\n this.startScrollingAnimationFrame =\n window.requestAnimationFrame(scrollToBottom);\n }\n\n @action\n didInsertToast(toast: EuiToastPropsWithId): void {\n this.scheduleToastForDismissal(toast);\n\n if (!this.isUserInteracting) {\n // If the user has scrolled up the toast list then we don't want to annoy them by scrolling\n // all the way back to the bottom.\n if (this.isScrolledToBottom) {\n this.startScrollingToBottom();\n }\n }\n }\n\n @action\n onMouseEnter(): void {\n // Stop scrolling to bottom if we're in mid-scroll, because the user wants to interact with\n // the list.\n this.isScrollingToBottom = false;\n this.isUserInteracting = true;\n\n // Don't let toasts dismiss themselves while the user is interacting with them.\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.pause();\n }\n }\n }\n\n @action\n onMouseLeave(): void {\n this.isUserInteracting = false;\n\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.resume();\n }\n }\n }\n\n @action\n onScroll(): void {\n if (this.listElement) {\n this.isScrolledToBottom =\n this.listElement.scrollHeight - this.listElement.scrollTop ===\n this.listElement.clientHeight;\n }\n }\n\n scheduleAllToastsForDismissal(): void {\n this.euiToaster.toasts.forEach((toast) => {\n if (!this.toastIdToTimerMap[toast.id]) {\n this.scheduleToastForDismissal(toast);\n }\n });\n }\n\n @action\n scheduleToastForDismissal(toast: EuiToastPropsWithId): void {\n // Start fading the toast out once its lifetime elapses.\n this.toastIdToTimerMap[toast.id] = new Timer(\n this.dismissToast.bind(this, toast),\n toast.toastLifeTimeMs != null\n ? toast.toastLifeTimeMs\n : this.args.toastLifeTimeMs\n );\n }\n\n @action\n dismissToast(toast: EuiToastPropsWithId): void {\n // Remove the toast after it's done fading out.\n this.dismissTimeoutIds.push(\n window.setTimeout(() => {\n // Because this is wrapped in a setTimeout, and because React does not guarantee when\n // state updates happen, it is possible to double-dismiss a toast\n // including by double-clicking the \"x\" button on the toast\n // so, first check to make sure we haven't already dismissed this toast\n if (this.toastIdToTimerMap.hasOwnProperty(toast.id)) {\n if (this.args.dismissToast) {\n this.args.dismissToast.apply(this, [toast]);\n }\n\n this.toastIdToTimerMap[toast.id]!.clear();\n delete this.toastIdToTimerMap[toast.id];\n\n delete this.toastIdToDismissedMap[toast.id];\n this.toastIdToDismissedMap = {\n ...this.toastIdToDismissedMap\n };\n this.euiToaster.remove(toast);\n }\n }, TOAST_FADE_OUT_MS)\n );\n\n this.toastIdToDismissedMap = {\n ...this.toastIdToDismissedMap,\n [toast.id]: true\n };\n }\n\n constructor(owner: Owner, args: GlobalToastListArgs) {\n super(owner, args);\n this.scheduleAllToastsForDismissal();\n }\n\n @action\n didInsert(element: Element): void {\n this.listElement = element;\n }\n\n willDestroy(): void {\n super.willDestroy();\n\n if (this.isScrollingAnimationFrame !== 0) {\n window.cancelAnimationFrame(this.isScrollingAnimationFrame);\n }\n\n if (this.startScrollingAnimationFrame !== 0) {\n window.cancelAnimationFrame(this.startScrollingAnimationFrame);\n }\n\n this.dismissTimeoutIds.forEach(clearTimeout);\n\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.clear();\n }\n }\n }\n\n <template>\n <div\n aria-live=\"polite\"\n role=\"region\"\n class={{classNames\n componentName=\"EuiGlobalToastList\"\n side=(argOrDefault @side \"right\")\n }}\n style={{unless this.euiToaster.toasts.length \"padding:0px;\"}}\n {{didInsert this.didInsert}}\n {{on \"scroll\" this.onScroll}}\n {{on \"mouseenter\" this.onMouseEnter}}\n {{on \"mouseleave\" this.onMouseLeave}}\n ...attributes\n >\n {{#each this.euiToaster.toasts as |toast|}}\n <EuiToast\n class={{classNames\n \"euiGlobalToastListItem\"\n (if\n (get this.toastIdToDismissedMap toast.id)\n \"euiGlobalToastListItem-isDismissed\"\n )\n }}\n @title={{toast.title}}\n @useMarkdownFormat={{toast.useMarkdownFormat}}\n @body={{toast.body}}\n @color={{toast.color}}\n @iconType={{toast.iconType}}\n @onClose={{queue\n (fn this.dismissToast toast)\n (optional toast.onClose)\n }}\n {{didInsert (fn this.didInsertToast toast)}}\n {{on \"focus\" this.onMouseEnter}}\n {{on \"blur\" this.onMouseLeave}}\n />\n {{/each}}\n </div>\n </template>\n}\n"],"names":["TOAST_FADE_OUT_MS","EuiGlobalToastList","Component","g","prototype","service","i","void 0","dismissTimeoutIds","toastIdToTimerMap","isScrollingToBottom","isScrolledToBottom","isUserInteracting","isScrollingAnimationFrame","startScrollingAnimationFrame","listElement","tracked","startScrollingToBottom","scrollToBottom","position","scrollTop","destination","scrollHeight","clientHeight","distanceToDestination","window","requestAnimationFrame","didInsertToast","toast","scheduleToastForDismissal","n","action","onMouseEnter","toastId","hasOwnProperty","timer","pause","onMouseLeave","resume","onScroll","scheduleAllToastsForDismissal","euiToaster","toasts","forEach","id","Timer","dismissToast","bind","toastLifeTimeMs","args","push","setTimeout","apply","clear","toastIdToDismissedMap","remove","constructor","owner","didInsert","element","willDestroy","cancelAnimationFrame","clearTimeout","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","argOrDefault","on","EuiToast","get","queue","fn","optional"],"mappings":"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"}
diff --git a/dist/components/eui-header-section-item-button.js b/dist/components/eui-header-section-item-button.js
index 91fd0f29c8724f4400376928bac322d511d4a9b4..f29ce59bb278a124d9a5f944d0f1260d6482eace 100644
--- a/dist/components/eui-header-section-item-button.js
+++ b/dist/components/eui-header-section-item-button.js
@@ -2,7 +2,7 @@ import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { on } from '@ember/modifier';
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import { eq } from 'ember-truth-helpers';
import argOrDefault from '../helpers/arg-or-default.js';
import EuiButtonEmpty from './eui-button-empty.js';
diff --git a/dist/components/eui-header-section-item-button.js.map b/dist/components/eui-header-section-item-button.js.map
index aad41838bd8edf587d1f4dde1c1631ad7f8fc6aa..bd15b2702eaadd2b8926c80b88c9d17aef319823 100644
--- a/dist/components/eui-header-section-item-button.js.map
+++ b/dist/components/eui-header-section-item-button.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-header-section-item-button.js","sources":["../../src/components/eui-header-section-item-button.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { eq } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport EuiButtonEmpty from './eui-button-empty.gts';\nimport EuiHideFor from './eui-hide-for.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiNotificationBadge from './eui-notification-badge.gts';\nimport EuiShowFor from './eui-show-for.gts';\n\nimport type {\n colorMapping,\n} from '../utils/css-mappings/eui-notification-badge.ts';\nimport type { EuiHideForBreakpoints } from './eui-hide-for';\n\nconst keyframes: Keyframe[] = [\n { transform: 'rotate(0)', offset: 0, easing: 'ease-in-out' },\n {\n transform: 'rotate(30deg)',\n offset: 0.01,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-28deg)',\n offset: 0.03,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(34deg)',\n offset: 0.05,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-32deg)',\n offset: 0.07,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(30deg)',\n offset: 0.09,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-28deg)',\n offset: 0.11,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(26deg)',\n offset: 0.13,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-24deg)',\n offset: 0.15,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(22deg)',\n offset: 0.17,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-20deg)',\n offset: 0.19,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(18deg)',\n offset: 0.21,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-16deg)',\n offset: 0.23,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(14deg)',\n offset: 0.25,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-12deg)',\n offset: 0.27,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(10deg)',\n offset: 0.29,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-8deg)',\n offset: 0.31,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(6deg)',\n offset: 0.33,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-4deg)',\n offset: 0.35,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(2deg)',\n offset: 0.37,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-1deg)',\n offset: 0.39,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(1deg)',\n offset: 0.41,\n easing: 'ease-in-out'\n },\n { transform: 'rotate(0)', offset: 0.43, easing: 'ease-in-out' },\n { transform: 'rotate(0)', offset: 1, easing: 'ease-in-out' }\n];\n\nexport interface EuiHeaderSectionItemButtonSignature {\n Element: HTMLButtonElement | HTMLAnchorElement;\n Args: {\n ref?: (api: { euiAnimate: () => void }) => void;\n disabled?: boolean;\n href?: string;\n onClick?: (event: MouseEvent) => void;\n notification?: boolean | number;\n notificationColor?: keyof typeof colorMapping;\n };\n Blocks: { default: [] };\n}\n\nconst sizes: EuiHideForBreakpoints[] = ['xs'];\n\nexport default class EuiHeaderSectionItemButtonComponent extends Component<EuiHeaderSectionItemButtonSignature> {\n @tracked buttonRef: HTMLButtonElement | HTMLAnchorElement | undefined;\n @tracked animationTargetRef: HTMLSpanElement | undefined;\n\n setAnimationTargetRef = (ele: HTMLSpanElement) => {\n this.animationTargetRef = ele;\n this.args.ref?.({ euiAnimate: this.animate });\n };\n\n animate = () => {\n this.animationTargetRef?.animate(keyframes, { duration: 5000 });\n };\n\n setButtonRef = (ele: HTMLButtonElement | HTMLAnchorElement) => {\n this.buttonRef = ele;\n };\n\n <template>\n <EuiButtonEmpty\n class=\"euiHeaderSectionItemButton\"\n @isDisabled={{@disabled}}\n @href={{@href}}\n @color=\"text\"\n {{didInsert this.setButtonRef}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n <span\n {{didInsert this.setAnimationTargetRef}}\n class=\"euiHeaderSectionItemButton__content\"\n >\n {{yield}}\n </span>\n {{#if @notification}}\n {{#if (eq @notification true)}}\n <EuiIcon\n @iconClasses=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--dot\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n @type=\"dot\"\n @size=\"l\"\n />\n {{else if @notification}}\n <EuiHideFor @sizes={{sizes}}>\n <EuiNotificationBadge\n class=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--badge\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n >\n {{@notification}}\n </EuiNotificationBadge>\n </EuiHideFor>\n <EuiShowFor @sizes={{sizes}}>\n <EuiIcon\n @iconClasses=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--dot\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n @type=\"dot\"\n @size=\"l\"\n />\n </EuiShowFor>\n {{/if}}\n {{/if}}\n </EuiButtonEmpty>\n </template>\n}\n"],"names":["keyframes","transform","offset","easing","sizes","EuiHeaderSectionItemButtonComponent","Component","g","prototype","tracked","i","void 0","setAnimationTargetRef","ele","animationTargetRef","args","ref","euiAnimate","animate","duration","setButtonRef","buttonRef","setComponentTemplate","precompileTemplate","strictMode","scope","EuiButtonEmpty","didInsert","on","optional","eq","EuiIcon","argOrDefault","EuiHideFor","EuiNotificationBadge","EuiShowFor"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"eui-header-section-item-button.js","sources":["../../src/components/eui-header-section-item-button.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { eq } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport EuiButtonEmpty from './eui-button-empty.gts';\nimport EuiHideFor from './eui-hide-for.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiNotificationBadge from './eui-notification-badge.gts';\nimport EuiShowFor from './eui-show-for.gts';\n\nimport type {\n colorMapping,\n} from '../utils/css-mappings/eui-notification-badge.ts';\nimport type { EuiHideForBreakpoints } from './eui-hide-for';\n\nconst keyframes: Keyframe[] = [\n { transform: 'rotate(0)', offset: 0, easing: 'ease-in-out' },\n {\n transform: 'rotate(30deg)',\n offset: 0.01,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-28deg)',\n offset: 0.03,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(34deg)',\n offset: 0.05,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-32deg)',\n offset: 0.07,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(30deg)',\n offset: 0.09,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-28deg)',\n offset: 0.11,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(26deg)',\n offset: 0.13,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-24deg)',\n offset: 0.15,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(22deg)',\n offset: 0.17,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-20deg)',\n offset: 0.19,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(18deg)',\n offset: 0.21,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-16deg)',\n offset: 0.23,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(14deg)',\n offset: 0.25,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-12deg)',\n offset: 0.27,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(10deg)',\n offset: 0.29,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-8deg)',\n offset: 0.31,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(6deg)',\n offset: 0.33,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-4deg)',\n offset: 0.35,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(2deg)',\n offset: 0.37,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-1deg)',\n offset: 0.39,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(1deg)',\n offset: 0.41,\n easing: 'ease-in-out'\n },\n { transform: 'rotate(0)', offset: 0.43, easing: 'ease-in-out' },\n { transform: 'rotate(0)', offset: 1, easing: 'ease-in-out' }\n];\n\nexport interface EuiHeaderSectionItemButtonSignature {\n Element: HTMLButtonElement | HTMLAnchorElement;\n Args: {\n ref?: (api: { euiAnimate: () => void }) => void;\n disabled?: boolean;\n href?: string;\n onClick?: (event: MouseEvent) => void;\n notification?: boolean | number;\n notificationColor?: keyof typeof colorMapping;\n };\n Blocks: { default: [] };\n}\n\nconst sizes: EuiHideForBreakpoints[] = ['xs'];\n\nexport default class EuiHeaderSectionItemButtonComponent extends Component<EuiHeaderSectionItemButtonSignature> {\n @tracked buttonRef: HTMLButtonElement | HTMLAnchorElement | undefined;\n @tracked animationTargetRef: HTMLSpanElement | undefined;\n\n setAnimationTargetRef = (ele: HTMLSpanElement) => {\n this.animationTargetRef = ele;\n this.args.ref?.({ euiAnimate: this.animate });\n };\n\n animate = () => {\n this.animationTargetRef?.animate(keyframes, { duration: 5000 });\n };\n\n setButtonRef = (ele: HTMLButtonElement | HTMLAnchorElement) => {\n this.buttonRef = ele;\n };\n\n <template>\n <EuiButtonEmpty\n class=\"euiHeaderSectionItemButton\"\n @isDisabled={{@disabled}}\n @href={{@href}}\n @color=\"text\"\n {{didInsert this.setButtonRef}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n <span\n {{didInsert this.setAnimationTargetRef}}\n class=\"euiHeaderSectionItemButton__content\"\n >\n {{yield}}\n </span>\n {{#if @notification}}\n {{#if (eq @notification true)}}\n <EuiIcon\n @iconClasses=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--dot\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n @type=\"dot\"\n @size=\"l\"\n />\n {{else if @notification}}\n <EuiHideFor @sizes={{sizes}}>\n <EuiNotificationBadge\n class=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--badge\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n >\n {{@notification}}\n </EuiNotificationBadge>\n </EuiHideFor>\n <EuiShowFor @sizes={{sizes}}>\n <EuiIcon\n @iconClasses=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--dot\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n @type=\"dot\"\n @size=\"l\"\n />\n </EuiShowFor>\n {{/if}}\n {{/if}}\n </EuiButtonEmpty>\n </template>\n}\n"],"names":["keyframes","transform","offset","easing","sizes","EuiHeaderSectionItemButtonComponent","Component","g","prototype","tracked","i","void 0","setAnimationTargetRef","ele","animationTargetRef","args","ref","euiAnimate","animate","duration","setButtonRef","buttonRef","setComponentTemplate","precompileTemplate","strictMode","scope","EuiButtonEmpty","didInsert","on","optional","eq","EuiIcon","argOrDefault","EuiHideFor","EuiNotificationBadge","EuiShowFor"],"mappings":"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"}
diff --git a/dist/components/eui-list-group-item.js b/dist/components/eui-list-group-item.js
index 03f46fab6b22bb2a8e9bc5f98635b1adabc16dd0..9a184991208ca402fd6c09f0bbf5c947c2524a4e 100644
--- a/dist/components/eui-list-group-item.js
+++ b/dist/components/eui-list-group-item.js
@@ -1,7 +1,6 @@
import { on } from '@ember/modifier';
import { EnsureSafeComponentHelper } from '@embroider/util';
-import optional from 'ember-composable-helpers/helpers/optional';
-import 'ember-composable-helpers/helpers/queue';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import 'ember-element-helper';
import 'ember-set-helper/helpers/set';
import { eq, not, and, or } from 'ember-truth-helpers';
@@ -12,21 +11,27 @@ import { precompileTemplate } from '@ember/template-compilation';
import { setComponentTemplate } from '@ember/component';
import templateOnly from '@ember/component/template-only';
-const EuiListGroupItem = setComponentTemplate(precompileTemplate("\n <li class={{classNames (if (or @href @onClick) \"euiListGroupItem-isClickable\") (if @isActive \"euiListGroupItem-isActive\") (if @isDisabled \"euiListGroupItem-isDisabled\") (if @wrapText \"euiListGroupItem-wrapText\") componentName=\"EuiListGroupItem\" size=(argOrDefault @size \"m\") color=(argOrDefault @color \"inherit\")}}>\n {{#if (and @href (not @isDisabled))}}\n <a class=\"euiListGroupItem__button\" href={{@href}} target={{@target}} {{on \"click\" (optional @onClick)}} ...attributes>\n {{#if @iconType}}\n <EuiIcon @iconClasses=\"euiListGroupItem__icon\" @type={{@iconType}} />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </a>\n {{else if (or @onClick (and @href @isDisabled))}}\n <button class=\"euiListGroupItem__button\" type=\"button\" disabled={{eq @isDisabled true}} {{on \"click\" (optional @onClick)}} ...attributes>\n {{#if @iconType}}\n <EuiIcon @iconClasses=\"euiListGroupItem__icon\" @type={{@iconType}} @color=\"inherit\" />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </button>\n {{else}}\n <span class=\"euiListGroupItem__text\" ...attributes>\n {{#if @iconType}}\n <EuiIcon @iconClasses=\"euiListGroupItem__icon\" @type={{@iconType}} @color=\"inherit\" />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </span>\n {{/if}}\n {{#if @extraAction}}\n {{#let (component (EnsureSafeComponentHelper @extraAction)) as |ExtraAction|}}\n <ExtraAction />\n {{/let}}\n\n {{/if}}\n </li>\n ", {
- strictMode: true,
- scope: () => ({
- classNames,
- or,
- argOrDefault,
- and,
- not,
- on,
- optional,
- EuiIcon,
- eq,
- EnsureSafeComponentHelper
- })
-}), templateOnly());
+const EuiListGroupItem = setComponentTemplate(
+ precompileTemplate(
+ '\n <li class={{classNames (if (or @href @onClick) "euiListGroupItem-isClickable") (if @isActive "euiListGroupItem-isActive") (if @isDisabled "euiListGroupItem-isDisabled") (if @wrapText "euiListGroupItem-wrapText") componentName="EuiListGroupItem" size=(argOrDefault @size "m") color=(argOrDefault @color "inherit")}}>\n {{#if (and @href (not @isDisabled))}}\n <a class="euiListGroupItem__button" href={{@href}} target={{@target}} {{on "click" (optional @onClick)}} ...attributes>\n {{#if @iconType}}\n <EuiIcon @iconClasses="euiListGroupItem__icon" @type={{@iconType}} />\n {{/if}}\n <span class="euiListGroupItem__label">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </a>\n {{else if (or @onClick (and @href @isDisabled))}}\n <button class="euiListGroupItem__button" type="button" disabled={{eq @isDisabled true}} {{on "click" (optional @onClick)}} ...attributes>\n {{#if @iconType}}\n <EuiIcon @iconClasses="euiListGroupItem__icon" @type={{@iconType}} @color="inherit" />\n {{/if}}\n <span class="euiListGroupItem__label">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </button>\n {{else}}\n <span class="euiListGroupItem__text" ...attributes>\n {{#if @iconType}}\n <EuiIcon @iconClasses="euiListGroupItem__icon" @type={{@iconType}} @color="inherit" />\n {{/if}}\n <span class="euiListGroupItem__label">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </span>\n {{/if}}\n {{#if @extraAction}}\n {{#let (component (EnsureSafeComponentHelper @extraAction)) as |ExtraAction|}}\n <ExtraAction />\n {{/let}}\n\n {{/if}}\n </li>\n ',
+ {
+ strictMode: true,
+ scope: () => ({
+ classNames,
+ or,
+ argOrDefault,
+ and,
+ not,
+ on,
+ optional,
+ EuiIcon,
+ eq,
+ EnsureSafeComponentHelper,
+ }),
+ }
+ ),
+ templateOnly()
+);
export { EuiListGroupItem as default };
//# sourceMappingURL=eui-list-group-item.js.map
diff --git a/dist/components/eui-list-group-item.js.map b/dist/components/eui-list-group-item.js.map
index d740722e39e903ed148c7bddd2f8100b5da14031..d2edee80b981e809eec90df8fa1a22a4c40aa8fd 100644
--- a/dist/components/eui-list-group-item.js.map
+++ b/dist/components/eui-list-group-item.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-list-group-item.js","sources":["../../src/components/eui-list-group-item.gts"],"sourcesContent":["import { on } from '@ember/modifier';\nimport { EnsureSafeComponentHelper } from '@embroider/util';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport queue from 'ember-composable-helpers/helpers/queue';\nimport { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiIcon from './eui-icon.gts';\n\nimport type {\n colorMapping,\n sizeMapping} from '../utils/css-mappings/eui-list-group-item.ts';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\nimport type { ComponentLike } from '@glint/template';\n\nexport interface EuiListGroupItemSignature {\n Element:\n | HTMLLIElement\n | HTMLAnchorElement\n | HTMLButtonElement\n | HTMLSpanElement;\n Args: {\n href?: string;\n target?: string;\n onClick?: (event: MouseEvent) => void;\n label?: string;\n iconType?: EuiIconSignature['Args']['type'];\n isActive?: boolean;\n isDisabled?: boolean;\n wrapText?: boolean;\n extraAction?: ComponentLike;\n size?: keyof typeof sizeMapping;\n color?: keyof typeof colorMapping;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiListGroupItem: TemplateOnlyComponent<EuiListGroupItemSignature> =\n <template>\n <li\n class={{classNames\n (if (or @href @onClick) \"euiListGroupItem-isClickable\")\n (if @isActive \"euiListGroupItem-isActive\")\n (if @isDisabled \"euiListGroupItem-isDisabled\")\n (if @wrapText \"euiListGroupItem-wrapText\")\n componentName=\"EuiListGroupItem\"\n size=(argOrDefault @size \"m\")\n color=(argOrDefault @color \"inherit\")\n }}\n >\n {{#if (and @href (not @isDisabled))}}\n <a\n class=\"euiListGroupItem__button\"\n href={{@href}}\n target={{@target}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiListGroupItem__icon\"\n @type={{@iconType}}\n />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </a>\n {{else if (or @onClick (and @href @isDisabled))}}\n <button\n class=\"euiListGroupItem__button\"\n type=\"button\"\n disabled={{eq @isDisabled true}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiListGroupItem__icon\"\n @type={{@iconType}}\n @color=\"inherit\"\n />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </button>\n {{else}}\n <span class=\"euiListGroupItem__text\" ...attributes>\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiListGroupItem__icon\"\n @type={{@iconType}}\n @color=\"inherit\"\n />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </span>\n {{/if}}\n {{#if @extraAction}}\n {{#let\n (component (EnsureSafeComponentHelper @extraAction))\n as |ExtraAction|\n }}\n <ExtraAction />\n {{/let}}\n\n {{/if}}\n </li>\n </template>;\n\nexport default EuiListGroupItem;\n"],"names":["EuiListGroupItem","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","or","argOrDefault","and","not","on","optional","EuiIcon","eq","EnsureSafeComponentHelper","templateOnly"],"mappings":";;;;;;;;;;;;;;AA4CA,MAAMA,gBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAqFA,6iEAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,YAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,QAAA;IAAAC,OAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-list-group-item.js","sources":["../../src/components/eui-list-group-item.gts"],"sourcesContent":["import { on } from '@ember/modifier';\nimport { EnsureSafeComponentHelper } from '@embroider/util';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\nimport { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiIcon from './eui-icon.gts';\n\nimport type {\n colorMapping,\n sizeMapping} from '../utils/css-mappings/eui-list-group-item.ts';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\nimport type { ComponentLike } from '@glint/template';\n\nexport interface EuiListGroupItemSignature {\n Element:\n | HTMLLIElement\n | HTMLAnchorElement\n | HTMLButtonElement\n | HTMLSpanElement;\n Args: {\n href?: string;\n target?: string;\n onClick?: (event: MouseEvent) => void;\n label?: string;\n iconType?: EuiIconSignature['Args']['type'];\n isActive?: boolean;\n isDisabled?: boolean;\n wrapText?: boolean;\n extraAction?: ComponentLike;\n size?: keyof typeof sizeMapping;\n color?: keyof typeof colorMapping;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiListGroupItem: TemplateOnlyComponent<EuiListGroupItemSignature> =\n <template>\n <li\n class={{classNames\n (if (or @href @onClick) \"euiListGroupItem-isClickable\")\n (if @isActive \"euiListGroupItem-isActive\")\n (if @isDisabled \"euiListGroupItem-isDisabled\")\n (if @wrapText \"euiListGroupItem-wrapText\")\n componentName=\"EuiListGroupItem\"\n size=(argOrDefault @size \"m\")\n color=(argOrDefault @color \"inherit\")\n }}\n >\n {{#if (and @href (not @isDisabled))}}\n <a\n class=\"euiListGroupItem__button\"\n href={{@href}}\n target={{@target}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiListGroupItem__icon\"\n @type={{@iconType}}\n />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </a>\n {{else if (or @onClick (and @href @isDisabled))}}\n <button\n class=\"euiListGroupItem__button\"\n type=\"button\"\n disabled={{eq @isDisabled true}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiListGroupItem__icon\"\n @type={{@iconType}}\n @color=\"inherit\"\n />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </button>\n {{else}}\n <span class=\"euiListGroupItem__text\" ...attributes>\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiListGroupItem__icon\"\n @type={{@iconType}}\n @color=\"inherit\"\n />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </span>\n {{/if}}\n {{#if @extraAction}}\n {{#let\n (component (EnsureSafeComponentHelper @extraAction))\n as |ExtraAction|\n }}\n <ExtraAction />\n {{/let}}\n\n {{/if}}\n </li>\n </template>;\n\nexport default EuiListGroupItem;\n"],"names":["EuiListGroupItem","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","or","argOrDefault","and","not","on","optional","EuiIcon","eq","EnsureSafeComponentHelper","templateOnly"],"mappings":";;;;;;;;;;;;;;AA4CA,MAAMA,gBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAqFA,6iEAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,YAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,QAAA;IAAAC,OAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-loading-content.js b/dist/components/eui-loading-content.js
index 4c713e2d42c8d76a9aaab4165cabc5e62e4dd950..a52ccd954a92b87c77b3466f68363612779a3dc0 100644
--- a/dist/components/eui-loading-content.js
+++ b/dist/components/eui-loading-content.js
@@ -1,4 +1,4 @@
-import repeat from 'ember-composable-helpers/helpers/repeat';
+import repeat from '@nullvoxpopuli/ember-composable-helpers/helpers/repeat';
import { lt, gt } from 'ember-truth-helpers';
import classNames from '../helpers/class-names.js';
import { precompileTemplate } from '@ember/template-compilation';
diff --git a/dist/components/eui-loading-content.js.map b/dist/components/eui-loading-content.js.map
index 13ccfdbc963173cb642a9b4717ae5f23d923e93c..c9b60304a28b5e71e89e1f4f0faee569a6766936 100644
--- a/dist/components/eui-loading-content.js.map
+++ b/dist/components/eui-loading-content.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-loading-content.js","sources":["../../src/components/eui-loading-content.gts"],"sourcesContent":["import repeat from 'ember-composable-helpers/helpers/repeat';\nimport { gt, lt } from 'ember-truth-helpers';\n\nimport classNames from '../helpers/class-names.ts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiLoadingContentSignature {\n Element: HTMLSpanElement;\n Args: {\n lines?: number;\n singleLineClasses?: string;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiLoadingContent: TemplateOnlyComponent<EuiLoadingContentSignature> =\n <template>\n <span class=\"euiLoadingContent\" ...attributes>\n {{#each (repeat (if (gt @lines 10) 10 (if (lt @lines 1) 1 @lines)))}}\n <span\n class={{classNames\n \"euiLoadingContent__singleLine\"\n @singleLineClasses\n }}\n >\n <span class=\"euiLoadingContent__singleLineBackground\" />\n </span>\n {{/each}}\n </span>\n </template>;\n\nexport default EuiLoadingContent;\n"],"names":["EuiLoadingContent","setComponentTemplate","precompileTemplate","strictMode","scope","repeat","gt","lt","classNames","templateOnly"],"mappings":";;;;;;;AAkBA,MAAMA,iBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAaA,wVAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAC,EAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-loading-content.js","sources":["../../src/components/eui-loading-content.gts"],"sourcesContent":["import repeat from '@nullvoxpopuli/ember-composable-helpers/helpers/repeat';\nimport { gt, lt } from 'ember-truth-helpers';\n\nimport classNames from '../helpers/class-names.ts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiLoadingContentSignature {\n Element: HTMLSpanElement;\n Args: {\n lines?: number;\n singleLineClasses?: string;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiLoadingContent: TemplateOnlyComponent<EuiLoadingContentSignature> =\n <template>\n <span class=\"euiLoadingContent\" ...attributes>\n {{#each (repeat (if (gt @lines 10) 10 (if (lt @lines 1) 1 @lines)))}}\n <span\n class={{classNames\n \"euiLoadingContent__singleLine\"\n @singleLineClasses\n }}\n >\n <span class=\"euiLoadingContent__singleLineBackground\" />\n </span>\n {{/each}}\n </span>\n </template>;\n\nexport default EuiLoadingContent;\n"],"names":["EuiLoadingContent","setComponentTemplate","precompileTemplate","strictMode","scope","repeat","gt","lt","classNames","templateOnly"],"mappings":";;;;;;;AAkBA,MAAMA,iBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAaA,wVAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAC,EAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-markdown-editor.js b/dist/components/eui-markdown-editor.js
index e173dd365e25ec1069c75ea675d8ba9360c7a64e..7fe49b7c84fc3cdb767e52c357aaf76e3a4bcd75 100644
--- a/dist/components/eui-markdown-editor.js
+++ b/dist/components/eui-markdown-editor.js
@@ -7,7 +7,7 @@ import { guidFor } from '@ember/object/internals';
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
import didUpdate from '@ember/render-modifiers/modifiers/did-update';
import { scheduleOnce } from '@ember/runloop';
-import pick from 'ember-composable-helpers/helpers/pick';
+import pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick';
import { modifier } from 'ember-modifier';
import set from 'ember-set-helper/helpers/set';
import style from 'ember-style-modifier/modifiers/style';
diff --git a/dist/components/eui-markdown-editor.js.map b/dist/components/eui-markdown-editor.js.map
index 8d9a51468b83821564d52dbb79e26e0d6e75db1d..a296c5a32b3dbad2a62f5294696ba60d02f41c66 100644
--- a/dist/components/eui-markdown-editor.js.map
+++ b/dist/components/eui-markdown-editor.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-markdown-editor.js","sources":["../../src/components/eui-markdown-editor.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { hash } 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 { scheduleOnce } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport pick from 'ember-composable-helpers/helpers/pick';\nimport { modifier } from 'ember-modifier';\nimport set from 'ember-set-helper/helpers/set';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { eq } from 'ember-truth-helpers';\nimport unified from 'unified';\n\nimport { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport MarkdownActions, {\n insertText\n} from '../utils/markdown/markdown-actions.ts';\nimport { MODE_EDITING, MODE_VIEWING } from '../utils/markdown/markdown-modes.ts';\nimport {\n defaultParsingPlugins,\n defaultProcessingPlugins\n} from '../utils/markdown/plugins/markdown-default-plugins/index.ts';\nimport * as MarkdownTooltipPlugin from '../utils/markdown/plugins/markdown-tooltip/index.ts';\nimport EuiMarkdownEditorDropZone from './eui-markdown-editor-drop-zone.gts';\nimport EuiMarkdownEditorTextArea from './eui-markdown-editor-text-area.gts';\nimport EuiMarkdownEditorToolbar from './eui-markdown-editor-toolbar.gts';\nimport EuiMarkdownFormat from './eui-markdown-format.gts';\nimport EuiModal from './eui-modal.gts';\n\nimport type {\n EuiMarkdownAstNode,\n EuiMarkdownAstNodePosition,\n EuiMarkdownEditorUiPlugin\n} from '../utils/markdown/markdown-types';\nimport type { EuiMarkdownEditorTextAreaSignature } from './eui-markdown-editor-text-area';\nimport type { EuiMarkdownEditorToolbarSignature } from './eui-markdown-editor-toolbar';\nimport type { Processor } from 'unified';\n\nexport interface EuiMarkdownEditorArgs {\n initialViewMode?: string;\n editorId?: string;\n uiPlugins: EuiMarkdownEditorUiPlugin[];\n parsingPluginList?: typeof defaultParsingPlugins;\n processingPluginList?: typeof defaultProcessingPlugins;\n value: string;\n onChange: (str: string) => void;\n onParse?: (\n parseError: unknown | null,\n parsed: { messages: any[]; ast: any }\n ) => void;\n height?: number | string;\n maxHeight?: number | string;\n autoExpandPreview?: boolean;\n disabled?: boolean;\n isInvalid?: boolean;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n ariaDescribedBy?: string;\n}\n\nexport interface EuiMarkdownEditorSignature {\n Element: EuiMarkdownEditorTextAreaSignature['Element'];\n Args: EuiMarkdownEditorArgs;\n Blocks: {\n default: [];\n };\n}\n\nexport const getCursorNode = (\n textareaRef: HTMLTextAreaElement,\n parsed: any\n): EuiMarkdownAstNode => {\n const { selectionStart } = textareaRef;\n\n let node: EuiMarkdownAstNode = parsed.result ?? parsed.contents;\n\n //eslint-disable-next-line\n outer: while (true) {\n if (node.children) {\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n\n if (\n child &&\n child.position.start.offset < (selectionStart as number) &&\n (selectionStart as number) < child.position.end.offset\n ) {\n if (child.type === 'text') break outer; // don't dive into `text` nodes\n node = child;\n continue outer;\n }\n }\n }\n\n break;\n }\n\n return node;\n};\n\nfunction wrapper(\n textarea: HTMLTextAreaElement,\n parsed: any,\n callback: (node: EuiMarkdownAstNode) => void\n) {\n const node = getCursorNode(textarea, parsed);\n\n callback(node);\n}\n\nexport const getCursorNodeModifier = modifier(function getCursorNodeModifier(\n textarea: EuiMarkdownEditorTextAreaSignature['Element'],\n [parsed, onSelectedNode]: [any, (node: Node) => void]\n) {\n //@ts-expect-error\n const fn = wrapper.bind(null, textarea, parsed, onSelectedNode);\n\n textarea.addEventListener('keyup', fn);\n textarea.addEventListener('mouseup', fn);\n\n return () => {\n textarea.removeEventListener('keyup', fn);\n textarea.removeEventListener('mouseup', fn);\n };\n});\n\nfunction isNewLine(char: string | undefined): boolean {\n if (char == null) return true;\n\n return !!char.match(/[\\r\\n]/);\n}\n\nfunction padWithNewlinesIfNeeded(textarea: HTMLTextAreaElement, text: string) {\n const selectionStart = textarea.selectionStart;\n const selectionEnd = textarea.selectionEnd;\n\n // block parsing requires two leading new lines and none trailing, but we add an extra trailing line for readability\n const isPrevNewLine = isNewLine(textarea.value[selectionStart - 1]);\n const isPrevPrevNewLine = isNewLine(textarea.value[selectionStart - 2]);\n const isNextNewLine = isNewLine(textarea.value[selectionEnd]);\n\n // pad text with newlines as needed\n text = `${isPrevNewLine ? '' : '\\n'}${isPrevPrevNewLine ? '' : '\\n'}${text}${\n isNextNewLine ? '' : '\\n'\n }`;\n\n return text;\n}\n\nexport default class EuiMarkdownEditorComponent extends Component<EuiMarkdownEditorSignature> {\n @tracked pluginEditorPlugin?: EuiMarkdownEditorUiPlugin;\n\n // Defaults\n @argOrDefaultDecorator(defaultParsingPlugins) declare parsingPluginList: typeof defaultParsingPlugins;\n\n @argOrDefaultDecorator(250) declare height: number | string;\n @argOrDefaultDecorator(500) declare maxHeight: number | string;\n @argOrDefaultDecorator(true) declare autoExpandPreview: boolean;\n\n @argOrDefaultDecorator(defaultProcessingPlugins) declare processingPluginList: typeof defaultProcessingPlugins;\n\n @tracked selectedNode: Node | null = null;\n @tracked editorId = this.args.editorId ?? guidFor({});\n @tracked viewMode = this.args.initialViewMode || MODE_EDITING;\n @tracked textareaRef: HTMLTextAreaElement | null = null;\n @tracked previewRef: HTMLDivElement | null = null;\n @tracked editorToolbarRef: HTMLDivElement | null = null;\n @tracked currentHeight: number | string = 250;\n @tracked editorFooterHeight: number = 0;\n @tracked editorToolbarHeight: number = 0;\n\n markdownActions: MarkdownActions;\n\n get toolbarPlugins() {\n return [MarkdownTooltipPlugin.plugin, ...(this.args.uiPlugins || [])];\n }\n\n constructor(owner: Owner, args: EuiMarkdownEditorArgs) {\n super(owner, args);\n this.markdownActions = new MarkdownActions(\n this.editorId,\n this.toolbarPlugins\n );\n this.currentHeight = this.height;\n }\n\n get previewHeight() {\n if (this.height === 'full') {\n return `calc(100% - ${this.editorFooterHeight}px)`;\n }\n\n return `${this.currentHeight}px`;\n }\n\n get textAreaHeight() {\n return this.height === 'full'\n ? '100%'\n : `calc(${(this.height as number) - this.editorFooterHeight}px)`;\n }\n\n get textAreaMaxHeight() {\n return this.height !== 'full'\n ? `${(this.maxHeight as number) - this.editorFooterHeight}px`\n : '';\n }\n\n get editorToggleContainerHeight() {\n return `calc(100% - ${this.editorToolbarHeight}px)`;\n }\n\n @action\n onResize() {\n if (this.textareaRef && this.isEditing && this.height !== 'full') {\n const resizedTextareaHeight =\n this.textareaRef.offsetHeight + this.editorFooterHeight;\n\n const update = () => {\n this.currentHeight = resizedTextareaHeight;\n };\n\n scheduleOnce('afterRender', this, update);\n }\n }\n\n @action\n updateCurrentHeight() {\n let { isPreviewing, autoExpandPreview, height, previewRef, currentHeight } =\n this;\n\n if (isPreviewing && autoExpandPreview && height !== 'full' && previewRef) {\n //@ts-ignore\n if (previewRef.scrollHeight > currentHeight) {\n // scrollHeight does not include the border or margin\n // so we ask for the computed value for those,\n // which is always in pixels because getComputedValue\n // returns the resolved values\n const elementComputedStyle = window.getComputedStyle(previewRef);\n const borderWidth =\n parseFloat(elementComputedStyle.borderTopWidth) +\n parseFloat(elementComputedStyle.borderBottomWidth);\n const marginWidth =\n parseFloat(elementComputedStyle.marginTop) +\n parseFloat(elementComputedStyle.marginBottom);\n\n // then add an extra pixel for safety and because the scrollHeight value is rounded\n const extraHeight = borderWidth + marginWidth + 1;\n\n const update = () => {\n if (previewRef) {\n this.currentHeight = previewRef.scrollHeight + extraHeight;\n }\n };\n\n scheduleOnce('afterRender', this, update);\n }\n }\n }\n\n getCursorNode = () => {};\n\n @action\n setTextAreaRef(ref: HTMLTextAreaElement) {\n this.textareaRef = ref;\n }\n\n @action\n setEditorToolbarRef(ref: EuiMarkdownEditorToolbarSignature['Element']) {\n this.editorToolbarRef = ref;\n this.editorToolbarHeight = ref.offsetHeight;\n }\n\n @action\n replaceNode(position: EuiMarkdownAstNodePosition, next: string) {\n let value = this.args.value;\n const leading = value.substr(0, position.start.offset);\n const trailing = value.substr(position.end.offset);\n\n this.args.onChange?.(`${leading}${next}${trailing}`);\n }\n\n get isEditing() {\n return this.viewMode === MODE_EDITING;\n }\n\n get isPreviewing() {\n return this.viewMode === MODE_VIEWING;\n }\n\n @action\n setViewMode() {\n this.viewMode = this.isPreviewing ? MODE_EDITING : MODE_VIEWING;\n }\n\n @cached\n get parser() {\n const Compiler = (tree: any) => {\n return tree;\n };\n\n function identityCompiler(this: Processor) {\n //eslint-disable-next-line\n this.Compiler = Compiler;\n }\n\n return unified().use(this.parsingPluginList).use(identityCompiler);\n }\n\n @cached\n get parsed(): [\n ReturnType<typeof this.parser.processSync> | null,\n null | unknown\n ] {\n try {\n const parsed = this.parser.processSync(this.args.value);\n\n return [parsed, null];\n } catch (e) {\n return [null, e];\n }\n }\n\n get vFile() {\n return this.parsed[0];\n }\n\n @action\n onParse() {\n if (this.args.onParse) {\n const [parsed, parseError] = this.parsed;\n const onParse = this.args.onParse;\n const messages = parsed ? parsed.messages : [];\n const ast = parsed ? parsed['result'] ?? parsed.contents : null;\n\n onParse(parseError, { messages, ast });\n }\n }\n\n @action\n setSelectedNode(node: Node) {\n this.selectedNode = node;\n }\n\n openPluginEditor = (plugin: EuiMarkdownEditorUiPlugin) => {\n this.pluginEditorPlugin = plugin;\n };\n\n onEditorPluginSave = (markdown: any, config: any) => {\n let { selectedNode, textareaRef } = this;\n\n if (\n this.pluginEditorPlugin &&\n selectedNode &&\n // @ts-expect-error\n selectedNode.type === this.pluginEditorPlugin.name &&\n // @ts-expect-error\n selectedNode.position\n ) {\n // modifying an existing node\n textareaRef!.setSelectionRange(\n // @ts-expect-error\n selectedNode.position.start.offset,\n // @ts-expect-error\n selectedNode.position.end.offset\n );\n } else {\n // creating a new node\n if (config.block) {\n // inject newlines if needed\n markdown = padWithNewlinesIfNeeded(textareaRef!, markdown);\n }\n }\n\n insertText(textareaRef!, {\n text: markdown,\n selectionStart: undefined,\n selectionEnd: undefined\n });\n\n this.pluginEditorPlugin = undefined;\n };\n\n <template>\n <div\n class={{classNames\n \"euiMarkdownEditor\"\n (if (eq this.height \"full\") \"euiMarkdownEditor--fullHeight\")\n (if this.isPreviewing \"euiMarkdownEditor--isPreviewing\")\n }}\n {{didUpdate\n this.updateCurrentHeight\n this.currentHeight\n this.isPreviewing\n this.height\n this.autoExpandPreview\n }}\n >\n <EuiMarkdownEditorToolbar\n @selectedNode={{this.selectedNode}}\n @markdownActions={{this.markdownActions}}\n @onClickPreview={{this.setViewMode}}\n @openPluginEditor={{this.openPluginEditor}}\n @viewMode={{this.viewMode}}\n @uiPlugins={{this.toolbarPlugins}}\n {{didInsert this.setEditorToolbarRef}}\n />\n {{#if this.isPreviewing}}\n <div\n class=\"euiMarkdownEditorPreview\"\n {{didInsert (set this \"previewRef\")}}\n {{style (hash height=this.previewHeight)}}\n >\n <EuiMarkdownFormat\n @parsingPluginList={{this.parsingPluginList}}\n @processingPluginList={{this.processingPluginList}}\n @value={{@value}}\n @replaceNode={{this.replaceNode}}\n />\n </div>\n {{/if}}\n\n <div\n class=\"euiMarkdownEditor__toggleContainer\"\n {{style height=this.editorToggleContainerHeight}}\n >\n <EuiMarkdownEditorDropZone\n @uiPlugins={{this.toolbarPlugins}}\n {{resizeObserver onResize=this.onResize}}\n >\n <EuiMarkdownEditorTextArea\n {{getCursorNodeModifier this.vFile this.setSelectedNode}}\n {{didUpdate this.onParse this.parsed}}\n {{didInsert this.setTextAreaRef}}\n disabled={{@disabled}}\n id={{this.editorId}}\n @height={{this.textAreaHeight}}\n @maxHeight={{this.textAreaMaxHeight}}\n value={{@value}}\n aria-label={{@ariaLabel}}\n aria-labelledby={{@ariaLabelledBy}}\n aria-describedby={{@ariaDescribedBy}}\n {{on \"input\" (pick \"target.value\" @onChange)}}\n {{validatableControl @isInvalid}}\n ...attributes\n />\n </EuiMarkdownEditorDropZone>\n {{#if this.pluginEditorPlugin.editor}}\n <EuiModal @onClose={{set this \"pluginEditorPlugin\" undefined}}>\n {{#let (component this.pluginEditorPlugin.editor) as |Editor|}}\n <Editor\n @node={{this.selectedNode}}\n @onCancel={{set this \"pluginEditorPlugin\" undefined}}\n @onSave={{this.onEditorPluginSave}}\n />\n {{/let}}\n </EuiModal>\n {{/if}}\n </div>\n </div>\n </template>\n}\n"],"names":["getCursorNode","textareaRef","parsed","selectionStart","node","result","contents","outer","children","i","length","child","position","start","offset","end","type","wrapper","textarea","callback","getCursorNodeModifier","modifier","onSelectedNode","fn","bind","addEventListener","removeEventListener","isNewLine","char","match","padWithNewlinesIfNeeded","text","selectionEnd","isPrevNewLine","value","isPrevPrevNewLine","isNextNewLine","EuiMarkdownEditorComponent","Component","g","prototype","tracked","void 0","argOrDefaultDecorator","defaultParsingPlugins","defaultProcessingPlugins","args","editorId","guidFor","initialViewMode","MODE_EDITING","markdownActions","toolbarPlugins","MarkdownTooltipPlugin","uiPlugins","constructor","owner","MarkdownActions","currentHeight","height","previewHeight","editorFooterHeight","textAreaHeight","textAreaMaxHeight","maxHeight","editorToggleContainerHeight","editorToolbarHeight","onResize","isEditing","resizedTextareaHeight","offsetHeight","update","scheduleOnce","n","action","updateCurrentHeight","isPreviewing","autoExpandPreview","previewRef","scrollHeight","elementComputedStyle","window","getComputedStyle","borderWidth","parseFloat","borderTopWidth","borderBottomWidth","marginWidth","marginTop","marginBottom","extraHeight","setTextAreaRef","ref","setEditorToolbarRef","editorToolbarRef","replaceNode","next","leading","substr","trailing","onChange","viewMode","MODE_VIEWING","setViewMode","parser","Compiler","tree","identityCompiler","unified","use","parsingPluginList","cached","processSync","e","vFile","onParse","parseError","messages","ast","setSelectedNode","selectedNode","openPluginEditor","plugin","pluginEditorPlugin","onEditorPluginSave","markdown","config","name","setSelectionRange","block","insertText","undefined","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","eq","didUpdate","EuiMarkdownEditorToolbar","didInsert","set","style","hash","EuiMarkdownFormat","EuiMarkdownEditorDropZone","resizeObserver","EuiMarkdownEditorTextArea","on","pick","validatableControl","EuiModal"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"eui-markdown-editor.js","sources":["../../src/components/eui-markdown-editor.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { hash } 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 { scheduleOnce } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick';\nimport { modifier } from 'ember-modifier';\nimport set from 'ember-set-helper/helpers/set';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { eq } from 'ember-truth-helpers';\nimport unified from 'unified';\n\nimport { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport MarkdownActions, {\n insertText\n} from '../utils/markdown/markdown-actions.ts';\nimport { MODE_EDITING, MODE_VIEWING } from '../utils/markdown/markdown-modes.ts';\nimport {\n defaultParsingPlugins,\n defaultProcessingPlugins\n} from '../utils/markdown/plugins/markdown-default-plugins/index.ts';\nimport * as MarkdownTooltipPlugin from '../utils/markdown/plugins/markdown-tooltip/index.ts';\nimport EuiMarkdownEditorDropZone from './eui-markdown-editor-drop-zone.gts';\nimport EuiMarkdownEditorTextArea from './eui-markdown-editor-text-area.gts';\nimport EuiMarkdownEditorToolbar from './eui-markdown-editor-toolbar.gts';\nimport EuiMarkdownFormat from './eui-markdown-format.gts';\nimport EuiModal from './eui-modal.gts';\n\nimport type {\n EuiMarkdownAstNode,\n EuiMarkdownAstNodePosition,\n EuiMarkdownEditorUiPlugin\n} from '../utils/markdown/markdown-types';\nimport type { EuiMarkdownEditorTextAreaSignature } from './eui-markdown-editor-text-area';\nimport type { EuiMarkdownEditorToolbarSignature } from './eui-markdown-editor-toolbar';\nimport type { Processor } from 'unified';\n\nexport interface EuiMarkdownEditorArgs {\n initialViewMode?: string;\n editorId?: string;\n uiPlugins: EuiMarkdownEditorUiPlugin[];\n parsingPluginList?: typeof defaultParsingPlugins;\n processingPluginList?: typeof defaultProcessingPlugins;\n value: string;\n onChange: (str: string) => void;\n onParse?: (\n parseError: unknown | null,\n parsed: { messages: any[]; ast: any }\n ) => void;\n height?: number | string;\n maxHeight?: number | string;\n autoExpandPreview?: boolean;\n disabled?: boolean;\n isInvalid?: boolean;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n ariaDescribedBy?: string;\n}\n\nexport interface EuiMarkdownEditorSignature {\n Element: EuiMarkdownEditorTextAreaSignature['Element'];\n Args: EuiMarkdownEditorArgs;\n Blocks: {\n default: [];\n };\n}\n\nexport const getCursorNode = (\n textareaRef: HTMLTextAreaElement,\n parsed: any\n): EuiMarkdownAstNode => {\n const { selectionStart } = textareaRef;\n\n let node: EuiMarkdownAstNode = parsed.result ?? parsed.contents;\n\n //eslint-disable-next-line\n outer: while (true) {\n if (node.children) {\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n\n if (\n child &&\n child.position.start.offset < (selectionStart as number) &&\n (selectionStart as number) < child.position.end.offset\n ) {\n if (child.type === 'text') break outer; // don't dive into `text` nodes\n node = child;\n continue outer;\n }\n }\n }\n\n break;\n }\n\n return node;\n};\n\nfunction wrapper(\n textarea: HTMLTextAreaElement,\n parsed: any,\n callback: (node: EuiMarkdownAstNode) => void\n) {\n const node = getCursorNode(textarea, parsed);\n\n callback(node);\n}\n\nexport const getCursorNodeModifier = modifier(function getCursorNodeModifier(\n textarea: EuiMarkdownEditorTextAreaSignature['Element'],\n [parsed, onSelectedNode]: [any, (node: Node) => void]\n) {\n //@ts-expect-error\n const fn = wrapper.bind(null, textarea, parsed, onSelectedNode);\n\n textarea.addEventListener('keyup', fn);\n textarea.addEventListener('mouseup', fn);\n\n return () => {\n textarea.removeEventListener('keyup', fn);\n textarea.removeEventListener('mouseup', fn);\n };\n});\n\nfunction isNewLine(char: string | undefined): boolean {\n if (char == null) return true;\n\n return !!char.match(/[\\r\\n]/);\n}\n\nfunction padWithNewlinesIfNeeded(textarea: HTMLTextAreaElement, text: string) {\n const selectionStart = textarea.selectionStart;\n const selectionEnd = textarea.selectionEnd;\n\n // block parsing requires two leading new lines and none trailing, but we add an extra trailing line for readability\n const isPrevNewLine = isNewLine(textarea.value[selectionStart - 1]);\n const isPrevPrevNewLine = isNewLine(textarea.value[selectionStart - 2]);\n const isNextNewLine = isNewLine(textarea.value[selectionEnd]);\n\n // pad text with newlines as needed\n text = `${isPrevNewLine ? '' : '\\n'}${isPrevPrevNewLine ? '' : '\\n'}${text}${\n isNextNewLine ? '' : '\\n'\n }`;\n\n return text;\n}\n\nexport default class EuiMarkdownEditorComponent extends Component<EuiMarkdownEditorSignature> {\n @tracked pluginEditorPlugin?: EuiMarkdownEditorUiPlugin;\n\n // Defaults\n @argOrDefaultDecorator(defaultParsingPlugins) declare parsingPluginList: typeof defaultParsingPlugins;\n\n @argOrDefaultDecorator(250) declare height: number | string;\n @argOrDefaultDecorator(500) declare maxHeight: number | string;\n @argOrDefaultDecorator(true) declare autoExpandPreview: boolean;\n\n @argOrDefaultDecorator(defaultProcessingPlugins) declare processingPluginList: typeof defaultProcessingPlugins;\n\n @tracked selectedNode: Node | null = null;\n @tracked editorId = this.args.editorId ?? guidFor({});\n @tracked viewMode = this.args.initialViewMode || MODE_EDITING;\n @tracked textareaRef: HTMLTextAreaElement | null = null;\n @tracked previewRef: HTMLDivElement | null = null;\n @tracked editorToolbarRef: HTMLDivElement | null = null;\n @tracked currentHeight: number | string = 250;\n @tracked editorFooterHeight: number = 0;\n @tracked editorToolbarHeight: number = 0;\n\n markdownActions: MarkdownActions;\n\n get toolbarPlugins() {\n return [MarkdownTooltipPlugin.plugin, ...(this.args.uiPlugins || [])];\n }\n\n constructor(owner: Owner, args: EuiMarkdownEditorArgs) {\n super(owner, args);\n this.markdownActions = new MarkdownActions(\n this.editorId,\n this.toolbarPlugins\n );\n this.currentHeight = this.height;\n }\n\n get previewHeight() {\n if (this.height === 'full') {\n return `calc(100% - ${this.editorFooterHeight}px)`;\n }\n\n return `${this.currentHeight}px`;\n }\n\n get textAreaHeight() {\n return this.height === 'full'\n ? '100%'\n : `calc(${(this.height as number) - this.editorFooterHeight}px)`;\n }\n\n get textAreaMaxHeight() {\n return this.height !== 'full'\n ? `${(this.maxHeight as number) - this.editorFooterHeight}px`\n : '';\n }\n\n get editorToggleContainerHeight() {\n return `calc(100% - ${this.editorToolbarHeight}px)`;\n }\n\n @action\n onResize() {\n if (this.textareaRef && this.isEditing && this.height !== 'full') {\n const resizedTextareaHeight =\n this.textareaRef.offsetHeight + this.editorFooterHeight;\n\n const update = () => {\n this.currentHeight = resizedTextareaHeight;\n };\n\n scheduleOnce('afterRender', this, update);\n }\n }\n\n @action\n updateCurrentHeight() {\n let { isPreviewing, autoExpandPreview, height, previewRef, currentHeight } =\n this;\n\n if (isPreviewing && autoExpandPreview && height !== 'full' && previewRef) {\n //@ts-ignore\n if (previewRef.scrollHeight > currentHeight) {\n // scrollHeight does not include the border or margin\n // so we ask for the computed value for those,\n // which is always in pixels because getComputedValue\n // returns the resolved values\n const elementComputedStyle = window.getComputedStyle(previewRef);\n const borderWidth =\n parseFloat(elementComputedStyle.borderTopWidth) +\n parseFloat(elementComputedStyle.borderBottomWidth);\n const marginWidth =\n parseFloat(elementComputedStyle.marginTop) +\n parseFloat(elementComputedStyle.marginBottom);\n\n // then add an extra pixel for safety and because the scrollHeight value is rounded\n const extraHeight = borderWidth + marginWidth + 1;\n\n const update = () => {\n if (previewRef) {\n this.currentHeight = previewRef.scrollHeight + extraHeight;\n }\n };\n\n scheduleOnce('afterRender', this, update);\n }\n }\n }\n\n getCursorNode = () => {};\n\n @action\n setTextAreaRef(ref: HTMLTextAreaElement) {\n this.textareaRef = ref;\n }\n\n @action\n setEditorToolbarRef(ref: EuiMarkdownEditorToolbarSignature['Element']) {\n this.editorToolbarRef = ref;\n this.editorToolbarHeight = ref.offsetHeight;\n }\n\n @action\n replaceNode(position: EuiMarkdownAstNodePosition, next: string) {\n let value = this.args.value;\n const leading = value.substr(0, position.start.offset);\n const trailing = value.substr(position.end.offset);\n\n this.args.onChange?.(`${leading}${next}${trailing}`);\n }\n\n get isEditing() {\n return this.viewMode === MODE_EDITING;\n }\n\n get isPreviewing() {\n return this.viewMode === MODE_VIEWING;\n }\n\n @action\n setViewMode() {\n this.viewMode = this.isPreviewing ? MODE_EDITING : MODE_VIEWING;\n }\n\n @cached\n get parser() {\n const Compiler = (tree: any) => {\n return tree;\n };\n\n function identityCompiler(this: Processor) {\n //eslint-disable-next-line\n this.Compiler = Compiler;\n }\n\n return unified().use(this.parsingPluginList).use(identityCompiler);\n }\n\n @cached\n get parsed(): [\n ReturnType<typeof this.parser.processSync> | null,\n null | unknown\n ] {\n try {\n const parsed = this.parser.processSync(this.args.value);\n\n return [parsed, null];\n } catch (e) {\n return [null, e];\n }\n }\n\n get vFile() {\n return this.parsed[0];\n }\n\n @action\n onParse() {\n if (this.args.onParse) {\n const [parsed, parseError] = this.parsed;\n const onParse = this.args.onParse;\n const messages = parsed ? parsed.messages : [];\n const ast = parsed ? parsed['result'] ?? parsed.contents : null;\n\n onParse(parseError, { messages, ast });\n }\n }\n\n @action\n setSelectedNode(node: Node) {\n this.selectedNode = node;\n }\n\n openPluginEditor = (plugin: EuiMarkdownEditorUiPlugin) => {\n this.pluginEditorPlugin = plugin;\n };\n\n onEditorPluginSave = (markdown: any, config: any) => {\n let { selectedNode, textareaRef } = this;\n\n if (\n this.pluginEditorPlugin &&\n selectedNode &&\n // @ts-expect-error\n selectedNode.type === this.pluginEditorPlugin.name &&\n // @ts-expect-error\n selectedNode.position\n ) {\n // modifying an existing node\n textareaRef!.setSelectionRange(\n // @ts-expect-error\n selectedNode.position.start.offset,\n // @ts-expect-error\n selectedNode.position.end.offset\n );\n } else {\n // creating a new node\n if (config.block) {\n // inject newlines if needed\n markdown = padWithNewlinesIfNeeded(textareaRef!, markdown);\n }\n }\n\n insertText(textareaRef!, {\n text: markdown,\n selectionStart: undefined,\n selectionEnd: undefined\n });\n\n this.pluginEditorPlugin = undefined;\n };\n\n <template>\n <div\n class={{classNames\n \"euiMarkdownEditor\"\n (if (eq this.height \"full\") \"euiMarkdownEditor--fullHeight\")\n (if this.isPreviewing \"euiMarkdownEditor--isPreviewing\")\n }}\n {{didUpdate\n this.updateCurrentHeight\n this.currentHeight\n this.isPreviewing\n this.height\n this.autoExpandPreview\n }}\n >\n <EuiMarkdownEditorToolbar\n @selectedNode={{this.selectedNode}}\n @markdownActions={{this.markdownActions}}\n @onClickPreview={{this.setViewMode}}\n @openPluginEditor={{this.openPluginEditor}}\n @viewMode={{this.viewMode}}\n @uiPlugins={{this.toolbarPlugins}}\n {{didInsert this.setEditorToolbarRef}}\n />\n {{#if this.isPreviewing}}\n <div\n class=\"euiMarkdownEditorPreview\"\n {{didInsert (set this \"previewRef\")}}\n {{style (hash height=this.previewHeight)}}\n >\n <EuiMarkdownFormat\n @parsingPluginList={{this.parsingPluginList}}\n @processingPluginList={{this.processingPluginList}}\n @value={{@value}}\n @replaceNode={{this.replaceNode}}\n />\n </div>\n {{/if}}\n\n <div\n class=\"euiMarkdownEditor__toggleContainer\"\n {{style height=this.editorToggleContainerHeight}}\n >\n <EuiMarkdownEditorDropZone\n @uiPlugins={{this.toolbarPlugins}}\n {{resizeObserver onResize=this.onResize}}\n >\n <EuiMarkdownEditorTextArea\n {{getCursorNodeModifier this.vFile this.setSelectedNode}}\n {{didUpdate this.onParse this.parsed}}\n {{didInsert this.setTextAreaRef}}\n disabled={{@disabled}}\n id={{this.editorId}}\n @height={{this.textAreaHeight}}\n @maxHeight={{this.textAreaMaxHeight}}\n value={{@value}}\n aria-label={{@ariaLabel}}\n aria-labelledby={{@ariaLabelledBy}}\n aria-describedby={{@ariaDescribedBy}}\n {{on \"input\" (pick \"target.value\" @onChange)}}\n {{validatableControl @isInvalid}}\n ...attributes\n />\n </EuiMarkdownEditorDropZone>\n {{#if this.pluginEditorPlugin.editor}}\n <EuiModal @onClose={{set this \"pluginEditorPlugin\" undefined}}>\n {{#let (component this.pluginEditorPlugin.editor) as |Editor|}}\n <Editor\n @node={{this.selectedNode}}\n @onCancel={{set this \"pluginEditorPlugin\" undefined}}\n @onSave={{this.onEditorPluginSave}}\n />\n {{/let}}\n </EuiModal>\n {{/if}}\n </div>\n </div>\n </template>\n}\n"],"names":["getCursorNode","textareaRef","parsed","selectionStart","node","result","contents","outer","children","i","length","child","position","start","offset","end","type","wrapper","textarea","callback","getCursorNodeModifier","modifier","onSelectedNode","fn","bind","addEventListener","removeEventListener","isNewLine","char","match","padWithNewlinesIfNeeded","text","selectionEnd","isPrevNewLine","value","isPrevPrevNewLine","isNextNewLine","EuiMarkdownEditorComponent","Component","g","prototype","tracked","void 0","argOrDefaultDecorator","defaultParsingPlugins","defaultProcessingPlugins","args","editorId","guidFor","initialViewMode","MODE_EDITING","markdownActions","toolbarPlugins","MarkdownTooltipPlugin","uiPlugins","constructor","owner","MarkdownActions","currentHeight","height","previewHeight","editorFooterHeight","textAreaHeight","textAreaMaxHeight","maxHeight","editorToggleContainerHeight","editorToolbarHeight","onResize","isEditing","resizedTextareaHeight","offsetHeight","update","scheduleOnce","n","action","updateCurrentHeight","isPreviewing","autoExpandPreview","previewRef","scrollHeight","elementComputedStyle","window","getComputedStyle","borderWidth","parseFloat","borderTopWidth","borderBottomWidth","marginWidth","marginTop","marginBottom","extraHeight","setTextAreaRef","ref","setEditorToolbarRef","editorToolbarRef","replaceNode","next","leading","substr","trailing","onChange","viewMode","MODE_VIEWING","setViewMode","parser","Compiler","tree","identityCompiler","unified","use","parsingPluginList","cached","processSync","e","vFile","onParse","parseError","messages","ast","setSelectedNode","selectedNode","openPluginEditor","plugin","pluginEditorPlugin","onEditorPluginSave","markdown","config","name","setSelectionRange","block","insertText","undefined","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","eq","didUpdate","EuiMarkdownEditorToolbar","didInsert","set","style","hash","EuiMarkdownFormat","EuiMarkdownEditorDropZone","resizeObserver","EuiMarkdownEditorTextArea","on","pick","validatableControl","EuiModal"],"mappings":"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"}
diff --git a/dist/components/eui-markdown-format.js b/dist/components/eui-markdown-format.js
index e9fd8e6cc9a217cceaaa170b1b27d27b175cda4c..4780c44eec5b2a8f29e73d9d2b2d3335fe444a5a 100644
--- a/dist/components/eui-markdown-format.js
+++ b/dist/components/eui-markdown-format.js
@@ -2,7 +2,7 @@ import Component from '@glimmer/component';
import { cached } from '@glimmer/tracking';
import { isArray } from '@ember/array';
import { EnsureSafeComponentHelper } from '@embroider/util';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import unified from 'unified';
import { defaultParsingPlugins } from '../utils/markdown/plugins/markdown-default-plugins/parsing-plugins.js';
import { defaultProcessingPlugins } from '../utils/markdown/plugins/markdown-default-plugins/processing-plugins.js';
diff --git a/dist/components/eui-markdown-format.js.map b/dist/components/eui-markdown-format.js.map
index 2a67a8d5b224483f84c4d890e87e90624f022899..696e8aa85a826f404ad6abb9bdce2e4e6fe9951f 100644
--- a/dist/components/eui-markdown-format.js.map
+++ b/dist/components/eui-markdown-format.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-markdown-format.js","sources":["../../src/components/eui-markdown-format.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached } from '@glimmer/tracking';\nimport { isArray } from '@ember/array';\nimport { EnsureSafeComponentHelper } from '@embroider/util';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport unified from 'unified';\n\nimport {\n defaultParsingPlugins,\n defaultProcessingPlugins\n} from '../utils/markdown/plugins/markdown-default-plugins/index.ts';\nimport { toDOM } from '../utils/markdown/plugins/to-dom.ts';\n\nimport type {\n EuiMarkdownAstNodePosition,\n RehypeNode} from '../utils/markdown/markdown-types';\nimport type { Processor } from 'unified';\n\nexport type Replacer = (\n position: EuiMarkdownAstNodePosition,\n str: string\n) => void;\n\nexport interface EuiMarkdownFormatSignature {\n parsingPluginList?: typeof defaultParsingPlugins;\n processingPluginList?: typeof defaultProcessingPlugins;\n replaceNode?: Replacer;\n value: string;\n //you can pass in a string or an array of strings to be added to the root element\n rootClasses?: string | string[];\n}\n\nexport default class EuiMarkdownEditorToolbarComponent extends Component<EuiMarkdownFormatSignature> {\n get parsingPluginList() {\n return this.args.parsingPluginList || defaultParsingPlugins;\n }\n\n get processingPluginList() {\n return this.args.processingPluginList || defaultProcessingPlugins;\n }\n\n @cached\n get processor() {\n const Compiler = (tree: any) => {\n return tree;\n };\n\n function identityCompiler(this: Processor) {\n //eslint-disable-next-line\n this.Compiler = Compiler;\n }\n\n return unified()\n .use(this.parsingPluginList)\n .use(this.processingPluginList)\n .use(identityCompiler);\n }\n\n get rootClasses(): string[] {\n let baseClasses = ['euiMarkdownFormat', 'euiText', 'euiText--medium'];\n\n if (this.args.rootClasses) {\n let rootClasses = isArray(this.args.rootClasses)\n ? this.args.rootClasses\n : (this.args.rootClasses as string)?.trim()?.split(' ') || [];\n\n baseClasses = baseClasses.concat(rootClasses);\n }\n\n return baseClasses;\n }\n\n @cached\n get result() {\n try {\n const processed = this.processor.processSync(this.args.value);\n\n return toDOM(processed['result'] as RehypeNode, {\n rootClasses: this.rootClasses\n });\n //eslint-disable-next-line\n } catch (e) {\n console.warn(e);\n }\n \n return null;\n }\n\n <template>\n {{! This hbs was inspired by https://github.com/ampatspell/ember-cli-remark-static/blob/v3.0.5/addon/components/remark.hbs }}\n {{#if this.result}}\n {{this.result.element}}\n {{#each this.result.components as |CompNode|}}\n {{#in-element CompNode.element}}\n {{#if CompNode.componentName}}\n {{#let\n (component (EnsureSafeComponentHelper CompNode.componentName))\n as |DynamicComponent|\n }}\n <DynamicComponent\n @replaceNode={{optional @replaceNode}}\n @node={{CompNode}}\n />\n {{/let}}\n {{/if}}\n {{/in-element}}\n {{/each}}\n {{/if}}\n </template>\n}\n"],"names":["EuiMarkdownEditorToolbarComponent","Component","parsingPluginList","args","defaultParsingPlugins","processingPluginList","defaultProcessingPlugins","processor","Compiler","tree","identityCompiler","unified","use","n","prototype","cached","rootClasses","baseClasses","isArray","trim","split","concat","result","processed","processSync","value","toDOM","e","console","warn","setComponentTemplate","precompileTemplate","strictMode","scope","EnsureSafeComponentHelper","optional"],"mappings":";;;;;;;;;;;;;;AAiCe,MAAMA,0CAA0CC,SAAU,CAAA;EACvE,IAAIC,iBAAoBA,GAAA;AACtB,IAAA,OAAO,IAAI,CAACC,IAAI,CAACD,iBAAiB,IAAIE,qBAAA;AACxC;EAEA,IAAIC,oBAAuBA,GAAA;AACzB,IAAA,OAAO,IAAI,CAACF,IAAI,CAACE,oBAAoB,IAAIC,wBAAA;AAC3C;EAEA,IACIC,SAAYA,GAAA;IACd,MAAMC,QAAA,GAAYC,IAAS,IAAA;AACzB,MAAA,OAAOA,IAAA;KACT;IAEA,SAASC,gBAAAA,GAAgC;AACvC;MACA,IAAI,CAACF,QAAQ,GAAGA,QAAA;AAClB;IAEA,OAAOG,OACJ,EAAA,CAAAC,GAAG,CAAC,IAAI,CAACV,iBAAiB,CAAA,CAC1BU,GAAG,CAAC,IAAI,CAACP,oBAAoB,CAAA,CAC7BO,GAAG,CAACF,gBAAA,CAAA;AACT;AAAA,EAAA;IAAAG,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CAfCC,MAAA,CAAA,CAAA;AAAA;EAiBD,IAAIC,WAAAA,GAAwB;IAC1B,IAAIC,WAAc,GAAA,CAAC,mBAAA,EAAqB,SAAA,EAAW,iBAAA,CAAkB;AAErE,IAAA,IAAI,IAAI,CAACd,IAAI,CAACa,WAAW,EAAE;AACzB,MAAA,IAAIA,WAAA,GAAcE,OAAQ,CAAA,IAAI,CAACf,IAAI,CAACa,WAAW,CAC3C,GAAA,IAAI,CAACb,IAAI,CAACa,WAAW,GACpB,IAAI,CAACb,IAAI,CAACa,WAAW,EAAaG,IAAA,EAAA,EAAQC,KAAM,CAAA,GAAA,CAAA,IAAQ,EAAE;AAE/DH,MAAAA,WAAc,GAAAA,WAAA,CAAYI,MAAM,CAACL,WAAA,CAAA;AACnC;AAEA,IAAA,OAAOC,WAAA;AACT;EAEA,IACIK,MAASA,GAAA;IACX,IAAI;AACF,MAAA,MAAMC,SAAA,GAAY,IAAI,CAAChB,SAAS,CAACiB,WAAW,CAAC,IAAI,CAACrB,IAAI,CAACsB,KAAK,CAAA;AAE5D,MAAA,OAAOC,KAAM,CAAAH,SAAS,CAAC,QAAA,CAAS,EAAgB;QAC9CP,WAAa,EAAA,IAAI,CAACA;AACpB,OAAA,CAAA;AACA;KACF,CAAE,OAAOW,CAAG,EAAA;AACVC,MAAAA,OAAA,CAAQC,IAAI,CAACF,CAAA,CAAA;AACf;AAEA,IAAA,OAAO,IAAA;AACT;AAAA,EAAA;IAAAd,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,QAAA,EAAA,CAdCC,MAAA,CAAA,CAAA;AAAA;AAgBD,EAAA;IAAAe,oBAAA,CAAAC,kBAAA,CAoBA,wnBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,yBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-markdown-format.js","sources":["../../src/components/eui-markdown-format.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached } from '@glimmer/tracking';\nimport { isArray } from '@ember/array';\nimport { EnsureSafeComponentHelper } from '@embroider/util';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport unified from 'unified';\n\nimport {\n defaultParsingPlugins,\n defaultProcessingPlugins\n} from '../utils/markdown/plugins/markdown-default-plugins/index.ts';\nimport { toDOM } from '../utils/markdown/plugins/to-dom.ts';\n\nimport type {\n EuiMarkdownAstNodePosition,\n RehypeNode} from '../utils/markdown/markdown-types';\nimport type { Processor } from 'unified';\n\nexport type Replacer = (\n position: EuiMarkdownAstNodePosition,\n str: string\n) => void;\n\nexport interface EuiMarkdownFormatSignature {\n parsingPluginList?: typeof defaultParsingPlugins;\n processingPluginList?: typeof defaultProcessingPlugins;\n replaceNode?: Replacer;\n value: string;\n //you can pass in a string or an array of strings to be added to the root element\n rootClasses?: string | string[];\n}\n\nexport default class EuiMarkdownEditorToolbarComponent extends Component<EuiMarkdownFormatSignature> {\n get parsingPluginList() {\n return this.args.parsingPluginList || defaultParsingPlugins;\n }\n\n get processingPluginList() {\n return this.args.processingPluginList || defaultProcessingPlugins;\n }\n\n @cached\n get processor() {\n const Compiler = (tree: any) => {\n return tree;\n };\n\n function identityCompiler(this: Processor) {\n //eslint-disable-next-line\n this.Compiler = Compiler;\n }\n\n return unified()\n .use(this.parsingPluginList)\n .use(this.processingPluginList)\n .use(identityCompiler);\n }\n\n get rootClasses(): string[] {\n let baseClasses = ['euiMarkdownFormat', 'euiText', 'euiText--medium'];\n\n if (this.args.rootClasses) {\n let rootClasses = isArray(this.args.rootClasses)\n ? this.args.rootClasses\n : (this.args.rootClasses as string)?.trim()?.split(' ') || [];\n\n baseClasses = baseClasses.concat(rootClasses);\n }\n\n return baseClasses;\n }\n\n @cached\n get result() {\n try {\n const processed = this.processor.processSync(this.args.value);\n\n return toDOM(processed['result'] as RehypeNode, {\n rootClasses: this.rootClasses\n });\n //eslint-disable-next-line\n } catch (e) {\n console.warn(e);\n }\n \n return null;\n }\n\n <template>\n {{! This hbs was inspired by https://github.com/ampatspell/ember-cli-remark-static/blob/v3.0.5/addon/components/remark.hbs }}\n {{#if this.result}}\n {{this.result.element}}\n {{#each this.result.components as |CompNode|}}\n {{#in-element CompNode.element}}\n {{#if CompNode.componentName}}\n {{#let\n (component (EnsureSafeComponentHelper CompNode.componentName))\n as |DynamicComponent|\n }}\n <DynamicComponent\n @replaceNode={{optional @replaceNode}}\n @node={{CompNode}}\n />\n {{/let}}\n {{/if}}\n {{/in-element}}\n {{/each}}\n {{/if}}\n </template>\n}\n"],"names":["EuiMarkdownEditorToolbarComponent","Component","parsingPluginList","args","defaultParsingPlugins","processingPluginList","defaultProcessingPlugins","processor","Compiler","tree","identityCompiler","unified","use","n","prototype","cached","rootClasses","baseClasses","isArray","trim","split","concat","result","processed","processSync","value","toDOM","e","console","warn","setComponentTemplate","precompileTemplate","strictMode","scope","EnsureSafeComponentHelper","optional"],"mappings":";;;;;;;;;;;;;;AAiCe,MAAMA,0CAA0CC,SAAU,CAAA;EACvE,IAAIC,iBAAoBA,GAAA;AACtB,IAAA,OAAO,IAAI,CAACC,IAAI,CAACD,iBAAiB,IAAIE,qBAAA;AACxC;EAEA,IAAIC,oBAAuBA,GAAA;AACzB,IAAA,OAAO,IAAI,CAACF,IAAI,CAACE,oBAAoB,IAAIC,wBAAA;AAC3C;EAEA,IACIC,SAAYA,GAAA;IACd,MAAMC,QAAA,GAAYC,IAAS,IAAA;AACzB,MAAA,OAAOA,IAAA;KACT;IAEA,SAASC,gBAAAA,GAAgC;AACvC;MACA,IAAI,CAACF,QAAQ,GAAGA,QAAA;AAClB;IAEA,OAAOG,OACJ,EAAA,CAAAC,GAAG,CAAC,IAAI,CAACV,iBAAiB,CAAA,CAC1BU,GAAG,CAAC,IAAI,CAACP,oBAAoB,CAAA,CAC7BO,GAAG,CAACF,gBAAA,CAAA;AACT;AAAA,EAAA;IAAAG,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CAfCC,MAAA,CAAA,CAAA;AAAA;EAiBD,IAAIC,WAAAA,GAAwB;IAC1B,IAAIC,WAAc,GAAA,CAAC,mBAAA,EAAqB,SAAA,EAAW,iBAAA,CAAkB;AAErE,IAAA,IAAI,IAAI,CAACd,IAAI,CAACa,WAAW,EAAE;AACzB,MAAA,IAAIA,WAAA,GAAcE,OAAQ,CAAA,IAAI,CAACf,IAAI,CAACa,WAAW,CAC3C,GAAA,IAAI,CAACb,IAAI,CAACa,WAAW,GACpB,IAAI,CAACb,IAAI,CAACa,WAAW,EAAaG,IAAA,EAAA,EAAQC,KAAM,CAAA,GAAA,CAAA,IAAQ,EAAE;AAE/DH,MAAAA,WAAc,GAAAA,WAAA,CAAYI,MAAM,CAACL,WAAA,CAAA;AACnC;AAEA,IAAA,OAAOC,WAAA;AACT;EAEA,IACIK,MAASA,GAAA;IACX,IAAI;AACF,MAAA,MAAMC,SAAA,GAAY,IAAI,CAAChB,SAAS,CAACiB,WAAW,CAAC,IAAI,CAACrB,IAAI,CAACsB,KAAK,CAAA;AAE5D,MAAA,OAAOC,KAAM,CAAAH,SAAS,CAAC,QAAA,CAAS,EAAgB;QAC9CP,WAAa,EAAA,IAAI,CAACA;AACpB,OAAA,CAAA;AACA;KACF,CAAE,OAAOW,CAAG,EAAA;AACVC,MAAAA,OAAA,CAAQC,IAAI,CAACF,CAAA,CAAA;AACf;AAEA,IAAA,OAAO,IAAA;AACT;AAAA,EAAA;IAAAd,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,QAAA,EAAA,CAdCC,MAAA,CAAA,CAAA;AAAA;AAgBD,EAAA;IAAAe,oBAAA,CAAAC,kBAAA,CAoBA,wnBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,yBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
diff --git a/dist/components/eui-modal.js b/dist/components/eui-modal.js
index 374448447e75d879129ad3100b520c9d96b3ba32..58e0a40d09b1d6c0225d71f30370549d9f7f11cf 100644
--- a/dist/components/eui-modal.js
+++ b/dist/components/eui-modal.js
@@ -1,6 +1,6 @@
import { hash } from '@ember/helper';
import { on } from '@ember/modifier';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import preventDefault from 'ember-event-helpers/helpers/prevent-default';
import stopPropagation from 'ember-event-helpers/helpers/stop-propagation';
import { focusTrap } from 'ember-focus-trap';
diff --git a/dist/components/eui-modal.js.map b/dist/components/eui-modal.js.map
index ad5826f13b4fe3326574f38df695d0f784a51beb..f4b5bf96fc48e91f3fddbbd7d92b146972564bd3 100644
--- a/dist/components/eui-modal.js.map
+++ b/dist/components/eui-modal.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-modal.js","sources":["../../src/components/eui-modal.gts"],"sourcesContent":["import { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport preventDefault from 'ember-event-helpers/helpers/prevent-default';\nimport stopPropagation from 'ember-event-helpers/helpers/stop-propagation';\nimport { focusTrap } from 'ember-focus-trap';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, notEq } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport inlineStyles from '../helpers/inline-styles.ts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiOverlayMask from './eui-overlay-mask.gts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiModalSignature {\n Element: HTMLDivElement;\n Args: {\n onClose?: (e: Event) => void;\n maxWidth?: boolean | string;\n clickOutsideToClose?: boolean;\n isFocusTrapActive?: boolean;\n shouldSelfFocus?: boolean;\n isFocusTrapPaused?: boolean;\n focusTrapOptions?: {\n allowOutsideClick?: boolean;\n clickOutsideDeactivates?: boolean;\n initialFocus?: string | HTMLElement | (() => HTMLElement);\n fallbackFocus?: string | HTMLElement | (() => HTMLElement);\n escapeDeactivates?: boolean;\n returnFocusOnDeactivate?: boolean;\n preventScroll?: boolean;\n };\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiModal: TemplateOnlyComponent<EuiModalSignature> = <template>\n {{#let\n (if\n (and @maxWidth (notEq @maxWidth true))\n (inlineStyles\n componentName=\"EuiModal\" componentArgs=(hash maxWidth=@maxWidth)\n )\n (hash)\n )\n as |inlineStyles|\n }}\n <EuiOverlayMask\n @onClick={{if @clickOutsideToClose (optional @onClose) (optional)}}\n >\n <div\n class={{classNames\n \"euiModal\"\n (if (eq @maxWidth true) \"euiModal--maxWidth-default\")\n }}\n tabindex=\"0\"\n ...attributes\n {{style inlineStyles}}\n {{focusTrap\n isActive=(argOrDefault @isFocusTrapActive true)\n shouldSelfFocus=(argOrDefault @shouldSelfFocus true)\n isPaused=(argOrDefault @isFocusTrapPaused false)\n focusTrapOptions=(argOrDefault @focusTrapOptions (hash))\n }}\n {{onKey\n \"Escape\"\n (preventDefault (stopPropagation (optional @onClose)))\n }}\n >\n <EuiButtonIcon\n class=\"euiModal__closeIcon\"\n @iconType=\"cross\"\n @color=\"text\"\n {{on \"click\" (optional @onClose)}}\n />\n <div class=\"euiModal__flex\">\n {{yield}}\n </div>\n </div>\n </EuiOverlayMask>\n {{/let}}\n</template>;\n\nexport default EuiModal;\n"],"names":["EuiModal","setComponentTemplate","precompileTemplate","strictMode","scope","and","notEq","inlineStyles","hash","EuiOverlayMask","optional","classNames","eq","style","focusTrap","argOrDefault","onKey","preventDefault","stopPropagation","EuiButtonIcon","on","templateOnly"],"mappings":";;;;;;;;;;;;;;;;;;AA2CA,MAAMA,QAAqD,GAAAC,oBAAA,CAAAC,kBAAA,CA6C3D,q8BAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,KAAA;IAAAC,YAAA;IAAAC,IAAA;oBAAAC,uBAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,KAAA;IAAAC,SAAA;IAAAC,YAAA;IAAAC,KAAA;IAAAC,cAAA;IAAAC,eAAA;IAAAC,aAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-modal.js","sources":["../../src/components/eui-modal.gts"],"sourcesContent":["import { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport preventDefault from 'ember-event-helpers/helpers/prevent-default';\nimport stopPropagation from 'ember-event-helpers/helpers/stop-propagation';\nimport { focusTrap } from 'ember-focus-trap';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, notEq } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport inlineStyles from '../helpers/inline-styles.ts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiOverlayMask from './eui-overlay-mask.gts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiModalSignature {\n Element: HTMLDivElement;\n Args: {\n onClose?: (e: Event) => void;\n maxWidth?: boolean | string;\n clickOutsideToClose?: boolean;\n isFocusTrapActive?: boolean;\n shouldSelfFocus?: boolean;\n isFocusTrapPaused?: boolean;\n focusTrapOptions?: {\n allowOutsideClick?: boolean;\n clickOutsideDeactivates?: boolean;\n initialFocus?: string | HTMLElement | (() => HTMLElement);\n fallbackFocus?: string | HTMLElement | (() => HTMLElement);\n escapeDeactivates?: boolean;\n returnFocusOnDeactivate?: boolean;\n preventScroll?: boolean;\n };\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiModal: TemplateOnlyComponent<EuiModalSignature> = <template>\n {{#let\n (if\n (and @maxWidth (notEq @maxWidth true))\n (inlineStyles\n componentName=\"EuiModal\" componentArgs=(hash maxWidth=@maxWidth)\n )\n (hash)\n )\n as |inlineStyles|\n }}\n <EuiOverlayMask\n @onClick={{if @clickOutsideToClose (optional @onClose) (optional)}}\n >\n <div\n class={{classNames\n \"euiModal\"\n (if (eq @maxWidth true) \"euiModal--maxWidth-default\")\n }}\n tabindex=\"0\"\n ...attributes\n {{style inlineStyles}}\n {{focusTrap\n isActive=(argOrDefault @isFocusTrapActive true)\n shouldSelfFocus=(argOrDefault @shouldSelfFocus true)\n isPaused=(argOrDefault @isFocusTrapPaused false)\n focusTrapOptions=(argOrDefault @focusTrapOptions (hash))\n }}\n {{onKey\n \"Escape\"\n (preventDefault (stopPropagation (optional @onClose)))\n }}\n >\n <EuiButtonIcon\n class=\"euiModal__closeIcon\"\n @iconType=\"cross\"\n @color=\"text\"\n {{on \"click\" (optional @onClose)}}\n />\n <div class=\"euiModal__flex\">\n {{yield}}\n </div>\n </div>\n </EuiOverlayMask>\n {{/let}}\n</template>;\n\nexport default EuiModal;\n"],"names":["EuiModal","setComponentTemplate","precompileTemplate","strictMode","scope","and","notEq","inlineStyles","hash","EuiOverlayMask","optional","classNames","eq","style","focusTrap","argOrDefault","onKey","preventDefault","stopPropagation","EuiButtonIcon","on","templateOnly"],"mappings":";;;;;;;;;;;;;;;;;;AA2CA,MAAMA,QAAqD,GAAAC,oBAAA,CAAAC,kBAAA,CA6C3D,q8BAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,KAAA;IAAAC,YAAA;IAAAC,IAAA;oBAAAC,uBAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,KAAA;IAAAC,SAAA;IAAAC,YAAA;IAAAC,KAAA;IAAAC,cAAA;IAAAC,eAAA;IAAAC,aAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-notification-event-messages.js b/dist/components/eui-notification-event-messages.js
index 655bfc7baf625bc3e4227c18274e4c42aeb008b2..87e5ea79fb71933d64ffa4486cef5d0678ab37af 100644
--- a/dist/components/eui-notification-event-messages.js
+++ b/dist/components/eui-notification-event-messages.js
@@ -1,6 +1,6 @@
import { concat } from '@ember/helper';
-import objectAt from 'ember-composable-helpers/helpers/object-at';
-import without from 'ember-composable-helpers/helpers/without';
+import objectAt from '@nullvoxpopuli/ember-composable-helpers/helpers/object-at';
+import without from '@nullvoxpopuli/ember-composable-helpers/helpers/without';
import randomId from '../-private/random-id.js';
import EuiAccordionAccordionComponent from './eui-accordion.js';
import EuiTextComponent from './eui-text.js';
diff --git a/dist/components/eui-notification-event-messages.js.map b/dist/components/eui-notification-event-messages.js.map
index d8ceee445c1e8ee8d1637aa42cb003f33f8ea939..a15da512b3951dc52de14d924e814b66a7563b76 100644
--- a/dist/components/eui-notification-event-messages.js.map
+++ b/dist/components/eui-notification-event-messages.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-notification-event-messages.js","sources":["../../src/components/eui-notification-event-messages.gts"],"sourcesContent":["import { concat } from '@ember/helper';\n\nimport objectAt from 'ember-composable-helpers/helpers/object-at';\nimport without from 'ember-composable-helpers/helpers/without';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiAccordion from './eui-accordion.gts';\nimport EuiText from './eui-text.gts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiNotificationEventMessagesSignature {\n Element: HTMLDivElement;\n Args: {\n messages: string[];\n accordionButtonText?: string;\n accordionHideText?: string;\n accordionAriaLabelButtonText?: string;\n };\n}\n\nconst EuiNotificationEventMessages: TemplateOnlyComponent<EuiNotificationEventMessagesSignature> =\n <template>\n <div class=\"euiNotificationEventMessages\" ...attributes>\n {{#let\n (objectAt 0 @messages) (without (objectAt 0 @messages) @messages)\n as |first rest|\n }}\n\n {{#if first}}\n <EuiText @size=\"s\" @color=\"subdued\">\n <p>{{first}}</p>\n </EuiText>\n {{/if}}\n\n {{#if rest}}\n\n <EuiAccordion\n id={{concat \"euiNotificationEventMessagesAccordion\" (randomId)}}\n class=\"euiNotificationEventMessages__accordion\"\n @buttonClassName=\"euiNotificationEventMessages__accordionButton\"\n @arrowDisplay=\"none\"\n >\n <:buttonContent as |isOpen|>\n {{@accordionButtonText}}\n {{#unless isOpen}}\n ({{@accordionHideText}})\n {{/unless}}\n </:buttonContent>\n\n <:content>\n <div class=\"euiNotificationEventMessages__accordionContent\">\n {{#each rest as |msg|}}\n <EuiText @size=\"s\" @color=\"subdued\">\n <p>{{msg}}</p>\n </EuiText>\n {{/each}}\n </div>\n </:content>\n\n </EuiAccordion>\n {{/if}}\n\n {{/let}}\n </div>\n </template>;\n\nexport default EuiNotificationEventMessages;\n"],"names":["EuiNotificationEventMessages","setComponentTemplate","precompileTemplate","strictMode","scope","objectAt","without","EuiText","EuiAccordion","concat","randomId","templateOnly"],"mappings":";;;;;;;;;;AAqBA,MAAMA,4BACJ,GAAAC,oBAAA,CAAAC,kBAAA,CA2CA,0rCAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,QAAA;IAAAC,OAAA;aAAAC,gBAAA;kBAAAC,8BAAA;IAAAC,MAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-notification-event-messages.js","sources":["../../src/components/eui-notification-event-messages.gts"],"sourcesContent":["import { concat } from '@ember/helper';\n\nimport objectAt from '@nullvoxpopuli/ember-composable-helpers/helpers/object-at';\nimport without from '@nullvoxpopuli/ember-composable-helpers/helpers/without';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiAccordion from './eui-accordion.gts';\nimport EuiText from './eui-text.gts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiNotificationEventMessagesSignature {\n Element: HTMLDivElement;\n Args: {\n messages: string[];\n accordionButtonText?: string;\n accordionHideText?: string;\n accordionAriaLabelButtonText?: string;\n };\n}\n\nconst EuiNotificationEventMessages: TemplateOnlyComponent<EuiNotificationEventMessagesSignature> =\n <template>\n <div class=\"euiNotificationEventMessages\" ...attributes>\n {{#let\n (objectAt 0 @messages) (without (objectAt 0 @messages) @messages)\n as |first rest|\n }}\n\n {{#if first}}\n <EuiText @size=\"s\" @color=\"subdued\">\n <p>{{first}}</p>\n </EuiText>\n {{/if}}\n\n {{#if rest}}\n\n <EuiAccordion\n id={{concat \"euiNotificationEventMessagesAccordion\" (randomId)}}\n class=\"euiNotificationEventMessages__accordion\"\n @buttonClassName=\"euiNotificationEventMessages__accordionButton\"\n @arrowDisplay=\"none\"\n >\n <:buttonContent as |isOpen|>\n {{@accordionButtonText}}\n {{#unless isOpen}}\n ({{@accordionHideText}})\n {{/unless}}\n </:buttonContent>\n\n <:content>\n <div class=\"euiNotificationEventMessages__accordionContent\">\n {{#each rest as |msg|}}\n <EuiText @size=\"s\" @color=\"subdued\">\n <p>{{msg}}</p>\n </EuiText>\n {{/each}}\n </div>\n </:content>\n\n </EuiAccordion>\n {{/if}}\n\n {{/let}}\n </div>\n </template>;\n\nexport default EuiNotificationEventMessages;\n"],"names":["EuiNotificationEventMessages","setComponentTemplate","precompileTemplate","strictMode","scope","objectAt","without","EuiText","EuiAccordion","concat","randomId","templateOnly"],"mappings":";;;;;;;;;;AAqBA,MAAMA,4BACJ,GAAAC,oBAAA,CAAAC,kBAAA,CA2CA,0rCAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,QAAA;IAAAC,OAAA;aAAAC,gBAAA;kBAAAC,8BAAA;IAAAC,MAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-notification-event-meta.js b/dist/components/eui-notification-event-meta.js
index 1f1bd73b2fefb079e79595997edafe78a692c720..1dcd9efb479cc242b2fcbe1f2841e28438a2e432 100644
--- a/dist/components/eui-notification-event-meta.js
+++ b/dist/components/eui-notification-event-meta.js
@@ -1,7 +1,7 @@
import { concat, fn } from '@ember/helper';
import { on } from '@ember/modifier';
-import optional from 'ember-composable-helpers/helpers/optional';
-import queue from 'ember-composable-helpers/helpers/queue';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
+import queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';
import { and } from 'ember-truth-helpers';
import randomId from '../-private/random-id.js';
import argOrDefault from '../helpers/arg-or-default.js';
diff --git a/dist/components/eui-notification-event-meta.js.map b/dist/components/eui-notification-event-meta.js.map
index e4e108f910ce203e28cd02c2b97cd7514c141e60..7e8fa024ba9c1bdbfb3dac961b907f691dc21052 100644
--- a/dist/components/eui-notification-event-meta.js.map
+++ b/dist/components/eui-notification-event-meta.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-notification-event-meta.js","sources":["../../src/components/eui-notification-event-meta.gts"],"sourcesContent":["import { concat } from '@ember/helper';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport queue from 'ember-composable-helpers/helpers/queue';\nimport { and } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport useState from '../helpers/use-state.ts';\nimport EuiBadge from './eui-badge.gts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiPopover from './eui-popover.gts';\n\nimport type { EuiBadgeSignature } from './eui-badge';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiNotificationEventSignature {\n Element: HTMLDivElement;\n Args: {\n id?: string;\n time?: string;\n type?: string;\n severity?: string;\n iconType?: EuiIconSignature['Args']['type'];\n iconColor?: EuiIconSignature['Args']['color'];\n iconAriaLabel?: EuiIconSignature['Args']['aria-label'];\n badgeColor?: EuiBadgeSignature['Args']['color'];\n hasDefaultBlock?: boolean;\n onOpenContextMenu?: (e: MouseEvent) => void;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiNotificationEvent: TemplateOnlyComponent<EuiNotificationEventSignature> =\n <template>\n {{#let\n (and (argOrDefault @hasDefaultBlock true) (has-block))\n as |hasDefaultBlock|\n }}\n <div\n class={{classNames\n \"euiNotificationEventMeta\"\n (if hasDefaultBlock \"euiNotificationEventMeta--hasContextMenu\")\n }}\n ...attributes\n >\n <div class=\"euiNotificationEventMeta__section\">\n\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiNotificationEventMeta__icon\"\n @type={{@iconType}}\n @color={{@iconColor}}\n {{! TODO only add one of the following html attributes }}\n aria-label={{@iconAriaLabel}}\n aria-hidden={{if @iconAriaLabel false true}}\n />\n {{/if}}\n\n {{#if @type}}\n <EuiBadge\n class=\"euiNotificationEventMeta__badge\"\n @color={{@badgeColor}}\n >\n {{#if @severity}}\n {{@type}}:\n {{@severity}}\n {{else}}\n {{@type}}\n {{/if}}\n </EuiBadge>\n {{/if}}\n\n </div>\n\n <div class=\"euiNotificationEventMeta__section\">\n <span class=\"euiNotificationEventMeta__time\">{{@time}}</span>\n </div>\n\n {{#if hasDefaultBlock}}\n {{#let\n (randomId) (useState false)\n as |randomPopoverId isPopoverOpen|\n }}\n <div class=\"euiNotificationEventMeta__contextMenuWrapper\">\n <EuiPopover\n id={{randomPopoverId}}\n @ownFocus={{true}}\n @repositionOnScroll={{true}}\n @isOpen={{isPopoverOpen.value}}\n @panelPaddingSize=\"none\"\n @anchorPosition=\"leftUp\"\n @closePopover={{fn isPopoverOpen.setState false}}\n >\n\n <:button>\n <EuiButtonIcon\n {{! aria-label={contextMenuButton} }}\n aria-controls={{randomPopoverId}}\n aria-expanded={{isPopoverOpen.value}}\n aria-haspopup=\"true\"\n @iconType=\"boxesVertical\"\n @color=\"text\"\n data-test-subj={{concat @id \"-notificationEventMetaButton\"}}\n {{on\n \"click\"\n (if\n isPopoverOpen.value\n (fn isPopoverOpen.setState false)\n (fn isPopoverOpen.setState true)\n )\n }}\n />\n </:button>\n\n {{! The EuiContextMenu is wrapped with a div so it closes after an item is clicked }}\n <:content>\n <div\n {{on\n \"click\"\n (queue\n (optional @onOpenContextMenu)\n (fn isPopoverOpen.setState false)\n )\n }}\n role=\"button\"\n >\n {{yield}}\n </div>\n </:content>\n\n </EuiPopover>\n </div>\n {{/let}}\n {{/if}}\n\n </div>\n {{/let}}\n </template>;\n\nexport default EuiNotificationEvent;\n"],"names":["EuiNotificationEvent","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","classNames","EuiIcon","EuiBadge","randomId","useState","EuiPopover","fn","EuiButtonIcon","concat","on","queue","optional","templateOnly"],"mappings":";;;;;;;;;;;;;;;;;AAwCA,MAAMA,oBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAwGA,y4EAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,UAAA;IAAAC,OAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,QAAA;gBAAAC,mBAAA;IAAAC,EAAA;IAAAC,aAAA;IAAAC,MAAA;IAAAC,EAAA;IAAAC,KAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-notification-event-meta.js","sources":["../../src/components/eui-notification-event-meta.gts"],"sourcesContent":["import { concat } from '@ember/helper';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\nimport { and } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport useState from '../helpers/use-state.ts';\nimport EuiBadge from './eui-badge.gts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiPopover from './eui-popover.gts';\n\nimport type { EuiBadgeSignature } from './eui-badge';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiNotificationEventSignature {\n Element: HTMLDivElement;\n Args: {\n id?: string;\n time?: string;\n type?: string;\n severity?: string;\n iconType?: EuiIconSignature['Args']['type'];\n iconColor?: EuiIconSignature['Args']['color'];\n iconAriaLabel?: EuiIconSignature['Args']['aria-label'];\n badgeColor?: EuiBadgeSignature['Args']['color'];\n hasDefaultBlock?: boolean;\n onOpenContextMenu?: (e: MouseEvent) => void;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiNotificationEvent: TemplateOnlyComponent<EuiNotificationEventSignature> =\n <template>\n {{#let\n (and (argOrDefault @hasDefaultBlock true) (has-block))\n as |hasDefaultBlock|\n }}\n <div\n class={{classNames\n \"euiNotificationEventMeta\"\n (if hasDefaultBlock \"euiNotificationEventMeta--hasContextMenu\")\n }}\n ...attributes\n >\n <div class=\"euiNotificationEventMeta__section\">\n\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiNotificationEventMeta__icon\"\n @type={{@iconType}}\n @color={{@iconColor}}\n {{! TODO only add one of the following html attributes }}\n aria-label={{@iconAriaLabel}}\n aria-hidden={{if @iconAriaLabel false true}}\n />\n {{/if}}\n\n {{#if @type}}\n <EuiBadge\n class=\"euiNotificationEventMeta__badge\"\n @color={{@badgeColor}}\n >\n {{#if @severity}}\n {{@type}}:\n {{@severity}}\n {{else}}\n {{@type}}\n {{/if}}\n </EuiBadge>\n {{/if}}\n\n </div>\n\n <div class=\"euiNotificationEventMeta__section\">\n <span class=\"euiNotificationEventMeta__time\">{{@time}}</span>\n </div>\n\n {{#if hasDefaultBlock}}\n {{#let\n (randomId) (useState false)\n as |randomPopoverId isPopoverOpen|\n }}\n <div class=\"euiNotificationEventMeta__contextMenuWrapper\">\n <EuiPopover\n id={{randomPopoverId}}\n @ownFocus={{true}}\n @repositionOnScroll={{true}}\n @isOpen={{isPopoverOpen.value}}\n @panelPaddingSize=\"none\"\n @anchorPosition=\"leftUp\"\n @closePopover={{fn isPopoverOpen.setState false}}\n >\n\n <:button>\n <EuiButtonIcon\n {{! aria-label={contextMenuButton} }}\n aria-controls={{randomPopoverId}}\n aria-expanded={{isPopoverOpen.value}}\n aria-haspopup=\"true\"\n @iconType=\"boxesVertical\"\n @color=\"text\"\n data-test-subj={{concat @id \"-notificationEventMetaButton\"}}\n {{on\n \"click\"\n (if\n isPopoverOpen.value\n (fn isPopoverOpen.setState false)\n (fn isPopoverOpen.setState true)\n )\n }}\n />\n </:button>\n\n {{! The EuiContextMenu is wrapped with a div so it closes after an item is clicked }}\n <:content>\n <div\n {{on\n \"click\"\n (queue\n (optional @onOpenContextMenu)\n (fn isPopoverOpen.setState false)\n )\n }}\n role=\"button\"\n >\n {{yield}}\n </div>\n </:content>\n\n </EuiPopover>\n </div>\n {{/let}}\n {{/if}}\n\n </div>\n {{/let}}\n </template>;\n\nexport default EuiNotificationEvent;\n"],"names":["EuiNotificationEvent","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","classNames","EuiIcon","EuiBadge","randomId","useState","EuiPopover","fn","EuiButtonIcon","concat","on","queue","optional","templateOnly"],"mappings":";;;;;;;;;;;;;;;;;AAwCA,MAAMA,oBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAwGA,y4EAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,UAAA;IAAAC,OAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,QAAA;gBAAAC,mBAAA;IAAAC,EAAA;IAAAC,aAAA;IAAAC,MAAA;IAAAC,EAAA;IAAAC,KAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-notification-event.js b/dist/components/eui-notification-event.js
index 58be519e63b072cb74611811d5bd47bd98acd2ab..729885c7bb03fc5b1c2f53d21dfb57bac198b081 100644
--- a/dist/components/eui-notification-event.js
+++ b/dist/components/eui-notification-event.js
@@ -1,5 +1,5 @@
import { on } from '@ember/modifier';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import { element } from 'ember-element-helper';
import { or, eq, and } from 'ember-truth-helpers';
import randomId from '../-private/random-id.js';
diff --git a/dist/components/eui-notification-event.js.map b/dist/components/eui-notification-event.js.map
index a2a66c3070f65404f209da589c1b3baffe86a776..7bde3f278f5d55a80703f4c9895482d74e301b8f 100644
--- a/dist/components/eui-notification-event.js.map
+++ b/dist/components/eui-notification-event.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-notification-event.js","sources":["../../src/components/eui-notification-event.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { element } from 'ember-element-helper';\nimport { and,eq, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport typeOf from '../helpers/type-of.ts';\nimport EuiLink from './eui-link.gts';\nimport EuiNotificationEventMessages from './eui-notification-event-messages.gts';\nimport EuiNotificationEventMeta from './eui-notification-event-meta.gts';\nimport EuiNotificationEventReadButton from './eui-notification-event-read-button.gts';\nimport EuiNotificationEventReadIcon from './eui-notification-event-read-icon.gts';\nimport TextBlock from './text-block.gts';\n\nimport type { EuiBadgeSignature } from './eui-badge';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { EuiNotificationEventMessagesSignature } from './eui-notification-event-messages';\nimport type { TextBlockSignature } from './text-block';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiNotificationEventSignature {\n Element: any;\n Args: {\n id?: string;\n tagName?: string;\n hasContextMenuBlock?: boolean;\n hasPrimaryActionBlock?: boolean;\n isRead?: boolean;\n href?: string;\n onClickTitle?: (event: MouseEvent) => void;\n onRead?: (event: MouseEvent) => void;\n onOpenContextMenu?: (event: MouseEvent) => void;\n title?: string;\n type?: string;\n severity?: string;\n badgeColor?: EuiBadgeSignature['Args']['color'];\n iconType?: EuiIconSignature['Args']['type'];\n iconAriaLabel?: string;\n time?: string;\n iconColor?: string;\n readIconColor?: string;\n headingLevel?: TextBlockSignature['Args']['tagName'];\n messages: EuiNotificationEventMessagesSignature['Args']['messages'];\n accordionButtonText?: EuiNotificationEventMessagesSignature['Args']['accordionButtonText'];\n accordionHideText?: EuiNotificationEventMessagesSignature['Args']['accordionHideText'];\n };\n Blocks: {\n default: [];\n contextMenu: [];\n primaryAction: [];\n };\n}\n\nconst EuiNotificationEvent: TemplateOnlyComponent<EuiNotificationEventSignature> =\n <template>\n {{#let\n (randomId)\n (element (argOrDefault @tagName \"article\"))\n (and (argOrDefault @hasContextMenuBlock true) (has-block \"contextMenu\"))\n (and\n (argOrDefault @hasPrimaryActionBlock true) (has-block \"primaryAction\")\n )\n as |id Element hasContextMenuBlock hasPrimaryActionBlock|\n }}\n <Element\n aria-labelledby={{id}}\n key={{@id}}\n class={{classNames\n \"euiNotificationEvent\"\n (if\n (eq (typeOf @isRead) \"boolean\")\n \"euiNotificationEvent--withReadState\"\n )\n }}\n ...attributes\n >\n\n {{#if (eq (typeOf @isRead) \"boolean\")}}\n <div class=\"euiNotificationEvent__readButton\">\n {{#if @onRead}}\n <EuiNotificationEventReadButton\n @id={{@id}}\n @isRead={{@isRead}}\n @eventName={{@title}}\n {{on \"click\" @onRead}}\n />\n {{else}}\n <EuiNotificationEventReadIcon\n @id={{@id}}\n @isRead={{@isRead}}\n @eventName={{@title}}\n @readIconColor={{@readIconColor}}\n />\n {{/if}}\n </div>\n {{/if}}\n\n <div class=\"euiNotificationEvent__content\">\n <EuiNotificationEventMeta\n @id={{@id}}\n @type={{@type}}\n @severity={{@severity}}\n @badgeColor={{@badgeColor}}\n @iconType={{@iconType}}\n @iconAriaLabel={{@iconAriaLabel}}\n @time={{@time}}\n @onOpenContextMenu={{@onOpenContextMenu}}\n @hasDefaultBlock={{hasContextMenuBlock}}\n @iconColor={{@iconColor}}\n >\n {{yield to=\"contextMenu\"}}\n </EuiNotificationEventMeta>\n\n {{#let\n (classNames\n \"euiNotificationEvent__title\"\n (if @isRead \"euiNotificationEvent__title--isRead\")\n )\n (argOrDefault @headingLevel \"h2\")\n as |classNames headingLevel|\n }}\n {{#if (or @href @onClickTitle)}}\n <EuiLink\n class={{classNames}}\n id={{id}}\n @href={{@href}}\n {{on \"click\" (optional @onClickTitle)}}\n >\n <TextBlock @tagName={{headingLevel}}>\n {{@title}}\n </TextBlock>\n </EuiLink>\n {{else if @title}}\n <TextBlock\n id={{id}}\n class={{classNames}}\n @tagName={{headingLevel}}\n >\n {{@title}}\n </TextBlock>\n {{/if}}\n {{/let}}\n\n <EuiNotificationEventMessages\n @messages={{@messages}}\n @accordionButtonText={{@accordionButtonText}}\n @accordionHideText={{@accordionHideText}}\n />\n\n {{#if hasPrimaryActionBlock}}\n <div class=\"euiNotificationEvent__primaryAction\">\n {{yield to=\"primaryAction\"}}\n </div>\n {{/if}}\n\n </div>\n\n </Element>\n {{/let}}\n </template>;\n\nexport default EuiNotificationEvent;\n"],"names":["EuiNotificationEvent","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","element","argOrDefault","and","classNames","eq","typeOf","EuiNotificationEventReadButton","on","EuiNotificationEventReadIcon","EuiNotificationEventMeta","or","EuiLink","optional","TextBlock","EuiNotificationEventMessages","templateOnly"],"mappings":";;;;;;;;;;;;;;;;;;AAwDA,MAAMA,oBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAyGA,08EAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,QAAA;IAAAC,OAAA;IAAAC,YAAA;IAAAC,GAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,MAAA;IAAAC,8BAAA;IAAAC,EAAA;IAAAC,4BAAA;8BAAAC,sBAAA;IAAAC,EAAA;IAAAC,OAAA;IAAAC,QAAA;IAAAC,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-notification-event.js","sources":["../../src/components/eui-notification-event.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { element } from 'ember-element-helper';\nimport { and,eq, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport typeOf from '../helpers/type-of.ts';\nimport EuiLink from './eui-link.gts';\nimport EuiNotificationEventMessages from './eui-notification-event-messages.gts';\nimport EuiNotificationEventMeta from './eui-notification-event-meta.gts';\nimport EuiNotificationEventReadButton from './eui-notification-event-read-button.gts';\nimport EuiNotificationEventReadIcon from './eui-notification-event-read-icon.gts';\nimport TextBlock from './text-block.gts';\n\nimport type { EuiBadgeSignature } from './eui-badge';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { EuiNotificationEventMessagesSignature } from './eui-notification-event-messages';\nimport type { TextBlockSignature } from './text-block';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiNotificationEventSignature {\n Element: any;\n Args: {\n id?: string;\n tagName?: string;\n hasContextMenuBlock?: boolean;\n hasPrimaryActionBlock?: boolean;\n isRead?: boolean;\n href?: string;\n onClickTitle?: (event: MouseEvent) => void;\n onRead?: (event: MouseEvent) => void;\n onOpenContextMenu?: (event: MouseEvent) => void;\n title?: string;\n type?: string;\n severity?: string;\n badgeColor?: EuiBadgeSignature['Args']['color'];\n iconType?: EuiIconSignature['Args']['type'];\n iconAriaLabel?: string;\n time?: string;\n iconColor?: string;\n readIconColor?: string;\n headingLevel?: TextBlockSignature['Args']['tagName'];\n messages: EuiNotificationEventMessagesSignature['Args']['messages'];\n accordionButtonText?: EuiNotificationEventMessagesSignature['Args']['accordionButtonText'];\n accordionHideText?: EuiNotificationEventMessagesSignature['Args']['accordionHideText'];\n };\n Blocks: {\n default: [];\n contextMenu: [];\n primaryAction: [];\n };\n}\n\nconst EuiNotificationEvent: TemplateOnlyComponent<EuiNotificationEventSignature> =\n <template>\n {{#let\n (randomId)\n (element (argOrDefault @tagName \"article\"))\n (and (argOrDefault @hasContextMenuBlock true) (has-block \"contextMenu\"))\n (and\n (argOrDefault @hasPrimaryActionBlock true) (has-block \"primaryAction\")\n )\n as |id Element hasContextMenuBlock hasPrimaryActionBlock|\n }}\n <Element\n aria-labelledby={{id}}\n key={{@id}}\n class={{classNames\n \"euiNotificationEvent\"\n (if\n (eq (typeOf @isRead) \"boolean\")\n \"euiNotificationEvent--withReadState\"\n )\n }}\n ...attributes\n >\n\n {{#if (eq (typeOf @isRead) \"boolean\")}}\n <div class=\"euiNotificationEvent__readButton\">\n {{#if @onRead}}\n <EuiNotificationEventReadButton\n @id={{@id}}\n @isRead={{@isRead}}\n @eventName={{@title}}\n {{on \"click\" @onRead}}\n />\n {{else}}\n <EuiNotificationEventReadIcon\n @id={{@id}}\n @isRead={{@isRead}}\n @eventName={{@title}}\n @readIconColor={{@readIconColor}}\n />\n {{/if}}\n </div>\n {{/if}}\n\n <div class=\"euiNotificationEvent__content\">\n <EuiNotificationEventMeta\n @id={{@id}}\n @type={{@type}}\n @severity={{@severity}}\n @badgeColor={{@badgeColor}}\n @iconType={{@iconType}}\n @iconAriaLabel={{@iconAriaLabel}}\n @time={{@time}}\n @onOpenContextMenu={{@onOpenContextMenu}}\n @hasDefaultBlock={{hasContextMenuBlock}}\n @iconColor={{@iconColor}}\n >\n {{yield to=\"contextMenu\"}}\n </EuiNotificationEventMeta>\n\n {{#let\n (classNames\n \"euiNotificationEvent__title\"\n (if @isRead \"euiNotificationEvent__title--isRead\")\n )\n (argOrDefault @headingLevel \"h2\")\n as |classNames headingLevel|\n }}\n {{#if (or @href @onClickTitle)}}\n <EuiLink\n class={{classNames}}\n id={{id}}\n @href={{@href}}\n {{on \"click\" (optional @onClickTitle)}}\n >\n <TextBlock @tagName={{headingLevel}}>\n {{@title}}\n </TextBlock>\n </EuiLink>\n {{else if @title}}\n <TextBlock\n id={{id}}\n class={{classNames}}\n @tagName={{headingLevel}}\n >\n {{@title}}\n </TextBlock>\n {{/if}}\n {{/let}}\n\n <EuiNotificationEventMessages\n @messages={{@messages}}\n @accordionButtonText={{@accordionButtonText}}\n @accordionHideText={{@accordionHideText}}\n />\n\n {{#if hasPrimaryActionBlock}}\n <div class=\"euiNotificationEvent__primaryAction\">\n {{yield to=\"primaryAction\"}}\n </div>\n {{/if}}\n\n </div>\n\n </Element>\n {{/let}}\n </template>;\n\nexport default EuiNotificationEvent;\n"],"names":["EuiNotificationEvent","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","element","argOrDefault","and","classNames","eq","typeOf","EuiNotificationEventReadButton","on","EuiNotificationEventReadIcon","EuiNotificationEventMeta","or","EuiLink","optional","TextBlock","EuiNotificationEventMessages","templateOnly"],"mappings":";;;;;;;;;;;;;;;;;;AAwDA,MAAMA,oBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAyGA,08EAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,QAAA;IAAAC,OAAA;IAAAC,YAAA;IAAAC,GAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,MAAA;IAAAC,8BAAA;IAAAC,EAAA;IAAAC,4BAAA;8BAAAC,sBAAA;IAAAC,EAAA;IAAAC,OAAA;IAAAC,QAAA;IAAAC,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-page-header-content.js b/dist/components/eui-page-header-content.js
index fe323d180aa07168cd6a023d6798c4ab5c9e08d9..56496d86715709e17943e53b4a73db24dd1717ed 100644
--- a/dist/components/eui-page-header-content.js
+++ b/dist/components/eui-page-header-content.js
@@ -1,7 +1,7 @@
import Component from '@glimmer/component';
import { array } from '@ember/helper';
import { on } from '@ember/modifier';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import style from 'ember-style-modifier/modifiers/style';
import { eq, not, or, and } from 'ember-truth-helpers';
import argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.js';
diff --git a/dist/components/eui-page-header-content.js.map b/dist/components/eui-page-header-content.js.map
index 2f9c1e324c6ca540a69eba301dba2fd472b2548b..1874154f8890e4d0b96bf4aa652f6a51acee8b84 100644
--- a/dist/components/eui-page-header-content.js.map
+++ b/dist/components/eui-page-header-content.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-page-header-content.js","sources":["../../src/components/eui-page-header-content.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { array } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\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 inlineStyles from '../helpers/inline-styles.ts';\nimport useState from '../helpers/use-state.ts';\nimport useIsWithinBreakpoints from '../modifiers/use-is-within-breakpoints.ts';\nimport EuiBreadcrumbs from './eui-breadcrumbs.gts';\nimport EuiFlexGroup from './eui-flex-group.gts';\nimport EuiFlexItem from './eui-flex-item.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiSpacer from './eui-spacer.gts';\nimport EuiTab from './eui-tab.gts';\nimport EuiTabs from './eui-tabs.gts';\nimport EuiText from './eui-text.gts';\nimport EuiTitle from './eui-title.gts';\n\nimport type { paddingSizeMapping } from '../utils/css-mappings/eui-page-content-body.ts';\nimport type { EuiButtomBarArgs } from './eui-bottom-bar';\nimport type { EuiBreadcrumbsSignature } from './eui-breadcrumbs';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { IEuiTab } from './eui-tab';\nimport type { WithBoundArgs } from '@glint/template';\n\nexport const TEMPLATES = [\n 'default',\n 'centeredBody',\n 'centeredContent',\n 'empty'\n] as const;\n\ntype Tab = IEuiTab & {\n label?: string;\n onClick?: () => void;\n};\n\nexport type EuiPageHeaderContentProps = {\n template?: (typeof TEMPLATES)[number];\n /**\n * Gets passed along to the #EuiBottomBar component if `bottomBar` has contents\n */\n bottomBarProps?: EuiButtomBarArgs;\n /* Stretches or restricts the height to 100% of the parent;\n * `true`: scrolls the EuiPageContentBody;\n * `noscroll`: removes all scroll ability;\n * Only works when `template = 'default | empty'` and breakpoint is `m` and above\n */\n fullHeight?: boolean;\n /**\n * Minimum height in which to enforce scrolling\n */\n minHeight?: number;\n\n /**\n * Restrict the width of the page content body\n */\n restrictWidth?: boolean | string;\n\n /**\n * Adds a bottom border to the page header\n */\n bottomBorder?: boolean;\n\n /**\n * Adds a bottom border to the page content body\n */\n bodyBottomBorder?: boolean;\n\n /**\n * Adds a bottom border to the page content body\n */\n bodyProps?: {\n /**\n * Adds padding to the page content body\n */\n paddingSize?: keyof typeof paddingSizeMapping;\n };\n /**\n * Adds a bottom border to the page content body\n */\n contentProps?: {\n /**\n * Adds padding to the page content body\n */\n paddingSize?: keyof typeof paddingSizeMapping;\n };\n\n alignItems?: 'top' | 'bottom' | 'center' | 'stretch';\n\n responsive?: boolean | 'reverse';\n\n hasDescriptionBlock?: boolean;\n\n hasRightSideItemsBlock?: boolean;\n\n hasPageTitleBlock?: boolean;\n\n hasDefaultBlock?: boolean;\n\n pageTitle?: string;\n\n breadcrumbs?: EuiBreadcrumbsSignature['Args']['breadcrumbs'];\n\n breadcrumbProps?: {\n className?: string;\n };\n\n rightSideGroupProps?: {\n className?: string;\n };\n\n pageTitleProps?: {\n className?: string;\n };\n\n iconType?: EuiIconSignature['Args']['type'];\n\n description?: string;\n\n iconProps?: {\n className?: string;\n };\n\n tabs?: Tab[];\n};\n\nexport interface EuiPageHeaderContentSignature {\n Element: HTMLDivElement;\n Args: EuiPageHeaderContentProps;\n Blocks: {\n default: [];\n pageTitle: [];\n description: [];\n rightSideItems: [WithBoundArgs<typeof EuiFlexItem, 'grow'>?];\n };\n}\n\nexport default class EuiPageHeaderContent extends Component<EuiPageHeaderContentSignature> {\n // Defaults\n @argOrDefaultDecorator(460) minHeight!: number;\n @argOrDefaultDecorator(false) fullHeight!: boolean;\n @argOrDefaultDecorator('default') template!: (typeof TEMPLATES)[number];\n\n get classes() {\n return 'euiPageTemplate '.concat(this.fullHeightClass);\n }\n\n get fullHeightClass() {\n return this.fullHeight && this.canFullHeight\n ? 'eui-fullHeight eui-yScroll'\n : '';\n }\n\n get canFullHeight() {\n return this.template === 'default' || this.template === 'empty';\n }\n\n <template>\n {{#let\n (argOrDefault @responsive true)\n (argOrDefault @alignItems \"top\")\n (useState false)\n (and (argOrDefault @hasDescriptionBlock true) (has-block \"description\"))\n (and\n (argOrDefault @hasRightSideItemsBlock true) (has-block \"rightSideItems\")\n )\n (or\n (and (argOrDefault @hasPageTitleBlock true) (has-block \"pageTitle\"))\n @pageTitle\n )\n (and (argOrDefault @hasDefaultBlock true) (has-block \"default\"))\n as |responsive alignItems isResponsiveBreakpoint hasDescriptionBlock hasRightSideItemsBlock hasPageTitleBlock hasDefaultBlock|\n }}\n <div\n class={{classNames\n \"euiPageHeaderContent\"\n (if @restrictWidth \"euiPanel--restrictWidth-custom\" \"\")\n }}\n {{style (inlineStyles width=@restrictWidth)}}\n {{useIsWithinBreakpoints\n sizes=(array \"xs\" \"s\")\n isActive=(not (not responsive))\n setIsWithinBreakpointsValue=isResponsiveBreakpoint.setState\n }}\n ...attributes\n >\n {{#if @breadcrumbs}}\n <EuiBreadcrumbs\n @breadcrumbs={{@breadcrumbs}}\n class={{@breadcrumbProps.className}}\n />\n <EuiSpacer @size=\"s\" />\n {{/if}}\n {{#if (or (eq alignItems \"top\") isResponsiveBreakpoint.value)}}\n <EuiFlexGroup\n class=\"euiPageHeaderContent__top\"\n @responsive={{not (not responsive)}}\n @alignItems={{if hasPageTitleBlock \"flexStart\" \"baseline\"}}\n @gutterSize=\"l\"\n >\n {{#if (and isResponsiveBreakpoint.value (eq responsive \"reverse\"))}}\n {{#if hasRightSideItemsBlock}}\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @wrap={{true}}\n @responsive={{false}}\n class={{classNames\n \"euiPageHeaderContent__rightSideItems\"\n @rightSideGroupProps.className\n }}\n >\n {{yield\n (component EuiFlexItem grow=false)\n to=\"rightSideItems\"\n }}\n </EuiFlexGroup>\n </EuiFlexItem>\n {{/if}}\n <EuiFlexItem>\n {{#if (and (not hasPageTitleBlock) @tabs)}}\n <EuiTabs\n @size=\"xl\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n {{#if hasPageTitleBlock}}\n <EuiTitle\n class={{@pageTitleProps.className}}\n @size=\"l\"\n @tagName=\"h1\"\n >\n {{#if @iconType}}\n <EuiIcon\n @size=\"xl\"\n @type={{@iconType}}\n @iconClasses={{classNames\n \"euiPageHeaderContent__titleIcon\"\n @iconProps.className\n }}\n />\n {{/if}}\n\n {{@pageTitle}}\n {{yield to=\"pageTitle\"}}\n\n </EuiTitle>\n {{/if}}\n\n {{#if hasDescriptionBlock}}\n {{#if (or hasPageTitleBlock @tabs)}}\n <EuiSpacer />\n {{/if}}\n <EuiText @grow={{false}}>\n {{@description}}\n {{yield to=\"description\"}}\n </EuiText>\n {{/if}}\n </EuiFlexItem>\n {{else}}\n <EuiFlexItem>\n {{#if (and (not hasPageTitleBlock) @tabs)}}\n <EuiTabs\n @size=\"xl\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n {{#if hasPageTitleBlock}}\n <EuiTitle\n class={{@pageTitleProps.className}}\n @size=\"l\"\n @tagName=\"h1\"\n >\n {{#if @iconType}}\n <EuiIcon\n @size=\"xl\"\n @type={{@iconType}}\n @iconClasses={{classNames\n \"euiPageHeaderContent__titleIcon\"\n @iconProps.className\n }}\n />\n {{/if}}\n\n {{@pageTitle}}\n {{yield to=\"pageTitle\"}}\n </EuiTitle>\n {{/if}}\n\n {{#if hasDescriptionBlock}}\n {{#if (or hasPageTitleBlock @tabs)}}\n <EuiSpacer />\n {{/if}}\n <EuiText @grow={{false}}>\n {{@description}}\n {{yield to=\"description\"}}\n </EuiText>\n {{/if}}\n </EuiFlexItem>\n {{#if hasRightSideItemsBlock}}\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @wrap={{true}}\n @responsive={{false}}\n class={{classNames\n \"euiPageHeaderContent__rightSideItems\"\n @rightSideGroupProps.className\n }}\n >\n {{yield\n (component EuiFlexItem grow=false)\n to=\"rightSideItems\"\n }}\n </EuiFlexGroup>\n </EuiFlexItem>\n {{/if}}\n {{/if}}\n </EuiFlexGroup>\n {{#if (or hasDefaultBlock (and hasPageTitleBlock @tabs))}}\n <div class=\"euiPageHeaderContent__bottom\">\n <EuiSpacer />\n {{yield to=\"default\"}}\n {{#if hasPageTitleBlock}}\n <EuiTabs @size=\"l\" @display=\"condensed\" @bottomBorder={{false}}>\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n </div>\n {{/if}}\n {{else}}\n <EuiFlexGroup\n class=\"euiPageHeaderContent__top\"\n @responsive={{not (not responsive)}}\n {{!@glint-expect-error}}\n @alignItems={{if (eq alignItems \"bottom\") \"flexEnd\" alignItems}}\n @gutterSize=\"l\"\n >\n <EuiFlexItem>\n {{#if (and (not hasPageTitleBlock) @tabs)}}\n <EuiTabs\n @size=\"xl\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n {{#if hasPageTitleBlock}}\n <EuiTitle\n class={{@pageTitleProps.className}}\n @size=\"l\"\n @tagName=\"h1\"\n >\n {{#if @iconType}}\n <EuiIcon\n @size=\"xl\"\n @type={{@iconType}}\n @iconClasses={{classNames\n \"euiPageHeaderContent__titleIcon\"\n @iconProps.className\n }}\n />\n {{/if}}\n\n {{@pageTitle}}\n {{yield to=\"pageTitle\"}}\n </EuiTitle>\n {{/if}}\n\n {{#if hasDescriptionBlock}}\n {{#if (or hasPageTitleBlock @tabs)}}\n <EuiSpacer />\n {{/if}}\n <EuiText @grow={{false}}>\n {{@description}}\n {{yield to=\"description\"}}\n </EuiText>\n {{/if}}\n {{#if (or hasDefaultBlock (and hasPageTitleBlock @tabs))}}\n <div class=\"euiPageHeaderContent__bottom\">\n <EuiSpacer />\n {{yield to=\"default\"}}\n {{#if hasPageTitleBlock}}\n <EuiTabs\n @size=\"l\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n </div>\n {{/if}}\n </EuiFlexItem>\n {{#if hasRightSideItemsBlock}}\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @wrap={{true}}\n @responsive={{false}}\n class={{classNames\n \"euiPageHeaderContent__rightSideItems\"\n @rightSideGroupProps.className\n }}\n >\n {{yield\n (component EuiFlexItem grow=false)\n to=\"rightSideItems\"\n }}\n </EuiFlexGroup>\n </EuiFlexItem>\n {{/if}}\n </EuiFlexGroup>\n {{/if}}\n </div>\n {{/let}}\n </template>\n}\n"],"names":["TEMPLATES","EuiPageHeaderContent","Component","g","prototype","argOrDefaultDecorator","i","void 0","classes","concat","fullHeightClass","fullHeight","canFullHeight","template","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","useState","and","or","classNames","style","inlineStyles","useIsWithinBreakpoints","array","not","EuiBreadcrumbs","EuiSpacer","eq","EuiFlexGroup","EuiFlexItem","EuiTabs","EuiTab","on","optional","EuiTitle","EuiIcon","EuiText"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA8BO,MAAMA,SAAY,GAAA,CACvB,SAAA,EACA,cAAA,EACA,iBAAA,EACA,OAAA;AA6Ga,MAAMC,6BAA6BC,SAAU,CAAA;AAAA,EAAA;AAAAC,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CAEzDC,qBAAsB,CAAA,GAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA,EADvB;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,YAAA,EAAA,CAECC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,WAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,UAAA,EAAA,CACtBC,qBAAsB,CAAA,SAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,SAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAAC,SAAA;EAEvB,IAAIC,OAAUA,GAAA;AACZ,IAAA,OAAO,kBAAmB,CAAAC,MAAM,CAAC,IAAI,CAACC,eAAe,CAAA;AACvD;EAEA,IAAIA,eAAkBA,GAAA;IACpB,OAAO,IAAI,CAACC,UAAU,IAAI,IAAI,CAACC,aAAa,GACxC,4BACA,GAAA,EAAA;AACN;EAEA,IAAIA,aAAgBA,GAAA;IAClB,OAAO,IAAI,CAACC,QAAQ,KAAK,aAAa,IAAI,CAACA,QAAQ,KAAK,OAAA;AAC1D;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAyTA,6kRAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,YAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,UAAA;QAAAC,KAAA;QAAAC,YAAA;QAAAC,sBAAA;QAAAC,KAAA;QAAAC,GAAA;QAAAC,cAAA;QAAAC,SAAA;QAAAC,EAAA;QAAAC,YAAA;QAAAC,WAAA;QAAAC,OAAA;QAAAC,MAAA;QAAAC,EAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,OAAA;AAAAC,iBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-page-header-content.js","sources":["../../src/components/eui-page-header-content.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { array } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\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 inlineStyles from '../helpers/inline-styles.ts';\nimport useState from '../helpers/use-state.ts';\nimport useIsWithinBreakpoints from '../modifiers/use-is-within-breakpoints.ts';\nimport EuiBreadcrumbs from './eui-breadcrumbs.gts';\nimport EuiFlexGroup from './eui-flex-group.gts';\nimport EuiFlexItem from './eui-flex-item.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiSpacer from './eui-spacer.gts';\nimport EuiTab from './eui-tab.gts';\nimport EuiTabs from './eui-tabs.gts';\nimport EuiText from './eui-text.gts';\nimport EuiTitle from './eui-title.gts';\n\nimport type { paddingSizeMapping } from '../utils/css-mappings/eui-page-content-body.ts';\nimport type { EuiButtomBarArgs } from './eui-bottom-bar';\nimport type { EuiBreadcrumbsSignature } from './eui-breadcrumbs';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { IEuiTab } from './eui-tab';\nimport type { WithBoundArgs } from '@glint/template';\n\nexport const TEMPLATES = [\n 'default',\n 'centeredBody',\n 'centeredContent',\n 'empty'\n] as const;\n\ntype Tab = IEuiTab & {\n label?: string;\n onClick?: () => void;\n};\n\nexport type EuiPageHeaderContentProps = {\n template?: (typeof TEMPLATES)[number];\n /**\n * Gets passed along to the #EuiBottomBar component if `bottomBar` has contents\n */\n bottomBarProps?: EuiButtomBarArgs;\n /* Stretches or restricts the height to 100% of the parent;\n * `true`: scrolls the EuiPageContentBody;\n * `noscroll`: removes all scroll ability;\n * Only works when `template = 'default | empty'` and breakpoint is `m` and above\n */\n fullHeight?: boolean;\n /**\n * Minimum height in which to enforce scrolling\n */\n minHeight?: number;\n\n /**\n * Restrict the width of the page content body\n */\n restrictWidth?: boolean | string;\n\n /**\n * Adds a bottom border to the page header\n */\n bottomBorder?: boolean;\n\n /**\n * Adds a bottom border to the page content body\n */\n bodyBottomBorder?: boolean;\n\n /**\n * Adds a bottom border to the page content body\n */\n bodyProps?: {\n /**\n * Adds padding to the page content body\n */\n paddingSize?: keyof typeof paddingSizeMapping;\n };\n /**\n * Adds a bottom border to the page content body\n */\n contentProps?: {\n /**\n * Adds padding to the page content body\n */\n paddingSize?: keyof typeof paddingSizeMapping;\n };\n\n alignItems?: 'top' | 'bottom' | 'center' | 'stretch';\n\n responsive?: boolean | 'reverse';\n\n hasDescriptionBlock?: boolean;\n\n hasRightSideItemsBlock?: boolean;\n\n hasPageTitleBlock?: boolean;\n\n hasDefaultBlock?: boolean;\n\n pageTitle?: string;\n\n breadcrumbs?: EuiBreadcrumbsSignature['Args']['breadcrumbs'];\n\n breadcrumbProps?: {\n className?: string;\n };\n\n rightSideGroupProps?: {\n className?: string;\n };\n\n pageTitleProps?: {\n className?: string;\n };\n\n iconType?: EuiIconSignature['Args']['type'];\n\n description?: string;\n\n iconProps?: {\n className?: string;\n };\n\n tabs?: Tab[];\n};\n\nexport interface EuiPageHeaderContentSignature {\n Element: HTMLDivElement;\n Args: EuiPageHeaderContentProps;\n Blocks: {\n default: [];\n pageTitle: [];\n description: [];\n rightSideItems: [WithBoundArgs<typeof EuiFlexItem, 'grow'>?];\n };\n}\n\nexport default class EuiPageHeaderContent extends Component<EuiPageHeaderContentSignature> {\n // Defaults\n @argOrDefaultDecorator(460) minHeight!: number;\n @argOrDefaultDecorator(false) fullHeight!: boolean;\n @argOrDefaultDecorator('default') template!: (typeof TEMPLATES)[number];\n\n get classes() {\n return 'euiPageTemplate '.concat(this.fullHeightClass);\n }\n\n get fullHeightClass() {\n return this.fullHeight && this.canFullHeight\n ? 'eui-fullHeight eui-yScroll'\n : '';\n }\n\n get canFullHeight() {\n return this.template === 'default' || this.template === 'empty';\n }\n\n <template>\n {{#let\n (argOrDefault @responsive true)\n (argOrDefault @alignItems \"top\")\n (useState false)\n (and (argOrDefault @hasDescriptionBlock true) (has-block \"description\"))\n (and\n (argOrDefault @hasRightSideItemsBlock true) (has-block \"rightSideItems\")\n )\n (or\n (and (argOrDefault @hasPageTitleBlock true) (has-block \"pageTitle\"))\n @pageTitle\n )\n (and (argOrDefault @hasDefaultBlock true) (has-block \"default\"))\n as |responsive alignItems isResponsiveBreakpoint hasDescriptionBlock hasRightSideItemsBlock hasPageTitleBlock hasDefaultBlock|\n }}\n <div\n class={{classNames\n \"euiPageHeaderContent\"\n (if @restrictWidth \"euiPanel--restrictWidth-custom\" \"\")\n }}\n {{style (inlineStyles width=@restrictWidth)}}\n {{useIsWithinBreakpoints\n sizes=(array \"xs\" \"s\")\n isActive=(not (not responsive))\n setIsWithinBreakpointsValue=isResponsiveBreakpoint.setState\n }}\n ...attributes\n >\n {{#if @breadcrumbs}}\n <EuiBreadcrumbs\n @breadcrumbs={{@breadcrumbs}}\n class={{@breadcrumbProps.className}}\n />\n <EuiSpacer @size=\"s\" />\n {{/if}}\n {{#if (or (eq alignItems \"top\") isResponsiveBreakpoint.value)}}\n <EuiFlexGroup\n class=\"euiPageHeaderContent__top\"\n @responsive={{not (not responsive)}}\n @alignItems={{if hasPageTitleBlock \"flexStart\" \"baseline\"}}\n @gutterSize=\"l\"\n >\n {{#if (and isResponsiveBreakpoint.value (eq responsive \"reverse\"))}}\n {{#if hasRightSideItemsBlock}}\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @wrap={{true}}\n @responsive={{false}}\n class={{classNames\n \"euiPageHeaderContent__rightSideItems\"\n @rightSideGroupProps.className\n }}\n >\n {{yield\n (component EuiFlexItem grow=false)\n to=\"rightSideItems\"\n }}\n </EuiFlexGroup>\n </EuiFlexItem>\n {{/if}}\n <EuiFlexItem>\n {{#if (and (not hasPageTitleBlock) @tabs)}}\n <EuiTabs\n @size=\"xl\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n {{#if hasPageTitleBlock}}\n <EuiTitle\n class={{@pageTitleProps.className}}\n @size=\"l\"\n @tagName=\"h1\"\n >\n {{#if @iconType}}\n <EuiIcon\n @size=\"xl\"\n @type={{@iconType}}\n @iconClasses={{classNames\n \"euiPageHeaderContent__titleIcon\"\n @iconProps.className\n }}\n />\n {{/if}}\n\n {{@pageTitle}}\n {{yield to=\"pageTitle\"}}\n\n </EuiTitle>\n {{/if}}\n\n {{#if hasDescriptionBlock}}\n {{#if (or hasPageTitleBlock @tabs)}}\n <EuiSpacer />\n {{/if}}\n <EuiText @grow={{false}}>\n {{@description}}\n {{yield to=\"description\"}}\n </EuiText>\n {{/if}}\n </EuiFlexItem>\n {{else}}\n <EuiFlexItem>\n {{#if (and (not hasPageTitleBlock) @tabs)}}\n <EuiTabs\n @size=\"xl\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n {{#if hasPageTitleBlock}}\n <EuiTitle\n class={{@pageTitleProps.className}}\n @size=\"l\"\n @tagName=\"h1\"\n >\n {{#if @iconType}}\n <EuiIcon\n @size=\"xl\"\n @type={{@iconType}}\n @iconClasses={{classNames\n \"euiPageHeaderContent__titleIcon\"\n @iconProps.className\n }}\n />\n {{/if}}\n\n {{@pageTitle}}\n {{yield to=\"pageTitle\"}}\n </EuiTitle>\n {{/if}}\n\n {{#if hasDescriptionBlock}}\n {{#if (or hasPageTitleBlock @tabs)}}\n <EuiSpacer />\n {{/if}}\n <EuiText @grow={{false}}>\n {{@description}}\n {{yield to=\"description\"}}\n </EuiText>\n {{/if}}\n </EuiFlexItem>\n {{#if hasRightSideItemsBlock}}\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @wrap={{true}}\n @responsive={{false}}\n class={{classNames\n \"euiPageHeaderContent__rightSideItems\"\n @rightSideGroupProps.className\n }}\n >\n {{yield\n (component EuiFlexItem grow=false)\n to=\"rightSideItems\"\n }}\n </EuiFlexGroup>\n </EuiFlexItem>\n {{/if}}\n {{/if}}\n </EuiFlexGroup>\n {{#if (or hasDefaultBlock (and hasPageTitleBlock @tabs))}}\n <div class=\"euiPageHeaderContent__bottom\">\n <EuiSpacer />\n {{yield to=\"default\"}}\n {{#if hasPageTitleBlock}}\n <EuiTabs @size=\"l\" @display=\"condensed\" @bottomBorder={{false}}>\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n </div>\n {{/if}}\n {{else}}\n <EuiFlexGroup\n class=\"euiPageHeaderContent__top\"\n @responsive={{not (not responsive)}}\n {{!@glint-expect-error}}\n @alignItems={{if (eq alignItems \"bottom\") \"flexEnd\" alignItems}}\n @gutterSize=\"l\"\n >\n <EuiFlexItem>\n {{#if (and (not hasPageTitleBlock) @tabs)}}\n <EuiTabs\n @size=\"xl\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n {{#if hasPageTitleBlock}}\n <EuiTitle\n class={{@pageTitleProps.className}}\n @size=\"l\"\n @tagName=\"h1\"\n >\n {{#if @iconType}}\n <EuiIcon\n @size=\"xl\"\n @type={{@iconType}}\n @iconClasses={{classNames\n \"euiPageHeaderContent__titleIcon\"\n @iconProps.className\n }}\n />\n {{/if}}\n\n {{@pageTitle}}\n {{yield to=\"pageTitle\"}}\n </EuiTitle>\n {{/if}}\n\n {{#if hasDescriptionBlock}}\n {{#if (or hasPageTitleBlock @tabs)}}\n <EuiSpacer />\n {{/if}}\n <EuiText @grow={{false}}>\n {{@description}}\n {{yield to=\"description\"}}\n </EuiText>\n {{/if}}\n {{#if (or hasDefaultBlock (and hasPageTitleBlock @tabs))}}\n <div class=\"euiPageHeaderContent__bottom\">\n <EuiSpacer />\n {{yield to=\"default\"}}\n {{#if hasPageTitleBlock}}\n <EuiTabs\n @size=\"l\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n </div>\n {{/if}}\n </EuiFlexItem>\n {{#if hasRightSideItemsBlock}}\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @wrap={{true}}\n @responsive={{false}}\n class={{classNames\n \"euiPageHeaderContent__rightSideItems\"\n @rightSideGroupProps.className\n }}\n >\n {{yield\n (component EuiFlexItem grow=false)\n to=\"rightSideItems\"\n }}\n </EuiFlexGroup>\n </EuiFlexItem>\n {{/if}}\n </EuiFlexGroup>\n {{/if}}\n </div>\n {{/let}}\n </template>\n}\n"],"names":["TEMPLATES","EuiPageHeaderContent","Component","g","prototype","argOrDefaultDecorator","i","void 0","classes","concat","fullHeightClass","fullHeight","canFullHeight","template","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","useState","and","or","classNames","style","inlineStyles","useIsWithinBreakpoints","array","not","EuiBreadcrumbs","EuiSpacer","eq","EuiFlexGroup","EuiFlexItem","EuiTabs","EuiTab","on","optional","EuiTitle","EuiIcon","EuiText"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA8BO,MAAMA,SAAY,GAAA,CACvB,SAAA,EACA,cAAA,EACA,iBAAA,EACA,OAAA;AA6Ga,MAAMC,6BAA6BC,SAAU,CAAA;AAAA,EAAA;AAAAC,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CAEzDC,qBAAsB,CAAA,GAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA,EADvB;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,YAAA,EAAA,CAECC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,WAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,UAAA,EAAA,CACtBC,qBAAsB,CAAA,SAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,SAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAAC,SAAA;EAEvB,IAAIC,OAAUA,GAAA;AACZ,IAAA,OAAO,kBAAmB,CAAAC,MAAM,CAAC,IAAI,CAACC,eAAe,CAAA;AACvD;EAEA,IAAIA,eAAkBA,GAAA;IACpB,OAAO,IAAI,CAACC,UAAU,IAAI,IAAI,CAACC,aAAa,GACxC,4BACA,GAAA,EAAA;AACN;EAEA,IAAIA,aAAgBA,GAAA;IAClB,OAAO,IAAI,CAACC,QAAQ,KAAK,aAAa,IAAI,CAACA,QAAQ,KAAK,OAAA;AAC1D;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAyTA,6kRAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,YAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,UAAA;QAAAC,KAAA;QAAAC,YAAA;QAAAC,sBAAA;QAAAC,KAAA;QAAAC,GAAA;QAAAC,cAAA;QAAAC,SAAA;QAAAC,EAAA;QAAAC,YAAA;QAAAC,WAAA;QAAAC,OAAA;QAAAC,MAAA;QAAAC,EAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,OAAA;AAAAC,iBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
diff --git a/dist/components/eui-popover.js b/dist/components/eui-popover.js
index 94dbc8189d76e8f55e84c7c2ff29ff6a5ff6d17d..a134d76c5b5dc53081f1bbda972eadc86b59d202 100644
--- a/dist/components/eui-popover.js
+++ b/dist/components/eui-popover.js
@@ -7,7 +7,7 @@ import didInsert from '@ember/render-modifiers/modifiers/did-insert';
import didUpdate from '@ember/render-modifiers/modifiers/did-update';
import { cancel, later, scheduleOnce } from '@ember/runloop';
import { htmlSafe } from '@ember/template';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import { focusTrap } from 'ember-focus-trap';
import onKey from 'ember-keyboard/modifiers/on-key';
import { and, not, or } from 'ember-truth-helpers';
diff --git a/dist/components/eui-popover.js.map b/dist/components/eui-popover.js.map
index cb84a24bf55ae92176d2c22f2f24bafbe4d53638..91e999eee86882c0f5a6a929b483de9484026276 100644
--- a/dist/components/eui-popover.js.map
+++ b/dist/components/eui-popover.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-popover.js","sources":["../../src/components/eui-popover.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { hash } from '@ember/helper';\nimport { concat } from '@ember/helper';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { cancel, later, scheduleOnce } from '@ember/runloop';\nimport { htmlSafe } from '@ember/template';\nimport type Owner from '@ember/owner';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { focusTrap } from 'ember-focus-trap';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { and, not, or } from 'ember-truth-helpers';\nimport { tabbable } from 'tabbable';\n\nimport randomId from '../-private/random-id.ts';\nimport { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport merge from '../helpers/merge.ts';\nimport mutationObserver from '../modifiers/mutation-observer.ts';\nimport outsideClickDetector from '../modifiers/outside-click-detector.ts';\nimport screenReaderOnly from '../modifiers/screen-reader-only.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport { cascadingMenuKeys } from '../utils/accesibility/index.ts';\nimport {\n anchorPositionMapping,\n displayMapping\n} from '../utils/css-mappings/eui-popover.ts';\nimport { findPopoverPosition, getElementZIndex } from '../utils/popover/index.ts';\nimport {\n getTransitionTimings,\n getWaitDuration,\n performOnFrame\n} from '../utils/transition.ts';\nimport EuiPanel from './eui-panel.gts';\nimport EuiPortal from './eui-portal.gts';\n\nimport type { paddingSizeMapping } from '../utils/css-mappings/eui-panel.ts';\nimport type { EuiPopoverPosition } from '../utils/popover/types';\nimport type { EmberKeyboardEvent } from 'ember-keyboard/modifiers/on-key';\n\ntype PanelPaddingSize = keyof typeof paddingSizeMapping;\n\nexport type PopoverAnchorPosition =\n | 'upCenter'\n | 'upLeft'\n | 'upRight'\n | 'downCenter'\n | 'downLeft'\n | 'downRight'\n | 'leftCenter'\n | 'leftUp'\n | 'leftDown'\n | 'rightCenter'\n | 'rightUp'\n | 'rightDown';\n\nexport type EuiPopoverArgs = {\n /**\n * Class name passed to the direct parent of the button\n */\n anchorClassName?: string;\n /**\n * Alignment of the popover and arrow relative to the button\n */\n anchorPosition?: PopoverAnchorPosition;\n /**\n * Style and position alteration for arrow-less, left-aligned\n * attachment. Intended for use with inputs as anchors, e.g.\n * EuiInputPopover\n */\n attachToAnchor?: boolean;\n /**\n * Triggering element for which to align the popover to\n */\n button?: Component;\n buttonRef?: (e: HTMLDivElement) => unknown;\n /**\n * Callback to handle hiding of the popover\n */\n closePopover: () => void;\n /**\n * Restrict the popover's position within this element\n */\n container?: HTMLElement;\n /**\n * CSS display type for both the popover and anchor\n */\n display?: keyof typeof displayMapping;\n /**\n * Show arrow indicating to originating button\n */\n hasArrow?: boolean;\n /**\n * Specifies what element should initially have focus; Can be a DOM\n * node, or a selector string (which will be passed to\n * document.querySelector() to find the DOM node), or a function that\n * returns a DOM node\n */\n initialFocus?: FocusTarget | false;\n /**\n * Passed directly to EuiPortal for DOM positioning. Both properties are\n * required if prop is specified\n */\n insert?: {\n sibling: HTMLElement;\n position: 'before' | 'after';\n };\n /**\n * Visibility state of the popover\n */\n isOpen?: boolean;\n /**\n * Traps tab focus within the popover contents\n */\n ownFocus?: boolean;\n /**\n * Custom class added to the EuiPanel containing the popover contents\n */\n panelClassName?: string;\n /**\n * EuiPanel padding on all sides\n */\n panelPaddingSize?: PanelPaddingSize;\n /**\n * Standard DOM `style` attribute. Passed to the EuiPanel\n */\n panelStyle?: { [i: string]: string };\n panelRef?: (e: HTMLElement | null) => unknown;\n popoverRef?: (e: HTMLElement) => unknown;\n\n /**\n * when not `false`, the popover will check if this popover is inside another popover and if so. will reposition itself to be inside the other popover\n */\n shouldAccountForOtherPopovers?: boolean;\n\n /**\n * When `true`, the popover's position is re-calculated when the user\n * scrolls, this supports having fixed-position popover anchors\n */\n repositionOnScroll?: boolean;\n /**\n * By default, popover content inherits the z-index of the anchor\n * component; pass `zIndex` to override\n */\n zIndex?: number;\n /**\n * Function callback for when the focus trap is deactivated\n */\n onTrapDeactivation?: () => void;\n /**\n * Distance away from the anchor that the popover will render\n */\n offset?: number;\n /**\n * Minimum distance between the popover and the bounding container;\n * Pass an array of 4 values to adjust each side differently: `[top, right, bottom, left]`\n * Default is 16\n */\n buffer?: number | [number, number, number, number];\n /**\n * Element to pass as the child element of the arrow;\n * Use case is typically limited to an accompanying `EuiBeacon`\n */\n arrowChildren?: Component;\n /**\n * Provide a name to the popover panel\n */\n ariaLabel?: string;\n /**\n * Alternative option to `aria-label` that takes an `id`.\n * Usually takes the `id` of the popover title\n */\n ariaLabelledBy?: string;\n\n tabindex?: string | number;\n\n shouldSelfFocus?: boolean;\n\n isFocusTrapPaused?: boolean;\n\n focusTrapOptions?: {\n onClickOutside?: (e: Event) => void;\n };\n\n mutationObserverOptions?: {\n attributes?: boolean;\n childList?: boolean;\n characterData?: boolean;\n subtree?: boolean;\n };\n};\n\ntype AnchorPosition = 'up' | 'right' | 'down' | 'left';\n\nconst anchorPositionToPopoverPositionMap: {\n [position in AnchorPosition]: EuiPopoverPosition;\n} = {\n up: 'top',\n right: 'right',\n down: 'bottom',\n left: 'left'\n};\n\nexport function getPopoverPositionFromAnchorPosition(\n anchorPosition: PopoverAnchorPosition\n): EuiPopoverPosition {\n // maps the anchor position to the matching popover position\n // e.g. \"upLeft\" -> \"top\", \"downRight\" -> \"bottom\"\n\n // extract the first positional word from anchorPosition:\n // starts at the beginning (\" ^ \") of anchorPosition and\n // captures all of the characters (\" (.*?) \") until the\n // first capital letter (\" [A-Z] \") is encountered\n const match = anchorPosition.match(/^(.*?)[A-Z]/);\n\n if (match?.length && match.length > 1) {\n return anchorPositionToPopoverPositionMap[match[1] as AnchorPosition];\n }\n\n return anchorPositionToPopoverPositionMap['up'];\n}\n\nexport function getPopoverAlignFromAnchorPosition(\n anchorPosition: PopoverAnchorPosition\n): EuiPopoverPosition {\n // maps the gravity to the matching popover position\n // e.g. \"upLeft\" -> \"left\", \"rightDown\" -> \"bottom\"\n\n // extract the second positional word from anchorPosition:\n // starts a capture group at the first capital letter\n // and includes everything after it\n const match = anchorPosition.match(/([A-Z].*)/);\n\n // this performs two tasks:\n // 1. normalizes the align position by lowercasing it\n // 2. `center` doesn't exist in the lookup map which converts it to `undefined` meaning no align\n if (match?.length && match.length > 1) {\n return anchorPositionToPopoverPositionMap[\n match[1]?.toLowerCase() as AnchorPosition\n ];\n }\n\n return anchorPositionToPopoverPositionMap['left'];\n}\n\nexport const ANCHOR_POSITIONS = Object.keys(anchorPositionMapping);\nexport const DISPLAY = Object.keys(displayMapping);\nexport type FocusTarget = HTMLElement | string | (() => HTMLElement);\n\nconst DEFAULT_POPOVER_STYLES = {\n top: 50,\n left: 50\n};\n\nfunction getElementFromInitialFocus(\n initialFocus?: FocusTarget\n): HTMLElement | null {\n const initialFocusType = typeof initialFocus;\n\n if (initialFocusType === 'string') {\n return document.querySelector(initialFocus as string);\n }\n\n if (initialFocusType === 'function') {\n return (initialFocus as () => HTMLElement | null)();\n }\n\n return initialFocus as HTMLElement | null;\n}\n\ntype CssProps = {\n top?: number;\n left?: number;\n right?: number;\n bottom?: number;\n zIndex?: number;\n};\n\nexport interface EuiPopoverSignature {\n Element: HTMLDivElement;\n Args: EuiPopoverArgs;\n Blocks: {\n button: [];\n content: [];\n arrowChildren: [];\n };\n}\n\nexport default class EuiPopoverComponent extends Component<EuiPopoverSignature> {\n // Defaults\n @argOrDefaultDecorator(false) isOpen!: boolean;\n @argOrDefaultDecorator(true) ownFocus!: boolean;\n @argOrDefaultDecorator('downCenter') anchorPosition!: PopoverAnchorPosition;\n @argOrDefaultDecorator('m') panelPaddingSize!: PanelPaddingSize;\n @argOrDefaultDecorator(true) hasArrow!: boolean;\n @argOrDefaultDecorator('inlineBlock') display!: string;\n @argOrDefaultDecorator(true) shouldSelfFocus!: boolean;\n @argOrDefaultDecorator(false) isFocusTrapPaused!: boolean;\n\n //State\n @tracked prevIsOpen: boolean | undefined;\n @tracked suppressingPopover: boolean | undefined;\n @tracked isClosing = false;\n @tracked isOpening = false;\n @tracked popoverStyles: CssProps = {};\n @tracked arrowStyles: CssProps | undefined = {};\n @tracked arrowPosition: EuiPopoverPosition | null = null;\n @tracked openPosition: EuiPopoverPosition | null = null;\n @tracked isOpenStable = false;\n @tracked isCurrentlyOpen: boolean | undefined;\n @tracked popoverHost?: HTMLElement | null = null;\n ///\n\n private respositionTimeout: ReturnType<typeof later> | null = null;\n private closingTransitionTimeout: ReturnType<typeof later> | null = null;\n private closingTransitionAnimationFrame: number | undefined;\n private updateFocusAnimationFrame: number | undefined;\n private hasSetInitialFocus: boolean = false;\n @tracked button: HTMLElement | null = null;\n @tracked panel: HTMLElement | null = null;\n\n constructor(owner: Owner, args: EuiPopoverArgs) {\n super(owner, args);\n assert(`Must provide closePopover function`, this.args.closePopover);\n this.prevIsOpen = this.isOpen;\n this.suppressingPopover = this.isOpen;\n this.isCurrentlyOpen = this.isOpen;\n }\n\n get insert() {\n if (this.args.insert) {\n return this.args.insert;\n }\n\n if (this.shouldAccountForOtherPopovers) {\n if (this.popoverHost) {\n return {\n sibling: this.popoverHost.children[0] as HTMLElement,\n position: 'after'\n };\n }\n }\n\n return undefined;\n }\n\n @action\n closePopover(): void {\n if (this.isOpen) {\n this.args.closePopover();\n }\n }\n\n @action\n onEscapeKey(event: Event, ekEvent?: EmberKeyboardEvent): void {\n if (this.isOpen) {\n ekEvent?.stopPropagation();\n ekEvent?.stopImmediatePropagation();\n event.preventDefault();\n event.stopPropagation();\n this.closePopover();\n }\n }\n\n @action\n onKeyDown(event: KeyboardEvent, ekEvent: EmberKeyboardEvent): void {\n if (event.key === cascadingMenuKeys.ESCAPE) {\n this.onEscapeKey(event as unknown as Event, ekEvent as unknown as Event);\n }\n }\n\n @action\n onClickOutside(event: Event): void {\n if (this.args.focusTrapOptions?.onClickOutside) {\n this.args.focusTrapOptions.onClickOutside(event);\n } else {\n // only close the popover if the event source isn't the anchor button\n // otherwise, it is up to the anchor to toggle the popover's open status\n if (this.button && this.button.contains(event.target as Node) === false) {\n this.closePopover();\n }\n }\n }\n\n updateFocus(): void {\n // Wait for the DOM to update.\n this.updateFocusAnimationFrame = window.requestAnimationFrame(() => {\n if (!this.ownFocus || !this.panel || this.args.initialFocus === false) {\n return;\n }\n\n // If we've already focused on something inside the panel, everything's fine.\n if (\n this.hasSetInitialFocus &&\n this.panel.contains(document.activeElement)\n ) {\n return;\n }\n\n // Otherwise let's focus the first tabbable item and expedite input from the user.\n let focusTarget;\n\n if (this.args.initialFocus != null) {\n focusTarget = getElementFromInitialFocus(this.args.initialFocus);\n } else {\n const tabbableItems = tabbable(this.panel);\n\n if (tabbableItems.length) {\n focusTarget = tabbableItems[0];\n }\n }\n\n // there's a race condition between the popover content becoming visible and this function call\n // if the element isn't visible yet (due to css styling) then it can't accept focus\n // so wait for another render and try again\n if (focusTarget == null) {\n // there isn't a focus target, one of two reasons:\n // #1 is the whole panel hidden? If so, schedule another check\n // #2 panel is visible but no tabbables exist, move focus to the panel\n const panelVisibility = window.getComputedStyle(this.panel).opacity;\n\n if (panelVisibility === '0') {\n // #1\n this.updateFocus();\n } else {\n // #2\n focusTarget = this.panel;\n }\n } else {\n // found an element to focus, but is it visible?\n const visibility = window.getComputedStyle(focusTarget).visibility;\n\n if (visibility === 'hidden') {\n // not visible, check again next render frame\n this.updateFocus();\n }\n }\n\n if (focusTarget != null) {\n this.hasSetInitialFocus = true;\n focusTarget.focus();\n }\n });\n }\n\n @action\n onOpenPopover(): void {\n cancel(this.closingTransitionTimeout as ReturnType<typeof later>);\n // We need to set this state a beat after the render takes place, so that the CSS\n // transition can take effect.\n this.closingTransitionAnimationFrame = window.requestAnimationFrame(() => {\n this.isOpening = true;\n });\n\n // for each child element of `this.panel`, find any transition duration we should wait for before stabilizing\n const { durationMatch, delayMatch } = Array.prototype.slice\n .call(this.panel ? this.panel.children : [])\n .reduce(\n (\n {\n durationMatch,\n delayMatch\n }: { durationMatch: number; delayMatch: number },\n element: HTMLElement\n ) => {\n const transitionTimings = getTransitionTimings(element);\n\n return {\n durationMatch: Math.max(\n durationMatch,\n transitionTimings.durationMatch\n ),\n delayMatch: Math.max(delayMatch, transitionTimings.delayMatch)\n };\n },\n { durationMatch: 0, delayMatch: 0 }\n );\n\n this.respositionTimeout = later(\n this,\n () => {\n this.isOpenStable = true;\n\n const fn = (): void => {\n this.positionPopoverFixed();\n this.updateFocus();\n };\n\n scheduleOnce('afterRender', this, fn);\n },\n durationMatch + delayMatch\n );\n }\n\n get shouldAccountForOtherPopovers() {\n return this.args.shouldAccountForOtherPopovers ?? true;\n }\n\n checkIfPopoverIsInsideAnotherPopover(ele: HTMLElement) {\n const otherPopover = ele.closest<HTMLDivElement>('div.euiPopover__panel');\n\n this.popoverHost = otherPopover;\n }\n\n @action\n didInsertPopover(ele: HTMLDivElement): void {\n if (this.suppressingPopover) {\n // component was created with isOpen=true; now that it's inserted\n // stop suppressing and start opening\n this.suppressingPopover = false;\n this.isOpening = true;\n\n const fn = (): void => this.onOpenPopover();\n\n scheduleOnce('afterRender', this, fn);\n }\n\n if (this.args.repositionOnScroll) {\n window.addEventListener('scroll', this.positionPopoverFixed, true);\n }\n\n if (this.shouldAccountForOtherPopovers) {\n this.checkIfPopoverIsInsideAnotherPopover(ele);\n }\n\n this.updateFocus();\n }\n\n @action\n didUpdateRepositionOnScroll(): void {\n if (this.args.repositionOnScroll) {\n window.addEventListener('scroll', this.positionPopoverFixed, true);\n } else {\n window.removeEventListener('scroll', this.positionPopoverFixed, true);\n }\n }\n\n @action\n didUpdateIsOpen(): void {\n this.isCurrentlyOpen = this.isOpen;\n\n if (!this.prevIsOpen && this.args.isOpen) {\n this.onOpenPopover();\n }\n\n if (this.prevIsOpen && !this.args.isOpen) {\n // If the user has just closed the popover, queue up the removal of the content after the\n // transition is complete.\n this.isClosing = true;\n this.isOpening = false;\n this.closingTransitionTimeout = later(\n this,\n () => {\n this.isClosing = false;\n },\n 250\n );\n }\n\n this.prevIsOpen = this.args.isOpen;\n }\n\n willDestroy(): void {\n super.willDestroy();\n window.removeEventListener('scroll', this.positionPopoverFixed, true);\n this.popoverHost = null;\n cancel(this.respositionTimeout as ReturnType<typeof later>);\n cancel(this.closingTransitionTimeout as ReturnType<typeof later>);\n cancelAnimationFrame(this.closingTransitionAnimationFrame as number);\n cancelAnimationFrame(this.updateFocusAnimationFrame as number);\n }\n\n @action\n onMutation(records: MutationRecord[]): void {\n const waitDuration = getWaitDuration(records);\n\n this.positionPopoverFixed();\n\n performOnFrame(waitDuration, this.positionPopoverFixed);\n }\n\n @action\n positionPopover(allowEnforcePosition: boolean): void {\n if (this.button == null || this.panel == null) return;\n\n let position = getPopoverPositionFromAnchorPosition(this.anchorPosition);\n let forcePosition = undefined;\n\n if (\n allowEnforcePosition &&\n this.isOpenStable &&\n this.openPosition != null\n ) {\n position = this.openPosition;\n forcePosition = true;\n }\n\n // get the position of the element relative to the offsetParent, which could be the document\n function getPos(ele: HTMLElement): [number, number] {\n let currTop = 0;\n let currLeft = 0;\n\n if (ele.offsetParent) {\n do {\n currTop += ele.offsetTop;\n currLeft += ele.offsetLeft;\n } while ((ele = ele.offsetParent as HTMLElement));\n } else {\n currTop = ele.offsetTop;\n currLeft = ele.offsetLeft;\n }\n\n return [currTop, currLeft];\n }\n\n const {\n top,\n left,\n position: foundPosition,\n arrow,\n anchorBoundingBox\n } = findPopoverPosition({\n container: this.args.container,\n host: this.shouldAccountForOtherPopovers ? this.popoverHost : null,\n position,\n forcePosition,\n align: getPopoverAlignFromAnchorPosition(this.anchorPosition),\n anchor: this.button,\n popover: this.panel,\n offset:\n !this.args.attachToAnchor && this.hasArrow\n ? 16 + (this.args.offset || 0)\n : 8 + (this.args.offset || 0),\n arrowConfig: {\n arrowWidth: 24,\n arrowBuffer: 10\n },\n returnBoundingBox: this.args.attachToAnchor,\n buffer: this.args.buffer\n });\n\n // the popover's z-index must inherit from the button\n // this keeps a button's popover under a flyout that would cover the button\n // but a popover triggered inside a flyout will appear over that flyout\n const { zIndex: zIndexProp } = this.args;\n const zIndex =\n zIndexProp == null\n ? getElementZIndex(this.button, this.panel) + 2000\n : zIndexProp;\n\n const popoverStyles = {\n top,\n left:\n this.args.attachToAnchor && anchorBoundingBox\n ? anchorBoundingBox.left\n : left,\n zIndex\n };\n\n const willRenderArrow = !this.args.attachToAnchor && this.hasArrow;\n const arrowStyles = willRenderArrow ? arrow : undefined;\n const arrowPosition = foundPosition;\n\n this.popoverStyles = popoverStyles;\n this.arrowStyles = arrowStyles;\n this.arrowPosition = arrowPosition;\n this.openPosition = foundPosition;\n }\n\n get _arrowStyles(): ReturnType<typeof htmlSafe> | undefined {\n const { arrowStyles } = this;\n\n return arrowStyles\n ? htmlSafe(`top: ${arrowStyles?.top}px; left: ${arrowStyles?.left}px;`)\n : undefined;\n }\n\n get _popoverStyles(): { [i: string]: string } {\n const { panelStyle } = this.args;\n const { popoverStyles } = this;\n\n return {\n ...panelStyle,\n top: `${popoverStyles.top}px`,\n left: `${popoverStyles.left}px`,\n zIndex: `${popoverStyles.zIndex}`\n };\n }\n\n get tabindex() {\n if (this.ownFocus) {\n return this.args.tabindex ?? '0';\n }\n\n return '-1';\n }\n\n @action\n positionPopoverFixed(): void {\n this.positionPopover(true);\n }\n\n @action\n positionPopoverFluid(): void {\n this.positionPopover(false);\n }\n\n @action\n registerButton(btn: HTMLDivElement): void {\n this.button = btn;\n this.args.buttonRef?.(btn);\n }\n\n @action\n registerPanel(panel: HTMLElement): void {\n this.panel = panel;\n this.args.panelRef?.(panel);\n\n if (panel === null) {\n // panel has unmounted, restore the state defaults\n this.popoverStyles = DEFAULT_POPOVER_STYLES;\n this.arrowStyles = {};\n this.arrowPosition = null;\n this.openPosition = null;\n this.isOpenStable = false;\n window.removeEventListener('resize', this.positionPopoverFluid);\n } else {\n // panel is coming into existence\n this.positionPopoverFluid();\n window.addEventListener('resize', this.positionPopoverFluid);\n }\n }\n\n <template>\n {{#let\n (randomId)\n (classNames\n (if this.isOpening \"euiPopover-isOpen\")\n position=this.anchorPosition\n display=this.display\n componentName=\"EuiPopover\"\n )\n (classNames\n \"euiPopover__panel\"\n (concat \"euiPopover__panel--\" this.arrowPosition)\n (if this.isOpening \"euiPopover__panel-isOpen\")\n (if\n (or (not this.hasArrow) @attachToAnchor) \"euiPopover__panel-noArrow\"\n )\n (if @attachToAnchor \"euiPopover__panel-isAttached\")\n @panelClassName\n )\n as |descriptionId classes panelClasses|\n }}\n <div\n class={{classes}}\n {{onKey \"_all\" this.onKeyDown priority=1}}\n {{didInsert this.didInsertPopover}}\n {{didUpdate this.didUpdateIsOpen @isOpen}}\n {{didUpdate this.didUpdateRepositionOnScroll @repositionOnScroll}}\n {{didInsert (optional @popoverRef)}}\n ...attributes\n >\n\n {{! button }}\n <div\n class=\"euiPopover__anchor {{@anchorClassName}}\"\n {{didInsert this.registerButton}}\n >\n {{yield to=\"button\"}}\n </div>\n\n {{! content }}\n {{#if\n (and\n (not this.suppressingPopover)\n (or this.isCurrentlyOpen this.isClosing)\n )\n }}\n <EuiPortal @insert={{this.insert}}>\n {{#let (randomId) as |panelId|}}\n <EuiPanel\n id={{panelId}}\n class={{panelClasses}}\n aria-live={{if this.ownFocus \"off\" \"assertive\"}}\n role=\"dialog\"\n aria-label={{@ariaLabel}}\n aria-labelledby={{@ariaLabelledBy}}\n aria-modal=\"true\"\n aria-describedby={{if this.ownFocus descriptionId}}\n tabindex={{this.tabindex}}\n @hasShadow={{false}}\n @paddingSize={{this.panelPaddingSize}}\n {{simpleStyle this._popoverStyles}}\n {{didInsert this.registerPanel}}\n {{outsideClickDetector onOutsideClick=this.onClickOutside}}\n {{onKey \"Escape\" this.onEscapeKey}}\n {{focusTrap\n isActive=(not\n (or\n (not this.ownFocus) (not this.isOpenStable) this.isClosing\n )\n )\n shouldSelfFocus=this.shouldSelfFocus\n isPaused=this.isFocusTrapPaused\n focusTrapOptions=(merge\n (hash\n returnFocusOnDeactivate=this.isOpenStable\n initialFocus=(or @initialFocus this.panel)\n onDeactivate=(optional @onTrapDeactivation)\n preventScroll=true\n clickOutsideDeactivates=true\n fallbackFocus=(concat \"#\" panelId)\n )\n @focusTrapOptions\n )\n }}\n >\n <div\n class={{concat\n \"euiPopover__panelArrow euiPopover__panelArrow--\"\n this.arrowPosition\n }}\n style={{this._arrowStyles}}\n >\n {{yield to=\"arrowChildren\"}}\n </div>\n {{#if this.ownFocus}}\n <p id={{descriptionId}} {{screenReaderOnly}}>\n You are in a dialog. To close this dialog, hit escape.\n </p>\n {{/if}}\n <div\n {{mutationObserver\n onMutation=this.onMutation\n observerOptions=(merge\n (hash\n attributes=true\n childList=true\n characterData=true\n subtree=true\n )\n @mutationObserverOptions\n )\n }}\n >\n {{yield to=\"content\"}}\n </div>\n </EuiPanel>\n {{/let}}\n </EuiPortal>\n {{/if}}\n\n </div>\n {{/let}}\n </template>\n}\n"],"names":["anchorPositionToPopoverPositionMap","up","right","down","left","getPopoverPositionFromAnchorPosition","anchorPosition","match","length","getPopoverAlignFromAnchorPosition","toLowerCase","ANCHOR_POSITIONS","Object","keys","anchorPositionMapping","DISPLAY","displayMapping","DEFAULT_POPOVER_STYLES","top","getElementFromInitialFocus","initialFocus","initialFocusType","document","querySelector","EuiPopoverComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","respositionTimeout","closingTransitionTimeout","closingTransitionAnimationFrame","updateFocusAnimationFrame","hasSetInitialFocus","constructor","owner","args","assert","closePopover","prevIsOpen","isOpen","suppressingPopover","isCurrentlyOpen","insert","shouldAccountForOtherPopovers","popoverHost","sibling","children","position","undefined","n","action","onEscapeKey","event","ekEvent","stopPropagation","stopImmediatePropagation","preventDefault","onKeyDown","key","cascadingMenuKeys","ESCAPE","onClickOutside","focusTrapOptions","button","contains","target","updateFocus","window","requestAnimationFrame","ownFocus","panel","activeElement","focusTarget","tabbableItems","tabbable","panelVisibility","getComputedStyle","opacity","visibility","focus","onOpenPopover","cancel","isOpening","durationMatch","delayMatch","Array","slice","call","reduce","element","transitionTimings","getTransitionTimings","Math","max","later","isOpenStable","fn","positionPopoverFixed","scheduleOnce","checkIfPopoverIsInsideAnotherPopover","ele","otherPopover","closest","didInsertPopover","repositionOnScroll","addEventListener","didUpdateRepositionOnScroll","removeEventListener","didUpdateIsOpen","isClosing","willDestroy","cancelAnimationFrame","onMutation","records","waitDuration","getWaitDuration","performOnFrame","positionPopover","allowEnforcePosition","forcePosition","openPosition","foundPosition","arrow","anchorBoundingBox","findPopoverPosition","container","host","align","anchor","popover","offset","attachToAnchor","hasArrow","arrowConfig","arrowWidth","arrowBuffer","returnBoundingBox","buffer","zIndex","zIndexProp","getElementZIndex","popoverStyles","willRenderArrow","arrowStyles","arrowPosition","_arrowStyles","htmlSafe","_popoverStyles","panelStyle","tabindex","positionPopoverFluid","registerButton","btn","buttonRef","registerPanel","panelRef","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","classNames","concat","or","not","onKey","didInsert","didUpdate","optional","and","EuiPortal","EuiPanel","simpleStyle","outsideClickDetector","focusTrap","merge","hash","screenReaderOnly","mutationObserver"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"eui-popover.js","sources":["../../src/components/eui-popover.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { hash } from '@ember/helper';\nimport { concat } from '@ember/helper';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { cancel, later, scheduleOnce } from '@ember/runloop';\nimport { htmlSafe } from '@ember/template';\nimport type Owner from '@ember/owner';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { focusTrap } from 'ember-focus-trap';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { and, not, or } from 'ember-truth-helpers';\nimport { tabbable } from 'tabbable';\n\nimport randomId from '../-private/random-id.ts';\nimport { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport merge from '../helpers/merge.ts';\nimport mutationObserver from '../modifiers/mutation-observer.ts';\nimport outsideClickDetector from '../modifiers/outside-click-detector.ts';\nimport screenReaderOnly from '../modifiers/screen-reader-only.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport { cascadingMenuKeys } from '../utils/accesibility/index.ts';\nimport {\n anchorPositionMapping,\n displayMapping\n} from '../utils/css-mappings/eui-popover.ts';\nimport { findPopoverPosition, getElementZIndex } from '../utils/popover/index.ts';\nimport {\n getTransitionTimings,\n getWaitDuration,\n performOnFrame\n} from '../utils/transition.ts';\nimport EuiPanel from './eui-panel.gts';\nimport EuiPortal from './eui-portal.gts';\n\nimport type { paddingSizeMapping } from '../utils/css-mappings/eui-panel.ts';\nimport type { EuiPopoverPosition } from '../utils/popover/types';\nimport type { EmberKeyboardEvent } from 'ember-keyboard/modifiers/on-key';\n\ntype PanelPaddingSize = keyof typeof paddingSizeMapping;\n\nexport type PopoverAnchorPosition =\n | 'upCenter'\n | 'upLeft'\n | 'upRight'\n | 'downCenter'\n | 'downLeft'\n | 'downRight'\n | 'leftCenter'\n | 'leftUp'\n | 'leftDown'\n | 'rightCenter'\n | 'rightUp'\n | 'rightDown';\n\nexport type EuiPopoverArgs = {\n /**\n * Class name passed to the direct parent of the button\n */\n anchorClassName?: string;\n /**\n * Alignment of the popover and arrow relative to the button\n */\n anchorPosition?: PopoverAnchorPosition;\n /**\n * Style and position alteration for arrow-less, left-aligned\n * attachment. Intended for use with inputs as anchors, e.g.\n * EuiInputPopover\n */\n attachToAnchor?: boolean;\n /**\n * Triggering element for which to align the popover to\n */\n button?: Component;\n buttonRef?: (e: HTMLDivElement) => unknown;\n /**\n * Callback to handle hiding of the popover\n */\n closePopover: () => void;\n /**\n * Restrict the popover's position within this element\n */\n container?: HTMLElement;\n /**\n * CSS display type for both the popover and anchor\n */\n display?: keyof typeof displayMapping;\n /**\n * Show arrow indicating to originating button\n */\n hasArrow?: boolean;\n /**\n * Specifies what element should initially have focus; Can be a DOM\n * node, or a selector string (which will be passed to\n * document.querySelector() to find the DOM node), or a function that\n * returns a DOM node\n */\n initialFocus?: FocusTarget | false;\n /**\n * Passed directly to EuiPortal for DOM positioning. Both properties are\n * required if prop is specified\n */\n insert?: {\n sibling: HTMLElement;\n position: 'before' | 'after';\n };\n /**\n * Visibility state of the popover\n */\n isOpen?: boolean;\n /**\n * Traps tab focus within the popover contents\n */\n ownFocus?: boolean;\n /**\n * Custom class added to the EuiPanel containing the popover contents\n */\n panelClassName?: string;\n /**\n * EuiPanel padding on all sides\n */\n panelPaddingSize?: PanelPaddingSize;\n /**\n * Standard DOM `style` attribute. Passed to the EuiPanel\n */\n panelStyle?: { [i: string]: string };\n panelRef?: (e: HTMLElement | null) => unknown;\n popoverRef?: (e: HTMLElement) => unknown;\n\n /**\n * when not `false`, the popover will check if this popover is inside another popover and if so. will reposition itself to be inside the other popover\n */\n shouldAccountForOtherPopovers?: boolean;\n\n /**\n * When `true`, the popover's position is re-calculated when the user\n * scrolls, this supports having fixed-position popover anchors\n */\n repositionOnScroll?: boolean;\n /**\n * By default, popover content inherits the z-index of the anchor\n * component; pass `zIndex` to override\n */\n zIndex?: number;\n /**\n * Function callback for when the focus trap is deactivated\n */\n onTrapDeactivation?: () => void;\n /**\n * Distance away from the anchor that the popover will render\n */\n offset?: number;\n /**\n * Minimum distance between the popover and the bounding container;\n * Pass an array of 4 values to adjust each side differently: `[top, right, bottom, left]`\n * Default is 16\n */\n buffer?: number | [number, number, number, number];\n /**\n * Element to pass as the child element of the arrow;\n * Use case is typically limited to an accompanying `EuiBeacon`\n */\n arrowChildren?: Component;\n /**\n * Provide a name to the popover panel\n */\n ariaLabel?: string;\n /**\n * Alternative option to `aria-label` that takes an `id`.\n * Usually takes the `id` of the popover title\n */\n ariaLabelledBy?: string;\n\n tabindex?: string | number;\n\n shouldSelfFocus?: boolean;\n\n isFocusTrapPaused?: boolean;\n\n focusTrapOptions?: {\n onClickOutside?: (e: Event) => void;\n };\n\n mutationObserverOptions?: {\n attributes?: boolean;\n childList?: boolean;\n characterData?: boolean;\n subtree?: boolean;\n };\n};\n\ntype AnchorPosition = 'up' | 'right' | 'down' | 'left';\n\nconst anchorPositionToPopoverPositionMap: {\n [position in AnchorPosition]: EuiPopoverPosition;\n} = {\n up: 'top',\n right: 'right',\n down: 'bottom',\n left: 'left'\n};\n\nexport function getPopoverPositionFromAnchorPosition(\n anchorPosition: PopoverAnchorPosition\n): EuiPopoverPosition {\n // maps the anchor position to the matching popover position\n // e.g. \"upLeft\" -> \"top\", \"downRight\" -> \"bottom\"\n\n // extract the first positional word from anchorPosition:\n // starts at the beginning (\" ^ \") of anchorPosition and\n // captures all of the characters (\" (.*?) \") until the\n // first capital letter (\" [A-Z] \") is encountered\n const match = anchorPosition.match(/^(.*?)[A-Z]/);\n\n if (match?.length && match.length > 1) {\n return anchorPositionToPopoverPositionMap[match[1] as AnchorPosition];\n }\n\n return anchorPositionToPopoverPositionMap['up'];\n}\n\nexport function getPopoverAlignFromAnchorPosition(\n anchorPosition: PopoverAnchorPosition\n): EuiPopoverPosition {\n // maps the gravity to the matching popover position\n // e.g. \"upLeft\" -> \"left\", \"rightDown\" -> \"bottom\"\n\n // extract the second positional word from anchorPosition:\n // starts a capture group at the first capital letter\n // and includes everything after it\n const match = anchorPosition.match(/([A-Z].*)/);\n\n // this performs two tasks:\n // 1. normalizes the align position by lowercasing it\n // 2. `center` doesn't exist in the lookup map which converts it to `undefined` meaning no align\n if (match?.length && match.length > 1) {\n return anchorPositionToPopoverPositionMap[\n match[1]?.toLowerCase() as AnchorPosition\n ];\n }\n\n return anchorPositionToPopoverPositionMap['left'];\n}\n\nexport const ANCHOR_POSITIONS = Object.keys(anchorPositionMapping);\nexport const DISPLAY = Object.keys(displayMapping);\nexport type FocusTarget = HTMLElement | string | (() => HTMLElement);\n\nconst DEFAULT_POPOVER_STYLES = {\n top: 50,\n left: 50\n};\n\nfunction getElementFromInitialFocus(\n initialFocus?: FocusTarget\n): HTMLElement | null {\n const initialFocusType = typeof initialFocus;\n\n if (initialFocusType === 'string') {\n return document.querySelector(initialFocus as string);\n }\n\n if (initialFocusType === 'function') {\n return (initialFocus as () => HTMLElement | null)();\n }\n\n return initialFocus as HTMLElement | null;\n}\n\ntype CssProps = {\n top?: number;\n left?: number;\n right?: number;\n bottom?: number;\n zIndex?: number;\n};\n\nexport interface EuiPopoverSignature {\n Element: HTMLDivElement;\n Args: EuiPopoverArgs;\n Blocks: {\n button: [];\n content: [];\n arrowChildren: [];\n };\n}\n\nexport default class EuiPopoverComponent extends Component<EuiPopoverSignature> {\n // Defaults\n @argOrDefaultDecorator(false) isOpen!: boolean;\n @argOrDefaultDecorator(true) ownFocus!: boolean;\n @argOrDefaultDecorator('downCenter') anchorPosition!: PopoverAnchorPosition;\n @argOrDefaultDecorator('m') panelPaddingSize!: PanelPaddingSize;\n @argOrDefaultDecorator(true) hasArrow!: boolean;\n @argOrDefaultDecorator('inlineBlock') display!: string;\n @argOrDefaultDecorator(true) shouldSelfFocus!: boolean;\n @argOrDefaultDecorator(false) isFocusTrapPaused!: boolean;\n\n //State\n @tracked prevIsOpen: boolean | undefined;\n @tracked suppressingPopover: boolean | undefined;\n @tracked isClosing = false;\n @tracked isOpening = false;\n @tracked popoverStyles: CssProps = {};\n @tracked arrowStyles: CssProps | undefined = {};\n @tracked arrowPosition: EuiPopoverPosition | null = null;\n @tracked openPosition: EuiPopoverPosition | null = null;\n @tracked isOpenStable = false;\n @tracked isCurrentlyOpen: boolean | undefined;\n @tracked popoverHost?: HTMLElement | null = null;\n ///\n\n private respositionTimeout: ReturnType<typeof later> | null = null;\n private closingTransitionTimeout: ReturnType<typeof later> | null = null;\n private closingTransitionAnimationFrame: number | undefined;\n private updateFocusAnimationFrame: number | undefined;\n private hasSetInitialFocus: boolean = false;\n @tracked button: HTMLElement | null = null;\n @tracked panel: HTMLElement | null = null;\n\n constructor(owner: Owner, args: EuiPopoverArgs) {\n super(owner, args);\n assert(`Must provide closePopover function`, this.args.closePopover);\n this.prevIsOpen = this.isOpen;\n this.suppressingPopover = this.isOpen;\n this.isCurrentlyOpen = this.isOpen;\n }\n\n get insert() {\n if (this.args.insert) {\n return this.args.insert;\n }\n\n if (this.shouldAccountForOtherPopovers) {\n if (this.popoverHost) {\n return {\n sibling: this.popoverHost.children[0] as HTMLElement,\n position: 'after'\n };\n }\n }\n\n return undefined;\n }\n\n @action\n closePopover(): void {\n if (this.isOpen) {\n this.args.closePopover();\n }\n }\n\n @action\n onEscapeKey(event: Event, ekEvent?: EmberKeyboardEvent): void {\n if (this.isOpen) {\n ekEvent?.stopPropagation();\n ekEvent?.stopImmediatePropagation();\n event.preventDefault();\n event.stopPropagation();\n this.closePopover();\n }\n }\n\n @action\n onKeyDown(event: KeyboardEvent, ekEvent: EmberKeyboardEvent): void {\n if (event.key === cascadingMenuKeys.ESCAPE) {\n this.onEscapeKey(event as unknown as Event, ekEvent as unknown as Event);\n }\n }\n\n @action\n onClickOutside(event: Event): void {\n if (this.args.focusTrapOptions?.onClickOutside) {\n this.args.focusTrapOptions.onClickOutside(event);\n } else {\n // only close the popover if the event source isn't the anchor button\n // otherwise, it is up to the anchor to toggle the popover's open status\n if (this.button && this.button.contains(event.target as Node) === false) {\n this.closePopover();\n }\n }\n }\n\n updateFocus(): void {\n // Wait for the DOM to update.\n this.updateFocusAnimationFrame = window.requestAnimationFrame(() => {\n if (!this.ownFocus || !this.panel || this.args.initialFocus === false) {\n return;\n }\n\n // If we've already focused on something inside the panel, everything's fine.\n if (\n this.hasSetInitialFocus &&\n this.panel.contains(document.activeElement)\n ) {\n return;\n }\n\n // Otherwise let's focus the first tabbable item and expedite input from the user.\n let focusTarget;\n\n if (this.args.initialFocus != null) {\n focusTarget = getElementFromInitialFocus(this.args.initialFocus);\n } else {\n const tabbableItems = tabbable(this.panel);\n\n if (tabbableItems.length) {\n focusTarget = tabbableItems[0];\n }\n }\n\n // there's a race condition between the popover content becoming visible and this function call\n // if the element isn't visible yet (due to css styling) then it can't accept focus\n // so wait for another render and try again\n if (focusTarget == null) {\n // there isn't a focus target, one of two reasons:\n // #1 is the whole panel hidden? If so, schedule another check\n // #2 panel is visible but no tabbables exist, move focus to the panel\n const panelVisibility = window.getComputedStyle(this.panel).opacity;\n\n if (panelVisibility === '0') {\n // #1\n this.updateFocus();\n } else {\n // #2\n focusTarget = this.panel;\n }\n } else {\n // found an element to focus, but is it visible?\n const visibility = window.getComputedStyle(focusTarget).visibility;\n\n if (visibility === 'hidden') {\n // not visible, check again next render frame\n this.updateFocus();\n }\n }\n\n if (focusTarget != null) {\n this.hasSetInitialFocus = true;\n focusTarget.focus();\n }\n });\n }\n\n @action\n onOpenPopover(): void {\n cancel(this.closingTransitionTimeout as ReturnType<typeof later>);\n // We need to set this state a beat after the render takes place, so that the CSS\n // transition can take effect.\n this.closingTransitionAnimationFrame = window.requestAnimationFrame(() => {\n this.isOpening = true;\n });\n\n // for each child element of `this.panel`, find any transition duration we should wait for before stabilizing\n const { durationMatch, delayMatch } = Array.prototype.slice\n .call(this.panel ? this.panel.children : [])\n .reduce(\n (\n {\n durationMatch,\n delayMatch\n }: { durationMatch: number; delayMatch: number },\n element: HTMLElement\n ) => {\n const transitionTimings = getTransitionTimings(element);\n\n return {\n durationMatch: Math.max(\n durationMatch,\n transitionTimings.durationMatch\n ),\n delayMatch: Math.max(delayMatch, transitionTimings.delayMatch)\n };\n },\n { durationMatch: 0, delayMatch: 0 }\n );\n\n this.respositionTimeout = later(\n this,\n () => {\n this.isOpenStable = true;\n\n const fn = (): void => {\n this.positionPopoverFixed();\n this.updateFocus();\n };\n\n scheduleOnce('afterRender', this, fn);\n },\n durationMatch + delayMatch\n );\n }\n\n get shouldAccountForOtherPopovers() {\n return this.args.shouldAccountForOtherPopovers ?? true;\n }\n\n checkIfPopoverIsInsideAnotherPopover(ele: HTMLElement) {\n const otherPopover = ele.closest<HTMLDivElement>('div.euiPopover__panel');\n\n this.popoverHost = otherPopover;\n }\n\n @action\n didInsertPopover(ele: HTMLDivElement): void {\n if (this.suppressingPopover) {\n // component was created with isOpen=true; now that it's inserted\n // stop suppressing and start opening\n this.suppressingPopover = false;\n this.isOpening = true;\n\n const fn = (): void => this.onOpenPopover();\n\n scheduleOnce('afterRender', this, fn);\n }\n\n if (this.args.repositionOnScroll) {\n window.addEventListener('scroll', this.positionPopoverFixed, true);\n }\n\n if (this.shouldAccountForOtherPopovers) {\n this.checkIfPopoverIsInsideAnotherPopover(ele);\n }\n\n this.updateFocus();\n }\n\n @action\n didUpdateRepositionOnScroll(): void {\n if (this.args.repositionOnScroll) {\n window.addEventListener('scroll', this.positionPopoverFixed, true);\n } else {\n window.removeEventListener('scroll', this.positionPopoverFixed, true);\n }\n }\n\n @action\n didUpdateIsOpen(): void {\n this.isCurrentlyOpen = this.isOpen;\n\n if (!this.prevIsOpen && this.args.isOpen) {\n this.onOpenPopover();\n }\n\n if (this.prevIsOpen && !this.args.isOpen) {\n // If the user has just closed the popover, queue up the removal of the content after the\n // transition is complete.\n this.isClosing = true;\n this.isOpening = false;\n this.closingTransitionTimeout = later(\n this,\n () => {\n this.isClosing = false;\n },\n 250\n );\n }\n\n this.prevIsOpen = this.args.isOpen;\n }\n\n willDestroy(): void {\n super.willDestroy();\n window.removeEventListener('scroll', this.positionPopoverFixed, true);\n this.popoverHost = null;\n cancel(this.respositionTimeout as ReturnType<typeof later>);\n cancel(this.closingTransitionTimeout as ReturnType<typeof later>);\n cancelAnimationFrame(this.closingTransitionAnimationFrame as number);\n cancelAnimationFrame(this.updateFocusAnimationFrame as number);\n }\n\n @action\n onMutation(records: MutationRecord[]): void {\n const waitDuration = getWaitDuration(records);\n\n this.positionPopoverFixed();\n\n performOnFrame(waitDuration, this.positionPopoverFixed);\n }\n\n @action\n positionPopover(allowEnforcePosition: boolean): void {\n if (this.button == null || this.panel == null) return;\n\n let position = getPopoverPositionFromAnchorPosition(this.anchorPosition);\n let forcePosition = undefined;\n\n if (\n allowEnforcePosition &&\n this.isOpenStable &&\n this.openPosition != null\n ) {\n position = this.openPosition;\n forcePosition = true;\n }\n\n // get the position of the element relative to the offsetParent, which could be the document\n function getPos(ele: HTMLElement): [number, number] {\n let currTop = 0;\n let currLeft = 0;\n\n if (ele.offsetParent) {\n do {\n currTop += ele.offsetTop;\n currLeft += ele.offsetLeft;\n } while ((ele = ele.offsetParent as HTMLElement));\n } else {\n currTop = ele.offsetTop;\n currLeft = ele.offsetLeft;\n }\n\n return [currTop, currLeft];\n }\n\n const {\n top,\n left,\n position: foundPosition,\n arrow,\n anchorBoundingBox\n } = findPopoverPosition({\n container: this.args.container,\n host: this.shouldAccountForOtherPopovers ? this.popoverHost : null,\n position,\n forcePosition,\n align: getPopoverAlignFromAnchorPosition(this.anchorPosition),\n anchor: this.button,\n popover: this.panel,\n offset:\n !this.args.attachToAnchor && this.hasArrow\n ? 16 + (this.args.offset || 0)\n : 8 + (this.args.offset || 0),\n arrowConfig: {\n arrowWidth: 24,\n arrowBuffer: 10\n },\n returnBoundingBox: this.args.attachToAnchor,\n buffer: this.args.buffer\n });\n\n // the popover's z-index must inherit from the button\n // this keeps a button's popover under a flyout that would cover the button\n // but a popover triggered inside a flyout will appear over that flyout\n const { zIndex: zIndexProp } = this.args;\n const zIndex =\n zIndexProp == null\n ? getElementZIndex(this.button, this.panel) + 2000\n : zIndexProp;\n\n const popoverStyles = {\n top,\n left:\n this.args.attachToAnchor && anchorBoundingBox\n ? anchorBoundingBox.left\n : left,\n zIndex\n };\n\n const willRenderArrow = !this.args.attachToAnchor && this.hasArrow;\n const arrowStyles = willRenderArrow ? arrow : undefined;\n const arrowPosition = foundPosition;\n\n this.popoverStyles = popoverStyles;\n this.arrowStyles = arrowStyles;\n this.arrowPosition = arrowPosition;\n this.openPosition = foundPosition;\n }\n\n get _arrowStyles(): ReturnType<typeof htmlSafe> | undefined {\n const { arrowStyles } = this;\n\n return arrowStyles\n ? htmlSafe(`top: ${arrowStyles?.top}px; left: ${arrowStyles?.left}px;`)\n : undefined;\n }\n\n get _popoverStyles(): { [i: string]: string } {\n const { panelStyle } = this.args;\n const { popoverStyles } = this;\n\n return {\n ...panelStyle,\n top: `${popoverStyles.top}px`,\n left: `${popoverStyles.left}px`,\n zIndex: `${popoverStyles.zIndex}`\n };\n }\n\n get tabindex() {\n if (this.ownFocus) {\n return this.args.tabindex ?? '0';\n }\n\n return '-1';\n }\n\n @action\n positionPopoverFixed(): void {\n this.positionPopover(true);\n }\n\n @action\n positionPopoverFluid(): void {\n this.positionPopover(false);\n }\n\n @action\n registerButton(btn: HTMLDivElement): void {\n this.button = btn;\n this.args.buttonRef?.(btn);\n }\n\n @action\n registerPanel(panel: HTMLElement): void {\n this.panel = panel;\n this.args.panelRef?.(panel);\n\n if (panel === null) {\n // panel has unmounted, restore the state defaults\n this.popoverStyles = DEFAULT_POPOVER_STYLES;\n this.arrowStyles = {};\n this.arrowPosition = null;\n this.openPosition = null;\n this.isOpenStable = false;\n window.removeEventListener('resize', this.positionPopoverFluid);\n } else {\n // panel is coming into existence\n this.positionPopoverFluid();\n window.addEventListener('resize', this.positionPopoverFluid);\n }\n }\n\n <template>\n {{#let\n (randomId)\n (classNames\n (if this.isOpening \"euiPopover-isOpen\")\n position=this.anchorPosition\n display=this.display\n componentName=\"EuiPopover\"\n )\n (classNames\n \"euiPopover__panel\"\n (concat \"euiPopover__panel--\" this.arrowPosition)\n (if this.isOpening \"euiPopover__panel-isOpen\")\n (if\n (or (not this.hasArrow) @attachToAnchor) \"euiPopover__panel-noArrow\"\n )\n (if @attachToAnchor \"euiPopover__panel-isAttached\")\n @panelClassName\n )\n as |descriptionId classes panelClasses|\n }}\n <div\n class={{classes}}\n {{onKey \"_all\" this.onKeyDown priority=1}}\n {{didInsert this.didInsertPopover}}\n {{didUpdate this.didUpdateIsOpen @isOpen}}\n {{didUpdate this.didUpdateRepositionOnScroll @repositionOnScroll}}\n {{didInsert (optional @popoverRef)}}\n ...attributes\n >\n\n {{! button }}\n <div\n class=\"euiPopover__anchor {{@anchorClassName}}\"\n {{didInsert this.registerButton}}\n >\n {{yield to=\"button\"}}\n </div>\n\n {{! content }}\n {{#if\n (and\n (not this.suppressingPopover)\n (or this.isCurrentlyOpen this.isClosing)\n )\n }}\n <EuiPortal @insert={{this.insert}}>\n {{#let (randomId) as |panelId|}}\n <EuiPanel\n id={{panelId}}\n class={{panelClasses}}\n aria-live={{if this.ownFocus \"off\" \"assertive\"}}\n role=\"dialog\"\n aria-label={{@ariaLabel}}\n aria-labelledby={{@ariaLabelledBy}}\n aria-modal=\"true\"\n aria-describedby={{if this.ownFocus descriptionId}}\n tabindex={{this.tabindex}}\n @hasShadow={{false}}\n @paddingSize={{this.panelPaddingSize}}\n {{simpleStyle this._popoverStyles}}\n {{didInsert this.registerPanel}}\n {{outsideClickDetector onOutsideClick=this.onClickOutside}}\n {{onKey \"Escape\" this.onEscapeKey}}\n {{focusTrap\n isActive=(not\n (or\n (not this.ownFocus) (not this.isOpenStable) this.isClosing\n )\n )\n shouldSelfFocus=this.shouldSelfFocus\n isPaused=this.isFocusTrapPaused\n focusTrapOptions=(merge\n (hash\n returnFocusOnDeactivate=this.isOpenStable\n initialFocus=(or @initialFocus this.panel)\n onDeactivate=(optional @onTrapDeactivation)\n preventScroll=true\n clickOutsideDeactivates=true\n fallbackFocus=(concat \"#\" panelId)\n )\n @focusTrapOptions\n )\n }}\n >\n <div\n class={{concat\n \"euiPopover__panelArrow euiPopover__panelArrow--\"\n this.arrowPosition\n }}\n style={{this._arrowStyles}}\n >\n {{yield to=\"arrowChildren\"}}\n </div>\n {{#if this.ownFocus}}\n <p id={{descriptionId}} {{screenReaderOnly}}>\n You are in a dialog. To close this dialog, hit escape.\n </p>\n {{/if}}\n <div\n {{mutationObserver\n onMutation=this.onMutation\n observerOptions=(merge\n (hash\n attributes=true\n childList=true\n characterData=true\n subtree=true\n )\n @mutationObserverOptions\n )\n }}\n >\n {{yield to=\"content\"}}\n </div>\n </EuiPanel>\n {{/let}}\n </EuiPortal>\n {{/if}}\n\n </div>\n {{/let}}\n </template>\n}\n"],"names":["anchorPositionToPopoverPositionMap","up","right","down","left","getPopoverPositionFromAnchorPosition","anchorPosition","match","length","getPopoverAlignFromAnchorPosition","toLowerCase","ANCHOR_POSITIONS","Object","keys","anchorPositionMapping","DISPLAY","displayMapping","DEFAULT_POPOVER_STYLES","top","getElementFromInitialFocus","initialFocus","initialFocusType","document","querySelector","EuiPopoverComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","respositionTimeout","closingTransitionTimeout","closingTransitionAnimationFrame","updateFocusAnimationFrame","hasSetInitialFocus","constructor","owner","args","assert","closePopover","prevIsOpen","isOpen","suppressingPopover","isCurrentlyOpen","insert","shouldAccountForOtherPopovers","popoverHost","sibling","children","position","undefined","n","action","onEscapeKey","event","ekEvent","stopPropagation","stopImmediatePropagation","preventDefault","onKeyDown","key","cascadingMenuKeys","ESCAPE","onClickOutside","focusTrapOptions","button","contains","target","updateFocus","window","requestAnimationFrame","ownFocus","panel","activeElement","focusTarget","tabbableItems","tabbable","panelVisibility","getComputedStyle","opacity","visibility","focus","onOpenPopover","cancel","isOpening","durationMatch","delayMatch","Array","slice","call","reduce","element","transitionTimings","getTransitionTimings","Math","max","later","isOpenStable","fn","positionPopoverFixed","scheduleOnce","checkIfPopoverIsInsideAnotherPopover","ele","otherPopover","closest","didInsertPopover","repositionOnScroll","addEventListener","didUpdateRepositionOnScroll","removeEventListener","didUpdateIsOpen","isClosing","willDestroy","cancelAnimationFrame","onMutation","records","waitDuration","getWaitDuration","performOnFrame","positionPopover","allowEnforcePosition","forcePosition","openPosition","foundPosition","arrow","anchorBoundingBox","findPopoverPosition","container","host","align","anchor","popover","offset","attachToAnchor","hasArrow","arrowConfig","arrowWidth","arrowBuffer","returnBoundingBox","buffer","zIndex","zIndexProp","getElementZIndex","popoverStyles","willRenderArrow","arrowStyles","arrowPosition","_arrowStyles","htmlSafe","_popoverStyles","panelStyle","tabindex","positionPopoverFluid","registerButton","btn","buttonRef","registerPanel","panelRef","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","classNames","concat","or","not","onKey","didInsert","didUpdate","optional","and","EuiPortal","EuiPanel","simpleStyle","outsideClickDetector","focusTrap","merge","hash","screenReaderOnly","mutationObserver"],"mappings":"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"}
diff --git a/dist/components/eui-radio.js b/dist/components/eui-radio.js
index b381083322b88c7d98afffa351fa512377d4a2fd..86958e852142eb6bd08c53db0cd4f2f11b30bb65 100644
--- a/dist/components/eui-radio.js
+++ b/dist/components/eui-radio.js
@@ -1,5 +1,5 @@
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import { or, not, and } from 'ember-truth-helpers';
import randomId from '../-private/random-id.js';
import argOrDefault from '../helpers/arg-or-default.js';
diff --git a/dist/components/eui-radio.js.map b/dist/components/eui-radio.js.map
index e9aa170fdc3e7e30136d2886646d579b5e5326d0..25ac64f1fa211b8003ebcf2fbdaa02f6709874de 100644
--- a/dist/components/eui-radio.js.map
+++ b/dist/components/eui-radio.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-radio.js","sources":["../../src/components/eui-radio.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiRadioSignature {\n Element: HTMLInputElement;\n Args: {\n checked?: boolean;\n disabled?: boolean;\n name?: string;\n label?: string;\n labelProps?: {\n className?: string;\n };\n compressed?: boolean;\n containerClass?: string;\n inputRef?: (element: HTMLInputElement | null) => void;\n isFakeLabelBlock?: boolean;\n id?: string;\n };\n Blocks: {\n label: [];\n };\n}\n\nconst EuiRadio: TemplateOnlyComponent<EuiRadioSignature> = <template>\n {{#let\n (and (has-block \"label\") (not (argOrDefault @isFakeLabelBlock false)))\n (argOrDefault @id (randomId))\n as |hasLabelBlock id|\n }}\n {{#let\n (classNames\n @containerClass\n (if (not (or hasLabelBlock @label)) \"euiRadio--noLabel\")\n (if @compressed \"euiRadio--compressed\")\n \"euiRadio\"\n )\n as |classes|\n }}\n <div class={{classes}}>\n <input\n class=\"euiRadio__input\"\n type=\"radio\"\n id={{id}}\n checked={{@checked}}\n disabled={{@disabled}}\n name={{@name}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n />\n <div class=\"euiRadio__circle\"></div>\n {{#if (or hasLabelBlock @label)}}\n <label\n class={{classNames \"euiRadio__label\" @labelProps.className}}\n for={{id}}\n >\n {{#if hasLabelBlock}}\n {{yield to=\"label\"}}\n {{else}}\n {{@label}}\n {{/if}}\n </label>\n {{/if}}\n </div>\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiRadio;\n"],"names":["EuiRadio","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","didInsert","optional","templateOnly"],"mappings":";;;;;;;;;;AAgCA,MAAMA,QAAqD,GAAAC,oBAAA,CAAAC,kBAAA,CA0C3D,25BAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-radio.js","sources":["../../src/components/eui-radio.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiRadioSignature {\n Element: HTMLInputElement;\n Args: {\n checked?: boolean;\n disabled?: boolean;\n name?: string;\n label?: string;\n labelProps?: {\n className?: string;\n };\n compressed?: boolean;\n containerClass?: string;\n inputRef?: (element: HTMLInputElement | null) => void;\n isFakeLabelBlock?: boolean;\n id?: string;\n };\n Blocks: {\n label: [];\n };\n}\n\nconst EuiRadio: TemplateOnlyComponent<EuiRadioSignature> = <template>\n {{#let\n (and (has-block \"label\") (not (argOrDefault @isFakeLabelBlock false)))\n (argOrDefault @id (randomId))\n as |hasLabelBlock id|\n }}\n {{#let\n (classNames\n @containerClass\n (if (not (or hasLabelBlock @label)) \"euiRadio--noLabel\")\n (if @compressed \"euiRadio--compressed\")\n \"euiRadio\"\n )\n as |classes|\n }}\n <div class={{classes}}>\n <input\n class=\"euiRadio__input\"\n type=\"radio\"\n id={{id}}\n checked={{@checked}}\n disabled={{@disabled}}\n name={{@name}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n />\n <div class=\"euiRadio__circle\"></div>\n {{#if (or hasLabelBlock @label)}}\n <label\n class={{classNames \"euiRadio__label\" @labelProps.className}}\n for={{id}}\n >\n {{#if hasLabelBlock}}\n {{yield to=\"label\"}}\n {{else}}\n {{@label}}\n {{/if}}\n </label>\n {{/if}}\n </div>\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiRadio;\n"],"names":["EuiRadio","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","didInsert","optional","templateOnly"],"mappings":";;;;;;;;;;AAgCA,MAAMA,QAAqD,GAAAC,oBAAA,CAAAC,kBAAA,CA0C3D,25BAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-range-ticks.js b/dist/components/eui-range-ticks.js
index 30a1543af8a0ca24eefea1d9de781226dfa8c099..b8f35d8f9316b0aefa8664f9f42c33d49bac2534 100644
--- a/dist/components/eui-range-ticks.js
+++ b/dist/components/eui-range-ticks.js
@@ -1,7 +1,7 @@
import Component from '@glimmer/component';
import { on } from '@ember/modifier';
import { htmlSafe } from '@ember/template';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import { eq } from 'ember-truth-helpers';
import classNames from '../helpers/class-names.js';
import getRangeTick from '../helpers/get-range-tick.js';
diff --git a/dist/components/eui-range-ticks.js.map b/dist/components/eui-range-ticks.js.map
index e90131aec89ddefc32e8f1314ed3d582ba358164..6bf450ac7009ec8217dcaab2a6f1027c2d56f909 100644
--- a/dist/components/eui-range-ticks.js.map
+++ b/dist/components/eui-range-ticks.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-range-ticks.js","sources":["../../src/components/eui-range-ticks.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { on } from '@ember/modifier';\nimport { htmlSafe } from '@ember/template';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { eq } from 'ember-truth-helpers';\n\nimport classNames from '../helpers/class-names.ts';\nimport getRangeTick from '../helpers/get-range-tick.ts';\n\nexport interface EuiRangeTick {\n value: number;\n label: Component;\n}\n\ntype Value = string | number;\n\nexport type EuiRangeTicksArgs = {\n ticks: EuiRangeTick[];\n tickSequence: number[];\n value?: Value | Value[];\n min: number;\n max: number;\n compressed?: boolean;\n interval?: number;\n disabled?: boolean;\n onChange?: (e: MouseEvent) => void;\n trackWidth: number;\n};\n\nexport interface EuiRangeTicksSignature {\n Element: HTMLDivElement;\n Args: EuiRangeTicksArgs;\n}\n\nexport default class EuiRangeTicksComponent extends Component<EuiRangeTicksSignature> {\n get percentageWidth(): number {\n const { max, min, interval = 1 } = this.args;\n\n return (interval / (max - min + interval)) * 100;\n }\n\n get ticksStyle(): ReturnType<typeof htmlSafe> | undefined {\n const { ticks } = this.args;\n\n return !ticks\n ? undefined\n : htmlSafe(`margin: 0 ${this.percentageWidth / -2}%; left: 0; right: 0;`);\n }\n\n <template>\n <div\n class=\"euiRangeTicks {{if @compressed 'euiRangeTicks--compressed'}}\"\n style={{this.ticksStyle}}\n ...attributes\n >\n {{#each @tickSequence key=\"value\" as |tickValue|}}\n {{#let\n (getRangeTick\n @ticks tickValue @min @max this.percentageWidth @trackWidth\n )\n as |derivedState|\n }}\n <button\n type=\"button\"\n class={{classNames\n (if (eq @value tickValue) \"euiRangeTick--selected\")\n (if derivedState.customTick \"euiRangeTick--isCustom\")\n \"euiRangeTick\"\n }}\n value={{tickValue}}\n disabled={{@disabled}}\n style={{derivedState.style}}\n tabindex=\"-1\"\n {{on \"click\" (optional @onChange)}}\n >\n {{!@glint-expect-error}}\n {{derivedState.label}}\n </button>\n {{/let}}\n {{/each}}\n </div>\n </template>\n}\n"],"names":["EuiRangeTicksComponent","Component","percentageWidth","max","min","interval","args","ticksStyle","ticks","undefined","htmlSafe","setComponentTemplate","precompileTemplate","strictMode","scope","getRangeTick","classNames","eq","on","optional"],"mappings":";;;;;;;;;;AAmCe,MAAMA,+BAA+BC,SAAU,CAAA;EAC5D,IAAIC,eAAAA,GAA0B;IAC5B,MAAM;MAAEC,GAAG;MAAEC,GAAG;AAAEC,MAAAA,QAAW,GAAA;KAAG,GAAG,IAAI,CAACC,IAAI;IAE5C,OAAQD,QAAW,IAACF,MAAMC,GAAM,GAAAC,QAAQ,CAAC,GAAI,GAAA;AAC/C;EAEA,IAAIE,UAAcA,GAAwC;IACxD,MAAM;AAAEC,MAAAA;KAAO,GAAG,IAAI,CAACF,IAAI;AAE3B,IAAA,OAAO,CAACE,KAAA,GACJC,SACA,GAAAC,QAAA,CAAS,CAAa,UAAA,EAAA,IAAI,CAACR,eAAe,GAAG,EAAC,uBAAwB,CAAA;AAC5E;AAEA,EAAA;IAAAS,oBAAA,CAAAC,kBAAA,CAgCA,qvBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,YAAA;QAAAC,UAAA;QAAAC,EAAA;QAAAC,EAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-range-ticks.js","sources":["../../src/components/eui-range-ticks.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { on } from '@ember/modifier';\nimport { htmlSafe } from '@ember/template';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { eq } from 'ember-truth-helpers';\n\nimport classNames from '../helpers/class-names.ts';\nimport getRangeTick from '../helpers/get-range-tick.ts';\n\nexport interface EuiRangeTick {\n value: number;\n label: Component;\n}\n\ntype Value = string | number;\n\nexport type EuiRangeTicksArgs = {\n ticks: EuiRangeTick[];\n tickSequence: number[];\n value?: Value | Value[];\n min: number;\n max: number;\n compressed?: boolean;\n interval?: number;\n disabled?: boolean;\n onChange?: (e: MouseEvent) => void;\n trackWidth: number;\n};\n\nexport interface EuiRangeTicksSignature {\n Element: HTMLDivElement;\n Args: EuiRangeTicksArgs;\n}\n\nexport default class EuiRangeTicksComponent extends Component<EuiRangeTicksSignature> {\n get percentageWidth(): number {\n const { max, min, interval = 1 } = this.args;\n\n return (interval / (max - min + interval)) * 100;\n }\n\n get ticksStyle(): ReturnType<typeof htmlSafe> | undefined {\n const { ticks } = this.args;\n\n return !ticks\n ? undefined\n : htmlSafe(`margin: 0 ${this.percentageWidth / -2}%; left: 0; right: 0;`);\n }\n\n <template>\n <div\n class=\"euiRangeTicks {{if @compressed 'euiRangeTicks--compressed'}}\"\n style={{this.ticksStyle}}\n ...attributes\n >\n {{#each @tickSequence key=\"value\" as |tickValue|}}\n {{#let\n (getRangeTick\n @ticks tickValue @min @max this.percentageWidth @trackWidth\n )\n as |derivedState|\n }}\n <button\n type=\"button\"\n class={{classNames\n (if (eq @value tickValue) \"euiRangeTick--selected\")\n (if derivedState.customTick \"euiRangeTick--isCustom\")\n \"euiRangeTick\"\n }}\n value={{tickValue}}\n disabled={{@disabled}}\n style={{derivedState.style}}\n tabindex=\"-1\"\n {{on \"click\" (optional @onChange)}}\n >\n {{!@glint-expect-error}}\n {{derivedState.label}}\n </button>\n {{/let}}\n {{/each}}\n </div>\n </template>\n}\n"],"names":["EuiRangeTicksComponent","Component","percentageWidth","max","min","interval","args","ticksStyle","ticks","undefined","htmlSafe","setComponentTemplate","precompileTemplate","strictMode","scope","getRangeTick","classNames","eq","on","optional"],"mappings":";;;;;;;;;;AAmCe,MAAMA,+BAA+BC,SAAU,CAAA;EAC5D,IAAIC,eAAAA,GAA0B;IAC5B,MAAM;MAAEC,GAAG;MAAEC,GAAG;AAAEC,MAAAA,QAAW,GAAA;KAAG,GAAG,IAAI,CAACC,IAAI;IAE5C,OAAQD,QAAW,IAACF,MAAMC,GAAM,GAAAC,QAAQ,CAAC,GAAI,GAAA;AAC/C;EAEA,IAAIE,UAAcA,GAAwC;IACxD,MAAM;AAAEC,MAAAA;KAAO,GAAG,IAAI,CAACF,IAAI;AAE3B,IAAA,OAAO,CAACE,KAAA,GACJC,SACA,GAAAC,QAAA,CAAS,CAAa,UAAA,EAAA,IAAI,CAACR,eAAe,GAAG,EAAC,uBAAwB,CAAA;AAC5E;AAEA,EAAA;IAAAS,oBAAA,CAAAC,kBAAA,CAgCA,qvBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,YAAA;QAAAC,UAAA;QAAAC,EAAA;QAAAC,EAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
diff --git a/dist/components/eui-range.js b/dist/components/eui-range.js
index 492f9a1cff49a97f144e0e9851513c084282329f..628975cfde8506ece6b0a2bd67ea92039a48fe26 100644
--- a/dist/components/eui-range.js
+++ b/dist/components/eui-range.js
@@ -5,7 +5,7 @@ import { on } from '@ember/modifier';
import { action } from '@ember/object';
import { guidFor } from '@ember/object/internals';
import { later } from '@ember/runloop';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import { eq, not, and } from 'ember-truth-helpers';
import argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.js';
import castTo from '../helpers/cast-to.js';
diff --git a/dist/components/eui-range.js.map b/dist/components/eui-range.js.map
index 2b1a21ca7c49199728b47403ee36d274cc371d92..12cc2a79d7e712df486dbccd19d0c1ac2dcc96d8 100644
--- a/dist/components/eui-range.js.map
+++ b/dist/components/eui-range.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-range.js","sources":["../../src/components/eui-range.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport { later } from '@ember/runloop';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport castTo from '../helpers/cast-to.ts';\nimport classNames from '../helpers/class-names.ts';\nimport { isWithinRange } from '../utils/number/index.ts';\nimport EuiInputPopover from './eui-input-popover.gts';\nimport EuiRangeHighlight from './eui-range-highlight.gts';\nimport EuiRangeInput from './eui-range-input.gts';\nimport EuiRangeLabel from './eui-range-label.gts';\nimport EuiRangeSlider from './eui-range-slider.gts';\nimport EuiRangeTooltip from './eui-range-tooltip.gts';\nimport EuiRangeTrack from './eui-range-track.gts';\nimport EuiRangeWrapper from './eui-range-wrapper.gts';\n\nimport type { EuiRangeLevel } from './eui-range-levels';\nimport type { EuiRangeTick } from './eui-range-ticks';\n\nexport interface EuiRangeArgs {\n compressed?: boolean;\n readOnly?: boolean;\n fullWidth?: boolean;\n id: string;\n /**\n * Create colored indicators for certain intervals\n */\n levels?: EuiRangeLevel[];\n step?: number;\n /**\n * Pass `true` to displays an extra input control for direct manipulation.\n * Pass `'inputWithPopover'` to only show the input but show the range in a dropdown.\n */\n showInput?: boolean | 'inputWithPopover';\n /**\n * Shows static min/max labels on the sides of the range slider\n */\n showLabels?: boolean;\n /**\n * Shows a thick line from min to value\n */\n showRange?: boolean;\n /**\n * Shows clickable tick marks and labels at the given interval (`step`/`tickInterval`)\n */\n showTicks?: boolean;\n\n min?: number;\n max?: number;\n /**\n * Shows a tooltip styled value\n */\n showValue?: boolean;\n /**\n * Specified ticks at specified values\n */\n ticks: EuiRangeTick[];\n /**\n * Modifies the number of tick marks and at what interval\n */\n tickInterval?: number;\n /**\n * Appends to the tooltip\n */\n valueAppend?: any;\n /**\n * Prepends to the tooltip\n */\n valuePrepend?: any;\n\n onChange?: (event: Event, isValid: boolean) => void;\n onBlur?: (event: Event) => void;\n onFocus?: (event: Event) => void;\n\n value?: number;\n\n disabled?: boolean;\n\n isPrependProvided?: boolean;\n isAppendProvided?: boolean;\n isFakeMaxBlock?: boolean;\n isFakeMinBlock?: boolean;\n isFakeValueBlock?: boolean;\n isFakeValueAppendBlock?: boolean;\n isFakeValuePrependBlock?: boolean;\n isInvalid?: boolean;\n name?: string;\n isLoading?: boolean;\n}\n\nexport interface EuiRangeSignature {\n Element: HTMLInputElement;\n Args: EuiRangeArgs;\n Blocks: {\n min: [min: number];\n max: [max: number];\n value: [];\n valueAppend: [];\n valuePrepend: [];\n prepend: [classes: string];\n append: [classes: string];\n input: [];\n content: [];\n };\n}\n\nexport default class EuiRangeComponent extends Component<EuiRangeSignature> {\n // Defaults\n @argOrDefaultDecorator(0) min!: number;\n @argOrDefaultDecorator(100) max!: number;\n @argOrDefaultDecorator(1) step!: number;\n @argOrDefaultDecorator(false) fullWidth!: boolean;\n @argOrDefaultDecorator(false) compressed!: boolean;\n @argOrDefaultDecorator(false) isLoading!: boolean;\n @argOrDefaultDecorator(false) showLabels!: boolean;\n @argOrDefaultDecorator(false) showInput!: boolean | string;\n @argOrDefaultDecorator(false) showRange!: boolean;\n @argOrDefaultDecorator(false) showTicks!: boolean;\n @argOrDefaultDecorator(false) showValue!: boolean;\n @argOrDefaultDecorator([]) levels!: EuiRangeLevel[];\n\n preventPopoverClose = false;\n\n //State\n @tracked id: string = this.args.id || guidFor({});\n @tracked isPopoverOpen = false;\n ///\n\n @action\n handleOnChange(e: Event): void {\n const isValid = isWithinRange(\n this.min,\n this.max,\n (e.currentTarget as HTMLInputElement).value\n );\n\n if (this.args.onChange) {\n this.args.onChange(e, isValid);\n }\n }\n\n get isValid(): boolean {\n return isWithinRange(this.min, this.max, this.args.value || '');\n }\n\n get digitTolerance(): number {\n return Math.max(String(this.min).length, String(this.max).length);\n }\n\n get showInputOnly(): boolean {\n return this.showInput === 'inputWithPopover';\n }\n\n get canShowDropdown(): boolean {\n return this.showInputOnly && !this.args.readOnly && !this.args.disabled;\n }\n\n get showRangeTooltip(): boolean {\n return (\n this.showValue &&\n !!String(this.args.value).length &&\n this.args.value !== undefined\n );\n }\n\n @action\n onInputFocus(e: Event): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.isPopoverOpen = true;\n }\n\n @action\n onInputBlur(e: Event): void {\n later(\n this,\n () => {\n // Safari does not recognize any focus-related eventing for input[type=range]\n // making it impossible to capture its state using active/focus/relatedTarget\n // Instead, a prevention flag is set on mousedown, with a waiting period here.\n // Mousedown is viable because in the popover case, it is inaccessible via keyboard (intentionally)\n if (this.preventPopoverClose) {\n this.preventPopoverClose = false;\n\n return;\n }\n\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.closePopover();\n },\n 200\n );\n }\n\n @action\n setPreventPopover(val: boolean): void {\n this.preventPopoverClose = val;\n }\n\n @action\n closePopover(): void {\n this.preventPopoverClose = false;\n this.isPopoverOpen = false;\n }\n\n @action\n setPreventPopoverClose(bool: boolean): void {\n this.preventPopoverClose = bool;\n }\n\n <template>\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (and (not (argOrDefault @isFakeMaxBlock false)) (has-block \"max\"))\n (and (not (argOrDefault @isFakeMinBlock false)) (has-block \"min\"))\n (and (not (argOrDefault @isFakeValueBlock false)) (has-block \"value\"))\n (and\n (not (argOrDefault @isFakeValueAppendBlock false))\n (has-block \"valueAppend\")\n )\n (and\n (not (argOrDefault @isFakeValuePrependBlock false))\n (has-block \"valuePrepend\")\n )\n as |hasPrepend hasAppend hasMaxBlock hasMinBlock hasValueBlock hasValueAppendBlock hasValuePrependBlock|\n }}\n {{#if this.showInputOnly}}\n <EuiInputPopover\n class=\"euiRange__popover\"\n @fullWidth={{@fullWidth}}\n @isOpen={{this.isPopoverOpen}}\n @closePopover={{this.closePopover}}\n @disableFocusTrap={{true}}\n >\n <:input>\n <EuiRangeInput\n id={{this.id}}\n @min={{this.min}}\n @max={{this.max}}\n @digitTolerance={{this.digitTolerance}}\n @readOnly={{@readOnly}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @name={{@name}}\n @fullWidth={{and this.showInputOnly this.fullWidth}}\n @isLoading={{and this.showInputOnly @isLoading}}\n @isInvalid={{@isInvalid}}\n @autoSize={{not this.showInputOnly}}\n @isPrependProvided={{hasPrepend}}\n @isAppendProvided={{hasAppend}}\n ...attributes\n {{on\n \"focus\"\n (if this.canShowDropdown this.onInputFocus (optional @onFocus))\n }}\n {{on\n \"blur\"\n (if this.canShowDropdown this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:input>\n <:content>\n <EuiRangeWrapper\n class={{classNames\n \"euiRange\"\n (if this.showInput \"euiRange--hasInput\")\n }}\n @fullWidth={{@fullWidth}}\n @compressed={{@compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{eq this.showInput true}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleOnChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo @value to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n aria-hidden={{if (eq this.showInput true) true false}}\n tabindex={{if (eq this.showInput true) \"-1\"}}\n @id={{if this.showInput undefined this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n @showRange={{this.showRange}}\n ...attributes\n {{on\n \"mousedown\"\n (if\n this.showInputOnly\n (fn this.setPreventPopoverClose true)\n (optional)\n )\n }}\n {{on\n \"focus\"\n (if (eq this.showInput true) (optional) (optional @onFocus))\n }}\n {{on\n \"blur\"\n (if this.showInputOnly this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n />\n {{#if this.showRangeTooltip}}\n <EuiRangeTooltip\n @compressed={{@compressed}}\n @value={{@value}}\n @max={{this.max}}\n @min={{this.min}}\n @name={{@name}}\n @showTicks={{this.showTicks}}\n >\n <:valuePrepend>\n {{#if hasValuePrependBlock}}\n {{yield to=\"valuePrepend\"}}\n {{else}}\n {{@valuePrepend}}\n {{/if}}\n </:valuePrepend>\n <:value>\n {{#if hasValueBlock}}\n {{yield to=\"value\"}}\n {{else}}\n {{@value}}\n {{/if}}\n </:value>\n <:valueAppend>\n {{#if hasValueAppendBlock}}\n {{yield to=\"valueAppend\"}}\n {{else}}\n {{@valueAppend}}\n {{/if}}\n </:valueAppend>\n </EuiRangeTooltip>\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"max\" @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if (and this.showInput (not this.showInputOnly))}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{#if this.showInput}}\n <EuiRangeInput\n id={{this.id}}\n @min={{this.min}}\n @max={{this.max}}\n @digitTolerance={{this.digitTolerance}}\n @readOnly={{@readOnly}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @name={{@name}}\n @fullWidth={{and this.showInputOnly this.fullWidth}}\n @isLoading={{and this.showInputOnly @isLoading}}\n @isInvalid={{@isInvalid}}\n @autoSize={{not this.showInputOnly}}\n @isPrependProvided={{hasPrepend}}\n @isAppendProvided={{hasAppend}}\n ...attributes\n {{on\n \"focus\"\n (if\n this.canShowDropdown\n this.onInputFocus\n (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleOnChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n {{/if}}\n {{/if}}\n </EuiRangeWrapper>\n </:content>\n </EuiInputPopover>\n {{else}}\n <EuiRangeWrapper\n class={{classNames\n \"euiRange\"\n (if this.showInput \"euiRange--hasInput\")\n }}\n @fullWidth={{@fullWidth}}\n @compressed={{@compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{eq this.showInput true}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleOnChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo @value to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n aria-hidden={{if (eq this.showInput true) true false}}\n tabindex={{if (eq this.showInput true) \"-1\"}}\n @id={{if this.showInput undefined this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n @showRange={{this.showRange}}\n ...attributes\n {{on\n \"mousedown\"\n (if\n this.showInputOnly (fn this.setPreventPopover true) (optional)\n )\n }}\n {{on\n \"focus\"\n (if (eq this.showInput true) (optional) (optional @onFocus))\n }}\n {{on\n \"blur\"\n (if this.showInputOnly this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n />\n {{#if this.showRangeTooltip}}\n <EuiRangeTooltip\n @compressed={{@compressed}}\n @value={{@value}}\n @max={{this.max}}\n @min={{this.min}}\n @name={{@name}}\n @showTicks={{this.showTicks}}\n >\n <:valuePrepend>\n {{#if hasValuePrependBlock}}\n {{yield to=\"valuePrepend\"}}\n {{else}}\n {{@valuePrepend}}\n {{/if}}\n </:valuePrepend>\n <:value>\n {{#if hasValueBlock}}\n {{yield to=\"value\"}}\n {{else}}\n {{@value}}\n {{/if}}\n </:value>\n <:valueAppend>\n {{#if hasValueAppendBlock}}\n {{yield to=\"valueAppend\"}}\n {{else}}\n {{@valueAppend}}\n {{/if}}\n </:valueAppend>\n </EuiRangeTooltip>\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"max\" @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if (and this.showInput (not this.showInputOnly))}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{#if this.showInput}}\n <EuiRangeInput\n id={{this.id}}\n @min={{this.min}}\n @max={{this.max}}\n @digitTolerance={{this.digitTolerance}}\n @readOnly={{@readOnly}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @name={{@name}}\n @fullWidth={{and this.showInputOnly this.fullWidth}}\n @isLoading={{and this.showInputOnly @isLoading}}\n @isInvalid={{@isInvalid}}\n @autoSize={{not this.showInputOnly}}\n @isPrependProvided={{hasPrepend}}\n @isAppendProvided={{hasAppend}}\n ...attributes\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if this.canShowDropdown this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n {{/if}}\n {{/if}}\n </EuiRangeWrapper>\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiRangeComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","preventPopoverClose","tracked","args","id","guidFor","handleOnChange","e","isValid","isWithinRange","min","max","currentTarget","value","onChange","n","action","digitTolerance","Math","String","length","showInputOnly","showInput","canShowDropdown","readOnly","disabled","showRangeTooltip","showValue","undefined","onInputFocus","onFocus","isPopoverOpen","onInputBlur","later","onBlur","closePopover","setPreventPopover","val","setPreventPopoverClose","bool","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","not","EuiInputPopover","EuiRangeInput","on","optional","EuiRangeWrapper","classNames","EuiRangeLabel","EuiRangeTrack","eq","EuiRangeHighlight","castTo","EuiRangeSlider","fn","EuiRangeTooltip"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"eui-range.js","sources":["../../src/components/eui-range.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport { later } from '@ember/runloop';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport castTo from '../helpers/cast-to.ts';\nimport classNames from '../helpers/class-names.ts';\nimport { isWithinRange } from '../utils/number/index.ts';\nimport EuiInputPopover from './eui-input-popover.gts';\nimport EuiRangeHighlight from './eui-range-highlight.gts';\nimport EuiRangeInput from './eui-range-input.gts';\nimport EuiRangeLabel from './eui-range-label.gts';\nimport EuiRangeSlider from './eui-range-slider.gts';\nimport EuiRangeTooltip from './eui-range-tooltip.gts';\nimport EuiRangeTrack from './eui-range-track.gts';\nimport EuiRangeWrapper from './eui-range-wrapper.gts';\n\nimport type { EuiRangeLevel } from './eui-range-levels';\nimport type { EuiRangeTick } from './eui-range-ticks';\n\nexport interface EuiRangeArgs {\n compressed?: boolean;\n readOnly?: boolean;\n fullWidth?: boolean;\n id: string;\n /**\n * Create colored indicators for certain intervals\n */\n levels?: EuiRangeLevel[];\n step?: number;\n /**\n * Pass `true` to displays an extra input control for direct manipulation.\n * Pass `'inputWithPopover'` to only show the input but show the range in a dropdown.\n */\n showInput?: boolean | 'inputWithPopover';\n /**\n * Shows static min/max labels on the sides of the range slider\n */\n showLabels?: boolean;\n /**\n * Shows a thick line from min to value\n */\n showRange?: boolean;\n /**\n * Shows clickable tick marks and labels at the given interval (`step`/`tickInterval`)\n */\n showTicks?: boolean;\n\n min?: number;\n max?: number;\n /**\n * Shows a tooltip styled value\n */\n showValue?: boolean;\n /**\n * Specified ticks at specified values\n */\n ticks: EuiRangeTick[];\n /**\n * Modifies the number of tick marks and at what interval\n */\n tickInterval?: number;\n /**\n * Appends to the tooltip\n */\n valueAppend?: any;\n /**\n * Prepends to the tooltip\n */\n valuePrepend?: any;\n\n onChange?: (event: Event, isValid: boolean) => void;\n onBlur?: (event: Event) => void;\n onFocus?: (event: Event) => void;\n\n value?: number;\n\n disabled?: boolean;\n\n isPrependProvided?: boolean;\n isAppendProvided?: boolean;\n isFakeMaxBlock?: boolean;\n isFakeMinBlock?: boolean;\n isFakeValueBlock?: boolean;\n isFakeValueAppendBlock?: boolean;\n isFakeValuePrependBlock?: boolean;\n isInvalid?: boolean;\n name?: string;\n isLoading?: boolean;\n}\n\nexport interface EuiRangeSignature {\n Element: HTMLInputElement;\n Args: EuiRangeArgs;\n Blocks: {\n min: [min: number];\n max: [max: number];\n value: [];\n valueAppend: [];\n valuePrepend: [];\n prepend: [classes: string];\n append: [classes: string];\n input: [];\n content: [];\n };\n}\n\nexport default class EuiRangeComponent extends Component<EuiRangeSignature> {\n // Defaults\n @argOrDefaultDecorator(0) min!: number;\n @argOrDefaultDecorator(100) max!: number;\n @argOrDefaultDecorator(1) step!: number;\n @argOrDefaultDecorator(false) fullWidth!: boolean;\n @argOrDefaultDecorator(false) compressed!: boolean;\n @argOrDefaultDecorator(false) isLoading!: boolean;\n @argOrDefaultDecorator(false) showLabels!: boolean;\n @argOrDefaultDecorator(false) showInput!: boolean | string;\n @argOrDefaultDecorator(false) showRange!: boolean;\n @argOrDefaultDecorator(false) showTicks!: boolean;\n @argOrDefaultDecorator(false) showValue!: boolean;\n @argOrDefaultDecorator([]) levels!: EuiRangeLevel[];\n\n preventPopoverClose = false;\n\n //State\n @tracked id: string = this.args.id || guidFor({});\n @tracked isPopoverOpen = false;\n ///\n\n @action\n handleOnChange(e: Event): void {\n const isValid = isWithinRange(\n this.min,\n this.max,\n (e.currentTarget as HTMLInputElement).value\n );\n\n if (this.args.onChange) {\n this.args.onChange(e, isValid);\n }\n }\n\n get isValid(): boolean {\n return isWithinRange(this.min, this.max, this.args.value || '');\n }\n\n get digitTolerance(): number {\n return Math.max(String(this.min).length, String(this.max).length);\n }\n\n get showInputOnly(): boolean {\n return this.showInput === 'inputWithPopover';\n }\n\n get canShowDropdown(): boolean {\n return this.showInputOnly && !this.args.readOnly && !this.args.disabled;\n }\n\n get showRangeTooltip(): boolean {\n return (\n this.showValue &&\n !!String(this.args.value).length &&\n this.args.value !== undefined\n );\n }\n\n @action\n onInputFocus(e: Event): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.isPopoverOpen = true;\n }\n\n @action\n onInputBlur(e: Event): void {\n later(\n this,\n () => {\n // Safari does not recognize any focus-related eventing for input[type=range]\n // making it impossible to capture its state using active/focus/relatedTarget\n // Instead, a prevention flag is set on mousedown, with a waiting period here.\n // Mousedown is viable because in the popover case, it is inaccessible via keyboard (intentionally)\n if (this.preventPopoverClose) {\n this.preventPopoverClose = false;\n\n return;\n }\n\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.closePopover();\n },\n 200\n );\n }\n\n @action\n setPreventPopover(val: boolean): void {\n this.preventPopoverClose = val;\n }\n\n @action\n closePopover(): void {\n this.preventPopoverClose = false;\n this.isPopoverOpen = false;\n }\n\n @action\n setPreventPopoverClose(bool: boolean): void {\n this.preventPopoverClose = bool;\n }\n\n <template>\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (and (not (argOrDefault @isFakeMaxBlock false)) (has-block \"max\"))\n (and (not (argOrDefault @isFakeMinBlock false)) (has-block \"min\"))\n (and (not (argOrDefault @isFakeValueBlock false)) (has-block \"value\"))\n (and\n (not (argOrDefault @isFakeValueAppendBlock false))\n (has-block \"valueAppend\")\n )\n (and\n (not (argOrDefault @isFakeValuePrependBlock false))\n (has-block \"valuePrepend\")\n )\n as |hasPrepend hasAppend hasMaxBlock hasMinBlock hasValueBlock hasValueAppendBlock hasValuePrependBlock|\n }}\n {{#if this.showInputOnly}}\n <EuiInputPopover\n class=\"euiRange__popover\"\n @fullWidth={{@fullWidth}}\n @isOpen={{this.isPopoverOpen}}\n @closePopover={{this.closePopover}}\n @disableFocusTrap={{true}}\n >\n <:input>\n <EuiRangeInput\n id={{this.id}}\n @min={{this.min}}\n @max={{this.max}}\n @digitTolerance={{this.digitTolerance}}\n @readOnly={{@readOnly}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @name={{@name}}\n @fullWidth={{and this.showInputOnly this.fullWidth}}\n @isLoading={{and this.showInputOnly @isLoading}}\n @isInvalid={{@isInvalid}}\n @autoSize={{not this.showInputOnly}}\n @isPrependProvided={{hasPrepend}}\n @isAppendProvided={{hasAppend}}\n ...attributes\n {{on\n \"focus\"\n (if this.canShowDropdown this.onInputFocus (optional @onFocus))\n }}\n {{on\n \"blur\"\n (if this.canShowDropdown this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:input>\n <:content>\n <EuiRangeWrapper\n class={{classNames\n \"euiRange\"\n (if this.showInput \"euiRange--hasInput\")\n }}\n @fullWidth={{@fullWidth}}\n @compressed={{@compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{eq this.showInput true}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleOnChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo @value to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n aria-hidden={{if (eq this.showInput true) true false}}\n tabindex={{if (eq this.showInput true) \"-1\"}}\n @id={{if this.showInput undefined this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n @showRange={{this.showRange}}\n ...attributes\n {{on\n \"mousedown\"\n (if\n this.showInputOnly\n (fn this.setPreventPopoverClose true)\n (optional)\n )\n }}\n {{on\n \"focus\"\n (if (eq this.showInput true) (optional) (optional @onFocus))\n }}\n {{on\n \"blur\"\n (if this.showInputOnly this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n />\n {{#if this.showRangeTooltip}}\n <EuiRangeTooltip\n @compressed={{@compressed}}\n @value={{@value}}\n @max={{this.max}}\n @min={{this.min}}\n @name={{@name}}\n @showTicks={{this.showTicks}}\n >\n <:valuePrepend>\n {{#if hasValuePrependBlock}}\n {{yield to=\"valuePrepend\"}}\n {{else}}\n {{@valuePrepend}}\n {{/if}}\n </:valuePrepend>\n <:value>\n {{#if hasValueBlock}}\n {{yield to=\"value\"}}\n {{else}}\n {{@value}}\n {{/if}}\n </:value>\n <:valueAppend>\n {{#if hasValueAppendBlock}}\n {{yield to=\"valueAppend\"}}\n {{else}}\n {{@valueAppend}}\n {{/if}}\n </:valueAppend>\n </EuiRangeTooltip>\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"max\" @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if (and this.showInput (not this.showInputOnly))}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{#if this.showInput}}\n <EuiRangeInput\n id={{this.id}}\n @min={{this.min}}\n @max={{this.max}}\n @digitTolerance={{this.digitTolerance}}\n @readOnly={{@readOnly}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @name={{@name}}\n @fullWidth={{and this.showInputOnly this.fullWidth}}\n @isLoading={{and this.showInputOnly @isLoading}}\n @isInvalid={{@isInvalid}}\n @autoSize={{not this.showInputOnly}}\n @isPrependProvided={{hasPrepend}}\n @isAppendProvided={{hasAppend}}\n ...attributes\n {{on\n \"focus\"\n (if\n this.canShowDropdown\n this.onInputFocus\n (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleOnChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n {{/if}}\n {{/if}}\n </EuiRangeWrapper>\n </:content>\n </EuiInputPopover>\n {{else}}\n <EuiRangeWrapper\n class={{classNames\n \"euiRange\"\n (if this.showInput \"euiRange--hasInput\")\n }}\n @fullWidth={{@fullWidth}}\n @compressed={{@compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{eq this.showInput true}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleOnChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo @value to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n aria-hidden={{if (eq this.showInput true) true false}}\n tabindex={{if (eq this.showInput true) \"-1\"}}\n @id={{if this.showInput undefined this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n @showRange={{this.showRange}}\n ...attributes\n {{on\n \"mousedown\"\n (if\n this.showInputOnly (fn this.setPreventPopover true) (optional)\n )\n }}\n {{on\n \"focus\"\n (if (eq this.showInput true) (optional) (optional @onFocus))\n }}\n {{on\n \"blur\"\n (if this.showInputOnly this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n />\n {{#if this.showRangeTooltip}}\n <EuiRangeTooltip\n @compressed={{@compressed}}\n @value={{@value}}\n @max={{this.max}}\n @min={{this.min}}\n @name={{@name}}\n @showTicks={{this.showTicks}}\n >\n <:valuePrepend>\n {{#if hasValuePrependBlock}}\n {{yield to=\"valuePrepend\"}}\n {{else}}\n {{@valuePrepend}}\n {{/if}}\n </:valuePrepend>\n <:value>\n {{#if hasValueBlock}}\n {{yield to=\"value\"}}\n {{else}}\n {{@value}}\n {{/if}}\n </:value>\n <:valueAppend>\n {{#if hasValueAppendBlock}}\n {{yield to=\"valueAppend\"}}\n {{else}}\n {{@valueAppend}}\n {{/if}}\n </:valueAppend>\n </EuiRangeTooltip>\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"max\" @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if (and this.showInput (not this.showInputOnly))}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{#if this.showInput}}\n <EuiRangeInput\n id={{this.id}}\n @min={{this.min}}\n @max={{this.max}}\n @digitTolerance={{this.digitTolerance}}\n @readOnly={{@readOnly}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @name={{@name}}\n @fullWidth={{and this.showInputOnly this.fullWidth}}\n @isLoading={{and this.showInputOnly @isLoading}}\n @isInvalid={{@isInvalid}}\n @autoSize={{not this.showInputOnly}}\n @isPrependProvided={{hasPrepend}}\n @isAppendProvided={{hasAppend}}\n ...attributes\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if this.canShowDropdown this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n {{/if}}\n {{/if}}\n </EuiRangeWrapper>\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiRangeComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","preventPopoverClose","tracked","args","id","guidFor","handleOnChange","e","isValid","isWithinRange","min","max","currentTarget","value","onChange","n","action","digitTolerance","Math","String","length","showInputOnly","showInput","canShowDropdown","readOnly","disabled","showRangeTooltip","showValue","undefined","onInputFocus","onFocus","isPopoverOpen","onInputBlur","later","onBlur","closePopover","setPreventPopover","val","setPreventPopoverClose","bool","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","not","EuiInputPopover","EuiRangeInput","on","optional","EuiRangeWrapper","classNames","EuiRangeLabel","EuiRangeTrack","eq","EuiRangeHighlight","castTo","EuiRangeSlider","fn","EuiRangeTooltip"],"mappings":"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"}
diff --git a/dist/components/eui-select.js b/dist/components/eui-select.js
index 734269ac62d45606ae1e7996a513fbc44a223bcd..471d5009528cd741f87999b4db9f5f0f322f3b68 100644
--- a/dist/components/eui-select.js
+++ b/dist/components/eui-select.js
@@ -1,5 +1,5 @@
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import { eq, or, not, and } from 'ember-truth-helpers';
import randomId from '../-private/random-id.js';
import EuiFormControlLayout from './eui-form-control-layout.js';
diff --git a/dist/components/eui-select.js.map b/dist/components/eui-select.js.map
index a888174e60bfeebfd32bb1472a3513f6cd1fdc05..1e06674b5c8939fb58c3797605c77277aa81a4ad 100644
--- a/dist/components/eui-select.js.map
+++ b/dist/components/eui-select.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-select.js","sources":["../../src/components/eui-select.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiFormControlLayout from '../components/eui-form-control-layout.gts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\n\nimport type { EuiFormControlLayoutSignature } from '../components/eui-form-control-layout';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiSelectSignature {\n Element: HTMLSelectElement;\n Args: {\n id?: string;\n options: {\n value: string | number;\n text: string | number;\n disabled?: boolean;\n }[];\n value?: string | number;\n fullWidth?: boolean;\n compressed?: boolean;\n isLoading?: boolean;\n disabled?: boolean;\n hasNoInitialSelection?: boolean;\n isInvalid?: boolean;\n clear?: (v: any) => void;\n inputRef?: (element: HTMLSelectElement) => void;\n isFakePrependBlock?: boolean;\n isFakeAppendBlock?: boolean;\n };\n Blocks: {\n prepend: [...EuiFormControlLayoutSignature['Blocks']['prepend'], string];\n append: [...EuiFormControlLayoutSignature['Blocks']['append'], string];\n };\n}\n\nconst EuiSelect: TemplateOnlyComponent<EuiSelectSignature> = <template>\n {{#let\n (and (not (argOrDefault @isFakePrependBlock false)) (has-block \"prepend\"))\n (and (not (argOrDefault @isFakeAppendBlock false)) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |hasPrepend hasAppend inputId|\n }}\n {{#let\n (classNames\n (if @fullWidth \"euiSelect--fullWidth\")\n (if @compressed \"euiSelect--compressed\")\n (if (or hasPrepend hasAppend) \"euiSelect--inGroup\")\n (if @isLoading \"euiSelect--isLoading\")\n \"euiSelect\"\n )\n (argOrDefault @hasNoInitialSelection false)\n as |classes hasNoInitialSelection|\n }}\n\n <EuiFormControlLayout\n @clear={{@clear}}\n @icon=\"arrowDown\"\n @iconSide=\"right\"\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses inputId to=\"prepend\"}}\n </:prepend>\n <:field>\n <select\n id={{inputId}}\n class={{classes}}\n disabled={{@disabled}}\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n >\n {{#if hasNoInitialSelection}}\n {{! template-lint-disable}}\n <option\n value=\"\"\n disabled\n hidden\n style=\"display: none\"\n selected={{not @value}}\n ></option>\n {{! template-lint-enable}}\n {{/if}}\n {{#each @options as |opt|}}\n <option\n value={{opt.value}}\n selected={{eq @value opt.value}}\n disabled={{eq opt.disabled true}}\n >\n {{opt.text}}\n </option>\n {{/each}}\n </select>\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses inputId to=\"append\"}}\n </:append>\n </EuiFormControlLayout>\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiSelect;\n"],"names":["EuiSelect","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","EuiFormControlLayout","validatableControl","didInsert","optional","eq","templateOnly"],"mappings":";;;;;;;;;;;;AAyCA,MAAMA,SAAuD,GAAAC,oBAAA,CAAAC,kBAAA,CAqE7D,kuDAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,oBAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-select.js","sources":["../../src/components/eui-select.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiFormControlLayout from '../components/eui-form-control-layout.gts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\n\nimport type { EuiFormControlLayoutSignature } from '../components/eui-form-control-layout';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiSelectSignature {\n Element: HTMLSelectElement;\n Args: {\n id?: string;\n options: {\n value: string | number;\n text: string | number;\n disabled?: boolean;\n }[];\n value?: string | number;\n fullWidth?: boolean;\n compressed?: boolean;\n isLoading?: boolean;\n disabled?: boolean;\n hasNoInitialSelection?: boolean;\n isInvalid?: boolean;\n clear?: (v: any) => void;\n inputRef?: (element: HTMLSelectElement) => void;\n isFakePrependBlock?: boolean;\n isFakeAppendBlock?: boolean;\n };\n Blocks: {\n prepend: [...EuiFormControlLayoutSignature['Blocks']['prepend'], string];\n append: [...EuiFormControlLayoutSignature['Blocks']['append'], string];\n };\n}\n\nconst EuiSelect: TemplateOnlyComponent<EuiSelectSignature> = <template>\n {{#let\n (and (not (argOrDefault @isFakePrependBlock false)) (has-block \"prepend\"))\n (and (not (argOrDefault @isFakeAppendBlock false)) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |hasPrepend hasAppend inputId|\n }}\n {{#let\n (classNames\n (if @fullWidth \"euiSelect--fullWidth\")\n (if @compressed \"euiSelect--compressed\")\n (if (or hasPrepend hasAppend) \"euiSelect--inGroup\")\n (if @isLoading \"euiSelect--isLoading\")\n \"euiSelect\"\n )\n (argOrDefault @hasNoInitialSelection false)\n as |classes hasNoInitialSelection|\n }}\n\n <EuiFormControlLayout\n @clear={{@clear}}\n @icon=\"arrowDown\"\n @iconSide=\"right\"\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses inputId to=\"prepend\"}}\n </:prepend>\n <:field>\n <select\n id={{inputId}}\n class={{classes}}\n disabled={{@disabled}}\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n >\n {{#if hasNoInitialSelection}}\n {{! template-lint-disable}}\n <option\n value=\"\"\n disabled\n hidden\n style=\"display: none\"\n selected={{not @value}}\n ></option>\n {{! template-lint-enable}}\n {{/if}}\n {{#each @options as |opt|}}\n <option\n value={{opt.value}}\n selected={{eq @value opt.value}}\n disabled={{eq opt.disabled true}}\n >\n {{opt.text}}\n </option>\n {{/each}}\n </select>\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses inputId to=\"append\"}}\n </:append>\n </EuiFormControlLayout>\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiSelect;\n"],"names":["EuiSelect","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","EuiFormControlLayout","validatableControl","didInsert","optional","eq","templateOnly"],"mappings":";;;;;;;;;;;;AAyCA,MAAMA,SAAuD,GAAAC,oBAAA,CAAAC,kBAAA,CAqE7D,kuDAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,oBAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-side-nav-item.js b/dist/components/eui-side-nav-item.js
index 352764bc4939aed56a420eb469772dbb8cc6046c..4d56cdba8356fc161dcc866cf573a7c0913fed23 100644
--- a/dist/components/eui-side-nav-item.js
+++ b/dist/components/eui-side-nav-item.js
@@ -1,5 +1,5 @@
import { on } from '@ember/modifier';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import add from 'ember-math-helpers/helpers/add';
import { not, or, gt, and, eq } from 'ember-truth-helpers';
import EuiSideNavItemButton from './eui-side-nav-item/button.js';
diff --git a/dist/components/eui-side-nav-item.js.map b/dist/components/eui-side-nav-item.js.map
index 6275944bb857586811f6d08ad4d75eacd211f147..9cbc8e00a74f28b4671a0928f632a34c9e512cec 100644
--- a/dist/components/eui-side-nav-item.js.map
+++ b/dist/components/eui-side-nav-item.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-side-nav-item.js","sources":["../../src/components/eui-side-nav-item.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport add from 'ember-math-helpers/helpers/add';\nimport { and,eq, gt, not, or } from 'ember-truth-helpers';\n\nimport Button from '../components/eui-side-nav-item/button.gts';\nimport classNames from '../helpers/class-names.ts';\nimport isItemOpen from '../helpers/is-item-open.ts';\n\nimport type { Item } from './eui-side-nav';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiSideNavItemSignature {\n Args: {\n selectedItem?: string;\n isOpen?: boolean;\n isSelected?: boolean;\n isParent?: boolean;\n icon?: string;\n onClick?: () => void;\n href?: string;\n className?: string;\n rel?: string;\n target?: string;\n items?: Item[];\n depth?: number;\n name?: string;\n renderItem?: unknown;\n disabled?: boolean;\n truncate?: boolean;\n emphasize?: boolean;\n buttonClassName?: string;\n childrenOnly?: boolean;\n buttonIconClasses?: string;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiSideNavItem: TemplateOnlyComponent<EuiSideNavItemSignature> =\n <template>\n <div\n class={{classNames\n \"euiSideNavItem\"\n (if (eq @depth 1) \"euiSideNavItem--trunk\")\n (if (eq @depth 0) \"euiSideNavItem--root\")\n (if (and (eq @depth 0) @icon) \"euiSideNavItem--rootIcon\")\n (if (gt @depth 1) \"euiSideNavItem--branch\")\n (if @items.length \"euiSideNavItem--hasChildItems\")\n (if @emphasize \"euiSideNavItem--emphasized\")\n }}\n >\n {{#let\n (classNames\n \"euiSideNavItemButton\"\n (if (or @onClick @href) \"euiSideNavItemButton--isClickable\")\n (if\n (and (gt @depth 0) @isOpen (not @isSelected))\n \"euiSideNavItemButton-isOpen\"\n )\n (if @isSelected \"euiSideNavItemButton-isSelected\")\n @buttonClassName\n )\n (and (gt @depth 0) @isParent (not @isOpen) (not @isSelected))\n as |className caret|\n }}\n {{#if (and @href (not @disabled))}}\n <a\n class={{className}}\n href={{@href}}\n target={{@target}}\n rel={{@rel}}\n {{on \"click\" (optional @onClick)}}\n >\n <Button\n @icon={{@icon}}\n @buttonIconClasses={{@buttonIconClasses}}\n @caret={{caret}}\n >\n {{yield}}\n </Button>\n </a>\n {{else if (or @onClick @disabled)}}\n <button\n type=\"button\"\n class={{className}}\n disabled={{@disabled}}\n {{on \"click\" (optional @onClick)}}\n >\n <Button\n @icon={{@icon}}\n @truncate={{@truncate}}\n @buttonIconClasses={{@buttonIconClasses}}\n @caret={{caret}}\n >\n {{yield}}\n </Button>\n </button>\n {{else}}\n <div class={{className}}>\n <Button\n @icon={{@icon}}\n @truncate={{@truncate}}\n @buttonIconClasses={{@buttonIconClasses}}\n @caret={{caret}}\n >\n {{yield}}\n </Button>\n </div>\n {{/if}}\n {{/let}}\n {{#if (or (eq @depth 0) (and @items.length @isOpen))}}\n <div class=\"euiSideNavItem__items\">\n {{#each @items as |item|}}\n {{#let\n (and\n (gt @depth 0)\n (not item.onClick)\n (not item.href)\n (not (not item.items))\n )\n as |childrenOnly|\n }}\n <EuiSideNavItem\n @selectedItem={{@selectedItem}}\n @isOpen={{isItemOpen item @selectedItem}}\n @isSelected={{and\n (not childrenOnly)\n (eq item.id @selectedItem)\n }}\n @isParent={{not (not item.items)}}\n @icon={{item.icon}}\n @onClick={{item.onClick}}\n @href={{item.href}}\n @className={{item.className}}\n @rel={{item.rel}}\n @target={{item.target}}\n @items={{item.items}}\n @depth={{add @depth 1}}\n @name={{item.name}}\n @renderItem={{item.renderItem}}\n @disabled={{item.disabled}}\n @truncate={{item.truncate}}\n @emphasize={{item.emphasize}}\n @buttonClassName={{item.buttonClassName}}\n @childrenOnly={{childrenOnly}}\n >\n {{item.name}}\n </EuiSideNavItem>\n {{/let}}\n {{/each}}\n </div>\n {{/if}}\n </div>\n </template>;\n\nexport default EuiSideNavItem;\n"],"names":["EuiSideNavItem","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","eq","and","gt","or","not","on","optional","Button","isItemOpen","add","templateOnly"],"mappings":";;;;;;;;;;;AAyCA,MAAMA,cACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAkHA,inFAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,QAAA;YAAAC,oBAAA;IAAAb,cAAA;IAAAc,UAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-side-nav-item.js","sources":["../../src/components/eui-side-nav-item.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport add from 'ember-math-helpers/helpers/add';\nimport { and,eq, gt, not, or } from 'ember-truth-helpers';\n\nimport Button from '../components/eui-side-nav-item/button.gts';\nimport classNames from '../helpers/class-names.ts';\nimport isItemOpen from '../helpers/is-item-open.ts';\n\nimport type { Item } from './eui-side-nav';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiSideNavItemSignature {\n Args: {\n selectedItem?: string;\n isOpen?: boolean;\n isSelected?: boolean;\n isParent?: boolean;\n icon?: string;\n onClick?: () => void;\n href?: string;\n className?: string;\n rel?: string;\n target?: string;\n items?: Item[];\n depth?: number;\n name?: string;\n renderItem?: unknown;\n disabled?: boolean;\n truncate?: boolean;\n emphasize?: boolean;\n buttonClassName?: string;\n childrenOnly?: boolean;\n buttonIconClasses?: string;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiSideNavItem: TemplateOnlyComponent<EuiSideNavItemSignature> =\n <template>\n <div\n class={{classNames\n \"euiSideNavItem\"\n (if (eq @depth 1) \"euiSideNavItem--trunk\")\n (if (eq @depth 0) \"euiSideNavItem--root\")\n (if (and (eq @depth 0) @icon) \"euiSideNavItem--rootIcon\")\n (if (gt @depth 1) \"euiSideNavItem--branch\")\n (if @items.length \"euiSideNavItem--hasChildItems\")\n (if @emphasize \"euiSideNavItem--emphasized\")\n }}\n >\n {{#let\n (classNames\n \"euiSideNavItemButton\"\n (if (or @onClick @href) \"euiSideNavItemButton--isClickable\")\n (if\n (and (gt @depth 0) @isOpen (not @isSelected))\n \"euiSideNavItemButton-isOpen\"\n )\n (if @isSelected \"euiSideNavItemButton-isSelected\")\n @buttonClassName\n )\n (and (gt @depth 0) @isParent (not @isOpen) (not @isSelected))\n as |className caret|\n }}\n {{#if (and @href (not @disabled))}}\n <a\n class={{className}}\n href={{@href}}\n target={{@target}}\n rel={{@rel}}\n {{on \"click\" (optional @onClick)}}\n >\n <Button\n @icon={{@icon}}\n @buttonIconClasses={{@buttonIconClasses}}\n @caret={{caret}}\n >\n {{yield}}\n </Button>\n </a>\n {{else if (or @onClick @disabled)}}\n <button\n type=\"button\"\n class={{className}}\n disabled={{@disabled}}\n {{on \"click\" (optional @onClick)}}\n >\n <Button\n @icon={{@icon}}\n @truncate={{@truncate}}\n @buttonIconClasses={{@buttonIconClasses}}\n @caret={{caret}}\n >\n {{yield}}\n </Button>\n </button>\n {{else}}\n <div class={{className}}>\n <Button\n @icon={{@icon}}\n @truncate={{@truncate}}\n @buttonIconClasses={{@buttonIconClasses}}\n @caret={{caret}}\n >\n {{yield}}\n </Button>\n </div>\n {{/if}}\n {{/let}}\n {{#if (or (eq @depth 0) (and @items.length @isOpen))}}\n <div class=\"euiSideNavItem__items\">\n {{#each @items as |item|}}\n {{#let\n (and\n (gt @depth 0)\n (not item.onClick)\n (not item.href)\n (not (not item.items))\n )\n as |childrenOnly|\n }}\n <EuiSideNavItem\n @selectedItem={{@selectedItem}}\n @isOpen={{isItemOpen item @selectedItem}}\n @isSelected={{and\n (not childrenOnly)\n (eq item.id @selectedItem)\n }}\n @isParent={{not (not item.items)}}\n @icon={{item.icon}}\n @onClick={{item.onClick}}\n @href={{item.href}}\n @className={{item.className}}\n @rel={{item.rel}}\n @target={{item.target}}\n @items={{item.items}}\n @depth={{add @depth 1}}\n @name={{item.name}}\n @renderItem={{item.renderItem}}\n @disabled={{item.disabled}}\n @truncate={{item.truncate}}\n @emphasize={{item.emphasize}}\n @buttonClassName={{item.buttonClassName}}\n @childrenOnly={{childrenOnly}}\n >\n {{item.name}}\n </EuiSideNavItem>\n {{/let}}\n {{/each}}\n </div>\n {{/if}}\n </div>\n </template>;\n\nexport default EuiSideNavItem;\n"],"names":["EuiSideNavItem","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","eq","and","gt","or","not","on","optional","Button","isItemOpen","add","templateOnly"],"mappings":";;;;;;;;;;;AAyCA,MAAMA,cACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAkHA,inFAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,QAAA;YAAAC,oBAAA;IAAAb,cAAA;IAAAc,UAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-side-nav.js b/dist/components/eui-side-nav.js
index e71f604b980116c0446217a35238a1a51e8cfdff..92595cea0baa321b6a3cf2c87e9629953b0d74cd 100644
--- a/dist/components/eui-side-nav.js
+++ b/dist/components/eui-side-nav.js
@@ -1,7 +1,7 @@
import Component from '@glimmer/component';
import { fn } from '@ember/helper';
import { on } from '@ember/modifier';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import { element } from 'ember-element-helper';
import { eq, and, not, or } from 'ember-truth-helpers';
import randomId from '../-private/random-id.js';
diff --git a/dist/components/eui-side-nav.js.map b/dist/components/eui-side-nav.js.map
index c54cd3ad8f67125081b4f920f0cbbdb582f8cfc8..239189231821e4f5206da4a2c03457b40de23fb2 100644
--- a/dist/components/eui-side-nav.js.map
+++ b/dist/components/eui-side-nav.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-side-nav.js","sources":["../../src/components/eui-side-nav.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { element } from 'ember-element-helper';\nimport { and,eq, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiButtonEmpty from '../components/eui-button-empty.gts';\nimport EuiHideFor from '../components/eui-hide-for.gts';\nimport EuiShowFor from '../components/eui-show-for.gts';\nimport EuiSideNavItem from '../components/eui-side-nav-item.gts';\nimport EuiTitle from '../components/eui-title.gts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport isItemOpen from '../helpers/is-item-open.ts';\nimport screenReaderOnly from '../modifiers/screen-reader-only.ts';\n\nimport type { EuiHideForSignature } from '../components/eui-hide-for';\n\nexport interface Item {\n id: string;\n icon?: string;\n onClick?: () => void;\n href?: string;\n className?: string;\n rel?: string;\n target?: string;\n items?: Item[];\n depth?: number;\n name?: string;\n renderItem?: unknown;\n isSelected?: boolean;\n disabled?: boolean;\n truncate?: boolean;\n emphasize?: boolean;\n buttonClassName?: string;\n}\n\nexport interface EuiSideNavSignature {\n Element: HTMLDivElement | HTMLUListElement | HTMLElement;\n Args: {\n mobileBreakpoints?: EuiHideForSignature['Args']['sizes'];\n isOpenMobile?: boolean;\n toggleOpenOnMobile?: () => void;\n heading?: string;\n headingProps?: {\n element?: string;\n id?: string;\n className?: string;\n screenReaderOnly?: boolean;\n };\n mobileTitle?: string;\n items?: Item[];\n selectedItem?: string;\n };\n Blocks: {\n default: [Item];\n heading: [];\n };\n}\n\nexport default class EuiSideNavComponent extends Component<EuiSideNavSignature> {\n get mobileBreakpoints() {\n return this.args.mobileBreakpoints || ['xs', 's'];\n }\n\n get contentClasses() {\n let mobileBreakpoints = Array.isArray(this.mobileBreakpoints)\n ? this.mobileBreakpoints\n : [this.mobileBreakpoints];\n\n return `euiSideNav__content ${mobileBreakpoints\n .map?.((breakpointName) => {\n return `euiSideNav__contentMobile-${breakpointName}`;\n })\n .join(' ')}`;\n }\n\n get hasMobileVersion() {\n return this.mobileBreakpoints?.length > 0;\n }\n\n <template>\n {{#let\n (classNames \"euiSideNav\" (if @isOpenMobile \"euiSideNav-isOpenMobile\"))\n (element (argOrDefault @headingProps.element \"h2\"))\n (argOrDefault @headingProps.id (randomId))\n (randomId)\n (or (has-block \"heading\") (not (not @heading)))\n as |classes HeadingElement headingId sideNavContentId hasHeader|\n }}\n {{#if this.hasMobileVersion}}\n <EuiShowFor @sizes={{this.mobileBreakpoints}}>\n <nav aria-labelledby={{headingId}} class={{classes}} ...attributes>\n <HeadingElement id={{headingId}} class={{@headingProps.className}}>\n <EuiButtonEmpty\n type=\"button\"\n class=\"euiSideNav__mobileToggle\"\n @contentClasses=\"euiSideNav__mobileToggleContent\"\n @textClasses=\"euiSideNav__mobileToggleText\"\n {{on\n \"click\"\n (fn (optional @toggleOpenOnMobile) (not @isOpenMobile))\n }}\n @iconType=\"apps\"\n @iconSide=\"right\"\n aria-controls={{sideNavContentId}}\n aria-expanded={{@isOpenMobile}}\n >\n {{#if @mobileTitle}}\n {{@mobileTitle}}\n {{else if (has-block \"heading\")}}\n {{yield to=\"heading\"}}\n {{else}}\n {{@heading}}\n {{/if}}\n </EuiButtonEmpty>\n </HeadingElement>\n <div id={{sideNavContentId}} class={{this.contentClasses}}>\n {{#each @items as |item|}}\n {{#let\n (and\n (not item.onClick) (not item.href) (not (not item.items))\n )\n as |childrenOnly|\n }}\n <EuiSideNavItem\n @selectedItem={{@selectedItem}}\n @isOpen={{isItemOpen item @selectedItem}}\n @isSelected={{and\n (not childrenOnly)\n (eq item.id item.isSelected)\n }}\n @isParent={{not (not item.items)}}\n @icon={{item.icon}}\n @onClick={{item.onClick}}\n @href={{item.href}}\n @className={{item.className}}\n @rel={{item.rel}}\n @target={{item.target}}\n @items={{item.items}}\n @depth={{0}}\n @renderItem={{item.renderItem}}\n @disabled={{item.disabled}}\n @truncate={{item.truncate}}\n @emphasize={{item.emphasize}}\n @buttonClassName={{item.buttonClassName}}\n @childrenOnly={{childrenOnly}}\n >\n {{item.name}}\n </EuiSideNavItem>\n {{/let}}\n {{/each}}\n </div>\n </nav>\n </EuiShowFor>\n {{/if}}\n\n <EuiHideFor @sizes={{this.mobileBreakpoints}}>\n <nav\n aria-labelledby={{if hasHeader headingId}}\n class={{classes}}\n ...attributes\n >\n {{#if hasHeader}}\n {{#let\n (argOrDefault @headingProps.screenReaderOnly false)\n as |shouldScreenReader|\n }}\n {{#if (has-block \"heading\")}}\n {{#if shouldScreenReader}}\n <HeadingElement {{screenReaderOnly}}>\n {{yield to=\"heading\"}}\n </HeadingElement>\n {{else}}\n <EuiTitle\n class={{classNames\n \"euiSideNav__heading\"\n @headingProps.className\n }}\n @size=\"xs\"\n >\n <HeadingElement>\n {{yield to=\"heading\"}}\n </HeadingElement>\n </EuiTitle>\n {{/if}}\n {{else}}\n {{#if screenReaderOnly}}\n <HeadingElement {{screenReaderOnly}}>\n {{@heading}}\n </HeadingElement>\n {{else}}\n <EuiTitle\n class={{classNames\n \"euiSideNav__heading\"\n @headingProps.className\n }}\n @size=\"xs\"\n >\n {{@heading}}\n </EuiTitle>\n {{/if}}\n {{/if}}\n {{/let}}\n {{/if}}\n <div id={{sideNavContentId}} class={{this.contentClasses}}>\n {{#each @items as |item|}}\n {{#let\n (and (not item.onClick) (not item.href) (not (not item.items)))\n as |childrenOnly|\n }}\n <EuiSideNavItem\n @selectedItem={{@selectedItem}}\n @isOpen={{isItemOpen item @selectedItem}}\n @isSelected={{and\n (not childrenOnly)\n (eq item.id item.isSelected)\n }}\n @isParent={{not (not item.items)}}\n @icon={{item.icon}}\n @onClick={{item.onClick}}\n @href={{item.href}}\n @className={{item.className}}\n @rel={{item.rel}}\n @target={{item.target}}\n @items={{item.items}}\n @depth={{0}}\n @renderItem={{item.renderItem}}\n @disabled={{item.disabled}}\n @truncate={{item.truncate}}\n @emphasize={{item.emphasize}}\n @buttonClassName={{item.buttonClassName}}\n @childrenOnly={{childrenOnly}}\n >\n {{item.name}}\n </EuiSideNavItem>\n {{/let}}\n {{/each}}\n </div>\n </nav>\n </EuiHideFor>\n {{/let}}\n </template>\n}\n"],"names":["EuiSideNavComponent","Component","mobileBreakpoints","args","contentClasses","Array","isArray","map","breakpointName","join","hasMobileVersion","length","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","element","argOrDefault","randomId","or","not","EuiShowFor","EuiButtonEmpty","on","fn","optional","and","EuiSideNavItem","isItemOpen","eq","EuiHideFor","screenReaderOnly","EuiTitle"],"mappings":";;;;;;;;;;;;;;;;;;;AA+De,MAAMA,4BAA4BC,SAAU,CAAA;EACzD,IAAIC,iBAAoBA,GAAA;IACtB,OAAO,IAAI,CAACC,IAAI,CAACD,iBAAiB,IAAI,CAAC,IAAA,EAAM,GAAA,CAAI;AACnD;EAEA,IAAIE,cAAiBA,GAAA;AACnB,IAAA,IAAIF,iBAAA,GAAoBG,KAAM,CAAAC,OAAO,CAAC,IAAI,CAACJ,iBAAiB,CACxD,GAAA,IAAI,CAACA,iBAAiB,GACtB,CAAC,IAAI,CAACA,iBAAiB,CAAC;AAE5B,IAAA,OAAO,uBAAuBA,iBAC3B,CAAAK,GAAG,GAAIC,cAAA,IAAA;MACN,OAAO,CAAA,0BAAA,EAA6BA,cAAA,CAAgB,CAAA;AACtD,KACC,CAAA,CAAAC,IAAA,CAAK,KAAM,CAAA;AAChB;EAEA,IAAIC,gBAAmBA,GAAA;AACrB,IAAA,OAAO,IAAI,CAACR,iBAAiB,EAAES,MAAS,GAAA,CAAA;AAC1C;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAiKA,q7IAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,UAAA;QAAAC,OAAA;QAAAC,YAAA;QAAAC,QAAA;QAAAC,EAAA;QAAAC,GAAA;oBAAAC,mBAAA;QAAAC,cAAA;QAAAC,EAAA;QAAAC,EAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,cAAA;QAAAC,UAAA;QAAAC,EAAA;oBAAAC,mBAAA;QAAAC,gBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-side-nav.js","sources":["../../src/components/eui-side-nav.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { element } from 'ember-element-helper';\nimport { and,eq, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiButtonEmpty from '../components/eui-button-empty.gts';\nimport EuiHideFor from '../components/eui-hide-for.gts';\nimport EuiShowFor from '../components/eui-show-for.gts';\nimport EuiSideNavItem from '../components/eui-side-nav-item.gts';\nimport EuiTitle from '../components/eui-title.gts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport isItemOpen from '../helpers/is-item-open.ts';\nimport screenReaderOnly from '../modifiers/screen-reader-only.ts';\n\nimport type { EuiHideForSignature } from '../components/eui-hide-for';\n\nexport interface Item {\n id: string;\n icon?: string;\n onClick?: () => void;\n href?: string;\n className?: string;\n rel?: string;\n target?: string;\n items?: Item[];\n depth?: number;\n name?: string;\n renderItem?: unknown;\n isSelected?: boolean;\n disabled?: boolean;\n truncate?: boolean;\n emphasize?: boolean;\n buttonClassName?: string;\n}\n\nexport interface EuiSideNavSignature {\n Element: HTMLDivElement | HTMLUListElement | HTMLElement;\n Args: {\n mobileBreakpoints?: EuiHideForSignature['Args']['sizes'];\n isOpenMobile?: boolean;\n toggleOpenOnMobile?: () => void;\n heading?: string;\n headingProps?: {\n element?: string;\n id?: string;\n className?: string;\n screenReaderOnly?: boolean;\n };\n mobileTitle?: string;\n items?: Item[];\n selectedItem?: string;\n };\n Blocks: {\n default: [Item];\n heading: [];\n };\n}\n\nexport default class EuiSideNavComponent extends Component<EuiSideNavSignature> {\n get mobileBreakpoints() {\n return this.args.mobileBreakpoints || ['xs', 's'];\n }\n\n get contentClasses() {\n let mobileBreakpoints = Array.isArray(this.mobileBreakpoints)\n ? this.mobileBreakpoints\n : [this.mobileBreakpoints];\n\n return `euiSideNav__content ${mobileBreakpoints\n .map?.((breakpointName) => {\n return `euiSideNav__contentMobile-${breakpointName}`;\n })\n .join(' ')}`;\n }\n\n get hasMobileVersion() {\n return this.mobileBreakpoints?.length > 0;\n }\n\n <template>\n {{#let\n (classNames \"euiSideNav\" (if @isOpenMobile \"euiSideNav-isOpenMobile\"))\n (element (argOrDefault @headingProps.element \"h2\"))\n (argOrDefault @headingProps.id (randomId))\n (randomId)\n (or (has-block \"heading\") (not (not @heading)))\n as |classes HeadingElement headingId sideNavContentId hasHeader|\n }}\n {{#if this.hasMobileVersion}}\n <EuiShowFor @sizes={{this.mobileBreakpoints}}>\n <nav aria-labelledby={{headingId}} class={{classes}} ...attributes>\n <HeadingElement id={{headingId}} class={{@headingProps.className}}>\n <EuiButtonEmpty\n type=\"button\"\n class=\"euiSideNav__mobileToggle\"\n @contentClasses=\"euiSideNav__mobileToggleContent\"\n @textClasses=\"euiSideNav__mobileToggleText\"\n {{on\n \"click\"\n (fn (optional @toggleOpenOnMobile) (not @isOpenMobile))\n }}\n @iconType=\"apps\"\n @iconSide=\"right\"\n aria-controls={{sideNavContentId}}\n aria-expanded={{@isOpenMobile}}\n >\n {{#if @mobileTitle}}\n {{@mobileTitle}}\n {{else if (has-block \"heading\")}}\n {{yield to=\"heading\"}}\n {{else}}\n {{@heading}}\n {{/if}}\n </EuiButtonEmpty>\n </HeadingElement>\n <div id={{sideNavContentId}} class={{this.contentClasses}}>\n {{#each @items as |item|}}\n {{#let\n (and\n (not item.onClick) (not item.href) (not (not item.items))\n )\n as |childrenOnly|\n }}\n <EuiSideNavItem\n @selectedItem={{@selectedItem}}\n @isOpen={{isItemOpen item @selectedItem}}\n @isSelected={{and\n (not childrenOnly)\n (eq item.id item.isSelected)\n }}\n @isParent={{not (not item.items)}}\n @icon={{item.icon}}\n @onClick={{item.onClick}}\n @href={{item.href}}\n @className={{item.className}}\n @rel={{item.rel}}\n @target={{item.target}}\n @items={{item.items}}\n @depth={{0}}\n @renderItem={{item.renderItem}}\n @disabled={{item.disabled}}\n @truncate={{item.truncate}}\n @emphasize={{item.emphasize}}\n @buttonClassName={{item.buttonClassName}}\n @childrenOnly={{childrenOnly}}\n >\n {{item.name}}\n </EuiSideNavItem>\n {{/let}}\n {{/each}}\n </div>\n </nav>\n </EuiShowFor>\n {{/if}}\n\n <EuiHideFor @sizes={{this.mobileBreakpoints}}>\n <nav\n aria-labelledby={{if hasHeader headingId}}\n class={{classes}}\n ...attributes\n >\n {{#if hasHeader}}\n {{#let\n (argOrDefault @headingProps.screenReaderOnly false)\n as |shouldScreenReader|\n }}\n {{#if (has-block \"heading\")}}\n {{#if shouldScreenReader}}\n <HeadingElement {{screenReaderOnly}}>\n {{yield to=\"heading\"}}\n </HeadingElement>\n {{else}}\n <EuiTitle\n class={{classNames\n \"euiSideNav__heading\"\n @headingProps.className\n }}\n @size=\"xs\"\n >\n <HeadingElement>\n {{yield to=\"heading\"}}\n </HeadingElement>\n </EuiTitle>\n {{/if}}\n {{else}}\n {{#if screenReaderOnly}}\n <HeadingElement {{screenReaderOnly}}>\n {{@heading}}\n </HeadingElement>\n {{else}}\n <EuiTitle\n class={{classNames\n \"euiSideNav__heading\"\n @headingProps.className\n }}\n @size=\"xs\"\n >\n {{@heading}}\n </EuiTitle>\n {{/if}}\n {{/if}}\n {{/let}}\n {{/if}}\n <div id={{sideNavContentId}} class={{this.contentClasses}}>\n {{#each @items as |item|}}\n {{#let\n (and (not item.onClick) (not item.href) (not (not item.items)))\n as |childrenOnly|\n }}\n <EuiSideNavItem\n @selectedItem={{@selectedItem}}\n @isOpen={{isItemOpen item @selectedItem}}\n @isSelected={{and\n (not childrenOnly)\n (eq item.id item.isSelected)\n }}\n @isParent={{not (not item.items)}}\n @icon={{item.icon}}\n @onClick={{item.onClick}}\n @href={{item.href}}\n @className={{item.className}}\n @rel={{item.rel}}\n @target={{item.target}}\n @items={{item.items}}\n @depth={{0}}\n @renderItem={{item.renderItem}}\n @disabled={{item.disabled}}\n @truncate={{item.truncate}}\n @emphasize={{item.emphasize}}\n @buttonClassName={{item.buttonClassName}}\n @childrenOnly={{childrenOnly}}\n >\n {{item.name}}\n </EuiSideNavItem>\n {{/let}}\n {{/each}}\n </div>\n </nav>\n </EuiHideFor>\n {{/let}}\n </template>\n}\n"],"names":["EuiSideNavComponent","Component","mobileBreakpoints","args","contentClasses","Array","isArray","map","breakpointName","join","hasMobileVersion","length","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","element","argOrDefault","randomId","or","not","EuiShowFor","EuiButtonEmpty","on","fn","optional","and","EuiSideNavItem","isItemOpen","eq","EuiHideFor","screenReaderOnly","EuiTitle"],"mappings":";;;;;;;;;;;;;;;;;;;AA+De,MAAMA,4BAA4BC,SAAU,CAAA;EACzD,IAAIC,iBAAoBA,GAAA;IACtB,OAAO,IAAI,CAACC,IAAI,CAACD,iBAAiB,IAAI,CAAC,IAAA,EAAM,GAAA,CAAI;AACnD;EAEA,IAAIE,cAAiBA,GAAA;AACnB,IAAA,IAAIF,iBAAA,GAAoBG,KAAM,CAAAC,OAAO,CAAC,IAAI,CAACJ,iBAAiB,CACxD,GAAA,IAAI,CAACA,iBAAiB,GACtB,CAAC,IAAI,CAACA,iBAAiB,CAAC;AAE5B,IAAA,OAAO,uBAAuBA,iBAC3B,CAAAK,GAAG,GAAIC,cAAA,IAAA;MACN,OAAO,CAAA,0BAAA,EAA6BA,cAAA,CAAgB,CAAA;AACtD,KACC,CAAA,CAAAC,IAAA,CAAK,KAAM,CAAA;AAChB;EAEA,IAAIC,gBAAmBA,GAAA;AACrB,IAAA,OAAO,IAAI,CAACR,iBAAiB,EAAES,MAAS,GAAA,CAAA;AAC1C;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAiKA,q7IAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,UAAA;QAAAC,OAAA;QAAAC,YAAA;QAAAC,QAAA;QAAAC,EAAA;QAAAC,GAAA;oBAAAC,mBAAA;QAAAC,cAAA;QAAAC,EAAA;QAAAC,EAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,cAAA;QAAAC,UAAA;QAAAC,EAAA;oBAAAC,mBAAA;QAAAC,gBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
diff --git a/dist/components/eui-step-horizontal.js b/dist/components/eui-step-horizontal.js
index 97599b731627fd659f6bfe712fa2aeb31dd3f369..567d7aa0cff2f7805514bc81a9aef9b8f54e0483 100644
--- a/dist/components/eui-step-horizontal.js
+++ b/dist/components/eui-step-horizontal.js
@@ -1,5 +1,5 @@
import { on } from '@ember/modifier';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import { eq } from 'ember-truth-helpers';
import argOrDefault from '../helpers/arg-or-default.js';
import classNames from '../helpers/class-names.js';
diff --git a/dist/components/eui-step-horizontal.js.map b/dist/components/eui-step-horizontal.js.map
index 798331c51cb01460b144ab0d359b214d08fc55b9..a18380e6d36b82a90ca1a6939827c9fb8eded8ba 100644
--- a/dist/components/eui-step-horizontal.js.map
+++ b/dist/components/eui-step-horizontal.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-step-horizontal.js","sources":["../../src/components/eui-step-horizontal.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { eq } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiStepNumber from './eui-step-number.gts';\n\nimport type { EuiStepNumberSignature } from './eui-step-number';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiStepHorizontalSignature {\n Element: HTMLButtonElement;\n Args: {\n /**\n * The title of the step\n */\n title?: string;\n /**\n * The number of the step\n */\n step?: number;\n /**\n * Whether or not the step is selected\n */\n isSelected?: boolean;\n /**\n * Whether or not the step is complete\n */\n isComplete?: boolean;\n /**\n * Whether or not the step is disabled\n */\n disabled?: boolean;\n /**\n * The status of the step\n */\n status?: EuiStepNumberSignature['Args']['status'];\n /**\n * A callback for when the step is clicked\n */\n onStepClick?: (event: MouseEvent) => void;\n };\n}\n\nconst EuiStepHorizontal: TemplateOnlyComponent<EuiStepHorizontalSignature> =\n <template>\n {{#let\n (if\n @disabled\n \"disabled\"\n (if\n @isComplete\n \"complete\"\n (if @isSelected \"current\" (argOrDefault @status \"incomplete\"))\n )\n )\n as |status|\n }}\n <li\n class=\"euiStepHorizontal__item\"\n aria-current={{if @isSelected \"step\"}}\n >\n <button\n type=\"button\"\n class={{classNames\n \"euiStepHorizontal\"\n (if (eq status \"current\") \"euiStepHorizontal-isSelected\")\n (if (eq status \"complete\") \"euiStepHorizontal-isComplete\")\n (if (eq status \"incomplete\") \"euiStepHorizontal-isIncomplete\")\n (if (eq status \"disabled\") \"euiStepHorizontal-isDisabled\")\n }}\n title={{@title}}\n disabled={{@disabled}}\n ...attributes\n {{on \"click\" (optional @onStepClick)}}\n >\n <EuiStepNumber\n class=\"euiStepHorizontal__number\"\n {{!@glint-expect-error}}\n @status={{status}}\n @number={{@step}}\n />\n <span class=\"euiStepHorizontal__title\">\n {{@title}}\n </span>\n </button>\n </li>\n {{/let}}\n </template>;\n\nexport default EuiStepHorizontal;\n"],"names":["EuiStepHorizontal","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","classNames","eq","on","optional","EuiStepNumber","templateOnly"],"mappings":";;;;;;;;;;AA8CA,MAAMA,iBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CA2CA,g7BAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,YAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-step-horizontal.js","sources":["../../src/components/eui-step-horizontal.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { eq } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiStepNumber from './eui-step-number.gts';\n\nimport type { EuiStepNumberSignature } from './eui-step-number';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiStepHorizontalSignature {\n Element: HTMLButtonElement;\n Args: {\n /**\n * The title of the step\n */\n title?: string;\n /**\n * The number of the step\n */\n step?: number;\n /**\n * Whether or not the step is selected\n */\n isSelected?: boolean;\n /**\n * Whether or not the step is complete\n */\n isComplete?: boolean;\n /**\n * Whether or not the step is disabled\n */\n disabled?: boolean;\n /**\n * The status of the step\n */\n status?: EuiStepNumberSignature['Args']['status'];\n /**\n * A callback for when the step is clicked\n */\n onStepClick?: (event: MouseEvent) => void;\n };\n}\n\nconst EuiStepHorizontal: TemplateOnlyComponent<EuiStepHorizontalSignature> =\n <template>\n {{#let\n (if\n @disabled\n \"disabled\"\n (if\n @isComplete\n \"complete\"\n (if @isSelected \"current\" (argOrDefault @status \"incomplete\"))\n )\n )\n as |status|\n }}\n <li\n class=\"euiStepHorizontal__item\"\n aria-current={{if @isSelected \"step\"}}\n >\n <button\n type=\"button\"\n class={{classNames\n \"euiStepHorizontal\"\n (if (eq status \"current\") \"euiStepHorizontal-isSelected\")\n (if (eq status \"complete\") \"euiStepHorizontal-isComplete\")\n (if (eq status \"incomplete\") \"euiStepHorizontal-isIncomplete\")\n (if (eq status \"disabled\") \"euiStepHorizontal-isDisabled\")\n }}\n title={{@title}}\n disabled={{@disabled}}\n ...attributes\n {{on \"click\" (optional @onStepClick)}}\n >\n <EuiStepNumber\n class=\"euiStepHorizontal__number\"\n {{!@glint-expect-error}}\n @status={{status}}\n @number={{@step}}\n />\n <span class=\"euiStepHorizontal__title\">\n {{@title}}\n </span>\n </button>\n </li>\n {{/let}}\n </template>;\n\nexport default EuiStepHorizontal;\n"],"names":["EuiStepHorizontal","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","classNames","eq","on","optional","EuiStepNumber","templateOnly"],"mappings":";;;;;;;;;;AA8CA,MAAMA,iBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CA2CA,g7BAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,YAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/dist/components/eui-super-date-picker/date-popover/datetime-picker.js b/dist/components/eui-super-date-picker/date-popover/datetime-picker.js
index cf3f4e9cb28fc7dde30735f9a95a4de7e687ed2b..6dfb95408b6e928b78e56d52675be694b2445118 100644
--- a/dist/components/eui-super-date-picker/date-popover/datetime-picker.js
+++ b/dist/components/eui-super-date-picker/date-popover/datetime-picker.js
@@ -4,7 +4,7 @@ import { helper } from '@ember/component/helper';
import { fn, concat } from '@ember/helper';
import { on } from '@ember/modifier';
import { action } from '@ember/object';
-import pick from 'ember-composable-helpers/helpers/pick';
+import pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick';
import { eq, not, and } from 'ember-truth-helpers';
import moment from 'moment';
import EuiFlexItem from '../../eui-flex-item.js';
diff --git a/dist/components/eui-super-date-picker/date-popover/datetime-picker.js.map b/dist/components/eui-super-date-picker/date-popover/datetime-picker.js.map
index 7a236274f0d1e273d25ae7e9346bc867e54eae6d..4b75493d20f5845044e1c7da11a4ae6a71c8e2c6 100644
--- a/dist/components/eui-super-date-picker/date-popover/datetime-picker.js.map
+++ b/dist/components/eui-super-date-picker/date-popover/datetime-picker.js.map
@@ -1 +1 @@
-{"version":3,"file":"datetime-picker.js","sources":["../../../../src/components/eui-super-date-picker/date-popover/datetime-picker.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { helper } from '@ember/component/helper';\nimport { concat, fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport type Owner from '@ember/owner';\n\nimport pick from 'ember-composable-helpers/helpers/pick';\nimport { and, eq, not } from 'ember-truth-helpers';\nimport moment from 'moment';\n\nimport EuiFlexItem from '../../eui-flex-item.gts';\nimport EuiFormControlLayout from '../../eui-form-control-layout.gts';\nimport EuiIcon from '../../eui-icon.gts';\nimport EuiSelect from '../../eui-select.gts';\n\nconst isSameDayHelper = helper(function ([year, month, day, selectedDate]: [\n number,\n number,\n number,\n moment.Moment | undefined\n]) {\n if (!selectedDate) {\n return false;\n }\n\n return (\n selectedDate.year() === year &&\n selectedDate.month() === month &&\n selectedDate.date() === day\n );\n});\n\ninterface DatetimePickerArgs {\n selected?: moment.Moment | null;\n onChange: (value: string | Date | moment.Moment, e: Event) => void;\n iconClasses?: string;\n dateFormat?: string;\n}\n\ninterface Day {\n day: number;\n month?: number;\n year?: number;\n isOutside?: boolean;\n}\n\ninterface DatetimePickerSignature {\n Args: DatetimePickerArgs;\n}\n\nexport default class DatetimePicker extends Component<DatetimePickerSignature> {\n @tracked month: number = 0;\n @tracked year: number = 0;\n @tracked monthMoment: moment.Moment;\n // Used to style the days outside of the current month\n @tracked offset: number = 0;\n @tracked selectedDate?: moment.Moment;\n @tracked selectedTime?: string;\n @tracked today: moment.Moment;\n\n momentConfig: {\n year: number;\n month: number;\n day: number;\n hour: number;\n minute: number;\n second: number;\n millisecond: number;\n };\n\n constructor(owner: Owner, args: DatetimePickerArgs) {\n super(owner, args);\n\n if (this.args.selected) {\n this.monthMoment = this.args.selected;\n this.selectedDate = this.args.selected;\n } else {\n this.monthMoment = moment([this.year, this.month]);\n }\n\n this.momentConfig = {\n year: this.monthMoment.year(),\n month: this.monthMoment.month(),\n day: this.monthMoment.date(),\n hour: this.monthMoment.hour(),\n minute: this.monthMoment.minute(),\n second: 0,\n millisecond: 0\n };\n\n this.month = this.momentConfig.month;\n this.year = this.momentConfig.year;\n\n let hour = this.momentConfig.hour;\n let minute = this.momentConfig.minute;\n let hourStr = hour < 10 ? `0${hour}` : hour;\n let minuteStr = minute < 10 ? `0${minute}` : minute;\n\n this.selectedTime = `${hourStr}:${minuteStr}`;\n\n this.offset = this.monthMoment.clone().startOf('month').day();\n\n this.today = moment();\n }\n\n get monthNames() {\n return moment.months().map((month, i) => {\n return {\n text: month,\n value: i\n };\n });\n }\n\n get years() {\n return Array.from(Array(15).keys()).map((_, i) => {\n // Create a list of years +/- 7 from the current year\n let year = this.year - 7 + i;\n\n return {\n text: year,\n value: year\n };\n });\n }\n\n get times() {\n const timesArray = [];\n\n // Create entries every 30 minutes\n for (let i = 0; i < 24; i++) {\n let hour = i < 10 ? `0${i}` : i;\n\n timesArray.push(`${hour}:00`, `${hour}:30`);\n }\n\n return timesArray;\n }\n\n get days() {\n // Used for showing days outside of the current month\n // const prevMonth = moment([this.year, this.month - 1]);\n const prevMonth = this.monthMoment.clone().subtract(1, 'month');\n const nextMonth = this.monthMoment.clone().add(1, 'month');\n const offset = this.offset;\n let daysInMonth = this.monthMoment.daysInMonth();\n let daysInPrevMonth = prevMonth.daysInMonth();\n\n const daysArray = [];\n\n for (let i = 0; i < daysInMonth; i++) {\n daysArray[i] = {\n day: i + 1\n };\n }\n\n // Fill the previous and next month days\n for (let i = 0, d = daysInPrevMonth; i < offset; i++, d--) {\n daysArray.unshift({\n day: d,\n month: prevMonth.month(),\n year: prevMonth.year(),\n isOutside: true\n });\n }\n\n // All months fit within 6 weeks (42 days)\n for (let d = 1, i = daysInMonth + offset; i < 42; d++, i++) {\n daysArray.push({\n day: d,\n month: nextMonth.month(),\n year: nextMonth.year(),\n isOutside: true\n });\n }\n\n // All months fit within 6 weeks (42 days)\n // but depending on the starting day, one week may not be needed\n const daysMatrix = [];\n const weeks = daysInMonth + offset > 35 ? 6 : 5;\n\n for (let i = 0; i < weeks; i++) {\n daysMatrix[i] = daysArray.slice(i * 7, i * 7 + 7);\n }\n\n return daysMatrix;\n }\n\n updateDate() {\n this.year = this.monthMoment.year();\n this.month = this.monthMoment.month();\n this.offset = this.monthMoment.clone().startOf('month').day();\n }\n\n @action\n selectTime(time: string, e: Event) {\n this.selectedTime = time;\n\n const [hour, minute] = time.split(':');\n\n this.momentConfig.hour = parseInt(hour!);\n this.momentConfig.minute = parseInt(minute!);\n this.momentConfig.second = 0;\n this.momentConfig.millisecond = 0;\n this.selectedDate = moment(this.momentConfig);\n this.args.onChange(this.selectedDate, e);\n }\n\n @action\n selectDate(day: Day, e: Event) {\n // Only outside days will have year/month\n this.momentConfig.year = day.year || this.year;\n this.momentConfig.month = day.month || this.month;\n this.momentConfig.day = day.day;\n this.selectedDate = moment(this.momentConfig);\n this.args.onChange(this.selectedDate, e);\n\n // Update the state to show the selected month properly\n if (day.isOutside && day.month && day.year) {\n this.monthMoment.month(day.month);\n this.monthMoment.year(day.year);\n this.updateDate();\n }\n }\n\n @action\n setYear(year: string) {\n this.year = parseInt(year);\n }\n\n @action\n setMonth(month: string) {\n this.monthMoment.month(parseInt(month));\n this.updateDate();\n }\n\n @action\n increaseMonth() {\n this.monthMoment.add(1, 'month');\n this.updateDate();\n }\n\n @action\n decreaseMonth() {\n this.monthMoment.subtract(1, 'month');\n this.updateDate();\n }\n\n <template>\n <div class=\"euiDatePicker euiDatePicker--inline\">\n <EuiFormControlLayout>\n <div class=\"react-datepicker\">\n <button\n type=\"button\"\n class=\"react-datepicker__navigation react-datepicker__navigation--previous\"\n aria-label=\"Previous month\"\n {{on \"click\" this.decreaseMonth}}\n >\n <EuiIcon @iconClasses=\"euiButtonIcon__icon\" @type=\"arrowLeft\" />\n </button>\n <button\n type=\"button\"\n class=\"react-datepicker__navigation react-datepicker__navigation--next\"\n aria-label=\"Next month\"\n {{on \"click\" this.increaseMonth}}\n >\n <EuiIcon\n @iconClasses=\"euiButtonIcon__icon {{@iconClasses}}\"\n @type=\"arrowRight\"\n />\n </button>\n <div class=\"react-datepicker__month-container\">\n <div class=\"react-datepicker__header\">\n <div\n class=\"react-datepicker__header__dropdown react-datepicker__header__dropdown--scroll\"\n >\n <div\n class=\"react-datepicker__month-dropdown-container react-datepicker__month-dropdown-container--scroll\"\n >\n {{!template-lint-disable}}\n <div\n class=\"react-datepicker__month-read-view\"\n style=\"padding: 0;\"\n >\n <EuiFlexItem @grow={{1}}>\n <EuiSelect\n @compressed={{true}}\n @value={{this.month}}\n @options={{this.monthNames}}\n {{on \"change\" (pick \"target.value\" this.setMonth)}}\n />\n </EuiFlexItem>\n </div>\n </div>\n <div\n class=\"react-datepicker__year-dropdown-container react-datepicker__year-dropdown-container--scroll\"\n >\n {{!template-lint-disable}}\n <div\n class=\"react-datepicker__year-read-view\"\n style=\"padding: 0;\"\n >\n <EuiFlexItem @grow={{1}}>\n <EuiSelect\n @compressed={{true}}\n @value={{this.year}}\n @options={{this.years}}\n {{on \"change\" (pick \"target.value\" this.setYear)}}\n />\n </EuiFlexItem>\n </div>\n </div>\n </div>\n <div class=\"react-datepicker__day-names\">\n <div class=\"react-datepicker__day-name\">Su</div>\n <div class=\"react-datepicker__day-name\">Mo</div>\n <div class=\"react-datepicker__day-name\">Tu</div>\n <div class=\"react-datepicker__day-name\">We</div>\n <div class=\"react-datepicker__day-name\">Th</div>\n <div class=\"react-datepicker__day-name\">Fr</div>\n <div class=\"react-datepicker__day-name\">Sa</div>\n </div>\n </div>\n\n <div\n class=\"react-datepicker__month react-datepicker__month--accessible\"\n >\n {{#each this.days as |days|}}\n <div class=\"react-datepicker__week\">\n {{#each days as |day|}}\n <div\n role=\"button\"\n class={{concat\n \"react-datepicker__day\"\n (if\n (and\n (not day.isOutside)\n (isSameDayHelper\n this.year this.month day.day this.selectedDate\n )\n )\n \" react-datepicker__day--selected\"\n )\n (if\n (isSameDayHelper\n this.year this.month day.day this.today\n )\n \" react-datepicker__day--today\"\n )\n (if\n day.isOutside \" react-datepicker__day--outside-month\"\n )\n }}\n {{on \"click\" (fn this.selectDate day)}}\n >\n <div class=\"react-datepicker__day-text\">{{day.day}}</div>\n </div>\n {{/each}}\n </div>\n {{/each}}\n </div>\n </div>\n\n <div class=\"react-datepicker__time-container\">\n <div class=\"react-datepicker__time\">\n <div\n class=\"react-datepicker__time-box react-datepicker__time-box--accessible\"\n >\n <ul class=\"react-datepicker__time-list\">\n {{#each this.times as |time|}}\n <li\n role=\"option\"\n class={{concat\n \"react-datepicker__time-list-item\"\n (if\n (eq time this.selectedTime)\n \" react-datepicker__time-list-item--selected\"\n )\n }}\n {{on \"click\" (fn this.selectTime time)}}\n >\n {{time}}\n </li>\n {{/each}}\n </ul>\n </div>\n </div>\n </div>\n </div>\n </EuiFormControlLayout>\n </div>\n </template>\n}\n"],"names":["isSameDayHelper","helper","year","month","day","selectedDate","date","DatetimePicker","Component","g","prototype","tracked","i","void 0","momentConfig","constructor","owner","args","selected","monthMoment","moment","hour","minute","second","millisecond","hourStr","minuteStr","selectedTime","offset","clone","startOf","today","monthNames","months","map","text","value","years","Array","from","keys","_","times","timesArray","push","days","prevMonth","subtract","nextMonth","add","daysInMonth","daysInPrevMonth","daysArray","d","unshift","isOutside","daysMatrix","weeks","slice","updateDate","selectTime","time","e","split","parseInt","onChange","n","action","selectDate","setYear","setMonth","increaseMonth","decreaseMonth","setComponentTemplate","precompileTemplate","strictMode","scope","EuiFormControlLayout","on","EuiIcon","EuiFlexItem","EuiSelect","pick","concat","and","not","fn","eq"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"datetime-picker.js","sources":["../../../../src/components/eui-super-date-picker/date-popover/datetime-picker.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { helper } from '@ember/component/helper';\nimport { concat, fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport type Owner from '@ember/owner';\n\nimport pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick';\nimport { and, eq, not } from 'ember-truth-helpers';\nimport moment from 'moment';\n\nimport EuiFlexItem from '../../eui-flex-item.gts';\nimport EuiFormControlLayout from '../../eui-form-control-layout.gts';\nimport EuiIcon from '../../eui-icon.gts';\nimport EuiSelect from '../../eui-select.gts';\n\nconst isSameDayHelper = helper(function ([year, month, day, selectedDate]: [\n number,\n number,\n number,\n moment.Moment | undefined\n]) {\n if (!selectedDate) {\n return false;\n }\n\n return (\n selectedDate.year() === year &&\n selectedDate.month() === month &&\n selectedDate.date() === day\n );\n});\n\ninterface DatetimePickerArgs {\n selected?: moment.Moment | null;\n onChange: (value: string | Date | moment.Moment, e: Event) => void;\n iconClasses?: string;\n dateFormat?: string;\n}\n\ninterface Day {\n day: number;\n month?: number;\n year?: number;\n isOutside?: boolean;\n}\n\ninterface DatetimePickerSignature {\n Args: DatetimePickerArgs;\n}\n\nexport default class DatetimePicker extends Component<DatetimePickerSignature> {\n @tracked month: number = 0;\n @tracked year: number = 0;\n @tracked monthMoment: moment.Moment;\n // Used to style the days outside of the current month\n @tracked offset: number = 0;\n @tracked selectedDate?: moment.Moment;\n @tracked selectedTime?: string;\n @tracked today: moment.Moment;\n\n momentConfig: {\n year: number;\n month: number;\n day: number;\n hour: number;\n minute: number;\n second: number;\n millisecond: number;\n };\n\n constructor(owner: Owner, args: DatetimePickerArgs) {\n super(owner, args);\n\n if (this.args.selected) {\n this.monthMoment = this.args.selected;\n this.selectedDate = this.args.selected;\n } else {\n this.monthMoment = moment([this.year, this.month]);\n }\n\n this.momentConfig = {\n year: this.monthMoment.year(),\n month: this.monthMoment.month(),\n day: this.monthMoment.date(),\n hour: this.monthMoment.hour(),\n minute: this.monthMoment.minute(),\n second: 0,\n millisecond: 0\n };\n\n this.month = this.momentConfig.month;\n this.year = this.momentConfig.year;\n\n let hour = this.momentConfig.hour;\n let minute = this.momentConfig.minute;\n let hourStr = hour < 10 ? `0${hour}` : hour;\n let minuteStr = minute < 10 ? `0${minute}` : minute;\n\n this.selectedTime = `${hourStr}:${minuteStr}`;\n\n this.offset = this.monthMoment.clone().startOf('month').day();\n\n this.today = moment();\n }\n\n get monthNames() {\n return moment.months().map((month, i) => {\n return {\n text: month,\n value: i\n };\n });\n }\n\n get years() {\n return Array.from(Array(15).keys()).map((_, i) => {\n // Create a list of years +/- 7 from the current year\n let year = this.year - 7 + i;\n\n return {\n text: year,\n value: year\n };\n });\n }\n\n get times() {\n const timesArray = [];\n\n // Create entries every 30 minutes\n for (let i = 0; i < 24; i++) {\n let hour = i < 10 ? `0${i}` : i;\n\n timesArray.push(`${hour}:00`, `${hour}:30`);\n }\n\n return timesArray;\n }\n\n get days() {\n // Used for showing days outside of the current month\n // const prevMonth = moment([this.year, this.month - 1]);\n const prevMonth = this.monthMoment.clone().subtract(1, 'month');\n const nextMonth = this.monthMoment.clone().add(1, 'month');\n const offset = this.offset;\n let daysInMonth = this.monthMoment.daysInMonth();\n let daysInPrevMonth = prevMonth.daysInMonth();\n\n const daysArray = [];\n\n for (let i = 0; i < daysInMonth; i++) {\n daysArray[i] = {\n day: i + 1\n };\n }\n\n // Fill the previous and next month days\n for (let i = 0, d = daysInPrevMonth; i < offset; i++, d--) {\n daysArray.unshift({\n day: d,\n month: prevMonth.month(),\n year: prevMonth.year(),\n isOutside: true\n });\n }\n\n // All months fit within 6 weeks (42 days)\n for (let d = 1, i = daysInMonth + offset; i < 42; d++, i++) {\n daysArray.push({\n day: d,\n month: nextMonth.month(),\n year: nextMonth.year(),\n isOutside: true\n });\n }\n\n // All months fit within 6 weeks (42 days)\n // but depending on the starting day, one week may not be needed\n const daysMatrix = [];\n const weeks = daysInMonth + offset > 35 ? 6 : 5;\n\n for (let i = 0; i < weeks; i++) {\n daysMatrix[i] = daysArray.slice(i * 7, i * 7 + 7);\n }\n\n return daysMatrix;\n }\n\n updateDate() {\n this.year = this.monthMoment.year();\n this.month = this.monthMoment.month();\n this.offset = this.monthMoment.clone().startOf('month').day();\n }\n\n @action\n selectTime(time: string, e: Event) {\n this.selectedTime = time;\n\n const [hour, minute] = time.split(':');\n\n this.momentConfig.hour = parseInt(hour!);\n this.momentConfig.minute = parseInt(minute!);\n this.momentConfig.second = 0;\n this.momentConfig.millisecond = 0;\n this.selectedDate = moment(this.momentConfig);\n this.args.onChange(this.selectedDate, e);\n }\n\n @action\n selectDate(day: Day, e: Event) {\n // Only outside days will have year/month\n this.momentConfig.year = day.year || this.year;\n this.momentConfig.month = day.month || this.month;\n this.momentConfig.day = day.day;\n this.selectedDate = moment(this.momentConfig);\n this.args.onChange(this.selectedDate, e);\n\n // Update the state to show the selected month properly\n if (day.isOutside && day.month && day.year) {\n this.monthMoment.month(day.month);\n this.monthMoment.year(day.year);\n this.updateDate();\n }\n }\n\n @action\n setYear(year: string) {\n this.year = parseInt(year);\n }\n\n @action\n setMonth(month: string) {\n this.monthMoment.month(parseInt(month));\n this.updateDate();\n }\n\n @action\n increaseMonth() {\n this.monthMoment.add(1, 'month');\n this.updateDate();\n }\n\n @action\n decreaseMonth() {\n this.monthMoment.subtract(1, 'month');\n this.updateDate();\n }\n\n <template>\n <div class=\"euiDatePicker euiDatePicker--inline\">\n <EuiFormControlLayout>\n <div class=\"react-datepicker\">\n <button\n type=\"button\"\n class=\"react-datepicker__navigation react-datepicker__navigation--previous\"\n aria-label=\"Previous month\"\n {{on \"click\" this.decreaseMonth}}\n >\n <EuiIcon @iconClasses=\"euiButtonIcon__icon\" @type=\"arrowLeft\" />\n </button>\n <button\n type=\"button\"\n class=\"react-datepicker__navigation react-datepicker__navigation--next\"\n aria-label=\"Next month\"\n {{on \"click\" this.increaseMonth}}\n >\n <EuiIcon\n @iconClasses=\"euiButtonIcon__icon {{@iconClasses}}\"\n @type=\"arrowRight\"\n />\n </button>\n <div class=\"react-datepicker__month-container\">\n <div class=\"react-datepicker__header\">\n <div\n class=\"react-datepicker__header__dropdown react-datepicker__header__dropdown--scroll\"\n >\n <div\n class=\"react-datepicker__month-dropdown-container react-datepicker__month-dropdown-container--scroll\"\n >\n {{!template-lint-disable}}\n <div\n class=\"react-datepicker__month-read-view\"\n style=\"padding: 0;\"\n >\n <EuiFlexItem @grow={{1}}>\n <EuiSelect\n @compressed={{true}}\n @value={{this.month}}\n @options={{this.monthNames}}\n {{on \"change\" (pick \"target.value\" this.setMonth)}}\n />\n </EuiFlexItem>\n </div>\n </div>\n <div\n class=\"react-datepicker__year-dropdown-container react-datepicker__year-dropdown-container--scroll\"\n >\n {{!template-lint-disable}}\n <div\n class=\"react-datepicker__year-read-view\"\n style=\"padding: 0;\"\n >\n <EuiFlexItem @grow={{1}}>\n <EuiSelect\n @compressed={{true}}\n @value={{this.year}}\n @options={{this.years}}\n {{on \"change\" (pick \"target.value\" this.setYear)}}\n />\n </EuiFlexItem>\n </div>\n </div>\n </div>\n <div class=\"react-datepicker__day-names\">\n <div class=\"react-datepicker__day-name\">Su</div>\n <div class=\"react-datepicker__day-name\">Mo</div>\n <div class=\"react-datepicker__day-name\">Tu</div>\n <div class=\"react-datepicker__day-name\">We</div>\n <div class=\"react-datepicker__day-name\">Th</div>\n <div class=\"react-datepicker__day-name\">Fr</div>\n <div class=\"react-datepicker__day-name\">Sa</div>\n </div>\n </div>\n\n <div\n class=\"react-datepicker__month react-datepicker__month--accessible\"\n >\n {{#each this.days as |days|}}\n <div class=\"react-datepicker__week\">\n {{#each days as |day|}}\n <div\n role=\"button\"\n class={{concat\n \"react-datepicker__day\"\n (if\n (and\n (not day.isOutside)\n (isSameDayHelper\n this.year this.month day.day this.selectedDate\n )\n )\n \" react-datepicker__day--selected\"\n )\n (if\n (isSameDayHelper\n this.year this.month day.day this.today\n )\n \" react-datepicker__day--today\"\n )\n (if\n day.isOutside \" react-datepicker__day--outside-month\"\n )\n }}\n {{on \"click\" (fn this.selectDate day)}}\n >\n <div class=\"react-datepicker__day-text\">{{day.day}}</div>\n </div>\n {{/each}}\n </div>\n {{/each}}\n </div>\n </div>\n\n <div class=\"react-datepicker__time-container\">\n <div class=\"react-datepicker__time\">\n <div\n class=\"react-datepicker__time-box react-datepicker__time-box--accessible\"\n >\n <ul class=\"react-datepicker__time-list\">\n {{#each this.times as |time|}}\n <li\n role=\"option\"\n class={{concat\n \"react-datepicker__time-list-item\"\n (if\n (eq time this.selectedTime)\n \" react-datepicker__time-list-item--selected\"\n )\n }}\n {{on \"click\" (fn this.selectTime time)}}\n >\n {{time}}\n </li>\n {{/each}}\n </ul>\n </div>\n </div>\n </div>\n </div>\n </EuiFormControlLayout>\n </div>\n </template>\n}\n"],"names":["isSameDayHelper","helper","year","month","day","selectedDate","date","DatetimePicker","Component","g","prototype","tracked","i","void 0","momentConfig","constructor","owner","args","selected","monthMoment","moment","hour","minute","second","millisecond","hourStr","minuteStr","selectedTime","offset","clone","startOf","today","monthNames","months","map","text","value","years","Array","from","keys","_","times","timesArray","push","days","prevMonth","subtract","nextMonth","add","daysInMonth","daysInPrevMonth","daysArray","d","unshift","isOutside","daysMatrix","weeks","slice","updateDate","selectTime","time","e","split","parseInt","onChange","n","action","selectDate","setYear","setMonth","increaseMonth","decreaseMonth","setComponentTemplate","precompileTemplate","strictMode","scope","EuiFormControlLayout","on","EuiIcon","EuiFlexItem","EuiSelect","pick","concat","and","not","fn","eq"],"mappings":"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"}
diff --git a/dist/components/eui-super-date-picker/date-popover/relative-tab.js b/dist/components/eui-super-date-picker/date-popover/relative-tab.js
index b729dd805644c8e29274a94ed88652a8e9c1e124..d268a1397fab309f68a2265c5068490314ad8698 100644
--- a/dist/components/eui-super-date-picker/date-popover/relative-tab.js
+++ b/dist/components/eui-super-date-picker/date-popover/relative-tab.js
@@ -3,7 +3,7 @@ import { tracked } from '@glimmer/tracking';
import { on } from '@ember/modifier';
import { action } from '@ember/object';
import dateMath from '@elastic/datemath';
-import pick from 'ember-composable-helpers/helpers/pick';
+import pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick';
import EuiFieldNumber from '../../eui-field-number.js';
import EuiFieldText from '../../eui-field-text.js';
import EuiFlexGroup from '../../eui-flex-group.js';
diff --git a/dist/components/eui-super-date-picker/date-popover/relative-tab.js.map b/dist/components/eui-super-date-picker/date-popover/relative-tab.js.map
index 30e2d569d5d2cb98f13da1603e26a306067ba350..d2b2017426075eeae72e5970bb6d28bf70a7cf63 100644
--- a/dist/components/eui-super-date-picker/date-popover/relative-tab.js.map
+++ b/dist/components/eui-super-date-picker/date-popover/relative-tab.js.map
@@ -1 +1 @@
-{"version":3,"file":"relative-tab.js","sources":["../../../../src/components/eui-super-date-picker/date-popover/relative-tab.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport type Owner from '@ember/owner';\n\nimport dateMath from '@elastic/datemath';\nimport pick from 'ember-composable-helpers/helpers/pick';\n\nimport EuiFieldNumber from '../../eui-field-number.gts';\nimport EuiFieldText from '../../eui-field-text.gts';\nimport EuiFlexGroup from '../../eui-flex-group.gts';\nimport EuiFlexItem from '../../eui-flex-item.gts';\nimport EuiForm from '../../eui-form.gts';\nimport EuiFormLabel from '../../eui-form-label.gts';\nimport EuiFormRow from '../../eui-form-row.gts';\nimport EuiPopoverFooter from '../../eui-popover-footer.gts';\nimport EuiSelect from '../../eui-select.gts';\nimport EuiSpacer from '../../eui-spacer.gts';\nimport EuiSwitch from '../../eui-switch.gts';\nimport { INVALID_DATE, toRelativeStringFromParts } from '../utils/index.ts';\nimport { parseRelativeParts } from '../utils/index.ts';\n\nimport type { TimeOptions } from '../utils/time-options.ts';\nimport type { LocaleSpecifier } from 'moment';\n\ninterface RelativeTabArgs {\n dateFormat: string;\n locale?: LocaleSpecifier;\n value: string;\n onChange: (value: string, event?: Event) => void;\n roundUp?: boolean;\n position: 'start' | 'end';\n labelPrefix: string;\n timeOptions: TimeOptions;\n}\n\nexport interface RelativeTabSignature {\n Args: RelativeTabArgs;\n}\n\nexport default class RelativeTab extends Component<RelativeTabSignature> {\n @tracked count?: number;\n @tracked unit: any = 'm';\n @tracked round = false;\n\n roundUnit;\n\n constructor(owner: Owner, args: RelativeTabArgs) {\n super(owner, args);\n\n const parsed = parseRelativeParts(this.args.value);\n\n if (parsed) {\n this.count = parsed.count;\n this.unit = parsed.unit as any;\n this.round = parsed.round;\n this.roundUnit = parsed.roundUnit;\n }\n }\n\n get formattedValue() {\n const invalidDate = this.args.value === INVALID_DATE;\n const invalidValue = this.count === undefined || this.count < 0;\n const isInvalid = invalidValue || invalidDate;\n const parsedValue = dateMath.parse(this.args.value, {\n roundUp: this.args.roundUp\n });\n const invalid = isInvalid || !parsedValue || !parsedValue.isValid();\n\n return invalid\n ? ''\n : parsedValue\n .locale(this.args.locale || 'en')\n .format(this.args.dateFormat);\n }\n\n get roundingLabel() {\n //@ts-expect-error\n return this.args.timeOptions.relativeRoundingLabels[this.unit[0]];\n }\n\n @action\n onCountChange(e: Event) {\n const sanitizedValue = parseInt((e.target as HTMLInputElement).value, 10);\n\n this.count = isNaN(sanitizedValue) ? undefined : sanitizedValue;\n this.handleChange();\n }\n\n @action\n onUnitChange(unit: string) {\n this.unit = unit as any;\n this.handleChange();\n }\n\n @action\n onRoundChange(checked: boolean) {\n this.round = checked;\n this.handleChange();\n }\n\n handleChange(e?: Event) {\n if (this.count === undefined || this.count < 0) {\n return;\n }\n\n const date = toRelativeStringFromParts({\n count: this.count,\n round: this.round,\n roundUnit: this.roundUnit as any,\n unit: this.unit\n });\n\n this.args.onChange(date, e);\n }\n\n <template>\n <EuiForm class=\"euiDatePopoverContent__padded\">\n <EuiFlexGroup @gutterSize=\"s\" @responsive={{false}}>\n <EuiFlexItem>\n <EuiFormRow>\n <EuiFieldNumber\n @compressed={{true}}\n @value={{this.count}}\n @min=\"0\"\n {{on \"input\" this.onCountChange}}\n />\n </EuiFormRow>\n </EuiFlexItem>\n <EuiFlexItem>\n <EuiSelect\n @compressed={{true}}\n @value={{this.unit}}\n @options={{@timeOptions.relativeOptions}}\n {{on \"change\" (pick \"target.value\" this.onUnitChange)}}\n />\n </EuiFlexItem>\n </EuiFlexGroup>\n <EuiSpacer @size=\"s\" />\n <EuiFieldText\n @compressed={{true}}\n @value={{this.formattedValue}}\n @readOnly={{true}}\n >\n <:prepend>\n <EuiFormLabel>{{@labelPrefix}}</EuiFormLabel>\n </:prepend>\n </EuiFieldText>\n </EuiForm>\n <EuiPopoverFooter @paddingSize=\"s\">\n <EuiSwitch\n @label={{this.roundingLabel}}\n @checked={{this.round}}\n @onChange={{pick \"target.checked\" this.onRoundChange}}\n />\n </EuiPopoverFooter>\n </template>\n}\n"],"names":["RelativeTab","Component","g","prototype","tracked","i","void 0","roundUnit","constructor","owner","args","parsed","parseRelativeParts","value","count","unit","round","formattedValue","invalidDate","INVALID_DATE","invalidValue","undefined","isInvalid","parsedValue","dateMath","parse","roundUp","invalid","isValid","locale","format","dateFormat","roundingLabel","timeOptions","relativeRoundingLabels","onCountChange","e","sanitizedValue","parseInt","target","isNaN","handleChange","n","action","onUnitChange","onRoundChange","checked","date","toRelativeStringFromParts","onChange","setComponentTemplate","precompileTemplate","strictMode","scope","EuiForm","EuiFlexGroup","EuiFlexItem","EuiFormRow","EuiFieldNumber","on","EuiSelect","pick","EuiSpacer","EuiFieldText","EuiFormLabel","EuiPopoverFooter","EuiSwitch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAyCe,MAAMA,oBAAoBC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,OAAA,EAAA,CAChDC,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,MAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,MAAA,EAAA,CACAC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAoB,GAAI;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,KAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,OAAA,EAAA,CACxBC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAgB,KAAM;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,MAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAAC,SAAA;EAEvBC,SAAU;AAEVC,EAAAA,WAAAA,CAAYC,KAAY,EAAEC,IAAqB,EAAE;AAC/C,IAAA,KAAK,CAACD,KAAO,EAAAC,IAAA,CAAA;IAEb,MAAMC,SAASC,kBAAmB,CAAA,IAAI,CAACF,IAAI,CAACG,KAAK,CAAA;AAEjD,IAAA,IAAIF,MAAQ,EAAA;AACV,MAAA,IAAI,CAACG,KAAK,GAAGH,MAAA,CAAOG,KAAK;AACzB,MAAA,IAAI,CAACC,IAAI,GAAGJ,MAAO,CAAAI,IAAW;AAC9B,MAAA,IAAI,CAACC,KAAK,GAAGL,MAAA,CAAOK,KAAK;AACzB,MAAA,IAAI,CAACT,SAAS,GAAGI,MAAA,CAAOJ,SAAS;AACnC;AACF;EAEA,IAAIU,cAAiBA,GAAA;IACnB,MAAMC,cAAc,IAAI,CAACR,IAAI,CAACG,KAAK,KAAKM,YAAA;AACxC,IAAA,MAAMC,YAAA,GAAe,IAAI,CAACN,KAAK,KAAKO,SAAa,IAAA,IAAI,CAACP,KAAK,GAAG,CAAA;AAC9D,IAAA,MAAMQ,YAAYF,YAAgB,IAAAF,WAAA;IAClC,MAAMK,WAAA,GAAcC,SAASC,KAAK,CAAC,IAAI,CAACf,IAAI,CAACG,KAAK,EAAE;AAClDa,MAAAA,OAAA,EAAS,IAAI,CAAChB,IAAI,CAACgB;AACrB,KAAA,CAAA;AACA,IAAA,MAAMC,UAAUL,SAAa,IAAA,CAACC,WAAe,IAAA,CAACA,YAAYK,OAAO,EAAA;IAEjE,OAAOD,UACH,EACA,GAAAJ,WAAA,CACGM,MAAM,CAAC,IAAI,CAACnB,IAAI,CAACmB,MAAM,IAAI,MAC3BC,MAAM,CAAC,IAAI,CAACpB,IAAI,CAACqB,UAAU,CAAA;AACpC;EAEA,IAAIC,aAAgBA,GAAA;AAClB;AACA,IAAA,OAAO,IAAI,CAACtB,IAAI,CAACuB,WAAW,CAACC,sBAAsB,CAAC,IAAI,CAACnB,IAAI,CAAC,EAAE,CAAC;AACnE;EAGAoB,aAAcA,CAAAC,CAAQ,EAAE;IACtB,MAAMC,cAAA,GAAiBC,SAAUF,CAAA,CAAEG,MAAM,CAAsB1B,KAAK,EAAE,EAAA,CAAA;IAEtE,IAAI,CAACC,KAAK,GAAG0B,KAAA,CAAMH,kBAAkBhB,SAAY,GAAAgB,cAAA;IACjD,IAAI,CAACI,YAAY,EAAA;AACnB;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAvC,SAAA,EAAA,eAAA,EAAA,CANCwC,MAAA,CAAA,CAAA;AAAA;EASDC,YAAaA,CAAA7B,IAAY,EAAE;IACzB,IAAI,CAACA,IAAI,GAAGA,IAAW;IACvB,IAAI,CAAC0B,YAAY,EAAA;AACnB;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAvC,SAAA,EAAA,cAAA,EAAA,CAJCwC,MAAA,CAAA,CAAA;AAAA;EAODE,aAAcA,CAAAC,OAAgB,EAAE;IAC9B,IAAI,CAAC9B,KAAK,GAAG8B,OAAA;IACb,IAAI,CAACL,YAAY,EAAA;AACnB;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAvC,SAAA,EAAA,eAAA,EAAA,CAJCwC,MAAA,CAAA,CAAA;AAAA;EAMDF,YAAaA,CAAAL,CAAS,EAAE;IACtB,IAAI,IAAI,CAACtB,KAAK,KAAKO,aAAa,IAAI,CAACP,KAAK,GAAG,CAAG,EAAA;AAC9C,MAAA;AACF;IAEA,MAAMiC,OAAOC,yBAA0B,CAAA;MACrClC,KAAO,EAAA,IAAI,CAACA,KAAK;MACjBE,KAAO,EAAA,IAAI,CAACA,KAAK;MACjBT,SAAA,EAAW,IAAI,CAACA,SAAgB;MAChCQ,IAAM,EAAA,IAAI,CAACA;AACb,KAAA,CAAA;IAEA,IAAI,CAACL,IAAI,CAACuC,QAAQ,CAACF,IAAM,EAAAX,CAAA,CAAA;AAC3B;AAEA,EAAA;IAAAc,oBAAA,CAAAC,kBAAA,CAwCA,mhCAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,OAAA;QAAAC,YAAA;QAAAC,WAAA;QAAAC,UAAA;QAAAC,cAAA;QAAAC,EAAA;QAAAC,SAAA;QAAAC,IAAA;QAAAC,SAAA;QAAAC,YAAA;QAAAC,YAAA;QAAAC,gBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
\ No newline at end of file
+{"version":3,"file":"relative-tab.js","sources":["../../../../src/components/eui-super-date-picker/date-popover/relative-tab.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport type Owner from '@ember/owner';\n\nimport dateMath from '@elastic/datemath';\nimport pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick';\n\nimport EuiFieldNumber from '../../eui-field-number.gts';\nimport EuiFieldText from '../../eui-field-text.gts';\nimport EuiFlexGroup from '../../eui-flex-group.gts';\nimport EuiFlexItem from '../../eui-flex-item.gts';\nimport EuiForm from '../../eui-form.gts';\nimport EuiFormLabel from '../../eui-form-label.gts';\nimport EuiFormRow from '../../eui-form-row.gts';\nimport EuiPopoverFooter from '../../eui-popover-footer.gts';\nimport EuiSelect from '../../eui-select.gts';\nimport EuiSpacer from '../../eui-spacer.gts';\nimport EuiSwitch from '../../eui-switch.gts';\nimport { INVALID_DATE, toRelativeStringFromParts } from '../utils/index.ts';\nimport { parseRelativeParts } from '../utils/index.ts';\n\nimport type { TimeOptions } from '../utils/time-options.ts';\nimport type { LocaleSpecifier } from 'moment';\n\ninterface RelativeTabArgs {\n dateFormat: string;\n locale?: LocaleSpecifier;\n value: string;\n onChange: (value: string, event?: Event) => void;\n roundUp?: boolean;\n position: 'start' | 'end';\n labelPrefix: string;\n timeOptions: TimeOptions;\n}\n\nexport interface RelativeTabSignature {\n Args: RelativeTabArgs;\n}\n\nexport default class RelativeTab extends Component<RelativeTabSignature> {\n @tracked count?: number;\n @tracked unit: any = 'm';\n @tracked round = false;\n\n roundUnit;\n\n constructor(owner: Owner, args: RelativeTabArgs) {\n super(owner, args);\n\n const parsed = parseRelativeParts(this.args.value);\n\n if (parsed) {\n this.count = parsed.count;\n this.unit = parsed.unit as any;\n this.round = parsed.round;\n this.roundUnit = parsed.roundUnit;\n }\n }\n\n get formattedValue() {\n const invalidDate = this.args.value === INVALID_DATE;\n const invalidValue = this.count === undefined || this.count < 0;\n const isInvalid = invalidValue || invalidDate;\n const parsedValue = dateMath.parse(this.args.value, {\n roundUp: this.args.roundUp\n });\n const invalid = isInvalid || !parsedValue || !parsedValue.isValid();\n\n return invalid\n ? ''\n : parsedValue\n .locale(this.args.locale || 'en')\n .format(this.args.dateFormat);\n }\n\n get roundingLabel() {\n //@ts-expect-error\n return this.args.timeOptions.relativeRoundingLabels[this.unit[0]];\n }\n\n @action\n onCountChange(e: Event) {\n const sanitizedValue = parseInt((e.target as HTMLInputElement).value, 10);\n\n this.count = isNaN(sanitizedValue) ? undefined : sanitizedValue;\n this.handleChange();\n }\n\n @action\n onUnitChange(unit: string) {\n this.unit = unit as any;\n this.handleChange();\n }\n\n @action\n onRoundChange(checked: boolean) {\n this.round = checked;\n this.handleChange();\n }\n\n handleChange(e?: Event) {\n if (this.count === undefined || this.count < 0) {\n return;\n }\n\n const date = toRelativeStringFromParts({\n count: this.count,\n round: this.round,\n roundUnit: this.roundUnit as any,\n unit: this.unit\n });\n\n this.args.onChange(date, e);\n }\n\n <template>\n <EuiForm class=\"euiDatePopoverContent__padded\">\n <EuiFlexGroup @gutterSize=\"s\" @responsive={{false}}>\n <EuiFlexItem>\n <EuiFormRow>\n <EuiFieldNumber\n @compressed={{true}}\n @value={{this.count}}\n @min=\"0\"\n {{on \"input\" this.onCountChange}}\n />\n </EuiFormRow>\n </EuiFlexItem>\n <EuiFlexItem>\n <EuiSelect\n @compressed={{true}}\n @value={{this.unit}}\n @options={{@timeOptions.relativeOptions}}\n {{on \"change\" (pick \"target.value\" this.onUnitChange)}}\n />\n </EuiFlexItem>\n </EuiFlexGroup>\n <EuiSpacer @size=\"s\" />\n <EuiFieldText\n @compressed={{true}}\n @value={{this.formattedValue}}\n @readOnly={{true}}\n >\n <:prepend>\n <EuiFormLabel>{{@labelPrefix}}</EuiFormLabel>\n </:prepend>\n </EuiFieldText>\n </EuiForm>\n <EuiPopoverFooter @paddingSize=\"s\">\n <EuiSwitch\n @label={{this.roundingLabel}}\n @checked={{this.round}}\n @onChange={{pick \"target.checked\" this.onRoundChange}}\n />\n </EuiPopoverFooter>\n </template>\n}\n"],"names":["RelativeTab","Component","g","prototype","tracked","i","void 0","roundUnit","constructor","owner","args","parsed","parseRelativeParts","value","count","unit","round","formattedValue","invalidDate","INVALID_DATE","invalidValue","undefined","isInvalid","parsedValue","dateMath","parse","roundUp","invalid","isValid","locale","format","dateFormat","roundingLabel","timeOptions","relativeRoundingLabels","onCountChange","e","sanitizedValue","parseInt","target","isNaN","handleChange","n","action","onUnitChange","onRoundChange","checked","date","toRelativeStringFromParts","onChange","setComponentTemplate","precompileTemplate","strictMode","scope","EuiForm","EuiFlexGroup","EuiFlexItem","EuiFormRow","EuiFieldNumber","on","EuiSelect","pick","EuiSpacer","EuiFieldText","EuiFormLabel","EuiPopoverFooter","EuiSwitch"],"mappings":"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"}
diff --git a/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js b/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js
index 6aae5fe395d106c377a7d2d1f99743c7fe935d32..14b0afb608d5ac3b390244707b026107d84e7cab 100644
--- a/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js
+++ b/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js
@@ -3,7 +3,7 @@ import { tracked } from '@glimmer/tracking';
import { on } from '@ember/modifier';
import { action } from '@ember/object';
import dateMath from '@elastic/datemath';
-import pick from 'ember-composable-helpers/helpers/pick';
+import pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick';
import set from 'ember-set-helper/helpers/set';
import { lte } from 'ember-truth-helpers';
import moment from 'moment';
diff --git a/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js.map b/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js.map
index 05516b7ac5b25a19b603e0e2f83150404510183b..c6c06e13d23962e0aecf8ee2d13b41bade3114f9 100644
--- a/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js.map
+++ b/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-quick-select.js","sources":["../../../../src/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport type Owner from '@ember/owner';\n\nimport dateMath from '@elastic/datemath';\nimport pick from 'ember-composable-helpers/helpers/pick';\nimport set from 'ember-set-helper/helpers/set';\nimport { lte } from 'ember-truth-helpers';\nimport moment from 'moment';\n\nimport randomId from '../../../-private/random-id.ts';\nimport EuiButton from '../../eui-button.gts';\nimport EuiButtonIcon from '../../eui-button-icon.gts';\nimport EuiFieldNumber from '../../eui-field-number.gts';\nimport EuiFlexGroup from '../../eui-flex-group.gts';\nimport EuiFlexItem from '../../eui-flex-item.gts';\nimport EuiI18n from '../../eui-i18n.gts';\nimport EuiSelect from '../../eui-select.gts';\nimport EuiSpacer from '../../eui-spacer.gts';\nimport EuiToolTip from '../../eui-tool-tip.gts';\nimport { parseTimeParts } from '../utils/quick-select.ts';\nimport { NEXT } from '../utils/time-options.ts';\n\nimport type { ApplyTime, TimeUnitId } from '../types/global';\nimport type { TimeOptions } from '../utils/time-options.ts';\n\ninterface EuiQuickSelectState {\n timeTense: string;\n timeValue: number;\n timeUnits: TimeUnitId;\n}\n\ninterface EuiQuickSelectArgs {\n applyTime: ApplyTime;\n start: string;\n end: string;\n prevQuickSelect?: EuiQuickSelectState;\n timeOptions: TimeOptions;\n}\n\nexport interface EuiQuickSelectSignature {\n Args: EuiQuickSelectArgs;\n Blocks: { default: [] };\n}\n\nexport default class EuiQuickSelect extends Component<EuiQuickSelectSignature> {\n @tracked timeTense: string;\n @tracked timeValue: number;\n @tracked timeUnits: TimeUnitId;\n\n constructor(owner: Owner, args: EuiQuickSelectArgs) {\n super(owner, args);\n\n const {\n timeTense: timeTenseDefault,\n timeUnits: timeUnitsDefault,\n timeValue: timeValueDefault\n } = parseTimeParts(this.args.start, this.args.end);\n\n this.timeTense =\n this.args.prevQuickSelect && this.args.prevQuickSelect.timeTense\n ? this.args.prevQuickSelect.timeTense\n : timeTenseDefault;\n this.timeValue =\n this.args.prevQuickSelect && this.args.prevQuickSelect.timeValue\n ? this.args.prevQuickSelect.timeValue\n : timeValueDefault;\n this.timeUnits =\n this.args.prevQuickSelect && this.args.prevQuickSelect.timeUnits\n ? this.args.prevQuickSelect.timeUnits\n : timeUnitsDefault;\n }\n\n getBounds() {\n const startMoment = dateMath.parse(this.args.start);\n const endMoment = dateMath.parse(this.args.end, { roundUp: true });\n\n return {\n min:\n startMoment && startMoment.isValid()\n ? startMoment\n : moment().subtract(15, 'minute'),\n max: endMoment && endMoment.isValid() ? endMoment : moment()\n };\n }\n\n @action\n applyQuickSelect() {\n if (this.timeTense === NEXT) {\n this.args.applyTime({\n start: 'now',\n end: `now+${this.timeValue}${this.timeUnits}`\n // quickSelect: { ...this.state },\n });\n } else {\n this.args.applyTime({\n start: `now-${this.timeValue}${this.timeUnits}`,\n end: 'now'\n // quickSelect: { ...this.state },\n });\n }\n }\n\n @action\n stepForward() {\n const { min, max } = this.getBounds();\n const diff = max.diff(min);\n\n this.args.applyTime({\n start: moment(max).add(1, 'ms').toISOString(),\n end: moment(max)\n .add(diff + 1, 'ms')\n .toISOString(),\n keepPopoverOpen: true\n });\n }\n\n @action\n stepBackward() {\n const { min, max } = this.getBounds();\n const diff = max.diff(min);\n\n this.args.applyTime({\n start: moment(min)\n .subtract(diff + 1, 'ms')\n .toISOString(),\n end: moment(min).subtract(1, 'ms').toISOString(),\n keepPopoverOpen: true\n });\n }\n\n <template>\n {{#let (randomId) as |legendId|}}\n <fieldset>\n <EuiFlexGroup\n @responsive={{false}}\n @alignItems=\"center\"\n @justifyContent=\"spaceBetween\"\n @gutterSize=\"s\"\n >\n <EuiFlexItem @grow={{false}}>\n <EuiI18n\n @token=\"euiQuickSelect.quickSelectTitle\"\n @default=\"Quick select\"\n as |Token|\n >\n <Token as |quickSelectTitle|>\n <div aria-hidden class=\"euiFormLabel\">\n {{quickSelectTitle}}\n </div>\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @alignItems=\"center\"\n @gutterSize=\"s\"\n @responsive={{false}}\n >\n <EuiFlexItem @grow={{false}}>\n <EuiI18n\n @token=\"euiQuickSelect.previousLabel\"\n @default=\"Previous time window\"\n as |Token|\n >\n <Token as |previousLabel|>\n <EuiToolTip @content={{previousLabel}}>\n <EuiButtonIcon\n aria-label={{previousLabel}}\n @iconType=\"arrowLeft\"\n {{on \"click\" this.stepBackward}}\n />\n </EuiToolTip>\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem @grow={{false}}>\n <EuiI18n\n @token=\"euiQuickSelect.nextLabel\"\n @default=\"Next time window\"\n as |Token|\n >\n <Token as |nextLabel|>\n <EuiToolTip @content={{nextLabel}}>\n <EuiButtonIcon\n aria-label={{nextLabel}}\n @iconType=\"arrowRight\"\n {{on \"click\" this.stepForward}}\n />\n </EuiToolTip>\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n </EuiFlexGroup>\n </EuiFlexItem>\n </EuiFlexGroup>\n <EuiSpacer @size=\"s\" />\n <EuiFlexGroup @gutterSize=\"s\" @responsive={{false}}>\n <EuiFlexItem>\n <EuiI18n\n @token=\"euiQuickSelect.tenseLabel\"\n @default=\"Time tense\"\n as |Token|\n >\n <Token as |tenseLabel|>\n <EuiSelect\n @compressed={{true}}\n aria-label={{tenseLabel}}\n @value={{this.timeTense}}\n @options={{@timeOptions.timeTenseOptions}}\n {{on \"change\" (pick \"target.value\" (set this \"timeTense\"))}}\n />\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem>\n <EuiI18n\n @token=\"euiQuickSelect.valueLabel\"\n @default=\"Time value\"\n as |Token|\n >\n <Token as |valueLabel|>\n <EuiFieldNumber\n @compressed={{true}}\n aria-label={{valueLabel}}\n @value={{this.timeValue}}\n {{on \"input\" (pick \"target.value\" (set this \"timeValue\"))}}\n />\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem>\n <EuiI18n\n @token=\"euiQuickSelect.unitLabel\"\n @default=\"Time unit\"\n as |Token|\n >\n <Token as |unitLabel|>\n <EuiSelect\n @compressed={{true}}\n aria-label={{unitLabel}}\n @value={{this.timeUnits}}\n @options={{@timeOptions.timeUnitsOptions}}\n {{on \"change\" (pick \"target.value\" (set this \"timeUnits\"))}}\n />\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem @grow={{false}}>\n <EuiButton\n class=\"euiQuickSelect__applyButton\"\n @size=\"s\"\n @disabled={{lte this.timeValue 0}}\n {{on \"click\" this.applyQuickSelect}}\n >\n <EuiI18n\n @token=\"euiQuickSelect.applyButton\"\n @default=\"Apply\"\n as |Token|\n >\n <Token as |value|>\n {{value}}\n </Token>\n </EuiI18n>\n </EuiButton>\n </EuiFlexItem>\n </EuiFlexGroup>\n </fieldset>\n {{/let}}\n </template>\n}\n"],"names":["EuiQuickSelect","Component","g","prototype","tracked","i","void 0","constructor","owner","args","timeTense","timeTenseDefault","timeUnits","timeUnitsDefault","timeValue","timeValueDefault","parseTimeParts","start","end","prevQuickSelect","getBounds","startMoment","dateMath","parse","endMoment","roundUp","min","isValid","moment","subtract","max","applyQuickSelect","NEXT","applyTime","n","action","stepForward","diff","add","toISOString","keepPopoverOpen","stepBackward","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","EuiFlexGroup","EuiFlexItem","EuiI18n","EuiToolTip","EuiButtonIcon","on","EuiSpacer","EuiSelect","pick","set","EuiFieldNumber","EuiButton","lte"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"eui-quick-select.js","sources":["../../../../src/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport type Owner from '@ember/owner';\n\nimport dateMath from '@elastic/datemath';\nimport pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick';\nimport set from 'ember-set-helper/helpers/set';\nimport { lte } from 'ember-truth-helpers';\nimport moment from 'moment';\n\nimport randomId from '../../../-private/random-id.ts';\nimport EuiButton from '../../eui-button.gts';\nimport EuiButtonIcon from '../../eui-button-icon.gts';\nimport EuiFieldNumber from '../../eui-field-number.gts';\nimport EuiFlexGroup from '../../eui-flex-group.gts';\nimport EuiFlexItem from '../../eui-flex-item.gts';\nimport EuiI18n from '../../eui-i18n.gts';\nimport EuiSelect from '../../eui-select.gts';\nimport EuiSpacer from '../../eui-spacer.gts';\nimport EuiToolTip from '../../eui-tool-tip.gts';\nimport { parseTimeParts } from '../utils/quick-select.ts';\nimport { NEXT } from '../utils/time-options.ts';\n\nimport type { ApplyTime, TimeUnitId } from '../types/global';\nimport type { TimeOptions } from '../utils/time-options.ts';\n\ninterface EuiQuickSelectState {\n timeTense: string;\n timeValue: number;\n timeUnits: TimeUnitId;\n}\n\ninterface EuiQuickSelectArgs {\n applyTime: ApplyTime;\n start: string;\n end: string;\n prevQuickSelect?: EuiQuickSelectState;\n timeOptions: TimeOptions;\n}\n\nexport interface EuiQuickSelectSignature {\n Args: EuiQuickSelectArgs;\n Blocks: { default: [] };\n}\n\nexport default class EuiQuickSelect extends Component<EuiQuickSelectSignature> {\n @tracked timeTense: string;\n @tracked timeValue: number;\n @tracked timeUnits: TimeUnitId;\n\n constructor(owner: Owner, args: EuiQuickSelectArgs) {\n super(owner, args);\n\n const {\n timeTense: timeTenseDefault,\n timeUnits: timeUnitsDefault,\n timeValue: timeValueDefault\n } = parseTimeParts(this.args.start, this.args.end);\n\n this.timeTense =\n this.args.prevQuickSelect && this.args.prevQuickSelect.timeTense\n ? this.args.prevQuickSelect.timeTense\n : timeTenseDefault;\n this.timeValue =\n this.args.prevQuickSelect && this.args.prevQuickSelect.timeValue\n ? this.args.prevQuickSelect.timeValue\n : timeValueDefault;\n this.timeUnits =\n this.args.prevQuickSelect && this.args.prevQuickSelect.timeUnits\n ? this.args.prevQuickSelect.timeUnits\n : timeUnitsDefault;\n }\n\n getBounds() {\n const startMoment = dateMath.parse(this.args.start);\n const endMoment = dateMath.parse(this.args.end, { roundUp: true });\n\n return {\n min:\n startMoment && startMoment.isValid()\n ? startMoment\n : moment().subtract(15, 'minute'),\n max: endMoment && endMoment.isValid() ? endMoment : moment()\n };\n }\n\n @action\n applyQuickSelect() {\n if (this.timeTense === NEXT) {\n this.args.applyTime({\n start: 'now',\n end: `now+${this.timeValue}${this.timeUnits}`\n // quickSelect: { ...this.state },\n });\n } else {\n this.args.applyTime({\n start: `now-${this.timeValue}${this.timeUnits}`,\n end: 'now'\n // quickSelect: { ...this.state },\n });\n }\n }\n\n @action\n stepForward() {\n const { min, max } = this.getBounds();\n const diff = max.diff(min);\n\n this.args.applyTime({\n start: moment(max).add(1, 'ms').toISOString(),\n end: moment(max)\n .add(diff + 1, 'ms')\n .toISOString(),\n keepPopoverOpen: true\n });\n }\n\n @action\n stepBackward() {\n const { min, max } = this.getBounds();\n const diff = max.diff(min);\n\n this.args.applyTime({\n start: moment(min)\n .subtract(diff + 1, 'ms')\n .toISOString(),\n end: moment(min).subtract(1, 'ms').toISOString(),\n keepPopoverOpen: true\n });\n }\n\n <template>\n {{#let (randomId) as |legendId|}}\n <fieldset>\n <EuiFlexGroup\n @responsive={{false}}\n @alignItems=\"center\"\n @justifyContent=\"spaceBetween\"\n @gutterSize=\"s\"\n >\n <EuiFlexItem @grow={{false}}>\n <EuiI18n\n @token=\"euiQuickSelect.quickSelectTitle\"\n @default=\"Quick select\"\n as |Token|\n >\n <Token as |quickSelectTitle|>\n <div aria-hidden class=\"euiFormLabel\">\n {{quickSelectTitle}}\n </div>\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @alignItems=\"center\"\n @gutterSize=\"s\"\n @responsive={{false}}\n >\n <EuiFlexItem @grow={{false}}>\n <EuiI18n\n @token=\"euiQuickSelect.previousLabel\"\n @default=\"Previous time window\"\n as |Token|\n >\n <Token as |previousLabel|>\n <EuiToolTip @content={{previousLabel}}>\n <EuiButtonIcon\n aria-label={{previousLabel}}\n @iconType=\"arrowLeft\"\n {{on \"click\" this.stepBackward}}\n />\n </EuiToolTip>\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem @grow={{false}}>\n <EuiI18n\n @token=\"euiQuickSelect.nextLabel\"\n @default=\"Next time window\"\n as |Token|\n >\n <Token as |nextLabel|>\n <EuiToolTip @content={{nextLabel}}>\n <EuiButtonIcon\n aria-label={{nextLabel}}\n @iconType=\"arrowRight\"\n {{on \"click\" this.stepForward}}\n />\n </EuiToolTip>\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n </EuiFlexGroup>\n </EuiFlexItem>\n </EuiFlexGroup>\n <EuiSpacer @size=\"s\" />\n <EuiFlexGroup @gutterSize=\"s\" @responsive={{false}}>\n <EuiFlexItem>\n <EuiI18n\n @token=\"euiQuickSelect.tenseLabel\"\n @default=\"Time tense\"\n as |Token|\n >\n <Token as |tenseLabel|>\n <EuiSelect\n @compressed={{true}}\n aria-label={{tenseLabel}}\n @value={{this.timeTense}}\n @options={{@timeOptions.timeTenseOptions}}\n {{on \"change\" (pick \"target.value\" (set this \"timeTense\"))}}\n />\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem>\n <EuiI18n\n @token=\"euiQuickSelect.valueLabel\"\n @default=\"Time value\"\n as |Token|\n >\n <Token as |valueLabel|>\n <EuiFieldNumber\n @compressed={{true}}\n aria-label={{valueLabel}}\n @value={{this.timeValue}}\n {{on \"input\" (pick \"target.value\" (set this \"timeValue\"))}}\n />\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem>\n <EuiI18n\n @token=\"euiQuickSelect.unitLabel\"\n @default=\"Time unit\"\n as |Token|\n >\n <Token as |unitLabel|>\n <EuiSelect\n @compressed={{true}}\n aria-label={{unitLabel}}\n @value={{this.timeUnits}}\n @options={{@timeOptions.timeUnitsOptions}}\n {{on \"change\" (pick \"target.value\" (set this \"timeUnits\"))}}\n />\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem @grow={{false}}>\n <EuiButton\n class=\"euiQuickSelect__applyButton\"\n @size=\"s\"\n @disabled={{lte this.timeValue 0}}\n {{on \"click\" this.applyQuickSelect}}\n >\n <EuiI18n\n @token=\"euiQuickSelect.applyButton\"\n @default=\"Apply\"\n as |Token|\n >\n <Token as |value|>\n {{value}}\n </Token>\n </EuiI18n>\n </EuiButton>\n </EuiFlexItem>\n </EuiFlexGroup>\n </fieldset>\n {{/let}}\n </template>\n}\n"],"names":["EuiQuickSelect","Component","g","prototype","tracked","i","void 0","constructor","owner","args","timeTense","timeTenseDefault","timeUnits","timeUnitsDefault","timeValue","timeValueDefault","parseTimeParts","start","end","prevQuickSelect","getBounds","startMoment","dateMath","parse","endMoment","roundUp","min","isValid","moment","subtract","max","applyQuickSelect","NEXT","applyTime","n","action","stepForward","diff","add","toISOString","keepPopoverOpen","stepBackward","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","EuiFlexGroup","EuiFlexItem","EuiI18n","EuiToolTip","EuiButtonIcon","on","EuiSpacer","EuiSelect","pick","set","EuiFieldNumber","EuiButton","lte"],"mappings":"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"}
diff --git a/dist/components/eui-tabbed-content.js b/dist/components/eui-tabbed-content.js
index 97238e891bc5e75f3b911394e3be4669a131631c..8326be3b5b6cf85f16be3018809aeb60dd678695 100644
--- a/dist/components/eui-tabbed-content.js
+++ b/dist/components/eui-tabbed-content.js
@@ -4,7 +4,7 @@ import { fn } from '@ember/helper';
import { on } from '@ember/modifier';
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
import { scheduleOnce } from '@ember/runloop';
-import findBy from 'ember-composable-helpers/helpers/find-by';
+import findBy from '@nullvoxpopuli/ember-composable-helpers/helpers/find-by';
import { eq } from 'ember-truth-helpers';
import randomId from '../-private/random-id.js';
import EuiTab from './eui-tab.js';
diff --git a/dist/components/eui-tabbed-content.js.map b/dist/components/eui-tabbed-content.js.map
index 10fd55cfb0b26e30e1a542dd7a656e543a5b2352..73e0362181378f8cf79baaf0aca7545e58ea37a4 100644
--- a/dist/components/eui-tabbed-content.js.map
+++ b/dist/components/eui-tabbed-content.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-tabbed-content.js","sources":["../../src/components/eui-tabbed-content.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { scheduleOnce } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport findBy from 'ember-composable-helpers/helpers/find-by';\nimport { eq } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiTab from './eui-tab.gts';\nimport EuiTabs from './eui-tabs.gts';\n\nimport type { CommonArgs } from './common.ts';\nimport type { EuiTabsSignature } from './eui-tabs';\nimport type { ComponentLike } from '@glint/template';\n\nexport interface EuiTabbedContentTab {\n id: string;\n name: string;\n content?: ComponentLike;\n disabled?: boolean;\n}\n\nexport type EuiTabbedContentArgs = CommonArgs & {\n /**\n * When tabbing into the tabs, set the focus on `initial` for the first tab,\n * or `selected` for the currently selected tab. Best use case is for inside of\n * overlay content like popovers or flyouts.\n */\n autoFocus?: 'initial' | 'selected';\n /**\n * Choose `default` or alternative `condensed` display styles\n */\n display?: EuiTabsSignature['Args']['display'];\n /**\n * Evenly stretches each tab to fill the horizontal space\n */\n expand?: boolean;\n /**\n * Use this prop to set the initially selected tab while letting the tabbed content component\n * control selection state internally\n */\n initialSelectedTab?: EuiTabbedContentTab;\n onTabClick?: (selectedTab: EuiTabbedContentTab) => void;\n /**\n * Use this prop if you want to control selection state within the owner component\n */\n selectedTab?: EuiTabbedContentTab;\n size?: EuiTabsSignature['Args']['size'];\n /**\n * Each tab needs id and content properties, so we can associate it with its panel for accessibility.\n * The name property (a node) is also required to display to the user.\n */\n tabs: EuiTabbedContentTab[];\n};\n\nexport interface EuiTabbedContentSignature {\n Element: HTMLDivElement;\n Args: EuiTabbedContentArgs;\n Blocks: {\n default: [EuiTabbedContentTab];\n selectedTabContent: [EuiTabbedContentTab];\n };\n}\n\nexport default class EuiTabbedContentComponent extends Component<EuiTabbedContentSignature> {\n @tracked selectedTabId;\n @tracked inFocus: boolean = false;\n tabsRef?: Element;\n\n get autoFocus() {\n return this.args.autoFocus || 'initial';\n }\n\n constructor(owner: Owner, args: EuiTabbedContentArgs) {\n super(owner, args);\n\n const { initialSelectedTab, selectedTab, tabs } = this.args;\n\n // Only track selection state if it's not controlled externally.\n if (!selectedTab) {\n this.selectedTabId =\n (initialSelectedTab && initialSelectedTab.id) || tabs[0]?.id;\n }\n }\n\n get selectedTab() {\n const { selectedTab: externalSelectedTab, tabs } = this.args;\n\n return (\n externalSelectedTab ||\n tabs.find((tab: EuiTabbedContentTab) => tab.id === this.selectedTabId)\n );\n }\n\n setTabsRef = (element: Element) => {\n this.tabsRef = element;\n // Current short-term solution for event listener (see https://github.com/elastic/eui/pull/2717)\n //@ts-expect-error\n this.tabsRef.addEventListener('focusout', this.removeFocus);\n };\n\n willDestroy(): void {\n super.willDestroy();\n\n if (this.tabsRef) {\n //@ts-expect-error\n this.tabsRef.removeEventListener('focusout', this.removeFocus);\n }\n }\n\n removeFocus = (blurEvent: FocusEvent) => {\n // only set inFocus to false if the wrapping div doesn't contain the now-focusing element\n const currentTarget = blurEvent.currentTarget! as HTMLElement;\n const relatedTarget = blurEvent.relatedTarget! as HTMLElement;\n\n if (currentTarget.contains(relatedTarget) === false) {\n this.inFocus = true;\n }\n };\n\n onTabClick = (selectedTab: EuiTabbedContentTab) => {\n const { onTabClick, selectedTab: externalSelectedTab } = this.args;\n\n if (onTabClick) {\n onTabClick(selectedTab);\n }\n\n // Only track selection state if it's not controlled externally.\n if (!externalSelectedTab) {\n this.selectedTabId = selectedTab.id;\n\n const focusTab = () => {\n this.focusTab();\n };\n\n scheduleOnce('afterRender', this, focusTab);\n }\n };\n\n focusTab = () => {\n if (this.tabsRef) {\n const targetTab: HTMLDivElement | null = this.tabsRef.querySelector(\n `#${this.selectedTabId}`\n );\n\n targetTab!.focus();\n }\n };\n\n initializeFocus = () => {\n if (!this.inFocus && this.autoFocus === 'selected') {\n // Must wait for setState to finish before calling `.focus()`\n // as the focus call triggers a blur on the first tab\n this.inFocus = true;\n\n const focusTab = () => {\n this.focusTab();\n };\n\n scheduleOnce('afterRender', this, focusTab);\n }\n };\n\n <template>\n {{#let (randomId) as |rootId|}}\n <div class={{@className}} ...attributes>\n <EuiTabs\n @expand={{@expand}}\n @display={{@display}}\n @size={{@size}}\n {{on \"focus\" this.initializeFocus}}\n {{didInsert this.setTabsRef}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n aria-controls={{rootId}}\n @isSelected={{eq tab.id this.selectedTab.id}}\n @disabled={{tab.disabled}}\n {{on \"click\" (fn this.onTabClick tab)}}\n >\n {{tab.name}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{#let (findBy \"id\" this.selectedTab.id @tabs) as |currentTab|}}\n <div role=\"tabpanel\" id={{rootId}} aria-labelledby={{currentTab.id}}>\n {{#if (has-block \"selectedTabContent\")}}\n {{yield currentTab to=\"selectedTabContent\"}}\n {{else}}\n {{currentTab.content}}\n {{/if}}\n </div>\n {{/let}}\n </div>\n {{/let}}\n </template>\n}\n"],"names":["EuiTabbedContentComponent","Component","g","prototype","tracked","i","void 0","tabsRef","autoFocus","args","constructor","owner","initialSelectedTab","selectedTab","tabs","selectedTabId","id","externalSelectedTab","find","tab","setTabsRef","element","addEventListener","removeFocus","willDestroy","removeEventListener","blurEvent","currentTarget","relatedTarget","contains","inFocus","onTabClick","focusTab","scheduleOnce","targetTab","querySelector","focus","initializeFocus","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","EuiTabs","on","didInsert","EuiTab","eq","fn","findBy"],"mappings":";;;;;;;;;;;;;;;AAoEe,MAAMA,kCAAkCC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,eAAA,EAAA,CAC9DC,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,cAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,eAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CACAC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA2B,KAAM;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAAC,SAAA;EAClCC,OAAA;EAEA,IAAIC,SAAYA,GAAA;AACd,IAAA,OAAO,IAAI,CAACC,IAAI,CAACD,SAAS,IAAI,SAAA;AAChC;AAEAE,EAAAA,WAAAA,CAAYC,KAAY,EAAEF,IAA0B,EAAE;AACpD,IAAA,KAAK,CAACE,KAAO,EAAAF,IAAA,CAAA;IAEb,MAAM;MAAEG,kBAAkB;MAAEC,WAAW;AAAEC,MAAAA;KAAM,GAAG,IAAI,CAACL,IAAI;AAE3D;IACA,IAAI,CAACI,WAAa,EAAA;AAChB,MAAA,IAAI,CAACE,aAAa,GACfH,kBAAA,IAAsBA,kBAAmB,CAAAI,EAAE,IAAKF,IAAI,CAAC,CAAA,CAAE,EAAEE,EAAA;AAC9D;AACF;EAEA,IAAIH,WAAcA,GAAA;IAChB,MAAM;AAAEA,MAAAA,aAAaI,mBAAmB;AAAEH,MAAAA;KAAM,GAAG,IAAI,CAACL,IAAI;AAE5D,IAAA,OACEQ,mBAAA,IACAH,IAAK,CAAAI,IAAI,CAAEC,GAA6B,IAAAA,GAAA,CAAIH,EAAE,KAAK,IAAI,CAACD,aAAa,CACvE;AACF;EAEAK,UAAA,GAAcC,OAAS,IAAA;IACrB,IAAI,CAACd,OAAO,GAAGc,OAAA;AACf;AACA;IACA,IAAI,CAACd,OAAO,CAACe,gBAAgB,CAAC,UAAY,EAAA,IAAI,CAACC,WAAW,CAAA;GAC1D;AAEFC,EAAAA,WAAAA,GAAoB;IAClB,KAAK,CAACA,WAAA,EAAA;IAEN,IAAI,IAAI,CAACjB,OAAO,EAAE;AAChB;MACA,IAAI,CAACA,OAAO,CAACkB,mBAAmB,CAAC,UAAY,EAAA,IAAI,CAACF,WAAW,CAAA;AAC/D;AACF;EAEAA,WAAA,GAAeG,SAAW,IAAA;AACxB;AACA,IAAA,MAAMC,aAAA,GAAgBD,SAAU,CAAAC,aAAkB;AAClD,IAAA,MAAMC,aAAA,GAAgBF,SAAU,CAAAE,aAAkB;IAElD,IAAID,aAAc,CAAAE,QAAQ,CAACD,aAAA,CAAA,KAAmB,KAAO,EAAA;MACnD,IAAI,CAACE,OAAO,GAAG,IAAA;AACjB;GACA;EAEFC,UAAA,GAAclB,WAAa,IAAA;IACzB,MAAM;MAAEkB,UAAU;AAAElB,MAAAA,WAAA,EAAaI;KAAqB,GAAG,IAAI,CAACR,IAAI;AAElE,IAAA,IAAIsB,UAAY,EAAA;MACdA,UAAW,CAAAlB,WAAA,CAAA;AACb;AAEA;IACA,IAAI,CAACI,mBAAqB,EAAA;AACxB,MAAA,IAAI,CAACF,aAAa,GAAGF,WAAA,CAAYG,EAAE;MAEnC,MAAMgB,QAAW,GAAAA,MAAA;QACf,IAAI,CAACA,QAAQ,EAAA;OACf;AAEAC,MAAAA,YAAa,CAAA,aAAA,EAAe,IAAI,EAAED,QAAA,CAAA;AACpC;GACA;EAEFA,QAAW,GAAAA,MAAA;IACT,IAAI,IAAI,CAACzB,OAAO,EAAE;AAChB,MAAA,MAAM2B,SAAgC,GAAG,IAAI,CAAC3B,OAAO,CAAC4B,aAAa,CACjE,CAAI,CAAA,EAAA,IAAI,CAACpB,aAAa,EAAE,CAAA;MAG1BmB,SAAA,CAAWE,KAAK,EAAA;AAClB;GACA;EAEFC,eAAkB,GAAAA,MAAA;IAChB,IAAI,CAAC,IAAI,CAACP,OAAO,IAAI,IAAI,CAACtB,SAAS,KAAK,UAAY,EAAA;AAClD;AACA;MACA,IAAI,CAACsB,OAAO,GAAG,IAAA;MAEf,MAAME,QAAW,GAAAA,MAAA;QACf,IAAI,CAACA,QAAQ,EAAA;OACf;AAEAC,MAAAA,YAAa,CAAA,aAAA,EAAe,IAAI,EAAED,QAAA,CAAA;AACpC;GACA;AAEF,EAAA;IAAAM,oBAAA,CAAAC,kBAAA,CAiCA,m8BAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,QAAA;QAAAC,OAAA;QAAAC,EAAA;QAAAC,SAAA;QAAAC,MAAA;QAAAC,EAAA;QAAAC,EAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-tabbed-content.js","sources":["../../src/components/eui-tabbed-content.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { scheduleOnce } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport findBy from '@nullvoxpopuli/ember-composable-helpers/helpers/find-by';\nimport { eq } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiTab from './eui-tab.gts';\nimport EuiTabs from './eui-tabs.gts';\n\nimport type { CommonArgs } from './common.ts';\nimport type { EuiTabsSignature } from './eui-tabs';\nimport type { ComponentLike } from '@glint/template';\n\nexport interface EuiTabbedContentTab {\n id: string;\n name: string;\n content?: ComponentLike;\n disabled?: boolean;\n}\n\nexport type EuiTabbedContentArgs = CommonArgs & {\n /**\n * When tabbing into the tabs, set the focus on `initial` for the first tab,\n * or `selected` for the currently selected tab. Best use case is for inside of\n * overlay content like popovers or flyouts.\n */\n autoFocus?: 'initial' | 'selected';\n /**\n * Choose `default` or alternative `condensed` display styles\n */\n display?: EuiTabsSignature['Args']['display'];\n /**\n * Evenly stretches each tab to fill the horizontal space\n */\n expand?: boolean;\n /**\n * Use this prop to set the initially selected tab while letting the tabbed content component\n * control selection state internally\n */\n initialSelectedTab?: EuiTabbedContentTab;\n onTabClick?: (selectedTab: EuiTabbedContentTab) => void;\n /**\n * Use this prop if you want to control selection state within the owner component\n */\n selectedTab?: EuiTabbedContentTab;\n size?: EuiTabsSignature['Args']['size'];\n /**\n * Each tab needs id and content properties, so we can associate it with its panel for accessibility.\n * The name property (a node) is also required to display to the user.\n */\n tabs: EuiTabbedContentTab[];\n};\n\nexport interface EuiTabbedContentSignature {\n Element: HTMLDivElement;\n Args: EuiTabbedContentArgs;\n Blocks: {\n default: [EuiTabbedContentTab];\n selectedTabContent: [EuiTabbedContentTab];\n };\n}\n\nexport default class EuiTabbedContentComponent extends Component<EuiTabbedContentSignature> {\n @tracked selectedTabId;\n @tracked inFocus: boolean = false;\n tabsRef?: Element;\n\n get autoFocus() {\n return this.args.autoFocus || 'initial';\n }\n\n constructor(owner: Owner, args: EuiTabbedContentArgs) {\n super(owner, args);\n\n const { initialSelectedTab, selectedTab, tabs } = this.args;\n\n // Only track selection state if it's not controlled externally.\n if (!selectedTab) {\n this.selectedTabId =\n (initialSelectedTab && initialSelectedTab.id) || tabs[0]?.id;\n }\n }\n\n get selectedTab() {\n const { selectedTab: externalSelectedTab, tabs } = this.args;\n\n return (\n externalSelectedTab ||\n tabs.find((tab: EuiTabbedContentTab) => tab.id === this.selectedTabId)\n );\n }\n\n setTabsRef = (element: Element) => {\n this.tabsRef = element;\n // Current short-term solution for event listener (see https://github.com/elastic/eui/pull/2717)\n //@ts-expect-error\n this.tabsRef.addEventListener('focusout', this.removeFocus);\n };\n\n willDestroy(): void {\n super.willDestroy();\n\n if (this.tabsRef) {\n //@ts-expect-error\n this.tabsRef.removeEventListener('focusout', this.removeFocus);\n }\n }\n\n removeFocus = (blurEvent: FocusEvent) => {\n // only set inFocus to false if the wrapping div doesn't contain the now-focusing element\n const currentTarget = blurEvent.currentTarget! as HTMLElement;\n const relatedTarget = blurEvent.relatedTarget! as HTMLElement;\n\n if (currentTarget.contains(relatedTarget) === false) {\n this.inFocus = true;\n }\n };\n\n onTabClick = (selectedTab: EuiTabbedContentTab) => {\n const { onTabClick, selectedTab: externalSelectedTab } = this.args;\n\n if (onTabClick) {\n onTabClick(selectedTab);\n }\n\n // Only track selection state if it's not controlled externally.\n if (!externalSelectedTab) {\n this.selectedTabId = selectedTab.id;\n\n const focusTab = () => {\n this.focusTab();\n };\n\n scheduleOnce('afterRender', this, focusTab);\n }\n };\n\n focusTab = () => {\n if (this.tabsRef) {\n const targetTab: HTMLDivElement | null = this.tabsRef.querySelector(\n `#${this.selectedTabId}`\n );\n\n targetTab!.focus();\n }\n };\n\n initializeFocus = () => {\n if (!this.inFocus && this.autoFocus === 'selected') {\n // Must wait for setState to finish before calling `.focus()`\n // as the focus call triggers a blur on the first tab\n this.inFocus = true;\n\n const focusTab = () => {\n this.focusTab();\n };\n\n scheduleOnce('afterRender', this, focusTab);\n }\n };\n\n <template>\n {{#let (randomId) as |rootId|}}\n <div class={{@className}} ...attributes>\n <EuiTabs\n @expand={{@expand}}\n @display={{@display}}\n @size={{@size}}\n {{on \"focus\" this.initializeFocus}}\n {{didInsert this.setTabsRef}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n aria-controls={{rootId}}\n @isSelected={{eq tab.id this.selectedTab.id}}\n @disabled={{tab.disabled}}\n {{on \"click\" (fn this.onTabClick tab)}}\n >\n {{tab.name}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{#let (findBy \"id\" this.selectedTab.id @tabs) as |currentTab|}}\n <div role=\"tabpanel\" id={{rootId}} aria-labelledby={{currentTab.id}}>\n {{#if (has-block \"selectedTabContent\")}}\n {{yield currentTab to=\"selectedTabContent\"}}\n {{else}}\n {{currentTab.content}}\n {{/if}}\n </div>\n {{/let}}\n </div>\n {{/let}}\n </template>\n}\n"],"names":["EuiTabbedContentComponent","Component","g","prototype","tracked","i","void 0","tabsRef","autoFocus","args","constructor","owner","initialSelectedTab","selectedTab","tabs","selectedTabId","id","externalSelectedTab","find","tab","setTabsRef","element","addEventListener","removeFocus","willDestroy","removeEventListener","blurEvent","currentTarget","relatedTarget","contains","inFocus","onTabClick","focusTab","scheduleOnce","targetTab","querySelector","focus","initializeFocus","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","EuiTabs","on","didInsert","EuiTab","eq","fn","findBy"],"mappings":"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"}
diff --git a/dist/components/eui-text-area.js b/dist/components/eui-text-area.js
index 60604effedc64b2053a2b3e9c6a1c782e99fd92a..94083d90454c49df0d6329f3935eceffb90af003 100644
--- a/dist/components/eui-text-area.js
+++ b/dist/components/eui-text-area.js
@@ -1,5 +1,5 @@
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
-import optional from 'ember-composable-helpers/helpers/optional';
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
import randomId from '../-private/random-id.js';
import argOrDefault from '../helpers/arg-or-default.js';
import classNames from '../helpers/class-names.js';
diff --git a/dist/components/eui-text-area.js.map b/dist/components/eui-text-area.js.map
index 229b1e475d252be3c891238a8ced82c47cd422be..8cc2b7aa271cba85a3b3450f69288ade462b2554 100644
--- a/dist/components/eui-text-area.js.map
+++ b/dist/components/eui-text-area.js.map
@@ -1 +1 @@
-{"version":3,"file":"eui-text-area.js","sources":["../../src/components/eui-text-area.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\n\nimport type { resizeMapping } from '../utils/css-mappings/eui-text-area.ts';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiTextAreaSignature {\n Element: HTMLTextAreaElement;\n Args: {\n id?: string;\n value?: string;\n fullWidth?: boolean;\n compressed?: boolean;\n disabled?: boolean;\n isInvalid?: boolean;\n inputRef?: (element: HTMLTextAreaElement | null) => void;\n rows?: number;\n resize?: keyof typeof resizeMapping;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiTextArea: TemplateOnlyComponent<EuiTextAreaSignature> = <template>\n {{#let\n (classNames\n (if @fullWidth \"euiTextArea--fullWidth\")\n (if @compressed \"euiTextArea--compressed\")\n componentName=\"EuiTextArea\"\n resize=(argOrDefault @resize \"vertical\")\n )\n (if @rows @rows (if @compressed 3 6))\n (argOrDefault @id (randomId))\n as |classes definedRows id|\n }}\n <textarea\n id={{id}}\n value={{@value}}\n class={{classes}}\n rows={{definedRows}}\n disabled={{@disabled}}\n ...attributes\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n >\n {{yield}}\n </textarea>\n {{/let}}\n</template>;\n\nexport default EuiTextArea;\n"],"names":["EuiTextArea","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","argOrDefault","randomId","validatableControl","didInsert","optional","templateOnly"],"mappings":";;;;;;;;;;AA8BA,MAAMA,WAA2D,GAAAC,oBAAA,CAAAC,kBAAA,CAyBjE,wgBAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,kBAAA;IAAAC,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
\ No newline at end of file
+{"version":3,"file":"eui-text-area.js","sources":["../../src/components/eui-text-area.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\n\nimport type { resizeMapping } from '../utils/css-mappings/eui-text-area.ts';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiTextAreaSignature {\n Element: HTMLTextAreaElement;\n Args: {\n id?: string;\n value?: string;\n fullWidth?: boolean;\n compressed?: boolean;\n disabled?: boolean;\n isInvalid?: boolean;\n inputRef?: (element: HTMLTextAreaElement | null) => void;\n rows?: number;\n resize?: keyof typeof resizeMapping;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiTextArea: TemplateOnlyComponent<EuiTextAreaSignature> = <template>\n {{#let\n (classNames\n (if @fullWidth \"euiTextArea--fullWidth\")\n (if @compressed \"euiTextArea--compressed\")\n componentName=\"EuiTextArea\"\n resize=(argOrDefault @resize \"vertical\")\n )\n (if @rows @rows (if @compressed 3 6))\n (argOrDefault @id (randomId))\n as |classes definedRows id|\n }}\n <textarea\n id={{id}}\n value={{@value}}\n class={{classes}}\n rows={{definedRows}}\n disabled={{@disabled}}\n ...attributes\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n >\n {{yield}}\n </textarea>\n {{/let}}\n</template>;\n\nexport default EuiTextArea;\n"],"names":["EuiTextArea","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","argOrDefault","randomId","validatableControl","didInsert","optional","templateOnly"],"mappings":";;;;;;;;;;AA8BA,MAAMA,WAA2D,GAAAC,oBAAA,CAAAC,kBAAA,CAyBjE,wgBAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,kBAAA;IAAAC,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
diff --git a/package.json b/package.json
index f5cba7ed6bfab263ba57590164d14b832e3ff07b..1f870bae8ede58bf88b13623b7f3bc905152f920 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
"default": "./dist/*.js"
},
"./addon-main.js": "./addon-main.js",
+ "./styles/*": "./dist/styles/*",
"./themes/dark.css": "./vendor/eui_theme_dark.min.css",
"./themes/light.css": "./vendor/eui_theme_light.min.css"
},
@@ -139,7 +140,7 @@
"@html-next/vertical-collection": "4.0.0",
"chroma-js": "^2.1.0",
"ember-auto-import": "^2.10.0",
- "ember-composable-helpers": "^5.0.0",
+ "@nullvoxpopuli/ember-composable-helpers": "^5.2.8",
"ember-element-helper": "^0.8.6",
"ember-event-helpers": "^0.1.1",
"ember-keyboard": "^9.0.1",
@@ -430,122 +431,7 @@
"./modifiers/validatable-control.js": "./dist/_app_/modifiers/validatable-control.js",
"./services/eui-config.js": "./dist/_app_/services/eui-config.js",
"./services/eui-i18n.js": "./dist/_app_/services/eui-i18n.js",
- "./services/eui-toaster.js": "./dist/_app_/services/eui-toaster.js",
- "./utils/accesibility/accessible-click-keys.js": "./dist/_app_/utils/accesibility/accessible-click-keys.js",
- "./utils/accesibility/cascading-menu-keys.js": "./dist/_app_/utils/accesibility/cascading-menu-keys.js",
- "./utils/accesibility/combo-box-keys.js": "./dist/_app_/utils/accesibility/combo-box-keys.js",
- "./utils/accesibility/index.js": "./dist/_app_/utils/accesibility/index.js",
- "./utils/breakpoint.js": "./dist/_app_/utils/breakpoint.js",
- "./utils/browser/browser.js": "./dist/_app_/utils/browser/browser.js",
- "./utils/browser/index.js": "./dist/_app_/utils/browser/index.js",
- "./utils/code/utils.js": "./dist/_app_/utils/code/utils.js",
- "./utils/color/color_palette.js": "./dist/_app_/utils/color/color_palette.js",
- "./utils/color/eui_palettes.js": "./dist/_app_/utils/color/eui_palettes.js",
- "./utils/color/index.js": "./dist/_app_/utils/color/index.js",
- "./utils/copy-to-clipboard.js": "./dist/_app_/utils/copy-to-clipboard.js",
- "./utils/css-mappings/eui-accordion.js": "./dist/_app_/utils/css-mappings/eui-accordion.js",
- "./utils/css-mappings/eui-avatar.js": "./dist/_app_/utils/css-mappings/eui-avatar.js",
- "./utils/css-mappings/eui-badge-group.js": "./dist/_app_/utils/css-mappings/eui-badge-group.js",
- "./utils/css-mappings/eui-badge.js": "./dist/_app_/utils/css-mappings/eui-badge.js",
- "./utils/css-mappings/eui-beta-badge.js": "./dist/_app_/utils/css-mappings/eui-beta-badge.js",
- "./utils/css-mappings/eui-bottom-bar.js": "./dist/_app_/utils/css-mappings/eui-bottom-bar.js",
- "./utils/css-mappings/eui-button-empty.js": "./dist/_app_/utils/css-mappings/eui-button-empty.js",
- "./utils/css-mappings/eui-button-group-button.js": "./dist/_app_/utils/css-mappings/eui-button-group-button.js",
- "./utils/css-mappings/eui-button-group.js": "./dist/_app_/utils/css-mappings/eui-button-group.js",
- "./utils/css-mappings/eui-button-icon.js": "./dist/_app_/utils/css-mappings/eui-button-icon.js",
- "./utils/css-mappings/eui-button.js": "./dist/_app_/utils/css-mappings/eui-button.js",
- "./utils/css-mappings/eui-call-out.js": "./dist/_app_/utils/css-mappings/eui-call-out.js",
- "./utils/css-mappings/eui-card-select.js": "./dist/_app_/utils/css-mappings/eui-card-select.js",
- "./utils/css-mappings/eui-card.js": "./dist/_app_/utils/css-mappings/eui-card.js",
- "./utils/css-mappings/eui-code-block.js": "./dist/_app_/utils/css-mappings/eui-code-block.js",
- "./utils/css-mappings/eui-collapsible-nav-group.js": "./dist/_app_/utils/css-mappings/eui-collapsible-nav-group.js",
- "./utils/css-mappings/eui-comment-event.js": "./dist/_app_/utils/css-mappings/eui-comment-event.js",
- "./utils/css-mappings/eui-comment-timeline-icon.js": "./dist/_app_/utils/css-mappings/eui-comment-timeline-icon.js",
- "./utils/css-mappings/eui-context-menu-item.js": "./dist/_app_/utils/css-mappings/eui-context-menu-item.js",
- "./utils/css-mappings/eui-described-form-group.js": "./dist/_app_/utils/css-mappings/eui-described-form-group.js",
- "./utils/css-mappings/eui-description-list.js": "./dist/_app_/utils/css-mappings/eui-description-list.js",
- "./utils/css-mappings/eui-empty-prompt.js": "./dist/_app_/utils/css-mappings/eui-empty-prompt.js",
- "./utils/css-mappings/eui-file-picker.js": "./dist/_app_/utils/css-mappings/eui-file-picker.js",
- "./utils/css-mappings/eui-flex-grid.js": "./dist/_app_/utils/css-mappings/eui-flex-grid.js",
- "./utils/css-mappings/eui-flex-group.js": "./dist/_app_/utils/css-mappings/eui-flex-group.js",
- "./utils/css-mappings/eui-flex-item.js": "./dist/_app_/utils/css-mappings/eui-flex-item.js",
- "./utils/css-mappings/eui-flyout.js": "./dist/_app_/utils/css-mappings/eui-flyout.js",
- "./utils/css-mappings/eui-form-control-layout-clear-button.js": "./dist/_app_/utils/css-mappings/eui-form-control-layout-clear-button.js",
- "./utils/css-mappings/eui-form-row.js": "./dist/_app_/utils/css-mappings/eui-form-row.js",
- "./utils/css-mappings/eui-global-toast-list.js": "./dist/_app_/utils/css-mappings/eui-global-toast-list.js",
- "./utils/css-mappings/eui-header-links.js": "./dist/_app_/utils/css-mappings/eui-header-links.js",
- "./utils/css-mappings/eui-header-section-item.js": "./dist/_app_/utils/css-mappings/eui-header-section-item.js",
- "./utils/css-mappings/eui-header-section.js": "./dist/_app_/utils/css-mappings/eui-header-section.js",
- "./utils/css-mappings/eui-header.js": "./dist/_app_/utils/css-mappings/eui-header.js",
- "./utils/css-mappings/eui-health.js": "./dist/_app_/utils/css-mappings/eui-health.js",
- "./utils/css-mappings/eui-horizontal-rule.js": "./dist/_app_/utils/css-mappings/eui-horizontal-rule.js",
- "./utils/css-mappings/eui-icon.js": "./dist/_app_/utils/css-mappings/eui-icon.js",
- "./utils/css-mappings/eui-image.js": "./dist/_app_/utils/css-mappings/eui-image.js",
- "./utils/css-mappings/eui-link.js": "./dist/_app_/utils/css-mappings/eui-link.js",
- "./utils/css-mappings/eui-list-group-item.js": "./dist/_app_/utils/css-mappings/eui-list-group-item.js",
- "./utils/css-mappings/eui-list-group.js": "./dist/_app_/utils/css-mappings/eui-list-group.js",
- "./utils/css-mappings/eui-loading-spinner.js": "./dist/_app_/utils/css-mappings/eui-loading-spinner.js",
- "./utils/css-mappings/eui-modal.js": "./dist/_app_/utils/css-mappings/eui-modal.js",
- "./utils/css-mappings/eui-notification-badge.js": "./dist/_app_/utils/css-mappings/eui-notification-badge.js",
- "./utils/css-mappings/eui-page-body.js": "./dist/_app_/utils/css-mappings/eui-page-body.js",
- "./utils/css-mappings/eui-page-content-body.js": "./dist/_app_/utils/css-mappings/eui-page-content-body.js",
- "./utils/css-mappings/eui-page-content.js": "./dist/_app_/utils/css-mappings/eui-page-content.js",
- "./utils/css-mappings/eui-page-header.js": "./dist/_app_/utils/css-mappings/eui-page-header.js",
- "./utils/css-mappings/eui-page-side-bar.js": "./dist/_app_/utils/css-mappings/eui-page-side-bar.js",
- "./utils/css-mappings/eui-page.js": "./dist/_app_/utils/css-mappings/eui-page.js",
- "./utils/css-mappings/eui-panel.js": "./dist/_app_/utils/css-mappings/eui-panel.js",
- "./utils/css-mappings/eui-popover-footer.js": "./dist/_app_/utils/css-mappings/eui-popover-footer.js",
- "./utils/css-mappings/eui-popover-title.js": "./dist/_app_/utils/css-mappings/eui-popover-title.js",
- "./utils/css-mappings/eui-popover.js": "./dist/_app_/utils/css-mappings/eui-popover.js",
- "./utils/css-mappings/eui-progress-data.js": "./dist/_app_/utils/css-mappings/eui-progress-data.js",
- "./utils/css-mappings/eui-progress.js": "./dist/_app_/utils/css-mappings/eui-progress.js",
- "./utils/css-mappings/eui-range-highlight.js": "./dist/_app_/utils/css-mappings/eui-range-highlight.js",
- "./utils/css-mappings/eui-range-input.js": "./dist/_app_/utils/css-mappings/eui-range-input.js",
- "./utils/css-mappings/eui-range-levels.js": "./dist/_app_/utils/css-mappings/eui-range-levels.js",
- "./utils/css-mappings/eui-selectable-list-item.js": "./dist/_app_/utils/css-mappings/eui-selectable-list-item.js",
- "./utils/css-mappings/eui-spacer.js": "./dist/_app_/utils/css-mappings/eui-spacer.js",
- "./utils/css-mappings/eui-stat.js": "./dist/_app_/utils/css-mappings/eui-stat.js",
- "./utils/css-mappings/eui-step-number.js": "./dist/_app_/utils/css-mappings/eui-step-number.js",
- "./utils/css-mappings/eui-tabs.js": "./dist/_app_/utils/css-mappings/eui-tabs.js",
- "./utils/css-mappings/eui-text-align.js": "./dist/_app_/utils/css-mappings/eui-text-align.js",
- "./utils/css-mappings/eui-text-area.js": "./dist/_app_/utils/css-mappings/eui-text-area.js",
- "./utils/css-mappings/eui-text-color.js": "./dist/_app_/utils/css-mappings/eui-text-color.js",
- "./utils/css-mappings/eui-text.js": "./dist/_app_/utils/css-mappings/eui-text.js",
- "./utils/css-mappings/eui-title.js": "./dist/_app_/utils/css-mappings/eui-title.js",
- "./utils/css-mappings/eui-toast.js": "./dist/_app_/utils/css-mappings/eui-toast.js",
- "./utils/css-mappings/eui-tool-tip.js": "./dist/_app_/utils/css-mappings/eui-tool-tip.js",
- "./utils/css-mappings/index.js": "./dist/_app_/utils/css-mappings/index.js",
- "./utils/detect-element-resize.js": "./dist/_app_/utils/detect-element-resize.js",
- "./utils/index.js": "./dist/_app_/utils/index.js",
- "./utils/keys.js": "./dist/_app_/utils/keys.js",
- "./utils/markdown/markdown-actions.js": "./dist/_app_/utils/markdown/markdown-actions.js",
- "./utils/markdown/markdown-modes.js": "./dist/_app_/utils/markdown/markdown-modes.js",
- "./utils/markdown/markdown-types.js": "./dist/_app_/utils/markdown/markdown-types.js",
- "./utils/markdown/plugins/markdown-add-components/index.js": "./dist/_app_/utils/markdown/plugins/markdown-add-components/index.js",
- "./utils/markdown/plugins/markdown-add-components/processor.js": "./dist/_app_/utils/markdown/plugins/markdown-add-components/processor.js",
- "./utils/markdown/plugins/markdown-checkbox/index.js": "./dist/_app_/utils/markdown/plugins/markdown-checkbox/index.js",
- "./utils/markdown/plugins/markdown-checkbox/parser.js": "./dist/_app_/utils/markdown/plugins/markdown-checkbox/parser.js",
- "./utils/markdown/plugins/markdown-default-plugins/index.js": "./dist/_app_/utils/markdown/plugins/markdown-default-plugins/index.js",
- "./utils/markdown/plugins/markdown-default-plugins/parsing-plugins.js": "./dist/_app_/utils/markdown/plugins/markdown-default-plugins/parsing-plugins.js",
- "./utils/markdown/plugins/markdown-default-plugins/plugins.js": "./dist/_app_/utils/markdown/plugins/markdown-default-plugins/plugins.js",
- "./utils/markdown/plugins/markdown-default-plugins/processing-plugins.js": "./dist/_app_/utils/markdown/plugins/markdown-default-plugins/processing-plugins.js",
- "./utils/markdown/plugins/markdown-default-plugins/ui-plugins.js": "./dist/_app_/utils/markdown/plugins/markdown-default-plugins/ui-plugins.js",
- "./utils/markdown/plugins/markdown-tooltip/index.js": "./dist/_app_/utils/markdown/plugins/markdown-tooltip/index.js",
- "./utils/markdown/plugins/markdown-tooltip/parser.js": "./dist/_app_/utils/markdown/plugins/markdown-tooltip/parser.js",
- "./utils/markdown/plugins/markdown-tooltip/plugin.js": "./dist/_app_/utils/markdown/plugins/markdown-tooltip/plugin.js",
- "./utils/markdown/plugins/to-dom.js": "./dist/_app_/utils/markdown/plugins/to-dom.js",
- "./utils/markdown/remark/remark-prismjs.js": "./dist/_app_/utils/markdown/remark/remark-prismjs.js",
- "./utils/maybe-unwrap-proxy.js": "./dist/_app_/utils/maybe-unwrap-proxy.js",
- "./utils/number/index.js": "./dist/_app_/utils/number/index.js",
- "./utils/number/number.js": "./dist/_app_/utils/number/number.js",
- "./utils/popover/index.js": "./dist/_app_/utils/popover/index.js",
- "./utils/popover/types.js": "./dist/_app_/utils/popover/types.js",
- "./utils/predicate/common_predicates.js": "./dist/_app_/utils/predicate/common_predicates.js",
- "./utils/predicate/index.js": "./dist/_app_/utils/predicate/index.js",
- "./utils/predicate/lodash_predicates.js": "./dist/_app_/utils/predicate/lodash_predicates.js",
- "./utils/range/index.js": "./dist/_app_/utils/range/index.js",
- "./utils/timer.js": "./dist/_app_/utils/timer.js",
- "./utils/transition.js": "./dist/_app_/utils/transition.js"
+ "./services/eui-toaster.js": "./dist/_app_/services/eui-toaster.js"
},
"public-assets": {
"./vendor/eui_theme_dark.min.css": "/@ember-eui/core/themes/dark.css",
@@ -570,3 +456,4 @@
"start:types": "glint --build --watch"
}
}
+
{
"pnpm": {
"patchedDependencies": {
"@ember-eui/core": "patches/@ember-eui__core.patch"
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment