@coveo/atomic 3.52.0 → 3.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +0 -26
  2. package/custom-elements.json +34 -4
  3. package/dist/atomic/atomic.esm.js +0 -1
  4. package/dist/atomic/autoloader/index.cjs.js +2 -2
  5. package/dist/atomic/autoloader/index.esm.js +2 -2
  6. package/dist/atomic/components/components/commerce/product-template-component-utils/context/fetch-product-context.js +14 -0
  7. package/dist/atomic/components/components/common/generated-answer/atomic-answer-content/atomic-answer-content.js +35 -9
  8. package/dist/atomic/components/components/common/generated-answer/feedback-button.js +2 -1
  9. package/dist/atomic/components/components/common/generated-answer/render-agent-generation-steps.js +34 -0
  10. package/dist/atomic/components/components/common/generated-answer/render-answer-content.js +7 -19
  11. package/dist/atomic/components/components/common/generated-answer/render-disclaimer.js +6 -7
  12. package/dist/atomic/components/components/common/generated-answer/styles/generated-answer.tw.css.js +1 -1
  13. package/dist/atomic/components/components/common/item-list/fetch-item-context.js +15 -0
  14. package/dist/atomic/components/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.js +7 -4
  15. package/dist/atomic/components/components/search/atomic-generated-answer/atomic-generated-answer.js +18 -13
  16. package/dist/atomic/components/global/environment.js +1 -1
  17. package/dist/atomic/components/index.d.ts +2 -3
  18. package/dist/atomic/components/index.js +8 -2
  19. package/dist/atomic/lang/cs.json +1 -1
  20. package/dist/atomic/lang/da.json +1 -1
  21. package/dist/atomic/lang/de.json +1 -1
  22. package/dist/atomic/lang/dev.json +1 -1
  23. package/dist/atomic/lang/el.json +1 -1
  24. package/dist/atomic/lang/en.json +1 -1
  25. package/dist/atomic/lang/es.json +1 -1
  26. package/dist/atomic/lang/fi.json +1 -1
  27. package/dist/atomic/lang/fr.json +1 -1
  28. package/dist/atomic/lang/hu.json +1 -1
  29. package/dist/atomic/lang/id.json +1 -1
  30. package/dist/atomic/lang/it.json +1 -1
  31. package/dist/atomic/lang/ja.json +1 -1
  32. package/dist/atomic/lang/ko.json +1 -1
  33. package/dist/atomic/lang/nl.json +1 -1
  34. package/dist/atomic/lang/no.json +1 -1
  35. package/dist/atomic/lang/pl.json +1 -1
  36. package/dist/atomic/lang/pt-BR.json +1 -1
  37. package/dist/atomic/lang/pt.json +1 -1
  38. package/dist/atomic/lang/ru.json +1 -1
  39. package/dist/atomic/lang/sv.json +1 -1
  40. package/dist/atomic/lang/th.json +1 -1
  41. package/dist/atomic/lang/tr.json +1 -1
  42. package/dist/atomic/lang/zh-CN.json +1 -1
  43. package/dist/atomic/lang/zh-TW.json +1 -1
  44. package/dist/atomic/lang/zh.json +1 -1
  45. package/dist/atomic/loader/index.d.ts +4 -15
  46. package/dist/atomic/loader/index.js +0 -1
  47. package/dist/cjs/index.cjs.js +5 -2
  48. package/dist/cjs/loader.cjs.js +7 -4
  49. package/dist/cjs/version.cjs.js +2 -2
  50. package/dist/esm/index.js +0 -1
  51. package/dist/esm/loader.js +9 -5
  52. package/dist/esm/version.js +2 -2
  53. package/dist/types/components/common/generated-answer/atomic-answer-content/atomic-answer-content.d.ts +3 -1
  54. package/dist/types/components/common/generated-answer/atomic-generated-answers-thread/atomic-generated-answers-thread.d.ts +1 -1
  55. package/dist/types/components/common/generated-answer/render-agent-generation-steps.d.ts +16 -0
  56. package/dist/types/components/common/generated-answer/render-answer-content.d.ts +3 -4
  57. package/dist/types/components/common/generated-answer/render-disclaimer.d.ts +0 -1
  58. package/dist/types/index.d.ts +2 -1
  59. package/package.json +17 -31
  60. package/dist/atomic/_atomic.esm.js +0 -2
  61. package/dist/atomic/atomic.esm.js.map +0 -1
  62. package/dist/atomic/components/_index.d.ts +0 -36
  63. package/dist/atomic/components/_index.js +0 -219
  64. package/dist/atomic/components/index.js.map +0 -1
  65. package/dist/atomic/index.esm.js +0 -2
  66. package/dist/atomic/index.esm.js.map +0 -1
  67. package/dist/atomic/loader/cdn.js +0 -1
  68. package/dist/atomic/loader/index.cjs.js +0 -1
  69. package/dist/atomic/loader/index.es2017.js +0 -1
  70. package/dist/atomic/p-998f7983.js +0 -3
  71. package/dist/atomic/p-998f7983.js.map +0 -1
  72. package/dist/cjs/_index.cjs.js +0 -236
  73. package/dist/cjs/_loader.cjs.js +0 -16
  74. package/dist/cjs/app-globals-18f43c37.js +0 -506
  75. package/dist/cjs/app-globals-18f43c37.js.map +0 -1
  76. package/dist/cjs/atomic.cjs.js +0 -26
  77. package/dist/cjs/atomic.cjs.js.map +0 -1
  78. package/dist/cjs/index.cjs.js.map +0 -1
  79. package/dist/cjs/loader.cjs.js.map +0 -1
  80. package/dist/esm/_index.js +0 -218
  81. package/dist/esm/_loader.js +0 -12
  82. package/dist/esm/app-globals-c5b073da.js +0 -481
  83. package/dist/esm/app-globals-c5b073da.js.map +0 -1
  84. package/dist/esm/atomic.js +0 -21
  85. package/dist/esm/atomic.js.map +0 -1
  86. package/dist/esm/index.js.map +0 -1
  87. package/dist/esm/loader.js.map +0 -1
  88. package/dist/index.cjs.js +0 -1
  89. package/dist/index.js +0 -1
  90. package/dist/types/autoloader/index.d.ts +0 -1
  91. package/dist/types/components/common/layout/display-options.d.ts +0 -40
  92. package/dist/types/components/search/atomic-smart-snippet-feedback-modal/atomic-smart-snippet-feedback-modal.tw.css.d.ts +0 -2
  93. package/dist/types/components/search/result-template-component-utils/context/fetch-result-context.d.ts +0 -8
  94. package/dist/types/components.d.ts +0 -24
  95. package/dist/types/icons.d.ts +0 -4
  96. package/dist/types/lit-components.d.ts +0 -10
  97. package/dist/types/stencil-public-runtime.d.ts +0 -1674
  98. package/dist/types/types/custom-env.d.ts +0 -7
  99. package/dist/types/types/dayjs/locale.d.ts +0 -4
  100. package/dist/types/types/open-api.d.ts +0 -3
  101. package/dist/types/types/storybook.d.ts +0 -7
  102. package/docs/atomic-docs.d.ts +0 -435
  103. package/docs/atomic-docs.json +0 -10
@@ -1,218 +0,0 @@
1
- export * from '@coveo/atomic-legacy/item-decorators';
2
- import { buildInteractiveResult } from '@coveo/headless';
3
-
4
- function closest(element, selector) {
5
- if (!element) {
6
- return null;
7
- }
8
- if (element.matches(selector)) {
9
- return element;
10
- }
11
- if (element.parentNode instanceof ShadowRoot) {
12
- return closest(element.parentNode.host, selector);
13
- }
14
- return closest(element.parentElement, selector);
15
- }
16
-
17
- function buildCustomEvent(name, detail) {
18
- return new CustomEvent(name, {
19
- detail,
20
- // Event will bubble up the DOM until it is caught
21
- bubbles: true,
22
- // Allows to verify if event is caught (cancelled). If it's not caught, it won't be initialized.
23
- cancelable: true,
24
- // Allows to compose Atomic components inside one another, event will go across DOM/Shadow DOM
25
- composed: true,
26
- });
27
- }
28
-
29
- class MissingParentError extends Error {
30
- constructor(elementName, parentName) {
31
- super(`The "${elementName}" element must be the child of an "${parentName}" element.`);
32
- }
33
- }
34
-
35
- const itemContextEventName = 'atomic/resolveResult';
36
- function fetchItemContext(element, parentName) {
37
- return new Promise((resolve, reject) => {
38
- const event = buildCustomEvent(itemContextEventName, (item) => {
39
- return resolve(item);
40
- });
41
- element.dispatchEvent(event);
42
- if (!closest(element, parentName)) {
43
- reject(new MissingParentError(element.nodeName.toLowerCase(), parentName));
44
- }
45
- });
46
- }
47
-
48
- /**
49
- * Retrieves `Product` on a rendered `atomic-product`.
50
- *
51
- * This utility function is useful for building custom product template elements, see [Create a Product List](https://docs.coveo.com/en/atomic/latest/cc-search/create-custom-components/native-components/#custom-product-template-component-example) for more information.
52
- *
53
- * You should use the utility function in the [`connectedCallback` lifecycle method](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#using_the_lifecycle_callbacks).
54
- *
55
- * @param element - The element that the event is dispatched to, which must be the child of a rendered `atomic-product`.
56
- * @returns A promise that resolves on initialization of the parent `atomic-product` element, or rejects when there is no parent `atomic-product` element.
57
- */
58
- function fetchProductContext(element) {
59
- return fetchItemContext(element, 'atomic-product');
60
- }
61
-
62
- /**
63
- * Dispatches an event which retrieves the `SearchBoxSuggestionsBindings` on a configured parent search box.
64
- *
65
- * @param event Event sent from the registered query suggestions to the parent search box
66
- * @param element Element on which to dispatch the event, which must be the child of a configured search box
67
- * @param allowedSearchBoxElements Optional array of allowed search box element selectors
68
- *
69
- * @throws Error if the element is not a child of an allowed search box element
70
- */
71
- const dispatchSearchBoxSuggestionsEvent = (event, element, allowedSearchBoxElements = searchBoxElements) => {
72
- const interfaceElement = closest(element, searchBoxElements.join(', '));
73
- if (!interfaceElement) {
74
- throw new Error(`The "${element.nodeName.toLowerCase()}" component was not handled, as it is not a child of the following elements: ${allowedSearchBoxElements.join(', ')}`);
75
- }
76
- void dispatchSearchBoxSuggestionsEventEventually(interfaceElement, element, event);
77
- };
78
- const searchBoxElements = [
79
- 'atomic-search-box',
80
- 'atomic-insight-search-box',
81
- 'atomic-commerce-search-box',
82
- ];
83
- const isLitElementLoosely = (candidate) => 'updateComplete' in candidate &&
84
- candidate.updateComplete instanceof Promise;
85
- const dispatchSearchBoxSuggestionsEventEventually = async (interfaceElement, element, event) => {
86
- await customElements.whenDefined(interfaceElement.nodeName.toLowerCase());
87
- if (isLitElementLoosely(interfaceElement)) {
88
- await interfaceElement.updateComplete;
89
- }
90
- else if ('componentOnReady' in interfaceElement) {
91
- await interfaceElement.componentOnReady();
92
- }
93
- element.dispatchEvent(buildCustomEvent('atomic/searchBoxSuggestion/register', event));
94
- };
95
-
96
- /**
97
- * Checks if a search box suggestion element has no query.
98
- *
99
- * @param el - The search box suggestion element to check
100
- * @returns True if the element has no query or the query is whitespace-only
101
- */
102
- function elementHasNoQuery(el) {
103
- return !el.query || el.query.trim() === '';
104
- }
105
- /**
106
- * Checks if a search box suggestion element has a query.
107
- *
108
- * @param el - The search box suggestion element to check
109
- * @returns True if the element has a non-empty, non-whitespace query
110
- */
111
- function elementHasQuery(el) {
112
- return !!el.query && el.query.trim() !== '';
113
- }
114
-
115
- function getWindow() {
116
- return window;
117
- }
118
- function getInitQueueNamespace() {
119
- if (!getWindow().initQueueNamespace) {
120
- getWindow().initQueueNamespace = {
121
- eventQueueMap: new Map(),
122
- parentReadyMap: new Map(),
123
- };
124
- }
125
- return getWindow().initQueueNamespace;
126
- }
127
- function getEventQueueMap() {
128
- return getInitQueueNamespace().eventQueueMap;
129
- }
130
- function getParentReadyMap() {
131
- return getInitQueueNamespace().parentReadyMap;
132
- }
133
- function isParentReady(parent) {
134
- const parentReadyMap = getParentReadyMap();
135
- return parentReadyMap.get(parent) || false;
136
- }
137
- function queueEventForParent(parent, event, element) {
138
- const eventQueueMap = getEventQueueMap();
139
- if (!eventQueueMap.has(parent)) {
140
- eventQueueMap.set(parent, []);
141
- }
142
- eventQueueMap.get(parent).push({ event, element });
143
- }
144
- function enqueueOrDispatchInitializationEvent(parent, event, element) {
145
- if (isParentReady(parent)) {
146
- element.dispatchEvent(event);
147
- }
148
- else {
149
- queueEventForParent(parent, event, element);
150
- }
151
- }
152
-
153
- /**
154
- * Retrieves `Bindings` or `CommerceBindings` on a configured parent interface.
155
- * @param event - The element on which to dispatch the event, which must be the child of a configured Atomic container element.
156
- * @returns A promise that resolves upon initialization of the parent container element, and rejects otherwise.
157
- */
158
- function fetchBindings(element) {
159
- return new Promise((resolve, reject) => {
160
- const event = buildCustomEvent(initializeEventName, (bindings) => resolve(bindings));
161
- const parent = closest(element, initializableElements.join(', '));
162
- if (!parent) {
163
- reject(new MissingInterfaceParentError(element.nodeName.toLowerCase()));
164
- return;
165
- }
166
- enqueueOrDispatchInitializationEvent(parent, event, element);
167
- });
168
- }
169
- class MissingInterfaceParentError extends Error {
170
- constructor(elementName) {
171
- super(`The "${elementName}" element must be the child of the following elements: ${initializableElements.join(', ')}`);
172
- }
173
- }
174
- const initializableElements = [
175
- 'atomic-recs-interface',
176
- 'atomic-search-interface',
177
- 'atomic-commerce-interface',
178
- 'atomic-commerce-recommendation-interface',
179
- 'atomic-relevance-inspector',
180
- 'atomic-insight-interface',
181
- 'atomic-external',
182
- ];
183
- const initializeEventName = 'atomic/initializeComponent';
184
-
185
- /**
186
- * Binds the logging of document
187
- * @returns An unbind function for the events
188
- * @param engine A headless search engine instance.
189
- * @param result The result object
190
- * @param resultElement Parent result element
191
- * @param selector Optional. Css selector that selects all links to the document. Default: "a" tags with the clickUri as "href" parameter.
192
- */
193
- function bindLogDocumentOpenOnResult(engine, result, resultElement, selector) {
194
- const interactiveResult = buildInteractiveResult(engine, {
195
- options: { result },
196
- });
197
- const eventsMap = {
198
- contextmenu: () => interactiveResult.select(),
199
- click: () => interactiveResult.select(),
200
- mouseup: () => interactiveResult.select(),
201
- mousedown: () => interactiveResult.select(),
202
- touchstart: () => interactiveResult.beginDelayedSelect(),
203
- touchend: () => interactiveResult.cancelPendingSelect(),
204
- };
205
- const elements = resultElement.querySelectorAll(selector || 'a');
206
- elements.forEach((element) => {
207
- Object.keys(eventsMap).forEach((key) => element.addEventListener(key, eventsMap[key]));
208
- });
209
- return () => {
210
- elements.forEach((element) => {
211
- Object.keys(eventsMap).forEach((key) => element.removeEventListener(key, eventsMap[key]));
212
- });
213
- };
214
- }
215
-
216
- export { MissingInterfaceParentError, bindLogDocumentOpenOnResult, dispatchSearchBoxSuggestionsEvent, elementHasNoQuery, elementHasQuery, fetchProductContext, fetchBindings as initializeBindings };
217
-
218
- //# sourceMappingURL=index.js.map
@@ -1,12 +0,0 @@
1
- import { g as globalScripts, b as bootstrapLazy } from './app-globals-c5b073da.js';
2
- export { s as setNonce } from './app-globals-c5b073da.js';
3
-
4
- const defineCustomElements = async (win, options) => {
5
- if (typeof window === 'undefined') return undefined;
6
- await globalScripts();
7
- return bootstrapLazy([], options);
8
- };
9
-
10
- export { defineCustomElements };
11
-
12
- //# sourceMappingURL=loader.js.map