@coveo/atomic 3.50.0 → 3.51.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 +2254 -372
- 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 -10
- package/dist/atomic/components/_index.js +2 -8
- package/dist/atomic/components/atomic-insight-result-action.js +122 -5
- package/dist/atomic/components/atomic-insight-result-action.js.map +1 -1
- package/dist/atomic/components/atomic-insight-result-children-template.js +1 -2
- package/dist/atomic/components/atomic-insight-result-children-template.js.map +1 -1
- package/dist/atomic/components/atomic-insight-timeframe-facet.js +96 -6
- package/dist/atomic/components/atomic-insight-timeframe-facet.js.map +1 -1
- package/dist/atomic/components/atomic-stencil-facet-date-input.js +3 -3
- package/dist/atomic/components/components/common/generated-answer/render-feedback-and-copy-buttons.js +4 -3
- 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-attach-to-case-action/atomic-insight-result-attach-to-case-action.js +122 -0
- package/dist/atomic/components/components/insight/index.js +2 -0
- package/dist/atomic/components/components/insight/lazy-index.js +2 -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-generated-answer/atomic-generated-answer.js +7 -1
- package/dist/atomic/components/components/search/atomic-refine-modal/atomic-refine-modal.js +2 -1
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/components/index.js.map +1 -1
- package/dist/atomic/components/props-utils.js +1402 -2
- package/dist/atomic/components/props-utils.js.map +1 -1
- package/dist/atomic/components/utils/custom-element-tags.js +6 -0
- package/dist/atomic/index.esm.js +1 -1
- package/dist/atomic/p-1df0744f.entry.js +9 -0
- package/dist/atomic/p-1df0744f.entry.js.map +1 -0
- package/dist/atomic/{p-4a32511f.js → p-2045a1b1.js} +2 -2
- package/dist/atomic/p-500bf5c4.entry.js +2 -0
- package/dist/atomic/{p-4117289b.entry.js.map → p-500bf5c4.entry.js.map} +1 -1
- package/dist/atomic/p-5226a938.js +3 -0
- package/dist/atomic/p-5226a938.js.map +1 -0
- package/dist/atomic/{p-b4cfedf1.js → p-720863c3.js} +2 -2
- package/dist/atomic/p-81336626.entry.js +2 -0
- package/dist/atomic/p-81336626.entry.js.map +1 -0
- package/dist/atomic/p-aad3b4ec.js +3 -0
- package/dist/atomic/p-aad3b4ec.js.map +1 -0
- package/dist/atomic/{p-0698ccf1.entry.js → p-b5af331b.entry.js} +2 -2
- package/dist/atomic/{p-677f9c40.js → p-b7209471.js} +2 -2
- package/dist/cjs/_index.cjs.js +2 -2
- package/dist/cjs/_loader.cjs.js +2 -2
- package/dist/cjs/atomic-insight-result-action.cjs.entry.js +21 -8
- package/dist/cjs/atomic-insight-result-action.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-result-children-template.cjs.entry.js +6 -7
- package/dist/cjs/atomic-insight-result-children-template.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-timeframe-facet.cjs.entry.js +105 -15
- package/dist/cjs/atomic-insight-timeframe-facet.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-stencil-facet-date-input.cjs.entry.js +5 -5
- package/dist/cjs/atomic.cjs.js +2 -2
- package/dist/cjs/{index-3532822e.js → index-122375df.js} +4 -58
- package/dist/cjs/index-122375df.js.map +1 -0
- package/dist/cjs/{initialization-utils-51a423fe.js → initialization-utils-c2821271.js} +2 -2
- package/dist/cjs/{initialization-utils-51a423fe.js.map → initialization-utils-c2821271.js.map} +1 -1
- package/dist/cjs/{utils-e845f262.js → props-utils-e4f29f1e.js} +54 -21
- package/dist/cjs/props-utils-e4f29f1e.js.map +1 -0
- package/dist/cjs/{stencil-button-f39da03e.js → stencil-button-bf22eea4.js} +2 -2
- package/dist/cjs/{stencil-button-f39da03e.js.map → stencil-button-bf22eea4.js.map} +1 -1
- package/dist/cjs/{stencil-result-template-decorators-1f099c15.js → stencil-result-template-decorators-96954751.js} +2 -2
- package/dist/cjs/{stencil-result-template-decorators-1f099c15.js.map → stencil-result-template-decorators-96954751.js.map} +1 -1
- package/dist/cjs/version.cjs.js +2 -2
- package/dist/esm/_index.js +3 -3
- package/dist/esm/_loader.js +3 -3
- package/dist/esm/atomic-insight-result-action.entry.js +19 -6
- package/dist/esm/atomic-insight-result-action.entry.js.map +1 -1
- package/dist/esm/atomic-insight-result-children-template.entry.js +2 -3
- package/dist/esm/atomic-insight-result-children-template.entry.js.map +1 -1
- package/dist/esm/atomic-insight-timeframe-facet.entry.js +99 -9
- package/dist/esm/atomic-insight-timeframe-facet.entry.js.map +1 -1
- package/dist/esm/atomic-stencil-facet-date-input.entry.js +5 -5
- package/dist/esm/atomic.js +3 -3
- package/dist/esm/{index-3eb0b28e.js → index-4d679e44.js} +5 -58
- package/dist/{cjs/index-3532822e.js.map → esm/index-4d679e44.js.map} +1 -1
- package/dist/esm/{initialization-utils-82d28c63.js → initialization-utils-9ff399ff.js} +2 -2
- package/dist/esm/{initialization-utils-82d28c63.js.map → initialization-utils-9ff399ff.js.map} +1 -1
- package/dist/esm/{utils-b5bab369.js → props-utils-76043c82.js} +54 -18
- package/dist/esm/props-utils-76043c82.js.map +1 -0
- package/dist/esm/{stencil-button-c25899df.js → stencil-button-28de709c.js} +2 -2
- package/dist/esm/{stencil-button-c25899df.js.map → stencil-button-28de709c.js.map} +1 -1
- package/dist/esm/{stencil-result-template-decorators-9cbe1e1c.js → stencil-result-template-decorators-4c2e5132.js} +2 -2
- package/dist/esm/{stencil-result-template-decorators-9cbe1e1c.js.map → stencil-result-template-decorators-4c2e5132.js.map} +1 -1
- package/dist/esm/version.js +2 -2
- package/dist/types/components/common/generated-answer/answerContent/answer-content.d.ts +49 -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-attach-to-case-action/atomic-insight-result-attach-to-case-action.d.ts +25 -20
- package/dist/types/components/insight/index.d.ts +2 -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-refine-modal/atomic-refine-modal.d.ts +4 -3
- package/dist/types/components.d.ts +0 -249
- package/docs/atomic-docs.json +1 -26
- package/package.json +3 -3
- 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-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-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/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/popover-type.js +0 -12
- package/dist/atomic/components/popover-type.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-0f896350.entry.js +0 -2
- package/dist/atomic/p-0f896350.entry.js.map +0 -1
- package/dist/atomic/p-4117289b.entry.js +0 -2
- package/dist/atomic/p-578d761c.js +0 -2
- package/dist/atomic/p-578d761c.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-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-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-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/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-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-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/attach-19283bec.js +0 -10
- package/dist/cjs/attach-19283bec.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-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/store-70fff5e6.js +0 -16
- package/dist/cjs/store-70fff5e6.js.map +0 -1
- package/dist/cjs/utils-e845f262.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-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-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/attach-81bb8872.js +0 -8
- package/dist/esm/attach-81bb8872.js.map +0 -1
- package/dist/esm/index-3eb0b28e.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-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/store-50d170c8.js +0 -13
- package/dist/esm/store-50d170c8.js.map +0 -1
- package/dist/esm/utils-b5bab369.js.map +0 -1
- /package/dist/atomic/{p-4a32511f.js.map → p-2045a1b1.js.map} +0 -0
- /package/dist/atomic/{p-b4cfedf1.js.map → p-720863c3.js.map} +0 -0
- /package/dist/atomic/{p-0698ccf1.entry.js.map → p-b5af331b.entry.js.map} +0 -0
- /package/dist/atomic/{p-677f9c40.js.map → p-b7209471.js.map} +0 -0
|
@@ -1,13 +1,85 @@
|
|
|
1
1
|
import { h, proxyCustomElement, HTMLElement } from '@stencil/core/internal/client';
|
|
2
2
|
import { buildFacetConditionsManager, buildDateRange, deserializeRelativeDate, buildSearchStatus, buildDateFacet, buildDateFilter, loadDateFacetSetActions } from '@coveo/headless/insight';
|
|
3
3
|
import { H as Hidden, I as InitializeBindings, B as BindStateToController } from './initialization-utils.js';
|
|
4
|
-
import { M as MapProp } from './props-utils.js';
|
|
5
|
-
import { H as Heading, F as FocusTargetController } from './stencil-heading.js';
|
|
4
|
+
import { d as defer, r as randomID, M as MapProp } from './props-utils.js';
|
|
6
5
|
import { p as parseDate } from './date-utils.js';
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
import { B as Button, b as buildCustomEvent } from './stencil-button.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated use Lit equivalent
|
|
10
|
+
*/
|
|
11
|
+
class FocusTargetController {
|
|
12
|
+
constructor(component) {
|
|
13
|
+
this.component = component;
|
|
14
|
+
this.registerFocusCallback = (callback) => {
|
|
15
|
+
this.publicOnFocusCallbacks.push(callback);
|
|
16
|
+
};
|
|
17
|
+
this.doFocusAfterSearch = false;
|
|
18
|
+
this.doFocusOnNextTarget = false;
|
|
19
|
+
this.publicOnFocusCallbacks = [];
|
|
20
|
+
this.bindings = component.bindings;
|
|
21
|
+
this.handleComponentRenderLoop();
|
|
22
|
+
}
|
|
23
|
+
clearFocusCallbacks() {
|
|
24
|
+
this.internalOnFocusCallback?.();
|
|
25
|
+
while (this.publicOnFocusCallbacks.length) {
|
|
26
|
+
this.publicOnFocusCallbacks.pop()?.();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
setTarget(el) {
|
|
30
|
+
if (!el) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.element = el;
|
|
34
|
+
if (this.doFocusOnNextTarget) {
|
|
35
|
+
this.doFocusOnNextTarget = false;
|
|
36
|
+
this.focus();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async focus() {
|
|
40
|
+
await defer();
|
|
41
|
+
this.element?.focus();
|
|
42
|
+
this.clearFocusCallbacks();
|
|
43
|
+
}
|
|
44
|
+
focusAfterSearch() {
|
|
45
|
+
this.lastSearchId = this.bindings.store.getUniqueIDFromEngine(this.bindings.engine);
|
|
46
|
+
this.doFocusAfterSearch = true;
|
|
47
|
+
return new Promise((resolve) => (this.internalOnFocusCallback = resolve));
|
|
48
|
+
}
|
|
49
|
+
focusOnNextTarget() {
|
|
50
|
+
this.doFocusOnNextTarget = true;
|
|
51
|
+
return new Promise((resolve) => (this.internalOnFocusCallback = resolve));
|
|
52
|
+
}
|
|
53
|
+
disableForCurrentSearch() {
|
|
54
|
+
if (this.bindings.store.getUniqueIDFromEngine(this.bindings.engine) !==
|
|
55
|
+
this.lastSearchId) {
|
|
56
|
+
this.doFocusAfterSearch = false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
handleComponentRenderLoop() {
|
|
60
|
+
const originalComponentDidRender = this.component.componentDidRender;
|
|
61
|
+
this.component.componentDidRender = () => {
|
|
62
|
+
originalComponentDidRender &&
|
|
63
|
+
originalComponentDidRender.call(this.component);
|
|
64
|
+
if (!this.bindings) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (this.doFocusAfterSearch &&
|
|
68
|
+
this.bindings.store.getUniqueIDFromEngine(this.bindings.engine) !==
|
|
69
|
+
this.lastSearchId) {
|
|
70
|
+
this.doFocusAfterSearch = false;
|
|
71
|
+
if (this.element) {
|
|
72
|
+
const el = this.element;
|
|
73
|
+
// The focus seems to be flaky without deferring, especially on iOS.
|
|
74
|
+
defer().then(() => {
|
|
75
|
+
el.focus();
|
|
76
|
+
this.clearFocusCallbacks();
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
11
83
|
|
|
12
84
|
function parseDependsOn(dependsOn) {
|
|
13
85
|
if (Object.keys(dependsOn).length > 1) {
|
|
@@ -99,6 +171,20 @@ function getFieldValueCaption(field, facetValue, i18n) {
|
|
|
99
171
|
*/
|
|
100
172
|
const FacetContainer = (_, children) => (h("div", { class: "bg-background border-neutral rounded-lg border p-4", part: "facet" }, children));
|
|
101
173
|
|
|
174
|
+
const ArrowBottomIcon = `<svg viewBox="0 0 12.6 7.2" xmlns="http://www.w3.org/2000/svg"><path d="m11.421 7.04c-.3 0-.5-.1-.7-.3l-4.6-4.6-4.6 4.6c-.4.4-1 .4-1.4 0s-.4-1 0-1.4l5.2-5.2c.4-.4 1.2-.4 1.6 0l5.2 5.2c.4.4.4 1 0 1.4-.2.2-.4.3-.7.3" transform="matrix(-1 0 0 -1 12.366 7.086)"/></svg>`;
|
|
175
|
+
|
|
176
|
+
const ArrowTopIcon = `<svg viewBox="0 0 12.6 7.2" xmlns="http://www.w3.org/2000/svg"><path d="m11.3 7.04c-.3 0-.5-.1-.7-.3l-4.6-4.6-4.6 4.6c-.4.4-1 .4-1.4 0s-.4-1 0-1.4l5.2-5.2c.4-.4 1.2-.4 1.6 0l5.2 5.2c.4.4.4 1 0 1.4-.2.2-.4.3-.7.3"/></svg>`;
|
|
177
|
+
|
|
178
|
+
const CloseIcon = `<svg viewBox="0 0 22 22"><g transform="matrix(.7071 -.7071 .7071 .7071 -3.142 11)"><path d="m9-3.4h2v26.9h-2z"/><path d="m-3.4 9h26.9v2h-26.9z"/></g></svg>`;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* @deprecated should only be used for Stencil components.
|
|
182
|
+
*/
|
|
183
|
+
const Heading = ({ level, ...htmlProps }, children) => {
|
|
184
|
+
const HeadingTag = level > 0 && level <= 6 ? `h${level}` : 'div';
|
|
185
|
+
return h(HeadingTag, { ...htmlProps }, children);
|
|
186
|
+
};
|
|
187
|
+
|
|
102
188
|
/**
|
|
103
189
|
* @deprecated should only be used for Stencil components.
|
|
104
190
|
*/
|
|
@@ -272,6 +358,10 @@ const FacetValuesGroup = (props, children) => {
|
|
|
272
358
|
return h(FieldsetGroup, { label: groupLabel }, children);
|
|
273
359
|
};
|
|
274
360
|
|
|
361
|
+
function initializePopover(host, childFacet) {
|
|
362
|
+
host.dispatchEvent(buildCustomEvent('atomic/initializePopover', childFacet));
|
|
363
|
+
}
|
|
364
|
+
|
|
275
365
|
function shouldDisplayInputForFacetRange(facetRange) {
|
|
276
366
|
const { hasInput, hasInputRange, searchStatusState, facetValues } = facetRange;
|
|
277
367
|
if (!hasInput) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"atomic-insight-timeframe-facet.js","mappings":";;;;;;;;;;;SAcgB,cAAc,CAE5B,SAAiC;IACjC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACrC,MAAM,8CAA8C,CAAC;KACtD;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM;QACtD,aAAa;QACb,SAAS,EAAE,uBAAuB,CAAa,aAAa,CAAC;KAC9D,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,uBAAuB,CAE9B,aAAqB;IACrB,OAAO,CAAC,MAAoB,KAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;QAChB,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE;YAC/B,OAAO,yBAAyB,CAC9B,KAA2B,EAC3B,aAAa,CACd,CAAC;SACH;QACD,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;YAC7B,OAAO,uBAAuB,CAC5B,KAAyB,EACzB,aAAa,CACd,CAAC;SACH;QACD,OAAO,KAAK,CAAC;KACd,CAAC,CAAC;AACP,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAiB,EACjB,aAAqB;IAErB,MAAM,aAAa,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAC;IAClE,IAAI,CAAC,aAAa,EAAE;QAClB,OAAO,KAAK,CAAC;KACd;IACD,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,KAAK,aAAa,CAAC;AACjE,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAuB,EACvB,aAAqB;IAErB,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE;QAC9B,OAAO,KAAK,CAAC;KACd;IACD,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,KAAK,aAAa,CAAC;AACzD,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgB;IAC5C,MAAM,eAAe,GAAG,OAAkC,CAAC;IAC3D,QACE,CAAC,eAAe,EAAE,QAAQ;QACxB,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC;QACvC,eAAe,EAAE,KAAK;QACtB,OAAO,eAAe,CAAC,KAAK,KAAK,QAAQ,MAAM,IAAI,EACrD;AACJ,CAAC;AAED,SAAS,oCAAoC,CAC3C,KAAc;IAEd,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;QAChC,OAAO,IAAI,CAAC;KACb;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE;QAC9B,OAAO,KAAK,CAAC;KACd;IACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE;QAClC,MAAM,aAAa,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,aAAa,KAAK,IAAI,EAAE;YAC1B,OAAO,aAAa,CAAC;SACtB;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,MAAM,QAAQ,GAAG,KAAgC,CAAC;IAClD,QACE,OAAO,IAAI,QAAQ;QACnB,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;QAClC,EAAE,UAAU,IAAI,QAAQ,CAAC,EACzB;AACJ;;AClGA;;;AAGO,MAAM,gBAAgB,GAA+C,CAAC,EAC3E,cAAc,EACd,WAAW,GACZ;IACC,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;QACvC,WAAW,CAAC,IAAI,CACd,WACE,KAAK,EAAC,0BAA0B,EAChC,KAAK,EAAE,EAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAC,GACjC,CACR,CAAC;KACH;IAED,QACE,WACE,IAAI,EAAC,aAAa,EAClB,KAAK,EAAC,uEAAuE,iBACjE,MAAM;QAElB,WAAK,KAAK,EAAC,wBAAwB,EAAC,KAAK,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,GAAQ;QAChE,CAAC,WAAW,IAAI,WAAK,KAAK,EAAC,MAAM,IAAE,WAAW,CAAO,CAClD,EACN;AACJ,CAAC;;AChCD,SAAS,wBAAwB,CAAC,KAAa;IAC7C,OAAO,WAAW,KAAK,EAAE,CAAC;AAC5B,CAAC;SAQe,oBAAoB,CAClC,KAAa,EACb,UAAkB,EAClB,IAAU;IAEV,OAAO,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE;QACxB,EAAE,EAAE,wBAAwB,CAAC,KAAK,CAAC;KACpC,CAAC,CAAC;AACL;;AClBA;;;AAGO,MAAM,cAAc,GAAwB,CAAC,CAAC,EAAE,QAAQ,MAC7D,WAAK,KAAK,EAAC,oDAAoD,EAAC,IAAI,EAAC,OAAO,IACzE,QAAQ,CACL,CACP;;ACUD;;;AAGO,MAAM,WAAW,GAA0C,CAAC,KAAK;IACtE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,EAAC,KAAK,EAAC,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,EAAC,KAAK,EAAC,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE;QACjD,KAAK,EAAE,KAAK,CAAC,oBAAoB;KAClC,CAAC,CAAC;IACH,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,EAAE;QACnE,KAAK,EAAE,KAAK,CAAC,oBAAoB;QACjC,KAAK;KACN,CAAC,CAAC;IAEH,OAAO;QACL,EAAC,MAAM,IACL,KAAK,EAAC,kBAAkB,EACxB,IAAI,EAAC,cAAc,EACnB,KAAK,EAAC,sEAAsE,EAC5E,SAAS,EAAE,KAAK,CAAC,WAAW,GAAG,WAAW,GAAG,aAAa,EAC1D,OAAO,EAAE,MAAM,KAAK,CAAC,gBAAgB,EAAE,EACvC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,EAC7C,GAAG,EAAE,KAAK,CAAC,SAAS;YAEpB,EAAC,OAAO,IAAC,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,EAAC,UAAU,IACjD,KAAK,CACE;YACV,mBACE,IAAI,EAAC,mBAAmB,EACxB,KAAK,EAAC,+BAA+B,EACrC,IAAI,EAAE,KAAK,CAAC,WAAW,GAAG,eAAe,GAAG,YAAY,GAC3C,CACR;QACT,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,KACpD,EAAC,MAAM,IACL,KAAK,EAAC,cAAc,EACpB,IAAI,EAAC,cAAc,EACnB,KAAK,EAAC,4CAA4C,EAClD,SAAS,EAAE,oBAAoB,EAC/B,OAAO,EAAE,MAAM,KAAK,CAAC,cAAe,EAAE;YAEtC,mBACE,IAAI,EAAC,mBAAmB,EACxB,KAAK,EAAC,cAAc,EACpB,IAAI,EAAE,SAAS,GACF;YACf,gBAAO,YAAY,CAAQ,CACpB,CACV;KACF,CAAC;AACJ,CAAC;;;;;;;;;AC7DD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,GAAG,SAAS,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA;IACA,YAAc,GAAG,UAAU,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,MAAM,EAAE;AAC5B,EAAE,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AACxB,EAAE,IAAI,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC;AACA,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;AACpB;AACA,EAAE,KAAK,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACzD,IAAI,QAAQ,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;AACjC,MAAM,KAAK,EAAE;AACb,QAAQ,MAAM,GAAG,QAAQ,CAAC;AAC1B,QAAQ,MAAM;AACd,MAAM,KAAK,EAAE;AACb,QAAQ,MAAM,GAAG,OAAO,CAAC;AACzB,QAAQ,MAAM;AACd,MAAM,KAAK,EAAE;AACb,QAAQ,MAAM,GAAG,OAAO,CAAC;AACzB,QAAQ,MAAM;AACd,MAAM,KAAK,EAAE;AACb,QAAQ,MAAM,GAAG,MAAM,CAAC;AACxB,QAAQ,MAAM;AACd,MAAM,KAAK,EAAE;AACb,QAAQ,MAAM,GAAG,MAAM,CAAC;AACxB,QAAQ,MAAM;AACd,MAAM;AACN,QAAQ,SAAS;AACjB,KAAK;AACL;AACA,IAAI,IAAI,SAAS,KAAK,KAAK,EAAE;AAC7B,MAAM,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AAC1B,IAAI,IAAI,IAAI,MAAM,CAAC;AACnB,GAAG;AACH;AACA,EAAE,OAAO,SAAS,KAAK,KAAK;AAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC;AAC5C,MAAM,IAAI,CAAC;AACX;;;;SC7EgB,WAAW,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AACxD;;SC6CgB,qBAAqB,CAAC,WAAmB,EAAE,WAAW,GAAG,EAAE;IACzE,MAAM,eAAe,GAAGA,YAAU,CAAC,WAAW,CAAC,CAAC;IAEhD,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC7B,OAAO,eAAe,CAAC;KACxB;IAED,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,WAAW,CAACA,YAAU,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3E,OAAOA,YAAU,CAAC,WAAW,CAAC,CAAC,OAAO,CACpC,KAAK,EACL,2DAA2D,CAC5D,CAAC;AACJ;;ACjDA;;;AAGO,MAAM,wBAAwB,GAEjC,CAAC,KAAK;IACR;;IAEE,YACE,KAAK,EAAE,KAAK,CAAC,YAAY,EACzB,IAAI,EAAC,aAAa,EAClB,KAAK,EAAE,8CACL,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,WAAW,GAAG,EACzD,EAAE,EACF,SAAS,EAAE,qBAAqB,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,GACjE,EACR;AACJ,CAAC;;ACnBD;;;AAGO,MAAM,cAAc,GAA6C,CACtE,KAAK,EACL,QAAQ;IAER,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE;QAC5C,KAAK,EAAE,KAAK,CAAC,YAAY;QACzB,KAAK,EAAE,KAAK,CAAC,eAAe;QAC5B,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,EAAC,WAAW,EAAE,KAAK,EAAC;KACpC,CAAC,CAAC;IAEH,IAAI,IAAI,GACN,KAAK,CAAC,IAAI,IAAI,aAAa,KAAK,CAAC,UAAU,GAAG,sBAAsB,GAAG,EAAE,EAAE,CAAC;IAE9E,IAAI,KAAK,CAAC,cAAc,EAAE;QACxB,IAAI,IAAI,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;KACpC;IAED,QACE,UAAI,GAAG,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;QAC7C,EAAC,MAAM,IACL,KAAK,EAAC,cAAc,EACpB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,KAAK,CAAC,OAAO,EAAE,EAC9B,KAAK,EAAC,0FAA0F,EAChG,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,EACxC,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,KAAK,CAAC,SAAS;YAEnB,QAAQ;YACT,YAAM,IAAI,EAAC,aAAa,EAAC,KAAK,EAAC,aAAa,IACzC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,EAAE;gBACnC,IAAI,EAAE,KAAK;aACZ,CAAC,CACG,CACA;QACR,KAAK,CAAC,OAAO,CACX,EACL;AACJ,CAAC;;AC7CD;;;AAGO,MAAM,aAAa,GAAoC,CAC5D,EAAC,KAAK,EAAC,EACP,QAAQ,MAER,gBAAU,KAAK,EAAC,UAAU;IACxB,cAAQ,KAAK,EAAC,SAAS,IAAE,KAAK,CAAU;IACvC,QAAQ,CACA,CACZ;;ACPD;;;AAGO,MAAM,gBAAgB,GAA+C,CAC1E,KAAK,EACL,QAAQ;IAER,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;QAChB,OAAO,QAAQ,CAAC;KACjB;IACD,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,UAAU,GACd,KAAK,CAAC,KAAK,KAAK,SAAS;UACrB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,EAAC,KAAK,EAAE,iBAAiB,EAAC,CAAC;UACxD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,EAAE;YACnC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,iBAAiB;SACzB,CAAC,CAAC;IAET,OAAO,EAAC,aAAa,IAAC,KAAK,EAAE,UAAU,IAAG,QAAQ,CAAiB,CAAC;AACtE,CAAC;;SCbe,+BAA+B,CAAC,UAK/C;IACC,MAAM,EAAC,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAC,GAAG,UAAU,CAAC;IAC7E,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,KAAK,CAAC;KACd;IAED,IAAI,aAAa,EAAE;QACjB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE;QACjC,OAAO,KAAK,CAAC;KACd;IAED,MAAM,6BAA6B,GACjC,WAAW,CAAC,MAAM,CAChB,CAAC,KAAK,KAAK,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAC3D,IAAI,EAAE,CAAC;IAEV,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE;QACzC,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd;;MCsBa,oBAAoB;IAU/B,YAAoB,KAAkC;QAAlC,UAAK,GAAL,KAAK,CAA6B;QAL9C,qBAAgB,GAAgB,EAAE,CAAC;QAMzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;;;;;QAOnD,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YACpC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAC7D,IAAI,CAAC,aAAa,CACnB,CAAC;SACH;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YAC7B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAE,CAAC;YACpE,IAAI,CAAC,qCAAqC;gBACxC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CACjC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CACtC,CAAC;YACJ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;SAC7C;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,oCAAoC;gBACvC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CACjC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,OAAO,CACtC,CAAC;SACL;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAClE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAC3B,CAAC;SACH;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;IAED,IAAY,gBAAgB;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACtB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;SAC3B;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAChE,OAAO,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;SACzC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;KACzB;IAED,IAAY,OAAO;QACjB,QACE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,OAAO;YACrC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO;YAC1B,IAAI,EACJ;KACH;IAED,IAAY,cAAc;QACxB,QACE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CACzC,CAAC,KAAK,KAAK,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAC3D,IAAI,EAAE,EACP;KACH;IAED,IAAY,kBAAkB;QAC5B,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;KAC5D;IAED,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,kBAAkB,CAAC;KAC1D;IAED,IAAY,iBAAiB;QAC3B,OAAO,+BAA+B,CAAC;YACrC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;YACnC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;YACpD,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE;SAC1D,CAAC,CAAC;KACJ;IAED,IAAY,SAAS;QACnB,IAAI,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;YAChD,OAAO,IAAI,CAAC;SACb;QAED,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;KACrC;IAED,IAAY,sBAAsB;QAChC,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;YAC7B,OAAO,CAAC,CAAC;SACV;QAED,QACE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CACzC,CAAC,EAAC,KAAK,EAAC,KAAK,KAAK,KAAK,UAAU,CAClC,CAAC,MAAM,IAAI,CAAC,EACb;KACH;IAED,IAAY,aAAa;QACvB,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;KACnC;IAED,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAC,KACtD,MAAM,KAAK,MAAM;cACb,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;gBACxB,KAAK,EAAE,EAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAC;gBAC7B,GAAG,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC;aACrB,CAAC;cACF,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;gBACxB,KAAK,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC;gBACtB,GAAG,EAAE,EAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAC;aAC5B,CAAC,CACP,CAAC;KACH;IAEM,oBAAoB;QACzB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;YAC/B,OAAO;SACR;QACD,IAAI,CAAC,oCAAoC,EAAE,YAAY,EAAE,CAAC;QAC1D,IAAI,CAAC,qCAAqC,EAAE,YAAY,EAAE,CAAC;QAC3D,IAAI,CAAC,yBAAyB,EAAE,YAAY,EAAE,CAAC;KAChD;IAED,IAAY,QAAQ;QAClB,OAAO,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;KACjD;IAEO,oBAAoB;QAC1B,MAAM,SAAS,GAAc;YAC3B,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACzD,OAAO,EAAE,IAAI,CAAC,OAAQ;YACtB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACxB,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ;SAC9B,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE;YACpD,GAAG,SAAS;YACZ,MAAM,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;SAChD,CAAC,CAAC;QAEH,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACjC,GAAG,SAAS;YACZ,SAAS,EAAE,MAAM,IAAI,CAAC,SAAS;YAC/B,oBAAoB,EAAE,MAAM,IAAI,CAAC,sBAAsB;SACxD,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;gBACnE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAC;SAC7D;KACF;IAEO,mBAAmB;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CACzE,CAAC,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM;YAClC,KAAK;YACL,MAAM;YACN,IAAI;YACJ,MAAM;SACP,CAAC,CACH,CAAC;KACH;IAEO,gBAAgB,CAAC,UAA0B;QACjD,IAAI;YACF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,YAAY,GAChB,SAAS,CAAC,MAAM,KAAK,MAAM;kBACvB,SAAS;kBACT,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAC/C,CAAC,SAAS,KACR,SAAS,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM;gBACxC,SAAS,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;gBACpC,SAAS,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,CAC3C,CAAC;YAEF,IAAI,SAAS,EAAE,KAAK,EAAE;gBACpB,OAAO,oBAAoB,CACzB,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,SAAS,CAAC,KAAK,EACf,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACzB,CAAC;aACH;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAC/B,GAAG,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,EAAE,EAC7C;gBACE,KAAK,EAAE,YAAY,CAAC,MAAM;aAC3B,CACF,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;gBACtC,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;gBACvD,GAAG,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;aACpD,CAAC,CAAC;SACJ;KACF;IACO,YAAY;QAClB,OAAO,IAAI,CAAC,qBAAqB,CAC/B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAC5D,CAAC;KACH;IACO,WAAW,CAAC,UAA0B;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC;QACnD,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC;QACnD,QACE,EAAC,cAAc,IACb,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,UAAU,CAAC,eAAe,EAC3C,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAC9B,OAAO,EAAE,MAAM,IAAI,CAAC,iBAAkB,CAAC,kBAAkB,CAAC,UAAU,CAAC;YAErE,EAAC,wBAAwB,IACvB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,GACI,CACb,EACjB;KACH;IAEO,qBAAqB,CAAC,QAAiB;QAC7C,QACE,EAAC,gBAAgB,IACf,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YAEvB,UAAI,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,QAAQ,IAC3B,QAAQ,CACN,CACY,EACnB;KACH;IAEO,YAAY,CAClB,WAAoB,EACpB,WAAkC,EAClC,gBAA4B;QAE5B,QACE,EAAC,WAAW,IACV,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,cAAc,EAAE;gBACd,WAAW,CAAC,gBAAgB,EAAE,CAAC;gBAC/B,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE;oBAC5B,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;oBACrB,OAAO;iBACR;gBACD,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC;aACvC,EACD,oBAAoB,EAAE,IAAI,CAAC,sBAAsB,EACjD,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EACrC,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,GAC/B,EACf;KACH;IAEO,eAAe;QACrB,QACE,uCACE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EACnB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EACnB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,IAAI,CAAC,MAAO,CAAC,KAAM,CAAC,OAAO,EACpC,WAAW,EAAE,MAAM,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC,KAAK,EAC3C,WAAW,EAAE,CAAC,OAAyB;gBACrC,IAAI,CAAC,MAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAChC,GACgC,EACnC;KACH;IAEM,MAAM,CAAC,EACZ,QAAQ,EACR,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,gBAAgB,GACgB;QAChC,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7B,OAAO,EAAC,MAAM,OAAU,CAAC;SAC1B;QAED,IAAI,CAAC,mBAAmB,EAAE;YACxB,QACE,EAAC,gBAAgB,IACf,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EACzC,WAAW,EAAE,WAAW,GACN,EACpB;SACH;QAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,OAAO,EAAC,MAAM,OAAU,CAAC;SAC1B;QAED,QACE,EAAC,cAAc;YACZ,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE,gBAAgB,CAAC;YAC7D,CAAC,WAAW,IAAI;gBACf,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,YAAY,EAAE;gBAC9C,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,eAAe,EAAE;aACjD,CACc,EACjB;KACH;;;AChZH,MAAM,8BAA8B,GAAG,myuEAAmyuE,CAAC;AAC30uE,0CAAe,8BAA8B;;;;;;;;;;;;MCuChCC,6BAA2B;;;;;;;;;QAkCR,UAAK,GAAG,UAAU,CAAC;;;;QAInB,UAAK,GAAG,MAAM,CAAC;;;;QAIf,mBAAc,GAAG,KAAK,CAAC;;;;QAIR,gBAAW,GAAG,KAAK,CAAC;;;;QAInC,iBAAY,GAAG,CAAC,CAAC;;;;;;;QAOjB,qBAAgB,GAAG,IAAI,CAAC;;;;;;;QAOxB,mBAAc,GAAG,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;QAqB1B,cAAS,GAA2B,EAAE,CAAC;;;;;QAMnC,iBAAY,GACxC,YAAY,CAAC;;;;;;;qBA1DuB,UAAU;qBAIV,MAAM;8BAIG,KAAK;2BAIO,KAAK;4BAInB,CAAC;gCAOG,IAAI;8BAON,IAAI;yBAqBW,EAAE;4BAO9D,YAAY;;IAIP,UAAU;QACf,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,CAAC;YACnD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,UAAU,EAAE,CAAC,EAAU,MAAM,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAC/C,wBAAwB,EAAE,CAAC,OAAe,KACxCC,2BAAkC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACvD,OAAO;gBACP,UAAU,EAAE,cAAc,CAExB,IAAI,CAAC,SAAS,CAAC;aAClB,CAAC;YACJ,cAAc,EAAEC,cAAqB;YACrC,oBAAoB,EAAE,MAAM,IAAI,CAAC,iBAAiB;YAClD,uBAAuB,EAAEC,uBAA8B;YACvD,4BAA4B,EAAE,MAAM,IAAI,CAAC,4BAA4B,EAAE;YACvE,2BAA2B,EAAE,CAAC,MAAiC,KAC7D,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;YAC1C,gBAAgB,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE;YAC/C,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAGC,iBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KACpE;IAED,IAAY,WAAW;QACrB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;SACpD;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAEM,oBAAoB;QACzB,IAAI,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,CAAC;KACnD;IAEO,4BAA4B;QAClC,IAAI,CAAC,kBAAkB,GAAGC,cAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACpE,OAAO,EAAE;gBACP,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,cAAc;gBACtC,cAAc,EAAE,CAAC;gBACjB,uBAAuB,EAAE,IAAI;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC;SACF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAChC;IAEO,2BAA2B,CAAC,MAAiC;QACnE,IAAI,CAAC,iBAAiB,GAAGA,cAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACnE,OAAO,EAAE;gBACP,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,aAAa,EAAE,MAAM;gBACrB,uBAAuB,EAAE,KAAK;gBAC9B,YAAY,EAAE,YAAY;gBAC1B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC;SACF,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;IAEO,gBAAgB;QACtB,IAAI,CAAC,MAAM,GAAGC,eAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACzD,OAAO,EAAE;gBACP,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,QAAQ;gBAChC,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB;SACF,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAGM,cAAc;QACnB,IAAI,CAAC,OAAO;YACV,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAC3BC,uBAA8B,CAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CACrB,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,CAC3C,CAAC;KACL;IAEM,MAAM;QACX,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B,QACE,EAAC,gBAAgB,IACf,cAAc,EAAE,CAAC,EACjB,WAAW,EAAE,IAAI,CAAC,WAAW,GACX,EACpB;SACH;QACD,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;YACtC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ;YACzC,mBAAmB,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB;YAC/D,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,gBAAgB,EAAE,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;SAC/D,CAAC,CAAC;KACJ;;;;;;;;;;;;;;;;;;;;AAzM4B;IAA5B,kBAAkB,EAAE;+DAAmC;AAWjD;IAFN,qBAAqB,CAAC,mBAAmB,CAAC;iEAED;AAGnC;IAFN,qBAAqB,CAAC,oBAAoB,CAAC;8EAEW;AAGhD;IAFN,qBAAqB,CAAC,QAAQ,CAAC;kEAEY;AAGrC;IAFN,qBAAqB,CAAC,cAAc,CAAC;wEAEc;AA8D1B;IAAzB,OAAO,EAAE;gEAAuD;;;;;;;;;;;;;;;;;;;;","names":["escapeHtml","AtomicInsightTimeframeFacet","buildInsightFacetConditionsManager","buildInsightDateRange","deserializeInsightRelativeDate","buildInsightSearchStatus","buildInsightDateFacet","buildInsightDateFilter","loadInsightDateFacetSetActions"],"sources":["src/components/common/facets/depends-on.ts","src/components/common/facets/facet-placeholder/stencil-facet-placeholder.tsx","src/utils/field-utils.ts","src/components/common/facets/facet-container/stencil-facet-container.tsx","src/components/common/facets/facet-header/stencil-facet-header.tsx","../../node_modules/.pnpm/escape-html@1.0.3/node_modules/escape-html/index.js","src/utils/string-utils.ts","src/components/common/facets/facet-search/facet-search-utils.ts","src/components/common/facets/facet-value-label-highlight/stencil-facet-value-label-highlight.tsx","src/components/common/facets/facet-value-link/stencil-facet-value-link.tsx","src/components/common/stencil-fieldset-group.tsx","src/components/common/facets/facet-values-group/stencil-facet-values-group.tsx","src/components/common/facets/stencil-facet-common.tsx","src/components/common/facets/stencil-timeframe-facet-common.tsx","src/components/insight/atomic-insight-timeframe-facet/atomic-insight-timeframe-facet.pcss?tag=atomic-insight-timeframe-facet&encapsulation=shadow","src/components/insight/atomic-insight-timeframe-facet/atomic-insight-timeframe-facet.tsx"],"sourcesContent":["type GenericCondition<AnyFacetValueRequest> = {\n parentFacetId: string;\n condition(parentValues: AnyFacetValueRequest[]): boolean;\n};\n\ninterface SimpleFacetValue {\n value: string;\n state: string;\n}\n\ninterface CategoryFacetValue extends SimpleFacetValue {\n children: SimpleFacetValue[];\n}\n\nexport function parseDependsOn<\n FacetValue extends SimpleFacetValue | CategoryFacetValue,\n>(dependsOn: Record<string, string>): GenericCondition<FacetValue>[] {\n if (Object.keys(dependsOn).length > 1) {\n throw \"Depending on multiple facets isn't supported\";\n }\n\n const entries = Object.entries(dependsOn);\n return entries.map(([parentFacetId, expectedValue]) => ({\n parentFacetId,\n condition: buildDependsOnCondition<FacetValue>(expectedValue),\n }));\n}\n\nfunction buildDependsOnCondition<\n FacetValue extends SimpleFacetValue | CategoryFacetValue,\n>(expectedValue: string): (values: FacetValue[]) => boolean {\n return (values: FacetValue[]) =>\n values.some((value) => {\n if (isCategoryFacetValue(value)) {\n return matchesCategoryFacetValue(\n value as CategoryFacetValue,\n expectedValue\n );\n }\n if (isSimpleFacetValue(value)) {\n return matchesSimpleFacetValue(\n value as SimpleFacetValue,\n expectedValue\n );\n }\n return false;\n });\n}\n\nfunction matchesCategoryFacetValue<FacetValue extends CategoryFacetValue>(\n value: FacetValue,\n expectedValue: string\n): boolean {\n const selectedValue = getSelectedCategoryFacetValueRequest(value);\n if (!selectedValue) {\n return false;\n }\n return !expectedValue || selectedValue.value === expectedValue;\n}\n\nfunction matchesSimpleFacetValue(\n value: SimpleFacetValue,\n expectedValue: string\n): boolean {\n if (value.state !== 'selected') {\n return false;\n }\n return !expectedValue || value.value === expectedValue;\n}\n\nfunction isCategoryFacetValue(request: unknown): request is CategoryFacetValue {\n const requestAsRecord = request as Record<string, unknown>;\n return (\n (requestAsRecord?.children &&\n Array.isArray(requestAsRecord.children) &&\n requestAsRecord?.state &&\n typeof requestAsRecord.state === 'string') === true\n );\n}\n\nfunction getSelectedCategoryFacetValueRequest(\n value: unknown\n): CategoryFacetValue | null {\n if (!isCategoryFacetValue(value)) {\n return null;\n }\n if (value.state === 'selected') {\n return value;\n }\n for (const child of value.children) {\n const selectedValue = getSelectedCategoryFacetValueRequest(child);\n if (selectedValue !== null) {\n return selectedValue;\n }\n }\n return null;\n}\n\nfunction isSimpleFacetValue(value: unknown): value is SimpleFacetValue {\n const asRecord = value as Record<string, unknown>;\n return (\n 'value' in asRecord &&\n typeof asRecord.value === 'string' &&\n !('children' in asRecord)\n );\n}\n","import {FunctionalComponent, h} from '@stencil/core';\n\ninterface FacetPlaceholderProps {\n numberOfValues: number;\n isCollapsed: boolean;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const FacetPlaceholder: FunctionalComponent<FacetPlaceholderProps> = ({\n numberOfValues,\n isCollapsed,\n}) => {\n const facetValues = [];\n for (let i = 0; i < numberOfValues; i++) {\n facetValues.push(\n <div\n class=\"bg-neutral mt-4 flex h-5\"\n style={{width: '100%', opacity: '0.5'}}\n ></div>\n );\n }\n\n return (\n <div\n part=\"placeholder\"\n class=\"bg-background border-neutral mb-4 animate-pulse rounded-lg border p-7\"\n aria-hidden=\"true\"\n >\n <div class=\"bg-neutral h-8 rounded\" style={{width: '75%'}}></div>\n {!isCollapsed && <div class=\"mt-7\">{facetValues}</div>}\n </div>\n );\n};\n","import type {i18n} from 'i18next';\n\nfunction getFieldCaptionNamespace(field: string) {\n return `caption-${field}`;\n}\n\nexport function getFieldCaptions(field: string, i18n: i18n) {\n return (\n i18n.getResourceBundle(i18n.language, getFieldCaptionNamespace(field)) || {}\n );\n}\n\nexport function getFieldValueCaption(\n field: string,\n facetValue: string,\n i18n: i18n\n) {\n return i18n.t(facetValue, {\n ns: getFieldCaptionNamespace(field),\n });\n}\n","import {FunctionalComponent, h} from '@stencil/core';\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const FacetContainer: FunctionalComponent = (_, children) => (\n <div class=\"bg-background border-neutral rounded-lg border p-4\" part=\"facet\">\n {children}\n </div>\n);\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport ArrowBottomIcon from '../../../../images/arrow-bottom-rounded.svg';\nimport ArrowTopIcon from '../../../../images/arrow-top-rounded.svg';\nimport CloseIcon from '../../../../images/close.svg';\nimport {Button} from '../../stencil-button';\nimport {Heading} from '../../stencil-heading';\n\ninterface FacetHeaderProps {\n i18n: i18n;\n label: string;\n numberOfActiveValues: number;\n isCollapsed: boolean;\n headingLevel: number;\n onToggleCollapse(): void;\n onClearFilters?(): void;\n headerRef?: (element?: HTMLButtonElement) => void;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const FacetHeader: FunctionalComponent<FacetHeaderProps> = (props) => {\n const label = props.i18n.t(props.label);\n const expandFacet = props.i18n.t('expand-facet', {label});\n const collapseFacet = props.i18n.t('collapse-facet', {label});\n const clearFilters = props.i18n.t('clear-filters', {\n count: props.numberOfActiveValues,\n });\n const clearFiltersForFacet = props.i18n.t('clear-filters-for-facet', {\n count: props.numberOfActiveValues,\n label,\n });\n\n return [\n <Button\n style=\"text-transparent\"\n part=\"label-button\"\n class=\"flex w-full justify-between rounded-none px-2 py-1 text-lg font-bold\"\n ariaLabel={props.isCollapsed ? expandFacet : collapseFacet}\n onClick={() => props.onToggleCollapse()}\n ariaExpanded={(!props.isCollapsed).toString()}\n ref={props.headerRef}\n >\n <Heading level={props.headingLevel} class=\"truncate\">\n {label}\n </Heading>\n <atomic-icon\n part=\"label-button-icon\"\n class=\"ml-4 w-3 shrink-0 self-center\"\n icon={props.isCollapsed ? ArrowBottomIcon : ArrowTopIcon}\n ></atomic-icon>\n </Button>,\n props.onClearFilters && props.numberOfActiveValues > 0 && (\n <Button\n style=\"text-primary\"\n part=\"clear-button\"\n class=\"flex max-w-full items-baseline p-2 text-sm\"\n ariaLabel={clearFiltersForFacet}\n onClick={() => props.onClearFilters!()}\n >\n <atomic-icon\n part=\"clear-button-icon\"\n class=\"mr-1 h-2 w-2\"\n icon={CloseIcon}\n ></atomic-icon>\n <span>{clearFilters}</span>\n </Button>\n ),\n ];\n};\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","export function regexEncode(value: string): string {\n return value.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&');\n}\n\nexport function encodeForDomAttribute(str: string) {\n return str\n .split('')\n .map((ch) => (ch.match(/(\\d|\\w)+/g) ? ch : ch.charCodeAt(0)))\n .join('');\n}\n","import escapeHtml from 'escape-html';\nimport {regexEncode} from '../../../../utils/string-utils';\n\ninterface FacetSearchState {\n query: string;\n values: unknown[];\n isLoading: boolean;\n}\n\n/**\n * Meant to be used inside the `shouldUpdate` lifecycle method.\n * It prevents updating the facet between two matchless facet searches.\n * It also prevents updating the facet until the first search has loaded.\n */\nexport function shouldUpdateFacetSearchComponent(\n nextFacetSearchState: FacetSearchState,\n prevFacetSearchState: FacetSearchState\n) {\n const hasQuery = nextFacetSearchState.query !== '';\n const stillNoValues =\n !nextFacetSearchState.values.length && !prevFacetSearchState.values.length;\n const hasFinishedLoading =\n !nextFacetSearchState.isLoading && prevFacetSearchState.isLoading;\n\n if (hasQuery && stillNoValues) {\n return hasFinishedLoading;\n }\n\n return true;\n}\n\nexport function shouldDisplaySearchResults(facetSearchState: FacetSearchState) {\n const hasQuery = facetSearchState.query !== '';\n const isLoading = facetSearchState.isLoading;\n const hasValues = !!facetSearchState.values.length;\n\n if (!hasQuery) {\n return false;\n }\n\n if (hasValues) {\n return true;\n }\n\n return !isLoading;\n}\n\nexport function highlightSearchResult(resultValue: string, searchQuery = '') {\n const sanitizedResult = escapeHtml(resultValue);\n\n if (searchQuery.trim() === '') {\n return sanitizedResult;\n }\n\n const regex = new RegExp(`(${regexEncode(escapeHtml(searchQuery))})`, 'i');\n return escapeHtml(resultValue).replace(\n regex,\n '<span part=\"search-highlight\" class=\"font-bold\">$1</span>'\n );\n}\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {highlightSearchResult} from '../facet-search/facet-search-utils';\n\ninterface FacetValueLabelHighlightProps {\n displayValue: string;\n searchQuery?: string;\n isSelected: boolean;\n isExcluded?: boolean;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const FacetValueLabelHighlight: FunctionalComponent<\n FacetValueLabelHighlightProps\n> = (props) => {\n return (\n // deepcode ignore ReactSetInnerHtml: This is not React code\n <span\n title={props.displayValue}\n part=\"value-label\"\n class={`value-label peer-hover:text-error truncate ${\n props.isSelected || !!props.isExcluded ? 'font-bold' : ''\n }`}\n innerHTML={highlightSearchResult(props.displayValue, props.searchQuery)}\n ></span>\n );\n};\n","import {FunctionalComponent, h, VNode} from '@stencil/core';\nimport {Button} from '../../stencil-button';\nimport {FacetValueProps} from '../stencil-facet-common';\n\ninterface FacetValueLinkProps extends FacetValueProps {\n subList?: VNode | VNode[];\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const FacetValueLink: FunctionalComponent<FacetValueLinkProps> = (\n props,\n children\n) => {\n const count = props.numberOfResults.toLocaleString(props.i18n.language);\n const ariaLabel = props.i18n.t('facet-value', {\n value: props.displayValue,\n count: props.numberOfResults,\n formattedCount: count,\n interpolation: {escapeValue: false},\n });\n\n let part =\n props.part ?? `value-link${props.isSelected ? ' value-link-selected' : ''}`;\n\n if (props.additionalPart) {\n part += ` ${props.additionalPart}`;\n }\n\n return (\n <li key={props.displayValue} class={props.class}>\n <Button\n style=\"text-neutral\"\n part={part}\n onClick={() => props.onClick()}\n class=\"group flex w-full items-center truncate px-2 py-2.5 text-left focus-visible:outline-none\"\n ariaPressed={props.isSelected.toString()}\n ariaLabel={ariaLabel}\n ref={props.buttonRef}\n >\n {children}\n <span part=\"value-count\" class=\"value-count\">\n {props.i18n.t('between-parentheses', {\n text: count,\n })}\n </span>\n </Button>\n {props.subList}\n </li>\n );\n};\n","import {h, FunctionalComponent} from '@stencil/core';\n\ninterface GroupProps {\n label: string;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const FieldsetGroup: FunctionalComponent<GroupProps> = (\n {label},\n children\n) => (\n <fieldset class=\"contents\">\n <legend class=\"sr-only\">{label}</legend>\n {children}\n </fieldset>\n);\n","import {h, FunctionalComponent} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport {FieldsetGroup} from '../../stencil-fieldset-group';\n\ninterface FacetValuesGroupProps {\n i18n: i18n;\n label?: string;\n query?: string;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const FacetValuesGroup: FunctionalComponent<FacetValuesGroupProps> = (\n props,\n children\n) => {\n if (!props.label) {\n return children;\n }\n const facetDisplayLabel = props.i18n.t(props.label);\n const groupLabel =\n props.query === undefined\n ? props.i18n.t('facet-values', {label: facetDisplayLabel})\n : props.i18n.t('facet-search-results', {\n query: props.query,\n label: facetDisplayLabel,\n });\n\n return <FieldsetGroup label={groupLabel}>{children}</FieldsetGroup>;\n};\n","import {FacetValue, SearchStatusState} from '@coveo/headless';\nimport {i18n} from 'i18next';\nimport { AtomicAutomaticFacetGenerator } from '../../search/atomic-automatic-facet-generator/atomic-automatic-facet-generator';\n\nexport interface FacetValueProps {\n i18n: i18n;\n displayValue: string;\n numberOfResults: number;\n isSelected: boolean;\n onClick(): void;\n searchQuery?: string;\n class?: string;\n part?: string;\n additionalPart?: string;\n buttonRef?: (element?: HTMLButtonElement) => void;\n}\n\nexport function shouldDisplayInputForFacetRange(facetRange: {\n hasInput: boolean;\n hasInputRange: boolean;\n searchStatusState: SearchStatusState;\n facetValues: Pick<FacetValue, 'numberOfResults' | 'state'>[];\n}) {\n const {hasInput, hasInputRange, searchStatusState, facetValues} = facetRange;\n if (!hasInput) {\n return false;\n }\n\n if (hasInputRange) {\n return true;\n }\n\n if (!searchStatusState.hasResults) {\n return false;\n }\n\n const onlyValuesWithResultsOrActive =\n facetValues.filter(\n (value) => value.numberOfResults || value.state !== 'idle'\n ) || [];\n\n if (!onlyValuesWithResultsOrActive.length) {\n return false;\n }\n\n return true;\n}\n\nexport type BaseFacetElement = HTMLElement & {\n facetId: string;\n isCollapsed: boolean;\n};\n\nexport function sortFacetVisibility(\n facetElements: BaseFacetElement[],\n facetInfoMap: Record<string, {isHidden: () => boolean}>\n) {\n const visibleFacets: BaseFacetElement[] = [];\n const invisibleFacets: BaseFacetElement[] = [];\n\n facetElements.forEach((facet) => {\n if (facetInfoMap[facet.facetId] && facetInfoMap[facet.facetId].isHidden()) {\n invisibleFacets.push(facet);\n } else {\n visibleFacets.push(facet);\n }\n });\n\n return {visibleFacets, invisibleFacets};\n}\n\nexport function collapseFacetsAfter(\n facets: BaseFacetElement[],\n visibleFacetsCount: number\n) {\n if (visibleFacetsCount === -1) {\n return;\n }\n\n facets.forEach((facet, index) => {\n facet.isCollapsed = index + 1 > visibleFacetsCount;\n });\n}\n\nexport function isAutomaticFacetGenerator(\n element: HTMLElement\n): element is AtomicAutomaticFacetGenerator {\n return element.tagName === 'ATOMIC-AUTOMATIC-FACET-GENERATOR';\n}\n\nfunction isPseudoFacet(el: Element): el is BaseFacetElement {\n return 'facetId' in el;\n}\n\nexport function getFacetsInChildren(parent: HTMLElement): BaseFacetElement[] {\n const facets = Array.from(parent.children).filter((child) =>\n isPseudoFacet(child)\n ) as BaseFacetElement[];\n\n return facets;\n}\nexport function getAutomaticFacetGenerator(\n parent: HTMLElement\n): AtomicAutomaticFacetGenerator | undefined {\n return (Array.from(parent.children) as HTMLElement[]).find(\n isAutomaticFacetGenerator\n );\n}\n\nfunction findFacetParent(\n facet: BaseFacetElement,\n parents: (HTMLElement | null)[]\n) {\n for (let i = 0; i < parents.length; i++) {\n if (parents[i]?.contains(facet)) {\n return parents[i];\n }\n }\n return null;\n}\n\n/**\n * Triage elements by their parents.\n * @param facets Facet Elements\n * @param parents Elements that may contains the facets\n * @returns an array in the same order as the parents, containing the facets that are contained by the corresponding parent.\n * The last element of the array contains the facets that are not contained by any of the parents.\n */\nexport function triageFacetsByParents(\n facets: BaseFacetElement[],\n ...parents: (HTMLElement | null)[]\n): Map<HTMLElement | null, BaseFacetElement[]> {\n const sortedFacets: Map<HTMLElement | null, BaseFacetElement[]> = new Map(\n parents.concat([null]).map((parent) => [parent, []])\n );\n for (const facet of facets) {\n const parent = findFacetParent(facet, parents);\n sortedFacets.get(parent)!.push(facet);\n }\n return sortedFacets;\n}\n","import {FocusTargetController} from '@/src/utils/stencil-accessibility-utils';\nimport {\n DateFacet,\n DateFacetValue,\n DateFilter,\n DateRangeOptions,\n DateRangeRequest,\n FacetConditionsManager,\n RangeFacetSortCriterion,\n RelativeDate,\n RelativeDatePeriod,\n RelativeDateUnit,\n SearchStatusState,\n} from '@coveo/headless';\nimport {h, VNode} from '@stencil/core';\nimport {parseDate} from '../../../utils/date-utils';\nimport {getFieldValueCaption} from '../../../utils/field-utils';\nimport {randomID} from '../../../utils/utils';\nimport {InsightBindings} from '../../insight/atomic-insight-interface/atomic-insight-interface';\nimport {Bindings as SearchBindings} from '../../search/atomic-search-interface/atomic-search-interface';\nimport {Hidden} from '../stencil-hidden';\nimport {FacetInfo} from './facet-common-store';\nimport {FacetContainer} from './facet-container/stencil-facet-container';\nimport {FacetHeader} from './facet-header/stencil-facet-header';\nimport {FacetPlaceholder} from './facet-placeholder/stencil-facet-placeholder';\nimport {FacetValueLabelHighlight} from './facet-value-label-highlight/stencil-facet-value-label-highlight';\nimport {FacetValueLink} from './facet-value-link/stencil-facet-value-link';\nimport {FacetValuesGroup} from './facet-values-group/stencil-facet-values-group';\nimport {initializePopover} from './popover/popover-type';\nimport {shouldDisplayInputForFacetRange} from './stencil-facet-common';\n\nexport interface Timeframe {\n period: RelativeDatePeriod;\n unit?: RelativeDateUnit;\n amount?: number;\n label?: string;\n}\n\ninterface TimeframeFacetCommonOptions {\n facetId?: string;\n host: HTMLElement;\n bindings: SearchBindings | InsightBindings;\n label: string;\n field: string;\n headingLevel: number;\n dependsOn: Record<string, string>;\n withDatePicker: boolean;\n setFacetId(id: string): string;\n getSearchStatusState(): SearchStatusState;\n buildDependenciesManager(facetId: string): FacetConditionsManager;\n deserializeRelativeDate(date: string): RelativeDate;\n buildDateRange(config: DateRangeOptions): DateRangeRequest;\n initializeFacetForDatePicker(): DateFacet;\n initializeFacetForDateRange(values: DateRangeRequest[]): DateFacet;\n initializeFilter(): DateFilter;\n min?: string;\n max?: string;\n sortCriteria: RangeFacetSortCriterion;\n}\n\ninterface TimeframeFacetCommonRenderProps {\n hasError: boolean;\n firstSearchExecuted: boolean;\n isCollapsed: boolean;\n headerFocus: FocusTargetController;\n onToggleCollapse: () => boolean;\n}\n\nexport class TimeframeFacetCommon {\n private facetId?: string;\n private facetForDatePicker?: DateFacet;\n private facetForDateRange?: DateFacet;\n private filter?: DateFilter;\n private manualTimeframes: Timeframe[] = [];\n private facetForDateRangeDependenciesManager?: FacetConditionsManager;\n private facetForDatePickerDependenciesManager?: FacetConditionsManager;\n private filterDependenciesManager?: FacetConditionsManager;\n\n constructor(private props: TimeframeFacetCommonOptions) {\n this.facetId = this.determineFacetId;\n this.props.setFacetId(this.facetId);\n\n this.manualTimeframes = this.getManualTimeframes();\n\n // Initialize two facets: One that is actually used to display values for end users, which only exists\n // if we need to display something to the end user (ie: timeframes > 0)\n\n // A second facet is initialized only to verify the results count. It is never used to display results to end user.\n // It serves as a way to determine if the input should be rendered or not, independent of the ranges configured in the component\n if (this.manualTimeframes.length > 0) {\n this.facetForDateRange = this.props.initializeFacetForDateRange(\n this.currentValues\n );\n }\n\n if (this.props.withDatePicker) {\n this.facetForDatePicker = this.props.initializeFacetForDatePicker();\n this.facetForDatePickerDependenciesManager =\n this.props.buildDependenciesManager(\n this.facetForDatePicker.state.facetId\n );\n this.filter = this.props.initializeFilter();\n }\n\n if (this.facetForDateRange) {\n this.facetForDateRangeDependenciesManager =\n this.props.buildDependenciesManager(\n this.facetForDateRange?.state.facetId\n );\n }\n\n if (this.filter) {\n this.filterDependenciesManager = this.props.buildDependenciesManager(\n this.filter?.state.facetId\n );\n }\n\n this.registerFacetToStore();\n }\n\n private get determineFacetId() {\n if (this.props.facetId) {\n return this.props.facetId;\n }\n\n if (this.props.bindings.store.state.dateFacets[this.props.field]) {\n return randomID(`${this.props.field}_`);\n }\n\n return this.props.field;\n }\n\n private get enabled() {\n return (\n this.facetForDateRange?.state.enabled ??\n this.filter?.state.enabled ??\n true\n );\n }\n\n private get valuesToRender() {\n return (\n this.facetForDateRange?.state.values.filter(\n (value) => value.numberOfResults || value.state !== 'idle'\n ) || []\n );\n }\n\n private get shouldRenderValues() {\n return !this.hasInputRange && !!this.valuesToRender.length;\n }\n\n private get shouldRenderFacet() {\n return this.shouldRenderInput || this.shouldRenderValues;\n }\n\n private get shouldRenderInput() {\n return shouldDisplayInputForFacetRange({\n hasInput: this.props.withDatePicker,\n hasInputRange: this.hasInputRange,\n searchStatusState: this.props.getSearchStatusState(),\n facetValues: this.facetForDatePicker?.state?.values || [],\n });\n }\n\n private get hasValues() {\n if (this.facetForDatePicker?.state.values.length) {\n return true;\n }\n\n return !!this.valuesToRender.length;\n }\n\n private get numberOfSelectedValues() {\n if (this.filter?.state?.range) {\n return 1;\n }\n\n return (\n this.facetForDateRange?.state.values.filter(\n ({state}) => state === 'selected'\n ).length || 0\n );\n }\n\n private get hasInputRange() {\n return !!this.filter?.state.range;\n }\n\n public get currentValues(): DateRangeRequest[] {\n return this.manualTimeframes.map(({period, amount, unit}) =>\n period === 'past'\n ? this.props.buildDateRange({\n start: {period, unit, amount},\n end: {period: 'now'},\n })\n : this.props.buildDateRange({\n start: {period: 'now'},\n end: {period, unit, amount},\n })\n );\n }\n\n public disconnectedCallback() {\n if (this.props.host.isConnected) {\n return;\n }\n this.facetForDateRangeDependenciesManager?.stopWatching();\n this.facetForDatePickerDependenciesManager?.stopWatching();\n this.filterDependenciesManager?.stopWatching();\n }\n\n private get isHidden() {\n return !this.shouldRenderFacet || !this.enabled;\n }\n\n private registerFacetToStore() {\n const facetInfo: FacetInfo = {\n label: () => this.props.bindings.i18n.t(this.props.label),\n facetId: this.facetId!,\n element: this.props.host,\n isHidden: () => this.isHidden,\n };\n\n this.props.bindings.store.registerFacet('dateFacets', {\n ...facetInfo,\n format: (value) => this.formatFacetValue(value),\n });\n\n initializePopover(this.props.host, {\n ...facetInfo,\n hasValues: () => this.hasValues,\n numberOfActiveValues: () => this.numberOfSelectedValues,\n });\n\n if (this.filter) {\n this.props.bindings.store.state.dateFacets[this.filter.state.facetId] =\n this.props.bindings.store.state.dateFacets[this.facetId!];\n }\n }\n\n private getManualTimeframes(): Timeframe[] {\n return Array.from(this.props.host.querySelectorAll('atomic-timeframe')).map(\n ({label, amount, unit, period}) => ({\n label,\n amount,\n unit,\n period,\n })\n );\n }\n\n private formatFacetValue(facetValue: DateFacetValue) {\n try {\n const startDate = this.props.deserializeRelativeDate(facetValue.start);\n const relativeDate =\n startDate.period === 'past'\n ? startDate\n : this.props.deserializeRelativeDate(facetValue.end);\n const timeframe = this.getManualTimeframes().find(\n (timeframe) =>\n timeframe.period === relativeDate.period &&\n timeframe.unit === relativeDate.unit &&\n timeframe.amount === relativeDate.amount\n );\n\n if (timeframe?.label) {\n return getFieldValueCaption(\n this.props.field,\n timeframe.label,\n this.props.bindings.i18n\n );\n }\n return this.props.bindings.i18n.t(\n `${relativeDate.period}-${relativeDate.unit}`,\n {\n count: relativeDate.amount,\n }\n );\n } catch (error) {\n return this.props.bindings.i18n.t('to', {\n start: parseDate(facetValue.start).format('YYYY-MM-DD'),\n end: parseDate(facetValue.end).format('YYYY-MM-DD'),\n });\n }\n }\n private renderValues() {\n return this.renderValuesContainer(\n this.valuesToRender.map((value) => this.renderValue(value))\n );\n }\n private renderValue(facetValue: DateFacetValue) {\n const displayValue = this.formatFacetValue(facetValue);\n const isSelected = facetValue.state === 'selected';\n const isExcluded = facetValue.state === 'excluded';\n return (\n <FacetValueLink\n displayValue={displayValue}\n isSelected={isSelected}\n numberOfResults={facetValue.numberOfResults}\n i18n={this.props.bindings.i18n}\n onClick={() => this.facetForDateRange!.toggleSingleSelect(facetValue)}\n >\n <FacetValueLabelHighlight\n displayValue={displayValue}\n isSelected={isSelected}\n isExcluded={isExcluded}\n ></FacetValueLabelHighlight>\n </FacetValueLink>\n );\n }\n\n private renderValuesContainer(children: VNode[]) {\n return (\n <FacetValuesGroup\n i18n={this.props.bindings.i18n}\n label={this.props.label}\n >\n <ul class=\"mt-3\" part=\"values\">\n {children}\n </ul>\n </FacetValuesGroup>\n );\n }\n\n private renderHeader(\n isCollapsed: boolean,\n headerFocus: FocusTargetController,\n onToggleCollapse: () => void\n ) {\n return (\n <FacetHeader\n i18n={this.props.bindings.i18n}\n label={this.props.label}\n onClearFilters={() => {\n headerFocus.focusAfterSearch();\n if (this.filter?.state.range) {\n this.filter?.clear();\n return;\n }\n this.facetForDateRange?.deselectAll();\n }}\n numberOfActiveValues={this.numberOfSelectedValues}\n isCollapsed={isCollapsed}\n headingLevel={this.props.headingLevel}\n onToggleCollapse={onToggleCollapse}\n headerRef={(el) => headerFocus.setTarget(el)}\n ></FacetHeader>\n );\n }\n\n private renderDateInput() {\n return (\n <atomic-stencil-facet-date-input\n min={this.props.min}\n max={this.props.max}\n bindings={this.props.bindings}\n label={this.props.label}\n facetId={this.filter!.state!.facetId}\n rangeGetter={() => this.filter!.state.range}\n rangeSetter={(request: DateRangeRequest) => {\n this.filter!.setRange(request);\n }}\n ></atomic-stencil-facet-date-input>\n );\n }\n\n public render({\n hasError,\n firstSearchExecuted,\n isCollapsed,\n headerFocus,\n onToggleCollapse,\n }: TimeframeFacetCommonRenderProps) {\n if (hasError || !this.enabled) {\n return <Hidden></Hidden>;\n }\n\n if (!firstSearchExecuted) {\n return (\n <FacetPlaceholder\n numberOfValues={this.currentValues.length}\n isCollapsed={isCollapsed}\n ></FacetPlaceholder>\n );\n }\n\n if (!this.shouldRenderFacet) {\n return <Hidden></Hidden>;\n }\n\n return (\n <FacetContainer>\n {this.renderHeader(isCollapsed, headerFocus, onToggleCollapse)}\n {!isCollapsed && [\n this.shouldRenderValues && this.renderValues(),\n this.shouldRenderInput && this.renderDateInput(),\n ]}\n </FacetContainer>\n );\n }\n}\n","@import '../../common/facets/facet-common.pcss';\n","import {\n buildDateFacet as buildInsightDateFacet,\n buildDateFilter as buildInsightDateFilter,\n buildDateRange as buildInsightDateRange,\n buildFacetConditionsManager as buildInsightFacetConditionsManager,\n buildSearchStatus as buildInsightSearchStatus,\n deserializeRelativeDate as deserializeInsightRelativeDate,\n DateFacet as InsightDateFacet,\n DateFacetState as InsightDateFacetState,\n DateFilter as InsightDateFilter,\n DateFilterState as InsightDateFilterState,\n DateRangeRequest as InsightDateRangeRequest,\n SearchStatus as InsightSearchStatus,\n SearchStatusState as InsightSearchStatusState,\n loadDateFacetSetActions as loadInsightDateFacetSetActions,\n RangeFacetSortCriterion as InsightRangeFacetSortCriterion,\n FacetValueRequest as InsightFacetValueRequest,\n CategoryFacetValueRequest as InsightCategoryFacetValueRequest,\n} from '@coveo/headless/insight';\nimport {Component, Element, h, Listen, Prop, State} from '@stencil/core';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../utils/initialization-utils';\nimport {MapProp} from '../../../utils/props-utils';\nimport {FocusTargetController} from '../../../utils/stencil-accessibility-utils';\nimport {parseDependsOn} from '../../common/facets/depends-on';\nimport {FacetPlaceholder} from '../../common/facets/facet-placeholder/stencil-facet-placeholder';\nimport {TimeframeFacetCommon} from '../../common/facets/stencil-timeframe-facet-common';\nimport {InsightBindings} from '../atomic-insight-interface/atomic-insight-interface';\n\n/**\n * @internal\n */\n@Component({\n tag: 'atomic-insight-timeframe-facet',\n styleUrl: './atomic-insight-timeframe-facet.pcss',\n shadow: true,\n})\nexport class AtomicInsightTimeframeFacet\n implements InitializableComponent<InsightBindings>\n{\n @InitializeBindings() public bindings!: InsightBindings;\n public facetForDateRange?: InsightDateFacet;\n public facetForDatePicker?: InsightDateFacet;\n\n private timeframeFacetCommon?: TimeframeFacetCommon;\n public filter?: InsightDateFilter;\n public searchStatus!: InsightSearchStatus;\n @Element() private host!: HTMLElement;\n\n @BindStateToController('facetForDateRange')\n @State()\n public facetState!: InsightDateFacetState;\n @BindStateToController('facetForDatePicker')\n @State()\n public facetForDatePickerState?: InsightDateFacetState;\n @BindStateToController('filter')\n @State()\n public filterState?: InsightDateFilterState;\n @BindStateToController('searchStatus')\n @State()\n public searchStatusState!: InsightSearchStatusState;\n @State() public error!: Error;\n\n /**\n * Specifies a unique identifier for the facet.\n */\n @Prop({mutable: true, reflect: true}) public facetId?: string;\n /**\n * The non-localized label for the facet.\n * Used in the atomic-breadbox component through the bindings store.\n */\n @Prop({reflect: true}) public label = 'no-label';\n /**\n * The field whose values you want to display in the facet.\n */\n @Prop({reflect: true}) public field = 'date';\n /**\n * Whether this facet should contain a date picker allowing users to set custom ranges.\n */\n @Prop({reflect: true}) public withDatePicker = false;\n /**\n * Specifies if the facet is collapsed.\n */\n @Prop({reflect: true, mutable: true}) public isCollapsed = false;\n /**\n * The [heading level](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements) to use for the heading over the facet, from 1 to 6.\n */\n @Prop({reflect: true}) public headingLevel = 0;\n /**\n * Whether to exclude the parents of folded results when estimating the result count for each facet value.\n *\n *\n * Note: Resulting count is only an estimation, in some cases this value could be incorrect.\n */\n @Prop({reflect: true}) public filterFacetCount = true;\n /**\n * The maximum number of results to scan in the index to ensure that the facet lists all potential facet values.\n * Note: A high injectionDepth may negatively impact the facet request performance.\n * Minimum: `0`\n * Default: `1000`\n */\n @Prop({reflect: true}) public injectionDepth = 1000;\n\n /**\n * The required facets and values for this facet to be displayed.\n * Examples:\n * ```html\n * <atomic-insight-facet facet-id=\"abc\" field=\"objecttype\" ...></atomic-insight-facet>\n *\n * <!-- To show the facet when any value is selected in the facet with id \"abc\": -->\n * <atomic-insight-timeframe-facet\n * depends-on-abc\n * ...\n * ></atomic-insight-timeframe-facet>\n *\n * <!-- To show the facet when value \"doc\" is selected in the facet with id \"abc\": -->\n * <atomic-insight-timeframe-facet\n * depends-on-abc=\"doc\"\n * ...\n * ></atomic-insight-timeframe-facet>\n * ```\n */\n @MapProp() @Prop() public dependsOn: Record<string, string> = {};\n\n /**\n * The sort criterion to apply to the returned facet values.\n * Possible values are 'ascending' and 'descending'.\n */\n @Prop({reflect: true}) public sortCriteria: InsightRangeFacetSortCriterion =\n 'descending';\n\n private headerFocus?: FocusTargetController;\n\n public initialize() {\n this.timeframeFacetCommon = new TimeframeFacetCommon({\n facetId: this.facetId,\n host: this.host,\n bindings: this.bindings,\n label: this.label,\n field: this.field,\n headingLevel: this.headingLevel,\n dependsOn: this.dependsOn,\n withDatePicker: this.withDatePicker,\n setFacetId: (id: string) => (this.facetId = id),\n buildDependenciesManager: (facetId: string) =>\n buildInsightFacetConditionsManager(this.bindings.engine, {\n facetId,\n conditions: parseDependsOn<\n InsightFacetValueRequest | InsightCategoryFacetValueRequest\n >(this.dependsOn),\n }),\n buildDateRange: buildInsightDateRange,\n getSearchStatusState: () => this.searchStatusState,\n deserializeRelativeDate: deserializeInsightRelativeDate,\n initializeFacetForDatePicker: () => this.initializeFacetForDatePicker(),\n initializeFacetForDateRange: (values: InsightDateRangeRequest[]) =>\n this.initializeFacetForDateRange(values),\n initializeFilter: () => this.initializeFilter(),\n sortCriteria: this.sortCriteria,\n });\n this.searchStatus = buildInsightSearchStatus(this.bindings.engine);\n }\n\n private get focusTarget(): FocusTargetController {\n if (!this.headerFocus) {\n this.headerFocus = new FocusTargetController(this);\n }\n return this.headerFocus;\n }\n\n public disconnectedCallback() {\n this.timeframeFacetCommon?.disconnectedCallback();\n }\n\n private initializeFacetForDatePicker() {\n this.facetForDatePicker = buildInsightDateFacet(this.bindings.engine, {\n options: {\n facetId: `${this.facetId}_input_range`,\n numberOfValues: 1,\n generateAutomaticRanges: true,\n field: this.field,\n filterFacetCount: this.filterFacetCount,\n injectionDepth: this.injectionDepth,\n },\n });\n return this.facetForDatePicker;\n }\n\n private initializeFacetForDateRange(values: InsightDateRangeRequest[]) {\n this.facetForDateRange = buildInsightDateFacet(this.bindings.engine, {\n options: {\n facetId: this.facetId,\n field: this.field,\n currentValues: values,\n generateAutomaticRanges: false,\n sortCriteria: 'descending',\n filterFacetCount: this.filterFacetCount,\n injectionDepth: this.injectionDepth,\n },\n });\n\n return this.facetForDateRange;\n }\n\n private initializeFilter() {\n this.filter = buildInsightDateFilter(this.bindings.engine, {\n options: {\n facetId: `${this.facetId}_input`,\n field: this.field,\n },\n });\n\n return this.filter;\n }\n\n @Listen('atomic/dateInputApply')\n public applyDateInput() {\n this.facetId &&\n this.bindings.engine.dispatch(\n loadInsightDateFacetSetActions(\n this.bindings.engine\n ).deselectAllDateFacetValues(this.facetId)\n );\n }\n\n public render() {\n if (!this.timeframeFacetCommon) {\n return (\n <FacetPlaceholder\n numberOfValues={5}\n isCollapsed={this.isCollapsed}\n ></FacetPlaceholder>\n );\n }\n return this.timeframeFacetCommon.render({\n hasError: this.searchStatusState.hasError,\n firstSearchExecuted: this.searchStatusState.firstSearchExecuted,\n isCollapsed: this.isCollapsed,\n headerFocus: this.focusTarget,\n onToggleCollapse: () => (this.isCollapsed = !this.isCollapsed),\n });\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"atomic-insight-timeframe-facet.js","mappings":"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","names":["escapeHtml","AtomicInsightTimeframeFacet","buildInsightFacetConditionsManager","buildInsightDateRange","deserializeInsightRelativeDate","buildInsightSearchStatus","buildInsightDateFacet","buildInsightDateFilter","loadInsightDateFacetSetActions"],"sources":["src/utils/stencil-accessibility-utils.tsx","src/components/common/facets/depends-on.ts","src/components/common/facets/facet-placeholder/stencil-facet-placeholder.tsx","src/utils/field-utils.ts","src/components/common/facets/facet-container/stencil-facet-container.tsx","src/components/common/stencil-heading.tsx","src/components/common/facets/facet-header/stencil-facet-header.tsx","../../node_modules/.pnpm/escape-html@1.0.3/node_modules/escape-html/index.js","src/utils/string-utils.ts","src/components/common/facets/facet-search/facet-search-utils.ts","src/components/common/facets/facet-value-label-highlight/stencil-facet-value-label-highlight.tsx","src/components/common/facets/facet-value-link/stencil-facet-value-link.tsx","src/components/common/stencil-fieldset-group.tsx","src/components/common/facets/facet-values-group/stencil-facet-values-group.tsx","src/components/common/facets/popover/popover-type.ts","src/components/common/facets/stencil-facet-common.tsx","src/components/common/facets/stencil-timeframe-facet-common.tsx","src/components/insight/atomic-insight-timeframe-facet/atomic-insight-timeframe-facet.pcss?tag=atomic-insight-timeframe-facet&encapsulation=shadow","src/components/insight/atomic-insight-timeframe-facet/atomic-insight-timeframe-facet.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","type GenericCondition<AnyFacetValueRequest> = {\n parentFacetId: string;\n condition(parentValues: AnyFacetValueRequest[]): boolean;\n};\n\ninterface SimpleFacetValue {\n value: string;\n state: string;\n}\n\ninterface CategoryFacetValue extends SimpleFacetValue {\n children: SimpleFacetValue[];\n}\n\nexport function parseDependsOn<\n FacetValue extends SimpleFacetValue | CategoryFacetValue,\n>(dependsOn: Record<string, string>): GenericCondition<FacetValue>[] {\n if (Object.keys(dependsOn).length > 1) {\n throw \"Depending on multiple facets isn't supported\";\n }\n\n const entries = Object.entries(dependsOn);\n return entries.map(([parentFacetId, expectedValue]) => ({\n parentFacetId,\n condition: buildDependsOnCondition<FacetValue>(expectedValue),\n }));\n}\n\nfunction buildDependsOnCondition<\n FacetValue extends SimpleFacetValue | CategoryFacetValue,\n>(expectedValue: string): (values: FacetValue[]) => boolean {\n return (values: FacetValue[]) =>\n values.some((value) => {\n if (isCategoryFacetValue(value)) {\n return matchesCategoryFacetValue(\n value as CategoryFacetValue,\n expectedValue\n );\n }\n if (isSimpleFacetValue(value)) {\n return matchesSimpleFacetValue(\n value as SimpleFacetValue,\n expectedValue\n );\n }\n return false;\n });\n}\n\nfunction matchesCategoryFacetValue<FacetValue extends CategoryFacetValue>(\n value: FacetValue,\n expectedValue: string\n): boolean {\n const selectedValue = getSelectedCategoryFacetValueRequest(value);\n if (!selectedValue) {\n return false;\n }\n return !expectedValue || selectedValue.value === expectedValue;\n}\n\nfunction matchesSimpleFacetValue(\n value: SimpleFacetValue,\n expectedValue: string\n): boolean {\n if (value.state !== 'selected') {\n return false;\n }\n return !expectedValue || value.value === expectedValue;\n}\n\nfunction isCategoryFacetValue(request: unknown): request is CategoryFacetValue {\n const requestAsRecord = request as Record<string, unknown>;\n return (\n (requestAsRecord?.children &&\n Array.isArray(requestAsRecord.children) &&\n requestAsRecord?.state &&\n typeof requestAsRecord.state === 'string') === true\n );\n}\n\nfunction getSelectedCategoryFacetValueRequest(\n value: unknown\n): CategoryFacetValue | null {\n if (!isCategoryFacetValue(value)) {\n return null;\n }\n if (value.state === 'selected') {\n return value;\n }\n for (const child of value.children) {\n const selectedValue = getSelectedCategoryFacetValueRequest(child);\n if (selectedValue !== null) {\n return selectedValue;\n }\n }\n return null;\n}\n\nfunction isSimpleFacetValue(value: unknown): value is SimpleFacetValue {\n const asRecord = value as Record<string, unknown>;\n return (\n 'value' in asRecord &&\n typeof asRecord.value === 'string' &&\n !('children' in asRecord)\n );\n}\n","import {FunctionalComponent, h} from '@stencil/core';\n\ninterface FacetPlaceholderProps {\n numberOfValues: number;\n isCollapsed: boolean;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const FacetPlaceholder: FunctionalComponent<FacetPlaceholderProps> = ({\n numberOfValues,\n isCollapsed,\n}) => {\n const facetValues = [];\n for (let i = 0; i < numberOfValues; i++) {\n facetValues.push(\n <div\n class=\"bg-neutral mt-4 flex h-5\"\n style={{width: '100%', opacity: '0.5'}}\n ></div>\n );\n }\n\n return (\n <div\n part=\"placeholder\"\n class=\"bg-background border-neutral mb-4 animate-pulse rounded-lg border p-7\"\n aria-hidden=\"true\"\n >\n <div class=\"bg-neutral h-8 rounded\" style={{width: '75%'}}></div>\n {!isCollapsed && <div class=\"mt-7\">{facetValues}</div>}\n </div>\n );\n};\n","import type {i18n} from 'i18next';\n\nfunction getFieldCaptionNamespace(field: string) {\n return `caption-${field}`;\n}\n\nexport function getFieldCaptions(field: string, i18n: i18n) {\n return (\n i18n.getResourceBundle(i18n.language, getFieldCaptionNamespace(field)) || {}\n );\n}\n\nexport function getFieldValueCaption(\n field: string,\n facetValue: string,\n i18n: i18n\n) {\n return i18n.t(facetValue, {\n ns: getFieldCaptionNamespace(field),\n });\n}\n","import {FunctionalComponent, h} from '@stencil/core';\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const FacetContainer: FunctionalComponent = (_, children) => (\n <div class=\"bg-background border-neutral rounded-lg border p-4\" part=\"facet\">\n {children}\n </div>\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","import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport ArrowBottomIcon from '../../../../images/arrow-bottom-rounded.svg';\nimport ArrowTopIcon from '../../../../images/arrow-top-rounded.svg';\nimport CloseIcon from '../../../../images/close.svg';\nimport {Button} from '../../stencil-button';\nimport {Heading} from '../../stencil-heading';\n\ninterface FacetHeaderProps {\n i18n: i18n;\n label: string;\n numberOfActiveValues: number;\n isCollapsed: boolean;\n headingLevel: number;\n onToggleCollapse(): void;\n onClearFilters?(): void;\n headerRef?: (element?: HTMLButtonElement) => void;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const FacetHeader: FunctionalComponent<FacetHeaderProps> = (props) => {\n const label = props.i18n.t(props.label);\n const expandFacet = props.i18n.t('expand-facet', {label});\n const collapseFacet = props.i18n.t('collapse-facet', {label});\n const clearFilters = props.i18n.t('clear-filters', {\n count: props.numberOfActiveValues,\n });\n const clearFiltersForFacet = props.i18n.t('clear-filters-for-facet', {\n count: props.numberOfActiveValues,\n label,\n });\n\n return [\n <Button\n style=\"text-transparent\"\n part=\"label-button\"\n class=\"flex w-full justify-between rounded-none px-2 py-1 text-lg font-bold\"\n ariaLabel={props.isCollapsed ? expandFacet : collapseFacet}\n onClick={() => props.onToggleCollapse()}\n ariaExpanded={(!props.isCollapsed).toString()}\n ref={props.headerRef}\n >\n <Heading level={props.headingLevel} class=\"truncate\">\n {label}\n </Heading>\n <atomic-icon\n part=\"label-button-icon\"\n class=\"ml-4 w-3 shrink-0 self-center\"\n icon={props.isCollapsed ? ArrowBottomIcon : ArrowTopIcon}\n ></atomic-icon>\n </Button>,\n props.onClearFilters && props.numberOfActiveValues > 0 && (\n <Button\n style=\"text-primary\"\n part=\"clear-button\"\n class=\"flex max-w-full items-baseline p-2 text-sm\"\n ariaLabel={clearFiltersForFacet}\n onClick={() => props.onClearFilters!()}\n >\n <atomic-icon\n part=\"clear-button-icon\"\n class=\"mr-1 h-2 w-2\"\n icon={CloseIcon}\n ></atomic-icon>\n <span>{clearFilters}</span>\n </Button>\n ),\n ];\n};\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","export function regexEncode(value: string): string {\n return value.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&');\n}\n\nexport function encodeForDomAttribute(str: string) {\n return str\n .split('')\n .map((ch) => (ch.match(/(\\d|\\w)+/g) ? ch : ch.charCodeAt(0)))\n .join('');\n}\n","import escapeHtml from 'escape-html';\nimport {regexEncode} from '../../../../utils/string-utils';\n\ninterface FacetSearchState {\n query: string;\n values: unknown[];\n isLoading: boolean;\n}\n\n/**\n * Meant to be used inside the `shouldUpdate` lifecycle method.\n * It prevents updating the facet between two matchless facet searches.\n * It also prevents updating the facet until the first search has loaded.\n */\nexport function shouldUpdateFacetSearchComponent(\n nextFacetSearchState: FacetSearchState,\n prevFacetSearchState: FacetSearchState\n) {\n const hasQuery = nextFacetSearchState.query !== '';\n const stillNoValues =\n !nextFacetSearchState.values.length && !prevFacetSearchState.values.length;\n const hasFinishedLoading =\n !nextFacetSearchState.isLoading && prevFacetSearchState.isLoading;\n\n if (hasQuery && stillNoValues) {\n return hasFinishedLoading;\n }\n\n return true;\n}\n\nexport function shouldDisplaySearchResults(facetSearchState: FacetSearchState) {\n const hasQuery = facetSearchState.query !== '';\n const isLoading = facetSearchState.isLoading;\n const hasValues = !!facetSearchState.values.length;\n\n if (!hasQuery) {\n return false;\n }\n\n if (hasValues) {\n return true;\n }\n\n return !isLoading;\n}\n\nexport function highlightSearchResult(resultValue: string, searchQuery = '') {\n const sanitizedResult = escapeHtml(resultValue);\n\n if (searchQuery.trim() === '') {\n return sanitizedResult;\n }\n\n const regex = new RegExp(`(${regexEncode(escapeHtml(searchQuery))})`, 'i');\n return escapeHtml(resultValue).replace(\n regex,\n '<span part=\"search-highlight\" class=\"font-bold\">$1</span>'\n );\n}\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {highlightSearchResult} from '../facet-search/facet-search-utils';\n\ninterface FacetValueLabelHighlightProps {\n displayValue: string;\n searchQuery?: string;\n isSelected: boolean;\n isExcluded?: boolean;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const FacetValueLabelHighlight: FunctionalComponent<\n FacetValueLabelHighlightProps\n> = (props) => {\n return (\n // deepcode ignore ReactSetInnerHtml: This is not React code\n <span\n title={props.displayValue}\n part=\"value-label\"\n class={`value-label peer-hover:text-error truncate ${\n props.isSelected || !!props.isExcluded ? 'font-bold' : ''\n }`}\n innerHTML={highlightSearchResult(props.displayValue, props.searchQuery)}\n ></span>\n );\n};\n","import {FunctionalComponent, h, VNode} from '@stencil/core';\nimport {Button} from '../../stencil-button';\nimport {FacetValueProps} from '../stencil-facet-common';\n\ninterface FacetValueLinkProps extends FacetValueProps {\n subList?: VNode | VNode[];\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const FacetValueLink: FunctionalComponent<FacetValueLinkProps> = (\n props,\n children\n) => {\n const count = props.numberOfResults.toLocaleString(props.i18n.language);\n const ariaLabel = props.i18n.t('facet-value', {\n value: props.displayValue,\n count: props.numberOfResults,\n formattedCount: count,\n interpolation: {escapeValue: false},\n });\n\n let part =\n props.part ?? `value-link${props.isSelected ? ' value-link-selected' : ''}`;\n\n if (props.additionalPart) {\n part += ` ${props.additionalPart}`;\n }\n\n return (\n <li key={props.displayValue} class={props.class}>\n <Button\n style=\"text-neutral\"\n part={part}\n onClick={() => props.onClick()}\n class=\"group flex w-full items-center truncate px-2 py-2.5 text-left focus-visible:outline-none\"\n ariaPressed={props.isSelected.toString()}\n ariaLabel={ariaLabel}\n ref={props.buttonRef}\n >\n {children}\n <span part=\"value-count\" class=\"value-count\">\n {props.i18n.t('between-parentheses', {\n text: count,\n })}\n </span>\n </Button>\n {props.subList}\n </li>\n );\n};\n","import {h, FunctionalComponent} from '@stencil/core';\n\ninterface GroupProps {\n label: string;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const FieldsetGroup: FunctionalComponent<GroupProps> = (\n {label},\n children\n) => (\n <fieldset class=\"contents\">\n <legend class=\"sr-only\">{label}</legend>\n {children}\n </fieldset>\n);\n","import {h, FunctionalComponent} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport {FieldsetGroup} from '../../stencil-fieldset-group';\n\ninterface FacetValuesGroupProps {\n i18n: i18n;\n label?: string;\n query?: string;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const FacetValuesGroup: FunctionalComponent<FacetValuesGroupProps> = (\n props,\n children\n) => {\n if (!props.label) {\n return children;\n }\n const facetDisplayLabel = props.i18n.t(props.label);\n const groupLabel =\n props.query === undefined\n ? props.i18n.t('facet-values', {label: facetDisplayLabel})\n : props.i18n.t('facet-search-results', {\n query: props.query,\n label: facetDisplayLabel,\n });\n\n return <FieldsetGroup label={groupLabel}>{children}</FieldsetGroup>;\n};\n","import {buildCustomEvent} from '../../../../utils/event-utils';\nimport type {FacetInfo} from '../../../common/facets/facet-common-store';\n\nexport interface PopoverChildFacet extends FacetInfo {\n hasValues: () => boolean;\n numberOfActiveValues: () => number;\n}\n\nexport const popoverClass = 'popover-nested';\n\nexport function initializePopover(\n host: HTMLElement,\n childFacet: PopoverChildFacet\n) {\n host.dispatchEvent(\n buildCustomEvent<PopoverChildFacet>('atomic/initializePopover', childFacet)\n );\n}\n","import {FacetValue, SearchStatusState} from '@coveo/headless';\nimport {i18n} from 'i18next';\nimport { AtomicAutomaticFacetGenerator } from '../../search/atomic-automatic-facet-generator/atomic-automatic-facet-generator';\n\nexport interface FacetValueProps {\n i18n: i18n;\n displayValue: string;\n numberOfResults: number;\n isSelected: boolean;\n onClick(): void;\n searchQuery?: string;\n class?: string;\n part?: string;\n additionalPart?: string;\n buttonRef?: (element?: HTMLButtonElement) => void;\n}\n\nexport function shouldDisplayInputForFacetRange(facetRange: {\n hasInput: boolean;\n hasInputRange: boolean;\n searchStatusState: SearchStatusState;\n facetValues: Pick<FacetValue, 'numberOfResults' | 'state'>[];\n}) {\n const {hasInput, hasInputRange, searchStatusState, facetValues} = facetRange;\n if (!hasInput) {\n return false;\n }\n\n if (hasInputRange) {\n return true;\n }\n\n if (!searchStatusState.hasResults) {\n return false;\n }\n\n const onlyValuesWithResultsOrActive =\n facetValues.filter(\n (value) => value.numberOfResults || value.state !== 'idle'\n ) || [];\n\n if (!onlyValuesWithResultsOrActive.length) {\n return false;\n }\n\n return true;\n}\n\nexport type BaseFacetElement = HTMLElement & {\n facetId: string;\n isCollapsed: boolean;\n};\n\nexport function sortFacetVisibility(\n facetElements: BaseFacetElement[],\n facetInfoMap: Record<string, {isHidden: () => boolean}>\n) {\n const visibleFacets: BaseFacetElement[] = [];\n const invisibleFacets: BaseFacetElement[] = [];\n\n facetElements.forEach((facet) => {\n if (facetInfoMap[facet.facetId] && facetInfoMap[facet.facetId].isHidden()) {\n invisibleFacets.push(facet);\n } else {\n visibleFacets.push(facet);\n }\n });\n\n return {visibleFacets, invisibleFacets};\n}\n\nexport function collapseFacetsAfter(\n facets: BaseFacetElement[],\n visibleFacetsCount: number\n) {\n if (visibleFacetsCount === -1) {\n return;\n }\n\n facets.forEach((facet, index) => {\n facet.isCollapsed = index + 1 > visibleFacetsCount;\n });\n}\n\nexport function isAutomaticFacetGenerator(\n element: HTMLElement\n): element is AtomicAutomaticFacetGenerator {\n return element.tagName === 'ATOMIC-AUTOMATIC-FACET-GENERATOR';\n}\n\nfunction isPseudoFacet(el: Element): el is BaseFacetElement {\n return 'facetId' in el;\n}\n\nexport function getFacetsInChildren(parent: HTMLElement): BaseFacetElement[] {\n const facets = Array.from(parent.children).filter((child) =>\n isPseudoFacet(child)\n ) as BaseFacetElement[];\n\n return facets;\n}\nexport function getAutomaticFacetGenerator(\n parent: HTMLElement\n): AtomicAutomaticFacetGenerator | undefined {\n return (Array.from(parent.children) as HTMLElement[]).find(\n isAutomaticFacetGenerator\n );\n}\n\nfunction findFacetParent(\n facet: BaseFacetElement,\n parents: (HTMLElement | null)[]\n) {\n for (let i = 0; i < parents.length; i++) {\n if (parents[i]?.contains(facet)) {\n return parents[i];\n }\n }\n return null;\n}\n\n/**\n * Triage elements by their parents.\n * @param facets Facet Elements\n * @param parents Elements that may contains the facets\n * @returns an array in the same order as the parents, containing the facets that are contained by the corresponding parent.\n * The last element of the array contains the facets that are not contained by any of the parents.\n */\nexport function triageFacetsByParents(\n facets: BaseFacetElement[],\n ...parents: (HTMLElement | null)[]\n): Map<HTMLElement | null, BaseFacetElement[]> {\n const sortedFacets: Map<HTMLElement | null, BaseFacetElement[]> = new Map(\n parents.concat([null]).map((parent) => [parent, []])\n );\n for (const facet of facets) {\n const parent = findFacetParent(facet, parents);\n sortedFacets.get(parent)!.push(facet);\n }\n return sortedFacets;\n}\n","import {FocusTargetController} from '@/src/utils/stencil-accessibility-utils';\nimport {\n DateFacet,\n DateFacetValue,\n DateFilter,\n DateRangeOptions,\n DateRangeRequest,\n FacetConditionsManager,\n RangeFacetSortCriterion,\n RelativeDate,\n RelativeDatePeriod,\n RelativeDateUnit,\n SearchStatusState,\n} from '@coveo/headless';\nimport {h, VNode} from '@stencil/core';\nimport {parseDate} from '../../../utils/date-utils';\nimport {getFieldValueCaption} from '../../../utils/field-utils';\nimport {randomID} from '../../../utils/utils';\nimport {InsightBindings} from '../../insight/atomic-insight-interface/atomic-insight-interface';\nimport {Bindings as SearchBindings} from '../../search/atomic-search-interface/atomic-search-interface';\nimport {Hidden} from '../stencil-hidden';\nimport {FacetInfo} from './facet-common-store';\nimport {FacetContainer} from './facet-container/stencil-facet-container';\nimport {FacetHeader} from './facet-header/stencil-facet-header';\nimport {FacetPlaceholder} from './facet-placeholder/stencil-facet-placeholder';\nimport {FacetValueLabelHighlight} from './facet-value-label-highlight/stencil-facet-value-label-highlight';\nimport {FacetValueLink} from './facet-value-link/stencil-facet-value-link';\nimport {FacetValuesGroup} from './facet-values-group/stencil-facet-values-group';\nimport {initializePopover} from './popover/popover-type';\nimport {shouldDisplayInputForFacetRange} from './stencil-facet-common';\n\nexport interface Timeframe {\n period: RelativeDatePeriod;\n unit?: RelativeDateUnit;\n amount?: number;\n label?: string;\n}\n\ninterface TimeframeFacetCommonOptions {\n facetId?: string;\n host: HTMLElement;\n bindings: SearchBindings | InsightBindings;\n label: string;\n field: string;\n headingLevel: number;\n dependsOn: Record<string, string>;\n withDatePicker: boolean;\n setFacetId(id: string): string;\n getSearchStatusState(): SearchStatusState;\n buildDependenciesManager(facetId: string): FacetConditionsManager;\n deserializeRelativeDate(date: string): RelativeDate;\n buildDateRange(config: DateRangeOptions): DateRangeRequest;\n initializeFacetForDatePicker(): DateFacet;\n initializeFacetForDateRange(values: DateRangeRequest[]): DateFacet;\n initializeFilter(): DateFilter;\n min?: string;\n max?: string;\n sortCriteria: RangeFacetSortCriterion;\n}\n\ninterface TimeframeFacetCommonRenderProps {\n hasError: boolean;\n firstSearchExecuted: boolean;\n isCollapsed: boolean;\n headerFocus: FocusTargetController;\n onToggleCollapse: () => boolean;\n}\n\nexport class TimeframeFacetCommon {\n private facetId?: string;\n private facetForDatePicker?: DateFacet;\n private facetForDateRange?: DateFacet;\n private filter?: DateFilter;\n private manualTimeframes: Timeframe[] = [];\n private facetForDateRangeDependenciesManager?: FacetConditionsManager;\n private facetForDatePickerDependenciesManager?: FacetConditionsManager;\n private filterDependenciesManager?: FacetConditionsManager;\n\n constructor(private props: TimeframeFacetCommonOptions) {\n this.facetId = this.determineFacetId;\n this.props.setFacetId(this.facetId);\n\n this.manualTimeframes = this.getManualTimeframes();\n\n // Initialize two facets: One that is actually used to display values for end users, which only exists\n // if we need to display something to the end user (ie: timeframes > 0)\n\n // A second facet is initialized only to verify the results count. It is never used to display results to end user.\n // It serves as a way to determine if the input should be rendered or not, independent of the ranges configured in the component\n if (this.manualTimeframes.length > 0) {\n this.facetForDateRange = this.props.initializeFacetForDateRange(\n this.currentValues\n );\n }\n\n if (this.props.withDatePicker) {\n this.facetForDatePicker = this.props.initializeFacetForDatePicker();\n this.facetForDatePickerDependenciesManager =\n this.props.buildDependenciesManager(\n this.facetForDatePicker.state.facetId\n );\n this.filter = this.props.initializeFilter();\n }\n\n if (this.facetForDateRange) {\n this.facetForDateRangeDependenciesManager =\n this.props.buildDependenciesManager(\n this.facetForDateRange?.state.facetId\n );\n }\n\n if (this.filter) {\n this.filterDependenciesManager = this.props.buildDependenciesManager(\n this.filter?.state.facetId\n );\n }\n\n this.registerFacetToStore();\n }\n\n private get determineFacetId() {\n if (this.props.facetId) {\n return this.props.facetId;\n }\n\n if (this.props.bindings.store.state.dateFacets[this.props.field]) {\n return randomID(`${this.props.field}_`);\n }\n\n return this.props.field;\n }\n\n private get enabled() {\n return (\n this.facetForDateRange?.state.enabled ??\n this.filter?.state.enabled ??\n true\n );\n }\n\n private get valuesToRender() {\n return (\n this.facetForDateRange?.state.values.filter(\n (value) => value.numberOfResults || value.state !== 'idle'\n ) || []\n );\n }\n\n private get shouldRenderValues() {\n return !this.hasInputRange && !!this.valuesToRender.length;\n }\n\n private get shouldRenderFacet() {\n return this.shouldRenderInput || this.shouldRenderValues;\n }\n\n private get shouldRenderInput() {\n return shouldDisplayInputForFacetRange({\n hasInput: this.props.withDatePicker,\n hasInputRange: this.hasInputRange,\n searchStatusState: this.props.getSearchStatusState(),\n facetValues: this.facetForDatePicker?.state?.values || [],\n });\n }\n\n private get hasValues() {\n if (this.facetForDatePicker?.state.values.length) {\n return true;\n }\n\n return !!this.valuesToRender.length;\n }\n\n private get numberOfSelectedValues() {\n if (this.filter?.state?.range) {\n return 1;\n }\n\n return (\n this.facetForDateRange?.state.values.filter(\n ({state}) => state === 'selected'\n ).length || 0\n );\n }\n\n private get hasInputRange() {\n return !!this.filter?.state.range;\n }\n\n public get currentValues(): DateRangeRequest[] {\n return this.manualTimeframes.map(({period, amount, unit}) =>\n period === 'past'\n ? this.props.buildDateRange({\n start: {period, unit, amount},\n end: {period: 'now'},\n })\n : this.props.buildDateRange({\n start: {period: 'now'},\n end: {period, unit, amount},\n })\n );\n }\n\n public disconnectedCallback() {\n if (this.props.host.isConnected) {\n return;\n }\n this.facetForDateRangeDependenciesManager?.stopWatching();\n this.facetForDatePickerDependenciesManager?.stopWatching();\n this.filterDependenciesManager?.stopWatching();\n }\n\n private get isHidden() {\n return !this.shouldRenderFacet || !this.enabled;\n }\n\n private registerFacetToStore() {\n const facetInfo: FacetInfo = {\n label: () => this.props.bindings.i18n.t(this.props.label),\n facetId: this.facetId!,\n element: this.props.host,\n isHidden: () => this.isHidden,\n };\n\n this.props.bindings.store.registerFacet('dateFacets', {\n ...facetInfo,\n format: (value) => this.formatFacetValue(value),\n });\n\n initializePopover(this.props.host, {\n ...facetInfo,\n hasValues: () => this.hasValues,\n numberOfActiveValues: () => this.numberOfSelectedValues,\n });\n\n if (this.filter) {\n this.props.bindings.store.state.dateFacets[this.filter.state.facetId] =\n this.props.bindings.store.state.dateFacets[this.facetId!];\n }\n }\n\n private getManualTimeframes(): Timeframe[] {\n return Array.from(this.props.host.querySelectorAll('atomic-timeframe')).map(\n ({label, amount, unit, period}) => ({\n label,\n amount,\n unit,\n period,\n })\n );\n }\n\n private formatFacetValue(facetValue: DateFacetValue) {\n try {\n const startDate = this.props.deserializeRelativeDate(facetValue.start);\n const relativeDate =\n startDate.period === 'past'\n ? startDate\n : this.props.deserializeRelativeDate(facetValue.end);\n const timeframe = this.getManualTimeframes().find(\n (timeframe) =>\n timeframe.period === relativeDate.period &&\n timeframe.unit === relativeDate.unit &&\n timeframe.amount === relativeDate.amount\n );\n\n if (timeframe?.label) {\n return getFieldValueCaption(\n this.props.field,\n timeframe.label,\n this.props.bindings.i18n\n );\n }\n return this.props.bindings.i18n.t(\n `${relativeDate.period}-${relativeDate.unit}`,\n {\n count: relativeDate.amount,\n }\n );\n } catch (error) {\n return this.props.bindings.i18n.t('to', {\n start: parseDate(facetValue.start).format('YYYY-MM-DD'),\n end: parseDate(facetValue.end).format('YYYY-MM-DD'),\n });\n }\n }\n private renderValues() {\n return this.renderValuesContainer(\n this.valuesToRender.map((value) => this.renderValue(value))\n );\n }\n private renderValue(facetValue: DateFacetValue) {\n const displayValue = this.formatFacetValue(facetValue);\n const isSelected = facetValue.state === 'selected';\n const isExcluded = facetValue.state === 'excluded';\n return (\n <FacetValueLink\n displayValue={displayValue}\n isSelected={isSelected}\n numberOfResults={facetValue.numberOfResults}\n i18n={this.props.bindings.i18n}\n onClick={() => this.facetForDateRange!.toggleSingleSelect(facetValue)}\n >\n <FacetValueLabelHighlight\n displayValue={displayValue}\n isSelected={isSelected}\n isExcluded={isExcluded}\n ></FacetValueLabelHighlight>\n </FacetValueLink>\n );\n }\n\n private renderValuesContainer(children: VNode[]) {\n return (\n <FacetValuesGroup\n i18n={this.props.bindings.i18n}\n label={this.props.label}\n >\n <ul class=\"mt-3\" part=\"values\">\n {children}\n </ul>\n </FacetValuesGroup>\n );\n }\n\n private renderHeader(\n isCollapsed: boolean,\n headerFocus: FocusTargetController,\n onToggleCollapse: () => void\n ) {\n return (\n <FacetHeader\n i18n={this.props.bindings.i18n}\n label={this.props.label}\n onClearFilters={() => {\n headerFocus.focusAfterSearch();\n if (this.filter?.state.range) {\n this.filter?.clear();\n return;\n }\n this.facetForDateRange?.deselectAll();\n }}\n numberOfActiveValues={this.numberOfSelectedValues}\n isCollapsed={isCollapsed}\n headingLevel={this.props.headingLevel}\n onToggleCollapse={onToggleCollapse}\n headerRef={(el) => headerFocus.setTarget(el)}\n ></FacetHeader>\n );\n }\n\n private renderDateInput() {\n return (\n <atomic-stencil-facet-date-input\n min={this.props.min}\n max={this.props.max}\n bindings={this.props.bindings}\n label={this.props.label}\n facetId={this.filter!.state!.facetId}\n rangeGetter={() => this.filter!.state.range}\n rangeSetter={(request: DateRangeRequest) => {\n this.filter!.setRange(request);\n }}\n ></atomic-stencil-facet-date-input>\n );\n }\n\n public render({\n hasError,\n firstSearchExecuted,\n isCollapsed,\n headerFocus,\n onToggleCollapse,\n }: TimeframeFacetCommonRenderProps) {\n if (hasError || !this.enabled) {\n return <Hidden></Hidden>;\n }\n\n if (!firstSearchExecuted) {\n return (\n <FacetPlaceholder\n numberOfValues={this.currentValues.length}\n isCollapsed={isCollapsed}\n ></FacetPlaceholder>\n );\n }\n\n if (!this.shouldRenderFacet) {\n return <Hidden></Hidden>;\n }\n\n return (\n <FacetContainer>\n {this.renderHeader(isCollapsed, headerFocus, onToggleCollapse)}\n {!isCollapsed && [\n this.shouldRenderValues && this.renderValues(),\n this.shouldRenderInput && this.renderDateInput(),\n ]}\n </FacetContainer>\n );\n }\n}\n","@import '../../common/facets/facet-common.pcss';\n","import {\n buildDateFacet as buildInsightDateFacet,\n buildDateFilter as buildInsightDateFilter,\n buildDateRange as buildInsightDateRange,\n buildFacetConditionsManager as buildInsightFacetConditionsManager,\n buildSearchStatus as buildInsightSearchStatus,\n deserializeRelativeDate as deserializeInsightRelativeDate,\n DateFacet as InsightDateFacet,\n DateFacetState as InsightDateFacetState,\n DateFilter as InsightDateFilter,\n DateFilterState as InsightDateFilterState,\n DateRangeRequest as InsightDateRangeRequest,\n SearchStatus as InsightSearchStatus,\n SearchStatusState as InsightSearchStatusState,\n loadDateFacetSetActions as loadInsightDateFacetSetActions,\n RangeFacetSortCriterion as InsightRangeFacetSortCriterion,\n FacetValueRequest as InsightFacetValueRequest,\n CategoryFacetValueRequest as InsightCategoryFacetValueRequest,\n} from '@coveo/headless/insight';\nimport {Component, Element, h, Listen, Prop, State} from '@stencil/core';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../utils/initialization-utils';\nimport {MapProp} from '../../../utils/props-utils';\nimport {FocusTargetController} from '../../../utils/stencil-accessibility-utils';\nimport {parseDependsOn} from '../../common/facets/depends-on';\nimport {FacetPlaceholder} from '../../common/facets/facet-placeholder/stencil-facet-placeholder';\nimport {TimeframeFacetCommon} from '../../common/facets/stencil-timeframe-facet-common';\nimport {InsightBindings} from '../atomic-insight-interface/atomic-insight-interface';\n\n/**\n * @internal\n */\n@Component({\n tag: 'atomic-insight-timeframe-facet',\n styleUrl: './atomic-insight-timeframe-facet.pcss',\n shadow: true,\n})\nexport class AtomicInsightTimeframeFacet\n implements InitializableComponent<InsightBindings>\n{\n @InitializeBindings() public bindings!: InsightBindings;\n public facetForDateRange?: InsightDateFacet;\n public facetForDatePicker?: InsightDateFacet;\n\n private timeframeFacetCommon?: TimeframeFacetCommon;\n public filter?: InsightDateFilter;\n public searchStatus!: InsightSearchStatus;\n @Element() private host!: HTMLElement;\n\n @BindStateToController('facetForDateRange')\n @State()\n public facetState!: InsightDateFacetState;\n @BindStateToController('facetForDatePicker')\n @State()\n public facetForDatePickerState?: InsightDateFacetState;\n @BindStateToController('filter')\n @State()\n public filterState?: InsightDateFilterState;\n @BindStateToController('searchStatus')\n @State()\n public searchStatusState!: InsightSearchStatusState;\n @State() public error!: Error;\n\n /**\n * Specifies a unique identifier for the facet.\n */\n @Prop({mutable: true, reflect: true}) public facetId?: string;\n /**\n * The non-localized label for the facet.\n * Used in the atomic-breadbox component through the bindings store.\n */\n @Prop({reflect: true}) public label = 'no-label';\n /**\n * The field whose values you want to display in the facet.\n */\n @Prop({reflect: true}) public field = 'date';\n /**\n * Whether this facet should contain a date picker allowing users to set custom ranges.\n */\n @Prop({reflect: true}) public withDatePicker = false;\n /**\n * Specifies if the facet is collapsed.\n */\n @Prop({reflect: true, mutable: true}) public isCollapsed = false;\n /**\n * The [heading level](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements) to use for the heading over the facet, from 1 to 6.\n */\n @Prop({reflect: true}) public headingLevel = 0;\n /**\n * Whether to exclude the parents of folded results when estimating the result count for each facet value.\n *\n *\n * Note: Resulting count is only an estimation, in some cases this value could be incorrect.\n */\n @Prop({reflect: true}) public filterFacetCount = true;\n /**\n * The maximum number of results to scan in the index to ensure that the facet lists all potential facet values.\n * Note: A high injectionDepth may negatively impact the facet request performance.\n * Minimum: `0`\n * Default: `1000`\n */\n @Prop({reflect: true}) public injectionDepth = 1000;\n\n /**\n * The required facets and values for this facet to be displayed.\n * Examples:\n * ```html\n * <atomic-insight-facet facet-id=\"abc\" field=\"objecttype\" ...></atomic-insight-facet>\n *\n * <!-- To show the facet when any value is selected in the facet with id \"abc\": -->\n * <atomic-insight-timeframe-facet\n * depends-on-abc\n * ...\n * ></atomic-insight-timeframe-facet>\n *\n * <!-- To show the facet when value \"doc\" is selected in the facet with id \"abc\": -->\n * <atomic-insight-timeframe-facet\n * depends-on-abc=\"doc\"\n * ...\n * ></atomic-insight-timeframe-facet>\n * ```\n */\n @MapProp() @Prop() public dependsOn: Record<string, string> = {};\n\n /**\n * The sort criterion to apply to the returned facet values.\n * Possible values are 'ascending' and 'descending'.\n */\n @Prop({reflect: true}) public sortCriteria: InsightRangeFacetSortCriterion =\n 'descending';\n\n private headerFocus?: FocusTargetController;\n\n public initialize() {\n this.timeframeFacetCommon = new TimeframeFacetCommon({\n facetId: this.facetId,\n host: this.host,\n bindings: this.bindings,\n label: this.label,\n field: this.field,\n headingLevel: this.headingLevel,\n dependsOn: this.dependsOn,\n withDatePicker: this.withDatePicker,\n setFacetId: (id: string) => (this.facetId = id),\n buildDependenciesManager: (facetId: string) =>\n buildInsightFacetConditionsManager(this.bindings.engine, {\n facetId,\n conditions: parseDependsOn<\n InsightFacetValueRequest | InsightCategoryFacetValueRequest\n >(this.dependsOn),\n }),\n buildDateRange: buildInsightDateRange,\n getSearchStatusState: () => this.searchStatusState,\n deserializeRelativeDate: deserializeInsightRelativeDate,\n initializeFacetForDatePicker: () => this.initializeFacetForDatePicker(),\n initializeFacetForDateRange: (values: InsightDateRangeRequest[]) =>\n this.initializeFacetForDateRange(values),\n initializeFilter: () => this.initializeFilter(),\n sortCriteria: this.sortCriteria,\n });\n this.searchStatus = buildInsightSearchStatus(this.bindings.engine);\n }\n\n private get focusTarget(): FocusTargetController {\n if (!this.headerFocus) {\n this.headerFocus = new FocusTargetController(this);\n }\n return this.headerFocus;\n }\n\n public disconnectedCallback() {\n this.timeframeFacetCommon?.disconnectedCallback();\n }\n\n private initializeFacetForDatePicker() {\n this.facetForDatePicker = buildInsightDateFacet(this.bindings.engine, {\n options: {\n facetId: `${this.facetId}_input_range`,\n numberOfValues: 1,\n generateAutomaticRanges: true,\n field: this.field,\n filterFacetCount: this.filterFacetCount,\n injectionDepth: this.injectionDepth,\n },\n });\n return this.facetForDatePicker;\n }\n\n private initializeFacetForDateRange(values: InsightDateRangeRequest[]) {\n this.facetForDateRange = buildInsightDateFacet(this.bindings.engine, {\n options: {\n facetId: this.facetId,\n field: this.field,\n currentValues: values,\n generateAutomaticRanges: false,\n sortCriteria: 'descending',\n filterFacetCount: this.filterFacetCount,\n injectionDepth: this.injectionDepth,\n },\n });\n\n return this.facetForDateRange;\n }\n\n private initializeFilter() {\n this.filter = buildInsightDateFilter(this.bindings.engine, {\n options: {\n facetId: `${this.facetId}_input`,\n field: this.field,\n },\n });\n\n return this.filter;\n }\n\n @Listen('atomic/dateInputApply')\n public applyDateInput() {\n this.facetId &&\n this.bindings.engine.dispatch(\n loadInsightDateFacetSetActions(\n this.bindings.engine\n ).deselectAllDateFacetValues(this.facetId)\n );\n }\n\n public render() {\n if (!this.timeframeFacetCommon) {\n return (\n <FacetPlaceholder\n numberOfValues={5}\n isCollapsed={this.isCollapsed}\n ></FacetPlaceholder>\n );\n }\n return this.timeframeFacetCommon.render({\n hasError: this.searchStatusState.hasError,\n firstSearchExecuted: this.searchStatusState.firstSearchExecuted,\n isCollapsed: this.isCollapsed,\n headerFocus: this.focusTarget,\n onToggleCollapse: () => (this.isCollapsed = !this.isCollapsed),\n });\n }\n}\n"],"version":3}
|
|
@@ -66,13 +66,13 @@ const FacetDateInput = /*@__PURE__*/ proxyCustomElement(class FacetDateInput ext
|
|
|
66
66
|
// Fallback for Safari < 14.1, date with format yyyy-mm-dd over 1400 (API limit)
|
|
67
67
|
const pattern = '^(1[4-9]\\d{2}|2\\d{3})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$';
|
|
68
68
|
const range = this.rangeGetter();
|
|
69
|
-
return (h("form", { key: '
|
|
69
|
+
return (h("form", { key: '3e77c969558838a84f97d837de28ab5c6c185d0d', class: "mt-4 grid grid-cols-[min-content_1fr] gap-2 px-2", onSubmit: (e) => {
|
|
70
70
|
e.preventDefault();
|
|
71
71
|
this.apply();
|
|
72
72
|
return false;
|
|
73
|
-
} }, h("label", { key: '
|
|
73
|
+
} }, h("label", { key: '64cd96b4884c0e37e6fbc4663eafb40faf6da9ff', part: "input-label", class: labelClasses, htmlFor: `${this.facetId}_start` }, startLabel, ":"), h("input", { key: '290b3df2640be7a5415bbd786d80be5f5f089f78', id: `${this.facetId}_start`, part: "input-start", type: "date", ref: (ref) => (this.startRef = ref), class: inputClasses, "aria-label": startAria, placeholder: placeholder, pattern: pattern, required: true,
|
|
74
74
|
// API/Index minimum supported date
|
|
75
|
-
min: this.min || this.formattedDateValue('1401-01-01'), max: this.end ? this.formattedDateValue(this.end) : this.max, value: this.formattedDateValue(range?.start), onInput: (e) => (this.start = parseDate(e.target.value).toDate()) }), h("label", { key: '
|
|
75
|
+
min: this.min || this.formattedDateValue('1401-01-01'), max: this.end ? this.formattedDateValue(this.end) : this.max, value: this.formattedDateValue(range?.start), onInput: (e) => (this.start = parseDate(e.target.value).toDate()) }), h("label", { key: 'c221686f9316efe7c9014e6ce43a3aebd013a53b', part: "input-label", class: labelClasses, htmlFor: `${this.facetId}_end` }, endLabel, ":"), h("input", { key: '4562748e0fb885630752d263a77882d9ab213f55', id: `${this.facetId}_end`, part: "input-end", type: "date", ref: (ref) => (this.endRef = ref), class: inputClasses, "aria-label": endAria, placeholder: placeholder, pattern: pattern, required: true, min: this.formattedDateValue(this.start) || this.min, max: this.max, value: this.formattedDateValue(range?.end), onInput: (e) => (this.end = parseDate(e.target.value).toDate()) }), h(Button, { key: '3486b133baf1b0c410507432b81bdbf7dab1fea4', style: "outline-primary", type: "submit", part: "input-apply-button", class: "col-span-2 truncate p-2.5", ariaLabel: applyAria, text: apply })));
|
|
76
76
|
}
|
|
77
77
|
}, [0, "atomic-stencil-facet-date-input", {
|
|
78
78
|
"bindings": [16],
|
|
@@ -8,9 +8,10 @@ import { hasClipboardSupport } from './generated-answer-utils';
|
|
|
8
8
|
* Renders the feedback (like/dislike) and copy-to-clipboard buttons.
|
|
9
9
|
*/
|
|
10
10
|
export const renderFeedbackAndCopyButtons = ({ props }) => {
|
|
11
|
-
const { i18n,
|
|
12
|
-
const { liked, disliked, answer, isStreaming } =
|
|
13
|
-
|
|
11
|
+
const { i18n, generatedAnswerActionsState, copied, copyError, getCopyToClipboardTooltip, onClickLike, onClickDislike, onCopyToClipboard, } = props;
|
|
12
|
+
const { liked, disliked, answer, isStreaming, isLoading } = generatedAnswerActionsState ?? {};
|
|
13
|
+
const shouldShowButtons = !!answer && !isStreaming && !isLoading;
|
|
14
|
+
return html `${when(shouldShowButtons, () => html `
|
|
14
15
|
<div
|
|
15
16
|
class="${classMap({
|
|
16
17
|
'feedback-buttons flex h-9 items-center shrink-0 gap-2': true,
|