@empathyco/x-components 6.0.0-alpha.150 → 6.0.0-alpha.151
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/CHANGELOG.md +8 -0
- package/docs/API-reference/api/x-components.aioverview.md +1 -0
- package/docs/API-reference/api/x-components.aixevents.md +1 -0
- package/docs/API-reference/api/x-components.aixevents.userclickedanaioverviewresult.md +11 -0
- package/docs/API-reference/api/x-components.hierarchicalfilter.md +1 -0
- package/docs/API-reference/api/x-components.simplefilter.md +1 -0
- package/docs/API-reference/api/x-components.snippetcallbacks.md +1 -0
- package/js/components/display-click-provider.vue.js +11 -2
- package/js/components/display-click-provider.vue.js.map +1 -1
- package/js/x-modules/ai/components/ai-overview.vue.js +108 -80
- package/js/x-modules/ai/components/ai-overview.vue.js.map +1 -1
- package/js/x-modules/ai/components/ai-overview.vue2.js +4 -1
- package/js/x-modules/ai/components/ai-overview.vue2.js.map +1 -1
- package/js/x-modules/ai/store/actions/fetch-and-save-ai-suggestions.action.js +36 -25
- package/js/x-modules/ai/store/actions/fetch-and-save-ai-suggestions.action.js.map +1 -1
- package/js/x-modules/tagging/wiring.js +6 -0
- package/js/x-modules/tagging/wiring.js.map +1 -1
- package/package.json +4 -4
- package/report/x-components.api.json +80 -7
- package/report/x-components.api.md +15 -2
- package/types/components/display-click-provider.vue.d.ts.map +1 -1
- package/types/components/snippet-callbacks.vue.d.ts +1 -0
- package/types/components/snippet-callbacks.vue.d.ts.map +1 -1
- package/types/x-modules/ai/components/ai-overview.vue.d.ts +2 -0
- package/types/x-modules/ai/components/ai-overview.vue.d.ts.map +1 -1
- package/types/x-modules/ai/events.types.d.ts +2 -1
- package/types/x-modules/ai/events.types.d.ts.map +1 -1
- package/types/x-modules/ai/store/actions/fetch-and-save-ai-suggestions.action.d.ts.map +1 -1
- package/types/x-modules/facets/components/filters/hierarchical-filter.vue.d.ts +1 -0
- package/types/x-modules/facets/components/filters/hierarchical-filter.vue.d.ts.map +1 -1
- package/types/x-modules/facets/components/filters/simple-filter.vue.d.ts +1 -0
- package/types/x-modules/facets/components/filters/simple-filter.vue.d.ts.map +1 -1
- package/types/x-modules/related-prompts/components/related-prompts-tag-list.vue.d.ts.map +1 -1
- package/types/x-modules/tagging/wiring.d.ts +6 -0
- package/types/x-modules/tagging/wiring.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 6.0.0-alpha.151 (2025-09-23)
|
|
7
|
+
|
|
8
|
+
* Add tagging to ai overview search queries (#1882) ([4a7b9fc](https://github.com/empathyco/x/commit/4a7b9fc)), closes [#1882](https://github.com/empathyco/x/issues/1882)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
## 6.0.0-alpha.150 (2025-09-22)
|
|
7
15
|
|
|
8
16
|
* feat(AiOverview): handle new noResult chunk in AiOverview (#1886) ([2c41469](https://github.com/empathyco/x/commit/2c41469)), closes [#1886](https://github.com/empathyco/x/issues/1886)
|
|
@@ -34,6 +34,7 @@ _default: import("vue").DefineComponent<{
|
|
|
34
34
|
};
|
|
35
35
|
}, {
|
|
36
36
|
buttonText: import("vue").ComputedRef<string>;
|
|
37
|
+
emptyTaggingRequest: TaggingRequest;
|
|
37
38
|
expanded: import("vue").Ref<boolean>;
|
|
38
39
|
responseText: import("vue").ComputedRef<string>;
|
|
39
40
|
suggestionsLoading: import("vue").ComputedRef<boolean>;
|
|
@@ -19,4 +19,5 @@ export interface AiXEvents
|
|
|
19
19
|
| [AiSuggestionsRequestUpdated](./x-components.aixevents.aisuggestionsrequestupdated.md) | | AiSuggestionsRequest \| null | |
|
|
20
20
|
| [AiSuggestionsSearchRequestUpdated](./x-components.aixevents.aisuggestionssearchrequestupdated.md) | | AiSuggestionsSearchRequest \| null | |
|
|
21
21
|
| [UserClickedAiOverviewExpandButton](./x-components.aixevents.userclickedaioverviewexpandbutton.md) | | boolean | |
|
|
22
|
+
| [UserClickedAnAiOverviewResult](./x-components.aixevents.userclickedanaioverviewresult.md) | | Result | |
|
|
22
23
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
|
2
|
+
|
|
3
|
+
[Home](./index.md) > [@empathyco/x-components](./x-components.md) > [AiXEvents](./x-components.aixevents.md) > [UserClickedAnAiOverviewResult](./x-components.aixevents.userclickedanaioverviewresult.md)
|
|
4
|
+
|
|
5
|
+
## AiXEvents.UserClickedAnAiOverviewResult property
|
|
6
|
+
|
|
7
|
+
**Signature:**
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
UserClickedAnAiOverviewResult: Result;
|
|
11
|
+
```
|
|
@@ -195,6 +195,7 @@ _default: import("vue").DefineComponent<{
|
|
|
195
195
|
AiSuggestionsRequestUpdated?: import("@empathyco/x-types").AiSuggestionsRequest | null | undefined;
|
|
196
196
|
AiSuggestionsSearchRequestUpdated?: import("@empathyco/x-types").AiSuggestionsSearchRequest | null | undefined;
|
|
197
197
|
UserClickedAiOverviewExpandButton?: boolean | undefined;
|
|
198
|
+
UserClickedAnAiOverviewResult?: import("@empathyco/x-types").Result | undefined;
|
|
198
199
|
}>;
|
|
199
200
|
innerCssClasses: import("vue").ComputedRef<(string | Dictionary<boolean>)[]>;
|
|
200
201
|
renderedChildrenFilters: import("vue").ComputedRef<HierarchicalFilterModel[]>;
|
|
@@ -192,6 +192,7 @@ _default: import("vue").DefineComponent<{
|
|
|
192
192
|
AiSuggestionsRequestUpdated?: import("@empathyco/x-types").AiSuggestionsRequest | null | undefined;
|
|
193
193
|
AiSuggestionsSearchRequestUpdated?: import("@empathyco/x-types").AiSuggestionsSearchRequest | null | undefined;
|
|
194
194
|
UserClickedAiOverviewExpandButton?: boolean | undefined;
|
|
195
|
+
UserClickedAnAiOverviewResult?: import("@empathyco/x-types").Result | undefined;
|
|
195
196
|
}>;
|
|
196
197
|
innerCssClasses: import("vue").ComputedRef<(string | Dictionary<boolean>)[]>;
|
|
197
198
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
@@ -182,6 +182,7 @@ _default: import("vue").DefineComponent<{}, {
|
|
|
182
182
|
AiSuggestionsRequestUpdated: (payload: import("@empathyco/x-types").AiSuggestionsRequest | null, metadata: WireMetadata) => unknown;
|
|
183
183
|
AiSuggestionsSearchRequestUpdated: (payload: import("@empathyco/x-types").AiSuggestionsSearchRequest | null, metadata: WireMetadata) => unknown;
|
|
184
184
|
UserClickedAiOverviewExpandButton: (payload: boolean, metadata: WireMetadata) => unknown;
|
|
185
|
+
UserClickedAnAiOverviewResult: (payload: import("@empathyco/x-types").Result, metadata: WireMetadata) => unknown;
|
|
185
186
|
}>>;
|
|
186
187
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>
|
|
187
188
|
```
|
|
@@ -48,16 +48,25 @@ var _sfc_main = defineComponent({
|
|
|
48
48
|
toolingTagging: props.toolingDisplayTagging,
|
|
49
49
|
toolingAdd2CartTagging: props.toolingAdd2CartTagging,
|
|
50
50
|
}));
|
|
51
|
-
|
|
51
|
+
const resultAddToCartExtraEventsMap = {
|
|
52
|
+
related_prompts: 'UserClickedARelatedPromptAdd2Cart',
|
|
53
|
+
overview: 'UserClickedAnAiOverviewAdd2Cart',
|
|
54
|
+
};
|
|
55
|
+
const resultClickExtraEventsMap = {
|
|
56
|
+
related_prompts: 'UserClickedARelatedPromptResult',
|
|
57
|
+
overview: 'UserClickedAnAiOverviewResult',
|
|
58
|
+
};
|
|
59
|
+
provide('resultAddToCartExtraEvents', [resultAddToCartExtraEventsMap[props.resultFeature]]);
|
|
52
60
|
provide('resultAddToCartExtraEventsMetadata', {
|
|
53
61
|
toolingAdd2CartTagging: props.toolingAdd2CartTagging,
|
|
54
62
|
});
|
|
55
63
|
provide('resultClickExtraEvents', [
|
|
56
|
-
|
|
64
|
+
resultClickExtraEventsMap[props.resultFeature],
|
|
57
65
|
'UserClickedADisplayResult',
|
|
58
66
|
]);
|
|
59
67
|
provide('resultLinkMetadataPerEvent', {
|
|
60
68
|
UserClickedARelatedPromptResult: displayClickMetadata.value,
|
|
69
|
+
UserClickedAnAiOverviewResult: displayClickMetadata.value,
|
|
61
70
|
UserClickedADisplayResult: displayClickMetadata.value,
|
|
62
71
|
...(props.ignoreResultClickEvent && {
|
|
63
72
|
UserClickedAResult: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-click-provider.vue.js","sources":["../../../src/components/display-click-provider.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { TaggingRequest } from '@empathyco/x-types'\nimport type { PropType } from 'vue'\n\nimport type { ResultFeature } from '../types/index'\nimport type { DisplayWireMetadata } from '../wiring/index'\nimport { computed, defineComponent, provide } from 'vue'\nimport { use$x } from '../composables/index'\n\nexport default defineComponent({\n name: 'DisplayClickProvider',\n props: {\n resultFeature: {\n type: String as PropType<ResultFeature>,\n required: true,\n },\n ignoreResultClickEvent: {\n type: Boolean,\n default: false,\n },\n toolingDisplayTagging: {\n type: Object as PropType<TaggingRequest>,\n required: false,\n default: undefined,\n },\n toolingAdd2CartTagging: {\n type: Object as PropType<TaggingRequest>,\n required: false,\n default: undefined,\n },\n queryTagging: {\n type: Object as PropType<TaggingRequest>,\n required: false,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n const x = use$x()\n\n const displayClickMetadata = computed<Partial<DisplayWireMetadata>>(() => ({\n displayOriginalQuery: x.query.search,\n feature: props.resultFeature,\n queryTagging: props.queryTagging,\n toolingTagging: props.toolingDisplayTagging,\n toolingAdd2CartTagging: props.toolingAdd2CartTagging,\n }))\n\n provide('resultAddToCartExtraEvents', [
|
|
1
|
+
{"version":3,"file":"display-click-provider.vue.js","sources":["../../../src/components/display-click-provider.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { TaggingRequest } from '@empathyco/x-types'\nimport type { PropType } from 'vue'\n\nimport type { ResultFeature } from '../types/index'\nimport type { DisplayWireMetadata } from '../wiring/index'\nimport { computed, defineComponent, provide } from 'vue'\nimport { use$x } from '../composables/index'\n\nexport default defineComponent({\n name: 'DisplayClickProvider',\n props: {\n resultFeature: {\n type: String as PropType<ResultFeature>,\n required: true,\n },\n ignoreResultClickEvent: {\n type: Boolean,\n default: false,\n },\n toolingDisplayTagging: {\n type: Object as PropType<TaggingRequest>,\n required: false,\n default: undefined,\n },\n toolingAdd2CartTagging: {\n type: Object as PropType<TaggingRequest>,\n required: false,\n default: undefined,\n },\n queryTagging: {\n type: Object as PropType<TaggingRequest>,\n required: false,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n const x = use$x()\n\n const displayClickMetadata = computed<Partial<DisplayWireMetadata>>(() => ({\n displayOriginalQuery: x.query.search,\n feature: props.resultFeature,\n queryTagging: props.queryTagging,\n toolingTagging: props.toolingDisplayTagging,\n toolingAdd2CartTagging: props.toolingAdd2CartTagging,\n }))\n\n const resultAddToCartExtraEventsMap: Partial<Record<ResultFeature, string>> = {\n related_prompts: 'UserClickedARelatedPromptAdd2Cart',\n overview: 'UserClickedAnAiOverviewAdd2Cart',\n }\n\n const resultClickExtraEventsMap: Partial<Record<ResultFeature, string>> = {\n related_prompts: 'UserClickedARelatedPromptResult',\n overview: 'UserClickedAnAiOverviewResult',\n }\n\n provide('resultAddToCartExtraEvents', [resultAddToCartExtraEventsMap[props.resultFeature]])\n provide('resultAddToCartExtraEventsMetadata', {\n toolingAdd2CartTagging: props.toolingAdd2CartTagging,\n })\n\n provide('resultClickExtraEvents', [\n resultClickExtraEventsMap[props.resultFeature],\n 'UserClickedADisplayResult',\n ])\n provide('resultLinkMetadataPerEvent', {\n UserClickedARelatedPromptResult: displayClickMetadata.value,\n UserClickedAnAiOverviewResult: displayClickMetadata.value,\n UserClickedADisplayResult: displayClickMetadata.value,\n ...(props.ignoreResultClickEvent && {\n UserClickedAResult: {\n ignoreInModules: ['tagging'],\n },\n }),\n })\n\n return () => slots.default?.()[0] ?? ''\n },\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;AASA,gBAAe,eAAe,CAAC;AAC7B,IAAA,IAAI,EAAE,sBAAsB;AAC5B,IAAA,KAAK,EAAE;AACL,QAAA,aAAa,EAAE;AACb,YAAA,IAAI,EAAE,MAAiC;AACvC,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;AACD,QAAA,sBAAsB,EAAE;AACtB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE,KAAK;AACf,SAAA;AACD,QAAA,qBAAqB,EAAE;AACrB,YAAA,IAAI,EAAE,MAAkC;AACxC,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,SAAS;AACnB,SAAA;AACD,QAAA,sBAAsB,EAAE;AACtB,YAAA,IAAI,EAAE,MAAkC;AACxC,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,SAAS;AACnB,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,MAAkC;AACxC,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,SAAS;AACnB,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAE,EAAE,KAAI,EAAG,EAAA;AACpB,QAAA,MAAM,CAAA,GAAI,KAAK,EAAC,CAAA;AAEhB,QAAA,MAAM,oBAAqB,GAAE,QAAQ,CAA+B,OAAO;AACzE,YAAA,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM;YACpC,OAAO,EAAE,KAAK,CAAC,aAAa;YAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,cAAc,EAAE,KAAK,CAAC,qBAAqB;YAC3C,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;AACrD,SAAA,CAAC,CAAA,CAAA;AAEF,QAAA,MAAM,6BAA6B,GAA2C;AAC5E,YAAA,eAAe,EAAE,mCAAmC;AACpD,YAAA,QAAQ,EAAE,iCAAiC;SAC7C,CAAA;AAEA,QAAA,MAAM,yBAAyB,GAA2C;AACxE,YAAA,eAAe,EAAE,iCAAiC;AAClD,YAAA,QAAQ,EAAE,+BAA+B;SAC3C,CAAA;AAEA,QAAA,OAAO,CAAC,4BAA4B,EAAE,CAAC,6BAA6B,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAA,CAAA;QAC1F,OAAO,CAAC,oCAAoC,EAAE;YAC5C,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;AACrD,SAAA,CAAA,CAAA;QAED,OAAO,CAAC,wBAAwB,EAAE;AAChC,YAAA,yBAAyB,CAAC,KAAK,CAAC,aAAa,CAAC;YAC9C,2BAA2B;AAC5B,SAAA,CAAA,CAAA;QACD,OAAO,CAAC,4BAA4B,EAAE;YACpC,+BAA+B,EAAE,oBAAoB,CAAC,KAAK;YAC3D,6BAA6B,EAAE,oBAAoB,CAAC,KAAK;YACzD,yBAAyB,EAAE,oBAAoB,CAAC,KAAK;AACrD,YAAA,IAAI,KAAK,CAAC,sBAAqB,IAAK;AAClC,gBAAA,kBAAkB,EAAE;oBAClB,eAAe,EAAE,CAAC,SAAS,CAAC;AAC7B,iBAAA;aACF;AACF,SAAA,CAAA,CAAA;AAED,QAAA,OAAO,MAAM,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAE,IAAG,EAAC,CAAA;KACvC;AACF,CAAA,CAAA;;;;"}
|
|
@@ -54,6 +54,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
54
54
|
const _component_ArrowRightIcon = resolveComponent("ArrowRightIcon");
|
|
55
55
|
const _component_BaseEventButton = resolveComponent("BaseEventButton");
|
|
56
56
|
const _component_SlidingPanel = resolveComponent("SlidingPanel");
|
|
57
|
+
const _component_DisplayClickProvider = resolveComponent("DisplayClickProvider");
|
|
57
58
|
const _component_CollapseHeight = resolveComponent("CollapseHeight");
|
|
58
59
|
const _component_ChevronDownIcon = resolveComponent("ChevronDownIcon");
|
|
59
60
|
return openBlock(), createBlock(_component_CollapseHeight, null, {
|
|
@@ -73,12 +74,13 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
73
74
|
)
|
|
74
75
|
])) : (openBlock(), createBlock(_component_DisplayEmitter, {
|
|
75
76
|
key: 1,
|
|
76
|
-
payload: _ctx.tagging?.toolingDisplay ??
|
|
77
|
+
payload: _ctx.tagging?.toolingDisplay ?? _ctx.emptyTaggingRequest,
|
|
77
78
|
"event-metadata": {
|
|
78
79
|
feature: "overview",
|
|
79
|
-
displayOriginalQuery: _ctx.query,
|
|
80
|
+
displayOriginalQuery: _ctx.query || "overview-without-query",
|
|
80
81
|
replaceable: false
|
|
81
|
-
}
|
|
82
|
+
},
|
|
83
|
+
"data-test": "ai-overview-display-emitter"
|
|
82
84
|
}, {
|
|
83
85
|
default: withCtx(() => [
|
|
84
86
|
createElementVNode("span", _hoisted_6, [
|
|
@@ -140,84 +142,110 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
140
142
|
Fragment,
|
|
141
143
|
null,
|
|
142
144
|
renderList(_ctx.suggestionsSearch, ({ query: suggestionQuery, results: queriesResults }, suggestionIndex) => {
|
|
143
|
-
return openBlock(),
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
"data-test": "ai-overview-suggestion",
|
|
151
|
-
style: normalizeStyle({ animationDelay: `${suggestionIndex * 300}ms` })
|
|
145
|
+
return openBlock(), createBlock(_component_DisplayEmitter, {
|
|
146
|
+
key: suggestionQuery,
|
|
147
|
+
payload: _ctx.tagging?.searchQueries[suggestionQuery].toolingDisplay ?? _ctx.emptyTaggingRequest,
|
|
148
|
+
"event-metadata": {
|
|
149
|
+
feature: "overview",
|
|
150
|
+
displayOriginalQuery: _ctx.query || "overview-without-query",
|
|
151
|
+
replaceable: false
|
|
152
152
|
},
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
)
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
(
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
153
|
+
"data-test": "ai-overview-query-display-emitter"
|
|
154
|
+
}, {
|
|
155
|
+
default: withCtx(() => [
|
|
156
|
+
createElementVNode(
|
|
157
|
+
"div",
|
|
158
|
+
{
|
|
159
|
+
class: normalizeClass(["x-ai-overview-suggestion", {
|
|
160
|
+
"x-ai-overview-result-animation": _ctx.shouldAnimateSuggestion
|
|
161
|
+
}]),
|
|
162
|
+
"data-test": "ai-overview-suggestion",
|
|
163
|
+
style: normalizeStyle({ animationDelay: `${suggestionIndex * 300}ms` })
|
|
164
|
+
},
|
|
165
|
+
[
|
|
166
|
+
createVNode(_component_BaseEventButton, {
|
|
167
|
+
class: "x-ai-overview-suggestion-query-btn",
|
|
168
|
+
events: { UserAcceptedAQuery: suggestionQuery }
|
|
169
|
+
}, {
|
|
170
|
+
default: withCtx(() => [
|
|
171
|
+
createTextVNode(
|
|
172
|
+
toDisplayString(suggestionQuery) + " ",
|
|
173
|
+
1
|
|
174
|
+
/* TEXT */
|
|
175
|
+
),
|
|
176
|
+
createVNode(_component_ArrowRightIcon, { class: "x-ai-overview-suggestion-query-btn-icon" })
|
|
177
|
+
]),
|
|
178
|
+
_: 2
|
|
179
|
+
/* DYNAMIC */
|
|
180
|
+
}, 1032, ["events"]),
|
|
181
|
+
createVNode(_component_DisplayClickProvider, {
|
|
182
|
+
"tooling-display-tagging": _ctx.tagging?.searchQueries[suggestionQuery].toolingDisplayClick,
|
|
183
|
+
"tooling-add2-cart-tagging": _ctx.tagging?.searchQueries[suggestionQuery].toolingDisplayAdd2Cart,
|
|
184
|
+
"result-feature": "overview"
|
|
185
|
+
}, {
|
|
186
|
+
default: withCtx(() => [
|
|
187
|
+
renderSlot(_ctx.$slots, "sliding-panel", { results: queriesResults }, () => [
|
|
188
|
+
createVNode(_component_SlidingPanel, {
|
|
189
|
+
class: normalizeClass(_ctx.slidingPanelsClasses),
|
|
190
|
+
"scroll-container-class": _ctx.slidingPanelContainersClasses,
|
|
191
|
+
"button-class": _ctx.slidingPanelButtonsClasses,
|
|
192
|
+
"reset-on-content-change": false
|
|
193
|
+
}, {
|
|
194
|
+
"sliding-panel-addons": withCtx(({ arrivedState }) => [
|
|
195
|
+
renderSlot(_ctx.$slots, "sliding-panels-addons", { arrivedState })
|
|
196
|
+
]),
|
|
197
|
+
"sliding-panel-left-button": withCtx(() => [
|
|
198
|
+
renderSlot(_ctx.$slots, "sliding-panels-left-button")
|
|
199
|
+
]),
|
|
200
|
+
"sliding-panel-right-button": withCtx(() => [
|
|
201
|
+
renderSlot(_ctx.$slots, "sliding-panels-right-button")
|
|
202
|
+
]),
|
|
203
|
+
default: withCtx(() => [
|
|
204
|
+
createElementVNode("ul", _hoisted_10, [
|
|
205
|
+
(openBlock(true), createElementBlock(
|
|
206
|
+
Fragment,
|
|
207
|
+
null,
|
|
208
|
+
renderList(queriesResults, (result, resultIndex) => {
|
|
209
|
+
return openBlock(), createElementBlock(
|
|
210
|
+
"li",
|
|
211
|
+
{
|
|
212
|
+
key: result.id,
|
|
213
|
+
"data-test": "ai-overview-suggestion-result",
|
|
214
|
+
class: normalizeClass({
|
|
215
|
+
"x-ai-overview-result-animation": _ctx.shouldAnimateSuggestion
|
|
216
|
+
}),
|
|
217
|
+
style: normalizeStyle({
|
|
218
|
+
animationDelay: `${suggestionIndex * 300 + resultIndex * 300}ms`
|
|
219
|
+
})
|
|
220
|
+
},
|
|
221
|
+
[
|
|
222
|
+
renderSlot(_ctx.$slots, "result", { result })
|
|
223
|
+
],
|
|
224
|
+
6
|
|
225
|
+
/* CLASS, STYLE */
|
|
226
|
+
);
|
|
227
|
+
}),
|
|
228
|
+
128
|
|
229
|
+
/* KEYED_FRAGMENT */
|
|
230
|
+
))
|
|
231
|
+
])
|
|
232
|
+
]),
|
|
233
|
+
_: 2
|
|
234
|
+
/* DYNAMIC */
|
|
235
|
+
}, 1032, ["class", "scroll-container-class", "button-class"])
|
|
236
|
+
])
|
|
237
|
+
]),
|
|
238
|
+
_: 2
|
|
239
|
+
/* DYNAMIC */
|
|
240
|
+
}, 1032, ["tooling-display-tagging", "tooling-add2-cart-tagging"])
|
|
241
|
+
],
|
|
242
|
+
6
|
|
243
|
+
/* CLASS, STYLE */
|
|
244
|
+
)
|
|
245
|
+
]),
|
|
246
|
+
_: 2
|
|
247
|
+
/* DYNAMIC */
|
|
248
|
+
}, 1032, ["payload", "event-metadata"]);
|
|
221
249
|
}),
|
|
222
250
|
128
|
|
223
251
|
/* KEYED_FRAGMENT */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-overview.vue.js","sources":["../../../../../src/x-modules/ai/components/ai-overview.vue"],"sourcesContent":["<template>\n <CollapseHeight>\n <div v-if=\"!isNoResults\" class=\"x-ai-overview\" data-test=\"ai-overview-wrapper\">\n <div class=\"x-ai-overview-main\">\n <Fade mode=\"out-in\">\n <span\n v-if=\"suggestionsLoading\"\n class=\"x-ai-overview-title-loading\"\n data-test=\"ai-overview-title-loading\"\n >\n <span class=\"x-ai-overview-title-loading-indicator\" />\n <span\n class=\"x-ai-overview-title-loading-text\"\n data-test=\"ai-overview-title-loading-text\"\n >\n {{ titleLoading }}\n </span>\n </span>\n <DisplayEmitter\n v-else\n :payload=\"tagging?.toolingDisplay ?? { url: '', params: {} }\"\n :event-metadata=\"{\n feature: 'overview',\n displayOriginalQuery: query,\n replaceable: false,\n }\"\n >\n <span class=\"x-ai-overview-title\" data-test=\"ai-overview-title\">\n <AIStarIcon class=\"x-ai-overview-title-icon\" />{{ !!title ? title : suggestionText }}\n </span>\n </DisplayEmitter>\n </Fade>\n <ChangeHeight>\n <div class=\"x-ai-overview-content\" data-test=\"ai-overview-content\">\n <span v-if=\"title\">{{ suggestionText }}</span>\n <p>{{ responseText }}</p>\n </div>\n </ChangeHeight>\n </div>\n <CollapseHeight\n :style=\"{\n '--x-collapse-height-transition-duration': `${300 * suggestionsSearch.length}ms`,\n }\"\n data-test=\"ai-overview-collapse-height-suggestions\"\n >\n <div v-show=\"expanded\">\n <SpinnerIcon\n v-if=\"!suggestionsSearch.length\"\n class=\"x-ai-overview-suggestions-loading\"\n data-test=\"ai-overview-suggestions-loading\"\n />\n <div\n v-else\n class=\"x-ai-overview-suggestions\"\n data-test=\"ai-overview-suggestions-container\"\n >\n <div\n v-for=\"(\n { query: suggestionQuery, results: queriesResults }, suggestionIndex\n ) in suggestionsSearch\"\n :key=\"suggestionQuery\"\n class=\"x-ai-overview-suggestion\"\n data-test=\"ai-overview-suggestion\"\n :class=\"{\n 'x-ai-overview-result-animation': shouldAnimateSuggestion,\n }\"\n :style=\"{ animationDelay: `${suggestionIndex * 300}ms` }\"\n >\n <BaseEventButton\n class=\"x-ai-overview-suggestion-query-btn\"\n :events=\"{ UserAcceptedAQuery: suggestionQuery }\"\n >\n {{ suggestionQuery }}\n <ArrowRightIcon class=\"x-ai-overview-suggestion-query-btn-icon\" />\n </BaseEventButton>\n\n <slot name=\"sliding-panel\" :results=\"queriesResults\">\n <SlidingPanel\n :class=\"slidingPanelsClasses\"\n :scroll-container-class=\"slidingPanelContainersClasses\"\n :button-class=\"slidingPanelButtonsClasses\"\n :reset-on-content-change=\"false\"\n >\n <template #sliding-panel-addons=\"{ arrivedState }\">\n <slot name=\"sliding-panels-addons\" :arrived-state=\"arrivedState\" />\n </template>\n <template #sliding-panel-left-button>\n <slot name=\"sliding-panels-left-button\" />\n </template>\n <template #sliding-panel-right-button>\n <slot name=\"sliding-panels-right-button\" />\n </template>\n <ul class=\"x-ai-overview-suggestion-results\">\n <li\n v-for=\"(result, resultIndex) in queriesResults\"\n :key=\"result.id\"\n data-test=\"ai-overview-suggestion-result\"\n :class=\"{\n 'x-ai-overview-result-animation': shouldAnimateSuggestion,\n }\"\n :style=\"{ animationDelay: `${suggestionIndex * 300 + resultIndex * 300}ms` }\"\n >\n <!-- @slot (required) result card -->\n <slot name=\"result\" :result=\"result\" />\n </li>\n </ul>\n </SlidingPanel>\n </slot>\n </div>\n </div>\n </div>\n </CollapseHeight>\n\n <Fade>\n <div\n v-if=\"queries.length\"\n class=\"x-cursor-pointer\"\n data-test=\"ai-overview-toggle-button-wrapper\"\n @click=\"onExpandButtonClick(!expanded)\"\n >\n <div v-show=\"!expanded\" class=\"x-ai-overview-gradient\" data-test=\"ai-overview-gradient\" />\n <div class=\"x-ai-overview-toggle-wrapper\">\n <button\n class=\"x-ai-overview-toggle-btn\"\n data-test=\"ai-overview-toggle-button\"\n @click.stop=\"onExpandButtonClick(!expanded)\"\n >\n {{ buttonText }}\n <ChevronDownIcon\n class=\"x-ai-overview-toggle-btn-icon\"\n :class=\"{ 'x-ai-overview-toggle-btn-icon-expanded': expanded }\"\n />\n </button>\n </div>\n </div>\n </Fade>\n </div>\n </CollapseHeight>\n</template>\n\n<script lang=\"ts\">\nimport type { PropType } from 'vue'\nimport { computed, defineComponent, ref, watch } from 'vue'\nimport {\n AIStarIcon,\n ArrowRightIcon,\n BaseEventButton,\n ChangeHeight,\n ChevronDownIcon,\n CollapseHeight,\n Fade,\n SlidingPanel,\n SpinnerIcon,\n} from '../../../components'\nimport DisplayEmitter from '../../../components/display-emitter.vue'\nimport { use$x, useGetter, useState } from '../../../composables'\nimport { typing } from '../../../directives'\nimport { aiXModule } from '../x-module'\n\nexport default defineComponent({\n directives: {\n typing,\n },\n xModule: aiXModule.name,\n components: {\n AIStarIcon,\n ArrowRightIcon,\n BaseEventButton,\n ChevronDownIcon,\n CollapseHeight,\n ChangeHeight,\n Fade,\n SlidingPanel,\n SpinnerIcon,\n DisplayEmitter,\n },\n props: {\n /**\n * The text displayed when the question ended loading\n *\n * @public\n */\n title: {\n type: String as PropType<string>,\n },\n /**\n * The text displayed when the question is loading.\n *\n * @public\n */\n titleLoading: {\n type: String as PropType<string>,\n default: 'Generating with Empathy AI',\n },\n /**\n * The text displayed on the toggle button when collapsed.\n *\n * @public\n */\n expandText: {\n type: String as PropType<string>,\n default: 'Show more',\n },\n /**\n * The text displayed on the toggle button when expanded.\n *\n * @public\n */\n collapseText: {\n type: String as PropType<string>,\n default: 'Show less',\n },\n\n /**\n * The classes added to each sliding panel for each query.\n *\n * @public\n */\n slidingPanelsClasses: {\n type: String as PropType<string>,\n },\n /**\n * The classes added to each sliding panel container of each query.\n *\n * @public\n */\n slidingPanelContainersClasses: {\n type: String as PropType<string>,\n },\n /**\n * The classes added to each sliding panel buttons of each query.\n *\n * @public\n */\n slidingPanelButtonsClasses: {\n type: String as PropType<string>,\n },\n },\n setup(props) {\n const $x = use$x()\n const { query } = useGetter('ai')\n const {\n suggestionText,\n responseText,\n suggestionsSearch,\n suggestionsLoading,\n tagging,\n isNoResults,\n queries,\n } = useState('ai')\n\n const expanded = ref(false)\n const shouldAnimateSuggestion = ref(true)\n\n const buttonText = computed(() => (expanded.value ? props.collapseText : props.expandText))\n\n function onExpandButtonClick(newValue: boolean) {\n $x.emit('UserClickedAiOverviewExpandButton', expanded.value, {\n suggestionText: suggestionText.value,\n toolingDisplayClick: tagging.value?.toolingDisplayClick,\n })\n setExpanded(newValue)\n }\n\n function setExpanded(newValue: boolean) {\n expanded.value = newValue\n !expanded.value && (shouldAnimateSuggestion.value = false)\n }\n\n watch(query, () => {\n expanded.value = false\n shouldAnimateSuggestion.value = true\n })\n\n return {\n buttonText,\n expanded,\n responseText,\n suggestionsLoading,\n suggestionsSearch,\n suggestionText,\n setExpanded,\n onExpandButtonClick,\n shouldAnimateSuggestion,\n query,\n tagging,\n isNoResults,\n queries,\n }\n },\n})\n</script>\n\n<style lang=\"css\">\n.x-ai-overview {\n --color: var(--x-ai-overview-color, #bbc9cf);\n --color-lighter: var(--x-ai-overview-color-lighter, color-mix(in srgb, var(--color) 25%, white));\n\n @apply x-relative x-rounded-3xl x-bg-[var(--color-lighter)];\n}\n\n.x-ai-overview-main {\n @apply x-p-16 x-rounded-lg;\n}\n\n.x-ai-overview-title-loading {\n @apply x-flex x-items-center x-gap-1.5 x-mb-8;\n}\n.x-ai-overview-title-loading-indicator {\n @apply x-size-3 x-animate-pulse x-rounded-full x-bg-[var(--color)];\n}\n.x-ai-overview-title-loading-text {\n @apply x-animate-pulse x-text-xs;\n}\n\n.x-ai-overview-title {\n @apply x-flex x-text-sm x-font-bold x-gap-4 x-items-center x-mb-8;\n}\n.x-ai-overview-title-icon {\n @apply x-icon x-text-[var(--color)];\n}\n\n.x-ai-overview-content {\n @apply x-flex x-flex-col x-text-left x-leading-5 x-gap-2;\n}\n.x-ai-overview-content span {\n @apply x-font-medium;\n}\n\n.x-ai-overview-gradient {\n @apply x-cursor-pointer x-content-none x-absolute x-w-full x-h-80 x-bottom-5 x-bg-gradient-to-b x-from-0% x-from-transparent x-to-100% x-to-[var(--color-lighter)];\n}\n\n.x-ai-overview-toggle-wrapper {\n @apply x-flex x-relative x-z-[1];\n}\n.x-ai-overview-toggle-btn {\n @apply x-button x-button-outlined x-rounded-full x-w-full x-mx-auto sm:x-transition-all sm:x-duration-500 sm:x-translate-y-1/2 sm:x-w-[var(--expand-button-width,200px)];\n}\n.x-ai-overview-toggle-btn-icon {\n @apply x-rotate-0 x-icon x-transition-all x-duration-300;\n}\n.x-ai-overview-toggle-btn-icon-expanded {\n @apply x-rotate-180;\n}\n\n.x-ai-overview-suggestion-query-btn {\n @apply x-button-tight x-mx-16 x-font-bold x-text-gray-900 x-w-fit x-min-h-fit x-flex x-gap-16 x-items-center;\n}\n.x-ai-overview-suggestion-query-btn-icon {\n @apply x-icon-md;\n}\n.x-ai-overview-suggestions {\n @apply x-flex x-flex-col x-gap-16 x-pb-16;\n}\n.x-ai-overview-suggestion {\n @apply x-flex x-flex-col x-gap-8;\n}\n.x-ai-overview-suggestion-results {\n @apply x-flex x-gap-16 x-px-16;\n}\n\n.x-ai-overview-suggestions-loading {\n width: 2.5rem /* 40px */;\n height: 2.5rem /* 40px */;\n margin: auto;\n animation: x-spin 1s linear infinite;\n\n @keyframes x-spin {\n to {\n transform: rotate(360deg);\n }\n }\n}\n\n.x-ai-overview-result-animation {\n opacity: 0;\n animation: x-fade 0.3s ease-in-out forwards;\n\n @keyframes x-fade {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n</style>\n"],"names":["_createElementVNode","_createBlock","_openBlock","_createElementBlock","_createVNode","_toDisplayString","_withCtx","_createTextVNode","_createCommentVNode","_normalizeStyle","_withDirectives","_Fragment","_renderList","_normalizeClass","_renderSlot","_vShow","_withModifiers"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai-overview.vue.js","sources":["../../../../../src/x-modules/ai/components/ai-overview.vue"],"sourcesContent":["<template>\n <CollapseHeight>\n <div v-if=\"!isNoResults\" class=\"x-ai-overview\" data-test=\"ai-overview-wrapper\">\n <div class=\"x-ai-overview-main\">\n <Fade mode=\"out-in\">\n <span\n v-if=\"suggestionsLoading\"\n class=\"x-ai-overview-title-loading\"\n data-test=\"ai-overview-title-loading\"\n >\n <span class=\"x-ai-overview-title-loading-indicator\" />\n <span\n class=\"x-ai-overview-title-loading-text\"\n data-test=\"ai-overview-title-loading-text\"\n >\n {{ titleLoading }}\n </span>\n </span>\n <DisplayEmitter\n v-else\n :payload=\"tagging?.toolingDisplay ?? emptyTaggingRequest\"\n :event-metadata=\"{\n feature: 'overview',\n displayOriginalQuery: query || 'overview-without-query',\n replaceable: false,\n }\"\n data-test=\"ai-overview-display-emitter\"\n >\n <span class=\"x-ai-overview-title\" data-test=\"ai-overview-title\">\n <AIStarIcon class=\"x-ai-overview-title-icon\" />{{ !!title ? title : suggestionText }}\n </span>\n </DisplayEmitter>\n </Fade>\n <ChangeHeight>\n <div class=\"x-ai-overview-content\" data-test=\"ai-overview-content\">\n <span v-if=\"title\">{{ suggestionText }}</span>\n <p>{{ responseText }}</p>\n </div>\n </ChangeHeight>\n </div>\n <CollapseHeight\n :style=\"{\n '--x-collapse-height-transition-duration': `${300 * suggestionsSearch.length}ms`,\n }\"\n data-test=\"ai-overview-collapse-height-suggestions\"\n >\n <div v-show=\"expanded\">\n <SpinnerIcon\n v-if=\"!suggestionsSearch.length\"\n class=\"x-ai-overview-suggestions-loading\"\n data-test=\"ai-overview-suggestions-loading\"\n />\n <div\n v-else\n class=\"x-ai-overview-suggestions\"\n data-test=\"ai-overview-suggestions-container\"\n >\n <DisplayEmitter\n v-for=\"(\n { query: suggestionQuery, results: queriesResults }, suggestionIndex\n ) in suggestionsSearch\"\n :key=\"suggestionQuery\"\n :payload=\"\n tagging?.searchQueries[suggestionQuery].toolingDisplay ?? emptyTaggingRequest\n \"\n :event-metadata=\"{\n feature: 'overview',\n displayOriginalQuery: query || 'overview-without-query',\n replaceable: false,\n }\"\n data-test=\"ai-overview-query-display-emitter\"\n >\n <div\n class=\"x-ai-overview-suggestion\"\n data-test=\"ai-overview-suggestion\"\n :class=\"{\n 'x-ai-overview-result-animation': shouldAnimateSuggestion,\n }\"\n :style=\"{ animationDelay: `${suggestionIndex * 300}ms` }\"\n >\n <BaseEventButton\n class=\"x-ai-overview-suggestion-query-btn\"\n :events=\"{ UserAcceptedAQuery: suggestionQuery }\"\n >\n {{ suggestionQuery }}\n <ArrowRightIcon class=\"x-ai-overview-suggestion-query-btn-icon\" />\n </BaseEventButton>\n\n <DisplayClickProvider\n :tooling-display-tagging=\"\n tagging?.searchQueries[suggestionQuery].toolingDisplayClick\n \"\n :tooling-add2-cart-tagging=\"\n tagging?.searchQueries[suggestionQuery].toolingDisplayAdd2Cart\n \"\n result-feature=\"overview\"\n >\n <slot name=\"sliding-panel\" :results=\"queriesResults\">\n <SlidingPanel\n :class=\"slidingPanelsClasses\"\n :scroll-container-class=\"slidingPanelContainersClasses\"\n :button-class=\"slidingPanelButtonsClasses\"\n :reset-on-content-change=\"false\"\n >\n <template #sliding-panel-addons=\"{ arrivedState }\">\n <slot name=\"sliding-panels-addons\" :arrived-state=\"arrivedState\" />\n </template>\n <template #sliding-panel-left-button>\n <slot name=\"sliding-panels-left-button\" />\n </template>\n <template #sliding-panel-right-button>\n <slot name=\"sliding-panels-right-button\" />\n </template>\n <ul class=\"x-ai-overview-suggestion-results\">\n <li\n v-for=\"(result, resultIndex) in queriesResults\"\n :key=\"result.id\"\n data-test=\"ai-overview-suggestion-result\"\n :class=\"{\n 'x-ai-overview-result-animation': shouldAnimateSuggestion,\n }\"\n :style=\"{\n animationDelay: `${suggestionIndex * 300 + resultIndex * 300}ms`,\n }\"\n >\n <!-- @slot (required) result card -->\n <slot name=\"result\" :result=\"result\" />\n </li>\n </ul>\n </SlidingPanel>\n </slot>\n </DisplayClickProvider>\n </div>\n </DisplayEmitter>\n </div>\n </div>\n </CollapseHeight>\n\n <Fade>\n <div\n v-if=\"queries.length\"\n class=\"x-cursor-pointer\"\n data-test=\"ai-overview-toggle-button-wrapper\"\n @click=\"onExpandButtonClick(!expanded)\"\n >\n <div v-show=\"!expanded\" class=\"x-ai-overview-gradient\" data-test=\"ai-overview-gradient\" />\n <div class=\"x-ai-overview-toggle-wrapper\">\n <button\n class=\"x-ai-overview-toggle-btn\"\n data-test=\"ai-overview-toggle-button\"\n @click.stop=\"onExpandButtonClick(!expanded)\"\n >\n {{ buttonText }}\n <ChevronDownIcon\n class=\"x-ai-overview-toggle-btn-icon\"\n :class=\"{ 'x-ai-overview-toggle-btn-icon-expanded': expanded }\"\n />\n </button>\n </div>\n </div>\n </Fade>\n </div>\n </CollapseHeight>\n</template>\n\n<script lang=\"ts\">\nimport type { TaggingRequest } from '@empathyco/x-types'\nimport type { PropType } from 'vue'\nimport { computed, defineComponent, ref, watch } from 'vue'\nimport {\n AIStarIcon,\n ArrowRightIcon,\n BaseEventButton,\n ChangeHeight,\n ChevronDownIcon,\n CollapseHeight,\n DisplayClickProvider,\n Fade,\n SlidingPanel,\n SpinnerIcon,\n} from '../../../components'\nimport DisplayEmitter from '../../../components/display-emitter.vue'\nimport { use$x, useGetter, useState } from '../../../composables'\nimport { typing } from '../../../directives'\nimport { aiXModule } from '../x-module'\n\nexport default defineComponent({\n directives: {\n typing,\n },\n xModule: aiXModule.name,\n components: {\n AIStarIcon,\n ArrowRightIcon,\n BaseEventButton,\n ChevronDownIcon,\n CollapseHeight,\n ChangeHeight,\n Fade,\n SlidingPanel,\n SpinnerIcon,\n DisplayEmitter,\n DisplayClickProvider,\n },\n props: {\n /**\n * The text displayed when the question ended loading\n *\n * @public\n */\n title: {\n type: String as PropType<string>,\n },\n /**\n * The text displayed when the question is loading.\n *\n * @public\n */\n titleLoading: {\n type: String as PropType<string>,\n default: 'Generating with Empathy AI',\n },\n /**\n * The text displayed on the toggle button when collapsed.\n *\n * @public\n */\n expandText: {\n type: String as PropType<string>,\n default: 'Show more',\n },\n /**\n * The text displayed on the toggle button when expanded.\n *\n * @public\n */\n collapseText: {\n type: String as PropType<string>,\n default: 'Show less',\n },\n\n /**\n * The classes added to each sliding panel for each query.\n *\n * @public\n */\n slidingPanelsClasses: {\n type: String as PropType<string>,\n },\n /**\n * The classes added to each sliding panel container of each query.\n *\n * @public\n */\n slidingPanelContainersClasses: {\n type: String as PropType<string>,\n },\n /**\n * The classes added to each sliding panel buttons of each query.\n *\n * @public\n */\n slidingPanelButtonsClasses: {\n type: String as PropType<string>,\n },\n },\n setup(props) {\n const $x = use$x()\n const { query } = useGetter('ai')\n const {\n suggestionText,\n responseText,\n suggestionsSearch,\n suggestionsLoading,\n tagging,\n isNoResults,\n queries,\n } = useState('ai')\n\n const emptyTaggingRequest: TaggingRequest = { url: '', params: {} }\n\n const expanded = ref(false)\n const shouldAnimateSuggestion = ref(true)\n\n const buttonText = computed(() => (expanded.value ? props.collapseText : props.expandText))\n\n function onExpandButtonClick(newValue: boolean) {\n $x.emit('UserClickedAiOverviewExpandButton', expanded.value, {\n suggestionText: suggestionText.value,\n toolingDisplayClick: tagging.value?.toolingDisplayClick,\n })\n setExpanded(newValue)\n }\n\n function setExpanded(newValue: boolean) {\n expanded.value = newValue\n !expanded.value && (shouldAnimateSuggestion.value = false)\n }\n\n watch(query, () => {\n expanded.value = false\n shouldAnimateSuggestion.value = true\n })\n\n return {\n buttonText,\n emptyTaggingRequest,\n expanded,\n responseText,\n suggestionsLoading,\n suggestionsSearch,\n suggestionText,\n setExpanded,\n onExpandButtonClick,\n shouldAnimateSuggestion,\n query,\n tagging,\n isNoResults,\n queries,\n }\n },\n})\n</script>\n\n<style lang=\"css\">\n.x-ai-overview {\n --color: var(--x-ai-overview-color, #bbc9cf);\n --color-lighter: var(--x-ai-overview-color-lighter, color-mix(in srgb, var(--color) 25%, white));\n\n @apply x-relative x-rounded-3xl x-bg-[var(--color-lighter)];\n}\n\n.x-ai-overview-main {\n @apply x-p-16 x-rounded-lg;\n}\n\n.x-ai-overview-title-loading {\n @apply x-flex x-items-center x-gap-1.5 x-mb-8;\n}\n.x-ai-overview-title-loading-indicator {\n @apply x-size-3 x-animate-pulse x-rounded-full x-bg-[var(--color)];\n}\n.x-ai-overview-title-loading-text {\n @apply x-animate-pulse x-text-xs;\n}\n\n.x-ai-overview-title {\n @apply x-flex x-text-sm x-font-bold x-gap-4 x-items-center x-mb-8;\n}\n.x-ai-overview-title-icon {\n @apply x-icon x-text-[var(--color)];\n}\n\n.x-ai-overview-content {\n @apply x-flex x-flex-col x-text-left x-leading-5 x-gap-2;\n}\n.x-ai-overview-content span {\n @apply x-font-medium;\n}\n\n.x-ai-overview-gradient {\n @apply x-cursor-pointer x-content-none x-absolute x-w-full x-h-80 x-bottom-5 x-bg-gradient-to-b x-from-0% x-from-transparent x-to-100% x-to-[var(--color-lighter)];\n}\n\n.x-ai-overview-toggle-wrapper {\n @apply x-flex x-relative x-z-[1];\n}\n.x-ai-overview-toggle-btn {\n @apply x-button x-button-outlined x-rounded-full x-w-full x-mx-auto sm:x-transition-all sm:x-duration-500 sm:x-translate-y-1/2 sm:x-w-[var(--expand-button-width,200px)];\n}\n.x-ai-overview-toggle-btn-icon {\n @apply x-rotate-0 x-icon x-transition-all x-duration-300;\n}\n.x-ai-overview-toggle-btn-icon-expanded {\n @apply x-rotate-180;\n}\n\n.x-ai-overview-suggestion-query-btn {\n @apply x-button-tight x-mx-16 x-font-bold x-text-gray-900 x-w-fit x-min-h-fit x-flex x-gap-16 x-items-center;\n}\n.x-ai-overview-suggestion-query-btn-icon {\n @apply x-icon-md;\n}\n.x-ai-overview-suggestions {\n @apply x-flex x-flex-col x-gap-16 x-pb-16;\n}\n.x-ai-overview-suggestion {\n @apply x-flex x-flex-col x-gap-8;\n}\n.x-ai-overview-suggestion-results {\n @apply x-flex x-gap-16 x-px-16;\n}\n\n.x-ai-overview-suggestions-loading {\n width: 2.5rem /* 40px */;\n height: 2.5rem /* 40px */;\n margin: auto;\n animation: x-spin 1s linear infinite;\n\n @keyframes x-spin {\n to {\n transform: rotate(360deg);\n }\n }\n}\n\n.x-ai-overview-result-animation {\n opacity: 0;\n animation: x-fade 0.3s ease-in-out forwards;\n\n @keyframes x-fade {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n</style>\n"],"names":["_createElementVNode","_createBlock","_openBlock","_createElementBlock","_createVNode","_toDisplayString","_withCtx","_createTextVNode","_createCommentVNode","_normalizeStyle","_withDirectives","_Fragment","_renderList","_normalizeClass","_renderSlot","_vShow","_withModifiers"],"mappings":";;;;;;AAAA,EAAA,GAAA,EAAA,CAAA;AAAA,EAE6B,KAAM,EAAA,eAAA;AAAA,EAAgB,WAAU,EAAA,qBAAA;;AAClD,MAAA,UAAA,GAAA,EAAA,KAAA,EAAM,oBAAoB,EAAA,CAAA;;AAHrC,EAAA,GAAA,EAAA,CAAA;AAAA,EAOY,KAAM,EAAA,6BAAA;AAAA,EACN,WAAU,EAAA,2BAAA;;AAEV,MAAA,UAAA,mBAAAA,kBAAA;AAAA,EAAsD,MAAA;AAAA,EAAA,EAAhD,OAAM,uCAAuC,EAAA;AAAA,EAAA,IAAA;AAAA,EAAA,CAAA,CAAA;AAAA;AAAA,CAAA,CAAA;;EAEjD,KAAM,EAAA,kCAAA;AAAA,EACN,WAAU,EAAA,gCAAA;;;EAeN,KAAM,EAAA,qBAAA;AAAA,EAAsB,WAAU,EAAA,mBAAA;;;EAMzC,KAAM,EAAA,uBAAA;AAAA,EAAwB,WAAU,EAAA,qBAAA;;AAlCvD,MAAA,UAAA,GAAA,EAAA,GAAA,EAAA,CAAA,EAAA,CAAA;;AAAA,EAAA,GAAA,EAAA,CAAA;AAAA,EAsDY,KAAM,EAAA,2BAAA;AAAA,EACN,WAAU,EAAA,mCAAA;;AA0DI,MAAA,WAAA,GAAA,EAAA,KAAA,EAAM,kCAAkC,EAAA,CAAA;;EAgChC,KAAM,EAAA,wBAAA;AAAA,EAAyB,WAAU,EAAA,sBAAA;;AAC5D,MAAA,WAAA,GAAA,EAAA,KAAA,EAAM,8BAA8B,EAAA,CAAA;;;;;;;;;;;;;sBAjJjDC,WAiKiB,CAAA,yBAAA,EAAA,IAAA,EAAA;AAAA,IAlKnB,iBAEI,MA+JM;AAAA,MA/JM,CAAA,IAAA,CAAA,WAAA,IAAAC,SAAA,EAAA,EAAZC,kBA+JM,CAAA,KAAA,EA/JN,UA+JM,EAAA;AAAA,QA9JJH,kBAAA,CAoCM,OApCN,UAoCM,EAAA;AAAA,UAnCJI,WAAA,CA4BO,eA5BD,EAAA,EAAA,IAAA,EAAK,QAAQ,EAAA,EAAA;AAAA,YAJ3B,iBAKU,MAYO;AAAA,cAXC,IAAA,CAAA,kBAAA,IAAAF,SAAA,EAAA,EADRC,kBAYO,CAAA,MAAA,EAZP,UAYO,EAAA;AAAA,gBAPL,UAAA;AAAA,gBACAH,kBAAA;AAAA,kBAKO,MAAA;AAAA,kBALP,UAAA;AAAA,kBAKOK,gBADF,IAAY,CAAA,YAAA,CAAA;AAAA,kBAAA,CAAA;AAAA;AAAA,iBAAA;AAAA,eAAA,CAAA,KAAAH,SAAA,EAAA,EAGnBD,WAaiB,CAAA,yBAAA,EAAA;AAAA,gBA/B3B,GAAA,EAAA,CAAA;AAAA,gBAoBa,OAAA,EAAS,cAAS,cAAkB,IAAA,IAAA,CAAA,mBAAA;AAAA,gBACpC,gBAAc,EAAA;AAAA,kBAAA,OAAA,EAAA,UAAA;wCAA2E,IAAK,CAAA,KAAA,IAAA,wBAAA;AAAA,kBAAA,WAAA,EAAA,KAAA;;gBAK/F,WAAU,EAAA,6BAAA;AAAA,eAAA,EAAA;AA1BtB,gBAAA,OAAA,EAAAK,OAAA,CA4BY,MAEO;AAAA,kBAFPN,kBAAA,CAEO,QAFP,UAEO,EAAA;AAAA,oBADLI,WAAA,CAA+C,qBAAnC,EAAA,EAAA,KAAA,EAAM,0BAA0B,EAAA,CAAA;AAAA,oBA7B1DG,eAAA;AAAA,sBA6BkEF,eAAA,CAAA,CAAA,CAAA,IAAA,CAAA,KAAA,GAAQ,aAAQ,IAAc,CAAA,cAAA,CAAA;AAAA,sBAAA,CAAA;AAAA;AAAA,qBAAA;AAAA,mBAAA,CAAA;;AA7BhG,gBAAA,CAAA,EAAA,CAAA;AAAA;AAAA,eAAA,EAAA,CAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;;AAAA,YAAA,CAAA,EAAA,CAAA;AAAA;AAAA,WAAA,CAAA;UAiCQD,WAKe,CAAA,uBAAA,EAAA,IAAA,EAAA;AAAA,YAtCvB,iBAkCU,MAGM;AAAA,cAHNJ,kBAAA,CAGM,OAHN,UAGM,EAAA;AAAA,gBAFQ,IAAZ,CAAA,KAAA,IAAAE,SAAA,EAAA,EAAAC,kBAAA;AAAA,kBAA8C,MAAA;AAAA,kBAnC1D,UAAA;AAAA,kBAAAE,eAAA,CAmCkC,IAAc,CAAA,cAAA,CAAA;AAAA,kBAAA,CAAA;AAAA;AAAA,iBAnChD,IAAAG,kBAAA,CAAA,MAAA,EAAA,IAAA,CAAA;AAAA,gBAoCYR,kBAAA;AAAA,kBAAyB,GAAA;AAAA,kBAAA,IAAA;AAAA,kBAAAK,eAAA,CAAnB,IAAY,CAAA,YAAA,CAAA;AAAA,kBAAA,CAAA;AAAA;AAAA,iBAAA;AAAA,eAAA,CAAA;;AApC9B,YAAA,CAAA,EAAA,CAAA;AAAA;AAAA,WAAA,CAAA;;QAwCMD,WAgGiB,CAAA,yBAAA,EAAA;AAAA,UA/Fd,KAzCT,EAAAK,cAAA,CAAA;AAAA,YAAA,yCAAA,EAAA,CAAA,EAAA,GAAA,GAyCgF,uBAAkB,MAAM,CAAA,EAAA,CAAA;AAAA,WAAA,CAAA;UAGhG,WAAU,EAAA,yCAAA;AAAA,SAAA,EAAA;AA5ClB,UAAA,OAAA,EAAAH,OAAA,CA8CQ,MAyFM;AAAA,YAzFNI,cAAA,CAAAV,kBAAA;AAAA,cAyFM,KAAA;AAAA,cAAA,IAAA;AAAA,cAAA;AAAA,gBAvFK,CAAA,IAAA,CAAA,iBAAA,CAAkB,uBAD3BC,WAIE,CAAA,sBAAA,EAAA;AAAA,kBAnDZ,GAAA,EAAA,CAAA;AAAA,kBAiDY,KAAM,EAAA,mCAAA;AAAA,kBACN,WAAU,EAAA,iCAAA;AAAA,iBAEZ,CAAA,KAAAC,SAAA,EAAA,EAAAC,kBAAA,CAkFM,OAlFN,UAkFM,EAAA;AAAA,mBA7EJD,SAAA,CAAA,IAAA,CAAA,EAAAC,kBAAA;AAAA,oBA4EiBQ,QAAA;AAAA,oBAAA,IAAA;AAAA,oBArI7BC,WA4DmB,IA5DnB,CAAA,iBAAA,EAAA,CAAA,EAAA,KAAA,EA2DyB,iBAAe,OAAW,EAAA,cAAA,IAAkB,eAAe,KAAA;0CAFxEX,WA4EiB,CAAA,yBAAA,EAAA;AAAA,wBAxEd,GAAK,EAAA,eAAA;AAAA,wBACL,OAA0B,EAAA,IAAA,CAAA,OAAA,EAAS,aAAc,CAAA,eAAe,EAAE,cAAkB,IAAA,IAAA,CAAA,mBAAA;AAAA,wBAGpF,gBAAc,EAAA;AAAA,0BAAA,OAAA,EAAA,UAAA;gDAA+E,IAAK,CAAA,KAAA,IAAA,wBAAA;AAAA,0BAAA,WAAA,EAAA,KAAA;;wBAKnG,WAAU,EAAA,mCAAA;AAAA,uBAAA,EAAA;AAtExB,wBAAA,OAAA,EAAAK,OAAA,CAwEc,MA4DM;AAAA,0BA5DNN,kBAAA;AAAA,4BA4DM,KAAA;AAAA,4BAAA;AAAA,8BA3DJ,KAAA,EAzEhBa,gBAyEsB,0BAA0B,EAAA;AAAA,gCAE8B,gCAAA,EAAA,IAAA,CAAA,uBAAA;AAAA,+BAAA,CAAA,CAAA;8BAD9D,WAAU,EAAA,wBAAA;AAAA,8BAIT,KAAA,EA9EjBJ,oCA8E6C,eAAe,GAAA,GAAA,CAAA,EAAA,CAAA,EAAA,CAAA;AAAA,6BAAA;;8BAE5CL,WAMkB,CAAA,0BAAA,EAAA;AAAA,gCALhB,KAAM,EAAA,oCAAA;AAAA,gCACL,MAAA,EAAM,sBAAwB,eAAe,EAAA;AAAA,+BAAA,EAAA;AAlFhE,gCAAA,OAAA,EAAAE,OAAA,CAoFkB,MAAqB;AAAA,kCApFvCC,eAAA;AAAA,oCAAAF,eAAA,CAoFqB,eAAe,CAAG,GAAA,GAAA;AAAA,oCACrB,CAAA;AAAA;AAAA,mCAAA;AAAA,kCAAkED,WAAA,CAAA,yBAAA,EAAA,EAAlD,OAAM,yCAAyC,EAAA,CAAA;AAAA,iCAAA,CAAA;AArFjF,gCAAA,CAAA,EAAA,CAAA;AAAA;AAAA,+BAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,CAAA;8BAwFgBA,WA2CuB,CAAA,+BAAA,EAAA;AAAA,gCA1CpB,yBAA8C,EAAA,IAAA,CAAA,OAAA,EAAS,aAAc,CAAA,eAAe,CAAE,CAAA,mBAAA;AAAA,gCAGtF,2BAAgD,EAAA,IAAA,CAAA,OAAA,EAAS,aAAc,CAAA,eAAe,CAAE,CAAA,sBAAA;AAAA,gCAGzF,gBAAe,EAAA,UAAA;AAAA,+BAAA,EAAA;AA/FjC,gCAAA,OAAA,EAAAE,OAAA,CAiGkB,MAiCO;AAAA,kCAjCPQ,UAiCO,CAAA,IAAA,CAAA,MAAA,EAAA,eAAA,EAAA,EAjCqB,OAAS,EAAA,cAAA,IAArC,MAiCO;AAAA,oCAhCLV,WA+Be,CAAA,uBAAA,EAAA;AAAA,sCA9BZ,KAAA,EAnGvBS,eAmG8B,IAAoB,CAAA,oBAAA,CAAA;AAAA,sCAC3B,wBAAwB,EAAA,IAAA,CAAA,6BAAA;AAAA,sCACxB,cAAc,EAAA,IAAA,CAAA,0BAAA;AAAA,sCACd,yBAAyB,EAAA,KAAA;AAAA,qCAAA,EAAA;sCAEf,sBAAoB,EAAAP,OAAA,CAC7B,CAAmE,EADlC,YAAY,EAAA,KAAA;AAAA,wCAC7CQ,UAAA,CAAmE,wCAA/B,YAA2B,EAAA,CAAA;AAAA,uCAAA,CAAA;AAEtD,sCAAA,2BAAA,EAAyBR,QAClC,MAA0C;AAAA,wCAA1CQ,UAA0C,CAAA,IAAA,CAAA,MAAA,EAAA,4BAAA,CAAA;AAAA,uCAAA,CAAA;AAEjC,sCAAA,4BAAA,EAA0BR,QACnC,MAA2C;AAAA,wCAA3CQ,UAA2C,CAAA,IAAA,CAAA,MAAA,EAAA,6BAAA,CAAA;AAAA,uCAAA,CAAA;AA/GnE,sCAAA,OAAA,EAAAR,OAAA,CAiHsB,MAeK;AAAA,wCAfLN,kBAAA,CAeK,MAfL,WAeK,EAAA;AAAA,2CAdHE,SAAA,CAAA,IAAA,CAAA,EAAAC,kBAAA;AAAA,4CAaKQ,QAAA;AAAA,4CAAA,IAAA;AAAA,4CA/H7BC,UAmH0D,CAAA,cAAA,EAnH1D,CAmHkC,MAAA,EAAQ,WAAW,KAAA;AAD7B,8CAAA,OAAAV,SAAA,EAAA,EAAAC,kBAAA;AAAA,gDAaK,IAAA;AAAA,gDAAA;AAAA,kDAXF,KAAK,MAAO,CAAA,EAAA;AAAA,kDACb,WAAU,EAAA,+BAAA;AAAA,kDACT,KAtH3B,EAAAU,cAAA,CAAA;AAAA,oDAsHkG,gCAAA,EAAA,IAAA,CAAA,uBAAA;AAAA,mDAAA,CAAA;kDAGvE,KAzH3B,EAAAJ,cAAA,CAAA;AAAA,oDAyHmF,cAAA,EAAA,CAAA,EAAA,eAAA,GAAe,MAAS,WAAW,GAAA,GAAA,CAAA,EAAA,CAAA;AAAA,mDAAA,CAAA;;;AAK5F,kDAAAK,UAAA,CAAuC,yBAAlB,MAAc,EAAA,CAAA;AAAA,iDAAA;;;;;;;;;;AA9H7D,sCAAA,CAAA,EAAA,CAAA;AAAA;AAAA,qCAAA,EAAA,IAAA,EAAA,CAAA,OAAA,EAAA,wBAAA,EAAA,cAAA,CAAA,CAAA;;;AAAA,gCAAA,CAAA,EAAA,CAAA;AAAA;AAAA,+BAAA,EAAA,IAAA,EAAA,CAAA,yBAAA,EAAA,2BAAA,CAAA,CAAA;;;;;;AAAA,wBAAA,CAAA,EAAA,CAAA;AAAA;AAAA,uBAAA,EAAA,IAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;;;;;;;;;;sBA8CqB,IAAQ,CAAA,QAAA,CAAA;AAAA,aAAA,CAAA;;AA9C7B,UAAA,CAAA,EAAA,CAAA;AAAA;AAAA,SAAA,EAAA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA;QA0IMV,WAsBO,CAAA,eAAA,EAAA,IAAA,EAAA;AAAA,UAhKb,iBA2IQ,MAoBM;AAAA,YAnBE,IAAA,CAAA,OAAA,CAAQ,uBADhBD,kBAoBM,CAAA,KAAA,EAAA;AAAA,cA/Jd,GAAA,EAAA,CAAA;AAAA,cA6IU,KAAM,EAAA,kBAAA;AAAA,cACN,WAAU,EAAA,mCAAA;AAAA,cACT,OAAK,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAE,IAAmB,CAAA,mBAAA,CAAA,CAAE,IAAQ,CAAA,QAAA,CAAA,CAAA;AAAA,aAAA,EAAA;AAErC,cAAAO,cAAA,CAAAV,kBAAA;AAAA,gBAA0F,KAAA;AAAA,gBAA1F,WAAA;AAAA,gBAA0F,IAAA;AAAA,gBAAA,GAAA;AAAA;AAAA,eAAA,EAAA;AAAA,gBAAA,CAAAe,KAAA,EAAA,CAA5E,IAAQ,CAAA,QAAA,CAAA;AAAA,eAAA,CAAA;AACtB,cAAAf,kBAAA,CAYM,OAZN,WAYM,EAAA;AAAA,gBAXJA,kBAUS,CAAA,QAAA,EAAA;AAAA,kBATP,KAAM,EAAA,0BAAA;AAAA,kBACN,WAAU,EAAA,2BAAA;AAAA,kBACT,OAAK,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAtJpBgB,aAsJ2B,CAAA,CAAA,MAAA,KAAA,IAAA,CAAA,mBAAA,CAAmB,CAAE,IAAQ,CAAA,QAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA;AAAA,iBAAA,EAAA;AAtJxD,kBAAAT,eAAA;AAAA,oBAAAF,eAAA,CAwJiB,eAAU,CAAG,GAAA,GAAA;AAAA,oBAChB,CAAA;AAAA;AAAA,mBAAA;AAAA,kBAGED,WAAA,CAAA,0BAAA,EAAA;AAAA,oBAFA,KA1JhB,EAAAS,cAAA,CAAA,CA0JsB,+BAA+B,EAAA,EAAA,wCAAA,EACe,IAAQ,CAAA,QAAA,EAAA,CAAA,CAAA;AAAA,mBAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA;;;AA3J5E,aAAA,CAAA,IAAAL,kBAAA,CAAA,MAAA,EAAA,IAAA,CAAA;AAAA,WAAA,CAAA;AAAA,UAAA,CAAA,EAAA,CAAA;AAAA;AAAA,SAAA,CAAA;AAAA,OAAA,CAAA,IAAAA,kBAAA,CAAA,MAAA,EAAA,IAAA,CAAA;AAAA,KAAA,CAAA;AAAA,IAAA,CAAA,EAAA,CAAA;AAAA;AAAA,GAAA,CAAA,CAAA;;;;;;"}
|
|
@@ -35,7 +35,7 @@ import '../../../components/base-variable-column-grid.vue2.js';
|
|
|
35
35
|
import '../../../components/column-picker/base-column-picker-dropdown.vue2.js';
|
|
36
36
|
import '../../../components/column-picker/base-column-picker-list.vue2.js';
|
|
37
37
|
import '../../../components/currency/base-currency.vue2.js';
|
|
38
|
-
import '../../../components/display-click-provider.vue.js';
|
|
38
|
+
import _sfc_main$2 from '../../../components/display-click-provider.vue.js';
|
|
39
39
|
import _sfc_main$1 from '../../../components/display-emitter.vue.js';
|
|
40
40
|
import '../../../components/filters/labels/base-price-filter-label.vue.js';
|
|
41
41
|
import '../../../components/filters/labels/base-rating-filter-label.vue2.js';
|
|
@@ -127,6 +127,7 @@ var _sfc_main = defineComponent({
|
|
|
127
127
|
SlidingPanel,
|
|
128
128
|
SpinnerIcon,
|
|
129
129
|
DisplayEmitter: _sfc_main$1,
|
|
130
|
+
DisplayClickProvider: _sfc_main$2,
|
|
130
131
|
},
|
|
131
132
|
props: {
|
|
132
133
|
/**
|
|
@@ -193,6 +194,7 @@ var _sfc_main = defineComponent({
|
|
|
193
194
|
const $x = use$x();
|
|
194
195
|
const { query } = useGetter('ai');
|
|
195
196
|
const { suggestionText, responseText, suggestionsSearch, suggestionsLoading, tagging, isNoResults, queries, } = useState('ai');
|
|
197
|
+
const emptyTaggingRequest = { url: '', params: {} };
|
|
196
198
|
const expanded = ref(false);
|
|
197
199
|
const shouldAnimateSuggestion = ref(true);
|
|
198
200
|
const buttonText = computed(() => (expanded.value ? props.collapseText : props.expandText));
|
|
@@ -213,6 +215,7 @@ var _sfc_main = defineComponent({
|
|
|
213
215
|
});
|
|
214
216
|
return {
|
|
215
217
|
buttonText,
|
|
218
|
+
emptyTaggingRequest,
|
|
216
219
|
expanded,
|
|
217
220
|
responseText,
|
|
218
221
|
suggestionsLoading,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-overview.vue2.js","sources":["../../../../../src/x-modules/ai/components/ai-overview.vue"],"sourcesContent":["<template>\n <CollapseHeight>\n <div v-if=\"!isNoResults\" class=\"x-ai-overview\" data-test=\"ai-overview-wrapper\">\n <div class=\"x-ai-overview-main\">\n <Fade mode=\"out-in\">\n <span\n v-if=\"suggestionsLoading\"\n class=\"x-ai-overview-title-loading\"\n data-test=\"ai-overview-title-loading\"\n >\n <span class=\"x-ai-overview-title-loading-indicator\" />\n <span\n class=\"x-ai-overview-title-loading-text\"\n data-test=\"ai-overview-title-loading-text\"\n >\n {{ titleLoading }}\n </span>\n </span>\n <DisplayEmitter\n v-else\n :payload=\"tagging?.toolingDisplay ?? { url: '', params: {} }\"\n :event-metadata=\"{\n feature: 'overview',\n displayOriginalQuery: query,\n replaceable: false,\n }\"\n >\n <span class=\"x-ai-overview-title\" data-test=\"ai-overview-title\">\n <AIStarIcon class=\"x-ai-overview-title-icon\" />{{ !!title ? title : suggestionText }}\n </span>\n </DisplayEmitter>\n </Fade>\n <ChangeHeight>\n <div class=\"x-ai-overview-content\" data-test=\"ai-overview-content\">\n <span v-if=\"title\">{{ suggestionText }}</span>\n <p>{{ responseText }}</p>\n </div>\n </ChangeHeight>\n </div>\n <CollapseHeight\n :style=\"{\n '--x-collapse-height-transition-duration': `${300 * suggestionsSearch.length}ms`,\n }\"\n data-test=\"ai-overview-collapse-height-suggestions\"\n >\n <div v-show=\"expanded\">\n <SpinnerIcon\n v-if=\"!suggestionsSearch.length\"\n class=\"x-ai-overview-suggestions-loading\"\n data-test=\"ai-overview-suggestions-loading\"\n />\n <div\n v-else\n class=\"x-ai-overview-suggestions\"\n data-test=\"ai-overview-suggestions-container\"\n >\n <div\n v-for=\"(\n { query: suggestionQuery, results: queriesResults }, suggestionIndex\n ) in suggestionsSearch\"\n :key=\"suggestionQuery\"\n class=\"x-ai-overview-suggestion\"\n data-test=\"ai-overview-suggestion\"\n :class=\"{\n 'x-ai-overview-result-animation': shouldAnimateSuggestion,\n }\"\n :style=\"{ animationDelay: `${suggestionIndex * 300}ms` }\"\n >\n <BaseEventButton\n class=\"x-ai-overview-suggestion-query-btn\"\n :events=\"{ UserAcceptedAQuery: suggestionQuery }\"\n >\n {{ suggestionQuery }}\n <ArrowRightIcon class=\"x-ai-overview-suggestion-query-btn-icon\" />\n </BaseEventButton>\n\n <slot name=\"sliding-panel\" :results=\"queriesResults\">\n <SlidingPanel\n :class=\"slidingPanelsClasses\"\n :scroll-container-class=\"slidingPanelContainersClasses\"\n :button-class=\"slidingPanelButtonsClasses\"\n :reset-on-content-change=\"false\"\n >\n <template #sliding-panel-addons=\"{ arrivedState }\">\n <slot name=\"sliding-panels-addons\" :arrived-state=\"arrivedState\" />\n </template>\n <template #sliding-panel-left-button>\n <slot name=\"sliding-panels-left-button\" />\n </template>\n <template #sliding-panel-right-button>\n <slot name=\"sliding-panels-right-button\" />\n </template>\n <ul class=\"x-ai-overview-suggestion-results\">\n <li\n v-for=\"(result, resultIndex) in queriesResults\"\n :key=\"result.id\"\n data-test=\"ai-overview-suggestion-result\"\n :class=\"{\n 'x-ai-overview-result-animation': shouldAnimateSuggestion,\n }\"\n :style=\"{ animationDelay: `${suggestionIndex * 300 + resultIndex * 300}ms` }\"\n >\n <!-- @slot (required) result card -->\n <slot name=\"result\" :result=\"result\" />\n </li>\n </ul>\n </SlidingPanel>\n </slot>\n </div>\n </div>\n </div>\n </CollapseHeight>\n\n <Fade>\n <div\n v-if=\"queries.length\"\n class=\"x-cursor-pointer\"\n data-test=\"ai-overview-toggle-button-wrapper\"\n @click=\"onExpandButtonClick(!expanded)\"\n >\n <div v-show=\"!expanded\" class=\"x-ai-overview-gradient\" data-test=\"ai-overview-gradient\" />\n <div class=\"x-ai-overview-toggle-wrapper\">\n <button\n class=\"x-ai-overview-toggle-btn\"\n data-test=\"ai-overview-toggle-button\"\n @click.stop=\"onExpandButtonClick(!expanded)\"\n >\n {{ buttonText }}\n <ChevronDownIcon\n class=\"x-ai-overview-toggle-btn-icon\"\n :class=\"{ 'x-ai-overview-toggle-btn-icon-expanded': expanded }\"\n />\n </button>\n </div>\n </div>\n </Fade>\n </div>\n </CollapseHeight>\n</template>\n\n<script lang=\"ts\">\nimport type { PropType } from 'vue'\nimport { computed, defineComponent, ref, watch } from 'vue'\nimport {\n AIStarIcon,\n ArrowRightIcon,\n BaseEventButton,\n ChangeHeight,\n ChevronDownIcon,\n CollapseHeight,\n Fade,\n SlidingPanel,\n SpinnerIcon,\n} from '../../../components'\nimport DisplayEmitter from '../../../components/display-emitter.vue'\nimport { use$x, useGetter, useState } from '../../../composables'\nimport { typing } from '../../../directives'\nimport { aiXModule } from '../x-module'\n\nexport default defineComponent({\n directives: {\n typing,\n },\n xModule: aiXModule.name,\n components: {\n AIStarIcon,\n ArrowRightIcon,\n BaseEventButton,\n ChevronDownIcon,\n CollapseHeight,\n ChangeHeight,\n Fade,\n SlidingPanel,\n SpinnerIcon,\n DisplayEmitter,\n },\n props: {\n /**\n * The text displayed when the question ended loading\n *\n * @public\n */\n title: {\n type: String as PropType<string>,\n },\n /**\n * The text displayed when the question is loading.\n *\n * @public\n */\n titleLoading: {\n type: String as PropType<string>,\n default: 'Generating with Empathy AI',\n },\n /**\n * The text displayed on the toggle button when collapsed.\n *\n * @public\n */\n expandText: {\n type: String as PropType<string>,\n default: 'Show more',\n },\n /**\n * The text displayed on the toggle button when expanded.\n *\n * @public\n */\n collapseText: {\n type: String as PropType<string>,\n default: 'Show less',\n },\n\n /**\n * The classes added to each sliding panel for each query.\n *\n * @public\n */\n slidingPanelsClasses: {\n type: String as PropType<string>,\n },\n /**\n * The classes added to each sliding panel container of each query.\n *\n * @public\n */\n slidingPanelContainersClasses: {\n type: String as PropType<string>,\n },\n /**\n * The classes added to each sliding panel buttons of each query.\n *\n * @public\n */\n slidingPanelButtonsClasses: {\n type: String as PropType<string>,\n },\n },\n setup(props) {\n const $x = use$x()\n const { query } = useGetter('ai')\n const {\n suggestionText,\n responseText,\n suggestionsSearch,\n suggestionsLoading,\n tagging,\n isNoResults,\n queries,\n } = useState('ai')\n\n const expanded = ref(false)\n const shouldAnimateSuggestion = ref(true)\n\n const buttonText = computed(() => (expanded.value ? props.collapseText : props.expandText))\n\n function onExpandButtonClick(newValue: boolean) {\n $x.emit('UserClickedAiOverviewExpandButton', expanded.value, {\n suggestionText: suggestionText.value,\n toolingDisplayClick: tagging.value?.toolingDisplayClick,\n })\n setExpanded(newValue)\n }\n\n function setExpanded(newValue: boolean) {\n expanded.value = newValue\n !expanded.value && (shouldAnimateSuggestion.value = false)\n }\n\n watch(query, () => {\n expanded.value = false\n shouldAnimateSuggestion.value = true\n })\n\n return {\n buttonText,\n expanded,\n responseText,\n suggestionsLoading,\n suggestionsSearch,\n suggestionText,\n setExpanded,\n onExpandButtonClick,\n shouldAnimateSuggestion,\n query,\n tagging,\n isNoResults,\n queries,\n }\n },\n})\n</script>\n\n<style lang=\"css\">\n.x-ai-overview {\n --color: var(--x-ai-overview-color, #bbc9cf);\n --color-lighter: var(--x-ai-overview-color-lighter, color-mix(in srgb, var(--color) 25%, white));\n\n @apply x-relative x-rounded-3xl x-bg-[var(--color-lighter)];\n}\n\n.x-ai-overview-main {\n @apply x-p-16 x-rounded-lg;\n}\n\n.x-ai-overview-title-loading {\n @apply x-flex x-items-center x-gap-1.5 x-mb-8;\n}\n.x-ai-overview-title-loading-indicator {\n @apply x-size-3 x-animate-pulse x-rounded-full x-bg-[var(--color)];\n}\n.x-ai-overview-title-loading-text {\n @apply x-animate-pulse x-text-xs;\n}\n\n.x-ai-overview-title {\n @apply x-flex x-text-sm x-font-bold x-gap-4 x-items-center x-mb-8;\n}\n.x-ai-overview-title-icon {\n @apply x-icon x-text-[var(--color)];\n}\n\n.x-ai-overview-content {\n @apply x-flex x-flex-col x-text-left x-leading-5 x-gap-2;\n}\n.x-ai-overview-content span {\n @apply x-font-medium;\n}\n\n.x-ai-overview-gradient {\n @apply x-cursor-pointer x-content-none x-absolute x-w-full x-h-80 x-bottom-5 x-bg-gradient-to-b x-from-0% x-from-transparent x-to-100% x-to-[var(--color-lighter)];\n}\n\n.x-ai-overview-toggle-wrapper {\n @apply x-flex x-relative x-z-[1];\n}\n.x-ai-overview-toggle-btn {\n @apply x-button x-button-outlined x-rounded-full x-w-full x-mx-auto sm:x-transition-all sm:x-duration-500 sm:x-translate-y-1/2 sm:x-w-[var(--expand-button-width,200px)];\n}\n.x-ai-overview-toggle-btn-icon {\n @apply x-rotate-0 x-icon x-transition-all x-duration-300;\n}\n.x-ai-overview-toggle-btn-icon-expanded {\n @apply x-rotate-180;\n}\n\n.x-ai-overview-suggestion-query-btn {\n @apply x-button-tight x-mx-16 x-font-bold x-text-gray-900 x-w-fit x-min-h-fit x-flex x-gap-16 x-items-center;\n}\n.x-ai-overview-suggestion-query-btn-icon {\n @apply x-icon-md;\n}\n.x-ai-overview-suggestions {\n @apply x-flex x-flex-col x-gap-16 x-pb-16;\n}\n.x-ai-overview-suggestion {\n @apply x-flex x-flex-col x-gap-8;\n}\n.x-ai-overview-suggestion-results {\n @apply x-flex x-gap-16 x-px-16;\n}\n\n.x-ai-overview-suggestions-loading {\n width: 2.5rem /* 40px */;\n height: 2.5rem /* 40px */;\n margin: auto;\n animation: x-spin 1s linear infinite;\n\n @keyframes x-spin {\n to {\n transform: rotate(360deg);\n }\n }\n}\n\n.x-ai-overview-result-animation {\n opacity: 0;\n animation: x-fade 0.3s ease-in-out forwards;\n\n @keyframes x-fade {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n</style>\n"],"names":["DisplayEmitter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai-overview.vue2.js","sources":["../../../../../src/x-modules/ai/components/ai-overview.vue"],"sourcesContent":["<template>\n <CollapseHeight>\n <div v-if=\"!isNoResults\" class=\"x-ai-overview\" data-test=\"ai-overview-wrapper\">\n <div class=\"x-ai-overview-main\">\n <Fade mode=\"out-in\">\n <span\n v-if=\"suggestionsLoading\"\n class=\"x-ai-overview-title-loading\"\n data-test=\"ai-overview-title-loading\"\n >\n <span class=\"x-ai-overview-title-loading-indicator\" />\n <span\n class=\"x-ai-overview-title-loading-text\"\n data-test=\"ai-overview-title-loading-text\"\n >\n {{ titleLoading }}\n </span>\n </span>\n <DisplayEmitter\n v-else\n :payload=\"tagging?.toolingDisplay ?? emptyTaggingRequest\"\n :event-metadata=\"{\n feature: 'overview',\n displayOriginalQuery: query || 'overview-without-query',\n replaceable: false,\n }\"\n data-test=\"ai-overview-display-emitter\"\n >\n <span class=\"x-ai-overview-title\" data-test=\"ai-overview-title\">\n <AIStarIcon class=\"x-ai-overview-title-icon\" />{{ !!title ? title : suggestionText }}\n </span>\n </DisplayEmitter>\n </Fade>\n <ChangeHeight>\n <div class=\"x-ai-overview-content\" data-test=\"ai-overview-content\">\n <span v-if=\"title\">{{ suggestionText }}</span>\n <p>{{ responseText }}</p>\n </div>\n </ChangeHeight>\n </div>\n <CollapseHeight\n :style=\"{\n '--x-collapse-height-transition-duration': `${300 * suggestionsSearch.length}ms`,\n }\"\n data-test=\"ai-overview-collapse-height-suggestions\"\n >\n <div v-show=\"expanded\">\n <SpinnerIcon\n v-if=\"!suggestionsSearch.length\"\n class=\"x-ai-overview-suggestions-loading\"\n data-test=\"ai-overview-suggestions-loading\"\n />\n <div\n v-else\n class=\"x-ai-overview-suggestions\"\n data-test=\"ai-overview-suggestions-container\"\n >\n <DisplayEmitter\n v-for=\"(\n { query: suggestionQuery, results: queriesResults }, suggestionIndex\n ) in suggestionsSearch\"\n :key=\"suggestionQuery\"\n :payload=\"\n tagging?.searchQueries[suggestionQuery].toolingDisplay ?? emptyTaggingRequest\n \"\n :event-metadata=\"{\n feature: 'overview',\n displayOriginalQuery: query || 'overview-without-query',\n replaceable: false,\n }\"\n data-test=\"ai-overview-query-display-emitter\"\n >\n <div\n class=\"x-ai-overview-suggestion\"\n data-test=\"ai-overview-suggestion\"\n :class=\"{\n 'x-ai-overview-result-animation': shouldAnimateSuggestion,\n }\"\n :style=\"{ animationDelay: `${suggestionIndex * 300}ms` }\"\n >\n <BaseEventButton\n class=\"x-ai-overview-suggestion-query-btn\"\n :events=\"{ UserAcceptedAQuery: suggestionQuery }\"\n >\n {{ suggestionQuery }}\n <ArrowRightIcon class=\"x-ai-overview-suggestion-query-btn-icon\" />\n </BaseEventButton>\n\n <DisplayClickProvider\n :tooling-display-tagging=\"\n tagging?.searchQueries[suggestionQuery].toolingDisplayClick\n \"\n :tooling-add2-cart-tagging=\"\n tagging?.searchQueries[suggestionQuery].toolingDisplayAdd2Cart\n \"\n result-feature=\"overview\"\n >\n <slot name=\"sliding-panel\" :results=\"queriesResults\">\n <SlidingPanel\n :class=\"slidingPanelsClasses\"\n :scroll-container-class=\"slidingPanelContainersClasses\"\n :button-class=\"slidingPanelButtonsClasses\"\n :reset-on-content-change=\"false\"\n >\n <template #sliding-panel-addons=\"{ arrivedState }\">\n <slot name=\"sliding-panels-addons\" :arrived-state=\"arrivedState\" />\n </template>\n <template #sliding-panel-left-button>\n <slot name=\"sliding-panels-left-button\" />\n </template>\n <template #sliding-panel-right-button>\n <slot name=\"sliding-panels-right-button\" />\n </template>\n <ul class=\"x-ai-overview-suggestion-results\">\n <li\n v-for=\"(result, resultIndex) in queriesResults\"\n :key=\"result.id\"\n data-test=\"ai-overview-suggestion-result\"\n :class=\"{\n 'x-ai-overview-result-animation': shouldAnimateSuggestion,\n }\"\n :style=\"{\n animationDelay: `${suggestionIndex * 300 + resultIndex * 300}ms`,\n }\"\n >\n <!-- @slot (required) result card -->\n <slot name=\"result\" :result=\"result\" />\n </li>\n </ul>\n </SlidingPanel>\n </slot>\n </DisplayClickProvider>\n </div>\n </DisplayEmitter>\n </div>\n </div>\n </CollapseHeight>\n\n <Fade>\n <div\n v-if=\"queries.length\"\n class=\"x-cursor-pointer\"\n data-test=\"ai-overview-toggle-button-wrapper\"\n @click=\"onExpandButtonClick(!expanded)\"\n >\n <div v-show=\"!expanded\" class=\"x-ai-overview-gradient\" data-test=\"ai-overview-gradient\" />\n <div class=\"x-ai-overview-toggle-wrapper\">\n <button\n class=\"x-ai-overview-toggle-btn\"\n data-test=\"ai-overview-toggle-button\"\n @click.stop=\"onExpandButtonClick(!expanded)\"\n >\n {{ buttonText }}\n <ChevronDownIcon\n class=\"x-ai-overview-toggle-btn-icon\"\n :class=\"{ 'x-ai-overview-toggle-btn-icon-expanded': expanded }\"\n />\n </button>\n </div>\n </div>\n </Fade>\n </div>\n </CollapseHeight>\n</template>\n\n<script lang=\"ts\">\nimport type { TaggingRequest } from '@empathyco/x-types'\nimport type { PropType } from 'vue'\nimport { computed, defineComponent, ref, watch } from 'vue'\nimport {\n AIStarIcon,\n ArrowRightIcon,\n BaseEventButton,\n ChangeHeight,\n ChevronDownIcon,\n CollapseHeight,\n DisplayClickProvider,\n Fade,\n SlidingPanel,\n SpinnerIcon,\n} from '../../../components'\nimport DisplayEmitter from '../../../components/display-emitter.vue'\nimport { use$x, useGetter, useState } from '../../../composables'\nimport { typing } from '../../../directives'\nimport { aiXModule } from '../x-module'\n\nexport default defineComponent({\n directives: {\n typing,\n },\n xModule: aiXModule.name,\n components: {\n AIStarIcon,\n ArrowRightIcon,\n BaseEventButton,\n ChevronDownIcon,\n CollapseHeight,\n ChangeHeight,\n Fade,\n SlidingPanel,\n SpinnerIcon,\n DisplayEmitter,\n DisplayClickProvider,\n },\n props: {\n /**\n * The text displayed when the question ended loading\n *\n * @public\n */\n title: {\n type: String as PropType<string>,\n },\n /**\n * The text displayed when the question is loading.\n *\n * @public\n */\n titleLoading: {\n type: String as PropType<string>,\n default: 'Generating with Empathy AI',\n },\n /**\n * The text displayed on the toggle button when collapsed.\n *\n * @public\n */\n expandText: {\n type: String as PropType<string>,\n default: 'Show more',\n },\n /**\n * The text displayed on the toggle button when expanded.\n *\n * @public\n */\n collapseText: {\n type: String as PropType<string>,\n default: 'Show less',\n },\n\n /**\n * The classes added to each sliding panel for each query.\n *\n * @public\n */\n slidingPanelsClasses: {\n type: String as PropType<string>,\n },\n /**\n * The classes added to each sliding panel container of each query.\n *\n * @public\n */\n slidingPanelContainersClasses: {\n type: String as PropType<string>,\n },\n /**\n * The classes added to each sliding panel buttons of each query.\n *\n * @public\n */\n slidingPanelButtonsClasses: {\n type: String as PropType<string>,\n },\n },\n setup(props) {\n const $x = use$x()\n const { query } = useGetter('ai')\n const {\n suggestionText,\n responseText,\n suggestionsSearch,\n suggestionsLoading,\n tagging,\n isNoResults,\n queries,\n } = useState('ai')\n\n const emptyTaggingRequest: TaggingRequest = { url: '', params: {} }\n\n const expanded = ref(false)\n const shouldAnimateSuggestion = ref(true)\n\n const buttonText = computed(() => (expanded.value ? props.collapseText : props.expandText))\n\n function onExpandButtonClick(newValue: boolean) {\n $x.emit('UserClickedAiOverviewExpandButton', expanded.value, {\n suggestionText: suggestionText.value,\n toolingDisplayClick: tagging.value?.toolingDisplayClick,\n })\n setExpanded(newValue)\n }\n\n function setExpanded(newValue: boolean) {\n expanded.value = newValue\n !expanded.value && (shouldAnimateSuggestion.value = false)\n }\n\n watch(query, () => {\n expanded.value = false\n shouldAnimateSuggestion.value = true\n })\n\n return {\n buttonText,\n emptyTaggingRequest,\n expanded,\n responseText,\n suggestionsLoading,\n suggestionsSearch,\n suggestionText,\n setExpanded,\n onExpandButtonClick,\n shouldAnimateSuggestion,\n query,\n tagging,\n isNoResults,\n queries,\n }\n },\n})\n</script>\n\n<style lang=\"css\">\n.x-ai-overview {\n --color: var(--x-ai-overview-color, #bbc9cf);\n --color-lighter: var(--x-ai-overview-color-lighter, color-mix(in srgb, var(--color) 25%, white));\n\n @apply x-relative x-rounded-3xl x-bg-[var(--color-lighter)];\n}\n\n.x-ai-overview-main {\n @apply x-p-16 x-rounded-lg;\n}\n\n.x-ai-overview-title-loading {\n @apply x-flex x-items-center x-gap-1.5 x-mb-8;\n}\n.x-ai-overview-title-loading-indicator {\n @apply x-size-3 x-animate-pulse x-rounded-full x-bg-[var(--color)];\n}\n.x-ai-overview-title-loading-text {\n @apply x-animate-pulse x-text-xs;\n}\n\n.x-ai-overview-title {\n @apply x-flex x-text-sm x-font-bold x-gap-4 x-items-center x-mb-8;\n}\n.x-ai-overview-title-icon {\n @apply x-icon x-text-[var(--color)];\n}\n\n.x-ai-overview-content {\n @apply x-flex x-flex-col x-text-left x-leading-5 x-gap-2;\n}\n.x-ai-overview-content span {\n @apply x-font-medium;\n}\n\n.x-ai-overview-gradient {\n @apply x-cursor-pointer x-content-none x-absolute x-w-full x-h-80 x-bottom-5 x-bg-gradient-to-b x-from-0% x-from-transparent x-to-100% x-to-[var(--color-lighter)];\n}\n\n.x-ai-overview-toggle-wrapper {\n @apply x-flex x-relative x-z-[1];\n}\n.x-ai-overview-toggle-btn {\n @apply x-button x-button-outlined x-rounded-full x-w-full x-mx-auto sm:x-transition-all sm:x-duration-500 sm:x-translate-y-1/2 sm:x-w-[var(--expand-button-width,200px)];\n}\n.x-ai-overview-toggle-btn-icon {\n @apply x-rotate-0 x-icon x-transition-all x-duration-300;\n}\n.x-ai-overview-toggle-btn-icon-expanded {\n @apply x-rotate-180;\n}\n\n.x-ai-overview-suggestion-query-btn {\n @apply x-button-tight x-mx-16 x-font-bold x-text-gray-900 x-w-fit x-min-h-fit x-flex x-gap-16 x-items-center;\n}\n.x-ai-overview-suggestion-query-btn-icon {\n @apply x-icon-md;\n}\n.x-ai-overview-suggestions {\n @apply x-flex x-flex-col x-gap-16 x-pb-16;\n}\n.x-ai-overview-suggestion {\n @apply x-flex x-flex-col x-gap-8;\n}\n.x-ai-overview-suggestion-results {\n @apply x-flex x-gap-16 x-px-16;\n}\n\n.x-ai-overview-suggestions-loading {\n width: 2.5rem /* 40px */;\n height: 2.5rem /* 40px */;\n margin: auto;\n animation: x-spin 1s linear infinite;\n\n @keyframes x-spin {\n to {\n transform: rotate(360deg);\n }\n }\n}\n\n.x-ai-overview-result-animation {\n opacity: 0;\n animation: x-fade 0.3s ease-in-out forwards;\n\n @keyframes x-fade {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n</style>\n"],"names":["DisplayEmitter","DisplayClickProvider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0LA,gBAAe,eAAe,CAAC;AAC7B,IAAA,UAAU,EAAE;QACV,MAAM;AACP,KAAA;IACD,OAAO,EAAE,SAAS,CAAC,IAAI;AACvB,IAAA,UAAU,EAAE;QACV,UAAU;QACV,cAAc;QACd,eAAe;QACf,eAAe;QACf,cAAc;QACd,YAAY;QACZ,IAAI;QACJ,YAAY;QACZ,WAAW;wBACXA,WAAc;8BACdC,WAAoB;AACrB,KAAA;AACD,IAAA,KAAK,EAAE;AACL;;;;AAIE;AACF,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,MAA0B;AACjC,SAAA;AACD;;;;AAIE;AACF,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,MAA0B;AAChC,YAAA,OAAO,EAAE,4BAA4B;AACtC,SAAA;AACD;;;;AAIE;AACF,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,MAA0B;AAChC,YAAA,OAAO,EAAE,WAAW;AACrB,SAAA;AACD;;;;AAIE;AACF,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,MAA0B;AAChC,YAAA,OAAO,EAAE,WAAW;AACrB,SAAA;AAED;;;;AAIE;AACF,QAAA,oBAAoB,EAAE;AACpB,YAAA,IAAI,EAAE,MAA0B;AACjC,SAAA;AACD;;;;AAIE;AACF,QAAA,6BAA6B,EAAE;AAC7B,YAAA,IAAI,EAAE,MAA0B;AACjC,SAAA;AACD;;;;AAIE;AACF,QAAA,0BAA0B,EAAE;AAC1B,YAAA,IAAI,EAAE,MAA0B;AACjC,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAA;AACT,QAAA,MAAM,EAAC,GAAI,KAAK,EAAC,CAAA;QACjB,MAAM,EAAE,KAAI,EAAI,GAAE,SAAS,CAAC,IAAI,CAAA,CAAA;QAChC,MAAM,EACJ,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,OAAO,EACP,WAAW,EACX,OAAO,GACT,GAAI,QAAQ,CAAC,IAAI,CAAA,CAAA;QAEjB,MAAM,mBAAmB,GAAmB,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAG,EAAA,CAAA;AAElE,QAAA,MAAM,QAAS,GAAE,GAAG,CAAC,KAAK,CAAA,CAAA;AAC1B,QAAA,MAAM,uBAAsB,GAAI,GAAG,CAAC,IAAI,CAAA,CAAA;QAExC,MAAM,UAAW,GAAE,QAAQ,CAAC,OAAO,QAAQ,CAAC,KAAM,GAAE,KAAK,CAAC,YAAW,GAAI,KAAK,CAAC,UAAU,CAAC,CAAA,CAAA;QAE1F,SAAS,mBAAmB,CAAC,QAAiB,EAAA;YAC5C,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,QAAQ,CAAC,KAAK,EAAE;gBAC3D,cAAc,EAAE,cAAc,CAAC,KAAK;AACpC,gBAAA,mBAAmB,EAAE,OAAO,CAAC,KAAK,EAAE,mBAAmB;AACxD,aAAA,CAAA,CAAA;YACD,WAAW,CAAC,QAAQ,CAAA,CAAA;SACtB;QAEA,SAAS,WAAW,CAAC,QAAiB,EAAA;AACpC,YAAA,QAAQ,CAAC,KAAI,GAAI,QAAO,CAAA;YACxB,CAAC,QAAQ,CAAC,KAAI,KAAM,uBAAuB,CAAC,KAAI,GAAI,KAAK,CAAA,CAAA;SAC3D;AAEA,QAAA,KAAK,CAAC,KAAK,EAAE,MAAM;AACjB,YAAA,QAAQ,CAAC,KAAI,GAAI,KAAI,CAAA;AACrB,YAAA,uBAAuB,CAAC,KAAI,GAAI,IAAG,CAAA;AACrC,SAAC,CAAA,CAAA;QAED,OAAO;YACL,UAAU;YACV,mBAAmB;YACnB,QAAQ;YACR,YAAY;YACZ,kBAAkB;YAClB,iBAAiB;YACjB,cAAc;YACd,WAAW;YACX,mBAAmB;YACnB,uBAAuB;YACvB,KAAK;YACL,OAAO;YACP,WAAW;YACX,OAAO;SACT,CAAA;KACD;AACF,CAAA,CAAA;;;;"}
|