@coveo/atomic 3.50.0 → 3.52.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/custom-elements.json +15081 -13083
- package/dist/atomic/_atomic.esm.js +1 -1
- package/dist/atomic/atomic.esm.js.map +1 -1
- package/dist/atomic/components/_index.d.ts +0 -18
- package/dist/atomic/components/_index.js +97 -31
- package/dist/atomic/components/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.js +2 -2
- package/dist/atomic/components/components/common/atomic-facet-date-input/atomic-facet-date-input.js +1 -0
- package/dist/atomic/components/components/common/facets/timeframe-facet-common.js +1 -0
- package/dist/atomic/components/components/common/generated-answer/atomic-answer-content/atomic-answer-content.js +166 -0
- package/dist/atomic/components/components/common/generated-answer/atomic-generated-answer-thread-item/atomic-generated-answer-thread-item.js +155 -0
- package/dist/atomic/components/components/common/generated-answer/atomic-generated-answers-thread/atomic-generated-answers-thread.js +165 -0
- package/dist/atomic/components/components/common/generated-answer/render-feedback-and-copy-buttons.js +4 -3
- package/dist/atomic/components/components/common/generated-answer/render-follow-up-input.js +66 -0
- package/dist/atomic/components/components/common/generated-answer/styles/generated-answer.tw.css.js +1 -1
- package/dist/atomic/components/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.js +444 -0
- package/dist/atomic/components/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.tw.css.js +2 -0
- package/dist/atomic/components/components/insight/atomic-insight-result-action/atomic-insight-result-action.js +169 -0
- package/dist/atomic/components/components/insight/atomic-insight-result-attach-to-case-action/atomic-insight-result-attach-to-case-action.js +122 -0
- package/dist/atomic/components/components/insight/atomic-insight-result-children/atomic-insight-result-children.js +3 -2
- package/dist/atomic/components/components/insight/atomic-insight-result-children-template/atomic-insight-result-children-template.js +79 -0
- package/dist/atomic/components/components/insight/atomic-insight-timeframe-facet/atomic-insight-timeframe-facet.js +267 -0
- package/dist/atomic/components/components/insight/atomic-insight-user-actions-session/atomic-insight-user-actions-session.js +1 -1
- package/dist/atomic/components/components/insight/atomic-insight-user-actions-timeline/atomic-insight-user-actions-timeline.js +1 -1
- package/dist/atomic/components/components/insight/index.js +5 -0
- package/dist/atomic/components/components/insight/lazy-index.js +5 -0
- package/dist/atomic/components/components/ipx/atomic-ipx-button/atomic-ipx-button.js +1 -1
- package/dist/atomic/components/components/ipx/atomic-ipx-recs-list/atomic-ipx-recs-list.js +483 -0
- package/dist/atomic/components/components/ipx/atomic-ipx-refine-modal/atomic-ipx-refine-modal.js +202 -0
- package/dist/atomic/components/components/ipx/atomic-ipx-refine-toggle/atomic-ipx-refine-toggle.js +123 -0
- package/dist/atomic/components/components/ipx/index.js +3 -0
- package/dist/atomic/components/components/ipx/lazy-index.js +3 -0
- package/dist/atomic/components/components/recommendations/atomic-recs-result/atomic-recs-result.js +1 -0
- package/dist/atomic/components/components/search/atomic-external/atomic-external.js +1 -1
- package/dist/atomic/components/components/search/atomic-generated-answer/atomic-generated-answer.js +103 -10
- package/dist/atomic/components/components/search/atomic-refine-modal/atomic-refine-modal.js +2 -1
- package/dist/atomic/components/components/search/atomic-search-box/atomic-search-box.js +2 -2
- package/dist/atomic/components/decorators/bindings.js +1 -1
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/components/index.js.map +1 -1
- package/dist/atomic/components/mixins/bindings-mixin.js +1 -1
- package/dist/atomic/components/utils/custom-element-tags.js +11 -1
- package/dist/atomic/components/utils/tailwind.global.tw.css.js +2 -2
- package/dist/atomic/index.esm.js +1 -1
- package/dist/atomic/index.esm.js.map +1 -1
- package/dist/atomic/lang/cs.json +1 -1
- package/dist/atomic/lang/da.json +1 -1
- package/dist/atomic/lang/de.json +1 -1
- package/dist/atomic/lang/dev.json +1 -1
- package/dist/atomic/lang/el.json +1 -1
- package/dist/atomic/lang/en.json +1 -1
- package/dist/atomic/lang/es.json +1 -1
- package/dist/atomic/lang/fi.json +1 -1
- package/dist/atomic/lang/fr.json +1 -1
- package/dist/atomic/lang/hu.json +1 -1
- package/dist/atomic/lang/id.json +1 -1
- package/dist/atomic/lang/it.json +1 -1
- package/dist/atomic/lang/ja.json +1 -1
- package/dist/atomic/lang/ko.json +1 -1
- package/dist/atomic/lang/nl.json +1 -1
- package/dist/atomic/lang/no.json +1 -1
- package/dist/atomic/lang/pl.json +1 -1
- package/dist/atomic/lang/pt-BR.json +1 -1
- package/dist/atomic/lang/pt.json +1 -1
- package/dist/atomic/lang/ru.json +1 -1
- package/dist/atomic/lang/sv.json +1 -1
- package/dist/atomic/lang/th.json +1 -1
- package/dist/atomic/lang/tr.json +1 -1
- package/dist/atomic/lang/zh-CN.json +1 -1
- package/dist/atomic/lang/zh-TW.json +1 -1
- package/dist/atomic/lang/zh.json +1 -1
- package/dist/atomic/p-998f7983.js +3 -0
- package/dist/atomic/p-998f7983.js.map +1 -0
- package/dist/cjs/_index.cjs.js +110 -28
- package/dist/cjs/_loader.cjs.js +3 -4
- package/dist/cjs/app-globals-18f43c37.js +506 -0
- package/dist/cjs/app-globals-18f43c37.js.map +1 -0
- package/dist/cjs/atomic.cjs.js +4 -5
- package/dist/cjs/atomic.cjs.js.map +1 -1
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js.map +1 -1
- package/dist/cjs/version.cjs.js +2 -2
- package/dist/esm/_index.js +97 -23
- package/dist/esm/_loader.js +3 -4
- package/dist/esm/app-globals-c5b073da.js +481 -0
- package/dist/esm/app-globals-c5b073da.js.map +1 -0
- package/dist/esm/atomic.js +3 -4
- package/dist/esm/atomic.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loader.js.map +1 -1
- package/dist/esm/version.js +2 -2
- package/dist/types/components/common/context/bindings-context.d.ts +1 -1
- package/dist/types/components/common/facets/timeframe-facet-common.d.ts +1 -0
- package/dist/types/components/common/generated-answer/atomic-answer-content/atomic-answer-content.d.ts +50 -0
- package/dist/types/components/common/generated-answer/{generated-answer-thread-item/generated-answer-thread-item.d.ts → atomic-generated-answer-thread-item/atomic-generated-answer-thread-item.d.ts} +3 -3
- package/dist/types/components/common/generated-answer/atomic-generated-answers-thread/atomic-generated-answers-thread.d.ts +42 -0
- package/dist/types/components/common/generated-answer/render-feedback-and-copy-buttons.d.ts +8 -2
- package/dist/types/components/common/item-list/table-layout.d.ts +1 -1
- package/dist/types/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.d.ts +54 -35
- package/dist/types/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.tw.css.d.ts +2 -0
- package/dist/types/components/insight/atomic-insight-result-action/atomic-insight-result-action.d.ts +33 -18
- package/dist/types/components/insight/atomic-insight-result-attach-to-case-action/atomic-insight-result-attach-to-case-action.d.ts +25 -20
- package/dist/types/components/insight/atomic-insight-result-children/atomic-insight-result-children.d.ts +1 -0
- package/dist/types/components/insight/atomic-insight-result-children-template/atomic-insight-result-children-template.d.ts +62 -0
- package/dist/types/components/insight/atomic-insight-timeframe-facet/atomic-insight-timeframe-facet.d.ts +47 -28
- package/dist/types/components/insight/index.d.ts +5 -0
- package/dist/types/components/ipx/atomic-ipx-button/atomic-ipx-button.d.ts +1 -1
- package/dist/types/components/ipx/atomic-ipx-recs-list/{atomic-recs-list/atomic-ipx-recs-list.d.ts → atomic-ipx-recs-list.d.ts} +43 -21
- package/dist/types/components/ipx/atomic-ipx-refine-modal/atomic-ipx-refine-modal.d.ts +62 -15
- package/dist/types/components/ipx/atomic-ipx-refine-toggle/atomic-ipx-refine-toggle.d.ts +26 -11
- package/dist/types/components/ipx/index.d.ts +3 -0
- package/dist/types/components/recommendations/atomic-recs-result/atomic-recs-result.d.ts +1 -0
- package/dist/types/components/search/atomic-external/atomic-external.d.ts +1 -1
- package/dist/types/components/search/atomic-generated-answer/atomic-generated-answer.d.ts +11 -2
- package/dist/types/components/search/atomic-refine-modal/atomic-refine-modal.d.ts +4 -3
- package/dist/types/components.d.ts +0 -547
- package/dist/types/decorators/bindings.d.ts +1 -1
- package/dist/types/index.d.ts +2 -3
- package/dist/types/utils/accessibility-utils.d.ts +2 -2
- package/dist/types/utils/init-queue.d.ts +1 -1
- package/docs/atomic-docs.json +2 -68
- package/package.json +4 -8
- package/dist/atomic/components/_commonjsHelpers.js +0 -5
- package/dist/atomic/components/_commonjsHelpers.js.map +0 -1
- package/dist/atomic/components/arrow-top-rounded.js +0 -7
- package/dist/atomic/components/arrow-top-rounded.js.map +0 -1
- package/dist/atomic/components/atomic-insight-generated-answer.d.ts +0 -11
- package/dist/atomic/components/atomic-insight-generated-answer.js +0 -3264
- package/dist/atomic/components/atomic-insight-generated-answer.js.map +0 -1
- package/dist/atomic/components/atomic-insight-result-action.d.ts +0 -11
- package/dist/atomic/components/atomic-insight-result-action.js +0 -155
- package/dist/atomic/components/atomic-insight-result-action.js.map +0 -1
- package/dist/atomic/components/atomic-insight-result-attach-to-case-action.d.ts +0 -11
- package/dist/atomic/components/atomic-insight-result-attach-to-case-action.js +0 -102
- package/dist/atomic/components/atomic-insight-result-attach-to-case-action.js.map +0 -1
- package/dist/atomic/components/atomic-insight-result-children-template.d.ts +0 -11
- package/dist/atomic/components/atomic-insight-result-children-template.js +0 -243
- package/dist/atomic/components/atomic-insight-result-children-template.js.map +0 -1
- package/dist/atomic/components/atomic-insight-timeframe-facet.d.ts +0 -11
- package/dist/atomic/components/atomic-insight-timeframe-facet.js +0 -726
- package/dist/atomic/components/atomic-insight-timeframe-facet.js.map +0 -1
- package/dist/atomic/components/atomic-ipx-recs-list.d.ts +0 -11
- package/dist/atomic/components/atomic-ipx-recs-list.js +0 -631
- package/dist/atomic/components/atomic-ipx-recs-list.js.map +0 -1
- package/dist/atomic/components/atomic-ipx-refine-modal.d.ts +0 -11
- package/dist/atomic/components/atomic-ipx-refine-modal.js +0 -8
- package/dist/atomic/components/atomic-ipx-refine-modal.js.map +0 -1
- package/dist/atomic/components/atomic-ipx-refine-modal2.js +0 -162
- package/dist/atomic/components/atomic-ipx-refine-modal2.js.map +0 -1
- package/dist/atomic/components/atomic-ipx-refine-toggle.d.ts +0 -11
- package/dist/atomic/components/atomic-ipx-refine-toggle.js +0 -121
- package/dist/atomic/components/atomic-ipx-refine-toggle.js.map +0 -1
- package/dist/atomic/components/atomic-stencil-facet-date-input.d.ts +0 -11
- package/dist/atomic/components/atomic-stencil-facet-date-input.js +0 -107
- package/dist/atomic/components/atomic-stencil-facet-date-input.js.map +0 -1
- package/dist/atomic/components/attach.js +0 -115
- package/dist/atomic/components/attach.js.map +0 -1
- package/dist/atomic/components/components/common/layout/display-options.js +0 -28
- package/dist/atomic/components/date-utils.js +0 -26
- package/dist/atomic/components/date-utils.js.map +0 -1
- package/dist/atomic/components/initialization-utils.js +0 -226
- package/dist/atomic/components/initialization-utils.js.map +0 -1
- package/dist/atomic/components/popover-type.js +0 -12
- package/dist/atomic/components/popover-type.js.map +0 -1
- package/dist/atomic/components/props-utils.js +0 -57
- package/dist/atomic/components/props-utils.js.map +0 -1
- package/dist/atomic/components/stencil-button.js +0 -148
- package/dist/atomic/components/stencil-button.js.map +0 -1
- package/dist/atomic/components/stencil-heading.js +0 -169
- package/dist/atomic/components/stencil-heading.js.map +0 -1
- package/dist/atomic/components/stencil-iconButton.js +0 -16
- package/dist/atomic/components/stencil-iconButton.js.map +0 -1
- package/dist/atomic/components/store.js +0 -13
- package/dist/atomic/components/store.js.map +0 -1
- package/dist/atomic/components/utils.js +0 -1421
- package/dist/atomic/components/utils.js.map +0 -1
- package/dist/atomic/p-0698ccf1.entry.js +0 -2
- package/dist/atomic/p-0698ccf1.entry.js.map +0 -1
- package/dist/atomic/p-0f896350.entry.js +0 -2
- package/dist/atomic/p-0f896350.entry.js.map +0 -1
- package/dist/atomic/p-1580513b.js +0 -2
- package/dist/atomic/p-1580513b.js.map +0 -1
- package/dist/atomic/p-4117289b.entry.js +0 -2
- package/dist/atomic/p-4117289b.entry.js.map +0 -1
- package/dist/atomic/p-4573c419.js +0 -2
- package/dist/atomic/p-4573c419.js.map +0 -1
- package/dist/atomic/p-4a32511f.js +0 -2
- package/dist/atomic/p-4a32511f.js.map +0 -1
- package/dist/atomic/p-578d761c.js +0 -2
- package/dist/atomic/p-578d761c.js.map +0 -1
- package/dist/atomic/p-677f9c40.js +0 -2
- package/dist/atomic/p-677f9c40.js.map +0 -1
- package/dist/atomic/p-70cc18a1.js +0 -2
- package/dist/atomic/p-70cc18a1.js.map +0 -1
- package/dist/atomic/p-74210c4b.entry.js +0 -9
- package/dist/atomic/p-74210c4b.entry.js.map +0 -1
- package/dist/atomic/p-81d6e743.js +0 -2
- package/dist/atomic/p-81d6e743.js.map +0 -1
- package/dist/atomic/p-8b039c2e.entry.js +0 -2
- package/dist/atomic/p-8b039c2e.entry.js.map +0 -1
- package/dist/atomic/p-991e840f.entry.js +0 -2
- package/dist/atomic/p-991e840f.entry.js.map +0 -1
- package/dist/atomic/p-9c5ec170.js +0 -2
- package/dist/atomic/p-9c5ec170.js.map +0 -1
- package/dist/atomic/p-9dfe5ab1.js +0 -2
- package/dist/atomic/p-9dfe5ab1.js.map +0 -1
- package/dist/atomic/p-9f774145.entry.js +0 -2
- package/dist/atomic/p-9f774145.entry.js.map +0 -1
- package/dist/atomic/p-a33748a9.js +0 -2
- package/dist/atomic/p-a33748a9.js.map +0 -1
- package/dist/atomic/p-b09433bb.js +0 -3
- package/dist/atomic/p-b09433bb.js.map +0 -1
- package/dist/atomic/p-b4cfedf1.js +0 -2
- package/dist/atomic/p-b4cfedf1.js.map +0 -1
- package/dist/atomic/p-c81f1edb.entry.js +0 -2
- package/dist/atomic/p-c81f1edb.entry.js.map +0 -1
- package/dist/atomic/p-d75a4630.js +0 -2
- package/dist/atomic/p-d75a4630.js.map +0 -1
- package/dist/atomic/p-dac60354.js +0 -2
- package/dist/atomic/p-dac60354.js.map +0 -1
- package/dist/atomic/p-e1255160.js +0 -2
- package/dist/atomic/p-e1255160.js.map +0 -1
- package/dist/atomic/p-ec1c5f46.js +0 -3
- package/dist/atomic/p-ec1c5f46.js.map +0 -1
- package/dist/atomic/p-eea2c139.entry.js +0 -2
- package/dist/atomic/p-eea2c139.entry.js.map +0 -1
- package/dist/atomic/p-f321aab0.js +0 -2
- package/dist/atomic/p-f321aab0.js.map +0 -1
- package/dist/cjs/_commonjsHelpers-68cdf74f.js +0 -7
- package/dist/cjs/_commonjsHelpers-68cdf74f.js.map +0 -1
- package/dist/cjs/app-globals-3a1e7e63.js +0 -7
- package/dist/cjs/app-globals-3a1e7e63.js.map +0 -1
- package/dist/cjs/arrow-top-rounded-885250ea.js +0 -10
- package/dist/cjs/arrow-top-rounded-885250ea.js.map +0 -1
- package/dist/cjs/atomic-insight-generated-answer.cjs.entry.js +0 -3238
- package/dist/cjs/atomic-insight-generated-answer.cjs.entry.js.map +0 -1
- package/dist/cjs/atomic-insight-result-action.cjs.entry.js +0 -140
- package/dist/cjs/atomic-insight-result-action.cjs.entry.js.map +0 -1
- package/dist/cjs/atomic-insight-result-attach-to-case-action.cjs.entry.js +0 -90
- package/dist/cjs/atomic-insight-result-attach-to-case-action.cjs.entry.js.map +0 -1
- package/dist/cjs/atomic-insight-result-children-template.cjs.entry.js +0 -223
- package/dist/cjs/atomic-insight-result-children-template.cjs.entry.js.map +0 -1
- package/dist/cjs/atomic-insight-timeframe-facet.cjs.entry.js +0 -700
- package/dist/cjs/atomic-insight-timeframe-facet.cjs.entry.js.map +0 -1
- package/dist/cjs/atomic-ipx-recs-list.cjs.entry.js +0 -600
- package/dist/cjs/atomic-ipx-recs-list.cjs.entry.js.map +0 -1
- package/dist/cjs/atomic-ipx-refine-modal.cjs.entry.js +0 -143
- package/dist/cjs/atomic-ipx-refine-modal.cjs.entry.js.map +0 -1
- package/dist/cjs/atomic-ipx-refine-toggle.cjs.entry.js +0 -99
- package/dist/cjs/atomic-ipx-refine-toggle.cjs.entry.js.map +0 -1
- package/dist/cjs/atomic-stencil-facet-date-input.cjs.entry.js +0 -86
- package/dist/cjs/atomic-stencil-facet-date-input.cjs.entry.js.map +0 -1
- package/dist/cjs/attach-19283bec.js +0 -10
- package/dist/cjs/attach-19283bec.js.map +0 -1
- package/dist/cjs/date-utils-aae1d713.js +0 -28
- package/dist/cjs/date-utils-aae1d713.js.map +0 -1
- package/dist/cjs/event-utils-9bfcf3c5.js +0 -27
- package/dist/cjs/event-utils-9bfcf3c5.js.map +0 -1
- package/dist/cjs/index-3532822e.js +0 -1448
- package/dist/cjs/index-3532822e.js.map +0 -1
- package/dist/cjs/initialization-lit-stencil-common-utils-f19f74c0.js +0 -95
- package/dist/cjs/initialization-lit-stencil-common-utils-f19f74c0.js.map +0 -1
- package/dist/cjs/initialization-utils-51a423fe.js +0 -148
- package/dist/cjs/initialization-utils-51a423fe.js.map +0 -1
- package/dist/cjs/popover-type-22f285e1.js +0 -16
- package/dist/cjs/popover-type-22f285e1.js.map +0 -1
- package/dist/cjs/props-utils-bc5feb04.js +0 -59
- package/dist/cjs/props-utils-bc5feb04.js.map +0 -1
- package/dist/cjs/stencil-button-f39da03e.js +0 -130
- package/dist/cjs/stencil-button-f39da03e.js.map +0 -1
- package/dist/cjs/stencil-heading-ecec9ab3.js +0 -174
- package/dist/cjs/stencil-heading-ecec9ab3.js.map +0 -1
- package/dist/cjs/stencil-iconButton-f8b9fda0.js +0 -18
- package/dist/cjs/stencil-iconButton-f8b9fda0.js.map +0 -1
- package/dist/cjs/stencil-result-template-decorators-1f099c15.js +0 -114
- package/dist/cjs/stencil-result-template-decorators-1f099c15.js.map +0 -1
- package/dist/cjs/store-70fff5e6.js +0 -16
- package/dist/cjs/store-70fff5e6.js.map +0 -1
- package/dist/cjs/utils-e845f262.js +0 -1431
- package/dist/cjs/utils-e845f262.js.map +0 -1
- package/dist/esm/_commonjsHelpers-1c8beb5f.js +0 -5
- package/dist/esm/_commonjsHelpers-1c8beb5f.js.map +0 -1
- package/dist/esm/app-globals-0f993ce5.js +0 -5
- package/dist/esm/app-globals-0f993ce5.js.map +0 -1
- package/dist/esm/arrow-top-rounded-745b84a6.js +0 -7
- package/dist/esm/arrow-top-rounded-745b84a6.js.map +0 -1
- package/dist/esm/atomic-insight-generated-answer.entry.js +0 -3234
- package/dist/esm/atomic-insight-generated-answer.entry.js.map +0 -1
- package/dist/esm/atomic-insight-result-action.entry.js +0 -136
- package/dist/esm/atomic-insight-result-action.entry.js.map +0 -1
- package/dist/esm/atomic-insight-result-attach-to-case-action.entry.js +0 -86
- package/dist/esm/atomic-insight-result-attach-to-case-action.entry.js.map +0 -1
- package/dist/esm/atomic-insight-result-children-template.entry.js +0 -219
- package/dist/esm/atomic-insight-result-children-template.entry.js.map +0 -1
- package/dist/esm/atomic-insight-timeframe-facet.entry.js +0 -696
- package/dist/esm/atomic-insight-timeframe-facet.entry.js.map +0 -1
- package/dist/esm/atomic-ipx-recs-list.entry.js +0 -596
- package/dist/esm/atomic-ipx-recs-list.entry.js.map +0 -1
- package/dist/esm/atomic-ipx-refine-modal.entry.js +0 -139
- package/dist/esm/atomic-ipx-refine-modal.entry.js.map +0 -1
- package/dist/esm/atomic-ipx-refine-toggle.entry.js +0 -95
- package/dist/esm/atomic-ipx-refine-toggle.entry.js.map +0 -1
- package/dist/esm/atomic-stencil-facet-date-input.entry.js +0 -82
- package/dist/esm/atomic-stencil-facet-date-input.entry.js.map +0 -1
- package/dist/esm/attach-81bb8872.js +0 -8
- package/dist/esm/attach-81bb8872.js.map +0 -1
- package/dist/esm/date-utils-3b955e79.js +0 -26
- package/dist/esm/date-utils-3b955e79.js.map +0 -1
- package/dist/esm/event-utils-8de63ec3.js +0 -24
- package/dist/esm/event-utils-8de63ec3.js.map +0 -1
- package/dist/esm/index-3eb0b28e.js +0 -1417
- package/dist/esm/index-3eb0b28e.js.map +0 -1
- package/dist/esm/initialization-lit-stencil-common-utils-e7755434.js +0 -88
- package/dist/esm/initialization-lit-stencil-common-utils-e7755434.js.map +0 -1
- package/dist/esm/initialization-utils-82d28c63.js +0 -144
- package/dist/esm/initialization-utils-82d28c63.js.map +0 -1
- package/dist/esm/popover-type-c85677ef.js +0 -12
- package/dist/esm/popover-type-c85677ef.js.map +0 -1
- package/dist/esm/props-utils-d343133b.js +0 -57
- package/dist/esm/props-utils-d343133b.js.map +0 -1
- package/dist/esm/stencil-button-c25899df.js +0 -128
- package/dist/esm/stencil-button-c25899df.js.map +0 -1
- package/dist/esm/stencil-heading-98a5f23f.js +0 -169
- package/dist/esm/stencil-heading-98a5f23f.js.map +0 -1
- package/dist/esm/stencil-iconButton-ed5804d3.js +0 -16
- package/dist/esm/stencil-iconButton-ed5804d3.js.map +0 -1
- package/dist/esm/stencil-result-template-decorators-9cbe1e1c.js +0 -110
- package/dist/esm/stencil-result-template-decorators-9cbe1e1c.js.map +0 -1
- package/dist/esm/store-50d170c8.js +0 -13
- package/dist/esm/store-50d170c8.js.map +0 -1
- package/dist/esm/utils-b5bab369.js +0 -1421
- package/dist/esm/utils-b5bab369.js.map +0 -1
- package/dist/types/components/commerce/product-template-component-utils/context/stencil-product-template-decorators.d.ts +0 -14
- package/dist/types/components/common/atomic-rating/stencil-rating.d.ts +0 -18
- package/dist/types/components/common/atomic-result-placeholder/stencil-placeholders.d.ts +0 -20
- package/dist/types/components/common/breadbox/stencil-breadcrumb-button.d.ts +0 -15
- package/dist/types/components/common/breadbox/stencil-breadcrumb-clear-all.d.ts +0 -13
- package/dist/types/components/common/breadbox/stencil-breadcrumb-container.d.ts +0 -11
- package/dist/types/components/common/breadbox/stencil-breadcrumb-content.d.ts +0 -14
- package/dist/types/components/common/breadbox/stencil-breadcrumb-show-less.d.ts +0 -13
- package/dist/types/components/common/breadbox/stencil-breadcrumb-show-more.d.ts +0 -14
- package/dist/types/components/common/facets/category-facet/stencil-all-categories-button.d.ts +0 -13
- package/dist/types/components/common/facets/category-facet/stencil-child-value-link.d.ts +0 -9
- package/dist/types/components/common/facets/category-facet/stencil-children-as-tree-container.d.ts +0 -9
- package/dist/types/components/common/facets/category-facet/stencil-parent-as-tree-container.d.ts +0 -10
- package/dist/types/components/common/facets/category-facet/stencil-parent-button.d.ts +0 -16
- package/dist/types/components/common/facets/category-facet/stencil-parent-value-link.d.ts +0 -9
- package/dist/types/components/common/facets/category-facet/stencil-search-results-container.d.ts +0 -5
- package/dist/types/components/common/facets/category-facet/stencil-search-value.d.ts +0 -19
- package/dist/types/components/common/facets/category-facet/stencil-value-as-tree-container.d.ts +0 -5
- package/dist/types/components/common/facets/category-facet/stencil-value-link.d.ts +0 -20
- package/dist/types/components/common/facets/facet-container/stencil-facet-container.d.ts +0 -5
- package/dist/types/components/common/facets/facet-header/stencil-facet-header.d.ts +0 -17
- package/dist/types/components/common/facets/facet-placeholder/stencil-facet-placeholder.d.ts +0 -10
- package/dist/types/components/common/facets/facet-search/stencil-facet-search-input-guard.d.ts +0 -11
- package/dist/types/components/common/facets/facet-search/stencil-facet-search-input.d.ts +0 -14
- package/dist/types/components/common/facets/facet-search/stencil-facet-search-matches.d.ts +0 -14
- package/dist/types/components/common/facets/facet-search/stencil-facet-search-value.d.ts +0 -6
- package/dist/types/components/common/facets/facet-show-more-less/stencil-facet-show-more-less.d.ts +0 -17
- package/dist/types/components/common/facets/facet-value/stencil-facet-value.d.ts +0 -22
- package/dist/types/components/common/facets/facet-value-box/stencil-facet-value-box.d.ts +0 -6
- package/dist/types/components/common/facets/facet-value-checkbox/stencil-facet-value-checkbox.d.ts +0 -11
- package/dist/types/components/common/facets/facet-value-exclude/stencil-facet-value-exclude.d.ts +0 -10
- package/dist/types/components/common/facets/facet-value-label-highlight/stencil-facet-value-label-highlight.d.ts +0 -12
- package/dist/types/components/common/facets/facet-value-link/stencil-facet-value-link.d.ts +0 -10
- package/dist/types/components/common/facets/facet-values-group/stencil-facet-values-group.d.ts +0 -12
- package/dist/types/components/common/facets/numeric-facet/stencil-value-link.d.ts +0 -12
- package/dist/types/components/common/facets/numeric-facet/stencil-values-container.d.ts +0 -11
- package/dist/types/components/common/facets/stencil-facet-common.d.ts +0 -43
- package/dist/types/components/common/facets/stencil-facet-date-input/stencil-facet-date-input.d.ts +0 -33
- package/dist/types/components/common/facets/stencil-facet-guard.d.ts +0 -12
- package/dist/types/components/common/facets/stencil-timeframe-facet-common.d.ts +0 -72
- package/dist/types/components/common/generated-answer/generated-answer-common.d.ts +0 -58
- package/dist/types/components/common/generated-answer/generated-content/stencil-generated-markdown-content.d.ts +0 -10
- package/dist/types/components/common/generated-answer/generated-content/stencil-generated-text-content.d.ts +0 -10
- package/dist/types/components/common/generated-answer/stencil-copy-button.d.ts +0 -12
- package/dist/types/components/common/generated-answer/stencil-feedback-button.d.ts +0 -13
- package/dist/types/components/common/generated-answer/stencil-generated-content-container.d.ts +0 -11
- package/dist/types/components/common/generated-answer/stencil-retry-prompt.d.ts +0 -11
- package/dist/types/components/common/generated-answer/stencil-show-button.d.ts +0 -12
- package/dist/types/components/common/generated-answer/stencil-source-citations.d.ts +0 -10
- package/dist/types/components/common/interface/interface-common-stencil.d.ts +0 -34
- package/dist/types/components/common/interface/stencil-i18n.d.ts +0 -11
- package/dist/types/components/common/item-link/stencil-item-link.d.ts +0 -30
- package/dist/types/components/common/item-list/item-list-decorators.d.ts +0 -17
- package/dist/types/components/common/item-list/stencil-display-grid.d.ts +0 -17
- package/dist/types/components/common/item-list/stencil-display-wrapper.d.ts +0 -11
- package/dist/types/components/common/item-list/stencil-item-decorators.d.ts +0 -41
- package/dist/types/components/common/item-list/stencil-item-display-guard.d.ts +0 -10
- package/dist/types/components/common/item-list/stencil-item-list-common.d.ts +0 -31
- package/dist/types/components/common/item-list/stencil-item-list-guard.d.ts +0 -13
- package/dist/types/components/common/item-text/stencil-item-text-fallback.d.ts +0 -14
- package/dist/types/components/common/item-text/stencil-item-text-highlighted.d.ts +0 -13
- package/dist/types/components/common/load-more/guard.d.ts +0 -10
- package/dist/types/components/common/load-more/stencil-button.d.ts +0 -13
- package/dist/types/components/common/load-more/stencil-container.d.ts +0 -5
- package/dist/types/components/common/load-more/stencil-progress-bar.d.ts +0 -10
- package/dist/types/components/common/load-more/stencil-summary.d.ts +0 -13
- package/dist/types/components/common/no-items/stencil-container.d.ts +0 -5
- package/dist/types/components/common/no-items/stencil-guard.d.ts +0 -11
- package/dist/types/components/common/no-items/stencil-magnifying-glass.d.ts +0 -5
- package/dist/types/components/common/no-items/stencil-no-items.d.ts +0 -12
- package/dist/types/components/common/no-items/stencil-tips.d.ts +0 -10
- package/dist/types/components/common/pager/stencil-pager-buttons.d.ts +0 -33
- package/dist/types/components/common/pager/stencil-pager-navigation.d.ts +0 -10
- package/dist/types/components/common/product-template/stencil-product-template-common.d.ts +0 -26
- package/dist/types/components/common/query-correction/stencil-auto-correction.d.ts +0 -12
- package/dist/types/components/common/query-correction/stencil-correction.d.ts +0 -12
- package/dist/types/components/common/query-correction/stencil-guard.d.ts +0 -9
- package/dist/types/components/common/query-correction/stencil-trigger-correction.d.ts +0 -13
- package/dist/types/components/common/query-error/stencil-container.d.ts +0 -5
- package/dist/types/components/common/query-error/stencil-description.d.ts +0 -13
- package/dist/types/components/common/query-error/stencil-details.d.ts +0 -10
- package/dist/types/components/common/query-error/stencil-guard.d.ts +0 -9
- package/dist/types/components/common/query-error/stencil-icon.d.ts +0 -9
- package/dist/types/components/common/query-error/stencil-link.d.ts +0 -11
- package/dist/types/components/common/query-error/stencil-show-more.d.ts +0 -13
- package/dist/types/components/common/query-error/stencil-title.d.ts +0 -12
- package/dist/types/components/common/query-summary/stencil-container.d.ts +0 -9
- package/dist/types/components/common/query-summary/stencil-guard.d.ts +0 -11
- package/dist/types/components/common/query-summary/stencil-utils.d.ts +0 -23
- package/dist/types/components/common/refine-modal/stencil-body.d.ts +0 -7
- package/dist/types/components/common/refine-modal/stencil-button.d.ts +0 -12
- package/dist/types/components/common/refine-modal/stencil-filters.d.ts +0 -20
- package/dist/types/components/common/refine-modal/stencil-guard.d.ts +0 -11
- package/dist/types/components/common/refine-modal/stencil-modal.d.ts +0 -18
- package/dist/types/components/common/refine-modal/stencil-sort.d.ts +0 -11
- package/dist/types/components/common/result-children/stencil-children-wrapper.d.ts +0 -9
- package/dist/types/components/common/result-children/stencil-collection-guard.d.ts +0 -16
- package/dist/types/components/common/result-children/stencil-guard.d.ts +0 -11
- package/dist/types/components/common/result-children/stencil-show-hide-button.d.ts +0 -14
- package/dist/types/components/common/result-templates/stencil-result-template-common.d.ts +0 -24
- package/dist/types/components/common/search-box/stencil-search-box-wrapper.d.ts +0 -10
- package/dist/types/components/common/search-box/stencil-search-text-area.d.ts +0 -22
- package/dist/types/components/common/search-box/stencil-submit-button.d.ts +0 -12
- package/dist/types/components/common/search-box/stencil-text-area-clear-button.d.ts +0 -12
- package/dist/types/components/common/smart-snippets/atomic-smart-snippet/stencil-smart-snippet-common.d.ts +0 -31
- package/dist/types/components/common/smart-snippets/atomic-smart-snippet-feedback-modal/stencil-smart-snippet-feedback-modal-common.d.ts +0 -57
- package/dist/types/components/common/smart-snippets/atomic-smart-snippet-suggestions/stencil-smart-snippet-suggestions-common.d.ts +0 -43
- package/dist/types/components/common/smart-snippets/stencil-smart-snippet-feedback-banner.d.ts +0 -18
- package/dist/types/components/common/stencil-button-style.d.ts +0 -11
- package/dist/types/components/common/stencil-button.d.ts +0 -30
- package/dist/types/components/common/stencil-carousel.d.ts +0 -15
- package/dist/types/components/common/stencil-checkbox.d.ts +0 -22
- package/dist/types/components/common/stencil-fieldset-group.d.ts +0 -9
- package/dist/types/components/common/stencil-heading.d.ts +0 -7
- package/dist/types/components/common/stencil-hidden.d.ts +0 -5
- package/dist/types/components/common/stencil-iconButton.d.ts +0 -13
- package/dist/types/components/common/stencil-radio-button.d.ts +0 -12
- package/dist/types/components/common/stencil-switch.d.ts +0 -15
- package/dist/types/components/common/stencil-triStateCheckbox.d.ts +0 -11
- package/dist/types/components/common/suggestions/stencil-instant-item.d.ts +0 -19
- package/dist/types/components/common/suggestions/stencil-query-suggestions.d.ts +0 -32
- package/dist/types/components/common/suggestions/stencil-suggestion-manager.d.ts +0 -96
- package/dist/types/components/insight/result-templates/atomic-insight-result-children-template/atomic-insight-result-children-template.d.ts +0 -50
- package/dist/types/components/search/facets/facet-segmented-value/stencil-facet-segmented-value.d.ts +0 -6
- package/dist/types/components/search/result-template-component-utils/context/stencil-result-template-decorators.d.ts +0 -32
- package/dist/types/components/search/result-template-components/quickview-iframe/stencil-quickview-iframe.d.ts +0 -14
- package/dist/types/utils/__mocks__/stencil-resource-url.d.ts +0 -1
- package/dist/types/utils/initialization-utils.d.ts +0 -70
- package/dist/types/utils/jsx-utils.d.ts +0 -6
- package/dist/types/utils/stencil-accessibility-utils.d.ts +0 -43
- package/dist/types/utils/stencil-asset-path-utils.d.ts +0 -1
- package/dist/types/utils/stencil-resource-url.d.ts +0 -1
- /package/dist/atomic/components/utils/{initialization-lit-stencil-common-utils.js → initialization-common-utils.js} +0 -0
- /package/dist/types/utils/{initialization-lit-stencil-common-utils.d.ts → initialization-common-utils.d.ts} +0 -0
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import { h } from '@stencil/core/internal/client';
|
|
2
|
-
|
|
3
|
-
function buildCustomEvent(name, detail) {
|
|
4
|
-
return new CustomEvent(name, {
|
|
5
|
-
detail,
|
|
6
|
-
// Event will bubble up the DOM until it is caught
|
|
7
|
-
bubbles: true,
|
|
8
|
-
// Allows to verify if event is caught (cancelled). If it's not caught, it won't be initialized.
|
|
9
|
-
cancelable: true,
|
|
10
|
-
// Allows to compose Atomic components inside one another, event will go across DOM/Shadow DOM
|
|
11
|
-
composed: true,
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
function listenOnce(element, type, listener, options) {
|
|
15
|
-
const _listener = (evt) => {
|
|
16
|
-
element.removeEventListener(type, _listener, options);
|
|
17
|
-
typeof listener === 'object'
|
|
18
|
-
? listener.handleEvent.call(element, evt)
|
|
19
|
-
: listener.call(element, evt);
|
|
20
|
-
};
|
|
21
|
-
element.addEventListener(type, _listener, options);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const RIPPLE = 'ripple';
|
|
25
|
-
function getAnimationDurationInMilliseconds(radiusPixels) {
|
|
26
|
-
// A 318px wide button has a duration of 700ms.
|
|
27
|
-
return Math.cbrt(radiusPixels) * 129.21;
|
|
28
|
-
}
|
|
29
|
-
function setPositionRelativeIfStatic(element) {
|
|
30
|
-
if (getComputedStyle(element).position === 'static') {
|
|
31
|
-
element.classList.add('ripple-relative');
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
async function createRipple(event, options) {
|
|
35
|
-
const button = options.parent ?? event.currentTarget;
|
|
36
|
-
const existingRipple = button.getElementsByClassName(RIPPLE)[0];
|
|
37
|
-
existingRipple?.remove();
|
|
38
|
-
button.classList.add('ripple-parent');
|
|
39
|
-
setPositionRelativeIfStatic(button);
|
|
40
|
-
Array.from(button.children).forEach(setPositionRelativeIfStatic);
|
|
41
|
-
const ripple = document.createElement('span');
|
|
42
|
-
ripple.classList.add(RIPPLE);
|
|
43
|
-
ripple.style.backgroundColor = `var(--atomic-${options.color})`;
|
|
44
|
-
ripple.setAttribute('part', RIPPLE);
|
|
45
|
-
const diameter = Math.max(button.clientWidth, button.clientHeight);
|
|
46
|
-
const radius = diameter / 2;
|
|
47
|
-
const animationDuration = getAnimationDurationInMilliseconds(radius);
|
|
48
|
-
const { top, left } = button.getBoundingClientRect();
|
|
49
|
-
ripple.style.width = ripple.style.height = `${diameter}px`;
|
|
50
|
-
ripple.style.left = `${event.clientX - (left + radius)}px`;
|
|
51
|
-
ripple.style.top = `${event.clientY - (top + radius)}px`;
|
|
52
|
-
ripple.style.setProperty('--animation-duration', `${animationDuration}ms`);
|
|
53
|
-
button.prepend(ripple);
|
|
54
|
-
await cleanupAnimationOnFinish(ripple, animationDuration);
|
|
55
|
-
}
|
|
56
|
-
async function cleanupAnimationOnFinish(ripple, animationDuration) {
|
|
57
|
-
listenOnce(ripple, 'animationend', () => {
|
|
58
|
-
ripple?.remove();
|
|
59
|
-
});
|
|
60
|
-
// Backup in case the button gets hidden or unmounted and the ripple hasn't been cleaned up.
|
|
61
|
-
setTimeout(() => ripple?.remove(), animationDuration + animationDuration * 0.1);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* @deprecated Should only be used for Stencil components; for Lit components, use the button-style.ts
|
|
66
|
-
* This file is required to be in a tsx file to be able to use it in Stencil components.
|
|
67
|
-
*/
|
|
68
|
-
function getClassNameForButtonStyle(buttonStyle) {
|
|
69
|
-
switch (buttonStyle) {
|
|
70
|
-
case 'primary':
|
|
71
|
-
return 'btn-primary';
|
|
72
|
-
case 'outline-primary':
|
|
73
|
-
return 'btn-outline-primary';
|
|
74
|
-
case 'outline-neutral':
|
|
75
|
-
return 'btn-outline-neutral';
|
|
76
|
-
case 'outline-error':
|
|
77
|
-
return 'btn-outline-error';
|
|
78
|
-
case 'outline-bg-neutral':
|
|
79
|
-
return 'btn-outline-bg-neutral';
|
|
80
|
-
case 'outline-bg-error':
|
|
81
|
-
return 'btn-outline-bg-error';
|
|
82
|
-
case 'text-primary':
|
|
83
|
-
return 'btn-text-primary';
|
|
84
|
-
case 'text-neutral':
|
|
85
|
-
return 'btn-text-neutral';
|
|
86
|
-
case 'text-transparent':
|
|
87
|
-
return 'btn-text-transparent';
|
|
88
|
-
case 'square-neutral':
|
|
89
|
-
return 'btn-square-neutral';
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* @deprecated Should only be used for Stencil components; for Lit components, use the button-style.ts
|
|
94
|
-
* This file is required to be in a tsx file to be able to use it in Stencil components.
|
|
95
|
-
*/
|
|
96
|
-
function getRippleColorForButtonStyle(buttonStyle) {
|
|
97
|
-
switch (buttonStyle) {
|
|
98
|
-
case 'primary':
|
|
99
|
-
return 'primary';
|
|
100
|
-
case 'text-transparent':
|
|
101
|
-
return 'neutral-light';
|
|
102
|
-
default:
|
|
103
|
-
return 'neutral';
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* @deprecated should only be used for Stencil components.
|
|
109
|
-
*/
|
|
110
|
-
const Button = (props, children) => {
|
|
111
|
-
const rippleColor = getRippleColorForButtonStyle(props.style);
|
|
112
|
-
const className = getClassNameForButtonStyle(props.style);
|
|
113
|
-
const attributes = {
|
|
114
|
-
class: props.class ? `${className} ${props.class}` : className,
|
|
115
|
-
part: props.part,
|
|
116
|
-
onClick: props.onClick,
|
|
117
|
-
title: props.title,
|
|
118
|
-
type: props.type,
|
|
119
|
-
role: props.role,
|
|
120
|
-
'aria-label': props.ariaLabel,
|
|
121
|
-
'aria-expanded': props.ariaExpanded,
|
|
122
|
-
'aria-pressed': props.ariaPressed,
|
|
123
|
-
'aria-checked': props.ariaChecked,
|
|
124
|
-
'aria-current': props.ariaCurrent,
|
|
125
|
-
'aria-controls': props.ariaControls,
|
|
126
|
-
'aria-hidden': props.ariaHidden,
|
|
127
|
-
disabled: props.disabled,
|
|
128
|
-
ref(buttonEl) {
|
|
129
|
-
if (props.form) {
|
|
130
|
-
buttonEl?.setAttribute('form', props.form);
|
|
131
|
-
}
|
|
132
|
-
if (props.ariaHidden) {
|
|
133
|
-
buttonEl?.setAttribute('aria-hidden', props.ariaHidden);
|
|
134
|
-
}
|
|
135
|
-
if (props.tabIndex) {
|
|
136
|
-
buttonEl?.setAttribute('tabindex', props.tabIndex);
|
|
137
|
-
}
|
|
138
|
-
props.ref?.(buttonEl);
|
|
139
|
-
},
|
|
140
|
-
};
|
|
141
|
-
return (h("button", { ...attributes, onMouseDown: (e) => createRipple(e, { color: rippleColor }) },
|
|
142
|
-
props.text ? h("span", { class: "truncate" }, props.text) : null,
|
|
143
|
-
children));
|
|
144
|
-
};
|
|
145
|
-
|
|
146
|
-
export { Button as B, buildCustomEvent as b };
|
|
147
|
-
|
|
148
|
-
//# sourceMappingURL=stencil-button.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"stencil-button.js","mappings":"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","names":[],"sources":["src/utils/event-utils.ts","src/utils/ripple-utils.ts","src/components/common/stencil-button-style.tsx","src/components/common/stencil-button.tsx"],"sourcesContent":["import {promiseTimeout} from './promise-utils';\n\nexport function buildCustomEvent<T = undefined>(name: string, detail?: T) {\n return new CustomEvent(name, {\n detail,\n // Event will bubble up the DOM until it is caught\n bubbles: true,\n // Allows to verify if event is caught (cancelled). If it's not caught, it won't be initialized.\n cancelable: true,\n // Allows to compose Atomic components inside one another, event will go across DOM/Shadow DOM\n composed: true,\n });\n}\n\nexport function listenOnce<K extends keyof HTMLElementEventMap>(\n element: HTMLElement,\n type: K,\n listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => void,\n options?: boolean | AddEventListenerOptions\n): void;\nexport function listenOnce(\n element: HTMLElement,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n): void;\nexport function listenOnce(\n element: HTMLElement,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n): void {\n const _listener: EventListener = (evt: Event) => {\n element.removeEventListener(type, _listener, options);\n typeof listener === 'object'\n ? listener.handleEvent.call(element, evt)\n : listener.call(element, evt);\n };\n element.addEventListener(type, _listener, options);\n}\n\nexport function eventPromise(\n element: HTMLElement,\n type: string,\n timeoutMs: number = 0\n): Promise<Event> {\n let promise = new Promise<Event>((resolve) => {\n listenOnce(element, type, (e) => {\n resolve(e);\n });\n });\n\n if (timeoutMs > 0) {\n promise = promiseTimeout(promise, timeoutMs);\n }\n\n return promise;\n}\n","import {listenOnce} from './event-utils';\n\ninterface RippleOptions {\n color: string;\n /**\n * When the ripple's parent is not the event's origin\n */\n parent?: Element;\n}\n\nconst RIPPLE = 'ripple';\n\nfunction getAnimationDurationInMilliseconds(radiusPixels: number) {\n // A 318px wide button has a duration of 700ms.\n return Math.cbrt(radiusPixels) * 129.21;\n}\n\nfunction setPositionRelativeIfStatic(element: Element) {\n if (getComputedStyle(element).position === 'static') {\n element.classList.add('ripple-relative');\n }\n}\n\nexport async function createRipple(event: MouseEvent, options: RippleOptions) {\n const button = options.parent ?? (event.currentTarget as Element);\n const existingRipple = button.getElementsByClassName(RIPPLE)[0];\n existingRipple?.remove();\n\n button.classList.add('ripple-parent');\n setPositionRelativeIfStatic(button);\n Array.from(button.children).forEach(setPositionRelativeIfStatic);\n\n const ripple = document.createElement('span');\n ripple.classList.add(RIPPLE);\n ripple.style.backgroundColor = `var(--atomic-${options.color})`;\n ripple.setAttribute('part', RIPPLE);\n\n const diameter = Math.max(button.clientWidth, button.clientHeight);\n const radius = diameter / 2;\n const animationDuration = getAnimationDurationInMilliseconds(radius);\n const {top, left} = button.getBoundingClientRect();\n ripple.style.width = ripple.style.height = `${diameter}px`;\n ripple.style.left = `${event.clientX - (left + radius)}px`;\n ripple.style.top = `${event.clientY - (top + radius)}px`;\n ripple.style.setProperty('--animation-duration', `${animationDuration}ms`);\n button.prepend(ripple);\n await cleanupAnimationOnFinish(ripple, animationDuration);\n}\n\nasync function cleanupAnimationOnFinish(\n ripple: HTMLSpanElement,\n animationDuration: number\n) {\n listenOnce(ripple, 'animationend', () => {\n ripple?.remove();\n });\n // Backup in case the button gets hidden or unmounted and the ripple hasn't been cleaned up.\n setTimeout(\n () => ripple?.remove(),\n animationDuration + animationDuration * 0.1\n );\n}\n","export type ButtonStyle =\n | 'primary'\n | 'outline-primary'\n | 'outline-neutral'\n | 'outline-error'\n | 'outline-bg-neutral'\n | 'outline-bg-error'\n | 'text-primary'\n | 'text-neutral'\n | 'text-transparent'\n | 'square-neutral';\n\n/**\n * @deprecated Should only be used for Stencil components; for Lit components, use the button-style.ts\n * This file is required to be in a tsx file to be able to use it in Stencil components.\n */\nexport function getClassNameForButtonStyle(buttonStyle: ButtonStyle) {\n switch (buttonStyle) {\n case 'primary':\n return 'btn-primary';\n case 'outline-primary':\n return 'btn-outline-primary';\n case 'outline-neutral':\n return 'btn-outline-neutral';\n case 'outline-error':\n return 'btn-outline-error';\n case 'outline-bg-neutral':\n return 'btn-outline-bg-neutral';\n case 'outline-bg-error':\n return 'btn-outline-bg-error';\n case 'text-primary':\n return 'btn-text-primary';\n case 'text-neutral':\n return 'btn-text-neutral';\n case 'text-transparent':\n return 'btn-text-transparent';\n case 'square-neutral':\n return 'btn-square-neutral';\n }\n}\n\n/**\n * @deprecated Should only be used for Stencil components; for Lit components, use the button-style.ts\n * This file is required to be in a tsx file to be able to use it in Stencil components.\n */\nexport function getRippleColorForButtonStyle(buttonStyle: ButtonStyle) {\n switch (buttonStyle) {\n case 'primary':\n return 'primary';\n case 'text-transparent':\n return 'neutral-light';\n default:\n return 'neutral';\n }\n}\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {createRipple} from '../../utils/ripple-utils';\nimport {\n ButtonStyle,\n getRippleColorForButtonStyle,\n getClassNameForButtonStyle,\n} from './stencil-button-style';\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport interface StencilButtonProps {\n style: ButtonStyle;\n onClick?(event?: MouseEvent): void;\n class?: string;\n text?: string;\n part?: string;\n type?: string;\n form?: string;\n role?: string;\n disabled?: boolean;\n ariaLabel?: string;\n ariaExpanded?: string;\n ariaPressed?: string;\n ariaChecked?: string;\n ariaCurrent?: string;\n ariaControls?: string;\n ariaHidden?: string;\n tabIndex?: string;\n title?: string;\n ref?(element?: HTMLButtonElement): void;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const Button: FunctionalComponent<StencilButtonProps> = (\n props,\n children\n) => {\n const rippleColor = getRippleColorForButtonStyle(props.style);\n const className = getClassNameForButtonStyle(props.style);\n\n const attributes = {\n class: props.class ? `${className} ${props.class}` : className,\n part: props.part,\n onClick: props.onClick,\n title: props.title,\n type: props.type,\n role: props.role,\n 'aria-label': props.ariaLabel,\n 'aria-expanded': props.ariaExpanded,\n 'aria-pressed': props.ariaPressed,\n 'aria-checked': props.ariaChecked,\n 'aria-current': props.ariaCurrent,\n 'aria-controls': props.ariaControls,\n 'aria-hidden': props.ariaHidden,\n disabled: props.disabled,\n ref(buttonEl?: HTMLButtonElement) {\n if (props.form) {\n buttonEl?.setAttribute('form', props.form);\n }\n if (props.ariaHidden) {\n buttonEl?.setAttribute('aria-hidden', props.ariaHidden);\n }\n if (props.tabIndex) {\n buttonEl?.setAttribute('tabindex', props.tabIndex);\n }\n props.ref?.(buttonEl);\n },\n };\n\n return (\n <button\n {...attributes}\n onMouseDown={(e) => createRipple(e, {color: rippleColor})}\n >\n {props.text ? <span class=\"truncate\">{props.text}</span> : null}\n {children}\n </button>\n );\n};\n"],"version":3}
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { b as buildCustomEvent } from './stencil-button.js';
|
|
2
|
-
import { d as defer } from './utils.js';
|
|
3
|
-
import { h } from '@stencil/core/internal/client';
|
|
4
|
-
|
|
5
|
-
const findAriaLiveEventName = 'atomic/accessibility/findAriaLive';
|
|
6
|
-
/**
|
|
7
|
-
* @deprecated use Lit equivalent
|
|
8
|
-
*/
|
|
9
|
-
function AriaLiveRegion(regionName, assertive = false) {
|
|
10
|
-
function getAriaLiveElement() {
|
|
11
|
-
const event = buildCustomEvent(findAriaLiveEventName, {});
|
|
12
|
-
document.dispatchEvent(event);
|
|
13
|
-
const { element } = event.detail;
|
|
14
|
-
return element;
|
|
15
|
-
}
|
|
16
|
-
function dispatchMessage(message) {
|
|
17
|
-
getAriaLiveElement()?.updateMessage(regionName, message, assertive);
|
|
18
|
-
}
|
|
19
|
-
function registerRegion() {
|
|
20
|
-
getAriaLiveElement()?.registerRegion(regionName, assertive);
|
|
21
|
-
}
|
|
22
|
-
return (component, setterName) => {
|
|
23
|
-
const { componentWillRender } = component;
|
|
24
|
-
Object.defineProperty(component, setterName, {
|
|
25
|
-
set: (message) => dispatchMessage(message),
|
|
26
|
-
});
|
|
27
|
-
component.componentWillRender = function () {
|
|
28
|
-
componentWillRender && componentWillRender.call(this);
|
|
29
|
-
registerRegion();
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* @deprecated use Lit equivalent
|
|
35
|
-
*/
|
|
36
|
-
class FocusTargetController {
|
|
37
|
-
constructor(component) {
|
|
38
|
-
this.component = component;
|
|
39
|
-
this.registerFocusCallback = (callback) => {
|
|
40
|
-
this.publicOnFocusCallbacks.push(callback);
|
|
41
|
-
};
|
|
42
|
-
this.doFocusAfterSearch = false;
|
|
43
|
-
this.doFocusOnNextTarget = false;
|
|
44
|
-
this.publicOnFocusCallbacks = [];
|
|
45
|
-
this.bindings = component.bindings;
|
|
46
|
-
this.handleComponentRenderLoop();
|
|
47
|
-
}
|
|
48
|
-
clearFocusCallbacks() {
|
|
49
|
-
this.internalOnFocusCallback?.();
|
|
50
|
-
while (this.publicOnFocusCallbacks.length) {
|
|
51
|
-
this.publicOnFocusCallbacks.pop()?.();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
setTarget(el) {
|
|
55
|
-
if (!el) {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
this.element = el;
|
|
59
|
-
if (this.doFocusOnNextTarget) {
|
|
60
|
-
this.doFocusOnNextTarget = false;
|
|
61
|
-
this.focus();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
async focus() {
|
|
65
|
-
await defer();
|
|
66
|
-
this.element?.focus();
|
|
67
|
-
this.clearFocusCallbacks();
|
|
68
|
-
}
|
|
69
|
-
focusAfterSearch() {
|
|
70
|
-
this.lastSearchId = this.bindings.store.getUniqueIDFromEngine(this.bindings.engine);
|
|
71
|
-
this.doFocusAfterSearch = true;
|
|
72
|
-
return new Promise((resolve) => (this.internalOnFocusCallback = resolve));
|
|
73
|
-
}
|
|
74
|
-
focusOnNextTarget() {
|
|
75
|
-
this.doFocusOnNextTarget = true;
|
|
76
|
-
return new Promise((resolve) => (this.internalOnFocusCallback = resolve));
|
|
77
|
-
}
|
|
78
|
-
disableForCurrentSearch() {
|
|
79
|
-
if (this.bindings.store.getUniqueIDFromEngine(this.bindings.engine) !==
|
|
80
|
-
this.lastSearchId) {
|
|
81
|
-
this.doFocusAfterSearch = false;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
handleComponentRenderLoop() {
|
|
85
|
-
const originalComponentDidRender = this.component.componentDidRender;
|
|
86
|
-
this.component.componentDidRender = () => {
|
|
87
|
-
originalComponentDidRender &&
|
|
88
|
-
originalComponentDidRender.call(this.component);
|
|
89
|
-
if (!this.bindings) {
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
if (this.doFocusAfterSearch &&
|
|
93
|
-
this.bindings.store.getUniqueIDFromEngine(this.bindings.engine) !==
|
|
94
|
-
this.lastSearchId) {
|
|
95
|
-
this.doFocusAfterSearch = false;
|
|
96
|
-
if (this.element) {
|
|
97
|
-
const el = this.element;
|
|
98
|
-
// The focus seems to be flaky without deferring, especially on iOS.
|
|
99
|
-
defer().then(() => {
|
|
100
|
-
el.focus();
|
|
101
|
-
this.clearFocusCallbacks();
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
function isFocusable(element) {
|
|
109
|
-
// Source: https://stackoverflow.com/a/30753870
|
|
110
|
-
if (element.getAttribute('tabindex') === '-1') {
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
if (element.hasAttribute('tabindex')) {
|
|
114
|
-
return true;
|
|
115
|
-
}
|
|
116
|
-
if (element.getAttribute('contentEditable') === 'true') {
|
|
117
|
-
return true;
|
|
118
|
-
}
|
|
119
|
-
switch (element.tagName) {
|
|
120
|
-
case 'A':
|
|
121
|
-
case 'AREA':
|
|
122
|
-
return element.hasAttribute('href');
|
|
123
|
-
case 'INPUT':
|
|
124
|
-
case 'SELECT':
|
|
125
|
-
case 'TEXTAREA':
|
|
126
|
-
case 'BUTTON':
|
|
127
|
-
return !element.hasAttribute('disabled');
|
|
128
|
-
case 'IFRAME':
|
|
129
|
-
return true;
|
|
130
|
-
default:
|
|
131
|
-
return false;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* @deprecated use Lit equivalent
|
|
136
|
-
*/
|
|
137
|
-
function* getFocusableDescendants(element) {
|
|
138
|
-
if (isFocusable(element)) {
|
|
139
|
-
yield element;
|
|
140
|
-
}
|
|
141
|
-
let children = Array.from(element.children);
|
|
142
|
-
if (element instanceof HTMLSlotElement) {
|
|
143
|
-
children = element.assignedElements();
|
|
144
|
-
}
|
|
145
|
-
else if (element.shadowRoot) {
|
|
146
|
-
children.push(...Array.from(element.shadowRoot.children));
|
|
147
|
-
}
|
|
148
|
-
for (const child of children) {
|
|
149
|
-
yield* getFocusableDescendants(child);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* @deprecated use Lit equivalent
|
|
154
|
-
*/
|
|
155
|
-
function getFirstFocusableDescendant(element) {
|
|
156
|
-
return getFocusableDescendants(element).next().value ?? null;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* @deprecated should only be used for Stencil components.
|
|
161
|
-
*/
|
|
162
|
-
const Heading = ({ level, ...htmlProps }, children) => {
|
|
163
|
-
const HeadingTag = level > 0 && level <= 6 ? `h${level}` : 'div';
|
|
164
|
-
return h(HeadingTag, { ...htmlProps }, children);
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
export { AriaLiveRegion as A, FocusTargetController as F, Heading as H, getFirstFocusableDescendant as g };
|
|
168
|
-
|
|
169
|
-
//# sourceMappingURL=stencil-heading.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"stencil-heading.js","mappings":"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","names":[],"sources":["src/utils/stencil-accessibility-utils.tsx","src/components/common/stencil-heading.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AtomicAriaLive } from '../components/common/atomic-aria-live/atomic-aria-live';\nimport {AnyBindings} from '../components/common/interface/bindings';\nimport {buildCustomEvent} from './event-utils';\nimport {InitializableComponent} from './initialization-utils';\nimport {defer} from './utils';\n\nconst findAriaLiveEventName = 'atomic/accessibility/findAriaLive';\n\n/**\n * @deprecated use Lit equivalent\n */\nexport interface FindAriaLiveEventArgs {\n element?: AtomicAriaLive;\n}\n\n/**\n * @deprecated use Lit equivalent\n */\nexport function AriaLiveRegion(regionName: string, assertive = false) {\n function getAriaLiveElement() {\n const event = buildCustomEvent<FindAriaLiveEventArgs>(\n findAriaLiveEventName,\n {}\n );\n document.dispatchEvent(event);\n const {element} = event.detail;\n return element;\n }\n\n function dispatchMessage(message: string) {\n getAriaLiveElement()?.updateMessage(regionName, message, assertive);\n }\n\n function registerRegion() {\n getAriaLiveElement()?.registerRegion(regionName, assertive);\n }\n\n return (\n component: InitializableComponent<AnyBindings>,\n setterName: string\n ) => {\n const {componentWillRender} = component;\n Object.defineProperty(component, setterName, {\n set: (message: string) => dispatchMessage(message),\n });\n\n component.componentWillRender = function () {\n componentWillRender && componentWillRender.call(this);\n registerRegion();\n };\n };\n}\n\n/**\n * @deprecated use Lit equivalent\n */\nexport class FocusTargetController {\n private bindings: AnyBindings;\n private lastSearchId?: string;\n private element?: HTMLElement;\n public registerFocusCallback: (callback: Function) => void = (\n callback: Function\n ) => {\n this.publicOnFocusCallbacks.push(callback);\n };\n private internalOnFocusCallback?: Function;\n private doFocusAfterSearch = false;\n private doFocusOnNextTarget = false;\n private publicOnFocusCallbacks: Function[] = [];\n\n constructor(private component: InitializableComponent<AnyBindings>) {\n this.bindings = component.bindings;\n this.handleComponentRenderLoop();\n }\n\n private clearFocusCallbacks() {\n this.internalOnFocusCallback?.();\n while (this.publicOnFocusCallbacks.length) {\n this.publicOnFocusCallbacks.pop()?.();\n }\n }\n\n public setTarget(el: HTMLElement | undefined) {\n if (!el) {\n return;\n }\n this.element = el;\n if (this.doFocusOnNextTarget) {\n this.doFocusOnNextTarget = false;\n this.focus();\n }\n }\n\n public async focus() {\n await defer();\n this.element?.focus();\n this.clearFocusCallbacks();\n }\n\n public focusAfterSearch() {\n this.lastSearchId = this.bindings.store.getUniqueIDFromEngine(\n this.bindings.engine\n );\n this.doFocusAfterSearch = true;\n return new Promise((resolve) => (this.internalOnFocusCallback = resolve));\n }\n\n public focusOnNextTarget() {\n this.doFocusOnNextTarget = true;\n return new Promise((resolve) => (this.internalOnFocusCallback = resolve));\n }\n\n public disableForCurrentSearch() {\n if (\n this.bindings.store.getUniqueIDFromEngine(this.bindings.engine) !==\n this.lastSearchId\n ) {\n this.doFocusAfterSearch = false;\n }\n }\n\n private handleComponentRenderLoop() {\n const originalComponentDidRender = this.component.componentDidRender;\n\n this.component.componentDidRender = () => {\n originalComponentDidRender &&\n originalComponentDidRender.call(this.component);\n if (!this.bindings) {\n return;\n }\n if (\n this.doFocusAfterSearch &&\n this.bindings.store.getUniqueIDFromEngine(this.bindings.engine) !==\n this.lastSearchId\n ) {\n this.doFocusAfterSearch = false;\n if (this.element) {\n const el = this.element;\n // The focus seems to be flaky without deferring, especially on iOS.\n defer().then(() => {\n el.focus();\n this.clearFocusCallbacks();\n });\n }\n }\n };\n }\n}\n\nfunction isFocusable(element: Element) {\n // Source: https://stackoverflow.com/a/30753870\n if (element.getAttribute('tabindex') === '-1') {\n return false;\n }\n if (element.hasAttribute('tabindex')) {\n return true;\n }\n if (element.getAttribute('contentEditable') === 'true') {\n return true;\n }\n switch (element.tagName) {\n case 'A':\n case 'AREA':\n return element.hasAttribute('href');\n case 'INPUT':\n case 'SELECT':\n case 'TEXTAREA':\n case 'BUTTON':\n return !element.hasAttribute('disabled');\n case 'IFRAME':\n return true;\n default:\n return false;\n }\n}\n\n/**\n * @deprecated use Lit equivalent\n */\nexport function* getFocusableDescendants(\n element: Element\n): Generator<HTMLElement> {\n if (isFocusable(element)) {\n yield element as HTMLElement;\n }\n let children = Array.from(element.children);\n if (element instanceof HTMLSlotElement) {\n children = element.assignedElements();\n } else if (element.shadowRoot) {\n children.push(...Array.from(element.shadowRoot.children));\n }\n for (const child of children) {\n yield* getFocusableDescendants(child);\n }\n}\n\n/**\n * @deprecated use Lit equivalent\n */\nexport function getFirstFocusableDescendant(\n element: Element\n): HTMLElement | null {\n return getFocusableDescendants(element).next().value ?? null;\n}\n","import {h, FunctionalComponent} from '@stencil/core';\nimport {JSXBase} from '@stencil/core/internal';\nimport {HeadingProps} from './heading';\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const Heading: FunctionalComponent<\n Pick<HeadingProps, 'level'> & JSXBase.HTMLAttributes<HTMLHeadingElement>\n> = ({level, ...htmlProps}, children) => {\n const HeadingTag = level > 0 && level <= 6 ? `h${level}` : 'div';\n return <HeadingTag {...htmlProps}>{children}</HeadingTag>;\n};\n"],"version":3}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { h } from '@stencil/core/internal/client';
|
|
2
|
-
import { B as Button } from './stencil-button.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @deprecated should only be used for Stencil components.
|
|
6
|
-
*/
|
|
7
|
-
const IconButton = (props) => {
|
|
8
|
-
return (h("div", { class: "relative", part: `${props.partPrefix}-container` },
|
|
9
|
-
h(Button, { ...props, class: "relative h-[2.6rem] w-[2.6rem] p-3", part: `${props.partPrefix}-button`, ref: props.buttonRef },
|
|
10
|
-
h("atomic-icon", { icon: props.icon, class: "h-4 w-4 shrink-0", part: `${props.partPrefix}-icon` })),
|
|
11
|
-
props.badge && (h("span", { part: `${props.partPrefix}-badge`, class: "bg-primary text-on-primary absolute -top-2 -right-2 block h-4 w-4 rounded-full text-center text-xs leading-4" }, props.badge))));
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
export { IconButton as I };
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=stencil-iconButton.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"stencil-iconButton.js","mappings":";;;AAUA;;;MAGa,UAAU,GAAyC,CAAC,KAAK;IACpE,QACE,WAAK,KAAK,EAAC,UAAU,EAAC,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,YAAY;QACzD,EAAC,MAAM,OACD,KAAK,EACT,KAAK,EAAC,oCAAoC,EAC1C,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,SAAS,EAClC,GAAG,EAAE,KAAK,CAAC,SAAS;YAEpB,mBACE,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAC,kBAAkB,EACxB,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,OAAO,GACnB,CACR;QACR,KAAK,CAAC,KAAK,KACV,YACE,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,QAAQ,EACjC,KAAK,EAAC,8GAA8G,IAEnH,KAAK,CAAC,KAAK,CACP,CACR,CACG,EACN;AACJ;;;;","names":[],"sources":["src/components/common/stencil-iconButton.tsx"],"sourcesContent":["import {FunctionalComponent, h, VNode} from '@stencil/core';\nimport {Button, StencilButtonProps} from './stencil-button';\n\ninterface IconButtonProps extends StencilButtonProps {\n badge?: VNode;\n buttonRef?: (el?: HTMLButtonElement) => void;\n icon: string;\n partPrefix: string;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const IconButton: FunctionalComponent<IconButtonProps> = (props) => {\n return (\n <div class=\"relative\" part={`${props.partPrefix}-container`}>\n <Button\n {...props}\n class=\"relative h-[2.6rem] w-[2.6rem] p-3\"\n part={`${props.partPrefix}-button`}\n ref={props.buttonRef}\n >\n <atomic-icon\n icon={props.icon}\n class=\"h-4 w-4 shrink-0\"\n part={`${props.partPrefix}-icon`}\n ></atomic-icon>\n </Button>\n {props.badge && (\n <span\n part={`${props.partPrefix}-badge`}\n class=\"bg-primary text-on-primary absolute -top-2 -right-2 block h-4 w-4 rounded-full text-center text-xs leading-4\"\n >\n {props.badge}\n </span>\n )}\n </div>\n );\n};\n"],"version":3}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
const isRefineModalFacet = 'is-refine-modal';
|
|
2
|
-
function createAppLoadedListener(store, callback) {
|
|
3
|
-
const updateIsAppLoaded = () => {
|
|
4
|
-
const isAppLoaded = store.state.loadingFlags.length === 0;
|
|
5
|
-
callback(isAppLoaded);
|
|
6
|
-
};
|
|
7
|
-
store.onChange('loadingFlags', updateIsAppLoaded);
|
|
8
|
-
updateIsAppLoaded();
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export { createAppLoadedListener as c, isRefineModalFacet as i };
|
|
12
|
-
|
|
13
|
-
//# sourceMappingURL=store.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"store.js","mappings":"MAUa,kBAAkB,GAAG,kBAAkB;SAWpC,uBAAuB,CACrC,KAA4C,EAC5C,QAAwC;IAExC,MAAM,iBAAiB,GAAG;QACxB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC;QAC1D,QAAQ,CAAC,WAAW,CAAC,CAAC;KACvB,CAAC;IAEF,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAClD,iBAAiB,EAAE,CAAC;AACtB;;;;","names":[],"sources":["src/components/common/interface/store.ts"],"sourcesContent":["import type {DateFacetValue, NumericFacetValue} from '@coveo/headless';\nimport {isInDocument} from '../../../utils/utils';\nimport type {\n FacetInfo,\n FacetStore,\n FacetType,\n FacetValueFormat,\n} from '../facets/facet-common-store';\nimport type {AnyEngineType} from './bindings';\n\nexport const isRefineModalFacet = 'is-refine-modal';\n\nexport type BaseStore<T> = CommonStore<T> & {\n getUniqueIDFromEngine(engine: unknown): string | undefined;\n};\n\nexport interface ResultListInfo {\n focusOnNextNewResult(): void;\n focusOnFirstResultAfterNextSearch(): Promise<void>;\n}\n\nexport function createAppLoadedListener(\n store: CommonStore<{loadingFlags: string[]}>,\n callback: (isAppLoaded: boolean) => void\n) {\n const updateIsAppLoaded = () => {\n const isAppLoaded = store.state.loadingFlags.length === 0;\n callback(isAppLoaded);\n };\n\n store.onChange('loadingFlags', updateIsAppLoaded);\n updateIsAppLoaded();\n}\n\nexport function createBaseStore<T extends {}>(initialState: T): BaseStore<T> {\n const store = createStore(initialState) as CommonStore<T>;\n\n return {\n ...store,\n\n getUniqueIDFromEngine(_engine: AnyEngineType) {\n throw new Error(\n 'getUniqueIDFromEngine not implemented at the base store level.'\n );\n },\n };\n}\n\nexport function registerFacet<T extends FacetType, U extends string>(\n store: CommonStore<Facets>,\n facetType: T,\n data: Facets[T][U] & {facetId: U; element: HTMLElement}\n) {\n const clearExistingFacetElement = (facetType: FacetType, facetId: string) => {\n if (store.state[facetType][facetId]) {\n store.state.facetElements = store.state.facetElements.filter(\n (facetElement) => facetElement.getAttribute('facet-id') !== facetId\n );\n }\n };\n\n if (data.element.getAttribute(isRefineModalFacet) !== null) {\n return;\n }\n\n clearExistingFacetElement(facetType, data.facetId);\n store.state.facetElements.push(data.element);\n store.state[facetType][data.facetId] = data;\n}\n\nexport function setLoadingFlag(\n store: CommonStore<{loadingFlags: string[]}>,\n loadingFlag: string\n) {\n const flags = store.state.loadingFlags;\n store.state.loadingFlags = flags.concat(loadingFlag);\n}\n\nexport function unsetLoadingFlag(\n store: CommonStore<{loadingFlags: string[]}>,\n loadingFlag: string\n) {\n const flags = store.state.loadingFlags;\n store.state.loadingFlags = flags.filter((value) => value !== loadingFlag);\n}\n\nexport function getFacetElements(store: CommonStore<Facets>) {\n return store.state.facetElements.filter((element) => isInDocument(element));\n}\n\nexport function waitUntilAppLoaded(\n store: CommonStore<{loadingFlags: string[]}>,\n callback: () => void\n) {\n if (!store.state.loadingFlags.length) {\n callback();\n } else {\n store.onChange('loadingFlags', (flags) => {\n if (!flags.length) {\n callback();\n }\n });\n }\n}\n\ninterface CommonStore<StoreData> {\n state: StoreData;\n get: <PropName extends keyof StoreData>(\n propName: PropName\n ) => StoreData[PropName];\n set: <PropName extends keyof StoreData>(\n propName: PropName,\n value: StoreData[PropName]\n ) => void;\n onChange: <PropName extends keyof StoreData>(\n propName: PropName,\n cb: (newValue: StoreData[PropName]) => void\n ) => () => void;\n}\n\ninterface Facets {\n facets: FacetStore<FacetInfo>;\n numericFacets: FacetStore<FacetInfo & FacetValueFormat<NumericFacetValue>>;\n dateFacets: FacetStore<FacetInfo & FacetValueFormat<DateFacetValue>>;\n categoryFacets: FacetStore<FacetInfo>;\n facetElements: HTMLElement[];\n}\n\nfunction createStore<StoreData extends Record<string, unknown>>(\n initialState: StoreData\n): CommonStore<StoreData> {\n const listeners = new Map<\n keyof StoreData,\n Set<(newValue: unknown) => void>\n >();\n\n const state = new Proxy(initialState, {\n set(target, prop: string, value) {\n const oldValue = target[prop];\n if (oldValue !== value) {\n (target as Record<string, unknown>)[prop] = value;\n\n if (listeners.has(prop)) {\n for (const cb of listeners.get(prop)!) {\n cb(value);\n }\n }\n }\n return true;\n },\n });\n\n const get = <PropName extends keyof StoreData>(\n propName: PropName\n ): StoreData[PropName] => {\n return state[propName];\n };\n\n const set = <PropName extends keyof StoreData>(\n propName: PropName,\n value: StoreData[PropName]\n ): void => {\n state[propName] = value;\n };\n\n const onChange = <PropName extends keyof StoreData>(\n propName: PropName,\n callback: (newValue: StoreData[PropName]) => void\n ): (() => void) => {\n if (!listeners.has(propName)) {\n listeners.set(propName, new Set());\n }\n listeners.get(propName)!.add(callback as (newValue: unknown) => void);\n\n return () => {\n listeners.get(propName)!.delete(callback as (newValue: unknown) => void);\n if (listeners.get(propName)!.size === 0) {\n listeners.delete(propName);\n }\n };\n };\n\n return {\n state,\n get,\n set,\n onChange,\n };\n}\n"],"version":3}
|