@coveo/atomic 3.32.4-pre.d4e891a69f → 3.32.4-pre.d5e67eb281
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/dist/atomic/_atomic.esm.js +1 -1
- package/dist/atomic/components/analytics-config.js +1 -1
- package/dist/atomic/components/atomic-insight-interface.js +1 -1
- package/dist/atomic/components/atomic-insight-interface.js.map +1 -1
- package/dist/atomic/components/atomic-insight-user-actions-timeline2.js.map +1 -1
- package/dist/atomic/components/atomic-insight-user-actions-toggle.js +1 -1
- package/dist/atomic/components/atomic-insight-user-actions-toggle.js.map +1 -1
- package/dist/atomic/components/atomic-quickview-modal2.js +4 -4
- package/dist/atomic/components/atomic-quickview-modal2.js.map +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-interface/atomic-commerce-interface.js +15 -0
- package/dist/atomic/components/components/commerce/atomic-commerce-recommendation-list/atomic-commerce-recommendation-list.js +3 -6
- package/dist/atomic/components/components/commerce/atomic-product-template/atomic-product-template.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-text/atomic-product-text.js +20 -2
- package/dist/atomic/components/decorators/bind-state.js +6 -6
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/lang/cs.json +1 -1
- package/dist/atomic/lang/da.json +1 -1
- package/dist/atomic/lang/de.json +1 -1
- package/dist/atomic/lang/dev.json +1 -1
- package/dist/atomic/lang/el.json +1 -1
- package/dist/atomic/lang/en.json +1 -1
- package/dist/atomic/lang/es.json +1 -1
- package/dist/atomic/lang/fi.json +1 -1
- package/dist/atomic/lang/fr.json +1 -1
- package/dist/atomic/lang/hu.json +1 -1
- package/dist/atomic/lang/id.json +1 -1
- package/dist/atomic/lang/it.json +1 -1
- package/dist/atomic/lang/ja.json +1 -1
- package/dist/atomic/lang/ko.json +1 -1
- package/dist/atomic/lang/nl.json +1 -1
- package/dist/atomic/lang/no.json +1 -1
- package/dist/atomic/lang/pl.json +1 -1
- package/dist/atomic/lang/pt-BR.json +1 -1
- package/dist/atomic/lang/pt.json +1 -1
- package/dist/atomic/lang/ru.json +1 -1
- package/dist/atomic/lang/sv.json +1 -1
- package/dist/atomic/lang/th.json +1 -1
- package/dist/atomic/lang/tr.json +1 -1
- package/dist/atomic/lang/zh-CN.json +1 -1
- package/dist/atomic/lang/zh-TW.json +1 -1
- package/dist/atomic/lang/zh.json +1 -1
- package/dist/atomic/p-6083c9be.entry.js +2 -0
- package/dist/atomic/p-6083c9be.entry.js.map +1 -0
- package/dist/atomic/{p-5b6d3b60.js → p-619e5bdd.js} +2 -2
- package/dist/atomic/{p-28e855b9.entry.js → p-8c9696f3.entry.js} +2 -2
- package/dist/atomic/p-a3aaf456.entry.js.map +1 -1
- package/dist/atomic/{p-b7dd3ee9.entry.js → p-a91176aa.entry.js} +2 -2
- package/dist/atomic/{p-7464f00a.entry.js → p-b24d5a13.entry.js} +2 -2
- package/dist/atomic/p-b24d5a13.entry.js.map +1 -0
- package/dist/atomic/{p-0fe47a84.entry.js → p-b6c72b2c.entry.js} +2 -2
- package/dist/atomic/p-b6c72b2c.entry.js.map +1 -0
- package/dist/cjs/{analytics-config-5da84622.js → analytics-config-adcfb07d.js} +2 -2
- package/dist/cjs/{analytics-config-5da84622.js.map → analytics-config-adcfb07d.js.map} +1 -1
- package/dist/cjs/atomic-insight-interface.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-interface.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-user-actions-session_2.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-user-actions-toggle.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-user-actions-toggle.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-quickview-modal.cjs.entry.js +4 -4
- package/dist/cjs/atomic-quickview-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-recs-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-search-interface.cjs.entry.js +1 -1
- package/dist/cjs/version.cjs.js +2 -2
- package/dist/esm/{analytics-config-f2c1af69.js → analytics-config-df8dffa0.js} +2 -2
- package/dist/esm/{analytics-config-f2c1af69.js.map → analytics-config-df8dffa0.js.map} +1 -1
- package/dist/esm/atomic-insight-interface.entry.js +2 -2
- package/dist/esm/atomic-insight-interface.entry.js.map +1 -1
- package/dist/esm/atomic-insight-user-actions-session_2.entry.js.map +1 -1
- package/dist/esm/atomic-insight-user-actions-toggle.entry.js +1 -1
- package/dist/esm/atomic-insight-user-actions-toggle.entry.js.map +1 -1
- package/dist/esm/atomic-quickview-modal.entry.js +4 -4
- package/dist/esm/atomic-quickview-modal.entry.js.map +1 -1
- package/dist/esm/atomic-recs-interface.entry.js +1 -1
- package/dist/esm/atomic-search-interface.entry.js +1 -1
- package/dist/esm/version.js +2 -2
- package/dist/types/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.d.ts +2 -2
- package/dist/types/components/commerce/atomic-commerce-interface/atomic-commerce-interface.d.ts +8 -3
- package/dist/types/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.d.ts +1 -1
- package/dist/types/components/commerce/atomic-commerce-recommendation-list/atomic-commerce-recommendation-list.d.ts +14 -1
- package/dist/types/components/commerce/atomic-product-text/atomic-product-text.d.ts +6 -1
- package/dist/types/components/insight/atomic-insight-interface/atomic-insight-interface.d.ts +0 -3
- package/dist/types/components/insight/user-actions/atomic-insight-user-actions-timeline/atomic-insight-user-actions-timeline.d.ts +2 -1
- package/dist/types/components/insight/user-actions/atomic-insight-user-actions-toggle/atomic-insight-user-actions-toggle.d.ts +1 -1
- package/dist/types/components/search/result-template-components/quickview-iframe/quickview-iframe.d.ts +1 -0
- package/dist/types/components.d.ts +32 -0
- package/docs/atomic-docs.json +617 -1
- package/package.json +9 -14
- package/dist/atomic/p-0fe47a84.entry.js.map +0 -1
- package/dist/atomic/p-7464f00a.entry.js.map +0 -1
- package/dist/atomic/p-8bba9f56.entry.js +0 -2
- package/dist/atomic/p-8bba9f56.entry.js.map +0 -1
- /package/dist/atomic/{p-5b6d3b60.js.map → p-619e5bdd.js.map} +0 -0
- /package/dist/atomic/{p-28e855b9.entry.js.map → p-8c9696f3.entry.js.map} +0 -0
- /package/dist/atomic/{p-b7dd3ee9.entry.js.map → p-a91176aa.entry.js.map} +0 -0
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
const index = require('./index-757bc886.js');
|
|
6
6
|
const initQueue = require('./init-queue-a18aa323.js');
|
|
7
7
|
const insight = require('@coveo/headless/insight');
|
|
8
|
-
const analyticsConfig = require('./analytics-config-
|
|
8
|
+
const analyticsConfig = require('./analytics-config-adcfb07d.js');
|
|
9
9
|
const propsUtils = require('./props-utils-1e4ba1b0.js');
|
|
10
10
|
const replaceBreakpoint = require('./replace-breakpoint-9e1c0efa.js');
|
|
11
11
|
const store = require('./store-82abd941.js');
|
|
@@ -288,7 +288,7 @@ const AtomicInsightInterface = class {
|
|
|
288
288
|
this.initialized = true;
|
|
289
289
|
}
|
|
290
290
|
render() {
|
|
291
|
-
return (this.engine && (index.h(index.Host, { key: '
|
|
291
|
+
return (this.engine && (index.h(index.Host, { key: 'aed4bfd7d85a00c74732bbe3ee8aeb96ce93b640' }, index.h("slot", { key: '2b01a05f3df814e6ba4624ebe5c4fad59b8667c9', name: "full-search" }), index.h("slot", { key: '5729d003ec8ebf565d4b706fe5b6bfb1a749c5f3' }))));
|
|
292
292
|
}
|
|
293
293
|
get host() { return index.getElement(this); }
|
|
294
294
|
static get watchers() { return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"atomic-insight-interface.entry.cjs.js","mappings":"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","names":["getNextAnalyticsConfig","augmentWithExternalMiddleware","augmentAnalyticsWithAtomicVersion","store","createBaseStore","DEFAULT_MOBILE_BREAKPOINT","unsetLoadingFlag","setLoadingFlag","makeDesktopQuery","registerFacet","getFacetElements","waitUntilAppLoaded","CommonAtomicInterfaceHelper","i18next","setNonce","buildInsightResultsPerPage","loadFieldActions","buildInsightEngine","markParentAsReady","h","Host","ArrayProp"],"sources":["src/components/insight/atomic-insight-interface/analytics-config.ts","src/components/insight/atomic-insight-interface/store.ts","src/components/insight/atomic-insight-interface/atomic-insight-interface.pcss?tag=atomic-insight-interface&encapsulation=shadow","src/components/insight/atomic-insight-interface/atomic-insight-interface.tsx"],"sourcesContent":["import type {\n AnalyticsConfiguration as InsightAnalyticsConfiguration,\n EngineConfiguration as InsightEngineConfiguration,\n} from '@coveo/headless/insight';\nimport {\n type AnalyticsPayload,\n augmentAnalyticsWithAtomicVersion,\n augmentWithExternalMiddleware,\n getNextAnalyticsConfig,\n} from '../../common/interface/analytics-config';\n\nexport function getAnalyticsConfig(\n searchEngineConfig: InsightEngineConfiguration,\n enabled: boolean\n): InsightAnalyticsConfiguration {\n switch (searchEngineConfig.analytics?.analyticsMode) {\n case 'next':\n return getNextAnalyticsConfig(searchEngineConfig, enabled);\n default:\n return getLegacyAnalyticsConfig(searchEngineConfig, enabled);\n }\n}\n\nfunction getLegacyAnalyticsConfig(\n searchEngineConfig: InsightEngineConfiguration,\n enabled: boolean\n): InsightAnalyticsConfiguration {\n const analyticsClientMiddleware = (\n event: string,\n payload: AnalyticsPayload\n ) => augmentAnalytics(event, payload, searchEngineConfig);\n\n const defaultConfiguration: InsightAnalyticsConfiguration = {\n analyticsClientMiddleware,\n enabled,\n documentLocation: document.location.href,\n ...(document.referrer && {originLevel3: document.referrer}),\n };\n\n if (searchEngineConfig.analytics) {\n return {\n ...defaultConfiguration,\n ...searchEngineConfig.analytics,\n analyticsClientMiddleware,\n };\n }\n return defaultConfiguration;\n}\n\nfunction augmentAnalytics(\n event: string,\n payload: AnalyticsPayload,\n config: InsightEngineConfiguration\n) {\n let result = augmentWithExternalMiddleware(event, payload, config);\n result = augmentAnalyticsWithAtomicVersion(result);\n return result;\n}\n","import type {\n DateFacetValue,\n InsightEngine,\n NumericFacetValue,\n} from '@coveo/headless/insight';\nimport {DEFAULT_MOBILE_BREAKPOINT} from '@/src/utils/replace-breakpoint';\nimport type {\n FacetInfo,\n FacetStore,\n FacetType,\n FacetValueFormat,\n} from '../../common/facets/facet-common-store';\nimport {\n type BaseStore,\n createBaseStore,\n getFacetElements,\n type ResultListInfo,\n registerFacet,\n setLoadingFlag,\n unsetLoadingFlag,\n waitUntilAppLoaded,\n} from '../../common/interface/store';\nimport {makeDesktopQuery} from '../atomic-insight-layout/insight-layout';\n\ninterface FacetInfoMap {\n [facetId: string]:\n | FacetInfo\n | (FacetInfo & FacetValueFormat<NumericFacetValue>)\n | (FacetInfo & FacetValueFormat<DateFacetValue>);\n}\n\ninterface Data {\n loadingFlags: string[];\n iconAssetsPath: string;\n resultList: ResultListInfo | undefined;\n mobileBreakpoint: string;\n facets: FacetStore<FacetInfo>;\n numericFacets: FacetStore<FacetInfo & FacetValueFormat<NumericFacetValue>>;\n dateFacets: FacetStore<FacetInfo & FacetValueFormat<DateFacetValue>>;\n categoryFacets: FacetStore<FacetInfo>;\n facetElements: HTMLElement[];\n fieldsToInclude: string[];\n}\n\nexport type InsightStore = BaseStore<Data> & {\n isMobile(): boolean;\n unsetLoadingFlag(loadingFlag: string): void;\n setLoadingFlag(flag: string): void;\n registerFacet<T extends FacetType, U extends string>(\n facetType: T,\n data: Data[T][U] & {facetId: U; element: HTMLElement}\n ): void;\n getFacetElements(): HTMLElement[];\n waitUntilAppLoaded(callback: () => void): void;\n getUniqueIDFromEngine(engine: InsightEngine): string;\n getAllFacets(): FacetInfoMap;\n};\n\nexport function createInsightStore(): InsightStore {\n const store = createBaseStore<Data>({\n loadingFlags: [],\n iconAssetsPath: '',\n resultList: undefined,\n mobileBreakpoint: DEFAULT_MOBILE_BREAKPOINT,\n facets: {},\n numericFacets: {},\n dateFacets: {},\n categoryFacets: {},\n facetElements: [],\n fieldsToInclude: [],\n });\n\n return {\n ...store,\n\n unsetLoadingFlag(loadingFlag: string) {\n unsetLoadingFlag(store, loadingFlag);\n },\n\n setLoadingFlag(loadingFlag: string) {\n setLoadingFlag(store, loadingFlag);\n },\n\n getAllFacets() {\n return {\n ...store.state.facets,\n ...store.state.dateFacets,\n ...store.state.categoryFacets,\n ...store.state.numericFacets,\n };\n },\n\n isMobile() {\n return !window.matchMedia(makeDesktopQuery(store.state.mobileBreakpoint))\n .matches;\n },\n\n registerFacet<T extends FacetType, U extends string>(\n facetType: T,\n data: Data[T][U] & {facetId: U; element: HTMLElement}\n ) {\n registerFacet(store, facetType, data);\n },\n\n getFacetElements() {\n return getFacetElements(store);\n },\n\n waitUntilAppLoaded(callback: () => void) {\n waitUntilAppLoaded(store, callback);\n },\n\n getUniqueIDFromEngine(engine: InsightEngine): string {\n return engine.state.search.searchResponseId;\n },\n };\n}\n","@import '../../../global/global.pcss';\n\n:host {\n position: relative;\n display: block;\n}\n\nslot[name='full-search'] {\n position: absolute;\n top: 0;\n right: 0;\n display: block;\n}\n","import {markParentAsReady} from '@/src/utils/init-queue';\nimport {loadFieldActions} from '@coveo/headless/insight';\nimport {\n LogLevel as InsightLogLevel,\n InsightEngine,\n InsightEngineConfiguration,\n buildInsightEngine,\n buildResultsPerPage as buildInsightResultsPerPage,\n} from '@coveo/headless/insight';\nimport {\n Component,\n Element,\n h,\n Host,\n Listen,\n Method,\n Prop,\n setNonce,\n State,\n Watch,\n} from '@stencil/core';\nimport i18next, {i18n} from 'i18next';\nimport {InitializeEvent} from '../../../utils/initialization-utils';\nimport {ArrayProp} from '../../../utils/props-utils';\nimport {CommonBindings, NonceBindings} from '../../common/interface/bindings';\nimport {\n StencilBaseAtomicInterface,\n CommonAtomicInterfaceHelper,\n} from '../../common/interface/interface-common-stencil';\nimport {getAnalyticsConfig} from './analytics-config';\nimport {createInsightStore, InsightStore} from './store';\n\nconst FirstInsightRequestExecutedFlag = 'firstInsightRequestExecuted';\nexport type InsightInitializationOptions = InsightEngineConfiguration;\nexport type InsightBindings = CommonBindings<\n InsightEngine,\n InsightStore,\n HTMLAtomicInsightInterfaceElement\n> &\n NonceBindings;\n\n/**\n * @internal\n */\n@Component({\n tag: 'atomic-insight-interface',\n styleUrl: 'atomic-insight-interface.pcss',\n shadow: true,\n})\nexport class AtomicInsightInterface\n implements StencilBaseAtomicInterface<InsightEngine>\n{\n private initialized = false;\n\n @State() public error?: Error;\n\n /**\n * The service insight interface headless engine.\n */\n @Prop({mutable: true}) public engine?: InsightEngine;\n /**\n * Whether analytics should be enabled.\n */\n @Prop({reflect: true}) public analytics = true;\n\n /**\n * The service insight interface i18next instance.\n */\n @Prop() public i18n: i18n;\n /**\n * The severity level of the messages to log in the console.\n */\n @Prop({reflect: true}) public logLevel?: InsightLogLevel;\n\n /**\n * The service insight interface language.\n */\n @Prop({reflect: true}) public language = 'en';\n\n /**\n * The language assets path. By default, this will be a relative URL pointing to `./lang`.\n *\n * Example: \"/mypublicpath/languages\"\n *\n */\n @Prop({reflect: true}) public languageAssetsPath = './lang';\n\n /**\n * The icon assets path. By default, this will be a relative URL pointing to `./assets`.\n *\n * Example: \"/mypublicpath/icons\"\n *\n */\n @Prop({reflect: true}) public iconAssetsPath = './assets';\n /**\n * A list of non-default fields to include in the query results.\n *\n * Specify the property as an array using a JSON string representation:\n * ```html\n * <atomic-insight-interface fields-to-include='[\"fieldA\", \"fieldB\"]'></atomic-insight-interface>\n * ```\n */\n @ArrayProp()\n @Prop({mutable: true})\n public fieldsToInclude: string[] | string = '[]';\n\n /**\n * The number of results per page. By default, this is set to `5`.\n */\n @Prop({reflect: true}) resultsPerPage = 5;\n\n /**\n * The value to set the [nonce](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/nonce) attribute to on inline script and style elements generated by this interface and its child components.\n * If your application is served with a Content Security Policy (CSP) that doesn't include the `script-src: 'unsafe-inline'` or `style-src: 'unsafe-inline'` directives,\n * you should ensure that your application server generates a new nonce on every page load and uses the generated value to set this prop and serve the corresponding CSP response headers\n * (i.e., script-src 'nonce-<YOUR_GENERATED_NONCE>' and style-src 'nonce-<YOUR_GENERATED_NONCE>').\n * Otherwise you may see console errors such as\n * - Refused to execute inline script because it violates the following Content Security Policy directive: [...]\n * - Refused to apply inline style because it violates the following Content Security Policy directive: [...].\n * When using a nonce, the first import of Atomic should be to import & call the `setNonce` function with the generated nonce value.\n * @example:\n * ```html\n * <script nonce=\"<YOUR_GENERATED_NONCE>\">\n * import {setNonce} from '@coveo/atomic';\n * setNonce('<YOUR_GENERATED_NONCE>');\n * </script>\n * ```\n */\n @Prop({reflect: true}) public CspNonce?: string;\n\n @Element() public host!: HTMLAtomicInsightInterfaceElement;\n\n private store = createInsightStore();\n private commonInterfaceHelper: CommonAtomicInterfaceHelper<InsightEngine>;\n\n private i18Initialized: Promise<void>;\n private componentWillLoadCalledPromise: Promise<void>;\n private componentWillLoadResolver: () => void;\n\n public constructor() {\n this.commonInterfaceHelper = new CommonAtomicInterfaceHelper(\n this,\n 'CoveoAtomic'\n );\n ({\n promise: this.componentWillLoadCalledPromise,\n resolve: this.componentWillLoadResolver,\n } = Promise.withResolvers<void>());\n const {promise, resolve} = Promise.withResolvers<void>();\n this.i18Initialized = promise;\n this.i18n = i18next.createInstance(undefined, resolve);\n }\n\n public connectedCallback() {\n this.store.setLoadingFlag(FirstInsightRequestExecutedFlag);\n }\n\n public componentWillLoad() {\n if (this.CspNonce) {\n setNonce(this.CspNonce);\n }\n this.componentWillLoadResolver();\n }\n\n private initResultsPerPage() {\n if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n return;\n }\n buildInsightResultsPerPage(this.bindings.engine, {\n initialState: {numberOfResults: this.resultsPerPage},\n });\n }\n\n public registerFieldsToInclude() {\n if (this.fieldsToInclude.length) {\n this.engine!.dispatch(\n loadFieldActions(this.engine!).registerFieldsToInclude([\n ...this.fieldsToInclude,\n ])\n );\n }\n }\n\n /**\n * Initializes the connection with the headless insight engine using options for `accessToken` (required), `organizationId` (required), `environment` (defaults to `prod`), and `renewAccessToken`.\n */\n @Method() public initialize(options: InsightInitializationOptions) {\n return this.internalInitialization(() => this.initEngine(options));\n }\n\n /**\n * Initializes the connection with an already preconfigured headless insight engine.\n *\n */\n @Method() public initializeWithInsightEngine(engine: InsightEngine) {\n return this.internalInitialization(() => (this.engine = engine));\n }\n\n /**\n *\n * Executes the first search and logs the interface load event to analytics, after initializing connection to the headless search engine.\n */\n @Method() public async executeFirstSearch() {\n if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n return;\n }\n if (!this.initialized) {\n console.error(\n 'You have to wait until the \"initialize\" promise is fulfilled before executing a search.',\n this.host\n );\n return;\n }\n this.engine.executeFirstSearch();\n }\n\n @Watch('iconAssetsPath')\n public updateIconAssetsPath() {\n this.store.state.iconAssetsPath = this.iconAssetsPath;\n }\n\n @Listen('atomic/initializeComponent')\n public handleInitialization(event: InitializeEvent) {\n this.commonInterfaceHelper.onComponentInitializing(event);\n }\n\n @Watch('language')\n public updateLanguage() {\n return this.commonInterfaceHelper.onLanguageChange();\n }\n\n @Watch('analytics')\n public toggleAnalytics() {\n this.commonInterfaceHelper.onAnalyticsChange();\n }\n\n public get bindings(): InsightBindings {\n return {\n engine: this.engine!,\n i18n: this.i18n,\n store: this.store,\n interfaceElement: this.host,\n createStyleElement: () => {\n const styleTag = document.createElement('style');\n if (this.CspNonce) {\n styleTag.setAttribute('nonce', this.CspNonce);\n }\n return styleTag;\n },\n createScriptElement: () => {\n const styleTag = document.createElement('script');\n if (this.CspNonce) {\n styleTag.setAttribute('nonce', this.CspNonce);\n }\n return styleTag;\n },\n };\n }\n\n private initEngine(options: InsightInitializationOptions) {\n const analyticsConfig = getAnalyticsConfig(options, this.analytics);\n try {\n this.engine = buildInsightEngine({\n configuration: {\n ...options,\n analytics: analyticsConfig,\n },\n loggerOptions: {\n level: this.logLevel,\n },\n });\n } catch (error) {\n this.error = error as Error;\n throw error;\n }\n }\n\n private async internalInitialization(initEngine: () => void) {\n await this.componentWillLoadCalledPromise;\n await Promise.all([\n this.commonInterfaceHelper.onInitialization(initEngine),\n this.i18Initialized,\n ]);\n await this.updateLanguage();\n markParentAsReady(this.host);\n this.store.unsetLoadingFlag(FirstInsightRequestExecutedFlag);\n this.initResultsPerPage();\n this.initialized = true;\n }\n\n render() {\n return (\n this.engine && (\n <Host>\n <slot name=\"full-search\"></slot>\n <slot></slot>\n </Host>\n )\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"atomic-insight-interface.entry.cjs.js","mappings":"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","names":["getNextAnalyticsConfig","augmentWithExternalMiddleware","augmentAnalyticsWithAtomicVersion","store","createBaseStore","DEFAULT_MOBILE_BREAKPOINT","unsetLoadingFlag","setLoadingFlag","makeDesktopQuery","registerFacet","getFacetElements","waitUntilAppLoaded","CommonAtomicInterfaceHelper","i18next","setNonce","buildInsightResultsPerPage","loadFieldActions","buildInsightEngine","markParentAsReady","h","Host","ArrayProp"],"sources":["src/components/insight/atomic-insight-interface/analytics-config.ts","src/components/insight/atomic-insight-interface/store.ts","src/components/insight/atomic-insight-interface/atomic-insight-interface.pcss?tag=atomic-insight-interface&encapsulation=shadow","src/components/insight/atomic-insight-interface/atomic-insight-interface.tsx"],"sourcesContent":["import type {\n AnalyticsConfiguration as InsightAnalyticsConfiguration,\n EngineConfiguration as InsightEngineConfiguration,\n} from '@coveo/headless/insight';\nimport {\n type AnalyticsPayload,\n augmentAnalyticsWithAtomicVersion,\n augmentWithExternalMiddleware,\n getNextAnalyticsConfig,\n} from '../../common/interface/analytics-config';\n\nexport function getAnalyticsConfig(\n searchEngineConfig: InsightEngineConfiguration,\n enabled: boolean\n): InsightAnalyticsConfiguration {\n switch (searchEngineConfig.analytics?.analyticsMode) {\n case 'next':\n return getNextAnalyticsConfig(searchEngineConfig, enabled);\n default:\n return getLegacyAnalyticsConfig(searchEngineConfig, enabled);\n }\n}\n\nfunction getLegacyAnalyticsConfig(\n searchEngineConfig: InsightEngineConfiguration,\n enabled: boolean\n): InsightAnalyticsConfiguration {\n const analyticsClientMiddleware = (\n event: string,\n payload: AnalyticsPayload\n ) => augmentAnalytics(event, payload, searchEngineConfig);\n\n const defaultConfiguration: InsightAnalyticsConfiguration = {\n analyticsClientMiddleware,\n enabled,\n documentLocation: document.location.href,\n ...(document.referrer && {originLevel3: document.referrer}),\n };\n\n if (searchEngineConfig.analytics) {\n return {\n ...defaultConfiguration,\n ...searchEngineConfig.analytics,\n analyticsClientMiddleware,\n };\n }\n return defaultConfiguration;\n}\n\nfunction augmentAnalytics(\n event: string,\n payload: AnalyticsPayload,\n config: InsightEngineConfiguration\n) {\n let result = augmentWithExternalMiddleware(event, payload, config);\n result = augmentAnalyticsWithAtomicVersion(result);\n return result;\n}\n","import type {\n DateFacetValue,\n InsightEngine,\n NumericFacetValue,\n} from '@coveo/headless/insight';\nimport {DEFAULT_MOBILE_BREAKPOINT} from '@/src/utils/replace-breakpoint';\nimport type {\n FacetInfo,\n FacetStore,\n FacetType,\n FacetValueFormat,\n} from '../../common/facets/facet-common-store';\nimport {\n type BaseStore,\n createBaseStore,\n getFacetElements,\n type ResultListInfo,\n registerFacet,\n setLoadingFlag,\n unsetLoadingFlag,\n waitUntilAppLoaded,\n} from '../../common/interface/store';\nimport {makeDesktopQuery} from '../atomic-insight-layout/insight-layout';\n\ninterface FacetInfoMap {\n [facetId: string]:\n | FacetInfo\n | (FacetInfo & FacetValueFormat<NumericFacetValue>)\n | (FacetInfo & FacetValueFormat<DateFacetValue>);\n}\n\ninterface Data {\n loadingFlags: string[];\n iconAssetsPath: string;\n resultList: ResultListInfo | undefined;\n mobileBreakpoint: string;\n facets: FacetStore<FacetInfo>;\n numericFacets: FacetStore<FacetInfo & FacetValueFormat<NumericFacetValue>>;\n dateFacets: FacetStore<FacetInfo & FacetValueFormat<DateFacetValue>>;\n categoryFacets: FacetStore<FacetInfo>;\n facetElements: HTMLElement[];\n fieldsToInclude: string[];\n}\n\nexport type InsightStore = BaseStore<Data> & {\n isMobile(): boolean;\n unsetLoadingFlag(loadingFlag: string): void;\n setLoadingFlag(flag: string): void;\n registerFacet<T extends FacetType, U extends string>(\n facetType: T,\n data: Data[T][U] & {facetId: U; element: HTMLElement}\n ): void;\n getFacetElements(): HTMLElement[];\n waitUntilAppLoaded(callback: () => void): void;\n getUniqueIDFromEngine(engine: InsightEngine): string;\n getAllFacets(): FacetInfoMap;\n};\n\nexport function createInsightStore(): InsightStore {\n const store = createBaseStore<Data>({\n loadingFlags: [],\n iconAssetsPath: '',\n resultList: undefined,\n mobileBreakpoint: DEFAULT_MOBILE_BREAKPOINT,\n facets: {},\n numericFacets: {},\n dateFacets: {},\n categoryFacets: {},\n facetElements: [],\n fieldsToInclude: [],\n });\n\n return {\n ...store,\n\n unsetLoadingFlag(loadingFlag: string) {\n unsetLoadingFlag(store, loadingFlag);\n },\n\n setLoadingFlag(loadingFlag: string) {\n setLoadingFlag(store, loadingFlag);\n },\n\n getAllFacets() {\n return {\n ...store.state.facets,\n ...store.state.dateFacets,\n ...store.state.categoryFacets,\n ...store.state.numericFacets,\n };\n },\n\n isMobile() {\n return !window.matchMedia(makeDesktopQuery(store.state.mobileBreakpoint))\n .matches;\n },\n\n registerFacet<T extends FacetType, U extends string>(\n facetType: T,\n data: Data[T][U] & {facetId: U; element: HTMLElement}\n ) {\n registerFacet(store, facetType, data);\n },\n\n getFacetElements() {\n return getFacetElements(store);\n },\n\n waitUntilAppLoaded(callback: () => void) {\n waitUntilAppLoaded(store, callback);\n },\n\n getUniqueIDFromEngine(engine: InsightEngine): string {\n return engine.state.search.searchResponseId;\n },\n };\n}\n","@import '../../../global/global.pcss';\n\n:host {\n position: relative;\n display: block;\n}\n\nslot[name='full-search'] {\n position: absolute;\n top: 0;\n right: 0;\n display: block;\n}\n","import {markParentAsReady} from '@/src/utils/init-queue';\nimport {loadFieldActions} from '@coveo/headless/insight';\nimport {\n LogLevel as InsightLogLevel,\n InsightEngine,\n InsightEngineConfiguration,\n buildInsightEngine,\n buildResultsPerPage as buildInsightResultsPerPage,\n} from '@coveo/headless/insight';\nimport {\n Component,\n Element,\n h,\n Host,\n Listen,\n Method,\n Prop,\n setNonce,\n State,\n Watch,\n} from '@stencil/core';\nimport i18next, {i18n} from 'i18next';\nimport {InitializeEvent} from '../../../utils/initialization-utils';\nimport {ArrayProp} from '../../../utils/props-utils';\nimport {CommonBindings, NonceBindings} from '../../common/interface/bindings';\nimport {\n StencilBaseAtomicInterface,\n CommonAtomicInterfaceHelper,\n} from '../../common/interface/interface-common-stencil';\nimport {getAnalyticsConfig} from './analytics-config';\nimport {createInsightStore, InsightStore} from './store';\n\nconst FirstInsightRequestExecutedFlag = 'firstInsightRequestExecuted';\nexport type InsightInitializationOptions = InsightEngineConfiguration;\nexport type InsightBindings = CommonBindings<\n InsightEngine,\n InsightStore,\n HTMLAtomicInsightInterfaceElement\n> &\n NonceBindings;\n\n@Component({\n tag: 'atomic-insight-interface',\n styleUrl: 'atomic-insight-interface.pcss',\n shadow: true,\n})\nexport class AtomicInsightInterface\n implements StencilBaseAtomicInterface<InsightEngine>\n{\n private initialized = false;\n\n @State() public error?: Error;\n\n /**\n * The service insight interface headless engine.\n */\n @Prop({mutable: true}) public engine?: InsightEngine;\n /**\n * Whether analytics should be enabled.\n */\n @Prop({reflect: true}) public analytics = true;\n\n /**\n * The service insight interface i18next instance.\n */\n @Prop() public i18n: i18n;\n /**\n * The severity level of the messages to log in the console.\n */\n @Prop({reflect: true}) public logLevel?: InsightLogLevel;\n\n /**\n * The service insight interface language.\n */\n @Prop({reflect: true}) public language = 'en';\n\n /**\n * The language assets path. By default, this will be a relative URL pointing to `./lang`.\n *\n * Example: \"/mypublicpath/languages\"\n *\n */\n @Prop({reflect: true}) public languageAssetsPath = './lang';\n\n /**\n * The icon assets path. By default, this will be a relative URL pointing to `./assets`.\n *\n * Example: \"/mypublicpath/icons\"\n *\n */\n @Prop({reflect: true}) public iconAssetsPath = './assets';\n /**\n * A list of non-default fields to include in the query results.\n *\n * Specify the property as an array using a JSON string representation:\n * ```html\n * <atomic-insight-interface fields-to-include='[\"fieldA\", \"fieldB\"]'></atomic-insight-interface>\n * ```\n */\n @ArrayProp()\n @Prop({mutable: true})\n public fieldsToInclude: string[] | string = '[]';\n\n /**\n * The number of results per page. By default, this is set to `5`.\n */\n @Prop({reflect: true}) resultsPerPage = 5;\n\n /**\n * The value to set the [nonce](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/nonce) attribute to on inline script and style elements generated by this interface and its child components.\n * If your application is served with a Content Security Policy (CSP) that doesn't include the `script-src: 'unsafe-inline'` or `style-src: 'unsafe-inline'` directives,\n * you should ensure that your application server generates a new nonce on every page load and uses the generated value to set this prop and serve the corresponding CSP response headers\n * (i.e., script-src 'nonce-<YOUR_GENERATED_NONCE>' and style-src 'nonce-<YOUR_GENERATED_NONCE>').\n * Otherwise you may see console errors such as\n * - Refused to execute inline script because it violates the following Content Security Policy directive: [...]\n * - Refused to apply inline style because it violates the following Content Security Policy directive: [...].\n * When using a nonce, the first import of Atomic should be to import & call the `setNonce` function with the generated nonce value.\n * @example:\n * ```html\n * <script nonce=\"<YOUR_GENERATED_NONCE>\">\n * import {setNonce} from '@coveo/atomic';\n * setNonce('<YOUR_GENERATED_NONCE>');\n * </script>\n * ```\n */\n @Prop({reflect: true}) public CspNonce?: string;\n\n @Element() public host!: HTMLAtomicInsightInterfaceElement;\n\n private store = createInsightStore();\n private commonInterfaceHelper: CommonAtomicInterfaceHelper<InsightEngine>;\n\n private i18Initialized: Promise<void>;\n private componentWillLoadCalledPromise: Promise<void>;\n private componentWillLoadResolver: () => void;\n\n public constructor() {\n this.commonInterfaceHelper = new CommonAtomicInterfaceHelper(\n this,\n 'CoveoAtomic'\n );\n ({\n promise: this.componentWillLoadCalledPromise,\n resolve: this.componentWillLoadResolver,\n } = Promise.withResolvers<void>());\n const {promise, resolve} = Promise.withResolvers<void>();\n this.i18Initialized = promise;\n this.i18n = i18next.createInstance(undefined, resolve);\n }\n\n public connectedCallback() {\n this.store.setLoadingFlag(FirstInsightRequestExecutedFlag);\n }\n\n public componentWillLoad() {\n if (this.CspNonce) {\n setNonce(this.CspNonce);\n }\n this.componentWillLoadResolver();\n }\n\n private initResultsPerPage() {\n if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n return;\n }\n buildInsightResultsPerPage(this.bindings.engine, {\n initialState: {numberOfResults: this.resultsPerPage},\n });\n }\n\n public registerFieldsToInclude() {\n if (this.fieldsToInclude.length) {\n this.engine!.dispatch(\n loadFieldActions(this.engine!).registerFieldsToInclude([\n ...this.fieldsToInclude,\n ])\n );\n }\n }\n\n /**\n * Initializes the connection with the headless insight engine using options for `accessToken` (required), `organizationId` (required), `environment` (defaults to `prod`), and `renewAccessToken`.\n */\n @Method() public initialize(options: InsightInitializationOptions) {\n return this.internalInitialization(() => this.initEngine(options));\n }\n\n /**\n * Initializes the connection with an already preconfigured headless insight engine.\n *\n */\n @Method() public initializeWithInsightEngine(engine: InsightEngine) {\n return this.internalInitialization(() => (this.engine = engine));\n }\n\n /**\n *\n * Executes the first search and logs the interface load event to analytics, after initializing connection to the headless search engine.\n */\n @Method() public async executeFirstSearch() {\n if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n return;\n }\n if (!this.initialized) {\n console.error(\n 'You have to wait until the \"initialize\" promise is fulfilled before executing a search.',\n this.host\n );\n return;\n }\n this.engine.executeFirstSearch();\n }\n\n @Watch('iconAssetsPath')\n public updateIconAssetsPath() {\n this.store.state.iconAssetsPath = this.iconAssetsPath;\n }\n\n @Listen('atomic/initializeComponent')\n public handleInitialization(event: InitializeEvent) {\n this.commonInterfaceHelper.onComponentInitializing(event);\n }\n\n @Watch('language')\n public updateLanguage() {\n return this.commonInterfaceHelper.onLanguageChange();\n }\n\n @Watch('analytics')\n public toggleAnalytics() {\n this.commonInterfaceHelper.onAnalyticsChange();\n }\n\n public get bindings(): InsightBindings {\n return {\n engine: this.engine!,\n i18n: this.i18n,\n store: this.store,\n interfaceElement: this.host,\n createStyleElement: () => {\n const styleTag = document.createElement('style');\n if (this.CspNonce) {\n styleTag.setAttribute('nonce', this.CspNonce);\n }\n return styleTag;\n },\n createScriptElement: () => {\n const styleTag = document.createElement('script');\n if (this.CspNonce) {\n styleTag.setAttribute('nonce', this.CspNonce);\n }\n return styleTag;\n },\n };\n }\n\n private initEngine(options: InsightInitializationOptions) {\n const analyticsConfig = getAnalyticsConfig(options, this.analytics);\n try {\n this.engine = buildInsightEngine({\n configuration: {\n ...options,\n analytics: analyticsConfig,\n },\n loggerOptions: {\n level: this.logLevel,\n },\n });\n } catch (error) {\n this.error = error as Error;\n throw error;\n }\n }\n\n private async internalInitialization(initEngine: () => void) {\n await this.componentWillLoadCalledPromise;\n await Promise.all([\n this.commonInterfaceHelper.onInitialization(initEngine),\n this.i18Initialized,\n ]);\n await this.updateLanguage();\n markParentAsReady(this.host);\n this.store.unsetLoadingFlag(FirstInsightRequestExecutedFlag);\n this.initResultsPerPage();\n this.initialized = true;\n }\n\n render() {\n return (\n this.engine && (\n <Host>\n <slot name=\"full-search\"></slot>\n <slot></slot>\n </Host>\n )\n );\n }\n}\n"],"version":3}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"atomic-insight-user-actions-session.atomic-insight-user-actions-timeline.entry.cjs.js","mappings":"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","names":["SearchIcon","QuickviewIcon","parseTimestampToDateDetails","h","Button","__decorate","InitializeBindings","buildInsightUserActions","NoItemsContainer","MagnifyingGlass","BindStateToController"],"sources":["src/components/insight/user-actions/atomic-insight-user-actions-session/user-action.tsx","src/components/insight/user-actions/atomic-insight-user-actions-session/atomic-insight-user-actions-session.pcss?tag=atomic-insight-user-actions-session&encapsulation=shadow","src/components/insight/user-actions/atomic-insight-user-actions-session/atomic-insight-user-actions-session.tsx","src/components/insight/user-actions/atomic-insight-user-actions-timeline/atomic-insight-user-actions-timeline.pcss?tag=atomic-insight-user-actions-timeline&encapsulation=shadow","src/components/insight/user-actions/atomic-insight-user-actions-timeline/atomic-insight-user-actions-timeline.tsx"],"sourcesContent":["import {UserAction as IUserAction} from '@coveo/headless/insight';\nimport {FunctionalComponent, h} from '@stencil/core';\nimport BookmarkIcon from '../../../../images/bookmark.svg';\nimport DocumentIcon from '../../../../images/document.svg';\nimport PointIcon from '../../../../images/point.svg';\nimport QuickviewIcon from '../../../../images/quickview.svg';\nimport SearchIcon from '../../../../images/search.svg';\nimport {parseTimestampToDateDetails} from '../../../../utils/date-utils';\nimport {InsightBindings} from '../../atomic-insight-interface/atomic-insight-interface';\n\nconst icons = {\n SEARCH: SearchIcon,\n CLICK: DocumentIcon,\n VIEW: QuickviewIcon,\n CUSTOM: PointIcon,\n TICKET_CREATION: BookmarkIcon,\n};\n\ninterface UserAction {\n action: IUserAction;\n bindings: InsightBindings;\n}\n\nexport const UserAction: FunctionalComponent<UserAction> = ({\n bindings,\n action,\n}) => {\n const renderActionTimestamp = () => {\n const {hours, minutes} = parseTimestampToDateDetails(action.timestamp);\n\n const formattedHours = String(hours).padStart(2, '0');\n const formattedMinutes = String(minutes).padStart(2, '0');\n\n return `${formattedHours}:${formattedMinutes}`;\n };\n\n const renderIcon = () => {\n const iconClasses = `w-3 h-3 ${['CLICK', 'VIEW'].includes(action.actionType) ? 'text-primary' : ''}`;\n\n return (\n <atomic-icon\n icon={icons[action.actionType]}\n class={iconClasses}\n ></atomic-icon>\n );\n };\n\n const renderActionTitle = () => {\n switch (action.actionType) {\n case 'TICKET_CREATION':\n return (\n <div class=\"ticket-creation-action__text text-xs font-semibold\">\n {bindings.i18n.t('ticket-created')}\n </div>\n );\n case 'CUSTOM':\n return (\n <div class=\"text-xs font-semibold\">\n {action.eventData?.value ?? action.eventData?.type}\n </div>\n );\n case 'SEARCH':\n return (\n <div class=\"text-xs font-semibold\">\n {action.query || bindings.i18n.t('empty-search')}\n </div>\n );\n case 'VIEW':\n return (\n <a\n href={action.document?.contentIdValue}\n class=\"text-primary text-xs font-semibold\"\n target=\"_blank\"\n >\n {action.document?.title}\n </a>\n );\n case 'CLICK':\n return (\n <div class=\"text-xs font-semibold\">{action.document?.title}</div>\n );\n default:\n return null;\n }\n };\n\n return (\n <div class=\"flex\">\n <div class=\"flex-none pr-2\">\n <div class=\"flex justify-center py-1\">{renderIcon()}</div>\n <div class=\"flex justify-center py-1\">\n <div class=\"user-action__separator h-7 w-0.5 rounded\"></div>\n </div>\n </div>\n <div class=\"flex-1\">\n {renderActionTitle()}\n <div class=\"text-neutral-dark text-xxs flex py-2 font-light\">\n <div>{renderActionTimestamp()}</div>\n <div class=\"px-2\">{action.searchHub}</div>\n </div>\n </div>\n </div>\n );\n};\n","@import '../../../../global/global.pcss';\n\n.session-start-icon__container {\n background-color: #fbb439;\n}\n\n.user-action__separator {\n @apply bg-neutral;\n}\n\n.ticket-creation-action__text {\n @apply text-success;\n}\n\n.text-xxs {\n font-size: 0.625rem;\n}\n","import {UserAction as IUserAction} from '@coveo/headless/insight';\nimport {Component, h, Prop, Watch, State} from '@stencil/core';\nimport Flag from '../../../../images/flag.svg';\nimport ThreeDotsIcon from '../../../../images/three-dots.svg';\nimport {parseTimestampToDateDetails} from '../../../../utils/date-utils';\nimport {InitializeBindings} from '../../../../utils/initialization-utils';\nimport {Button} from '../../../common/stencil-button';\nimport {InsightBindings} from '../../atomic-insight-interface/atomic-insight-interface';\nimport {UserAction} from './user-action';\n\nexport type UserActionType =\n | 'SEARCH'\n | 'CLICK'\n | 'TICKET_CREATION'\n | 'VIEW'\n | 'CUSTOM';\n\n/**\n * @internal\n * The `AtomicInsightUserActionSession` component displays all the user actions that took place during a specific user session.\n * @category Insight Panel\n * @example\n * <atomic-insight-user-actions-session userActions={actions} startTimestamp={1723035731}></atomic-insight-user-actions-session>\n */\n@Component({\n tag: 'atomic-insight-user-actions-session',\n styleUrl: 'atomic-insight-user-actions-session.pcss',\n shadow: true,\n})\nexport class AtomicInsightUserActionsSession {\n @InitializeBindings() public bindings!: InsightBindings;\n @State() public error!: Error;\n\n /**\n * The start time of the session as a Unix timestamp.\n */\n @Prop() public startTimestamp!: number;\n /**\n * The list of user actions performed during the session.\n */\n @Prop() public userActions!: Array<IUserAction>;\n\n private userActionsToDisplay: Array<IUserAction> = [];\n private userActionsAfterCaseCreation: Array<IUserAction> = [];\n @State() areActionsAfterCaseCreationVisible = false;\n\n connectedCallback() {\n this.prepareUserActionsToDisplay();\n }\n\n @Watch('userActions')\n prepareUserActionsToDisplay() {\n const caseCreationIndex = this.userActions.findIndex(\n ({actionType}) => actionType === 'TICKET_CREATION'\n );\n const isCaseCreationSession = caseCreationIndex !== -1;\n\n if (!isCaseCreationSession) {\n this.userActionsToDisplay = this.userActions;\n this.userActionsAfterCaseCreation = [];\n } else {\n this.userActionsToDisplay = this.userActions.slice(caseCreationIndex);\n this.userActionsAfterCaseCreation = this.userActions.slice(\n 0,\n caseCreationIndex\n );\n }\n }\n\n showActionsAfterCaseCreation() {\n this.areActionsAfterCaseCreationVisible = true;\n }\n\n renderSessionStartDate() {\n const caseCreationIndex = this.userActions.findIndex(\n ({actionType}) => actionType === 'TICKET_CREATION'\n );\n const isCaseCreationSession = caseCreationIndex !== -1;\n\n const {year, month, dayOfWeek, day} = parseTimestampToDateDetails(\n this.startTimestamp\n );\n\n const formatedStartDate = `${dayOfWeek}. ${month} ${day}, ${year}`;\n return (\n <div class=\"flex items-center px-2 pb-3\">\n {isCaseCreationSession ? (\n <div class=\"session-start-icon__container mr-2 flex h-5 w-5 items-center justify-center rounded-full\">\n <atomic-icon icon={Flag} class=\"h-3 w-3\"></atomic-icon>\n </div>\n ) : null}\n\n <div class=\"flex-1 font-semibold\">{formatedStartDate}</div>\n </div>\n );\n }\n\n renderActions(actions: Array<IUserAction>) {\n return (\n <ol class=\"px-3\">\n {actions?.map((action) => (\n <UserAction action={action} bindings={this.bindings}></UserAction>\n ))}\n </ol>\n );\n }\n\n renderShowMoreActionsButton() {\n const btnClasses = 'flex items-center p-1 max-w-full';\n const label = this.bindings.i18n.t('more-actions-in-session', {\n count: this.userActionsAfterCaseCreation.length,\n });\n return (\n <div\n data-testid=\"show-more-actions-button\"\n class=\"flex items-center px-3 pb-3\"\n >\n <div class=\"flex justify-center pr-2\">\n <atomic-icon icon={ThreeDotsIcon} class=\"h-3 w-3\"></atomic-icon>\n </div>\n <div class=\"flex-1\">\n <Button\n style=\"text-primary\"\n part=\"show-more-actions-button\"\n class={btnClasses}\n ariaLabel={label}\n onClick={this.showActionsAfterCaseCreation.bind(this)}\n >\n <span class=\"truncate text-xs font-light\">{label}</span>\n </Button>\n </div>\n </div>\n );\n }\n\n public render() {\n const isShowMoreActionsButtonVisible =\n !this.areActionsAfterCaseCreationVisible &&\n !!this.userActionsAfterCaseCreation.length;\n\n return (\n <div>\n {this.renderSessionStartDate()}\n\n {this.areActionsAfterCaseCreationVisible && (\n <div data-testid=\"more-actions-section\">\n {this.renderActions(this.userActionsAfterCaseCreation)}\n </div>\n )}\n\n {isShowMoreActionsButtonVisible && this.renderShowMoreActionsButton()}\n\n {this.renderActions(this.userActionsToDisplay)}\n </div>\n );\n }\n}\n","@import '../../../../global/global.pcss';\n\n.separator {\n height: 1px;\n background-color: #e0e1dd;\n}\n","import {\n buildUserActions as buildInsightUserActions,\n UserActions as InsightUserActions,\n UserActionsState as InsightUserActionsState,\n UserSession as InsightUserSession,\n} from '@coveo/headless/insight';\nimport {Component, h, State, Prop} from '@stencil/core';\nimport ArrowDownIcon from '../../../../images/big-arrow-down.svg';\nimport ArrowUpIcon from '../../../../images/big-arrow-up.svg';\nimport {\n InitializableComponent,\n InitializeBindings,\n BindStateToController,\n} from '../../../../utils/initialization-utils';\nimport {NoItemsContainer} from '../../../common/no-items/stencil-container';\nimport {MagnifyingGlass} from '../../../common/no-items/stencil-magnifying-glass';\nimport {Button} from '../../../common/stencil-button';\nimport {InsightBindings} from '../../atomic-insight-interface/atomic-insight-interface';\n\n/**\n * @internal\n * This component displays all the actions performed by a user around the time they created a case.\n * The actions are grouped into multiple sessions, including the session during which the case was created,\n * the sessions preceding the case creation and the sessions following the case creation.\n *\n * @component\n * @example\n * <AtomicInsightUserActionsTimeline userId={'123'} caseCreationDate={'2024-08-15T10:00:00Z'} />\n *\n */\n@Component({\n tag: 'atomic-insight-user-actions-timeline',\n styleUrl: 'atomic-insight-user-actions-timeline.pcss',\n shadow: true,\n})\nexport class AtomicInsightUserActionsTimeline\n implements InitializableComponent<InsightBindings>\n{\n @InitializeBindings() public bindings!: InsightBindings;\n public userActions!: InsightUserActions;\n\n @BindStateToController('userActions')\n @State()\n public userActionsState!: InsightUserActionsState;\n public error!: Error;\n\n /**\n * The ID of the user whose actions are being displayed. For example in email format \"someone@company.com\".\n */\n @Prop() public userId!: string;\n /**\n * The date and time when the case was created. For example \"2024-01-01T00:00:00Z\"\n */\n @Prop() public ticketCreationDateTime!: string;\n /**\n * The names of custom events to exclude.\n */\n @Prop() public excludedCustomActions: string[] = [];\n\n public initialize() {\n this.userActions = buildInsightUserActions(this.bindings.engine, {\n options: {\n ticketCreationDate: this.ticketCreationDateTime,\n excludedCustomActions: this.excludedCustomActions,\n },\n });\n\n this.userActions.fetchUserActions(this.userId);\n }\n\n @State() followingSessionsAreVisible = false;\n @State() precedingSessionsAreVisible = false;\n\n private toggleFollowingSessions() {\n this.followingSessionsAreVisible = !this.followingSessionsAreVisible;\n }\n\n private togglePrecedingSessions() {\n this.precedingSessionsAreVisible = !this.precedingSessionsAreVisible;\n }\n\n private renderSessions(\n sessions: Array<InsightUserSession> | undefined,\n renderSeparator?: Function,\n testId?: string\n ) {\n return (\n <div>\n {sessions?.map(({actions, start}) => [\n <div class=\"mt-4\">\n <atomic-insight-user-actions-session\n startTimestamp={start}\n userActions={actions}\n data-testid={testId}\n ></atomic-insight-user-actions-session>\n </div>,\n renderSeparator ? renderSeparator() : null,\n ])}\n </div>\n );\n }\n\n private renderToggleFollowingSessionsButton() {\n const btnClasses = 'flex items-center text-left p-2 text-sm max-w-full';\n const iconClasses = 'h-3 w-3 mr-1';\n const label = this.followingSessionsAreVisible\n ? this.bindings.i18n.t('hide-following-sessions')\n : this.bindings.i18n.t('show-following-sessions');\n const icon = this.followingSessionsAreVisible ? ArrowDownIcon : ArrowUpIcon;\n\n return (\n <div class=\"flex justify-center p-2\">\n <Button\n style=\"text-primary\"\n part=\"toggle-following-sessions\"\n class={btnClasses}\n ariaLabel={label}\n onClick={this.toggleFollowingSessions.bind(this)}\n >\n <atomic-icon\n part=\"toggle-following-sessions-icon\"\n class={iconClasses}\n icon={icon}\n ></atomic-icon>\n <span class=\"truncate\">{label}</span>\n </Button>\n </div>\n );\n }\n\n private renderTogglePrecedingSessionsButton() {\n const btnClasses = 'flex items-center text-left p-2 text-sm max-w-full';\n const iconClasses = 'h-3 w-3 mr-1';\n const label = this.precedingSessionsAreVisible\n ? this.bindings.i18n.t('hide-preceding-sessions')\n : this.bindings.i18n.t('show-preceding-sessions');\n const icon = this.precedingSessionsAreVisible ? ArrowUpIcon : ArrowDownIcon;\n\n return (\n <div class=\"flex justify-center p-2\">\n <Button\n style=\"text-primary\"\n part=\"toggle-preceding-sessions\"\n class={btnClasses}\n ariaLabel={label}\n onClick={this.togglePrecedingSessions.bind(this)}\n >\n <atomic-icon\n part=\"toggle-preceding-sessions-icon\"\n class={iconClasses}\n icon={icon}\n ></atomic-icon>\n <span class=\"truncate\">{label}</span>\n </Button>\n </div>\n );\n }\n\n private renderFollowingSessionsSection() {\n if (!this.userActionsState.timeline?.followingSessions?.length) {\n return null;\n }\n return [\n this.renderToggleFollowingSessionsButton(),\n <div class=\"separator mx-1 rounded\"></div>,\n this.followingSessionsAreVisible\n ? this.renderSessions(\n this.userActionsState.timeline?.followingSessions,\n () => <div class=\"separator mx-1 mt-4 rounded\"></div>,\n 'following-session'\n )\n : null,\n ];\n }\n\n private renderPrecedingSessionsSection() {\n if (!this.userActionsState.timeline?.precedingSessions?.length) {\n return null;\n }\n return [\n <div class=\"separator mx-1 mt-4 rounded\"></div>,\n this.precedingSessionsAreVisible\n ? this.renderSessions(\n this.userActionsState.timeline?.precedingSessions,\n () => <div class=\"separator mx-1 mt-4 rounded\"></div>,\n 'preceding-session'\n )\n : null,\n this.renderTogglePrecedingSessionsButton(),\n ];\n }\n\n private renderTimeline() {\n return (\n <div>\n {this.renderFollowingSessionsSection()}\n <div class=\"mt-4\">\n <atomic-insight-user-actions-session\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n startTimestamp={this.userActionsState.timeline?.session?.start!}\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n userActions={this.userActionsState?.timeline?.session?.actions!}\n data-testid=\"active-session\"\n ></atomic-insight-user-actions-session>\n </div>\n {this.renderPrecedingSessionsSection()}\n </div>\n );\n }\n\n private renderNoUserActionsScreen() {\n return (\n <div class=\"my-6 py-3\" data-testid=\"user-actions-error\">\n <NoItemsContainer>\n <MagnifyingGlass />\n <div class=\"my-2 max-w-full text-center text-2xl font-light\">\n {this.bindings.i18n.t('no-user-actions-available')}\n </div>\n <div class=\"text-neutral-dark my-2 text-center text-lg\">\n {this.bindings.i18n.t('no-user-actions-associated-with-params')}\n </div>\n </NoItemsContainer>\n </div>\n );\n }\n\n render() {\n const areUserActionsAvailable = this.userActionsState.timeline?.session;\n const hasError = this.userActionsState.error;\n\n if (areUserActionsAvailable && !hasError) {\n return this.renderTimeline();\n }\n return this.renderNoUserActionsScreen();\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"atomic-insight-user-actions-session.atomic-insight-user-actions-timeline.entry.cjs.js","mappings":"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","names":["SearchIcon","QuickviewIcon","parseTimestampToDateDetails","h","Button","__decorate","InitializeBindings","buildInsightUserActions","NoItemsContainer","MagnifyingGlass","BindStateToController"],"sources":["src/components/insight/user-actions/atomic-insight-user-actions-session/user-action.tsx","src/components/insight/user-actions/atomic-insight-user-actions-session/atomic-insight-user-actions-session.pcss?tag=atomic-insight-user-actions-session&encapsulation=shadow","src/components/insight/user-actions/atomic-insight-user-actions-session/atomic-insight-user-actions-session.tsx","src/components/insight/user-actions/atomic-insight-user-actions-timeline/atomic-insight-user-actions-timeline.pcss?tag=atomic-insight-user-actions-timeline&encapsulation=shadow","src/components/insight/user-actions/atomic-insight-user-actions-timeline/atomic-insight-user-actions-timeline.tsx"],"sourcesContent":["import {UserAction as IUserAction} from '@coveo/headless/insight';\nimport {FunctionalComponent, h} from '@stencil/core';\nimport BookmarkIcon from '../../../../images/bookmark.svg';\nimport DocumentIcon from '../../../../images/document.svg';\nimport PointIcon from '../../../../images/point.svg';\nimport QuickviewIcon from '../../../../images/quickview.svg';\nimport SearchIcon from '../../../../images/search.svg';\nimport {parseTimestampToDateDetails} from '../../../../utils/date-utils';\nimport {InsightBindings} from '../../atomic-insight-interface/atomic-insight-interface';\n\nconst icons = {\n SEARCH: SearchIcon,\n CLICK: DocumentIcon,\n VIEW: QuickviewIcon,\n CUSTOM: PointIcon,\n TICKET_CREATION: BookmarkIcon,\n};\n\ninterface UserAction {\n action: IUserAction;\n bindings: InsightBindings;\n}\n\nexport const UserAction: FunctionalComponent<UserAction> = ({\n bindings,\n action,\n}) => {\n const renderActionTimestamp = () => {\n const {hours, minutes} = parseTimestampToDateDetails(action.timestamp);\n\n const formattedHours = String(hours).padStart(2, '0');\n const formattedMinutes = String(minutes).padStart(2, '0');\n\n return `${formattedHours}:${formattedMinutes}`;\n };\n\n const renderIcon = () => {\n const iconClasses = `w-3 h-3 ${['CLICK', 'VIEW'].includes(action.actionType) ? 'text-primary' : ''}`;\n\n return (\n <atomic-icon\n icon={icons[action.actionType]}\n class={iconClasses}\n ></atomic-icon>\n );\n };\n\n const renderActionTitle = () => {\n switch (action.actionType) {\n case 'TICKET_CREATION':\n return (\n <div class=\"ticket-creation-action__text text-xs font-semibold\">\n {bindings.i18n.t('ticket-created')}\n </div>\n );\n case 'CUSTOM':\n return (\n <div class=\"text-xs font-semibold\">\n {action.eventData?.value ?? action.eventData?.type}\n </div>\n );\n case 'SEARCH':\n return (\n <div class=\"text-xs font-semibold\">\n {action.query || bindings.i18n.t('empty-search')}\n </div>\n );\n case 'VIEW':\n return (\n <a\n href={action.document?.contentIdValue}\n class=\"text-primary text-xs font-semibold\"\n target=\"_blank\"\n >\n {action.document?.title}\n </a>\n );\n case 'CLICK':\n return (\n <div class=\"text-xs font-semibold\">{action.document?.title}</div>\n );\n default:\n return null;\n }\n };\n\n return (\n <div class=\"flex\">\n <div class=\"flex-none pr-2\">\n <div class=\"flex justify-center py-1\">{renderIcon()}</div>\n <div class=\"flex justify-center py-1\">\n <div class=\"user-action__separator h-7 w-0.5 rounded\"></div>\n </div>\n </div>\n <div class=\"flex-1\">\n {renderActionTitle()}\n <div class=\"text-neutral-dark text-xxs flex py-2 font-light\">\n <div>{renderActionTimestamp()}</div>\n <div class=\"px-2\">{action.searchHub}</div>\n </div>\n </div>\n </div>\n );\n};\n","@import '../../../../global/global.pcss';\n\n.session-start-icon__container {\n background-color: #fbb439;\n}\n\n.user-action__separator {\n @apply bg-neutral;\n}\n\n.ticket-creation-action__text {\n @apply text-success;\n}\n\n.text-xxs {\n font-size: 0.625rem;\n}\n","import {UserAction as IUserAction} from '@coveo/headless/insight';\nimport {Component, h, Prop, Watch, State} from '@stencil/core';\nimport Flag from '../../../../images/flag.svg';\nimport ThreeDotsIcon from '../../../../images/three-dots.svg';\nimport {parseTimestampToDateDetails} from '../../../../utils/date-utils';\nimport {InitializeBindings} from '../../../../utils/initialization-utils';\nimport {Button} from '../../../common/stencil-button';\nimport {InsightBindings} from '../../atomic-insight-interface/atomic-insight-interface';\nimport {UserAction} from './user-action';\n\nexport type UserActionType =\n | 'SEARCH'\n | 'CLICK'\n | 'TICKET_CREATION'\n | 'VIEW'\n | 'CUSTOM';\n\n/**\n * @internal\n * The `AtomicInsightUserActionSession` component displays all the user actions that took place during a specific user session.\n * @category Insight Panel\n * @example\n * <atomic-insight-user-actions-session userActions={actions} startTimestamp={1723035731}></atomic-insight-user-actions-session>\n */\n@Component({\n tag: 'atomic-insight-user-actions-session',\n styleUrl: 'atomic-insight-user-actions-session.pcss',\n shadow: true,\n})\nexport class AtomicInsightUserActionsSession {\n @InitializeBindings() public bindings!: InsightBindings;\n @State() public error!: Error;\n\n /**\n * The start time of the session as a Unix timestamp.\n */\n @Prop() public startTimestamp!: number;\n /**\n * The list of user actions performed during the session.\n */\n @Prop() public userActions!: Array<IUserAction>;\n\n private userActionsToDisplay: Array<IUserAction> = [];\n private userActionsAfterCaseCreation: Array<IUserAction> = [];\n @State() areActionsAfterCaseCreationVisible = false;\n\n connectedCallback() {\n this.prepareUserActionsToDisplay();\n }\n\n @Watch('userActions')\n prepareUserActionsToDisplay() {\n const caseCreationIndex = this.userActions.findIndex(\n ({actionType}) => actionType === 'TICKET_CREATION'\n );\n const isCaseCreationSession = caseCreationIndex !== -1;\n\n if (!isCaseCreationSession) {\n this.userActionsToDisplay = this.userActions;\n this.userActionsAfterCaseCreation = [];\n } else {\n this.userActionsToDisplay = this.userActions.slice(caseCreationIndex);\n this.userActionsAfterCaseCreation = this.userActions.slice(\n 0,\n caseCreationIndex\n );\n }\n }\n\n showActionsAfterCaseCreation() {\n this.areActionsAfterCaseCreationVisible = true;\n }\n\n renderSessionStartDate() {\n const caseCreationIndex = this.userActions.findIndex(\n ({actionType}) => actionType === 'TICKET_CREATION'\n );\n const isCaseCreationSession = caseCreationIndex !== -1;\n\n const {year, month, dayOfWeek, day} = parseTimestampToDateDetails(\n this.startTimestamp\n );\n\n const formatedStartDate = `${dayOfWeek}. ${month} ${day}, ${year}`;\n return (\n <div class=\"flex items-center px-2 pb-3\">\n {isCaseCreationSession ? (\n <div class=\"session-start-icon__container mr-2 flex h-5 w-5 items-center justify-center rounded-full\">\n <atomic-icon icon={Flag} class=\"h-3 w-3\"></atomic-icon>\n </div>\n ) : null}\n\n <div class=\"flex-1 font-semibold\">{formatedStartDate}</div>\n </div>\n );\n }\n\n renderActions(actions: Array<IUserAction>) {\n return (\n <ol class=\"px-3\">\n {actions?.map((action) => (\n <UserAction action={action} bindings={this.bindings}></UserAction>\n ))}\n </ol>\n );\n }\n\n renderShowMoreActionsButton() {\n const btnClasses = 'flex items-center p-1 max-w-full';\n const label = this.bindings.i18n.t('more-actions-in-session', {\n count: this.userActionsAfterCaseCreation.length,\n });\n return (\n <div\n data-testid=\"show-more-actions-button\"\n class=\"flex items-center px-3 pb-3\"\n >\n <div class=\"flex justify-center pr-2\">\n <atomic-icon icon={ThreeDotsIcon} class=\"h-3 w-3\"></atomic-icon>\n </div>\n <div class=\"flex-1\">\n <Button\n style=\"text-primary\"\n part=\"show-more-actions-button\"\n class={btnClasses}\n ariaLabel={label}\n onClick={this.showActionsAfterCaseCreation.bind(this)}\n >\n <span class=\"truncate text-xs font-light\">{label}</span>\n </Button>\n </div>\n </div>\n );\n }\n\n public render() {\n const isShowMoreActionsButtonVisible =\n !this.areActionsAfterCaseCreationVisible &&\n !!this.userActionsAfterCaseCreation.length;\n\n return (\n <div>\n {this.renderSessionStartDate()}\n\n {this.areActionsAfterCaseCreationVisible && (\n <div data-testid=\"more-actions-section\">\n {this.renderActions(this.userActionsAfterCaseCreation)}\n </div>\n )}\n\n {isShowMoreActionsButtonVisible && this.renderShowMoreActionsButton()}\n\n {this.renderActions(this.userActionsToDisplay)}\n </div>\n );\n }\n}\n","@import '../../../../global/global.pcss';\n\n.separator {\n height: 1px;\n background-color: #e0e1dd;\n}\n","import {\n buildUserActions as buildInsightUserActions,\n UserActions as InsightUserActions,\n UserActionsState as InsightUserActionsState,\n UserSession as InsightUserSession,\n} from '@coveo/headless/insight';\nimport {Component, h, State, Prop} from '@stencil/core';\nimport ArrowDownIcon from '../../../../images/big-arrow-down.svg';\nimport ArrowUpIcon from '../../../../images/big-arrow-up.svg';\nimport {\n InitializableComponent,\n InitializeBindings,\n BindStateToController,\n} from '../../../../utils/initialization-utils';\nimport {NoItemsContainer} from '../../../common/no-items/stencil-container';\nimport {MagnifyingGlass} from '../../../common/no-items/stencil-magnifying-glass';\nimport {Button} from '../../../common/stencil-button';\nimport {InsightBindings} from '../../atomic-insight-interface/atomic-insight-interface';\n\n/**\n * Internal component used by the `atomic-insight-user-actions-modal`. Do not use directly.\n * \n * This component displays all the actions performed by a user around the time they created a case.\n * The actions are grouped into multiple sessions, including the session during which the case was created,\n * the sessions preceding the case creation and the sessions following the case creation.\n *\n * @component\n * @example\n * <AtomicInsightUserActionsTimeline userId={'123'} caseCreationDate={'2024-08-15T10:00:00Z'} />\n *\n */\n@Component({\n tag: 'atomic-insight-user-actions-timeline',\n styleUrl: 'atomic-insight-user-actions-timeline.pcss',\n shadow: true,\n})\nexport class AtomicInsightUserActionsTimeline\n implements InitializableComponent<InsightBindings>\n{\n @InitializeBindings() public bindings!: InsightBindings;\n public userActions!: InsightUserActions;\n\n @BindStateToController('userActions')\n @State()\n public userActionsState!: InsightUserActionsState;\n public error!: Error;\n\n /**\n * The ID of the user whose actions are being displayed. For example in email format \"someone@company.com\".\n */\n @Prop() public userId!: string;\n /**\n * The date and time when the case was created. For example \"2024-01-01T00:00:00Z\"\n */\n @Prop() public ticketCreationDateTime!: string;\n /**\n * The names of custom events to exclude.\n */\n @Prop() public excludedCustomActions: string[] = [];\n\n public initialize() {\n this.userActions = buildInsightUserActions(this.bindings.engine, {\n options: {\n ticketCreationDate: this.ticketCreationDateTime,\n excludedCustomActions: this.excludedCustomActions,\n },\n });\n\n this.userActions.fetchUserActions(this.userId);\n }\n\n @State() followingSessionsAreVisible = false;\n @State() precedingSessionsAreVisible = false;\n\n private toggleFollowingSessions() {\n this.followingSessionsAreVisible = !this.followingSessionsAreVisible;\n }\n\n private togglePrecedingSessions() {\n this.precedingSessionsAreVisible = !this.precedingSessionsAreVisible;\n }\n\n private renderSessions(\n sessions: Array<InsightUserSession> | undefined,\n renderSeparator?: Function,\n testId?: string\n ) {\n return (\n <div>\n {sessions?.map(({actions, start}) => [\n <div class=\"mt-4\">\n <atomic-insight-user-actions-session\n startTimestamp={start}\n userActions={actions}\n data-testid={testId}\n ></atomic-insight-user-actions-session>\n </div>,\n renderSeparator ? renderSeparator() : null,\n ])}\n </div>\n );\n }\n\n private renderToggleFollowingSessionsButton() {\n const btnClasses = 'flex items-center text-left p-2 text-sm max-w-full';\n const iconClasses = 'h-3 w-3 mr-1';\n const label = this.followingSessionsAreVisible\n ? this.bindings.i18n.t('hide-following-sessions')\n : this.bindings.i18n.t('show-following-sessions');\n const icon = this.followingSessionsAreVisible ? ArrowDownIcon : ArrowUpIcon;\n\n return (\n <div class=\"flex justify-center p-2\">\n <Button\n style=\"text-primary\"\n part=\"toggle-following-sessions\"\n class={btnClasses}\n ariaLabel={label}\n onClick={this.toggleFollowingSessions.bind(this)}\n >\n <atomic-icon\n part=\"toggle-following-sessions-icon\"\n class={iconClasses}\n icon={icon}\n ></atomic-icon>\n <span class=\"truncate\">{label}</span>\n </Button>\n </div>\n );\n }\n\n private renderTogglePrecedingSessionsButton() {\n const btnClasses = 'flex items-center text-left p-2 text-sm max-w-full';\n const iconClasses = 'h-3 w-3 mr-1';\n const label = this.precedingSessionsAreVisible\n ? this.bindings.i18n.t('hide-preceding-sessions')\n : this.bindings.i18n.t('show-preceding-sessions');\n const icon = this.precedingSessionsAreVisible ? ArrowUpIcon : ArrowDownIcon;\n\n return (\n <div class=\"flex justify-center p-2\">\n <Button\n style=\"text-primary\"\n part=\"toggle-preceding-sessions\"\n class={btnClasses}\n ariaLabel={label}\n onClick={this.togglePrecedingSessions.bind(this)}\n >\n <atomic-icon\n part=\"toggle-preceding-sessions-icon\"\n class={iconClasses}\n icon={icon}\n ></atomic-icon>\n <span class=\"truncate\">{label}</span>\n </Button>\n </div>\n );\n }\n\n private renderFollowingSessionsSection() {\n if (!this.userActionsState.timeline?.followingSessions?.length) {\n return null;\n }\n return [\n this.renderToggleFollowingSessionsButton(),\n <div class=\"separator mx-1 rounded\"></div>,\n this.followingSessionsAreVisible\n ? this.renderSessions(\n this.userActionsState.timeline?.followingSessions,\n () => <div class=\"separator mx-1 mt-4 rounded\"></div>,\n 'following-session'\n )\n : null,\n ];\n }\n\n private renderPrecedingSessionsSection() {\n if (!this.userActionsState.timeline?.precedingSessions?.length) {\n return null;\n }\n return [\n <div class=\"separator mx-1 mt-4 rounded\"></div>,\n this.precedingSessionsAreVisible\n ? this.renderSessions(\n this.userActionsState.timeline?.precedingSessions,\n () => <div class=\"separator mx-1 mt-4 rounded\"></div>,\n 'preceding-session'\n )\n : null,\n this.renderTogglePrecedingSessionsButton(),\n ];\n }\n\n private renderTimeline() {\n return (\n <div>\n {this.renderFollowingSessionsSection()}\n <div class=\"mt-4\">\n <atomic-insight-user-actions-session\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n startTimestamp={this.userActionsState.timeline?.session?.start!}\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n userActions={this.userActionsState?.timeline?.session?.actions!}\n data-testid=\"active-session\"\n ></atomic-insight-user-actions-session>\n </div>\n {this.renderPrecedingSessionsSection()}\n </div>\n );\n }\n\n private renderNoUserActionsScreen() {\n return (\n <div class=\"my-6 py-3\" data-testid=\"user-actions-error\">\n <NoItemsContainer>\n <MagnifyingGlass />\n <div class=\"my-2 max-w-full text-center text-2xl font-light\">\n {this.bindings.i18n.t('no-user-actions-available')}\n </div>\n <div class=\"text-neutral-dark my-2 text-center text-lg\">\n {this.bindings.i18n.t('no-user-actions-associated-with-params')}\n </div>\n </NoItemsContainer>\n </div>\n );\n }\n\n render() {\n const areUserActionsAvailable = this.userActionsState.timeline?.session;\n const hasError = this.userActionsState.error;\n\n if (areUserActionsAvailable && !hasError) {\n return this.renderTimeline();\n }\n return this.renderNoUserActionsScreen();\n }\n}\n"],"version":3}
|
|
@@ -64,7 +64,7 @@ const AtomicInsightUserActionsToggle = class {
|
|
|
64
64
|
this.modalRef.excludedCustomActions = this.excludedCustomActions;
|
|
65
65
|
}
|
|
66
66
|
render() {
|
|
67
|
-
return (index.h(iconButton.IconButton, { key: '
|
|
67
|
+
return (index.h(iconButton.IconButton, { key: 'c5e65b461baeac76b6749d9cb82c70edc51d9087', partPrefix: "insight-user-actions-toggle", style: "outline-neutral", icon: clock.Clock, ariaLabel: this.bindings.i18n.t('user-actions'), onClick: () => {
|
|
68
68
|
this.enableModal();
|
|
69
69
|
}, title: this.bindings.i18n.t('user-actions'), buttonRef: (button) => {
|
|
70
70
|
if (!button) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"atomic-insight-user-actions-toggle.entry.cjs.js","mappings":";;;;;;;;;;;;;;;;AAAA,MAAM,iCAAiC,GAAG,ozgEAAozgE,CAAC;AAC/1gE,6CAAe,iCAAiC;;;;;;;;;;;;MCuBnC,8BAA8B;;;;;;QAsB1B,0BAAqB,GAAa,EAAE,CAAC;;;;;qCAAH,EAAE;;IAE5C,UAAU;QACf,IAAI,CAAC,WAAW,GAAGA,wBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC/D,OAAO,EAAE;gBACP,kBAAkB,EAAE,IAAI,CAAC,sBAAsB;gBAC/C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;aAClD;SACF,CAAC,CAAC;KACJ;IAKO,WAAW;QACjB,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;KACvC;IAEO,SAAS;QACf,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,mCAAmC,CAAC,CAAC;QAE5E,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;KAClE;IAEM,MAAM;QACX,QACEC,QAACC,qBAAU,qDACT,UAAU,EAAC,6BAA6B,EACxC,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAEC,WAAS,EACf,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,EAC/C,OAAO,EAAE;gBACP,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB,EACD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,EAC3C,SAAS,EAAE,CAAC,MAA0B;gBACpC,IAAI,CAAC,MAAM,EAAE;oBACX,OAAO;iBACR;gBACD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;gBACxB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,GACD,EACF;KACH;;;AAvE4B;IAA5BC,sCAAkB,EAAE;gEAAmC;AAIjD;IAFNC,yCAAqB,CAAC,aAAa,CAAC;wEAEa;;;;;","names":["buildInsightUserActions","h","IconButton","Clockicon","InitializeBindings","BindStateToController"],"sources":["src/components/insight/user-actions/atomic-insight-user-actions-toggle/atomic-insight-user-actions-toggle.pcss?tag=atomic-insight-user-actions-toggle&encapsulation=shadow","src/components/insight/user-actions/atomic-insight-user-actions-toggle/atomic-insight-user-actions-toggle.tsx"],"sourcesContent":["@import '../../../../global/global.pcss';\n","import {\n buildUserActions as buildInsightUserActions,\n UserActions as InsightUserActions,\n UserActionsState as InsightUserActionsState,\n} from '@coveo/headless/insight';\nimport {Component, h, Prop, Element, State} from '@stencil/core';\nimport Clockicon from '../../../../images/clock.svg';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {IconButton} from '../../../common/iconButton';\nimport {InsightBindings} from '../../atomic-insight-interface/atomic-insight-interface';\n\n/**\n *
|
|
1
|
+
{"file":"atomic-insight-user-actions-toggle.entry.cjs.js","mappings":";;;;;;;;;;;;;;;;AAAA,MAAM,iCAAiC,GAAG,ozgEAAozgE,CAAC;AAC/1gE,6CAAe,iCAAiC;;;;;;;;;;;;MCuBnC,8BAA8B;;;;;;QAsB1B,0BAAqB,GAAa,EAAE,CAAC;;;;;qCAAH,EAAE;;IAE5C,UAAU;QACf,IAAI,CAAC,WAAW,GAAGA,wBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC/D,OAAO,EAAE;gBACP,kBAAkB,EAAE,IAAI,CAAC,sBAAsB;gBAC/C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;aAClD;SACF,CAAC,CAAC;KACJ;IAKO,WAAW;QACjB,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;KACvC;IAEO,SAAS;QACf,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,mCAAmC,CAAC,CAAC;QAE5E,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;KAClE;IAEM,MAAM;QACX,QACEC,QAACC,qBAAU,qDACT,UAAU,EAAC,6BAA6B,EACxC,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAEC,WAAS,EACf,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,EAC/C,OAAO,EAAE;gBACP,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB,EACD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,EAC3C,SAAS,EAAE,CAAC,MAA0B;gBACpC,IAAI,CAAC,MAAM,EAAE;oBACX,OAAO;iBACR;gBACD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;gBACxB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,GACD,EACF;KACH;;;AAvE4B;IAA5BC,sCAAkB,EAAE;gEAAmC;AAIjD;IAFNC,yCAAqB,CAAC,aAAa,CAAC;wEAEa;;;;;","names":["buildInsightUserActions","h","IconButton","Clockicon","InitializeBindings","BindStateToController"],"sources":["src/components/insight/user-actions/atomic-insight-user-actions-toggle/atomic-insight-user-actions-toggle.pcss?tag=atomic-insight-user-actions-toggle&encapsulation=shadow","src/components/insight/user-actions/atomic-insight-user-actions-toggle/atomic-insight-user-actions-toggle.tsx"],"sourcesContent":["@import '../../../../global/global.pcss';\n","import {\n buildUserActions as buildInsightUserActions,\n UserActions as InsightUserActions,\n UserActionsState as InsightUserActionsState,\n} from '@coveo/headless/insight';\nimport {Component, h, Prop, Element, State} from '@stencil/core';\nimport Clockicon from '../../../../images/clock.svg';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {IconButton} from '../../../common/iconButton';\nimport {InsightBindings} from '../../atomic-insight-interface/atomic-insight-interface';\n\n/**\n * Internal component of the atomic-insight-interface\n * The `atomic-insight-user-actions-toggle` component displays a button that opens a modal containing the user actions timeline component.\n */\n@Component({\n tag: 'atomic-insight-user-actions-toggle',\n styleUrl: 'atomic-insight-user-actions-toggle.pcss',\n shadow: true,\n})\nexport class AtomicInsightUserActionsToggle\n implements InitializableComponent<InsightBindings>\n{\n @Element() public host!: HTMLElement;\n @InitializeBindings() public bindings!: InsightBindings;\n public userActions!: InsightUserActions;\n @BindStateToController('userActions')\n @State()\n public userActionsState!: InsightUserActionsState;\n @State() public error!: Error;\n\n /**\n * The ID of the user whose actions are being displayed.\n */\n @Prop() public userId!: string;\n /**\n * The date and time when the case was created. For example \"2024-01-01T00:00:00Z\"\n */\n @Prop() public ticketCreationDateTime!: string;\n /**\n * The names of custom events to exclude.\n */\n @Prop() public excludedCustomActions: string[] = [];\n\n public initialize() {\n this.userActions = buildInsightUserActions(this.bindings.engine, {\n options: {\n ticketCreationDate: this.ticketCreationDateTime,\n excludedCustomActions: this.excludedCustomActions,\n },\n });\n }\n\n private buttonRef?: HTMLButtonElement;\n private modalRef?: HTMLAtomicInsightUserActionsModalElement;\n\n private enableModal() {\n this.modalRef && (this.modalRef.isOpen = true);\n this.userActions.logOpenUserActions();\n }\n\n private loadModal() {\n if (this.modalRef) {\n return;\n }\n\n this.modalRef = document.createElement('atomic-insight-user-actions-modal');\n\n this.host.insertAdjacentElement('beforebegin', this.modalRef);\n this.modalRef.openButton = this.buttonRef;\n this.modalRef.userId = this.userId;\n this.modalRef.ticketCreationDateTime = this.ticketCreationDateTime;\n this.modalRef.excludedCustomActions = this.excludedCustomActions;\n }\n\n public render() {\n return (\n <IconButton\n partPrefix=\"insight-user-actions-toggle\"\n style=\"outline-neutral\"\n icon={Clockicon}\n ariaLabel={this.bindings.i18n.t('user-actions')}\n onClick={() => {\n this.enableModal();\n }}\n title={this.bindings.i18n.t('user-actions')}\n buttonRef={(button?: HTMLButtonElement) => {\n if (!button) {\n return;\n }\n this.buttonRef = button;\n this.loadModal();\n }}\n />\n );\n }\n}\n"],"version":3}
|
|
@@ -115,14 +115,14 @@ const ensureSameResultIsNotOverwritten = (documentWriter, uniqueIdentifier) => {
|
|
|
115
115
|
const warnAboutLimitedUsageQuickview = (logger) => {
|
|
116
116
|
logger?.warn('Quickview initialized in restricted mode due to incompatible sandboxing environment. Keywords hit navigation will be disabled.');
|
|
117
117
|
};
|
|
118
|
-
const QuickviewIframe = ({ onSetIframeRef, uniqueIdentifier, content, sandbox, src, logger }) => {
|
|
118
|
+
const QuickviewIframe = ({ title, onSetIframeRef, uniqueIdentifier, content, sandbox, src, logger }) => {
|
|
119
119
|
// When a document is written with document.open/document.write/document.close
|
|
120
120
|
// it is not synchronous and the content of the iframe is only available to be queried at the end of the current call stack.
|
|
121
121
|
// This add a "wait" (setTimeout 0) before calling the `onSetIframeRef` from the parent modal quickview
|
|
122
122
|
const waitForIframeContentToBeWritten = () => {
|
|
123
123
|
return new Promise((resolve) => setTimeout(resolve));
|
|
124
124
|
};
|
|
125
|
-
return (index.h("iframe", { src: "about:blank", class: "h-full w-full", sandbox: sandbox, ref: async (el) => {
|
|
125
|
+
return (index.h("iframe", { title: title, src: "about:blank", class: "h-full w-full", sandbox: sandbox, ref: async (el) => {
|
|
126
126
|
const iframeRef = el;
|
|
127
127
|
if (!uniqueIdentifier || !content) {
|
|
128
128
|
return;
|
|
@@ -489,7 +489,7 @@ const AtomicQuickviewModal = class {
|
|
|
489
489
|
return (index.h("div", { slot: "header", class: "flex w-full items-center justify-between" }, headerContent));
|
|
490
490
|
}
|
|
491
491
|
renderBody() {
|
|
492
|
-
return (index.h("div", { slot: "body", class: "grid h-full grid-cols-[min-content_auto]" }, index.h("div", { class: "h-full overflow-y-auto", style: { backgroundColor: 'var(--atomic-neutral-light)' } }, index.h(QuickviewSidebar, { words: this.words, i18n: this.bindings.i18n, highlightKeywords: this.highlightKeywords, onHighlightKeywords: (highlight) => (this.highlightKeywords = highlight), minimized: this.minimizeSidebar, onMinimize: (minimize) => (this.minimizeSidebar = minimize) })), index.h("div", { class: "relative overflow-auto" }, index.h(QuickviewIframe, { logger: this.logger, src: this.quickviewSrc, sandbox: this.sandbox, uniqueIdentifier: this.quickviewUniqueIdentifier, content: this.content, onSetIframeRef: async (ref) => {
|
|
492
|
+
return (index.h("div", { slot: "body", class: "grid h-full grid-cols-[min-content_auto]" }, index.h("div", { class: "h-full overflow-y-auto", style: { backgroundColor: 'var(--atomic-neutral-light)' } }, index.h(QuickviewSidebar, { words: this.words, i18n: this.bindings.i18n, highlightKeywords: this.highlightKeywords, onHighlightKeywords: (highlight) => (this.highlightKeywords = highlight), minimized: this.minimizeSidebar, onMinimize: (minimize) => (this.minimizeSidebar = minimize) })), index.h("div", { class: "relative overflow-auto" }, index.h(QuickviewIframe, { title: this.result?.title ?? this.bindings.i18n.t('preview-modal-title'), logger: this.logger, src: this.quickviewSrc, sandbox: this.sandbox, uniqueIdentifier: this.quickviewUniqueIdentifier, content: this.content, onSetIframeRef: async (ref) => {
|
|
493
493
|
this.iframeRef = ref;
|
|
494
494
|
this.words = getWordsHighlights(this.termsToHighlight, this.iframeRef);
|
|
495
495
|
this.handleHighlightsScripts();
|
|
@@ -590,7 +590,7 @@ const AtomicQuickviewModal = class {
|
|
|
590
590
|
});
|
|
591
591
|
}
|
|
592
592
|
render() {
|
|
593
|
-
return (index.h("atomic-modal", { key: '
|
|
593
|
+
return (index.h("atomic-modal", { key: 'add7af86888f080b12fa1b5d117ce4745668df00', fullscreen: this.bindings.store.isMobile(), class: 'atomic-quickview-modal', isOpen: this.isOpen, close: () => this.onClose(), exportparts: exportParts.ATOMIC_MODAL_EXPORT_PARTS }, this.renderHeader(), this.renderBody(), this.renderFooter()));
|
|
594
594
|
}
|
|
595
595
|
static get watchers() { return {
|
|
596
596
|
"highlightKeywords": ["watchHighlightKeywords"]
|