@empathyco/x-components 6.0.5 → 6.0.7

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.
Files changed (29) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/ai/index.js +0 -1
  3. package/core/index.js.map +1 -1
  4. package/docs/API-reference/api/x-components.aigetters.md +0 -19
  5. package/docs/API-reference/api/x-components.md +0 -11
  6. package/js/index.js +0 -1
  7. package/js/index.js.map +1 -1
  8. package/js/x-modules/ai/components/ai-overview.vue.js.map +1 -1
  9. package/js/x-modules/ai/components/ai-overview.vue2.js +1 -3
  10. package/js/x-modules/ai/components/ai-overview.vue2.js.map +1 -1
  11. package/js/x-modules/ai/store/getters/suggestions-request.getter.js +1 -1
  12. package/js/x-modules/ai/store/getters/suggestions-request.getter.js.map +1 -1
  13. package/js/x-modules/ai/store/module.js +0 -2
  14. package/js/x-modules/ai/store/module.js.map +1 -1
  15. package/package.json +2 -3
  16. package/report/x-components.api.json +0 -55
  17. package/report/x-components.api.md +0 -4
  18. package/types/src/x-modules/ai/store/getters/index.d.ts +0 -1
  19. package/types/src/x-modules/ai/store/getters/index.d.ts.map +1 -1
  20. package/types/src/x-modules/ai/store/getters/suggestions-request.getter.d.ts.map +1 -1
  21. package/types/src/x-modules/ai/store/module.d.ts.map +1 -1
  22. package/types/src/x-modules/ai/store/types.d.ts +0 -2
  23. package/types/src/x-modules/ai/store/types.d.ts.map +1 -1
  24. package/docs/API-reference/api/x-components.aigetters.query.md +0 -13
  25. package/docs/API-reference/api/x-components.aiquery.md +0 -13
  26. package/js/x-modules/ai/store/getters/ai-query.getter.js +0 -19
  27. package/js/x-modules/ai/store/getters/ai-query.getter.js.map +0 -1
  28. package/types/src/x-modules/ai/store/getters/ai-query.getter.d.ts +0 -13
  29. package/types/src/x-modules/ai/store/getters/ai-query.getter.d.ts.map +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,20 @@
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.7](https://github.com/empathyco/x/compare/@empathyco/x-components@6.0.6...@empathyco/x-components@6.0.7) (2026-05-04)
7
+
8
+ ### Build System
9
+
10
+ * remove start-sever-and-test dep (#2095)
11
+
12
+
13
+ ## [6.0.6](https://github.com/empathyco/x/compare/@empathyco/x-components@6.0.5...@empathyco/x-components@6.0.6) (2026-04-22)
14
+
15
+ ### Bug Fixes
16
+
17
+ * **ai:** avoiding duplication of RTs in the query of the store (#2089)
18
+
19
+
6
20
  ## [6.0.5](https://github.com/empathyco/x/compare/@empathyco/x-components@6.0.4...@empathyco/x-components@6.0.5) (2026-04-20)
7
21
 
8
22
  **Note:** Version bump only for package @empathyco/x-components
package/ai/index.js CHANGED
@@ -5,7 +5,6 @@ export { fetchAndSaveAiSuggestions } from '../js/x-modules/ai/store/actions/fetc
5
5
  export { saveOrigin as saveAiOrigin } from '../js/x-modules/ai/store/actions/save-origin.action.js';
6
6
  export { setUrlParams as setAiUrlParams } from '../js/x-modules/ai/store/actions/set-url-params.action.js';
7
7
  export { aiEmitters } from '../js/x-modules/ai/store/emitters.js';
8
- export { query as aiQuery } from '../js/x-modules/ai/store/getters/ai-query.getter.js';
9
8
  export { suggestionsRequest as aiSuggestionsRequest } from '../js/x-modules/ai/store/getters/suggestions-request.getter.js';
10
9
  export { suggestionsSearchRequest as aiSuggestionsSearchRequest } from '../js/x-modules/ai/store/getters/suggestions-search-request.getter.js';
11
10
  export { aiXStoreModule } from '../js/x-modules/ai/store/module.js';
package/core/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -37,25 +37,6 @@ Description
37
37
  </th></tr></thead>
38
38
  <tbody><tr><td>
39
39
 
40
- [query](./x-components.aigetters.query.md)
41
-
42
-
43
- </td><td>
44
-
45
-
46
- </td><td>
47
-
48
- string
49
-
50
-
51
- </td><td>
52
-
53
- The combination of the query and the selected related tags.
54
-
55
-
56
- </td></tr>
57
- <tr><td>
58
-
59
40
  [suggestionsRequest](./x-components.aigetters.suggestionsrequest.md)
60
41
 
61
42
 
@@ -3606,17 +3606,6 @@ Saves the selectedQueryPreview query into the history queries.
3606
3606
  </td><td>
3607
3607
 
3608
3608
 
3609
- </td></tr>
3610
- <tr><td>
3611
-
3612
- [aiQuery](./x-components.aiquery.md)
3613
-
3614
-
3615
- </td><td>
3616
-
3617
- Default implementation for the related prompts query getter.
3618
-
3619
-
3620
3609
  </td></tr>
3621
3610
  <tr><td>
3622
3611
 
package/js/index.js CHANGED
@@ -207,7 +207,6 @@ export { fetchAndSaveAiSuggestions } from './x-modules/ai/store/actions/fetch-an
207
207
  export { saveOrigin as saveAiOrigin } from './x-modules/ai/store/actions/save-origin.action.js';
208
208
  export { setUrlParams as setAiUrlParams } from './x-modules/ai/store/actions/set-url-params.action.js';
209
209
  export { aiEmitters } from './x-modules/ai/store/emitters.js';
210
- export { query as aiQuery } from './x-modules/ai/store/getters/ai-query.getter.js';
211
210
  export { suggestionsRequest as aiSuggestionsRequest } from './x-modules/ai/store/getters/suggestions-request.getter.js';
212
211
  export { suggestionsSearchRequest as aiSuggestionsSearchRequest } from './x-modules/ai/store/getters/suggestions-search-request.getter.js';
213
212
  export { aiXStoreModule } from './x-modules/ai/store/module.js';
package/js/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -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\n v-if=\"!isNoResults\"\n ref=\"aiOverviewRef\"\n class=\"x-ai-overview\"\n data-test=\"ai-overview-wrapper\"\n >\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 <slot name=\"title-loading\">\n {{ titleLoading }}\n </slot>\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-wrapper\">\n <span\n v-if=\"title\"\n class=\"x-ai-overview-content-title\"\n data-test=\"ai-overview-content-title\"\n >{{ suggestionText }}\n </span>\n <div\n :class=\"contentClasses\"\n data-test=\"ai-overview-content\"\n v-html=\"parsedResponseText\"\n />\n </div>\n </ChangeHeight>\n <slot name=\"extra-content\" />\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 <SpinnerIcon\n v-if=\"!suggestionsSearch.length\"\n class=\"x-ai-overview-suggestions-loading\"\n data-test=\"ai-overview-suggestions-loading\"\n />\n <div v-else class=\"x-ai-overview-suggestions\" data-test=\"ai-overview-suggestions-container\">\n <DisplayEmitter\n v-for=\"(\n { query: suggestionQuery, results: queriesResults }, suggestionIndex\n ) in suggestionsSearch\"\n :key=\"suggestionQuery\"\n :payload=\"tagging?.searchQueries[suggestionQuery].toolingDisplay ?? emptyTaggingRequest\"\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 <slot name=\"suggestions-extra-content\" />\n </div>\n </CollapseHeight>\n </div>\n </CollapseHeight>\n</template>\n\n<script lang=\"ts\">\nimport type { TaggingRequest } from '@empathyco/x-types'\nimport { marked } from 'marked'\nimport { computed, defineComponent, onMounted, ref } from 'vue'\nimport {\n AIStarIcon,\n ArrowRightIcon,\n BaseEventButton,\n ChangeHeight,\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 CollapseHeight,\n ChangeHeight,\n Fade,\n SlidingPanel,\n SpinnerIcon,\n DisplayEmitter,\n DisplayClickProvider,\n },\n props: {\n /* The text displayed when the question ended loading */\n title: {\n type: String,\n },\n /* The text displayed when the question is loading. */\n titleLoading: {\n type: String,\n default: 'Generating with Empathy AI',\n },\n /* Auto expand the AI Overview when there are queries in AI and no-results in search. */\n autoExpandInSearchNoResults: {\n type: Boolean,\n default: true,\n },\n /* The classes added to the parsed response text container. */\n contentClasses: {\n type: String,\n },\n /* The classes added to each sliding panel for each query. */\n slidingPanelsClasses: {\n type: String,\n },\n /* The classes added to each sliding panel container of each query. */\n slidingPanelContainersClasses: {\n type: String,\n },\n /* The classes added to each sliding panel button of each query. */\n slidingPanelButtonsClasses: {\n type: String,\n },\n },\n setup() {\n const $x = use$x()\n const { query } = useGetter('ai')\n const {\n suggestionText,\n responseText,\n suggestionsSearch,\n suggestionsStatus,\n tagging,\n isNoResults,\n queries,\n } = useState('ai')\n\n const emptyTaggingRequest: TaggingRequest = { url: '', params: {} }\n\n const aiOverviewRef = ref<HTMLDivElement | null>(null)\n const expanded = ref(false)\n const shouldAnimateSuggestion = ref(true)\n const parsedResponseText = computed(() => marked.parse(responseText.value))\n\n const suggestionsLoading = computed(\n () => suggestionsStatus.value !== 'success' && suggestionsStatus.value !== 'error',\n )\n\n $x.on('AiSuggestionsRequestUpdated', false).subscribe(() => {\n expanded.value = false\n shouldAnimateSuggestion.value = true\n })\n\n onMounted(() => {\n $x.emit('AiComponentMounted', undefined, { feature: 'overview' })\n })\n\n return {\n aiOverviewRef,\n emptyTaggingRequest,\n expanded,\n parsedResponseText,\n suggestionsLoading,\n suggestionsSearch,\n suggestionText,\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 position: relative;\n border-radius: 1.5rem;\n background-color: var(--color-lighter);\n}\n\n.x-ai-overview-main {\n padding: 1rem;\n max-width: var(--x-ai-overview-main-max-width, none);\n margin: 0 auto;\n}\n\n.x-ai-overview-title {\n display: flex;\n font-size: 0.875rem;\n font-weight: 700;\n gap: 0.25rem;\n align-items: center;\n margin-bottom: 0.5rem;\n}\n\n.x-ai-overview-title-loading {\n display: flex;\n align-items: center;\n gap: 0.375rem;\n margin-bottom: 0.5rem;\n}\n\n.x-ai-overview-title-loading-indicator {\n width: 0.75rem;\n height: 0.75rem;\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n border-radius: 9999px;\n background-color: var(--color);\n}\n\n.x-ai-overview-title-loading-text {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n font-size: 0.75rem;\n}\n\n.x-ai-overview-title-icon {\n height: 1rem;\n aspect-ratio: 1 / 1;\n color: var(--color);\n flex-shrink: 0;\n}\n\n.x-ai-overview-content-wrapper {\n display: flex;\n flex-direction: column;\n text-align: left;\n line-height: 1.25rem;\n}\n\n.x-ai-overview-content-title {\n font-weight: 500;\n margin-bottom: 8px;\n}\n\n.x-ai-overview-gradient {\n border-radius: 1.5rem;\n cursor: pointer;\n content: none;\n position: absolute;\n width: 100%;\n height: 100%;\n bottom: 0;\n background-image: linear-gradient(to bottom, transparent 0%, var(--color-lighter) 100%);\n}\n\n.x-ai-overview-toggle-btn-wrapper {\n display: flex;\n justify-content: center;\n cursor: pointer;\n}\n\n.x-ai-overview-toggle-btn {\n border-color: var(--button-color-50, #283034);\n background-color: #ffffff;\n color: var(--button-color-50, #283034);\n border-radius: 9999px;\n width: 100%;\n margin: auto;\n padding-right: 1rem;\n padding-left: 1rem;\n display: flex;\n justify-content: center;\n align-items: center;\n border-style: solid;\n border-width: 1px;\n font-weight: 700;\n min-height: 2.5rem;\n gap: 0.5rem;\n font-size: 0.875rem;\n position: relative;\n}\n\n.x-ai-overview-toggle-btn:hover {\n border-color: var(--button-color-50, #283034);\n background-color: var(--button-color-50, #283034);\n color: #ffffff;\n}\n\n@media (min-width: 640px) {\n .x-ai-overview-toggle-btn {\n transition-property: all;\n transition-duration: 500ms;\n transform: translateY(50%);\n width: var(--expand-button-width, 200px);\n }\n}\n\n.x-ai-overview-toggle-btn-icon {\n transform: rotate(0deg);\n height: 1rem;\n aspect-ratio: 1 / 1;\n transition-property: all;\n transition-duration: 300ms;\n}\n\n.x-ai-overview-toggle-btn-icon-expanded {\n transform: rotate(180deg);\n}\n\n.x-ai-overview-suggestion-query-btn {\n border-color: transparent;\n background-color: transparent;\n margin-left: 1rem;\n margin-right: 1rem;\n font-weight: 700;\n width: fit-content;\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.x-ai-overview-suggestion-query-btn-icon {\n height: 1rem;\n aspect-ratio: 1 / 1;\n}\n\n.x-ai-overview-suggestions {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding-bottom: 1rem;\n}\n\n.x-ai-overview-suggestions-loading {\n width: 2.5rem;\n height: 2.5rem;\n margin: auto;\n animation: x-spin 1s linear infinite;\n}\n\n.x-ai-overview-suggestion {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.x-ai-overview-suggestion-results {\n display: flex;\n gap: 1rem;\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n@keyframes x-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n</style>\n\n<docs lang=\"mdx\">\n## AI Overview Examples\n\nThe `ai-overview` component provides an AI-generated summary and suggestions for queries.\n\n### Basic usage\n\n```vue\n<template>\n <AiOverview\n :title=\"'AI Overview'\"\n :title-loading=\"'Generating with Empathy AI'\"\n :expand-text=\"'Show more'\"\n :collapse-text=\"'Show less'\"\n :content-classes=\"'my-content-class'\"\n :sliding-panels-classes=\"'my-sliding-panel-class'\"\n :sliding-panel-containers-classes=\"'my-sliding-panel-container-class'\"\n :sliding-panel-buttons-classes=\"'my-sliding-panel-button-class'\"\n >\n <template #result=\"{ result }\">\n <ResultCard :result=\"result\" />\n </template>\n </AiOverview>\n</template>\n\n<script setup>\nimport AiOverview from '@empathyco/x-components/js/x-modules/ai/components/ai-overview.vue'\nimport ResultCard from './ResultCard.vue'\n</script>\n```\n\n### Customizing slots\n\nYou can customize the loading title, extra content, and sliding panel slots:\n\n```vue\n<template>\n <AiOverview\n :title=\"'AI Overview'\"\n :title-loading=\"'Loading... Please wait'\"\n :expand-text=\"'Show more'\"\n :collapse-text=\"'Show less'\"\n >\n <template #title-loading>\n <span>Custom loading title...</span>\n </template>\n <template #extra-content>\n <div>Extra content below the main overview</div>\n </template>\n <template #sliding-panels-addons=\"{ arrivedState }\">\n <span v-if=\"arrivedState.left\">Left end reached</span>\n <span v-if=\"arrivedState.right\">Right end reached</span>\n </template>\n <template #result=\"{ result }\">\n <ResultCard :result=\"result\" />\n </template>\n </AiOverview>\n</template>\n\n<script setup>\nimport AiOverview from '@empathyco/x-components/js/x-modules/ai/components/ai-overview.vue'\nimport ResultCard from './ResultCard.vue'\n</script>\n```\n</docs>\n"],"names":["_createBlock","_withCtx","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_renderSlot","_createTextVNode","_toDisplayString","_createCommentVNode","_normalizeClass","_normalizeStyle","_Fragment","_renderList"],"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\n v-if=\"!isNoResults\"\n ref=\"aiOverviewRef\"\n class=\"x-ai-overview\"\n data-test=\"ai-overview-wrapper\"\n >\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 <slot name=\"title-loading\">\n {{ titleLoading }}\n </slot>\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-wrapper\">\n <span\n v-if=\"title\"\n class=\"x-ai-overview-content-title\"\n data-test=\"ai-overview-content-title\"\n >{{ suggestionText }}\n </span>\n <div\n :class=\"contentClasses\"\n data-test=\"ai-overview-content\"\n v-html=\"parsedResponseText\"\n />\n </div>\n </ChangeHeight>\n <slot name=\"extra-content\" />\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 <SpinnerIcon\n v-if=\"!suggestionsSearch.length\"\n class=\"x-ai-overview-suggestions-loading\"\n data-test=\"ai-overview-suggestions-loading\"\n />\n <div v-else class=\"x-ai-overview-suggestions\" data-test=\"ai-overview-suggestions-container\">\n <DisplayEmitter\n v-for=\"(\n { query: suggestionQuery, results: queriesResults }, suggestionIndex\n ) in suggestionsSearch\"\n :key=\"suggestionQuery\"\n :payload=\"tagging?.searchQueries[suggestionQuery].toolingDisplay ?? emptyTaggingRequest\"\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 <slot name=\"suggestions-extra-content\" />\n </div>\n </CollapseHeight>\n </div>\n </CollapseHeight>\n</template>\n\n<script lang=\"ts\">\nimport type { TaggingRequest } from '@empathyco/x-types'\nimport { marked } from 'marked'\nimport { computed, defineComponent, onMounted, ref } from 'vue'\nimport {\n AIStarIcon,\n ArrowRightIcon,\n BaseEventButton,\n ChangeHeight,\n CollapseHeight,\n DisplayClickProvider,\n Fade,\n SlidingPanel,\n SpinnerIcon,\n} from '../../../components'\nimport DisplayEmitter from '../../../components/display-emitter.vue'\nimport { use$x, 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 CollapseHeight,\n ChangeHeight,\n Fade,\n SlidingPanel,\n SpinnerIcon,\n DisplayEmitter,\n DisplayClickProvider,\n },\n props: {\n /* The text displayed when the question ended loading */\n title: {\n type: String,\n },\n /* The text displayed when the question is loading. */\n titleLoading: {\n type: String,\n default: 'Generating with Empathy AI',\n },\n /* Auto expand the AI Overview when there are queries in AI and no-results in search. */\n autoExpandInSearchNoResults: {\n type: Boolean,\n default: true,\n },\n /* The classes added to the parsed response text container. */\n contentClasses: {\n type: String,\n },\n /* The classes added to each sliding panel for each query. */\n slidingPanelsClasses: {\n type: String,\n },\n /* The classes added to each sliding panel container of each query. */\n slidingPanelContainersClasses: {\n type: String,\n },\n /* The classes added to each sliding panel button of each query. */\n slidingPanelButtonsClasses: {\n type: String,\n },\n },\n setup() {\n const $x = use$x()\n const {\n suggestionText,\n responseText,\n suggestionsSearch,\n suggestionsStatus,\n tagging,\n isNoResults,\n queries,\n query,\n } = useState('ai')\n\n const emptyTaggingRequest: TaggingRequest = { url: '', params: {} }\n\n const aiOverviewRef = ref<HTMLDivElement | null>(null)\n const expanded = ref(false)\n const shouldAnimateSuggestion = ref(true)\n const parsedResponseText = computed(() => marked.parse(responseText.value))\n\n const suggestionsLoading = computed(\n () => suggestionsStatus.value !== 'success' && suggestionsStatus.value !== 'error',\n )\n\n $x.on('AiSuggestionsRequestUpdated', false).subscribe(() => {\n expanded.value = false\n shouldAnimateSuggestion.value = true\n })\n\n onMounted(() => {\n $x.emit('AiComponentMounted', undefined, { feature: 'overview' })\n })\n\n return {\n aiOverviewRef,\n emptyTaggingRequest,\n expanded,\n parsedResponseText,\n suggestionsLoading,\n suggestionsSearch,\n suggestionText,\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 position: relative;\n border-radius: 1.5rem;\n background-color: var(--color-lighter);\n}\n\n.x-ai-overview-main {\n padding: 1rem;\n max-width: var(--x-ai-overview-main-max-width, none);\n margin: 0 auto;\n}\n\n.x-ai-overview-title {\n display: flex;\n font-size: 0.875rem;\n font-weight: 700;\n gap: 0.25rem;\n align-items: center;\n margin-bottom: 0.5rem;\n}\n\n.x-ai-overview-title-loading {\n display: flex;\n align-items: center;\n gap: 0.375rem;\n margin-bottom: 0.5rem;\n}\n\n.x-ai-overview-title-loading-indicator {\n width: 0.75rem;\n height: 0.75rem;\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n border-radius: 9999px;\n background-color: var(--color);\n}\n\n.x-ai-overview-title-loading-text {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n font-size: 0.75rem;\n}\n\n.x-ai-overview-title-icon {\n height: 1rem;\n aspect-ratio: 1 / 1;\n color: var(--color);\n flex-shrink: 0;\n}\n\n.x-ai-overview-content-wrapper {\n display: flex;\n flex-direction: column;\n text-align: left;\n line-height: 1.25rem;\n}\n\n.x-ai-overview-content-title {\n font-weight: 500;\n margin-bottom: 8px;\n}\n\n.x-ai-overview-gradient {\n border-radius: 1.5rem;\n cursor: pointer;\n content: none;\n position: absolute;\n width: 100%;\n height: 100%;\n bottom: 0;\n background-image: linear-gradient(to bottom, transparent 0%, var(--color-lighter) 100%);\n}\n\n.x-ai-overview-toggle-btn-wrapper {\n display: flex;\n justify-content: center;\n cursor: pointer;\n}\n\n.x-ai-overview-toggle-btn {\n border-color: var(--button-color-50, #283034);\n background-color: #ffffff;\n color: var(--button-color-50, #283034);\n border-radius: 9999px;\n width: 100%;\n margin: auto;\n padding-right: 1rem;\n padding-left: 1rem;\n display: flex;\n justify-content: center;\n align-items: center;\n border-style: solid;\n border-width: 1px;\n font-weight: 700;\n min-height: 2.5rem;\n gap: 0.5rem;\n font-size: 0.875rem;\n position: relative;\n}\n\n.x-ai-overview-toggle-btn:hover {\n border-color: var(--button-color-50, #283034);\n background-color: var(--button-color-50, #283034);\n color: #ffffff;\n}\n\n@media (min-width: 640px) {\n .x-ai-overview-toggle-btn {\n transition-property: all;\n transition-duration: 500ms;\n transform: translateY(50%);\n width: var(--expand-button-width, 200px);\n }\n}\n\n.x-ai-overview-toggle-btn-icon {\n transform: rotate(0deg);\n height: 1rem;\n aspect-ratio: 1 / 1;\n transition-property: all;\n transition-duration: 300ms;\n}\n\n.x-ai-overview-toggle-btn-icon-expanded {\n transform: rotate(180deg);\n}\n\n.x-ai-overview-suggestion-query-btn {\n border-color: transparent;\n background-color: transparent;\n margin-left: 1rem;\n margin-right: 1rem;\n font-weight: 700;\n width: fit-content;\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.x-ai-overview-suggestion-query-btn-icon {\n height: 1rem;\n aspect-ratio: 1 / 1;\n}\n\n.x-ai-overview-suggestions {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding-bottom: 1rem;\n}\n\n.x-ai-overview-suggestions-loading {\n width: 2.5rem;\n height: 2.5rem;\n margin: auto;\n animation: x-spin 1s linear infinite;\n}\n\n.x-ai-overview-suggestion {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.x-ai-overview-suggestion-results {\n display: flex;\n gap: 1rem;\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n@keyframes x-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n</style>\n\n<docs lang=\"mdx\">\n## AI Overview Examples\n\nThe `ai-overview` component provides an AI-generated summary and suggestions for queries.\n\n### Basic usage\n\n```vue\n<template>\n <AiOverview\n :title=\"'AI Overview'\"\n :title-loading=\"'Generating with Empathy AI'\"\n :expand-text=\"'Show more'\"\n :collapse-text=\"'Show less'\"\n :content-classes=\"'my-content-class'\"\n :sliding-panels-classes=\"'my-sliding-panel-class'\"\n :sliding-panel-containers-classes=\"'my-sliding-panel-container-class'\"\n :sliding-panel-buttons-classes=\"'my-sliding-panel-button-class'\"\n >\n <template #result=\"{ result }\">\n <ResultCard :result=\"result\" />\n </template>\n </AiOverview>\n</template>\n\n<script setup>\nimport AiOverview from '@empathyco/x-components/js/x-modules/ai/components/ai-overview.vue'\nimport ResultCard from './ResultCard.vue'\n</script>\n```\n\n### Customizing slots\n\nYou can customize the loading title, extra content, and sliding panel slots:\n\n```vue\n<template>\n <AiOverview\n :title=\"'AI Overview'\"\n :title-loading=\"'Loading... Please wait'\"\n :expand-text=\"'Show more'\"\n :collapse-text=\"'Show less'\"\n >\n <template #title-loading>\n <span>Custom loading title...</span>\n </template>\n <template #extra-content>\n <div>Extra content below the main overview</div>\n </template>\n <template #sliding-panels-addons=\"{ arrivedState }\">\n <span v-if=\"arrivedState.left\">Left end reached</span>\n <span v-if=\"arrivedState.right\">Right end reached</span>\n </template>\n <template #result=\"{ result }\">\n <ResultCard :result=\"result\" />\n </template>\n </AiOverview>\n</template>\n\n<script setup>\nimport AiOverview from '@empathyco/x-components/js/x-modules/ai/components/ai-overview.vue'\nimport ResultCard from './ResultCard.vue'\n</script>\n```\n</docs>\n"],"names":["_createBlock","_withCtx","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_renderSlot","_createTextVNode","_toDisplayString","_createCommentVNode","_normalizeClass","_normalizeStyle","_Fragment","_renderList"],"mappings":"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"}
@@ -93,7 +93,6 @@ import '../../../composables/create-use-device.js';
93
93
  import 'vuex';
94
94
  import '../../../plugins/x-bus.js';
95
95
  import '../../../plugins/x-plugin.js';
96
- import { useGetter } from '../../../composables/use-getter.js';
97
96
  import '@vueuse/core';
98
97
  import 'rxjs';
99
98
  import { useState } from '../../../composables/use-state.js';
@@ -151,8 +150,7 @@ var _sfc_main = defineComponent({
151
150
  },
152
151
  setup() {
153
152
  const $x = use$x();
154
- const { query } = useGetter('ai');
155
- const { suggestionText, responseText, suggestionsSearch, suggestionsStatus, tagging, isNoResults, queries, } = useState('ai');
153
+ const { suggestionText, responseText, suggestionsSearch, suggestionsStatus, tagging, isNoResults, queries, query, } = useState('ai');
156
154
  const emptyTaggingRequest = { url: '', params: {} };
157
155
  const aiOverviewRef = ref(null);
158
156
  const expanded = ref(false);
@@ -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\n v-if=\"!isNoResults\"\n ref=\"aiOverviewRef\"\n class=\"x-ai-overview\"\n data-test=\"ai-overview-wrapper\"\n >\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 <slot name=\"title-loading\">\n {{ titleLoading }}\n </slot>\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-wrapper\">\n <span\n v-if=\"title\"\n class=\"x-ai-overview-content-title\"\n data-test=\"ai-overview-content-title\"\n >{{ suggestionText }}\n </span>\n <div\n :class=\"contentClasses\"\n data-test=\"ai-overview-content\"\n v-html=\"parsedResponseText\"\n />\n </div>\n </ChangeHeight>\n <slot name=\"extra-content\" />\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 <SpinnerIcon\n v-if=\"!suggestionsSearch.length\"\n class=\"x-ai-overview-suggestions-loading\"\n data-test=\"ai-overview-suggestions-loading\"\n />\n <div v-else class=\"x-ai-overview-suggestions\" data-test=\"ai-overview-suggestions-container\">\n <DisplayEmitter\n v-for=\"(\n { query: suggestionQuery, results: queriesResults }, suggestionIndex\n ) in suggestionsSearch\"\n :key=\"suggestionQuery\"\n :payload=\"tagging?.searchQueries[suggestionQuery].toolingDisplay ?? emptyTaggingRequest\"\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 <slot name=\"suggestions-extra-content\" />\n </div>\n </CollapseHeight>\n </div>\n </CollapseHeight>\n</template>\n\n<script lang=\"ts\">\nimport type { TaggingRequest } from '@empathyco/x-types'\nimport { marked } from 'marked'\nimport { computed, defineComponent, onMounted, ref } from 'vue'\nimport {\n AIStarIcon,\n ArrowRightIcon,\n BaseEventButton,\n ChangeHeight,\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 CollapseHeight,\n ChangeHeight,\n Fade,\n SlidingPanel,\n SpinnerIcon,\n DisplayEmitter,\n DisplayClickProvider,\n },\n props: {\n /* The text displayed when the question ended loading */\n title: {\n type: String,\n },\n /* The text displayed when the question is loading. */\n titleLoading: {\n type: String,\n default: 'Generating with Empathy AI',\n },\n /* Auto expand the AI Overview when there are queries in AI and no-results in search. */\n autoExpandInSearchNoResults: {\n type: Boolean,\n default: true,\n },\n /* The classes added to the parsed response text container. */\n contentClasses: {\n type: String,\n },\n /* The classes added to each sliding panel for each query. */\n slidingPanelsClasses: {\n type: String,\n },\n /* The classes added to each sliding panel container of each query. */\n slidingPanelContainersClasses: {\n type: String,\n },\n /* The classes added to each sliding panel button of each query. */\n slidingPanelButtonsClasses: {\n type: String,\n },\n },\n setup() {\n const $x = use$x()\n const { query } = useGetter('ai')\n const {\n suggestionText,\n responseText,\n suggestionsSearch,\n suggestionsStatus,\n tagging,\n isNoResults,\n queries,\n } = useState('ai')\n\n const emptyTaggingRequest: TaggingRequest = { url: '', params: {} }\n\n const aiOverviewRef = ref<HTMLDivElement | null>(null)\n const expanded = ref(false)\n const shouldAnimateSuggestion = ref(true)\n const parsedResponseText = computed(() => marked.parse(responseText.value))\n\n const suggestionsLoading = computed(\n () => suggestionsStatus.value !== 'success' && suggestionsStatus.value !== 'error',\n )\n\n $x.on('AiSuggestionsRequestUpdated', false).subscribe(() => {\n expanded.value = false\n shouldAnimateSuggestion.value = true\n })\n\n onMounted(() => {\n $x.emit('AiComponentMounted', undefined, { feature: 'overview' })\n })\n\n return {\n aiOverviewRef,\n emptyTaggingRequest,\n expanded,\n parsedResponseText,\n suggestionsLoading,\n suggestionsSearch,\n suggestionText,\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 position: relative;\n border-radius: 1.5rem;\n background-color: var(--color-lighter);\n}\n\n.x-ai-overview-main {\n padding: 1rem;\n max-width: var(--x-ai-overview-main-max-width, none);\n margin: 0 auto;\n}\n\n.x-ai-overview-title {\n display: flex;\n font-size: 0.875rem;\n font-weight: 700;\n gap: 0.25rem;\n align-items: center;\n margin-bottom: 0.5rem;\n}\n\n.x-ai-overview-title-loading {\n display: flex;\n align-items: center;\n gap: 0.375rem;\n margin-bottom: 0.5rem;\n}\n\n.x-ai-overview-title-loading-indicator {\n width: 0.75rem;\n height: 0.75rem;\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n border-radius: 9999px;\n background-color: var(--color);\n}\n\n.x-ai-overview-title-loading-text {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n font-size: 0.75rem;\n}\n\n.x-ai-overview-title-icon {\n height: 1rem;\n aspect-ratio: 1 / 1;\n color: var(--color);\n flex-shrink: 0;\n}\n\n.x-ai-overview-content-wrapper {\n display: flex;\n flex-direction: column;\n text-align: left;\n line-height: 1.25rem;\n}\n\n.x-ai-overview-content-title {\n font-weight: 500;\n margin-bottom: 8px;\n}\n\n.x-ai-overview-gradient {\n border-radius: 1.5rem;\n cursor: pointer;\n content: none;\n position: absolute;\n width: 100%;\n height: 100%;\n bottom: 0;\n background-image: linear-gradient(to bottom, transparent 0%, var(--color-lighter) 100%);\n}\n\n.x-ai-overview-toggle-btn-wrapper {\n display: flex;\n justify-content: center;\n cursor: pointer;\n}\n\n.x-ai-overview-toggle-btn {\n border-color: var(--button-color-50, #283034);\n background-color: #ffffff;\n color: var(--button-color-50, #283034);\n border-radius: 9999px;\n width: 100%;\n margin: auto;\n padding-right: 1rem;\n padding-left: 1rem;\n display: flex;\n justify-content: center;\n align-items: center;\n border-style: solid;\n border-width: 1px;\n font-weight: 700;\n min-height: 2.5rem;\n gap: 0.5rem;\n font-size: 0.875rem;\n position: relative;\n}\n\n.x-ai-overview-toggle-btn:hover {\n border-color: var(--button-color-50, #283034);\n background-color: var(--button-color-50, #283034);\n color: #ffffff;\n}\n\n@media (min-width: 640px) {\n .x-ai-overview-toggle-btn {\n transition-property: all;\n transition-duration: 500ms;\n transform: translateY(50%);\n width: var(--expand-button-width, 200px);\n }\n}\n\n.x-ai-overview-toggle-btn-icon {\n transform: rotate(0deg);\n height: 1rem;\n aspect-ratio: 1 / 1;\n transition-property: all;\n transition-duration: 300ms;\n}\n\n.x-ai-overview-toggle-btn-icon-expanded {\n transform: rotate(180deg);\n}\n\n.x-ai-overview-suggestion-query-btn {\n border-color: transparent;\n background-color: transparent;\n margin-left: 1rem;\n margin-right: 1rem;\n font-weight: 700;\n width: fit-content;\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.x-ai-overview-suggestion-query-btn-icon {\n height: 1rem;\n aspect-ratio: 1 / 1;\n}\n\n.x-ai-overview-suggestions {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding-bottom: 1rem;\n}\n\n.x-ai-overview-suggestions-loading {\n width: 2.5rem;\n height: 2.5rem;\n margin: auto;\n animation: x-spin 1s linear infinite;\n}\n\n.x-ai-overview-suggestion {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.x-ai-overview-suggestion-results {\n display: flex;\n gap: 1rem;\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n@keyframes x-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n</style>\n\n<docs lang=\"mdx\">\n## AI Overview Examples\n\nThe `ai-overview` component provides an AI-generated summary and suggestions for queries.\n\n### Basic usage\n\n```vue\n<template>\n <AiOverview\n :title=\"'AI Overview'\"\n :title-loading=\"'Generating with Empathy AI'\"\n :expand-text=\"'Show more'\"\n :collapse-text=\"'Show less'\"\n :content-classes=\"'my-content-class'\"\n :sliding-panels-classes=\"'my-sliding-panel-class'\"\n :sliding-panel-containers-classes=\"'my-sliding-panel-container-class'\"\n :sliding-panel-buttons-classes=\"'my-sliding-panel-button-class'\"\n >\n <template #result=\"{ result }\">\n <ResultCard :result=\"result\" />\n </template>\n </AiOverview>\n</template>\n\n<script setup>\nimport AiOverview from '@empathyco/x-components/js/x-modules/ai/components/ai-overview.vue'\nimport ResultCard from './ResultCard.vue'\n</script>\n```\n\n### Customizing slots\n\nYou can customize the loading title, extra content, and sliding panel slots:\n\n```vue\n<template>\n <AiOverview\n :title=\"'AI Overview'\"\n :title-loading=\"'Loading... Please wait'\"\n :expand-text=\"'Show more'\"\n :collapse-text=\"'Show less'\"\n >\n <template #title-loading>\n <span>Custom loading title...</span>\n </template>\n <template #extra-content>\n <div>Extra content below the main overview</div>\n </template>\n <template #sliding-panels-addons=\"{ arrivedState }\">\n <span v-if=\"arrivedState.left\">Left end reached</span>\n <span v-if=\"arrivedState.right\">Right end reached</span>\n </template>\n <template #result=\"{ result }\">\n <ResultCard :result=\"result\" />\n </template>\n </AiOverview>\n</template>\n\n<script setup>\nimport AiOverview from '@empathyco/x-components/js/x-modules/ai/components/ai-overview.vue'\nimport ResultCard from './ResultCard.vue'\n</script>\n```\n</docs>\n"],"names":["DisplayEmitter","DisplayClickProvider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2KA,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,cAAc;QACd,YAAY;QACZ,IAAI;QACJ,YAAY;QACZ,WAAW;wBACXA,WAAc;8BACdC,WAAoB;AACrB,KAAA;AACD,IAAA,KAAK,EAAE;;AAEL,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,MAAM;AACb,SAAA;;AAED,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,4BAA4B;AACtC,SAAA;;AAED,QAAA,2BAA2B,EAAE;AAC3B,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE,IAAI;AACd,SAAA;;AAED,QAAA,cAAc,EAAE;AACd,YAAA,IAAI,EAAE,MAAM;AACb,SAAA;;AAED,QAAA,oBAAoB,EAAE;AACpB,YAAA,IAAI,EAAE,MAAM;AACb,SAAA;;AAED,QAAA,6BAA6B,EAAE;AAC7B,YAAA,IAAI,EAAE,MAAM;AACb,SAAA;;AAED,QAAA,0BAA0B,EAAE;AAC1B,YAAA,IAAI,EAAE,MAAM;AACb,SAAA;AACF,KAAA;IACD,KAAK,GAAA;AACH,QAAA,MAAM,EAAC,GAAI,KAAK,EAAC;QACjB,MAAM,EAAE,KAAI,EAAE,GAAI,SAAS,CAAC,IAAI,CAAA;QAChC,MAAM,EACJ,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,OAAO,GACT,GAAI,QAAQ,CAAC,IAAI,CAAA;QAEjB,MAAM,mBAAmB,GAAmB,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAC,EAAE;AAElE,QAAA,MAAM,gBAAgB,GAAG,CAAwB,IAAI,CAAA;AACrD,QAAA,MAAM,QAAO,GAAI,GAAG,CAAC,KAAK,CAAA;AAC1B,QAAA,MAAM,uBAAsB,GAAI,GAAG,CAAC,IAAI,CAAA;AACxC,QAAA,MAAM,qBAAqB,QAAQ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AAE1E,QAAA,MAAM,kBAAiB,GAAI,QAAQ,CACjC,MAAM,iBAAiB,CAAC,KAAI,KAAM,SAAQ,IAAK,iBAAiB,CAAC,KAAI,KAAM,OAAO,CACpF;QAEA,EAAE,CAAC,EAAE,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,MAAI;AACxD,YAAA,QAAQ,CAAC,KAAI,GAAI,KAAI;AACrB,YAAA,uBAAuB,CAAC,KAAI,GAAI,IAAG;AACrC,QAAA,CAAC,CAAA;QAED,SAAS,CAAC,MAAI;AACZ,YAAA,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,UAAS,EAAG,CAAA;AAClE,QAAA,CAAC,CAAA;QAED,OAAO;YACL,aAAa;YACb,mBAAmB;YACnB,QAAQ;YACR,kBAAkB;YAClB,kBAAkB;YAClB,iBAAiB;YACjB,cAAc;YACd,uBAAuB;YACvB,KAAK;YACL,OAAO;YACP,WAAW;YACX,OAAO;SACT;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"ai-overview.vue2.js","sources":["../../../../../src/x-modules/ai/components/ai-overview.vue"],"sourcesContent":["<template>\n <CollapseHeight>\n <div\n v-if=\"!isNoResults\"\n ref=\"aiOverviewRef\"\n class=\"x-ai-overview\"\n data-test=\"ai-overview-wrapper\"\n >\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 <slot name=\"title-loading\">\n {{ titleLoading }}\n </slot>\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-wrapper\">\n <span\n v-if=\"title\"\n class=\"x-ai-overview-content-title\"\n data-test=\"ai-overview-content-title\"\n >{{ suggestionText }}\n </span>\n <div\n :class=\"contentClasses\"\n data-test=\"ai-overview-content\"\n v-html=\"parsedResponseText\"\n />\n </div>\n </ChangeHeight>\n <slot name=\"extra-content\" />\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 <SpinnerIcon\n v-if=\"!suggestionsSearch.length\"\n class=\"x-ai-overview-suggestions-loading\"\n data-test=\"ai-overview-suggestions-loading\"\n />\n <div v-else class=\"x-ai-overview-suggestions\" data-test=\"ai-overview-suggestions-container\">\n <DisplayEmitter\n v-for=\"(\n { query: suggestionQuery, results: queriesResults }, suggestionIndex\n ) in suggestionsSearch\"\n :key=\"suggestionQuery\"\n :payload=\"tagging?.searchQueries[suggestionQuery].toolingDisplay ?? emptyTaggingRequest\"\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 <slot name=\"suggestions-extra-content\" />\n </div>\n </CollapseHeight>\n </div>\n </CollapseHeight>\n</template>\n\n<script lang=\"ts\">\nimport type { TaggingRequest } from '@empathyco/x-types'\nimport { marked } from 'marked'\nimport { computed, defineComponent, onMounted, ref } from 'vue'\nimport {\n AIStarIcon,\n ArrowRightIcon,\n BaseEventButton,\n ChangeHeight,\n CollapseHeight,\n DisplayClickProvider,\n Fade,\n SlidingPanel,\n SpinnerIcon,\n} from '../../../components'\nimport DisplayEmitter from '../../../components/display-emitter.vue'\nimport { use$x, 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 CollapseHeight,\n ChangeHeight,\n Fade,\n SlidingPanel,\n SpinnerIcon,\n DisplayEmitter,\n DisplayClickProvider,\n },\n props: {\n /* The text displayed when the question ended loading */\n title: {\n type: String,\n },\n /* The text displayed when the question is loading. */\n titleLoading: {\n type: String,\n default: 'Generating with Empathy AI',\n },\n /* Auto expand the AI Overview when there are queries in AI and no-results in search. */\n autoExpandInSearchNoResults: {\n type: Boolean,\n default: true,\n },\n /* The classes added to the parsed response text container. */\n contentClasses: {\n type: String,\n },\n /* The classes added to each sliding panel for each query. */\n slidingPanelsClasses: {\n type: String,\n },\n /* The classes added to each sliding panel container of each query. */\n slidingPanelContainersClasses: {\n type: String,\n },\n /* The classes added to each sliding panel button of each query. */\n slidingPanelButtonsClasses: {\n type: String,\n },\n },\n setup() {\n const $x = use$x()\n const {\n suggestionText,\n responseText,\n suggestionsSearch,\n suggestionsStatus,\n tagging,\n isNoResults,\n queries,\n query,\n } = useState('ai')\n\n const emptyTaggingRequest: TaggingRequest = { url: '', params: {} }\n\n const aiOverviewRef = ref<HTMLDivElement | null>(null)\n const expanded = ref(false)\n const shouldAnimateSuggestion = ref(true)\n const parsedResponseText = computed(() => marked.parse(responseText.value))\n\n const suggestionsLoading = computed(\n () => suggestionsStatus.value !== 'success' && suggestionsStatus.value !== 'error',\n )\n\n $x.on('AiSuggestionsRequestUpdated', false).subscribe(() => {\n expanded.value = false\n shouldAnimateSuggestion.value = true\n })\n\n onMounted(() => {\n $x.emit('AiComponentMounted', undefined, { feature: 'overview' })\n })\n\n return {\n aiOverviewRef,\n emptyTaggingRequest,\n expanded,\n parsedResponseText,\n suggestionsLoading,\n suggestionsSearch,\n suggestionText,\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 position: relative;\n border-radius: 1.5rem;\n background-color: var(--color-lighter);\n}\n\n.x-ai-overview-main {\n padding: 1rem;\n max-width: var(--x-ai-overview-main-max-width, none);\n margin: 0 auto;\n}\n\n.x-ai-overview-title {\n display: flex;\n font-size: 0.875rem;\n font-weight: 700;\n gap: 0.25rem;\n align-items: center;\n margin-bottom: 0.5rem;\n}\n\n.x-ai-overview-title-loading {\n display: flex;\n align-items: center;\n gap: 0.375rem;\n margin-bottom: 0.5rem;\n}\n\n.x-ai-overview-title-loading-indicator {\n width: 0.75rem;\n height: 0.75rem;\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n border-radius: 9999px;\n background-color: var(--color);\n}\n\n.x-ai-overview-title-loading-text {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n font-size: 0.75rem;\n}\n\n.x-ai-overview-title-icon {\n height: 1rem;\n aspect-ratio: 1 / 1;\n color: var(--color);\n flex-shrink: 0;\n}\n\n.x-ai-overview-content-wrapper {\n display: flex;\n flex-direction: column;\n text-align: left;\n line-height: 1.25rem;\n}\n\n.x-ai-overview-content-title {\n font-weight: 500;\n margin-bottom: 8px;\n}\n\n.x-ai-overview-gradient {\n border-radius: 1.5rem;\n cursor: pointer;\n content: none;\n position: absolute;\n width: 100%;\n height: 100%;\n bottom: 0;\n background-image: linear-gradient(to bottom, transparent 0%, var(--color-lighter) 100%);\n}\n\n.x-ai-overview-toggle-btn-wrapper {\n display: flex;\n justify-content: center;\n cursor: pointer;\n}\n\n.x-ai-overview-toggle-btn {\n border-color: var(--button-color-50, #283034);\n background-color: #ffffff;\n color: var(--button-color-50, #283034);\n border-radius: 9999px;\n width: 100%;\n margin: auto;\n padding-right: 1rem;\n padding-left: 1rem;\n display: flex;\n justify-content: center;\n align-items: center;\n border-style: solid;\n border-width: 1px;\n font-weight: 700;\n min-height: 2.5rem;\n gap: 0.5rem;\n font-size: 0.875rem;\n position: relative;\n}\n\n.x-ai-overview-toggle-btn:hover {\n border-color: var(--button-color-50, #283034);\n background-color: var(--button-color-50, #283034);\n color: #ffffff;\n}\n\n@media (min-width: 640px) {\n .x-ai-overview-toggle-btn {\n transition-property: all;\n transition-duration: 500ms;\n transform: translateY(50%);\n width: var(--expand-button-width, 200px);\n }\n}\n\n.x-ai-overview-toggle-btn-icon {\n transform: rotate(0deg);\n height: 1rem;\n aspect-ratio: 1 / 1;\n transition-property: all;\n transition-duration: 300ms;\n}\n\n.x-ai-overview-toggle-btn-icon-expanded {\n transform: rotate(180deg);\n}\n\n.x-ai-overview-suggestion-query-btn {\n border-color: transparent;\n background-color: transparent;\n margin-left: 1rem;\n margin-right: 1rem;\n font-weight: 700;\n width: fit-content;\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.x-ai-overview-suggestion-query-btn-icon {\n height: 1rem;\n aspect-ratio: 1 / 1;\n}\n\n.x-ai-overview-suggestions {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding-bottom: 1rem;\n}\n\n.x-ai-overview-suggestions-loading {\n width: 2.5rem;\n height: 2.5rem;\n margin: auto;\n animation: x-spin 1s linear infinite;\n}\n\n.x-ai-overview-suggestion {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.x-ai-overview-suggestion-results {\n display: flex;\n gap: 1rem;\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n@keyframes x-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n</style>\n\n<docs lang=\"mdx\">\n## AI Overview Examples\n\nThe `ai-overview` component provides an AI-generated summary and suggestions for queries.\n\n### Basic usage\n\n```vue\n<template>\n <AiOverview\n :title=\"'AI Overview'\"\n :title-loading=\"'Generating with Empathy AI'\"\n :expand-text=\"'Show more'\"\n :collapse-text=\"'Show less'\"\n :content-classes=\"'my-content-class'\"\n :sliding-panels-classes=\"'my-sliding-panel-class'\"\n :sliding-panel-containers-classes=\"'my-sliding-panel-container-class'\"\n :sliding-panel-buttons-classes=\"'my-sliding-panel-button-class'\"\n >\n <template #result=\"{ result }\">\n <ResultCard :result=\"result\" />\n </template>\n </AiOverview>\n</template>\n\n<script setup>\nimport AiOverview from '@empathyco/x-components/js/x-modules/ai/components/ai-overview.vue'\nimport ResultCard from './ResultCard.vue'\n</script>\n```\n\n### Customizing slots\n\nYou can customize the loading title, extra content, and sliding panel slots:\n\n```vue\n<template>\n <AiOverview\n :title=\"'AI Overview'\"\n :title-loading=\"'Loading... Please wait'\"\n :expand-text=\"'Show more'\"\n :collapse-text=\"'Show less'\"\n >\n <template #title-loading>\n <span>Custom loading title...</span>\n </template>\n <template #extra-content>\n <div>Extra content below the main overview</div>\n </template>\n <template #sliding-panels-addons=\"{ arrivedState }\">\n <span v-if=\"arrivedState.left\">Left end reached</span>\n <span v-if=\"arrivedState.right\">Right end reached</span>\n </template>\n <template #result=\"{ result }\">\n <ResultCard :result=\"result\" />\n </template>\n </AiOverview>\n</template>\n\n<script setup>\nimport AiOverview from '@empathyco/x-components/js/x-modules/ai/components/ai-overview.vue'\nimport ResultCard from './ResultCard.vue'\n</script>\n```\n</docs>\n"],"names":["DisplayEmitter","DisplayClickProvider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2KA,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,cAAc;QACd,YAAY;QACZ,IAAI;QACJ,YAAY;QACZ,WAAW;wBACXA,WAAc;8BACdC,WAAoB;AACrB,KAAA;AACD,IAAA,KAAK,EAAE;;AAEL,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,MAAM;AACb,SAAA;;AAED,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,4BAA4B;AACtC,SAAA;;AAED,QAAA,2BAA2B,EAAE;AAC3B,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE,IAAI;AACd,SAAA;;AAED,QAAA,cAAc,EAAE;AACd,YAAA,IAAI,EAAE,MAAM;AACb,SAAA;;AAED,QAAA,oBAAoB,EAAE;AACpB,YAAA,IAAI,EAAE,MAAM;AACb,SAAA;;AAED,QAAA,6BAA6B,EAAE;AAC7B,YAAA,IAAI,EAAE,MAAM;AACb,SAAA;;AAED,QAAA,0BAA0B,EAAE;AAC1B,YAAA,IAAI,EAAE,MAAM;AACb,SAAA;AACF,KAAA;IACD,KAAK,GAAA;AACH,QAAA,MAAM,EAAC,GAAI,KAAK,EAAC;QACjB,MAAM,EACJ,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,OAAO,EACP,KAAK,GACP,GAAI,QAAQ,CAAC,IAAI,CAAA;QAEjB,MAAM,mBAAmB,GAAmB,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAC,EAAE;AAElE,QAAA,MAAM,gBAAgB,GAAG,CAAwB,IAAI,CAAA;AACrD,QAAA,MAAM,QAAO,GAAI,GAAG,CAAC,KAAK,CAAA;AAC1B,QAAA,MAAM,uBAAsB,GAAI,GAAG,CAAC,IAAI,CAAA;AACxC,QAAA,MAAM,qBAAqB,QAAQ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AAE1E,QAAA,MAAM,kBAAiB,GAAI,QAAQ,CACjC,MAAM,iBAAiB,CAAC,KAAI,KAAM,SAAQ,IAAK,iBAAiB,CAAC,KAAI,KAAM,OAAO,CACpF;QAEA,EAAE,CAAC,EAAE,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,MAAI;AACxD,YAAA,QAAQ,CAAC,KAAI,GAAI,KAAI;AACrB,YAAA,uBAAuB,CAAC,KAAI,GAAI,IAAG;AACrC,QAAA,CAAC,CAAA;QAED,SAAS,CAAC,MAAI;AACZ,YAAA,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,UAAS,EAAG,CAAA;AAClE,QAAA,CAAC,CAAA;QAED,OAAO;YACL,aAAa;YACb,mBAAmB;YACnB,QAAQ;YACR,kBAAkB;YAClB,kBAAkB;YAClB,iBAAiB;YACjB,cAAc;YACd,uBAAuB;YACvB,KAAK;YACL,OAAO;YACP,WAAW;YACX,OAAO;SACT;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * @public
11
11
  */
12
- const suggestionsRequest = ({ params: extraParams, selectedFilters: filters, origin, searchTotalResults, config }, { query }) => {
12
+ const suggestionsRequest = ({ params: extraParams, selectedFilters: filters, origin, searchTotalResults, config, query, }) => {
13
13
  if (query && (searchTotalResults === 0 || searchTotalResults <= config.lowResultsThreshold)) {
14
14
  return { query, extraParams, filters, ...(origin && { origin }) };
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"suggestions-request.getter.js","sources":["../../../../../../src/x-modules/ai/store/getters/suggestions-request.getter.ts"],"sourcesContent":["import type { AiXStoreModule } from '../types'\n\n/**\n * Default implementation for the {@link AiGetters.suggestionsRequest} getter.\n *\n * @param state - Current {@link https://vuex.vuejs.org/guide/state.html | state} of the ai\n * module.\n * @param getters - Current {@link https://vuex.vuejs.org/guide/getters.html | getters} of the\n * ai module.\n * @returns The ai request to fetch data from the API.\n *\n * @public\n */\nexport const suggestionsRequest: AiXStoreModule['getters']['suggestionsRequest'] = (\n { params: extraParams, selectedFilters: filters, origin, searchTotalResults, config },\n { query },\n) => {\n if (query && (searchTotalResults === 0 || searchTotalResults <= config.lowResultsThreshold)) {\n return { query, extraParams, filters, ...(origin && { origin }) }\n }\n return null\n}\n"],"names":[],"mappings":"AAEA;;;;;;;;;;AAUG;AACI,MAAM,kBAAkB,GAAoD,CACjF,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,EACrF,EAAE,KAAK,EAAE,KACP;AACF,IAAA,IAAI,KAAK,KAAK,kBAAkB,KAAK,CAAC,IAAI,kBAAkB,IAAI,MAAM,CAAC,mBAAmB,CAAC,EAAE;AAC3F,QAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;IACnE;AACA,IAAA,OAAO,IAAI;AACb;;;;"}
1
+ {"version":3,"file":"suggestions-request.getter.js","sources":["../../../../../../src/x-modules/ai/store/getters/suggestions-request.getter.ts"],"sourcesContent":["import type { AiXStoreModule } from '../types'\n\n/**\n * Default implementation for the {@link AiGetters.suggestionsRequest} getter.\n *\n * @param state - Current {@link https://vuex.vuejs.org/guide/state.html | state} of the ai\n * module.\n * @param getters - Current {@link https://vuex.vuejs.org/guide/getters.html | getters} of the\n * ai module.\n * @returns The ai request to fetch data from the API.\n *\n * @public\n */\nexport const suggestionsRequest: AiXStoreModule['getters']['suggestionsRequest'] = ({\n params: extraParams,\n selectedFilters: filters,\n origin,\n searchTotalResults,\n config,\n query,\n}) => {\n if (query && (searchTotalResults === 0 || searchTotalResults <= config.lowResultsThreshold)) {\n return { query, extraParams, filters, ...(origin && { origin }) }\n }\n return null\n}\n"],"names":[],"mappings":"AAEA;;;;;;;;;;AAUG;MACU,kBAAkB,GAAoD,CAAC,EAClF,MAAM,EAAE,WAAW,EACnB,eAAe,EAAE,OAAO,EACxB,MAAM,EACN,kBAAkB,EAClB,MAAM,EACN,KAAK,GACN,KAAI;AACH,IAAA,IAAI,KAAK,KAAK,kBAAkB,KAAK,CAAC,IAAI,kBAAkB,IAAI,MAAM,CAAC,mBAAmB,CAAC,EAAE;AAC3F,QAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;IACnE;AACA,IAAA,OAAO,IAAI;AACb;;;;"}
@@ -7,7 +7,6 @@ import { fetchAndSaveAiSuggestionsSearch } from './actions/fetch-and-save-ai-sug
7
7
  import { fetchAndSaveAiSuggestions } from './actions/fetch-and-save-ai-suggestions.action.js';
8
8
  import { saveOrigin } from './actions/save-origin.action.js';
9
9
  import { setUrlParams } from './actions/set-url-params.action.js';
10
- import { query } from './getters/ai-query.getter.js';
11
10
  import { suggestionsRequest } from './getters/suggestions-request.getter.js';
12
11
  import { suggestionsSearchRequest } from './getters/suggestions-search-request.getter.js';
13
12
 
@@ -32,7 +31,6 @@ const aiXStoreModule = {
32
31
  getters: {
33
32
  suggestionsRequest,
34
33
  suggestionsSearchRequest,
35
- query,
36
34
  },
37
35
  mutations: {
38
36
  /* Streamed fields */
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sources":["../../../../../src/x-modules/ai/store/module.ts"],"sourcesContent":["import type { AiSuggestionQuery, AiSuggestionSearch } from '@empathyco/x-types'\nimport type { RequestStatus } from '../../../store/utils/status-store.utils'\nimport type { AiState, AiXStoreModule } from './types'\nimport { isFacetFilter } from '@empathyco/x-types'\nimport { mergeConfig, setConfig } from '../../../store/utils/config-store.utils'\nimport { setQuery } from '../../../store/utils/query.utils'\nimport { groupItemsBy } from '../../../utils/array'\nimport { UNKNOWN_FACET_KEY } from '../../facets/store/constants'\nimport { fetchAndSaveAiSuggestionsSearch } from './actions/fetch-and-save-ai-suggestions-search.action'\nimport { fetchAndSaveAiSuggestions } from './actions/fetch-and-save-ai-suggestions.action'\nimport { saveOrigin } from './actions/save-origin.action'\nimport { setUrlParams } from './actions/set-url-params.action'\nimport {\n aiQuery as query,\n aiSuggestionsRequest as suggestionsRequest,\n aiSuggestionsSearchRequest as suggestionsSearchRequest,\n} from './getters'\n\n/**\n * {@link XStoreModule} For the ai module.\n *\n * @internal\n */\nexport const aiXStoreModule: AiXStoreModule = {\n state: () => ({\n ...resettableAiState(),\n selectedFilters: {},\n query: '',\n config: {\n lowResultsThreshold: 50,\n },\n params: {},\n origin: null,\n relatedTags: [],\n searchTotalResults: 0,\n }),\n getters: {\n suggestionsRequest,\n suggestionsSearchRequest,\n query,\n },\n mutations: {\n /* Streamed fields */\n setResponseText: (state, responseText: string) => {\n state.responseText = responseText\n },\n setSuggestionText: (state, suggestionText: string) => {\n state.suggestionText = suggestionText\n },\n setQueries: (state, queries: AiSuggestionQuery[]) => {\n state.queries = queries\n },\n setTagging: (state, tagging) => {\n state.tagging = tagging\n },\n /* END Streamed fields */\n setSuggestionsSearch: (state, suggestionsSearch: AiSuggestionSearch[]) => {\n state.suggestionsSearch = suggestionsSearch\n },\n setSuggestionsStatus: (state, status: RequestStatus) => {\n state.suggestionsStatus = status\n },\n setSuggestionsSearchStatus: (state, status: RequestStatus) => {\n state.suggestionsSearchStatus = status\n },\n setQuery,\n setParams(state, params) {\n state.params = params\n },\n setOrigin(state, origin = null) {\n state.origin = origin\n },\n resetAiState(state) {\n Object.assign(state, resettableAiState())\n },\n setAiRelatedTags(state, relatedTags) {\n state.relatedTags = relatedTags\n },\n setIsNoResults(state, isNoResults: boolean) {\n state.isNoResults = isNoResults\n },\n setSelectedFilters(state, selectedFilters) {\n state.selectedFilters = groupItemsBy(selectedFilters, filter =>\n isFacetFilter(filter) ? filter.facetId : UNKNOWN_FACET_KEY,\n )\n },\n setSearchTotalResults(state, totalResults) {\n state.searchTotalResults = totalResults\n },\n setConfig,\n mergeConfig,\n },\n actions: {\n fetchAndSaveAiSuggestions,\n fetchAndSaveAiSuggestionsSearch,\n setUrlParams,\n saveOrigin,\n },\n}\n\n/**\n * Function to return the \"resettable\" part of the state. This will be used in the `resetState`\n * mutation to reset to the initial state.\n *\n * @returns The \"resettable\" part of the {@link AiState}.\n *\n * @internal\n */\nfunction resettableAiState() {\n return {\n responseText: '',\n suggestionText: '',\n queries: [],\n tagging: undefined,\n suggestionsSearch: [],\n suggestionsStatus: 'initial' as RequestStatus,\n suggestionsSearchStatus: 'initial' as RequestStatus,\n isNoResults: true,\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAkBA;;;;AAIG;AACI,MAAM,cAAc,GAAmB;AAC5C,IAAA,KAAK,EAAE,OAAO;AACZ,QAAA,GAAG,iBAAiB,EAAE;AACtB,QAAA,eAAe,EAAE,EAAE;AACnB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,MAAM,EAAE;AACN,YAAA,mBAAmB,EAAE,EAAE;AACxB,SAAA;AACD,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,kBAAkB,EAAE,CAAC;KACtB,CAAC;AACF,IAAA,OAAO,EAAE;QACP,kBAAkB;QAClB,wBAAwB;QACxB,KAAK;AACN,KAAA;AACD,IAAA,SAAS,EAAE;;AAET,QAAA,eAAe,EAAE,CAAC,KAAK,EAAE,YAAoB,KAAI;AAC/C,YAAA,KAAK,CAAC,YAAY,GAAG,YAAY;QACnC,CAAC;AACD,QAAA,iBAAiB,EAAE,CAAC,KAAK,EAAE,cAAsB,KAAI;AACnD,YAAA,KAAK,CAAC,cAAc,GAAG,cAAc;QACvC,CAAC;AACD,QAAA,UAAU,EAAE,CAAC,KAAK,EAAE,OAA4B,KAAI;AAClD,YAAA,KAAK,CAAC,OAAO,GAAG,OAAO;QACzB,CAAC;AACD,QAAA,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAI;AAC7B,YAAA,KAAK,CAAC,OAAO,GAAG,OAAO;QACzB,CAAC;;AAED,QAAA,oBAAoB,EAAE,CAAC,KAAK,EAAE,iBAAuC,KAAI;AACvE,YAAA,KAAK,CAAC,iBAAiB,GAAG,iBAAiB;QAC7C,CAAC;AACD,QAAA,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAqB,KAAI;AACrD,YAAA,KAAK,CAAC,iBAAiB,GAAG,MAAM;QAClC,CAAC;AACD,QAAA,0BAA0B,EAAE,CAAC,KAAK,EAAE,MAAqB,KAAI;AAC3D,YAAA,KAAK,CAAC,uBAAuB,GAAG,MAAM;QACxC,CAAC;QACD,QAAQ;QACR,SAAS,CAAC,KAAK,EAAE,MAAM,EAAA;AACrB,YAAA,KAAK,CAAC,MAAM,GAAG,MAAM;QACvB,CAAC;AACD,QAAA,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAA;AAC5B,YAAA,KAAK,CAAC,MAAM,GAAG,MAAM;QACvB,CAAC;AACD,QAAA,YAAY,CAAC,KAAK,EAAA;YAChB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC;QAC3C,CAAC;QACD,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAA;AACjC,YAAA,KAAK,CAAC,WAAW,GAAG,WAAW;QACjC,CAAC;QACD,cAAc,CAAC,KAAK,EAAE,WAAoB,EAAA;AACxC,YAAA,KAAK,CAAC,WAAW,GAAG,WAAW;QACjC,CAAC;QACD,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAA;YACvC,KAAK,CAAC,eAAe,GAAG,YAAY,CAAC,eAAe,EAAE,MAAM,IAC1D,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,iBAAiB,CAC3D;QACH,CAAC;QACD,qBAAqB,CAAC,KAAK,EAAE,YAAY,EAAA;AACvC,YAAA,KAAK,CAAC,kBAAkB,GAAG,YAAY;QACzC,CAAC;QACD,SAAS;QACT,WAAW;AACZ,KAAA;AACD,IAAA,OAAO,EAAE;QACP,yBAAyB;QACzB,+BAA+B;QAC/B,YAAY;QACZ,UAAU;AACX,KAAA;;AAGH;;;;;;;AAOG;AACH,SAAS,iBAAiB,GAAA;IACxB,OAAO;AACL,QAAA,YAAY,EAAE,EAAE;AAChB,QAAA,cAAc,EAAE,EAAE;AAClB,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,iBAAiB,EAAE,EAAE;AACrB,QAAA,iBAAiB,EAAE,SAA0B;AAC7C,QAAA,uBAAuB,EAAE,SAA0B;AACnD,QAAA,WAAW,EAAE,IAAI;KAClB;AACH;;;;"}
1
+ {"version":3,"file":"module.js","sources":["../../../../../src/x-modules/ai/store/module.ts"],"sourcesContent":["import type { AiSuggestionQuery, AiSuggestionSearch } from '@empathyco/x-types'\nimport type { RequestStatus } from '../../../store/utils/status-store.utils'\nimport type { AiState, AiXStoreModule } from './types'\nimport { isFacetFilter } from '@empathyco/x-types'\nimport { mergeConfig, setConfig } from '../../../store/utils/config-store.utils'\nimport { setQuery } from '../../../store/utils/query.utils'\nimport { groupItemsBy } from '../../../utils/array'\nimport { UNKNOWN_FACET_KEY } from '../../facets/store/constants'\nimport { fetchAndSaveAiSuggestionsSearch } from './actions/fetch-and-save-ai-suggestions-search.action'\nimport { fetchAndSaveAiSuggestions } from './actions/fetch-and-save-ai-suggestions.action'\nimport { saveOrigin } from './actions/save-origin.action'\nimport { setUrlParams } from './actions/set-url-params.action'\nimport {\n aiSuggestionsRequest as suggestionsRequest,\n aiSuggestionsSearchRequest as suggestionsSearchRequest,\n} from './getters'\n\n/**\n * {@link XStoreModule} For the ai module.\n *\n * @internal\n */\nexport const aiXStoreModule: AiXStoreModule = {\n state: () => ({\n ...resettableAiState(),\n selectedFilters: {},\n query: '',\n config: {\n lowResultsThreshold: 50,\n },\n params: {},\n origin: null,\n relatedTags: [],\n searchTotalResults: 0,\n }),\n getters: {\n suggestionsRequest,\n suggestionsSearchRequest,\n },\n mutations: {\n /* Streamed fields */\n setResponseText: (state, responseText: string) => {\n state.responseText = responseText\n },\n setSuggestionText: (state, suggestionText: string) => {\n state.suggestionText = suggestionText\n },\n setQueries: (state, queries: AiSuggestionQuery[]) => {\n state.queries = queries\n },\n setTagging: (state, tagging) => {\n state.tagging = tagging\n },\n /* END Streamed fields */\n setSuggestionsSearch: (state, suggestionsSearch: AiSuggestionSearch[]) => {\n state.suggestionsSearch = suggestionsSearch\n },\n setSuggestionsStatus: (state, status: RequestStatus) => {\n state.suggestionsStatus = status\n },\n setSuggestionsSearchStatus: (state, status: RequestStatus) => {\n state.suggestionsSearchStatus = status\n },\n setQuery,\n setParams(state, params) {\n state.params = params\n },\n setOrigin(state, origin = null) {\n state.origin = origin\n },\n resetAiState(state) {\n Object.assign(state, resettableAiState())\n },\n setAiRelatedTags(state, relatedTags) {\n state.relatedTags = relatedTags\n },\n setIsNoResults(state, isNoResults: boolean) {\n state.isNoResults = isNoResults\n },\n setSelectedFilters(state, selectedFilters) {\n state.selectedFilters = groupItemsBy(selectedFilters, filter =>\n isFacetFilter(filter) ? filter.facetId : UNKNOWN_FACET_KEY,\n )\n },\n setSearchTotalResults(state, totalResults) {\n state.searchTotalResults = totalResults\n },\n setConfig,\n mergeConfig,\n },\n actions: {\n fetchAndSaveAiSuggestions,\n fetchAndSaveAiSuggestionsSearch,\n setUrlParams,\n saveOrigin,\n },\n}\n\n/**\n * Function to return the \"resettable\" part of the state. This will be used in the `resetState`\n * mutation to reset to the initial state.\n *\n * @returns The \"resettable\" part of the {@link AiState}.\n *\n * @internal\n */\nfunction resettableAiState() {\n return {\n responseText: '',\n suggestionText: '',\n queries: [],\n tagging: undefined,\n suggestionsSearch: [],\n suggestionsStatus: 'initial' as RequestStatus,\n suggestionsSearchStatus: 'initial' as RequestStatus,\n isNoResults: true,\n }\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empathyco/x-components",
3
- "version": "6.0.5",
3
+ "version": "6.0.7",
4
4
  "description": "Empathy X Components",
5
5
  "author": "Empathy Systems Corporation S.L.",
6
6
  "license": "Apache-2.0",
@@ -103,7 +103,6 @@
103
103
  "rollup-plugin-styles": "4.0.0",
104
104
  "rollup-plugin-typescript2": "0.37.0",
105
105
  "rollup-plugin-vue": "6.0.0",
106
- "start-server-and-test": "2.1.5",
107
106
  "tailwindcss": "4.2.2",
108
107
  "ts-node": "10.9.2",
109
108
  "typescript": "5.9.3",
@@ -119,5 +118,5 @@
119
118
  "access": "public",
120
119
  "directory": "dist"
121
120
  },
122
- "gitHead": "4a3320ad0d00bae100370483d69cac5aaba5dc12"
121
+ "gitHead": "671f3543643c1ab2cf67ee84a5a91970870758a7"
123
122
  }
@@ -1461,33 +1461,6 @@
1461
1461
  "name": "AiGetters",
1462
1462
  "preserveMemberOrder": false,
1463
1463
  "members": [
1464
- {
1465
- "kind": "PropertySignature",
1466
- "canonicalReference": "@empathyco/x-components!AiGetters#query:member",
1467
- "docComment": "/**\n * The combination of the query and the selected related tags.\n */\n",
1468
- "excerptTokens": [
1469
- {
1470
- "kind": "Content",
1471
- "text": "query: "
1472
- },
1473
- {
1474
- "kind": "Content",
1475
- "text": "string"
1476
- },
1477
- {
1478
- "kind": "Content",
1479
- "text": ";"
1480
- }
1481
- ],
1482
- "isReadonly": false,
1483
- "isOptional": false,
1484
- "releaseTag": "Public",
1485
- "name": "query",
1486
- "propertyTypeTokenRange": {
1487
- "startIndex": 1,
1488
- "endIndex": 2
1489
- }
1490
- },
1491
1464
  {
1492
1465
  "kind": "PropertySignature",
1493
1466
  "canonicalReference": "@empathyco/x-components!AiGetters#suggestionsRequest:member",
@@ -2581,34 +2554,6 @@
2581
2554
  "endIndex": 110
2582
2555
  }
2583
2556
  },
2584
- {
2585
- "kind": "Variable",
2586
- "canonicalReference": "@empathyco/x-components!aiQuery:var",
2587
- "docComment": "/**\n * Default implementation for the related prompts query getter.\n *\n * @param state - Current {@link https://vuex.vuejs.org/guide/state.html | state} of the related prompts' module.\n *\n * @returns The query with the selected related tags concatenated.\n *\n * @public\n */\n",
2588
- "excerptTokens": [
2589
- {
2590
- "kind": "Content",
2591
- "text": "query: "
2592
- },
2593
- {
2594
- "kind": "Reference",
2595
- "text": "AiXStoreModule",
2596
- "canonicalReference": "@empathyco/x-components!AiXStoreModule:type"
2597
- },
2598
- {
2599
- "kind": "Content",
2600
- "text": "['getters']['query']"
2601
- }
2602
- ],
2603
- "fileUrlPath": "src/x-modules/ai/store/getters/ai-query.getter.ts",
2604
- "isReadonly": true,
2605
- "releaseTag": "Public",
2606
- "name": "aiQuery",
2607
- "variableTypeTokenRange": {
2608
- "startIndex": 1,
2609
- "endIndex": 3
2610
- }
2611
- },
2612
2557
  {
2613
2558
  "kind": "Interface",
2614
2559
  "canonicalReference": "@empathyco/x-components!AiState:interface",
@@ -249,7 +249,6 @@ export const aiEmitters: {
249
249
 
250
250
  // @public
251
251
  export interface AiGetters {
252
- query: string;
253
252
  suggestionsRequest: AiSuggestionsRequest | null;
254
253
  suggestionsSearchRequest: AiSuggestionsSearchRequest | null;
255
254
  }
@@ -354,9 +353,6 @@ DisplayClickProvider: DefineComponent< {}, {}, any>;
354
353
  typing: Directive<TypingHTMLElement, TypingOptions>;
355
354
  }, string, ComponentProvideOptions, true, {}, any>;
356
355
 
357
- // @public
358
- export const aiQuery: AiXStoreModule['getters']['query'];
359
-
360
356
  export { AISpinnerIcon }
361
357
 
362
358
  export { AIStarIcon }
@@ -1,4 +1,3 @@
1
- export { query as aiQuery } from './ai-query.getter';
2
1
  export { suggestionsRequest as aiSuggestionsRequest } from './suggestions-request.getter';
3
2
  export { suggestionsSearchRequest as aiSuggestionsSearchRequest } from './suggestions-search-request.getter';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/x-modules/ai/store/getters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,kBAAkB,IAAI,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACzF,OAAO,EAAE,wBAAwB,IAAI,0BAA0B,EAAE,MAAM,qCAAqC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/x-modules/ai/store/getters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,IAAI,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACzF,OAAO,EAAE,wBAAwB,IAAI,0BAA0B,EAAE,MAAM,qCAAqC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"suggestions-request.getter.d.ts","sourceRoot":"","sources":["../../../../../../../src/x-modules/ai/store/getters/suggestions-request.getter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAE9C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAQ9E,CAAA"}
1
+ {"version":3,"file":"suggestions-request.getter.d.ts","sourceRoot":"","sources":["../../../../../../../src/x-modules/ai/store/getters/suggestions-request.getter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAE9C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAY9E,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/x-modules/ai/store/module.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAW,cAAc,EAAE,MAAM,SAAS,CAAA;AAgBtD;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,cA2E5B,CAAA"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/x-modules/ai/store/module.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAW,cAAc,EAAE,MAAM,SAAS,CAAA;AAetD;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,cA0E5B,CAAA"}
@@ -53,8 +53,6 @@ export interface AiGetters {
53
53
  * no valid queries to conform a valid request.
54
54
  */
55
55
  suggestionsSearchRequest: AiSuggestionsSearchRequest | null;
56
- /** The combination of the query and the selected related tags. */
57
- query: string;
58
56
  }
59
57
  /**
60
58
  * Ai module mutations.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/x-modules/ai/store/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,MAAM,EACN,UAAU,EACX,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,UAAU,EACV,cAAc,EACd,YAAY,EACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE/C;;;;GAIG;AACH,MAAM,WAAW,OAAQ,SAAQ,UAAU;IACzC,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAAA;IACxC,0CAA0C;IAC1C,iBAAiB,EAAE,aAAa,CAAA;IAChC,iDAAiD;IACjD,uBAAuB,EAAE,aAAa,CAAA;IACtC,wEAAwE;IACxE,iBAAiB,EAAE,kBAAkB,EAAE,CAAA;IAEvC,MAAM,EAAE,QAAQ,CAAA;IAChB,8CAA8C;IAC9C,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAC3B,kFAAkF;IAClF,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,2DAA2D;IAC3D,WAAW,EAAE,OAAO,CAAA;IACpB,0CAA0C;IAC1C,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B;;;OAGG;IACH,eAAe,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;IACrC,+CAA+C;IAC/C,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,kBAAkB,EAAE,oBAAoB,GAAG,IAAI,CAAA;IAE/C;;;OAGG;IACH,wBAAwB,EAAE,0BAA0B,GAAG,IAAI,CAAA;IAE3D,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,eAAe,CAAC,OAAO,CAAC,EAAE,cAAc;IAC3E;;;;OAIG;IACH,eAAe,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IAE/C;;;;OAIG;IACH,iBAAiB,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAA;IAEnD;;;;OAIG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAA;IAElD;;;;OAIG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAElD;;;;OAIG;IACH,oBAAoB,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;IAErD;;;;OAIG;IACH,0BAA0B,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;IAE3D;;;;OAIG;IACH,oBAAoB,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAA;IAEvE;;;;OAIG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IAEhD;;OAEG;IACH,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB;;;;OAIG;IACH,gBAAgB,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,IAAI,CAAA;IACrD;;;;OAIG;IACH,cAAc,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAA;IAC9C;;;;OAIG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,KAAK,IAAI,CAAA;IAC3D;;;;OAIG;IACH,kBAAkB,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IACvD;;;;OAIG;IACH,qBAAqB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;CACtD;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,yBAAyB,EAAE,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,KAAK,IAAI,CAAA;IACzE;;;;OAIG;IACH,+BAA+B,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5D;;;;OAIG;IACH,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAA;IAC5C;;;;OAIG;IACH,UAAU,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAA;CAClD;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;AAErF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/x-modules/ai/store/types.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- <!-- Do not edit this file. It is automatically generated by API Documenter. -->
2
-
3
- [Home](./index.md) &gt; [@empathyco/x-components](./x-components.md) &gt; [AiGetters](./x-components.aigetters.md) &gt; [query](./x-components.aigetters.query.md)
4
-
5
- ## AiGetters.query property
6
-
7
- The combination of the query and the selected related tags.
8
-
9
- **Signature:**
10
-
11
- ```typescript
12
- query: string;
13
- ```
@@ -1,13 +0,0 @@
1
- <!-- Do not edit this file. It is automatically generated by API Documenter. -->
2
-
3
- [Home](./index.md) &gt; [@empathyco/x-components](./x-components.md) &gt; [aiQuery](./x-components.aiquery.md)
4
-
5
- ## aiQuery variable
6
-
7
- Default implementation for the related prompts query getter.
8
-
9
- **Signature:**
10
-
11
- ```typescript
12
- query: AiXStoreModule['getters']['query']
13
- ```
@@ -1,19 +0,0 @@
1
- import '@empathyco/x-utils';
2
- import { createRelatedTagsQueryGetter } from '../../../../store/utils/query.utils.js';
3
-
4
- /**
5
- * Default implementation for the related prompts query getter.
6
- *
7
- * @param state - Current {@link https://vuex.vuejs.org/guide/state.html | state} of the related
8
- * prompts' module.
9
- *
10
- * @returns The query with the selected related tags concatenated.
11
- *
12
- * @public
13
- */
14
- const query = createRelatedTagsQueryGetter({
15
- getRelatedTags: state => state.relatedTags,
16
- });
17
-
18
- export { query };
19
- //# sourceMappingURL=ai-query.getter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-query.getter.js","sources":["../../../../../../src/x-modules/ai/store/getters/ai-query.getter.ts"],"sourcesContent":["import type { AiXStoreModule } from '../types'\nimport { createRelatedTagsQueryGetter } from '../../../../store'\n\n/**\n * Default implementation for the related prompts query getter.\n *\n * @param state - Current {@link https://vuex.vuejs.org/guide/state.html | state} of the related\n * prompts' module.\n *\n * @returns The query with the selected related tags concatenated.\n *\n * @public\n */\nexport const query: AiXStoreModule['getters']['query'] = createRelatedTagsQueryGetter({\n getRelatedTags: state => state.relatedTags,\n})\n"],"names":[],"mappings":";;;AAGA;;;;;;;;;AASG;AACI,MAAM,KAAK,GAAuC,4BAA4B,CAAC;AACpF,IAAA,cAAc,EAAE,KAAK,IAAI,KAAK,CAAC,WAAW;AAC3C,CAAA;;;;"}
@@ -1,13 +0,0 @@
1
- import type { AiXStoreModule } from '../types';
2
- /**
3
- * Default implementation for the related prompts query getter.
4
- *
5
- * @param state - Current {@link https://vuex.vuejs.org/guide/state.html | state} of the related
6
- * prompts' module.
7
- *
8
- * @returns The query with the selected related tags concatenated.
9
- *
10
- * @public
11
- */
12
- export declare const query: AiXStoreModule['getters']['query'];
13
- //# sourceMappingURL=ai-query.getter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-query.getter.d.ts","sourceRoot":"","sources":["../../../../../../../src/x-modules/ai/store/getters/ai-query.getter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAG9C;;;;;;;;;GASG;AACH,eAAO,MAAM,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,OAAO,CAEnD,CAAA"}