@empathyco/x-components 6.0.0-alpha.143 → 6.0.0-alpha.144
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 +10 -0
- package/docs/API-reference/api/x-components.aioverview.md +1 -0
- package/docs/API-reference/components/ai/x-components.ai-overview.md +0 -1
- package/js/x-modules/ai/components/ai-overview.vue.js +15 -17
- package/js/x-modules/ai/components/ai-overview.vue.js.map +1 -1
- package/js/x-modules/ai/components/ai-overview.vue2.js +5 -1
- package/js/x-modules/ai/components/ai-overview.vue2.js.map +1 -1
- package/package.json +2 -2
- package/report/x-components.api.json +1 -1
- package/report/x-components.api.md +1 -0
- package/types/x-modules/ai/components/ai-overview.vue.d.ts +1 -0
- package/types/x-modules/ai/components/ai-overview.vue.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
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.144 (2025-09-12)
|
|
7
|
+
|
|
8
|
+
* refactor(ai): remove unused titleLoadingText in ai-overview tests ([c09e07d](https://github.com/empathyco/x/commit/c09e07d))
|
|
9
|
+
* refactor(ai): rename onExpandedButtonClick to onExpandButtonClick and update references ([13f2ad6](https://github.com/empathyco/x/commit/13f2ad6))
|
|
10
|
+
* refactor(ai): rename setExpanded to onExpandedButtonClick and update usage ([0713e3c](https://github.com/empathyco/x/commit/0713e3c))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
6
16
|
## 6.0.0-alpha.143 (2025-09-12)
|
|
7
17
|
|
|
8
18
|
* refactor(ai): remove null safety from suggestionsRequest (#1874) ([7245431](https://github.com/empathyco/x/commit/7245431)), closes [#1874](https://github.com/empathyco/x/issues/1874)
|
|
@@ -43,6 +43,7 @@ _default: import("vue").DefineComponent<{
|
|
|
43
43
|
suggestionsSearch: import("vue").ComputedRef<AiSuggestionSearch[]>;
|
|
44
44
|
suggestionText: import("vue").ComputedRef<string>;
|
|
45
45
|
setExpanded: (newValue: boolean) => void;
|
|
46
|
+
onExpandButtonClick: (newValue: boolean) => void;
|
|
46
47
|
query: import("vue").ComputedRef<string>;
|
|
47
48
|
tagging: import("vue").ComputedRef<import("@empathyco/x-types").AiSuggestionTagging | undefined>;
|
|
48
49
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _sfc_main from './ai-overview.vue2.js';
|
|
2
|
-
import { resolveComponent, resolveDirective, openBlock, createElementBlock, createElementVNode, createVNode, withCtx, withDirectives, createBlock, createTextVNode, toDisplayString, normalizeStyle, Fragment, renderList, normalizeClass, renderSlot, createCommentVNode, vShow
|
|
2
|
+
import { resolveComponent, resolveDirective, openBlock, createElementBlock, createElementVNode, createVNode, withCtx, withDirectives, createBlock, createTextVNode, toDisplayString, normalizeStyle, Fragment, renderList, normalizeClass, renderSlot, createCommentVNode, vShow } from 'vue';
|
|
3
3
|
import './ai-overview.vue3.js';
|
|
4
4
|
import _export_sfc from '../../../_virtual/_plugin-vue_export-helper.js';
|
|
5
5
|
|
|
@@ -205,7 +205,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
205
205
|
{
|
|
206
206
|
class: "x-ai-overview-gradient",
|
|
207
207
|
"data-test": "ai-overview-gradient",
|
|
208
|
-
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.
|
|
208
|
+
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.onExpandButtonClick(!_ctx.expanded))
|
|
209
209
|
},
|
|
210
210
|
null,
|
|
211
211
|
512
|
|
@@ -214,21 +214,19 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
214
214
|
[vShow, !_ctx.expanded]
|
|
215
215
|
]),
|
|
216
216
|
createElementVNode("div", _hoisted_11, [
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
}, null, 8, ["class"])
|
|
231
|
-
])
|
|
217
|
+
createElementVNode("button", {
|
|
218
|
+
class: "x-ai-overview-toggle-btn",
|
|
219
|
+
"data-test": "ai-overview-toggle-button",
|
|
220
|
+
onClick: _cache[1] || (_cache[1] = ($event) => _ctx.onExpandButtonClick(!_ctx.expanded))
|
|
221
|
+
}, [
|
|
222
|
+
createTextVNode(
|
|
223
|
+
toDisplayString(_ctx.buttonText) + " ",
|
|
224
|
+
1
|
|
225
|
+
/* TEXT */
|
|
226
|
+
),
|
|
227
|
+
createVNode(_component_ChevronDownIcon, {
|
|
228
|
+
class: normalizeClass(["x-ai-overview-toggle-btn-icon", { "x-ai-overview-toggle-btn-icon-expanded": _ctx.expanded }])
|
|
229
|
+
}, null, 8, ["class"])
|
|
232
230
|
])
|
|
233
231
|
])
|
|
234
232
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-overview.vue.js","sources":["../../../../../src/x-modules/ai/components/ai-overview.vue"],"sourcesContent":["<template>\n <div class=\"x-ai-overview\">\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 v-typing=\"{ text: titleLoading, speed: 50 }\"\n class=\"x-ai-overview-title-loading-text\"\n data-test=\"ai-overview-title-loading-text\"\n />\n </span>\n <DisplayEmitter\n v-else\n :payload=\"tagging?.toolingDisplay ?? {}\"\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 }}\n </span>\n </DisplayEmitter>\n </Fade>\n <ChangeHeight>\n <div class=\"x-ai-overview-content\" data-test=\"ai-overview-content\">\n <span>{{ suggestionText }}</span>\n <p>{{ responseText }}</p>\n </div>\n </ChangeHeight>\n </div>\n <CollapseHeight\n v-if=\"queries.length\"\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\" data-test=\"ai-overview-suggestions-container\">\n <div class=\"x-ai-overview-suggestions\">\n <div\n v-for=\"{ query: suggestionQuery } in queries\"\n :key=\"suggestionQuery\"\n class=\"x-ai-overview-suggestion\"\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 <SlidingPanel\n v-if=\"queriesResults[suggestionQuery]\"\n :class=\"slidingPanelsClasses\"\n :scroll-container-class=\"slidingPanelContainersClasses\"\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 in queriesResults[suggestionQuery].results\"\n :key=\"result.id\"\n data-test=\"ai-overview-suggestion-result\"\n >\n <!-- @slot (required) result card -->\n <slot name=\"result\" :result=\"result\" />\n </li>\n </ul>\n </SlidingPanel>\n </div>\n </div>\n </div>\n </CollapseHeight>\n <div v-show=\"queries.length\">\n <div\n v-show=\"!expanded\"\n class=\"x-ai-overview-gradient\"\n data-test=\"ai-overview-gradient\"\n @click=\"setExpanded(!expanded)\"\n />\n <div class=\"x-ai-overview-toggle-wrapper\">\n <!-- @slot toggle button -->\n <slot name=\"toggle-button\" v-bind=\"{ expanded, setExpanded, buttonText }\">\n <button\n class=\"x-ai-overview-toggle-btn\"\n data-test=\"ai-overview-toggle-button\"\n @click=\"setExpanded(!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 </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport type { AiSuggestionSearch } 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 Fade,\n SlidingPanel,\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 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 default: 'Empathy AI Overview',\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 setup(props) {\n const $x = use$x()\n const { query } = useGetter('ai')\n const {\n suggestionText,\n responseText,\n queries,\n suggestionsSearch,\n suggestionsLoading,\n tagging,\n } = useState('ai')\n\n const expanded = ref(false)\n\n const queriesResults = computed(() => {\n return suggestionsSearch.value.reduce(\n (\n acc: Record<string, { results: AiSuggestionSearch['results']; numFound: number }>,\n { query, results, numFound },\n ) => {\n acc[query] = { results, numFound }\n return acc\n },\n {},\n )\n })\n\n const buttonText = computed(() => (expanded.value ? props.collapseText : props.expandText))\n\n function setExpanded(newValue: boolean) {\n $x.emit('UserClickedAiOverviewExpandButton', expanded.value, {\n suggestionText: suggestionText.value,\n toolingDisplayClick: tagging.value?.toolingDisplayClick,\n })\n expanded.value = newValue\n }\n\n watch(query, () => (expanded.value = false))\n\n return {\n buttonText,\n expanded,\n queries,\n responseText,\n suggestionsLoading,\n queriesResults,\n suggestionsSearch,\n suggestionText,\n setExpanded,\n query,\n tagging,\n }\n },\n})\n</script>\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-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</style>\n"],"names":["_createElementVNode","_openBlock","_createElementBlock","_createVNode","_withDirectives","_createBlock","_withCtx","_createTextVNode","_toDisplayString","_normalizeStyle","_Fragment","_renderList","_normalizeClass","_renderSlot","_createCommentVNode","_normalizeProps","_guardReactiveProps","_vShow"],"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 <div class=\"x-ai-overview\">\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 v-typing=\"{ text: titleLoading, speed: 50 }\"\n class=\"x-ai-overview-title-loading-text\"\n data-test=\"ai-overview-title-loading-text\"\n />\n </span>\n <DisplayEmitter\n v-else\n :payload=\"tagging?.toolingDisplay ?? {}\"\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 }}\n </span>\n </DisplayEmitter>\n </Fade>\n <ChangeHeight>\n <div class=\"x-ai-overview-content\" data-test=\"ai-overview-content\">\n <span>{{ suggestionText }}</span>\n <p>{{ responseText }}</p>\n </div>\n </ChangeHeight>\n </div>\n <CollapseHeight\n v-if=\"queries.length\"\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\" data-test=\"ai-overview-suggestions-container\">\n <div class=\"x-ai-overview-suggestions\">\n <div\n v-for=\"{ query: suggestionQuery } in queries\"\n :key=\"suggestionQuery\"\n class=\"x-ai-overview-suggestion\"\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 <SlidingPanel\n v-if=\"queriesResults[suggestionQuery]\"\n :class=\"slidingPanelsClasses\"\n :scroll-container-class=\"slidingPanelContainersClasses\"\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 in queriesResults[suggestionQuery].results\"\n :key=\"result.id\"\n data-test=\"ai-overview-suggestion-result\"\n >\n <!-- @slot (required) result card -->\n <slot name=\"result\" :result=\"result\" />\n </li>\n </ul>\n </SlidingPanel>\n </div>\n </div>\n </div>\n </CollapseHeight>\n <div v-show=\"queries.length\">\n <div\n v-show=\"!expanded\"\n class=\"x-ai-overview-gradient\"\n data-test=\"ai-overview-gradient\"\n @click=\"onExpandButtonClick(!expanded)\"\n />\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=\"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 </div>\n</template>\n\n<script lang=\"ts\">\nimport type { AiSuggestionSearch } 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 Fade,\n SlidingPanel,\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 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 default: 'Empathy AI Overview',\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 setup(props) {\n const $x = use$x()\n const { query } = useGetter('ai')\n const {\n suggestionText,\n responseText,\n queries,\n suggestionsSearch,\n suggestionsLoading,\n tagging,\n } = useState('ai')\n\n const expanded = ref(false)\n\n const queriesResults = computed(() => {\n return suggestionsSearch.value.reduce(\n (\n acc: Record<string, { results: AiSuggestionSearch['results']; numFound: number }>,\n { query, results, numFound },\n ) => {\n acc[query] = { results, numFound }\n return acc\n },\n {},\n )\n })\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 }\n\n watch(query, () => (expanded.value = false))\n\n return {\n buttonText,\n expanded,\n queries,\n responseText,\n suggestionsLoading,\n queriesResults,\n suggestionsSearch,\n suggestionText,\n setExpanded,\n onExpandButtonClick,\n query,\n tagging,\n }\n },\n})\n</script>\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-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</style>\n"],"names":["_createElementVNode","_openBlock","_createElementBlock","_createVNode","_withDirectives","_createBlock","_withCtx","_createTextVNode","_toDisplayString","_normalizeStyle","_Fragment","_renderList","_normalizeClass","_renderSlot","_createCommentVNode","_vShow"],"mappings":"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"}
|
|
@@ -192,11 +192,14 @@ var _sfc_main = defineComponent({
|
|
|
192
192
|
}, {});
|
|
193
193
|
});
|
|
194
194
|
const buttonText = computed(() => (expanded.value ? props.collapseText : props.expandText));
|
|
195
|
-
function
|
|
195
|
+
function onExpandButtonClick(newValue) {
|
|
196
196
|
$x.emit('UserClickedAiOverviewExpandButton', expanded.value, {
|
|
197
197
|
suggestionText: suggestionText.value,
|
|
198
198
|
toolingDisplayClick: tagging.value?.toolingDisplayClick,
|
|
199
199
|
});
|
|
200
|
+
setExpanded(newValue);
|
|
201
|
+
}
|
|
202
|
+
function setExpanded(newValue) {
|
|
200
203
|
expanded.value = newValue;
|
|
201
204
|
}
|
|
202
205
|
watch(query, () => (expanded.value = false));
|
|
@@ -210,6 +213,7 @@ var _sfc_main = defineComponent({
|
|
|
210
213
|
suggestionsSearch,
|
|
211
214
|
suggestionText,
|
|
212
215
|
setExpanded,
|
|
216
|
+
onExpandButtonClick,
|
|
213
217
|
query,
|
|
214
218
|
tagging,
|
|
215
219
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-overview.vue2.js","sources":["../../../../../src/x-modules/ai/components/ai-overview.vue"],"sourcesContent":["<template>\n <div class=\"x-ai-overview\">\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 v-typing=\"{ text: titleLoading, speed: 50 }\"\n class=\"x-ai-overview-title-loading-text\"\n data-test=\"ai-overview-title-loading-text\"\n />\n </span>\n <DisplayEmitter\n v-else\n :payload=\"tagging?.toolingDisplay ?? {}\"\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 }}\n </span>\n </DisplayEmitter>\n </Fade>\n <ChangeHeight>\n <div class=\"x-ai-overview-content\" data-test=\"ai-overview-content\">\n <span>{{ suggestionText }}</span>\n <p>{{ responseText }}</p>\n </div>\n </ChangeHeight>\n </div>\n <CollapseHeight\n v-if=\"queries.length\"\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\" data-test=\"ai-overview-suggestions-container\">\n <div class=\"x-ai-overview-suggestions\">\n <div\n v-for=\"{ query: suggestionQuery } in queries\"\n :key=\"suggestionQuery\"\n class=\"x-ai-overview-suggestion\"\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 <SlidingPanel\n v-if=\"queriesResults[suggestionQuery]\"\n :class=\"slidingPanelsClasses\"\n :scroll-container-class=\"slidingPanelContainersClasses\"\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 in queriesResults[suggestionQuery].results\"\n :key=\"result.id\"\n data-test=\"ai-overview-suggestion-result\"\n >\n <!-- @slot (required) result card -->\n <slot name=\"result\" :result=\"result\" />\n </li>\n </ul>\n </SlidingPanel>\n </div>\n </div>\n </div>\n </CollapseHeight>\n <div v-show=\"queries.length\">\n <div\n v-show=\"!expanded\"\n class=\"x-ai-overview-gradient\"\n data-test=\"ai-overview-gradient\"\n @click=\"setExpanded(!expanded)\"\n />\n <div class=\"x-ai-overview-toggle-wrapper\">\n <!-- @slot toggle button -->\n <slot name=\"toggle-button\" v-bind=\"{ expanded, setExpanded, buttonText }\">\n <button\n class=\"x-ai-overview-toggle-btn\"\n data-test=\"ai-overview-toggle-button\"\n @click=\"setExpanded(!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 </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport type { AiSuggestionSearch } 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 Fade,\n SlidingPanel,\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 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 default: 'Empathy AI Overview',\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 setup(props) {\n const $x = use$x()\n const { query } = useGetter('ai')\n const {\n suggestionText,\n responseText,\n queries,\n suggestionsSearch,\n suggestionsLoading,\n tagging,\n } = useState('ai')\n\n const expanded = ref(false)\n\n const queriesResults = computed(() => {\n return suggestionsSearch.value.reduce(\n (\n acc: Record<string, { results: AiSuggestionSearch['results']; numFound: number }>,\n { query, results, numFound },\n ) => {\n acc[query] = { results, numFound }\n return acc\n },\n {},\n )\n })\n\n const buttonText = computed(() => (expanded.value ? props.collapseText : props.expandText))\n\n function setExpanded(newValue: boolean) {\n $x.emit('UserClickedAiOverviewExpandButton', expanded.value, {\n suggestionText: suggestionText.value,\n toolingDisplayClick: tagging.value?.toolingDisplayClick,\n })\n expanded.value = newValue\n }\n\n watch(query, () => (expanded.value = false))\n\n return {\n buttonText,\n expanded,\n queries,\n responseText,\n suggestionsLoading,\n queriesResults,\n suggestionsSearch,\n suggestionText,\n setExpanded,\n query,\n tagging,\n }\n },\n})\n</script>\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-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</style>\n"],"names":["DisplayEmitter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuIA,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;wBACZA,WAAc;AACf,KAAA;AACD,IAAA,KAAK,EAAE;AACL;;;;AAIE;AACF,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,MAA0B;AAChC,YAAA,OAAO,EAAE,qBAAqB;AAC/B,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;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;AAChC,QAAA,MAAM,EACJ,cAAc,EACd,YAAY,EACZ,OAAO,EACP,iBAAiB,EACjB,kBAAkB,EAClB,OAAO,GACT,GAAI,QAAQ,CAAC,IAAI,CAAA,CAAA;AAEjB,QAAA,MAAM,QAAS,GAAE,GAAG,CAAC,KAAK,CAAA,CAAA;AAE1B,QAAA,MAAM,cAAe,GAAE,QAAQ,CAAC,MAAM;AACpC,YAAA,OAAO,iBAAiB,CAAC,KAAK,CAAC,MAAM,CACnC,CACE,GAAiF,EACjF,EAAE,KAAK,EAAE,OAAO,EAAE,QAAO,EAAG,KACzB;gBACH,GAAG,CAAC,KAAK,CAAA,GAAI,EAAE,OAAO,EAAE,QAAS,EAAA,CAAA;AACjC,gBAAA,OAAO,GAAE,CAAA;aACV,EACD,EAAE,CACJ,CAAA;AACF,SAAC,CAAA,CAAA;QAED,MAAM,UAAW,GAAE,QAAQ,CAAC,OAAO,QAAQ,CAAC,KAAM,GAAE,KAAK,CAAC,YAAW,GAAI,KAAK,CAAC,UAAU,CAAC,CAAA,CAAA;QAE1F,SAAS,WAAW,CAAC,QAAiB,EAAA;YACpC,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;AACD,YAAA,QAAQ,CAAC,KAAI,GAAI,QAAO,CAAA;SAC1B;AAEA,QAAA,KAAK,CAAC,KAAK,EAAE,OAAO,QAAQ,CAAC,KAAI,GAAI,KAAK,CAAC,CAAA,CAAA;QAE3C,OAAO;YACL,UAAU;YACV,QAAQ;YACR,OAAO;YACP,YAAY;YACZ,kBAAkB;YAClB,cAAc;YACd,iBAAiB;YACjB,cAAc;YACd,WAAW;YACX,KAAK;YACL,OAAO;SACT,CAAA;KACD;AACF,CAAA,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"ai-overview.vue2.js","sources":["../../../../../src/x-modules/ai/components/ai-overview.vue"],"sourcesContent":["<template>\n <div class=\"x-ai-overview\">\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 v-typing=\"{ text: titleLoading, speed: 50 }\"\n class=\"x-ai-overview-title-loading-text\"\n data-test=\"ai-overview-title-loading-text\"\n />\n </span>\n <DisplayEmitter\n v-else\n :payload=\"tagging?.toolingDisplay ?? {}\"\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 }}\n </span>\n </DisplayEmitter>\n </Fade>\n <ChangeHeight>\n <div class=\"x-ai-overview-content\" data-test=\"ai-overview-content\">\n <span>{{ suggestionText }}</span>\n <p>{{ responseText }}</p>\n </div>\n </ChangeHeight>\n </div>\n <CollapseHeight\n v-if=\"queries.length\"\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\" data-test=\"ai-overview-suggestions-container\">\n <div class=\"x-ai-overview-suggestions\">\n <div\n v-for=\"{ query: suggestionQuery } in queries\"\n :key=\"suggestionQuery\"\n class=\"x-ai-overview-suggestion\"\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 <SlidingPanel\n v-if=\"queriesResults[suggestionQuery]\"\n :class=\"slidingPanelsClasses\"\n :scroll-container-class=\"slidingPanelContainersClasses\"\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 in queriesResults[suggestionQuery].results\"\n :key=\"result.id\"\n data-test=\"ai-overview-suggestion-result\"\n >\n <!-- @slot (required) result card -->\n <slot name=\"result\" :result=\"result\" />\n </li>\n </ul>\n </SlidingPanel>\n </div>\n </div>\n </div>\n </CollapseHeight>\n <div v-show=\"queries.length\">\n <div\n v-show=\"!expanded\"\n class=\"x-ai-overview-gradient\"\n data-test=\"ai-overview-gradient\"\n @click=\"onExpandButtonClick(!expanded)\"\n />\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=\"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 </div>\n</template>\n\n<script lang=\"ts\">\nimport type { AiSuggestionSearch } 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 Fade,\n SlidingPanel,\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 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 default: 'Empathy AI Overview',\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 setup(props) {\n const $x = use$x()\n const { query } = useGetter('ai')\n const {\n suggestionText,\n responseText,\n queries,\n suggestionsSearch,\n suggestionsLoading,\n tagging,\n } = useState('ai')\n\n const expanded = ref(false)\n\n const queriesResults = computed(() => {\n return suggestionsSearch.value.reduce(\n (\n acc: Record<string, { results: AiSuggestionSearch['results']; numFound: number }>,\n { query, results, numFound },\n ) => {\n acc[query] = { results, numFound }\n return acc\n },\n {},\n )\n })\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 }\n\n watch(query, () => (expanded.value = false))\n\n return {\n buttonText,\n expanded,\n queries,\n responseText,\n suggestionsLoading,\n queriesResults,\n suggestionsSearch,\n suggestionText,\n setExpanded,\n onExpandButtonClick,\n query,\n tagging,\n }\n },\n})\n</script>\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-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</style>\n"],"names":["DisplayEmitter"],"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.0-alpha.
|
|
3
|
+
"version": "6.0.0-alpha.144",
|
|
4
4
|
"description": "Empathy X Components",
|
|
5
5
|
"author": "Empathy Systems Corporation S.L.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -142,5 +142,5 @@
|
|
|
142
142
|
"access": "public",
|
|
143
143
|
"directory": "dist"
|
|
144
144
|
},
|
|
145
|
-
"gitHead": "
|
|
145
|
+
"gitHead": "de2773d604781813942db28098858c1119482813"
|
|
146
146
|
}
|
|
@@ -1645,7 +1645,7 @@
|
|
|
1645
1645
|
},
|
|
1646
1646
|
{
|
|
1647
1647
|
"kind": "Content",
|
|
1648
|
-
"text": "<string>;\n setExpanded: (newValue: boolean) => void;\n query: import(\"vue\")."
|
|
1648
|
+
"text": "<string>;\n setExpanded: (newValue: boolean) => void;\n onExpandButtonClick: (newValue: boolean) => void;\n query: import(\"vue\")."
|
|
1649
1649
|
},
|
|
1650
1650
|
{
|
|
1651
1651
|
"kind": "Reference",
|
|
@@ -253,6 +253,7 @@ numFound: number;
|
|
|
253
253
|
suggestionsSearch: ComputedRef<AiSuggestionSearch[]>;
|
|
254
254
|
suggestionText: ComputedRef<string>;
|
|
255
255
|
setExpanded: (newValue: boolean) => void;
|
|
256
|
+
onExpandButtonClick: (newValue: boolean) => void;
|
|
256
257
|
query: ComputedRef<string>;
|
|
257
258
|
tagging: ComputedRef<AiSuggestionTagging | undefined>;
|
|
258
259
|
}, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes< {
|
|
@@ -66,6 +66,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
66
66
|
suggestionsSearch: import("vue").ComputedRef<AiSuggestionSearch[]>;
|
|
67
67
|
suggestionText: import("vue").ComputedRef<string>;
|
|
68
68
|
setExpanded: (newValue: boolean) => void;
|
|
69
|
+
onExpandButtonClick: (newValue: boolean) => void;
|
|
69
70
|
query: import("vue").ComputedRef<string>;
|
|
70
71
|
tagging: import("vue").ComputedRef<import("@empathyco/x-types").AiSuggestionTagging | undefined>;
|
|
71
72
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-overview.vue?vue&type=script&lang.d.ts","sourceRoot":"","sources":["../../../../../src/x-modules/ai/components/ai-overview.vue?vue&type=script&lang.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;;IAkC/B;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;;IAGlC;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;;IAGlC;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;;IAGlC;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;;IAIlC;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;IAElC;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;;;;;;;;iBAoBG,kBAAkB,CAAC,SAAS,CAAC;kBAAY,MAAM;;;;
|
|
1
|
+
{"version":3,"file":"ai-overview.vue?vue&type=script&lang.d.ts","sourceRoot":"","sources":["../../../../../src/x-modules/ai/components/ai-overview.vue?vue&type=script&lang.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;;IAkC/B;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;;IAGlC;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;;IAGlC;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;;IAGlC;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;;IAIlC;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;IAElC;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;;;;;;;;iBAoBG,kBAAkB,CAAC,SAAS,CAAC;kBAAY,MAAM;;;;4BAoBrD,OAAO;oCARC,OAAO;;;;IAnF9C;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;;IAGlC;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;;IAGlC;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;;IAGlC;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;;IAIlC;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;IAElC;;;;OAIG;;cAEe,QAAQ,CAAC,MAAM,CAAC;;;;;;;;AApEtC,wBAiIE"}
|