@hashicorp/design-system-components 4.2.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_app_/components/hds/form/super-select/after-options.js +1 -0
- package/dist/_app_/components/hds/form/super-select/multiple/base.js +1 -0
- package/dist/_app_/components/hds/form/super-select/multiple/field.js +1 -0
- package/dist/_app_/components/hds/form/super-select/option-group.js +1 -0
- package/dist/_app_/components/hds/form/super-select/placeholder.js +1 -0
- package/dist/_app_/components/hds/form/super-select/single/base.js +1 -0
- package/dist/_app_/components/hds/form/super-select/single/field.js +1 -0
- package/dist/_app_/components/hds/{link/types.js → popover-primitive/index.js} +1 -1
- package/dist/_app_/components/hds/{card/types.js → rich-tooltip/bubble.js} +1 -1
- package/dist/_app_/components/hds/{alert/types.js → rich-tooltip/index.js} +1 -1
- package/dist/_app_/components/hds/{interactive/types.js → rich-tooltip/toggle.js} +1 -1
- package/dist/_app_/modifiers/hds-anchored-position.js +1 -0
- package/dist/_app_/modifiers/hds-register-event.js +1 -0
- package/dist/{_rollupPluginBabelHelpers-lqPQKyNs.js → _rollupPluginBabelHelpers-NoJJJNhk.js} +7 -9
- package/dist/{_rollupPluginBabelHelpers-lqPQKyNs.js.map → _rollupPluginBabelHelpers-NoJJJNhk.js.map} +1 -1
- package/dist/components/hds/accordion/index.js +8 -2
- package/dist/components/hds/accordion/index.js.map +1 -1
- package/dist/components/hds/accordion/item/button.js +12 -8
- package/dist/components/hds/accordion/item/button.js.map +1 -1
- package/dist/components/hds/accordion/item/index.js +6 -6
- package/dist/components/hds/accordion/item/index.js.map +1 -1
- package/dist/components/hds/alert/description.js +9 -4
- package/dist/components/hds/alert/description.js.map +1 -1
- package/dist/components/hds/alert/index.js +4 -6
- package/dist/components/hds/alert/index.js.map +1 -1
- package/dist/components/hds/alert/title.js +9 -4
- package/dist/components/hds/alert/title.js.map +1 -1
- package/dist/components/hds/alert/types.js +5 -0
- package/dist/components/hds/alert/types.js.map +1 -1
- package/dist/components/hds/app-footer/copyright.js +1 -1
- package/dist/components/hds/app-footer/copyright.js.map +1 -1
- package/dist/components/hds/app-footer/index.js +6 -6
- package/dist/components/hds/app-footer/index.js.map +1 -1
- package/dist/components/hds/app-footer/item.js +10 -4
- package/dist/components/hds/app-footer/item.js.map +1 -1
- package/dist/components/hds/app-footer/legal-links.js +1 -1
- package/dist/components/hds/app-footer/legal-links.js.map +1 -1
- package/dist/components/hds/app-footer/link.js +10 -4
- package/dist/components/hds/app-footer/link.js.map +1 -1
- package/dist/components/hds/app-footer/status-link.js +12 -27
- package/dist/components/hds/app-footer/status-link.js.map +1 -1
- package/dist/components/hds/app-footer/types.js +38 -0
- package/dist/components/hds/app-footer/types.js.map +1 -0
- package/dist/components/hds/app-frame/index.js +4 -4
- package/dist/components/hds/app-frame/index.js.map +1 -1
- package/dist/components/hds/app-frame/parts/footer.js +10 -4
- package/dist/components/hds/app-frame/parts/footer.js.map +1 -1
- package/dist/components/hds/app-frame/parts/header.js +10 -4
- package/dist/components/hds/app-frame/parts/header.js.map +1 -1
- package/dist/components/hds/app-frame/parts/main.js +10 -4
- package/dist/components/hds/app-frame/parts/main.js.map +1 -1
- package/dist/components/hds/app-frame/parts/modals.js +10 -4
- package/dist/components/hds/app-frame/parts/modals.js.map +1 -1
- package/dist/components/hds/app-frame/parts/sidebar.js +10 -4
- package/dist/components/hds/app-frame/parts/sidebar.js.map +1 -1
- package/dist/components/hds/badge/index.js +19 -18
- package/dist/components/hds/badge/index.js.map +1 -1
- package/dist/components/hds/badge/types.js +29 -0
- package/dist/components/hds/badge/types.js.map +1 -0
- package/dist/components/hds/badge-count/index.js +15 -14
- package/dist/components/hds/badge-count/index.js.map +1 -1
- package/dist/components/hds/badge-count/types.js +25 -0
- package/dist/components/hds/badge-count/types.js.map +1 -0
- package/dist/components/hds/button/index.js +3 -3
- package/dist/components/hds/button/index.js.map +1 -1
- package/dist/components/hds/button-set/index.js +8 -2
- package/dist/components/hds/button-set/index.js.map +1 -1
- package/dist/components/hds/card/container.js.map +1 -1
- package/dist/components/hds/card/types.js +5 -0
- package/dist/components/hds/card/types.js.map +1 -1
- package/dist/components/hds/code-block/index.js +1 -1
- package/dist/components/hds/code-block/index.js.map +1 -1
- package/dist/components/hds/copy/button/index.js +1 -1
- package/dist/components/hds/copy/button/index.js.map +1 -1
- package/dist/components/hds/copy/snippet/index.js +1 -1
- package/dist/components/hds/copy/snippet/index.js.map +1 -1
- package/dist/components/hds/disclosure-primitive/index.js +2 -2
- package/dist/components/hds/disclosure-primitive/index.js.map +1 -1
- package/dist/components/hds/dismiss-button/index.js +3 -3
- package/dist/components/hds/dismiss-button/index.js.map +1 -1
- package/dist/components/hds/dropdown/index.js +1 -1
- package/dist/components/hds/dropdown/index.js.map +1 -1
- package/dist/components/hds/dropdown/list-item/checkmark.js +1 -1
- package/dist/components/hds/dropdown/list-item/checkmark.js.map +1 -1
- package/dist/components/hds/dropdown/list-item/interactive.js +1 -1
- package/dist/components/hds/dropdown/list-item/interactive.js.map +1 -1
- package/dist/components/hds/dropdown/toggle/button.js +1 -1
- package/dist/components/hds/dropdown/toggle/icon.js +1 -1
- package/dist/components/hds/dropdown/toggle/icon.js.map +1 -1
- package/dist/components/hds/flyout/index.js +1 -1
- package/dist/components/hds/flyout/index.js.map +1 -1
- package/dist/components/hds/form/field/index.js +1 -1
- package/dist/components/hds/form/field/index.js.map +1 -1
- package/dist/components/hds/form/fieldset/index.js +1 -1
- package/dist/components/hds/form/fieldset/index.js.map +1 -1
- package/dist/components/hds/form/label/index.js +18 -2
- package/dist/components/hds/form/label/index.js.map +1 -1
- package/dist/components/hds/form/masked-input/base.js +1 -1
- package/dist/components/hds/form/masked-input/base.js.map +1 -1
- package/dist/components/hds/form/radio-card/index.js +1 -1
- package/dist/components/hds/form/radio-card/index.js.map +1 -1
- package/dist/components/hds/form/super-select/after-options.js +10 -0
- package/dist/components/hds/form/super-select/after-options.js.map +1 -0
- package/dist/components/hds/form/super-select/multiple/base.js +159 -0
- package/dist/components/hds/form/super-select/multiple/base.js.map +1 -0
- package/dist/components/hds/form/super-select/multiple/field.js +21 -0
- package/dist/components/hds/form/super-select/multiple/field.js.map +1 -0
- package/dist/components/hds/form/super-select/option-group.js +22 -0
- package/dist/components/hds/form/super-select/option-group.js.map +1 -0
- package/dist/components/hds/form/super-select/placeholder.js +10 -0
- package/dist/components/hds/form/super-select/placeholder.js.map +1 -0
- package/dist/components/hds/form/super-select/single/base.js +86 -0
- package/dist/components/hds/form/super-select/single/base.js.map +1 -0
- package/dist/components/hds/form/super-select/single/field.js +21 -0
- package/dist/components/hds/form/super-select/single/field.js.map +1 -0
- package/dist/components/hds/form/text-input/field.js +1 -1
- package/dist/components/hds/form/text-input/field.js.map +1 -1
- package/dist/components/hds/icon-tile/index.js +15 -11
- package/dist/components/hds/icon-tile/index.js.map +1 -1
- package/dist/components/hds/icon-tile/types.js +32 -0
- package/dist/components/hds/icon-tile/types.js.map +1 -0
- package/dist/components/hds/interactive/index.js +4 -4
- package/dist/components/hds/interactive/index.js.map +1 -1
- package/dist/components/hds/link/inline.js.map +1 -1
- package/dist/components/hds/link/standalone.js.map +1 -1
- package/dist/components/hds/link/types.js +5 -0
- package/dist/components/hds/link/types.js.map +1 -1
- package/dist/components/hds/menu-primitive/index.js +1 -1
- package/dist/components/hds/menu-primitive/index.js.map +1 -1
- package/dist/components/hds/modal/index.js +1 -1
- package/dist/components/hds/modal/index.js.map +1 -1
- package/dist/components/hds/pagination/compact/index.js +1 -1
- package/dist/components/hds/pagination/compact/index.js.map +1 -1
- package/dist/components/hds/pagination/nav/arrow.js +1 -1
- package/dist/components/hds/pagination/nav/arrow.js.map +1 -1
- package/dist/components/hds/pagination/nav/number.js +1 -1
- package/dist/components/hds/pagination/nav/number.js.map +1 -1
- package/dist/components/hds/pagination/numbered/index.js +1 -1
- package/dist/components/hds/pagination/numbered/index.js.map +1 -1
- package/dist/components/hds/pagination/size-selector/index.js +1 -1
- package/dist/components/hds/pagination/size-selector/index.js.map +1 -1
- package/dist/components/hds/popover-primitive/index.js +238 -0
- package/dist/components/hds/popover-primitive/index.js.map +1 -0
- package/dist/components/hds/reveal/index.js +21 -17
- package/dist/components/hds/reveal/index.js.map +1 -1
- package/dist/components/hds/reveal/toggle/button.js +5 -5
- package/dist/components/hds/reveal/toggle/button.js.map +1 -1
- package/dist/components/hds/rich-tooltip/bubble.js +60 -0
- package/dist/components/hds/rich-tooltip/bubble.js.map +1 -0
- package/dist/components/hds/rich-tooltip/index.js +26 -0
- package/dist/components/hds/rich-tooltip/index.js.map +1 -0
- package/dist/components/hds/rich-tooltip/toggle.js +85 -0
- package/dist/components/hds/rich-tooltip/toggle.js.map +1 -0
- package/dist/components/hds/separator/index.js +9 -8
- package/dist/components/hds/separator/index.js.map +1 -1
- package/dist/components/hds/separator/types.js +13 -0
- package/dist/components/hds/separator/types.js.map +1 -0
- package/dist/components/hds/side-nav/index.js +1 -1
- package/dist/components/hds/side-nav/index.js.map +1 -1
- package/dist/components/hds/side-nav/portal/target.js +1 -1
- package/dist/components/hds/side-nav/portal/target.js.map +1 -1
- package/dist/components/hds/stepper/step/indicator.js +9 -8
- package/dist/components/hds/stepper/step/indicator.js.map +1 -1
- package/dist/components/hds/stepper/task/indicator.js +10 -14
- package/dist/components/hds/stepper/task/indicator.js.map +1 -1
- package/dist/components/hds/stepper/types.js +21 -0
- package/dist/components/hds/stepper/types.js.map +1 -0
- package/dist/components/hds/table/index.js +1 -1
- package/dist/components/hds/table/index.js.map +1 -1
- package/dist/components/hds/table/th-button-sort.js +1 -1
- package/dist/components/hds/table/th-button-tooltip.js +1 -1
- package/dist/components/hds/table/th-selectable.js +1 -1
- package/dist/components/hds/table/th-selectable.js.map +1 -1
- package/dist/components/hds/table/th-sort.js +1 -1
- package/dist/components/hds/table/th.js +1 -1
- package/dist/components/hds/tabs/index.js +1 -1
- package/dist/components/hds/tabs/index.js.map +1 -1
- package/dist/components/hds/tabs/panel.js +1 -1
- package/dist/components/hds/tabs/panel.js.map +1 -1
- package/dist/components/hds/tabs/tab.js +1 -1
- package/dist/components/hds/tabs/tab.js.map +1 -1
- package/dist/components/hds/tag/index.js +11 -10
- package/dist/components/hds/tag/index.js.map +1 -1
- package/dist/components/hds/tag/types.js +13 -0
- package/dist/components/hds/tag/types.js.map +1 -0
- package/dist/components/hds/text/body.js.map +1 -1
- package/dist/components/hds/text/code.js.map +1 -1
- package/dist/components/hds/text/display.js.map +1 -1
- package/dist/components/hds/text/index.js +3 -3
- package/dist/components/hds/text/index.js.map +1 -1
- package/dist/components/hds/toast/index.js +8 -2
- package/dist/components/hds/toast/index.js.map +1 -1
- package/dist/components/hds/yield/index.js +4 -4
- package/dist/components/hds/yield/index.js.map +1 -1
- package/dist/modifiers/hds-anchored-position.js +175 -0
- package/dist/modifiers/hds-anchored-position.js.map +1 -0
- package/dist/modifiers/hds-register-event.js +40 -0
- package/dist/modifiers/hds-register-event.js.map +1 -0
- package/dist/modifiers/hds-tooltip.js +10 -14
- package/dist/modifiers/hds-tooltip.js.map +1 -1
- package/dist/styles/@hashicorp/design-system-components.css +565 -3
- package/dist/styles/@hashicorp/design-system-components.scss +1 -0
- package/dist/styles/@hashicorp/design-system-power-select-overrides.scss +0 -1
- package/dist/styles/components/code-block/theme.scss +1 -1
- package/dist/styles/components/dropdown.scss +7 -0
- package/dist/styles/components/form/index.scss +1 -0
- package/dist/styles/components/form/select.scss +0 -1
- package/dist/styles/components/form/super-select.scss +515 -0
- package/dist/styles/components/form/text-input.scss +0 -1
- package/dist/styles/components/form/textarea.scss +0 -1
- package/dist/styles/components/page-header.scss +1 -0
- package/dist/styles/components/rich-tooltip.scss +247 -0
- package/dist/styles/components/tabs.scss +2 -1
- package/dist/styles/components/tooltip.scss +1 -1
- package/package.json +54 -28
- package/dist/_app_/components/hds/text/types.js +0 -1
- package/dist/_app_/components/hds/yield/types.js +0 -1
- package/dist/components/hds/interactive/types.js +0 -2
- package/dist/components/hds/interactive/types.js.map +0 -1
- package/dist/components/hds/yield/types.js +0 -2
- package/dist/components/hds/yield/types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/hds/pagination/numbered/index.hbs","../../../../../src/components/hds/pagination/numbered/index.js"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{! @glint-nocheck: not typesafe yet }}\\n{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<div class=\\\"hds-pagination\\\" ...attributes>\\n {{#if this.showInfo}}\\n <Hds::Pagination::Info\\n @itemsRangeStart={{this.itemsRangeStart}}\\n @itemsRangeEnd={{this.itemsRangeEnd}}\\n @totalItems={{@totalItems}}\\n @showTotalItems={{@showTotalItems}}\\n />\\n {{/if}}\\n\\n <nav class=\\\"hds-pagination-nav\\\" aria-label={{this.ariaLabel}}>\\n <Hds::Pagination::Nav::Arrow\\n @direction=\\\"prev\\\"\\n @showLabel={{this.showLabels}}\\n @route={{this.routing.route}}\\n @query={{this.routing.queryPrev}}\\n @model={{this.routing.model}}\\n @models={{this.routing.models}}\\n @replace={{this.routing.replace}}\\n @onClick={{this.onPageChange}}\\n @disabled={{this.isDisabledPrev}}\\n />\\n {{#if this.showPageNumbers}}\\n <ul class=\\\"hds-pagination-nav__page-list\\\">\\n {{#each this.pages as |page|}}\\n <li class=\\\"hds-pagination-nav__page-item\\\">\\n {{#if (eq page \\\"…\\\")}}\\n <Hds::Pagination::Nav::Ellipsis />\\n {{else}}\\n <Hds::Pagination::Nav::Number\\n @page={{page}}\\n @route={{this.routing.route}}\\n @query={{get this.routing.queryPages page}}\\n @model={{this.routing.model}}\\n @models={{this.routing.models}}\\n @replace={{this.routing.replace}}\\n @onClick={{this.onPageChange}}\\n @isSelected={{if (eq page this.currentPage) true false}}\\n />\\n {{/if}}\\n </li>\\n {{/each}}\\n </ul>\\n {{/if}}\\n <Hds::Pagination::Nav::Arrow\\n @direction=\\\"next\\\"\\n @showLabel={{this.showLabels}}\\n @route={{this.routing.route}}\\n @query={{this.routing.queryNext}}\\n @model={{this.routing.model}}\\n @models={{this.routing.models}}\\n @replace={{this.routing.replace}}\\n @onClick={{this.onPageChange}}\\n @disabled={{this.isDisabledNext}}\\n />\\n </nav>\\n\\n {{#if this.showSizeSelector}}\\n <Hds::Pagination::SizeSelector\\n @pageSizes={{this.pageSizes}}\\n @label={{@sizeSelectorLabel}}\\n @selectedSize={{this.currentPageSize}}\\n @onChange={{this.onPageSizeChange}}\\n />\\n {{/if}}\\n</div>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\n\n// for context about the decision to use these values, see:\n// https://hashicorp.slack.com/archives/C03A0N1QK8S/p1673546329082759\nexport const DEFAULT_PAGE_SIZES = [10, 30, 50];\n\n/**\n * Elliptize a list of pages\n *\n * @param pages - array with all the \"pages\" (integer numbers)\n * @param current - \"current\" page (array's index)\n * @param limit - number of \"page numbers\" to be shown at a time (should always be an odd number!)\n *\n * @return - array of integers (\"pages\") + `...` strings (\"ellipsis\")\n */\nexport const elliptize = ({ pages, current, limit = 7 }) => {\n const length = pages.length;\n const ellipsis = '…';\n let result = [];\n let start;\n let end;\n\n if (length <= limit) {\n return pages;\n }\n\n if (current <= length / 2) {\n start = Math.ceil(limit / 2);\n end = limit - start;\n } else {\n end = Math.ceil(limit / 2);\n start = limit - end;\n }\n\n const sliceStart = pages.slice(0, start);\n const sliceEnd = pages.slice(-end);\n\n if (sliceStart.includes(current) && sliceStart.includes(current + 1)) {\n // \"current\" (and its next sibling) is contained within the \"sliceStart\" block\n sliceEnd.splice(0, 1, ellipsis);\n result = [].concat(sliceStart, sliceEnd);\n } else if (sliceEnd.includes(current - 1) && sliceEnd.includes(current)) {\n // \"current\" (and its prev sibling) is contained within the \"sliceEnd\" block\n sliceStart.splice(-1, 1, ellipsis);\n result = [].concat(sliceStart, sliceEnd);\n } else {\n // this is a bit more tricky :)\n // we need to calculate how many items there are before/after the current item\n // since both the initial and ending blocks are always 2 items long (number + ellipsis)\n // and there is always the \"current\" item, we can just subtract 5 from the limit\n const delta = (limit - 5) / 2; // this is why the limit needs to be an odd number\n // we slice the array starting at the \"current\" index, minus the delta, minus one because it's an array (zero-based)\n const sliceCurr = pages.slice(current - delta - 1, current + delta);\n result = [].concat(\n sliceStart.shift(),\n ellipsis,\n sliceCurr,\n ellipsis,\n sliceEnd.pop()\n );\n }\n\n return result;\n};\n\nexport default class HdsPaginationNumberedIndexComponent extends Component {\n // These two private variables are used to differentiate between\n // \"uncontrolled\" component (where the state is handled internally) and\n // \"controlled\" component (where the state is handled externally, by the consumer's code).\n // In the first case, these variables store the internal state of the component at any moment,\n // and their value is updated internally according to the user's interaction with the component.\n // In the second case, these variables store *only* the initial state of the component (coming from the arguments)\n // at rendering time, but from that moment on they're not updated anymore, no matter what interaction the user\n // has with the component (the state is controlled externally, eg. via query parameters)\n @tracked _currentPage = this.args.currentPage ?? 1;\n @tracked _currentPageSize = this.args.currentPageSize ?? this.pageSizes[0];\n @tracked isControlled;\n\n showInfo = this.args.showInfo ?? true; // if the \"info\" block is visible\n showLabels = this.args.showLabels ?? false; // if the labels for the \"prev/next\" controls are visible\n showSizeSelector = this.args.showSizeSelector ?? true; // if the \"size selector\" block is visible\n showPageNumbers = this.args.showPageNumbers ?? true; // if the \"page numbers\" block is visible\n isTruncated = this.args.isTruncated ?? true; // if the list of \"page numbers\" is truncated\n\n constructor() {\n super(...arguments);\n\n let { queryFunction } = this.args;\n\n // This component works in two different ways, depending if we need to support\n // routing through links (`LinkTo`) for the \"navigation controls\", or not.\n // If there's no routing then the component behaves as \"uncontrolled\"\n // (the state updates - eg to the \"currentPage\" and \"currentPageSize\"\n // are handled by its internal logic).\n // If instead the component needs to update the routing (and we infer this via the \"query\" arguments)\n // then the component behaves as \"controlled\", where the state is\n // initialized and updated using the arguments passed to it.\n\n if (queryFunction === undefined) {\n this.isControlled = false;\n } else {\n assert(\n '@queryFunction for \"Hds::Pagination::Numbered\" must be a function',\n typeof queryFunction === 'function'\n );\n assert(\n '@currentPage and @currentPageSize for \"Hds::Pagination::Numbered\" must be provided as numeric arguments when the pagination controls the routing',\n typeof this.args.currentPageSize === 'number' &&\n typeof this.args.currentPage === 'number'\n );\n this.isControlled = true;\n }\n\n assert(\n '@totalItems for \"Hds::Pagination::Numbered\" must be defined as an integer number',\n typeof this.args.totalItems === 'number'\n );\n }\n\n /**\n * @param ariaLabel\n * @type {string}\n * @default 'Pagination'\n */\n get ariaLabel() {\n return this.args.ariaLabel ?? 'Pagination';\n }\n\n // This very specific `get/set` pattern is used to handle the two different use cases of the component\n // being \"controlled\" (when it has routing, meaning it needs to support pagination controls as links/`LinkTo`)\n // vs being \"uncontrolled\" (see comments above for details).\n //\n // If it has routing (and so it's \"controlled\"), than the value (\"state\") of the `currentPage/currentPageSize` variables\n // is *always* determined by the controller via arguments (most of the times, connected to query parameters in the URL).\n // For this reason the \"get\" method always returns the value from the `args`,\n // while the \"set\" method never updates the private internal state (_variable).\n //\n // If instead it doesn't have routing (and so it's \"uncontrolled\") than the value (\"state\") of the `currentPage/currentPageSize` variables\n // is *always* determined by the component's internal logic (and updated according to the user interaction with it).\n // For this reason the \"get\" and \"set\" methods always read from or write to the private internal state (_variable).\n\n get currentPage() {\n if (this.isControlled) {\n return this.args.currentPage;\n } else {\n return this._currentPage;\n }\n }\n\n set currentPage(value) {\n if (this.isControlled) {\n // noop\n } else {\n this._currentPage = value;\n }\n }\n\n get currentPageSize() {\n if (this.isControlled) {\n return this.args.currentPageSize;\n } else {\n return this._currentPageSize;\n }\n }\n\n set currentPageSize(value) {\n if (this.isControlled) {\n // noop\n } else {\n this._currentPageSize = value;\n }\n }\n\n /**\n * @param pageSizes\n * @type {array of numbers}\n * @description Set the page sizes users can select from.\n * @default [10, 30, 50]\n */\n get pageSizes() {\n let { pageSizes = DEFAULT_PAGE_SIZES } = this.args;\n\n assert(\n `pageSizes argument must be an array. Received: ${pageSizes}`,\n Array.isArray(pageSizes) === true\n );\n\n return pageSizes;\n }\n\n get itemsRangeStart() {\n // Calculate the starting range of items displayed on current page\n // if currentPage = 1st page and # of items per page is 10:\n // ( (1 - 1 = 0) * 10 = 0 ) + 1 = 1\n // if current page = 2nd page:\n // ( (2 - 1 = 1) * 10 = 10 ) + 1 = 11\n return (this.currentPage - 1) * this.currentPageSize + 1;\n }\n\n get itemsRangeEnd() {\n // Calculate ending range of items displayed on current page\n // 2 cases: 1) full page of items or 2) last page of items\n if (this.currentPage * this.currentPageSize < this.args.totalItems) {\n // 1) full page of items (pages 1 to page before last):\n return this.itemsRangeStart + this.currentPageSize - 1;\n } else {\n // 2) last page of items:\n return this.args.totalItems;\n }\n }\n\n get pages() {\n let pages = [];\n\n for (let i = 1; i <= this.totalPages; i++) {\n pages.push(i);\n }\n\n if (this.isTruncated) {\n return elliptize({ pages, current: this.currentPage });\n } else {\n return pages;\n }\n }\n\n get totalPages() {\n return Math.max(Math.ceil(this.args.totalItems / this.currentPageSize), 1);\n }\n\n buildQueryParamsObject(page, pageSize) {\n if (this.isControlled) {\n return this.args.queryFunction(page, pageSize);\n } else {\n return {};\n }\n }\n\n get routing() {\n let routing = {\n route: this.args.route ?? undefined,\n model: this.args.model ?? undefined,\n models: this.args.models ?? undefined,\n replace: this.args.replace ?? undefined,\n };\n\n // the \"query\" is dynamic and needs to be calculated\n if (this.isControlled) {\n routing.queryPrev = this.buildQueryParamsObject(\n this.currentPage - 1,\n this.currentPageSize\n );\n routing.queryNext = this.buildQueryParamsObject(\n this.currentPage + 1,\n this.currentPageSize\n );\n // IMPORTANT: here we need to use an object and not an array\n // otherwise the {{get object page}} will be shifted by one\n // (the pages are 1-based while the array would be zero-based)\n routing.queryPages = {};\n this.pages.forEach(\n (page) =>\n (routing.queryPages[page] = this.buildQueryParamsObject(\n page,\n this.currentPageSize\n ))\n );\n } else {\n routing.queryPrev = undefined;\n routing.queryNext = undefined;\n routing.queryByPage = {};\n }\n\n return routing;\n }\n\n get isDisabledPrev() {\n return this.currentPage === 1;\n }\n\n get isDisabledNext() {\n return this.currentPage === this.totalPages;\n }\n\n @action\n onPageChange(page) {\n let gotoPageNumber;\n if (page === 'prev' && this.currentPage > 1) {\n gotoPageNumber = this.currentPage - 1;\n } else if (page === 'next' && this.currentPage < this.totalPages) {\n gotoPageNumber = this.currentPage + 1;\n } else {\n gotoPageNumber = page;\n }\n\n // we want to invoke the `onPageChange` callback only on actual page change\n if (gotoPageNumber !== this.currentPage) {\n this.currentPage = gotoPageNumber;\n\n let { onPageChange } = this.args;\n\n if (typeof onPageChange === 'function') {\n onPageChange(this.currentPage, this.currentPageSize);\n }\n }\n }\n\n @action\n onPageSizeChange(newPageSize) {\n let { onPageSizeChange } = this.args;\n\n if (!this.isControlled) {\n // notice: we agreed to reset the pagination to the first element (any alternative would result in an unpredictable UX)\n this.currentPage = 1;\n this.currentPageSize = newPageSize;\n }\n\n // invoke the callback function\n if (typeof onPageSizeChange === 'function') {\n onPageSizeChange(newPageSize);\n }\n }\n}\n"],"names":["DEFAULT_PAGE_SIZES","elliptize","pages","current","limit","length","ellipsis","result","start","end","Math","ceil","sliceStart","slice","sliceEnd","includes","splice","concat","delta","sliceCurr","shift","pop","HdsPaginationNumberedIndexComponent","_class","Component","constructor","arguments","_initializerDefineProperty","_descriptor","_descriptor2","_descriptor3","_defineProperty","args","showInfo","showLabels","showSizeSelector","showPageNumbers","isTruncated","queryFunction","undefined","isControlled","assert","currentPageSize","currentPage","totalItems","ariaLabel","_currentPage","value","_currentPageSize","pageSizes","Array","isArray","itemsRangeStart","itemsRangeEnd","i","totalPages","push","max","buildQueryParamsObject","page","pageSize","routing","route","model","models","replace","queryPrev","queryNext","queryPages","forEach","queryByPage","isDisabledPrev","isDisabledNext","onPageChange","gotoPageNumber","onPageSizeChange","newPageSize","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/hds/pagination/numbered/index.hbs","../../../../../src/components/hds/pagination/numbered/index.js"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{! @glint-nocheck: not typesafe yet }}\\n{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<div class=\\\"hds-pagination\\\" ...attributes>\\n {{#if this.showInfo}}\\n <Hds::Pagination::Info\\n @itemsRangeStart={{this.itemsRangeStart}}\\n @itemsRangeEnd={{this.itemsRangeEnd}}\\n @totalItems={{@totalItems}}\\n @showTotalItems={{@showTotalItems}}\\n />\\n {{/if}}\\n\\n <nav class=\\\"hds-pagination-nav\\\" aria-label={{this.ariaLabel}}>\\n <Hds::Pagination::Nav::Arrow\\n @direction=\\\"prev\\\"\\n @showLabel={{this.showLabels}}\\n @route={{this.routing.route}}\\n @query={{this.routing.queryPrev}}\\n @model={{this.routing.model}}\\n @models={{this.routing.models}}\\n @replace={{this.routing.replace}}\\n @onClick={{this.onPageChange}}\\n @disabled={{this.isDisabledPrev}}\\n />\\n {{#if this.showPageNumbers}}\\n <ul class=\\\"hds-pagination-nav__page-list\\\">\\n {{#each this.pages as |page|}}\\n <li class=\\\"hds-pagination-nav__page-item\\\">\\n {{#if (eq page \\\"…\\\")}}\\n <Hds::Pagination::Nav::Ellipsis />\\n {{else}}\\n <Hds::Pagination::Nav::Number\\n @page={{page}}\\n @route={{this.routing.route}}\\n @query={{get this.routing.queryPages page}}\\n @model={{this.routing.model}}\\n @models={{this.routing.models}}\\n @replace={{this.routing.replace}}\\n @onClick={{this.onPageChange}}\\n @isSelected={{if (eq page this.currentPage) true false}}\\n />\\n {{/if}}\\n </li>\\n {{/each}}\\n </ul>\\n {{/if}}\\n <Hds::Pagination::Nav::Arrow\\n @direction=\\\"next\\\"\\n @showLabel={{this.showLabels}}\\n @route={{this.routing.route}}\\n @query={{this.routing.queryNext}}\\n @model={{this.routing.model}}\\n @models={{this.routing.models}}\\n @replace={{this.routing.replace}}\\n @onClick={{this.onPageChange}}\\n @disabled={{this.isDisabledNext}}\\n />\\n </nav>\\n\\n {{#if this.showSizeSelector}}\\n <Hds::Pagination::SizeSelector\\n @pageSizes={{this.pageSizes}}\\n @label={{@sizeSelectorLabel}}\\n @selectedSize={{this.currentPageSize}}\\n @onChange={{this.onPageSizeChange}}\\n />\\n {{/if}}\\n</div>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\n\n// for context about the decision to use these values, see:\n// https://hashicorp.slack.com/archives/C03A0N1QK8S/p1673546329082759\nexport const DEFAULT_PAGE_SIZES = [10, 30, 50];\n\n/**\n * Elliptize a list of pages\n *\n * @param pages - array with all the \"pages\" (integer numbers)\n * @param current - \"current\" page (array's index)\n * @param limit - number of \"page numbers\" to be shown at a time (should always be an odd number!)\n *\n * @return - array of integers (\"pages\") + `...` strings (\"ellipsis\")\n */\nexport const elliptize = ({ pages, current, limit = 7 }) => {\n const length = pages.length;\n const ellipsis = '…';\n let result = [];\n let start;\n let end;\n\n if (length <= limit) {\n return pages;\n }\n\n if (current <= length / 2) {\n start = Math.ceil(limit / 2);\n end = limit - start;\n } else {\n end = Math.ceil(limit / 2);\n start = limit - end;\n }\n\n const sliceStart = pages.slice(0, start);\n const sliceEnd = pages.slice(-end);\n\n if (sliceStart.includes(current) && sliceStart.includes(current + 1)) {\n // \"current\" (and its next sibling) is contained within the \"sliceStart\" block\n sliceEnd.splice(0, 1, ellipsis);\n result = [].concat(sliceStart, sliceEnd);\n } else if (sliceEnd.includes(current - 1) && sliceEnd.includes(current)) {\n // \"current\" (and its prev sibling) is contained within the \"sliceEnd\" block\n sliceStart.splice(-1, 1, ellipsis);\n result = [].concat(sliceStart, sliceEnd);\n } else {\n // this is a bit more tricky :)\n // we need to calculate how many items there are before/after the current item\n // since both the initial and ending blocks are always 2 items long (number + ellipsis)\n // and there is always the \"current\" item, we can just subtract 5 from the limit\n const delta = (limit - 5) / 2; // this is why the limit needs to be an odd number\n // we slice the array starting at the \"current\" index, minus the delta, minus one because it's an array (zero-based)\n const sliceCurr = pages.slice(current - delta - 1, current + delta);\n result = [].concat(\n sliceStart.shift(),\n ellipsis,\n sliceCurr,\n ellipsis,\n sliceEnd.pop()\n );\n }\n\n return result;\n};\n\nexport default class HdsPaginationNumberedIndexComponent extends Component {\n // These two private variables are used to differentiate between\n // \"uncontrolled\" component (where the state is handled internally) and\n // \"controlled\" component (where the state is handled externally, by the consumer's code).\n // In the first case, these variables store the internal state of the component at any moment,\n // and their value is updated internally according to the user's interaction with the component.\n // In the second case, these variables store *only* the initial state of the component (coming from the arguments)\n // at rendering time, but from that moment on they're not updated anymore, no matter what interaction the user\n // has with the component (the state is controlled externally, eg. via query parameters)\n @tracked _currentPage = this.args.currentPage ?? 1;\n @tracked _currentPageSize = this.args.currentPageSize ?? this.pageSizes[0];\n @tracked isControlled;\n\n showInfo = this.args.showInfo ?? true; // if the \"info\" block is visible\n showLabels = this.args.showLabels ?? false; // if the labels for the \"prev/next\" controls are visible\n showSizeSelector = this.args.showSizeSelector ?? true; // if the \"size selector\" block is visible\n showPageNumbers = this.args.showPageNumbers ?? true; // if the \"page numbers\" block is visible\n isTruncated = this.args.isTruncated ?? true; // if the list of \"page numbers\" is truncated\n\n constructor() {\n super(...arguments);\n\n let { queryFunction } = this.args;\n\n // This component works in two different ways, depending if we need to support\n // routing through links (`LinkTo`) for the \"navigation controls\", or not.\n // If there's no routing then the component behaves as \"uncontrolled\"\n // (the state updates - eg to the \"currentPage\" and \"currentPageSize\"\n // are handled by its internal logic).\n // If instead the component needs to update the routing (and we infer this via the \"query\" arguments)\n // then the component behaves as \"controlled\", where the state is\n // initialized and updated using the arguments passed to it.\n\n if (queryFunction === undefined) {\n this.isControlled = false;\n } else {\n assert(\n '@queryFunction for \"Hds::Pagination::Numbered\" must be a function',\n typeof queryFunction === 'function'\n );\n assert(\n '@currentPage and @currentPageSize for \"Hds::Pagination::Numbered\" must be provided as numeric arguments when the pagination controls the routing',\n typeof this.args.currentPageSize === 'number' &&\n typeof this.args.currentPage === 'number'\n );\n this.isControlled = true;\n }\n\n assert(\n '@totalItems for \"Hds::Pagination::Numbered\" must be defined as an integer number',\n typeof this.args.totalItems === 'number'\n );\n }\n\n /**\n * @param ariaLabel\n * @type {string}\n * @default 'Pagination'\n */\n get ariaLabel() {\n return this.args.ariaLabel ?? 'Pagination';\n }\n\n // This very specific `get/set` pattern is used to handle the two different use cases of the component\n // being \"controlled\" (when it has routing, meaning it needs to support pagination controls as links/`LinkTo`)\n // vs being \"uncontrolled\" (see comments above for details).\n //\n // If it has routing (and so it's \"controlled\"), than the value (\"state\") of the `currentPage/currentPageSize` variables\n // is *always* determined by the controller via arguments (most of the times, connected to query parameters in the URL).\n // For this reason the \"get\" method always returns the value from the `args`,\n // while the \"set\" method never updates the private internal state (_variable).\n //\n // If instead it doesn't have routing (and so it's \"uncontrolled\") than the value (\"state\") of the `currentPage/currentPageSize` variables\n // is *always* determined by the component's internal logic (and updated according to the user interaction with it).\n // For this reason the \"get\" and \"set\" methods always read from or write to the private internal state (_variable).\n\n get currentPage() {\n if (this.isControlled) {\n return this.args.currentPage;\n } else {\n return this._currentPage;\n }\n }\n\n set currentPage(value) {\n if (this.isControlled) {\n // noop\n } else {\n this._currentPage = value;\n }\n }\n\n get currentPageSize() {\n if (this.isControlled) {\n return this.args.currentPageSize;\n } else {\n return this._currentPageSize;\n }\n }\n\n set currentPageSize(value) {\n if (this.isControlled) {\n // noop\n } else {\n this._currentPageSize = value;\n }\n }\n\n /**\n * @param pageSizes\n * @type {array of numbers}\n * @description Set the page sizes users can select from.\n * @default [10, 30, 50]\n */\n get pageSizes() {\n let { pageSizes = DEFAULT_PAGE_SIZES } = this.args;\n\n assert(\n `pageSizes argument must be an array. Received: ${pageSizes}`,\n Array.isArray(pageSizes) === true\n );\n\n return pageSizes;\n }\n\n get itemsRangeStart() {\n // Calculate the starting range of items displayed on current page\n // if currentPage = 1st page and # of items per page is 10:\n // ( (1 - 1 = 0) * 10 = 0 ) + 1 = 1\n // if current page = 2nd page:\n // ( (2 - 1 = 1) * 10 = 10 ) + 1 = 11\n return (this.currentPage - 1) * this.currentPageSize + 1;\n }\n\n get itemsRangeEnd() {\n // Calculate ending range of items displayed on current page\n // 2 cases: 1) full page of items or 2) last page of items\n if (this.currentPage * this.currentPageSize < this.args.totalItems) {\n // 1) full page of items (pages 1 to page before last):\n return this.itemsRangeStart + this.currentPageSize - 1;\n } else {\n // 2) last page of items:\n return this.args.totalItems;\n }\n }\n\n get pages() {\n let pages = [];\n\n for (let i = 1; i <= this.totalPages; i++) {\n pages.push(i);\n }\n\n if (this.isTruncated) {\n return elliptize({ pages, current: this.currentPage });\n } else {\n return pages;\n }\n }\n\n get totalPages() {\n return Math.max(Math.ceil(this.args.totalItems / this.currentPageSize), 1);\n }\n\n buildQueryParamsObject(page, pageSize) {\n if (this.isControlled) {\n return this.args.queryFunction(page, pageSize);\n } else {\n return {};\n }\n }\n\n get routing() {\n let routing = {\n route: this.args.route ?? undefined,\n model: this.args.model ?? undefined,\n models: this.args.models ?? undefined,\n replace: this.args.replace ?? undefined,\n };\n\n // the \"query\" is dynamic and needs to be calculated\n if (this.isControlled) {\n routing.queryPrev = this.buildQueryParamsObject(\n this.currentPage - 1,\n this.currentPageSize\n );\n routing.queryNext = this.buildQueryParamsObject(\n this.currentPage + 1,\n this.currentPageSize\n );\n // IMPORTANT: here we need to use an object and not an array\n // otherwise the {{get object page}} will be shifted by one\n // (the pages are 1-based while the array would be zero-based)\n routing.queryPages = {};\n this.pages.forEach(\n (page) =>\n (routing.queryPages[page] = this.buildQueryParamsObject(\n page,\n this.currentPageSize\n ))\n );\n } else {\n routing.queryPrev = undefined;\n routing.queryNext = undefined;\n routing.queryByPage = {};\n }\n\n return routing;\n }\n\n get isDisabledPrev() {\n return this.currentPage === 1;\n }\n\n get isDisabledNext() {\n return this.currentPage === this.totalPages;\n }\n\n @action\n onPageChange(page) {\n let gotoPageNumber;\n if (page === 'prev' && this.currentPage > 1) {\n gotoPageNumber = this.currentPage - 1;\n } else if (page === 'next' && this.currentPage < this.totalPages) {\n gotoPageNumber = this.currentPage + 1;\n } else {\n gotoPageNumber = page;\n }\n\n // we want to invoke the `onPageChange` callback only on actual page change\n if (gotoPageNumber !== this.currentPage) {\n this.currentPage = gotoPageNumber;\n\n let { onPageChange } = this.args;\n\n if (typeof onPageChange === 'function') {\n onPageChange(this.currentPage, this.currentPageSize);\n }\n }\n }\n\n @action\n onPageSizeChange(newPageSize) {\n let { onPageSizeChange } = this.args;\n\n if (!this.isControlled) {\n // notice: we agreed to reset the pagination to the first element (any alternative would result in an unpredictable UX)\n this.currentPage = 1;\n this.currentPageSize = newPageSize;\n }\n\n // invoke the callback function\n if (typeof onPageSizeChange === 'function') {\n onPageSizeChange(newPageSize);\n }\n }\n}\n"],"names":["DEFAULT_PAGE_SIZES","elliptize","pages","current","limit","length","ellipsis","result","start","end","Math","ceil","sliceStart","slice","sliceEnd","includes","splice","concat","delta","sliceCurr","shift","pop","HdsPaginationNumberedIndexComponent","_class","Component","constructor","arguments","_initializerDefineProperty","_descriptor","_descriptor2","_descriptor3","_defineProperty","args","showInfo","showLabels","showSizeSelector","showPageNumbers","isTruncated","queryFunction","undefined","isControlled","assert","currentPageSize","currentPage","totalItems","ariaLabel","_currentPage","value","_currentPageSize","pageSizes","Array","isArray","itemsRangeStart","itemsRangeEnd","i","totalPages","push","max","buildQueryParamsObject","page","pageSize","routing","route","model","models","replace","queryPrev","queryNext","queryPages","forEach","queryByPage","isDisabledPrev","isDisabledNext","onPageChange","gotoPageNumber","onPageSizeChange","newPageSize","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _ as _applyDecoratedDescriptor, a as _defineProperty } from '../../../../_rollupPluginBabelHelpers-NoJJJNhk.js';
|
|
2
2
|
import Component from '@glimmer/component';
|
|
3
3
|
import { assert } from '@ember/debug';
|
|
4
4
|
import { guidFor } from '@ember/object/internals';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/hds/pagination/size-selector/index.hbs","../../../../../src/components/hds/pagination/size-selector/index.js"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{! @glint-nocheck: not typesafe yet }}\\n{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<div class=\\\"hds-pagination-size-selector\\\" ...attributes>\\n <label class=\\\"hds-typography-body-100 hds-font-weight-medium\\\" for={{this.SizeSelectorId}}>\\n {{this.label}}\\n </label>\\n <Hds::Form::Select::Base id={{this.SizeSelectorId}} {{on \\\"change\\\" this.onChange}} as |S|>\\n <S.Options>\\n {{#each this.pageSizes as |size|}}\\n <option value={{size}} selected={{if (eq size this.selectedSize) true null}}>{{size}}</option>\\n {{/each}}\\n </S.Options>\\n </Hds::Form::Select::Base>\\n</div>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { guidFor } from '@ember/object/internals';\nimport { action } from '@ember/object';\n\nexport default class HdsPaginationSizeSelectorComponent extends Component {\n /**\n * Generates a unique ID for the pageSize select\n *\n * @param SizeSelectorId\n */\n SizeSelectorId = 'pagination-size-selector-' + guidFor(this);\n\n /**\n * @param pageSizes\n * @type {array of numbers}\n * @description Set the page sizes users can select from.\n */\n get pageSizes() {\n let { pageSizes } = this.args;\n\n assert(\n '@pageSizes for \"Pagination::SizeSelector\" must be defined',\n pageSizes !== undefined\n );\n\n return pageSizes;\n }\n\n /**\n * @param selectedSize\n * @type integer\n * @description The selected (\"current\") page size\n */\n get selectedSize() {\n let { selectedSize } = this.args;\n\n assert(\n `@selectedSize for \"Pagination::SizeSelector\" must one of the @pageSizes provided (${this.pageSizes.join(\n ','\n )}), received ${selectedSize}`,\n selectedSize === undefined || this.pageSizes.includes(selectedSize)\n );\n\n return selectedSize;\n }\n\n /**\n * @param label\n * @type string\n * @default \"Items per page\"\n * @description The label text for the select\n */\n get label() {\n let { label = 'Items per page' } = this.args;\n\n return label;\n }\n\n @action\n onChange(e) {\n let { onChange } = this.args;\n\n if (typeof onChange === 'function') {\n onChange(parseInt(e.target.value));\n }\n }\n}\n"],"names":["HdsPaginationSizeSelectorComponent","_class","Component","constructor","args","_defineProperty","guidFor","pageSizes","assert","undefined","selectedSize","join","includes","label","onChange","e","parseInt","target","value","_applyDecoratedDescriptor","prototype","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;AACA,eAAe,kBAAkB,CAAC,8nBAA8nB;;;ACS3oBA,IAAAA,kCAAkC,IAAAC,MAAA,GAAxC,MAAMD,kCAAkC,SAASE,SAAS,CAAC;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AACxE;AACF;AACA;AACA;AACA;AAJEC,IAAAA,eAAA,yBAKiB,2BAA2B,GAAGC,OAAO,CAAC,IAAI,CAAC,CAAA,CAAA;AAAA,GAAA;AAE5D;AACF;AACA;AACA;AACA;EACE,IAAIC,SAASA,GAAG;IACd,IAAI;AAAEA,MAAAA,SAAAA;KAAW,GAAG,IAAI,CAACH,IAAI,CAAA;AAE7BI,IAAAA,MAAM,CACJ,2DAA2D,EAC3DD,SAAS,KAAKE,SAChB,CAAC,CAAA;AAED,IAAA,OAAOF,SAAS,CAAA;AAClB,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIG,YAAYA,GAAG;IACjB,IAAI;AAAEA,MAAAA,YAAAA;KAAc,GAAG,IAAI,CAACN,IAAI,CAAA;IAEhCI,MAAM,CACH,CAAoF,kFAAA,EAAA,IAAI,CAACD,SAAS,CAACI,IAAI,CACtG,GACF,CAAE,CAAA,YAAA,EAAcD,YAAa,CAAA,CAAC,EAC9BA,YAAY,KAAKD,SAAS,IAAI,IAAI,CAACF,SAAS,CAACK,QAAQ,CAACF,YAAY,CACpE,CAAC,CAAA;AAED,IAAA,OAAOA,YAAY,CAAA;AACrB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,IAAIG,KAAKA,GAAG;IACV,IAAI;AAAEA,MAAAA,KAAK,GAAG,gBAAA;KAAkB,GAAG,IAAI,CAACT,IAAI,CAAA;AAE5C,IAAA,OAAOS,KAAK,CAAA;AACd,GAAA;EAGAC,QAAQA,CAACC,CAAC,EAAE;IACV,IAAI;AAAED,MAAAA,QAAAA;KAAU,GAAG,IAAI,CAACV,IAAI,CAAA;AAE5B,IAAA,IAAI,OAAOU,QAAQ,KAAK,UAAU,EAAE;MAClCA,QAAQ,CAACE,QAAQ,CAACD,CAAC,CAACE,MAAM,CAACC,KAAK,CAAC,CAAC,CAAA;AACpC,KAAA;AACF,GAAA;AACF,CAAC,GAAAC,yBAAA,CAAAlB,MAAA,CAAAmB,SAAA,EAAA,UAAA,EAAA,CAREC,MAAM,CAAAC,EAAAA,MAAA,CAAAC,wBAAA,CAAAtB,MAAA,CAAAmB,SAAA,eAAAnB,MAAA,CAAAmB,SAAA,CAAA,GAAAnB,MAAA,EAAA;AAtD8CuB,oBAAA,CAAAC,QAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/hds/pagination/size-selector/index.hbs","../../../../../src/components/hds/pagination/size-selector/index.js"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{! @glint-nocheck: not typesafe yet }}\\n{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<div class=\\\"hds-pagination-size-selector\\\" ...attributes>\\n <label class=\\\"hds-typography-body-100 hds-font-weight-medium\\\" for={{this.SizeSelectorId}}>\\n {{this.label}}\\n </label>\\n <Hds::Form::Select::Base id={{this.SizeSelectorId}} {{on \\\"change\\\" this.onChange}} as |S|>\\n <S.Options>\\n {{#each this.pageSizes as |size|}}\\n <option value={{size}} selected={{if (eq size this.selectedSize) true null}}>{{size}}</option>\\n {{/each}}\\n </S.Options>\\n </Hds::Form::Select::Base>\\n</div>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { guidFor } from '@ember/object/internals';\nimport { action } from '@ember/object';\n\nexport default class HdsPaginationSizeSelectorComponent extends Component {\n /**\n * Generates a unique ID for the pageSize select\n *\n * @param SizeSelectorId\n */\n SizeSelectorId = 'pagination-size-selector-' + guidFor(this);\n\n /**\n * @param pageSizes\n * @type {array of numbers}\n * @description Set the page sizes users can select from.\n */\n get pageSizes() {\n let { pageSizes } = this.args;\n\n assert(\n '@pageSizes for \"Pagination::SizeSelector\" must be defined',\n pageSizes !== undefined\n );\n\n return pageSizes;\n }\n\n /**\n * @param selectedSize\n * @type integer\n * @description The selected (\"current\") page size\n */\n get selectedSize() {\n let { selectedSize } = this.args;\n\n assert(\n `@selectedSize for \"Pagination::SizeSelector\" must one of the @pageSizes provided (${this.pageSizes.join(\n ','\n )}), received ${selectedSize}`,\n selectedSize === undefined || this.pageSizes.includes(selectedSize)\n );\n\n return selectedSize;\n }\n\n /**\n * @param label\n * @type string\n * @default \"Items per page\"\n * @description The label text for the select\n */\n get label() {\n let { label = 'Items per page' } = this.args;\n\n return label;\n }\n\n @action\n onChange(e) {\n let { onChange } = this.args;\n\n if (typeof onChange === 'function') {\n onChange(parseInt(e.target.value));\n }\n }\n}\n"],"names":["HdsPaginationSizeSelectorComponent","_class","Component","constructor","args","_defineProperty","guidFor","pageSizes","assert","undefined","selectedSize","join","includes","label","onChange","e","parseInt","target","value","_applyDecoratedDescriptor","prototype","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;AACA,eAAe,kBAAkB,CAAC,8nBAA8nB;;;ACS3oBA,IAAAA,kCAAkC,IAAAC,MAAA,GAAxC,MAAMD,kCAAkC,SAASE,SAAS,CAAC;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AACxE;AACF;AACA;AACA;AACA;AAJEC,IAAAA,eAAA,yBAKiB,2BAA2B,GAAGC,OAAO,CAAC,IAAI,CAAC,CAAA,CAAA;AAAA,GAAA;AAE5D;AACF;AACA;AACA;AACA;EACE,IAAIC,SAASA,GAAG;IACd,IAAI;AAAEA,MAAAA,SAAAA;KAAW,GAAG,IAAI,CAACH,IAAI,CAAA;AAE7BI,IAAAA,MAAM,CACJ,2DAA2D,EAC3DD,SAAS,KAAKE,SAChB,CAAC,CAAA;AAED,IAAA,OAAOF,SAAS,CAAA;AAClB,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIG,YAAYA,GAAG;IACjB,IAAI;AAAEA,MAAAA,YAAAA;KAAc,GAAG,IAAI,CAACN,IAAI,CAAA;IAEhCI,MAAM,CACH,CAAoF,kFAAA,EAAA,IAAI,CAACD,SAAS,CAACI,IAAI,CACtG,GACF,CAAE,CAAA,YAAA,EAAcD,YAAa,CAAA,CAAC,EAC9BA,YAAY,KAAKD,SAAS,IAAI,IAAI,CAACF,SAAS,CAACK,QAAQ,CAACF,YAAY,CACpE,CAAC,CAAA;AAED,IAAA,OAAOA,YAAY,CAAA;AACrB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,IAAIG,KAAKA,GAAG;IACV,IAAI;AAAEA,MAAAA,KAAK,GAAG,gBAAA;KAAkB,GAAG,IAAI,CAACT,IAAI,CAAA;AAE5C,IAAA,OAAOS,KAAK,CAAA;AACd,GAAA;EAGAC,QAAQA,CAACC,CAAC,EAAE;IACV,IAAI;AAAED,MAAAA,QAAAA;KAAU,GAAG,IAAI,CAACV,IAAI,CAAA;AAE5B,IAAA,IAAI,OAAOU,QAAQ,KAAK,UAAU,EAAE;MAClCA,QAAQ,CAACE,QAAQ,CAACD,CAAC,CAACE,MAAM,CAACC,KAAK,CAAC,CAAC,CAAA;AACpC,KAAA;AACF,GAAA;AACF,CAAC,GAAAC,yBAAA,CAAAlB,MAAA,CAAAmB,SAAA,EAAA,UAAA,EAAA,CAREC,MAAM,CAAAC,EAAAA,MAAA,CAAAC,wBAAA,CAAAtB,MAAA,CAAAmB,SAAA,eAAAnB,MAAA,CAAAmB,SAAA,CAAA,GAAAnB,MAAA,EAAA;AAtD8CuB,oBAAA,CAAAC,QAAA,EAAlCzB,kCAAkC,CAAA;;;;"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { _ as _applyDecoratedDescriptor, b as _initializerDefineProperty, a as _defineProperty } from '../../../_rollupPluginBabelHelpers-NoJJJNhk.js';
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { action } from '@ember/object';
|
|
5
|
+
import { assert, warn } from '@ember/debug';
|
|
6
|
+
import { next } from '@ember/runloop';
|
|
7
|
+
import { guidFor } from '@ember/object/internals';
|
|
8
|
+
import { modifier } from 'ember-modifier';
|
|
9
|
+
import registerEvent from '../../../modifiers/hds-register-event.js';
|
|
10
|
+
import anchoredPositionModifier from '../../../modifiers/hds-anchored-position.js';
|
|
11
|
+
export { DEFAULT_PLACEMENT, PLACEMENTS } from '../../../modifiers/hds-anchored-position.js';
|
|
12
|
+
import { isSupported, isPolyfilled, apply } from '@oddbird/popover-polyfill/fn';
|
|
13
|
+
import { precompileTemplate } from '@ember/template-compilation';
|
|
14
|
+
import { setComponentTemplate } from '@ember/component';
|
|
15
|
+
|
|
16
|
+
var TEMPLATE = precompileTemplate("{{! @glint-nocheck: not typesafe yet }}\n{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n{{yield\n (hash\n setupPrimitiveContainer=this.setupPrimitiveContainer\n setupPrimitiveToggle=this.setupPrimitiveToggle\n setupPrimitivePopover=this.setupPrimitivePopover\n toggleElement=this.toggleElement\n arrowElement=this.arrowElement\n popoverElement=this.popoverElement\n isOpen=this.isOpen\n showPopover=this.showPopover\n hidePopover=this.hidePopover\n togglePopover=this.togglePopover\n )\n}}");
|
|
17
|
+
|
|
18
|
+
var _class, _descriptor, _descriptor2;
|
|
19
|
+
let HdsPopoverPrimitiveComponent = (_class = class HdsPopoverPrimitiveComponent extends Component {
|
|
20
|
+
constructor() {
|
|
21
|
+
super(...arguments);
|
|
22
|
+
|
|
23
|
+
// if the Popover API is not supported we need to polyfill it
|
|
24
|
+
_initializerDefineProperty(this, "isOpen", _descriptor, this);
|
|
25
|
+
_initializerDefineProperty(this, "isClosing", _descriptor2, this);
|
|
26
|
+
// this will enable "soft" events for the toggle ("hover" and "focus")
|
|
27
|
+
_defineProperty(this, "enableSoftEvents", this.args.enableSoftEvents ?? false);
|
|
28
|
+
// this will enable "click" events for the toggle
|
|
29
|
+
_defineProperty(this, "enableClickEvents", this.args.enableClickEvents ?? false);
|
|
30
|
+
_defineProperty(this, "setupPrimitiveContainer", modifier(element => {
|
|
31
|
+
this.containerElement = element;
|
|
32
|
+
|
|
33
|
+
// we register the "soft" events
|
|
34
|
+
if (this.enableSoftEvents) {
|
|
35
|
+
registerEvent(this.containerElement, ['mouseenter', this.onMouseEnter]);
|
|
36
|
+
registerEvent(this.containerElement, ['mouseleave', this.onMouseLeave]);
|
|
37
|
+
registerEvent(this.containerElement, ['focusin', this.onFocusIn]);
|
|
38
|
+
}
|
|
39
|
+
// we always want the focusOut event
|
|
40
|
+
registerEvent(this.containerElement, ['focusout', this.onFocusOut]);
|
|
41
|
+
}, {
|
|
42
|
+
eager: true
|
|
43
|
+
}));
|
|
44
|
+
_defineProperty(this, "setupPrimitiveToggle", modifier(element => {
|
|
45
|
+
this.toggleElement = element;
|
|
46
|
+
assert(`The toggle element of "Hds::PopoverPrimitive" must be a <button>; element received: <${element.tagName.toLowerCase()}>`, element instanceof HTMLButtonElement);
|
|
47
|
+
}, {
|
|
48
|
+
eager: true
|
|
49
|
+
}));
|
|
50
|
+
_defineProperty(this, "setupPrimitivePopover", modifier((element, _positional, named = {}) => {
|
|
51
|
+
this.popoverElement = element;
|
|
52
|
+
|
|
53
|
+
// for the click events we don't use `onclick` event listeners, but we rely on the `popovertarget` attribute
|
|
54
|
+
// provided by the Popover API which does all the magic for us without needing JS code
|
|
55
|
+
// (important: to work it needs to be applied to a button)
|
|
56
|
+
if (this.enableClickEvents) {
|
|
57
|
+
let popoverId;
|
|
58
|
+
if (this.popoverElement.id) {
|
|
59
|
+
popoverId = this.popoverElement.id;
|
|
60
|
+
} else {
|
|
61
|
+
// we need a DOM id for the `popovertarget` attribute
|
|
62
|
+
popoverId = guidFor(this);
|
|
63
|
+
this.popoverElement.id = popoverId;
|
|
64
|
+
}
|
|
65
|
+
this.toggleElement.setAttribute('popovertarget', popoverId);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// this should be an extremely edge case, but in the case the popover needs to be initially forced to be open
|
|
69
|
+
// we need to use the "manual" state to support the case of multiple "menus" opened at the same time
|
|
70
|
+
// IMPORTANT! if a "popover" is set to "open" with a "manual" state, then it can't be closed via `esc` and `click outside`
|
|
71
|
+
if (this.args.isOpen) {
|
|
72
|
+
this.popoverElement.popover = 'manual';
|
|
73
|
+
this.popoverElement.showPopover();
|
|
74
|
+
} else {
|
|
75
|
+
this.popoverElement.popover = 'auto';
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Register "onBeforeToggle" + "onToggle" callback functions to be called when a native 'toggle' event is dispatched
|
|
79
|
+
registerEvent(this.popoverElement, ['beforetoggle', this.onBeforeTogglePopover]);
|
|
80
|
+
registerEvent(this.popoverElement, ['toggle', this.onTogglePopover]);
|
|
81
|
+
|
|
82
|
+
// we need to spread the argument because if it's set via `{{ hash … }}` Ember complains when we overwrite one of its values
|
|
83
|
+
const anchoredPositionOptions = {
|
|
84
|
+
...named.anchoredPositionOptions
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
// we overwrite the "strategy" if the Popover API is not supported (polyfill applied for the first time) of it's already been polyfilled (see above)
|
|
88
|
+
// this is specifically done for Firefox: currently it doesn't support it, but will soon (we need Firefox 127 to support the last 2 versions)
|
|
89
|
+
// see: https://wiki.mozilla.org/Release_Management/Release_owners
|
|
90
|
+
if (!isSupported() || isPolyfilled()) {
|
|
91
|
+
// when using the "absolute" strategy, the presence of a parent with "relative" position leads to wrong layout rendering (known issue in the polyfill library)
|
|
92
|
+
// see: https://github.com/oddbird/popover-polyfill/tree/main?tab=readme-ov-file#caveats
|
|
93
|
+
anchoredPositionOptions.strategy = 'fixed';
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Apply the `hds-anchored-position` modifier to the "popover" element
|
|
97
|
+
// (notice: this function runs the first time when the element the modifier was applied to is inserted into the DOM, and it autotracks while running.
|
|
98
|
+
// Any tracked values that it accesses will be tracked, including the arguments it receives, and if any of them changes, the function will run again)
|
|
99
|
+
// This modifiers uses the Floating UI library to provide:
|
|
100
|
+
// - positioning of the "popover" in relation to the "toggle"
|
|
101
|
+
// - collision detection (optional)
|
|
102
|
+
next(() => {
|
|
103
|
+
anchoredPositionModifier(this.popoverElement,
|
|
104
|
+
// element the modifier is attached to
|
|
105
|
+
[this.toggleElement],
|
|
106
|
+
// positional arguments
|
|
107
|
+
anchoredPositionOptions // named arguments
|
|
108
|
+
);
|
|
109
|
+
});
|
|
110
|
+
}, {
|
|
111
|
+
eager: true
|
|
112
|
+
}));
|
|
113
|
+
if (!isSupported()) {
|
|
114
|
+
warn("The browser used does not support the Popover API so it's been emulated and some functionalities may not work as expected.", {
|
|
115
|
+
id: 'hds-popover.no-popover-api-support.polyfill-applied'
|
|
116
|
+
});
|
|
117
|
+
// this function polyfills quite a few DOM methods and adds emulation for the Popover API
|
|
118
|
+
// see: https://github.com/oddbird/popover-polyfill/blob/main/src/popover.ts#L123
|
|
119
|
+
apply();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
showPopover() {
|
|
123
|
+
try {
|
|
124
|
+
this.popoverElement.showPopover();
|
|
125
|
+
} catch (error) {
|
|
126
|
+
warn('The invocation of `showPopover` for the popover element caused an unexpected error.', {
|
|
127
|
+
id: 'hds-popover.show-popover-action.invocation-failed',
|
|
128
|
+
error: error
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
hidePopover() {
|
|
133
|
+
try {
|
|
134
|
+
this.popoverElement.hidePopover();
|
|
135
|
+
} catch (error) {
|
|
136
|
+
warn('The invocation of `hidePopover` for the popover element caused an unexpected error.', {
|
|
137
|
+
id: 'hds-popover.hide-popover-action.invocation-failed',
|
|
138
|
+
error: error
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
togglePopover() {
|
|
143
|
+
try {
|
|
144
|
+
this.popoverElement.togglePopover();
|
|
145
|
+
} catch (error) {
|
|
146
|
+
warn('The invocation of `togglePopover` for the popover element caused an unexpected error.', {
|
|
147
|
+
id: 'hds-popover.toggle-popover-action.invocation-failed',
|
|
148
|
+
error: error
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// fired just _before_ the "popover" is shown or hidden
|
|
154
|
+
onBeforeTogglePopover(event) {
|
|
155
|
+
if (event.newState === 'closed') {
|
|
156
|
+
// we need this flag to check if it's in the "closing" process,
|
|
157
|
+
// because the browser automatically returns the focus to the "trigger" button
|
|
158
|
+
// and this would re-open immediately the popover because of the `focusin` event
|
|
159
|
+
this.isClosing = true;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// fired just _after_ the "popover" is shown or hidden
|
|
164
|
+
onTogglePopover(event) {
|
|
165
|
+
if (event.newState === 'open') {
|
|
166
|
+
this.isOpen = true;
|
|
167
|
+
|
|
168
|
+
// we call the "onOpen" callback if it exists (and is a function)
|
|
169
|
+
let {
|
|
170
|
+
onOpen
|
|
171
|
+
} = this.args;
|
|
172
|
+
if (typeof onOpen === 'function') {
|
|
173
|
+
onOpen();
|
|
174
|
+
}
|
|
175
|
+
} else {
|
|
176
|
+
this.isOpen = false;
|
|
177
|
+
|
|
178
|
+
// reset the "isClosing" flag (the `toggle` event is fired _after_ the popover is closed)
|
|
179
|
+
this.isClosing = false;
|
|
180
|
+
|
|
181
|
+
// if the popover was initially forced to be open (using the "manual" state) then revert its status to `auto` once the user interacts with it
|
|
182
|
+
if (this.args.isOpen) {
|
|
183
|
+
this.popoverElement.popover = 'auto';
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// we call the "onClose" callback if it exists (and is a function)
|
|
187
|
+
let {
|
|
188
|
+
onClose
|
|
189
|
+
} = this.args;
|
|
190
|
+
if (typeof onClose === 'function') {
|
|
191
|
+
onClose();
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
onMouseEnter() {
|
|
196
|
+
if (this.timer) {
|
|
197
|
+
clearTimeout(this.timer);
|
|
198
|
+
}
|
|
199
|
+
this.showPopover();
|
|
200
|
+
}
|
|
201
|
+
onFocusIn() {
|
|
202
|
+
// don't re-open the popover if the focus is returned because the closing
|
|
203
|
+
if (!this.isClosing) {
|
|
204
|
+
if (this.timer) {
|
|
205
|
+
clearTimeout(this.timer);
|
|
206
|
+
}
|
|
207
|
+
this.showPopover();
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
onMouseLeave() {
|
|
211
|
+
this.timer = setTimeout(() => this.hidePopover(), 500);
|
|
212
|
+
}
|
|
213
|
+
onFocusOut(event) {
|
|
214
|
+
// due to inconsistent implementation of relatedTarget across browsers we use the activeElement as a fallback
|
|
215
|
+
// if the related target is not part of the disclosed content we close the disclosed container
|
|
216
|
+
if (!this.containerElement.contains(event.relatedTarget || document.activeElement)) {
|
|
217
|
+
this.hidePopover();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}, (_descriptor = _applyDecoratedDescriptor(_class.prototype, "isOpen", [tracked], {
|
|
221
|
+
configurable: true,
|
|
222
|
+
enumerable: true,
|
|
223
|
+
writable: true,
|
|
224
|
+
initializer: function () {
|
|
225
|
+
return this.args.isOpen ?? false;
|
|
226
|
+
}
|
|
227
|
+
}), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, "isClosing", [tracked], {
|
|
228
|
+
configurable: true,
|
|
229
|
+
enumerable: true,
|
|
230
|
+
writable: true,
|
|
231
|
+
initializer: function () {
|
|
232
|
+
return false;
|
|
233
|
+
}
|
|
234
|
+
}), _applyDecoratedDescriptor(_class.prototype, "showPopover", [action], Object.getOwnPropertyDescriptor(_class.prototype, "showPopover"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "hidePopover", [action], Object.getOwnPropertyDescriptor(_class.prototype, "hidePopover"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "togglePopover", [action], Object.getOwnPropertyDescriptor(_class.prototype, "togglePopover"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "onBeforeTogglePopover", [action], Object.getOwnPropertyDescriptor(_class.prototype, "onBeforeTogglePopover"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "onTogglePopover", [action], Object.getOwnPropertyDescriptor(_class.prototype, "onTogglePopover"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "onMouseEnter", [action], Object.getOwnPropertyDescriptor(_class.prototype, "onMouseEnter"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "onFocusIn", [action], Object.getOwnPropertyDescriptor(_class.prototype, "onFocusIn"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "onMouseLeave", [action], Object.getOwnPropertyDescriptor(_class.prototype, "onMouseLeave"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "onFocusOut", [action], Object.getOwnPropertyDescriptor(_class.prototype, "onFocusOut"), _class.prototype)), _class);
|
|
235
|
+
setComponentTemplate(TEMPLATE, HdsPopoverPrimitiveComponent);
|
|
236
|
+
|
|
237
|
+
export { HdsPopoverPrimitiveComponent as default };
|
|
238
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/popover-primitive/index.hbs","../../../../src/components/hds/popover-primitive/index.js"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{! @glint-nocheck: not typesafe yet }}\\n{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n{{yield\\n (hash\\n setupPrimitiveContainer=this.setupPrimitiveContainer\\n setupPrimitiveToggle=this.setupPrimitiveToggle\\n setupPrimitivePopover=this.setupPrimitivePopover\\n toggleElement=this.toggleElement\\n arrowElement=this.arrowElement\\n popoverElement=this.popoverElement\\n isOpen=this.isOpen\\n showPopover=this.showPopover\\n hidePopover=this.hidePopover\\n togglePopover=this.togglePopover\\n )\\n}}\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { assert, warn } from '@ember/debug';\nimport { next } from '@ember/runloop';\nimport { guidFor } from '@ember/object/internals';\nimport { modifier } from 'ember-modifier';\n\nimport registerEvent from '../../../modifiers/hds-register-event';\nimport anchoredPositionModifier from '../../../modifiers/hds-anchored-position';\n\n// https://github.com/oddbird/popover-polyfill?tab=readme-ov-file#with-npm\n// this is needed until Firefox releases the version 126 (up to 125 didn't support the Popover API)\nimport {\n // this call polyfills some of the browser methods to emulate the Popover API\n apply as applyPopoverApiPolyfill,\n // we'll use these two flags to overwrite the popover positioning strategy\n // this is specifically done for Firefox (we need Firefox 126 to be released, to support the last 2 versions)\n // see: https://whattrainisitnow.com/release/?version=126\n isSupported as isPopoverApiSupported,\n isPolyfilled as isPopoverApiPolyfilled,\n} from '@oddbird/popover-polyfill/fn';\n\n// we use this to re-export the values\nexport {\n PLACEMENTS,\n DEFAULT_PLACEMENT,\n} from '../../../modifiers/hds-anchored-position';\n\nexport default class HdsPopoverPrimitiveComponent extends Component {\n @tracked isOpen = this.args.isOpen ?? false;\n @tracked isClosing = false;\n // this will enable \"soft\" events for the toggle (\"hover\" and \"focus\")\n enableSoftEvents = this.args.enableSoftEvents ?? false;\n // this will enable \"click\" events for the toggle\n enableClickEvents = this.args.enableClickEvents ?? false;\n\n constructor() {\n super(...arguments);\n\n // if the Popover API is not supported we need to polyfill it\n if (!isPopoverApiSupported()) {\n warn(\n \"The browser used does not support the Popover API so it's been emulated and some functionalities may not work as expected.\",\n {\n id: 'hds-popover.no-popover-api-support.polyfill-applied',\n }\n );\n // this function polyfills quite a few DOM methods and adds emulation for the Popover API\n // see: https://github.com/oddbird/popover-polyfill/blob/main/src/popover.ts#L123\n applyPopoverApiPolyfill();\n }\n }\n\n setupPrimitiveContainer = modifier(\n (element) => {\n this.containerElement = element;\n\n // we register the \"soft\" events\n if (this.enableSoftEvents) {\n registerEvent(this.containerElement, ['mouseenter', this.onMouseEnter]);\n registerEvent(this.containerElement, ['mouseleave', this.onMouseLeave]);\n registerEvent(this.containerElement, ['focusin', this.onFocusIn]);\n }\n // we always want the focusOut event\n registerEvent(this.containerElement, ['focusout', this.onFocusOut]);\n },\n { eager: true }\n );\n\n setupPrimitiveToggle = modifier(\n (element) => {\n this.toggleElement = element;\n\n assert(\n `The toggle element of \"Hds::PopoverPrimitive\" must be a <button>; element received: <${element.tagName.toLowerCase()}>`,\n element instanceof HTMLButtonElement\n );\n },\n { eager: true }\n );\n\n setupPrimitivePopover = modifier(\n (element, _positional, named = {}) => {\n this.popoverElement = element;\n\n // for the click events we don't use `onclick` event listeners, but we rely on the `popovertarget` attribute\n // provided by the Popover API which does all the magic for us without needing JS code\n // (important: to work it needs to be applied to a button)\n if (this.enableClickEvents) {\n let popoverId;\n if (this.popoverElement.id) {\n popoverId = this.popoverElement.id;\n } else {\n // we need a DOM id for the `popovertarget` attribute\n popoverId = guidFor(this);\n this.popoverElement.id = popoverId;\n }\n this.toggleElement.setAttribute('popovertarget', popoverId);\n }\n\n // this should be an extremely edge case, but in the case the popover needs to be initially forced to be open\n // we need to use the \"manual\" state to support the case of multiple \"menus\" opened at the same time\n // IMPORTANT! if a \"popover\" is set to \"open\" with a \"manual\" state, then it can't be closed via `esc` and `click outside`\n if (this.args.isOpen) {\n this.popoverElement.popover = 'manual';\n this.popoverElement.showPopover();\n } else {\n this.popoverElement.popover = 'auto';\n }\n\n // Register \"onBeforeToggle\" + \"onToggle\" callback functions to be called when a native 'toggle' event is dispatched\n registerEvent(this.popoverElement, [\n 'beforetoggle',\n this.onBeforeTogglePopover,\n ]);\n registerEvent(this.popoverElement, ['toggle', this.onTogglePopover]);\n\n // we need to spread the argument because if it's set via `{{ hash … }}` Ember complains when we overwrite one of its values\n const anchoredPositionOptions = { ...named.anchoredPositionOptions };\n\n // we overwrite the \"strategy\" if the Popover API is not supported (polyfill applied for the first time) of it's already been polyfilled (see above)\n // this is specifically done for Firefox: currently it doesn't support it, but will soon (we need Firefox 127 to support the last 2 versions)\n // see: https://wiki.mozilla.org/Release_Management/Release_owners\n if (!isPopoverApiSupported() || isPopoverApiPolyfilled()) {\n // when using the \"absolute\" strategy, the presence of a parent with \"relative\" position leads to wrong layout rendering (known issue in the polyfill library)\n // see: https://github.com/oddbird/popover-polyfill/tree/main?tab=readme-ov-file#caveats\n anchoredPositionOptions.strategy = 'fixed';\n }\n\n // Apply the `hds-anchored-position` modifier to the \"popover\" element\n // (notice: this function runs the first time when the element the modifier was applied to is inserted into the DOM, and it autotracks while running.\n // Any tracked values that it accesses will be tracked, including the arguments it receives, and if any of them changes, the function will run again)\n // This modifiers uses the Floating UI library to provide:\n // - positioning of the \"popover\" in relation to the \"toggle\"\n // - collision detection (optional)\n next(() => {\n anchoredPositionModifier(\n this.popoverElement, // element the modifier is attached to\n [this.toggleElement], // positional arguments\n anchoredPositionOptions // named arguments\n );\n });\n },\n { eager: true }\n );\n\n @action\n showPopover() {\n try {\n this.popoverElement.showPopover();\n } catch (error) {\n warn(\n 'The invocation of `showPopover` for the popover element caused an unexpected error.',\n {\n id: 'hds-popover.show-popover-action.invocation-failed',\n error: error,\n }\n );\n }\n }\n\n @action\n hidePopover() {\n try {\n this.popoverElement.hidePopover();\n } catch (error) {\n warn(\n 'The invocation of `hidePopover` for the popover element caused an unexpected error.',\n {\n id: 'hds-popover.hide-popover-action.invocation-failed',\n error: error,\n }\n );\n }\n }\n\n @action\n togglePopover() {\n try {\n this.popoverElement.togglePopover();\n } catch (error) {\n warn(\n 'The invocation of `togglePopover` for the popover element caused an unexpected error.',\n {\n id: 'hds-popover.toggle-popover-action.invocation-failed',\n error: error,\n }\n );\n }\n }\n\n // fired just _before_ the \"popover\" is shown or hidden\n @action\n onBeforeTogglePopover(event) {\n if (event.newState === 'closed') {\n // we need this flag to check if it's in the \"closing\" process,\n // because the browser automatically returns the focus to the \"trigger\" button\n // and this would re-open immediately the popover because of the `focusin` event\n this.isClosing = true;\n }\n }\n\n // fired just _after_ the \"popover\" is shown or hidden\n @action\n onTogglePopover(event) {\n if (event.newState === 'open') {\n this.isOpen = true;\n\n // we call the \"onOpen\" callback if it exists (and is a function)\n let { onOpen } = this.args;\n if (typeof onOpen === 'function') {\n onOpen();\n }\n } else {\n this.isOpen = false;\n\n // reset the \"isClosing\" flag (the `toggle` event is fired _after_ the popover is closed)\n this.isClosing = false;\n\n // if the popover was initially forced to be open (using the \"manual\" state) then revert its status to `auto` once the user interacts with it\n if (this.args.isOpen) {\n this.popoverElement.popover = 'auto';\n }\n\n // we call the \"onClose\" callback if it exists (and is a function)\n let { onClose } = this.args;\n if (typeof onClose === 'function') {\n onClose();\n }\n }\n }\n\n @action\n onMouseEnter() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.showPopover();\n }\n\n @action\n onFocusIn() {\n // don't re-open the popover if the focus is returned because the closing\n if (!this.isClosing) {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.showPopover();\n }\n }\n\n @action\n onMouseLeave() {\n this.timer = setTimeout(() => this.hidePopover(), 500);\n }\n\n @action\n onFocusOut(event) {\n // due to inconsistent implementation of relatedTarget across browsers we use the activeElement as a fallback\n // if the related target is not part of the disclosed content we close the disclosed container\n if (\n !this.containerElement.contains(\n event.relatedTarget || document.activeElement\n )\n ) {\n this.hidePopover();\n }\n }\n}\n"],"names":["HdsPopoverPrimitiveComponent","_class","Component","constructor","arguments","_initializerDefineProperty","_descriptor","_descriptor2","_defineProperty","args","enableSoftEvents","enableClickEvents","modifier","element","containerElement","registerEvent","onMouseEnter","onMouseLeave","onFocusIn","onFocusOut","eager","toggleElement","assert","tagName","toLowerCase","HTMLButtonElement","_positional","named","popoverElement","popoverId","id","guidFor","setAttribute","isOpen","popover","showPopover","onBeforeTogglePopover","onTogglePopover","anchoredPositionOptions","isPopoverApiSupported","isPopoverApiPolyfilled","strategy","next","anchoredPositionModifier","warn","applyPopoverApiPolyfill","error","hidePopover","togglePopover","event","newState","isClosing","onOpen","onClose","timer","clearTimeout","setTimeout","contains","relatedTarget","document","activeElement","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as _defineProperty } from '../../../_rollupPluginBabelHelpers-NoJJJNhk.js';
|
|
2
2
|
import Component from '@glimmer/component';
|
|
3
3
|
import { guidFor } from '@ember/object/internals';
|
|
4
4
|
import { assert } from '@ember/debug';
|
|
5
5
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
6
6
|
import { setComponentTemplate } from '@ember/component';
|
|
7
7
|
|
|
8
|
-
var TEMPLATE = precompileTemplate("{{
|
|
8
|
+
var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n\n<Hds::DisclosurePrimitive class=\"hds-reveal\" @isOpen={{@isOpen}} ...attributes>\n <:toggle as |t|>\n <Hds::Reveal::Toggle::Button\n aria-controls={{this.contentId}}\n @text={{this.getText t.isOpen}}\n @isOpen={{t.isOpen}}\n {{on \"click\" t.onClickToggle}}\n />\n </:toggle>\n\n <:content>\n <div class=\"hds-reveal__content hds-typography-body-200 hds-foreground-primary\" id={{this.contentId}}>\n {{yield}}\n </div>\n </:content>\n</Hds::DisclosurePrimitive>");
|
|
9
9
|
|
|
10
|
-
class
|
|
10
|
+
class HdsRevealComponent extends Component {
|
|
11
11
|
constructor(...args) {
|
|
12
12
|
super(...args);
|
|
13
13
|
/**
|
|
@@ -16,21 +16,25 @@ class HdsRevealIndexComponent extends Component {
|
|
|
16
16
|
* @param contentId
|
|
17
17
|
*/
|
|
18
18
|
_defineProperty(this, "contentId", 'content-' + guidFor(this));
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
19
|
+
/**
|
|
20
|
+
* @param getText
|
|
21
|
+
* @type {string}
|
|
22
|
+
* @description A local function that emulates a getter to compute the value of the `@text` argument for the button (mainly to make TypeScript happy)
|
|
23
|
+
*/
|
|
24
|
+
_defineProperty(this, "getText", isOpen => {
|
|
25
|
+
if (isOpen && this.args.textWhenOpen !== undefined) {
|
|
26
|
+
return this.args.textWhenOpen;
|
|
27
|
+
} else {
|
|
28
|
+
if (this.args.text !== undefined) {
|
|
29
|
+
return this.args.text;
|
|
30
|
+
} else {
|
|
31
|
+
assert('@text for "Hds::Reveal" must have a valid value');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
31
35
|
}
|
|
32
36
|
}
|
|
33
|
-
setComponentTemplate(TEMPLATE,
|
|
37
|
+
setComponentTemplate(TEMPLATE, HdsRevealComponent);
|
|
34
38
|
|
|
35
|
-
export {
|
|
39
|
+
export { HdsRevealComponent as default };
|
|
36
40
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/reveal/index.hbs","../../../../src/components/hds/reveal/index.
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/reveal/index.hbs","../../../../src/components/hds/reveal/index.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n\\n<Hds::DisclosurePrimitive class=\\\"hds-reveal\\\" @isOpen={{@isOpen}} ...attributes>\\n <:toggle as |t|>\\n <Hds::Reveal::Toggle::Button\\n aria-controls={{this.contentId}}\\n @text={{this.getText t.isOpen}}\\n @isOpen={{t.isOpen}}\\n {{on \\\"click\\\" t.onClickToggle}}\\n />\\n </:toggle>\\n\\n <:content>\\n <div class=\\\"hds-reveal__content hds-typography-body-200 hds-foreground-primary\\\" id={{this.contentId}}>\\n {{yield}}\\n </div>\\n </:content>\\n</Hds::DisclosurePrimitive>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { guidFor } from '@ember/object/internals';\nimport { assert } from '@ember/debug';\n\nimport type { HdsDisclosurePrimitiveSignature } from '../disclosure-primitive';\nimport type { HdsRevealToggleButtonSignature } from './toggle/button';\n\ninterface HdsRevealSignature {\n Args: {\n text: HdsRevealToggleButtonSignature['Args']['text'];\n textWhenOpen?: HdsRevealToggleButtonSignature['Args']['text'];\n isOpen?: HdsRevealToggleButtonSignature['Args']['isOpen'];\n };\n Blocks: {\n default: [];\n };\n Element: HdsDisclosurePrimitiveSignature['Element'];\n}\n\nexport default class HdsRevealComponent extends Component<HdsRevealSignature> {\n /**\n * Generates a unique ID for the Content\n *\n * @param contentId\n */\n contentId = 'content-' + guidFor(this);\n\n /**\n * @param getText\n * @type {string}\n * @description A local function that emulates a getter to compute the value of the `@text` argument for the button (mainly to make TypeScript happy)\n */\n getText = (isOpen: boolean): string => {\n if (isOpen && this.args.textWhenOpen !== undefined) {\n return this.args.textWhenOpen;\n } else {\n if (this.args.text !== undefined) {\n return this.args.text;\n } else {\n assert('@text for \"Hds::Reveal\" must have a valid value');\n }\n }\n };\n}\n"],"names":["HdsRevealComponent","Component","constructor","args","_defineProperty","guidFor","isOpen","textWhenOpen","undefined","text","assert","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;AACA,eAAe,kBAAkB,CAAC,ykBAAykB;;ACuB5lB,MAAMA,kBAAkB,SAASC,SAAS,CAAqB;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AAC5E;AACF;AACA;AACA;AACA;AAJEC,IAAAA,eAAA,oBAKY,UAAU,GAAGC,OAAO,CAAC,IAAI,CAAC,CAAA,CAAA;AAEtC;AACF;AACA;AACA;AACA;IAJED,eAAA,CAAA,IAAA,EAAA,SAAA,EAKWE,MAAe,IAAa;MACrC,IAAIA,MAAM,IAAI,IAAI,CAACH,IAAI,CAACI,YAAY,KAAKC,SAAS,EAAE;AAClD,QAAA,OAAO,IAAI,CAACL,IAAI,CAACI,YAAY,CAAA;AAC/B,OAAC,MAAM;AACL,QAAA,IAAI,IAAI,CAACJ,IAAI,CAACM,IAAI,KAAKD,SAAS,EAAE;AAChC,UAAA,OAAO,IAAI,CAACL,IAAI,CAACM,IAAI,CAAA;AACvB,SAAC,MAAM;UACLC,MAAM,CAAC,iDAAiD,CAAC,CAAA;AAC3D,SAAA;AACF,OAAA;KACD,CAAA,CAAA;AAAA,GAAA;AACH,CAAA;AAACC,oBAAA,CAAAC,QAAA,EAxBoBZ,kBAAkB,CAAA;;;;"}
|
|
@@ -2,21 +2,21 @@ import Component from '@glimmer/component';
|
|
|
2
2
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
3
3
|
import { setComponentTemplate } from '@ember/component';
|
|
4
4
|
|
|
5
|
-
var TEMPLATE = precompileTemplate("{{
|
|
5
|
+
var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n\n<Hds::Button\n @text={{@text}}\n @color=\"tertiary\"\n @icon=\"chevron-down\"\n aria-expanded={{if @isOpen \"true\" \"false\"}}\n class={{this.classNames}}\n ...attributes\n/>");
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Copyright (c) HashiCorp, Inc.
|
|
9
9
|
* SPDX-License-Identifier: MPL-2.0
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
class
|
|
12
|
+
class HdsRevealToggleButtonComponent extends Component {
|
|
13
13
|
/**
|
|
14
14
|
* Get the class names to apply to the component.
|
|
15
15
|
* @method ToggleButton#classNames
|
|
16
16
|
* @return {string} The "class" attribute to apply to the component.
|
|
17
17
|
*/
|
|
18
18
|
get classNames() {
|
|
19
|
-
|
|
19
|
+
const classes = ['hds-reveal__toggle-button'];
|
|
20
20
|
|
|
21
21
|
// add a class based on the @isOpen argument
|
|
22
22
|
if (this.args.isOpen) {
|
|
@@ -25,7 +25,7 @@ class HdsDropdownToggleButtonComponent extends Component {
|
|
|
25
25
|
return classes.join(' ');
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
setComponentTemplate(TEMPLATE,
|
|
28
|
+
setComponentTemplate(TEMPLATE, HdsRevealToggleButtonComponent);
|
|
29
29
|
|
|
30
|
-
export {
|
|
30
|
+
export { HdsRevealToggleButtonComponent as default };
|
|
31
31
|
//# sourceMappingURL=button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.js","sources":["../../../../../src/components/hds/reveal/toggle/button.hbs","../../../../../src/components/hds/reveal/toggle/button.
|
|
1
|
+
{"version":3,"file":"button.js","sources":["../../../../../src/components/hds/reveal/toggle/button.hbs","../../../../../src/components/hds/reveal/toggle/button.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n\\n<Hds::Button\\n @text={{@text}}\\n @color=\\\"tertiary\\\"\\n @icon=\\\"chevron-down\\\"\\n aria-expanded={{if @isOpen \\\"true\\\" \\\"false\\\"}}\\n class={{this.classNames}}\\n ...attributes\\n/>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\n\nimport type { HdsButtonSignature } from '../../button/';\n\nexport interface HdsRevealToggleButtonSignature {\n Args: {\n text: string;\n isOpen?: boolean;\n };\n Element: HdsButtonSignature['Element'];\n}\n\nexport default class HdsRevealToggleButtonComponent extends Component<HdsRevealToggleButtonSignature> {\n /**\n * Get the class names to apply to the component.\n * @method ToggleButton#classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames() {\n const classes = ['hds-reveal__toggle-button'];\n\n // add a class based on the @isOpen argument\n if (this.args.isOpen) {\n classes.push('hds-reveal__toggle-button--is-open');\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["HdsRevealToggleButtonComponent","Component","classNames","classes","args","isOpen","push","join","setComponentTemplate","TEMPLATE"],"mappings":";;;;AACA,eAAe,kBAAkB,CAAC,uQAAuQ;;ACDzS;AACA;AACA;AACA;;AAce,MAAMA,8BAA8B,SAASC,SAAS,CAAiC;AACpG;AACF;AACA;AACA;AACA;EACE,IAAIC,UAAUA,GAAG;AACf,IAAA,MAAMC,OAAO,GAAG,CAAC,2BAA2B,CAAC,CAAA;;AAE7C;AACA,IAAA,IAAI,IAAI,CAACC,IAAI,CAACC,MAAM,EAAE;AACpBF,MAAAA,OAAO,CAACG,IAAI,CAAC,oCAAoC,CAAC,CAAA;AACpD,KAAA;AAEA,IAAA,OAAOH,OAAO,CAACI,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,GAAA;AACF,CAAA;AAACC,oBAAA,CAAAC,QAAA,EAhBoBT,8BAA8B,CAAA;;;;"}
|