@coveo/atomic 3.33.0 → 3.33.1-pre.3b2f3850a0
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/atomic.esm.js.map +1 -1
- package/dist/atomic/components/analytics-config.js +1 -1
- package/dist/atomic/components/analytics-config.js.map +1 -1
- package/dist/atomic/components/atomic-citation.js +1 -547
- package/dist/atomic/components/atomic-citation.js.map +1 -1
- package/dist/{esm/atomic-citation.entry.js → atomic/components/atomic-citation2.js} +35 -13
- package/dist/atomic/components/atomic-citation2.js.map +1 -0
- package/dist/atomic/components/atomic-generated-answer-feedback-modal.js +1 -440
- package/dist/atomic/components/atomic-generated-answer-feedback-modal.js.map +1 -1
- package/dist/{esm/atomic-generated-answer-feedback-modal.entry.js → atomic/components/atomic-generated-answer-feedback-modal2.js} +55 -25
- package/dist/atomic/components/atomic-generated-answer-feedback-modal2.js.map +1 -0
- package/dist/atomic/components/atomic-generated-answer.js +88 -28
- package/dist/atomic/components/atomic-generated-answer.js.map +1 -1
- package/dist/atomic/components/atomic-insight-generated-answer.js +95 -34
- package/dist/atomic/components/atomic-insight-generated-answer.js.map +1 -1
- package/dist/atomic/components/atomic-ipx-result-link.js +1 -1
- package/dist/atomic/components/atomic-popover.js +1 -1
- package/dist/atomic/components/atomic-result-link.js +1 -1
- package/dist/atomic/components/attributes-slot.js +1 -1
- package/dist/atomic/components/createPopper.js +1 -1
- package/dist/atomic/components/generated-answer-common.js +146 -238
- package/dist/atomic/components/generated-answer-common.js.map +1 -1
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/components/popper-lite.js +1 -1
- package/dist/atomic/components/slot-utils.js +1 -1
- package/dist/atomic/components/tab-popover.js +1 -1
- package/dist/atomic/p-01531448.entry.js +2 -0
- package/dist/atomic/p-01531448.entry.js.map +1 -0
- package/dist/atomic/p-027b85e5.js +2 -0
- package/dist/atomic/{p-bed5a86b.js.map → p-027b85e5.js.map} +1 -1
- package/dist/atomic/{p-7b9026d7.js → p-07f25674.js} +2 -2
- package/dist/atomic/{p-75b863ea.entry.js → p-0ff341d5.entry.js} +2 -2
- package/dist/atomic/{p-eb026d69.entry.js → p-129799b2.entry.js} +2 -2
- package/dist/atomic/p-284f3c50.js +2 -0
- package/dist/atomic/p-284f3c50.js.map +1 -0
- package/dist/atomic/p-33201620.entry.js +2 -0
- package/dist/atomic/p-33201620.entry.js.map +1 -0
- package/dist/atomic/{p-8b6aaeed.entry.js → p-333be187.entry.js} +2 -2
- package/dist/atomic/{p-ba67a16b.js → p-3b58a34d.js} +2 -2
- package/dist/atomic/{p-ba67a16b.js.map → p-3b58a34d.js.map} +1 -1
- package/dist/atomic/{p-946fe85f.js → p-4aaffb59.js} +2 -2
- package/dist/atomic/{p-48c8a766.entry.js → p-5730dec7.entry.js} +2 -2
- package/dist/atomic/p-5d785d02.entry.js +2 -0
- package/dist/atomic/p-5d785d02.entry.js.map +1 -0
- package/dist/atomic/{p-9da1c516.entry.js → p-6481379f.entry.js} +2 -2
- package/dist/atomic/{p-bfdecd0f.entry.js → p-6f5d26cb.entry.js} +2 -2
- package/dist/atomic/{p-ca0a32dc.entry.js → p-dd93ae9a.entry.js} +2 -2
- package/dist/cjs/_loader.cjs.js +1 -1
- package/dist/cjs/{analytics-config-f34a68ee.js → analytics-config-de09a791.js} +2 -2
- package/dist/cjs/analytics-config-de09a791.js.map +1 -0
- package/dist/cjs/{atomic-generated-answer-feedback-modal.cjs.entry.js → atomic-citation_2.cjs.entry.js} +526 -1
- package/dist/cjs/atomic-citation_2.cjs.entry.js.map +1 -0
- package/dist/cjs/atomic-generated-answer.cjs.entry.js +62 -27
- package/dist/cjs/atomic-generated-answer.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-generated-answer.cjs.entry.js +68 -32
- package/dist/cjs/atomic-insight-generated-answer.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-interface.cjs.entry.js +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/atomic.cjs.js +1 -1
- package/dist/cjs/{generated-answer-common-4cd4b7c6.js → generated-answer-common-469ad0e8.js} +152 -237
- package/dist/cjs/generated-answer-common-469ad0e8.js.map +1 -0
- package/dist/cjs/index-757bc886.js +4 -8
- package/dist/cjs/version.cjs.js +2 -2
- package/dist/esm/_loader.js +1 -1
- package/dist/esm/{analytics-config-672b6eba.js → analytics-config-19fa5599.js} +2 -2
- package/dist/esm/analytics-config-19fa5599.js.map +1 -0
- package/dist/esm/atomic-citation_2.entry.js +938 -0
- package/dist/esm/atomic-citation_2.entry.js.map +1 -0
- package/dist/esm/atomic-generated-answer.entry.js +64 -29
- package/dist/esm/atomic-generated-answer.entry.js.map +1 -1
- package/dist/esm/atomic-insight-generated-answer.entry.js +71 -35
- package/dist/esm/atomic-insight-generated-answer.entry.js.map +1 -1
- package/dist/esm/atomic-insight-interface.entry.js +1 -1
- package/dist/esm/atomic-popover.entry.js +2 -2
- package/dist/esm/atomic-recs-interface.entry.js +1 -1
- package/dist/esm/atomic-search-box-query-suggestions_2.entry.js +1 -1
- package/dist/esm/atomic-search-box.entry.js +1 -1
- package/dist/esm/atomic-search-interface.entry.js +2 -2
- package/dist/esm/atomic-tab-bar_2.entry.js +2 -2
- package/dist/esm/atomic.js +1 -1
- package/dist/esm/{createPopper-a633eb88.js → createPopper-ed15cfea.js} +2 -2
- package/dist/esm/{createPopper-a633eb88.js.map → createPopper-ed15cfea.js.map} +1 -1
- package/dist/esm/{generated-answer-common-06146290.js → generated-answer-common-184a3c08.js} +147 -239
- package/dist/esm/generated-answer-common-184a3c08.js.map +1 -0
- package/dist/esm/index-3f35faca.js +4 -8
- package/dist/esm/{local-storage-utils-410269e6.js → local-storage-utils-a4bf8fba.js} +2 -2
- package/dist/esm/{local-storage-utils-410269e6.js.map → local-storage-utils-a4bf8fba.js.map} +1 -1
- package/dist/esm/{popper-lite-2035100c.js → popper-lite-4b6382b2.js} +2 -2
- package/dist/esm/{popper-lite-2035100c.js.map → popper-lite-4b6382b2.js.map} +1 -1
- package/dist/esm/version.js +2 -2
- package/dist/types/components/common/generated-answer/generated-answer-common.d.ts +30 -50
- package/dist/types/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.d.ts +11 -3
- package/dist/types/components/search/atomic-generated-answer/atomic-generated-answer.d.ts +9 -1
- package/docs/atomic-docs.json +17 -3
- package/package.json +3 -3
- package/dist/atomic/p-0c076058.entry.js +0 -2
- package/dist/atomic/p-0c076058.entry.js.map +0 -1
- package/dist/atomic/p-421850f9.entry.js +0 -2
- package/dist/atomic/p-421850f9.entry.js.map +0 -1
- package/dist/atomic/p-579c5b46.entry.js +0 -2
- package/dist/atomic/p-579c5b46.entry.js.map +0 -1
- package/dist/atomic/p-5fca1435.js +0 -2
- package/dist/atomic/p-5fca1435.js.map +0 -1
- package/dist/atomic/p-bed5a86b.js +0 -2
- package/dist/atomic/p-e27e1e46.entry.js +0 -2
- package/dist/atomic/p-e27e1e46.entry.js.map +0 -1
- package/dist/cjs/analytics-config-f34a68ee.js.map +0 -1
- package/dist/cjs/atomic-citation.cjs.entry.js +0 -533
- package/dist/cjs/atomic-citation.cjs.entry.js.map +0 -1
- package/dist/cjs/atomic-generated-answer-feedback-modal.cjs.entry.js.map +0 -1
- package/dist/cjs/generated-answer-common-4cd4b7c6.js.map +0 -1
- package/dist/esm/analytics-config-672b6eba.js.map +0 -1
- package/dist/esm/atomic-citation.entry.js.map +0 -1
- package/dist/esm/atomic-generated-answer-feedback-modal.entry.js.map +0 -1
- package/dist/esm/generated-answer-common-06146290.js.map +0 -1
- /package/dist/atomic/{p-7b9026d7.js.map → p-07f25674.js.map} +0 -0
- /package/dist/atomic/{p-75b863ea.entry.js.map → p-0ff341d5.entry.js.map} +0 -0
- /package/dist/atomic/{p-eb026d69.entry.js.map → p-129799b2.entry.js.map} +0 -0
- /package/dist/atomic/{p-8b6aaeed.entry.js.map → p-333be187.entry.js.map} +0 -0
- /package/dist/atomic/{p-946fe85f.js.map → p-4aaffb59.js.map} +0 -0
- /package/dist/atomic/{p-48c8a766.entry.js.map → p-5730dec7.entry.js.map} +0 -0
- /package/dist/atomic/{p-9da1c516.entry.js.map → p-6481379f.entry.js.map} +0 -0
- /package/dist/atomic/{p-bfdecd0f.entry.js.map → p-6f5d26cb.entry.js.map} +0 -0
- /package/dist/atomic/{p-ca0a32dc.entry.js.map → p-dd93ae9a.entry.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"atomic-citation.atomic-generated-answer-feedback-modal.entry.js","mappings":"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","names":["hash","allPlacements","placements","offset","flip","arrow","hide"],"sources":["../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/popper.js","src/components/common/generated-answer/atomic-citation/citation-anchoring-utils.ts","src/components/common/generated-answer/atomic-citation/atomic-citation.pcss?tag=atomic-citation","src/components/common/generated-answer/atomic-citation/atomic-citation.tsx","src/components/common/generated-answer/atomic-generated-answer-feedback/atomic-generated-answer-feedback-modal.pcss?tag=atomic-generated-answer-feedback-modal&encapsulation=shadow","src/components/common/generated-answer/atomic-generated-answer-feedback/atomic-generated-answer-feedback-modal.tsx"],"sourcesContent":["import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","export function extractTextToHighlight(text: string) {\n text = text.trim();\n const sentenceRegex =\n /(?<=^|\\p{P}\\s)\\p{P}?\\p{Lu}.*?[.!?]+(?=\\s+(?:\\p{Lu}|\\d)|$)/gu;\n const fallbackWordCount = 5;\n const sentences = text.match(sentenceRegex);\n if (sentences?.length) {\n return sentences[0].trim();\n }\n return text.split(/\\s+/).slice(0, fallbackWordCount).join(' ');\n}\n\nexport function generateTextFragmentUrl(\n uri: string,\n text?: string,\n filetype?: string\n) {\n if (filetype !== 'html' || !text) {\n return uri;\n }\n const highlight = extractTextToHighlight(text);\n const encodedTextFragment = encodeURIComponent(highlight).replace(\n /-/g,\n '%2D'\n );\n return `${uri}#:~:text=${encodedTextFragment}`;\n}\n\nexport function generatePdfPageUrl(uri: string, pageNumber?: number) {\n if (!pageNumber || pageNumber <= 0) {\n return uri;\n }\n return `${uri}#page=${pageNumber}`;\n}\n","@import '../../../../global/global.pcss';\n\n@import '../../../../utils/tailwind-utilities/set-font-size.tw.css';\n\n[part='citation'] {\n --height: 2.2em;\n --index-height: 1.1em;\n --max-citation-width: 400px;\n\n max-width: var(--max-citation-width);\n height: var(--height);\n}\n\n[part='citation-popover'] {\n --popover-width: 350px;\n\n width: var(--popover-width);\n\n p {\n @apply set-font-size-sm;\n }\n}\n","import {GeneratedAnswerCitation, InteractiveCitation} from '@coveo/headless';\nimport {\n createPopper,\n preventOverflow,\n Instance as PopperInstance,\n} from '@popperjs/core';\nimport {Component, h, State, Prop, Element, Watch} from '@stencil/core';\nimport {LinkWithItemAnalytics} from '../../item-link/stencil-item-link';\nimport {Heading} from '../../stencil-heading';\nimport {generateTextFragmentUrl, generatePdfPageUrl} from './citation-anchoring-utils';\n\n/**\n * @internal\n */\n@Component({\n tag: 'atomic-citation',\n styleUrl: 'atomic-citation.pcss',\n})\nexport class AtomicCitation {\n @Element() public host!: HTMLElement;\n\n /**\n * The citation item information.\n */\n @Prop() citation!: GeneratedAnswerCitation;\n /**\n * The citation index.\n */\n @Prop() index!: number;\n /**\n * Callback function invoked when the user stops hovering over a citation. `citationHoverTimeMs` is the amount of time over which the citation has been hovered.\n */\n @Prop() sendHoverEndEvent!: (citationHoverTimeMs: number) => void;\n /**\n * An `InteractiveCitation` controller instance. It is used when the user interacts with the citation by selecting or hovering over it.\n */\n @Prop() interactiveCitation!: InteractiveCitation;\n /**\n * Option to disable citation anchoring.\n * @default false\n */\n @Prop() disableCitationAnchoring: boolean = false;\n\n @State() public isOpen = false;\n\n private citationRef!: HTMLElement;\n private popupRef!: HTMLElement;\n private popperInstance?: PopperInstance;\n private stopPropagation?: boolean;\n\n private hoverStart?: number;\n private hoverAnalyticsTimeout = 1000;\n\n private hoverTimeout?: ReturnType<typeof setTimeout>;\n private hoverDebounceTimeoutMs = 200;\n\n @Watch('isOpen')\n sendHoverAnalytics() {\n if (this.isOpen) {\n this.hoverStart = new Date().getTime();\n return;\n }\n if (!this.hoverStart) {\n return;\n }\n const difference = new Date().getTime() - this.hoverStart;\n if (difference > this.hoverAnalyticsTimeout) {\n this.sendHoverEndEvent(difference);\n }\n this.hoverStart = undefined;\n }\n\n public componentDidRender() {\n if (this.popperInstance || !this.citationRef || !this.popupRef) {\n return;\n }\n\n this.popperInstance = createPopper(this.citationRef, this.popupRef, {\n placement: 'top-start',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 6],\n },\n },\n preventOverflow,\n ],\n });\n }\n\n public componentDidUpdate() {\n this.popperInstance?.forceUpdate();\n }\n\n private getTruncatedText() {\n return (\n this.citation.text &&\n `${this.citation.text?.trim().slice(0, 200)}${\n this.citation.text.length > 200 ? '...' : ''\n }`\n );\n }\n\n private anchorUrl(\n uri: string,\n text?: string,\n filetype?: string, \n pageNumber?: number\n ) {\n if (this.disableCitationAnchoring) {\n return uri;\n }\n\n switch (filetype) {\n case 'html':\n return generateTextFragmentUrl(uri, text, filetype);\n case 'pdf':\n return generatePdfPageUrl(uri, pageNumber);\n default:\n return uri;\n }\n }\n\n private openPopover = () => {\n this.isOpen = true;\n };\n\n private closePopover = () => {\n clearTimeout(this.hoverTimeout);\n this.isOpen = false;\n };\n\n private delayedPopoverOpen = () => {\n clearTimeout(this.hoverTimeout);\n this.hoverTimeout = setTimeout(\n this.openPopover,\n this.hoverDebounceTimeoutMs\n );\n };\n\n private renderPopover() {\n return (\n <div\n part=\"citation-popover\"\n class={`border-neutral bg-background z-10 rounded-md border p-4 shadow ${\n this.isOpen ? 'desktop-only:flex' : 'hidden'\n } mobile-only:hidden flex-col gap-3`}\n ref={(el) => (this.popupRef = el!)}\n role=\"dialog\"\n >\n <div class=\"text-neutral-dark truncate text-sm\">\n {this.citation.uri}\n </div>\n <Heading level={0} class=\"text-md font-bold\">\n {this.citation.title}\n </Heading>\n <p class=\"text-on-background text-sm\">{this.getTruncatedText()}</p>\n </div>\n );\n }\n\n public render() {\n return (\n <div class=\"relative\">\n <LinkWithItemAnalytics\n href={this.anchorUrl(\n this.citation.clickUri ?? this.citation.uri,\n this.citation.text,\n this.citation.fields?.filetype,\n )}\n ref={(el) => (this.citationRef = el!)}\n part=\"citation\"\n target=\"_blank\"\n rel=\"noopener\"\n aria-haspopup=\"dialog\"\n className=\"bg-background btn-outline-primary border-neutral text-on-background flex items-center rounded-full border p-1\"\n onSelect={() => this.interactiveCitation.select()}\n onBeginDelayedSelect={() =>\n this.interactiveCitation.beginDelayedSelect()\n }\n onCancelPendingSelect={() =>\n this.interactiveCitation.cancelPendingSelect()\n }\n stopPropagation={this.stopPropagation}\n onMouseLeave={this.closePopover}\n onMouseOver={this.delayedPopoverOpen}\n onFocus={this.openPopover}\n onBlur={this.closePopover}\n >\n <span class=\"citation-title mx-1 truncate\">\n {this.citation.title}\n </span>\n </LinkWithItemAnalytics>\n {this.renderPopover()}\n </div>\n );\n }\n}\n","@import '../../../../global/global.pcss';\n\n@utility mobile-feedback-modal {\n &::part(container) {\n @apply w-auto min-w-full;\n }\n\n &::part(header),\n &::part(body),\n &::part(footer) {\n @apply max-w-full;\n }\n [part='buttons'] {\n .required-label {\n @apply text-sm;\n }\n }\n [part='form'] {\n .answer-evaluation {\n @apply block;\n }\n\n .options {\n @apply mt-2;\n }\n }\n [part='modal-header'] {\n .hide {\n @apply hidden;\n }\n }\n}\n\n[part='generated-answer-feedback-modal'] {\n &::part(container) {\n @apply min-w-170;\n }\n\n &::part(header),\n &::part(body),\n &::part(footer) {\n @apply max-w-170;\n }\n\n @media not all and (width >= theme(--breakpoint-desktop)) {\n @apply mobile-feedback-modal;\n }\n}\n\n[part='form'] {\n .active {\n @apply border-primary-light text-primary-light bg-primary-background;\n }\n .text-error-red {\n @apply text-inline-code;\n }\n .required {\n @apply flex;\n }\n}\n","import {\n GeneratedAnswer,\n GeneratedAnswerFeedback,\n GeneratedAnswerFeedbackOption,\n} from '@coveo/headless';\nimport {\n Component,\n State,\n h,\n Watch,\n Prop,\n Element,\n Event,\n EventEmitter,\n} from '@stencil/core/internal';\nimport CloseIcon from '../../../../images/close.svg';\nimport Success from '../../../../images/success.svg';\nimport {\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {updateBreakpoints} from '../../../../utils/replace-breakpoint';\nimport {once, randomID} from '../../../../utils/utils';\nimport {ATOMIC_MODAL_EXPORT_PARTS} from '../../atomic-modal/export-parts';\nimport {IconButton} from '../../iconButton';\nimport {AnyBindings} from '../../interface/bindings';\nimport {Button} from '../../stencil-button';\nimport {FieldsetGroup} from '../../stencil-fieldset-group';\nimport {RadioButton} from '../../stencil-radio-button';\n\n/**\n * @internal\n */\n@Component({\n tag: 'atomic-generated-answer-feedback-modal',\n styleUrl: 'atomic-generated-answer-feedback-modal.pcss',\n shadow: true,\n})\nexport class AtomicGeneratedAnswerFeedbackModal\n implements InitializableComponent<AnyBindings>\n{\n @InitializeBindings() public bindings!: AnyBindings;\n @Element() public host!: HTMLElement;\n\n /**\n * Indicates whether the modal is open.\n */\n @Prop({reflect: true, mutable: true}) isOpen = false;\n /**\n * A `GeneratedAnswer` controller instance. It is used when the user interacts with the modal.\n */\n @Prop({reflect: true, mutable: true}) generatedAnswer!: GeneratedAnswer;\n /**\n * Indicates whether the answer was helpful or not.\n */\n @Prop({reflect: true, mutable: true}) helpful = false;\n\n @State() public error!: Error;\n @State() private currentAnswer: Partial<GeneratedAnswerFeedback> =\n this.getInitialAnswerState();\n @State() feedbackSubmitted: boolean = false;\n @State() answerEvaluationRequired: boolean = false;\n\n private readonly formId = randomID(\n 'atomic-generated-answer-feedback-modal-form-'\n );\n private detailsInputRef?: HTMLTextAreaElement;\n\n private linkInputRef?: HTMLInputElement;\n\n @Event() feedbackSent!: EventEmitter;\n\n @Watch('isOpen')\n watchToggleOpen(isOpen: boolean) {\n if (isOpen) {\n this.generatedAnswer.openFeedbackModal();\n }\n }\n\n private static options: {\n localeKey: string;\n correspondingAnswer: keyof GeneratedAnswerFeedback;\n }[] = [\n {\n localeKey: 'feedback-correct-topic',\n correspondingAnswer: 'correctTopic',\n },\n {\n localeKey: 'feedback-hallucination-free',\n correspondingAnswer: 'hallucinationFree',\n },\n {\n localeKey: 'feedback-documented',\n correspondingAnswer: 'documented',\n },\n {\n localeKey: 'feedback-readable',\n correspondingAnswer: 'readable',\n },\n ];\n\n private getInitialAnswerState(): Partial<GeneratedAnswerFeedback> {\n return {\n documented: undefined,\n correctTopic: undefined,\n hallucinationFree: undefined,\n readable: undefined,\n };\n }\n\n private resetState() {\n this.feedbackSubmitted = false;\n this.currentAnswer = this.getInitialAnswerState();\n this.answerEvaluationRequired = false;\n this.isOpen = false;\n }\n\n private clearInputRefs() {\n if (this.detailsInputRef) {\n this.detailsInputRef.value = '';\n }\n if (this.linkInputRef) {\n this.linkInputRef.value = '';\n }\n }\n\n private close() {\n this.clearInputRefs();\n this.resetState();\n this.generatedAnswer.closeFeedbackModal();\n }\n\n private updateBreakpoints = once(() => updateBreakpoints(this.host));\n\n private setCurrentAnswer(\n key: keyof GeneratedAnswerFeedback,\n value: GeneratedAnswerFeedbackOption | string\n ) {\n this.currentAnswer = {\n ...this.currentAnswer,\n [key]: value,\n };\n }\n\n public sendFeedback() {\n const feedback: GeneratedAnswerFeedback = {\n ...(this.currentAnswer as GeneratedAnswerFeedback),\n helpful: this.helpful,\n };\n this.generatedAnswer.sendFeedback(feedback);\n this.feedbackSent.emit();\n }\n\n private isAnyAnswerEvaluationUndefined = () => {\n return Object.values(this.currentAnswer).some(\n (value) => value === undefined\n );\n };\n\n private handleSubmit(e: Event) {\n e.preventDefault();\n if (this.isAnyAnswerEvaluationUndefined()) {\n this.answerEvaluationRequired = true;\n return;\n }\n this.feedbackSubmitted = true;\n this.answerEvaluationRequired = false;\n this.sendFeedback();\n }\n\n private renderHeader() {\n return (\n <div\n slot=\"header\"\n part=\"modal-header\"\n class=\"flex w-full items-center justify-between\"\n >\n <h1>\n <span>{this.bindings.i18n.t('feedback-modal-title')}</span>\n <span class=\"hide ml-0.5\">\n {this.bindings.i18n.t('additional-feedback')}\n </span>\n </h1>\n <IconButton\n style=\"text-transparent\"\n class=\"search-clear-button\"\n onClick={() => this.close()}\n icon={CloseIcon}\n partPrefix={'close'}\n ariaLabel={this.bindings.i18n.t('close')}\n />\n </div>\n );\n }\n\n private renderFeedbackOption(\n option: GeneratedAnswerFeedbackOption,\n correspondingAnswer: keyof GeneratedAnswerFeedback\n ) {\n const buttonClasses = [\n 'min-w-20',\n 'flex',\n 'items-center',\n 'justify-center',\n 'px-3',\n 'py-1.5',\n 'mr-1',\n 'text-neutral-dark',\n ];\n const isSelected = this.currentAnswer[correspondingAnswer] === option;\n\n if (isSelected) {\n buttonClasses.push('active');\n }\n return (\n <RadioButton\n key={String(correspondingAnswer)}\n groupName={this.bindings.i18n.t(correspondingAnswer)}\n style=\"outline-neutral\"\n checked={isSelected}\n aria-checked={isSelected}\n onChecked={() => {\n this.setCurrentAnswer(correspondingAnswer, option);\n }}\n class={buttonClasses.join(' ')}\n text={this.bindings.i18n.t(option)}\n ></RadioButton>\n );\n }\n\n private renderAnswerEvaluation(\n label: string,\n correspondingAnswer: keyof GeneratedAnswerFeedback\n ) {\n const labelClasses = ['text-error-red', 'text-sm', 'hidden'];\n const isRequired =\n this.answerEvaluationRequired &&\n this.currentAnswer[correspondingAnswer] === undefined;\n if (isRequired) {\n labelClasses.push('required');\n }\n return (\n <div class=\"block\">\n <div class=\"flex\">\n <label class=\"text-base\">\n {this.bindings.i18n.t(label)}\n <span class=\"text-error-red ml-0.5\">*</span>\n </label>\n </div>\n <span class={labelClasses.join(' ')}>\n {this.bindings.i18n.t('required-fields-error')}\n </span>\n </div>\n );\n }\n\n private renderOptions() {\n return (\n <fieldset>\n <legend class=\"font-bold\">\n {this.bindings.i18n.t('answer-evaluation')}\n </legend>\n {AtomicGeneratedAnswerFeedbackModal.options.map(\n ({localeKey, correspondingAnswer}) => (\n <FieldsetGroup label={this.bindings.i18n.t(localeKey)}>\n <div\n class={`answer-evaluation mt-3 flex items-center justify-between ${String(correspondingAnswer)}`}\n key={String(correspondingAnswer)}\n >\n {this.renderAnswerEvaluation(localeKey, correspondingAnswer)}\n <div\n class=\"options flex text-base\"\n aria-label={this.bindings.i18n.t(localeKey)}\n >\n {this.renderFeedbackOption('yes', correspondingAnswer)}\n {this.renderFeedbackOption('unknown', correspondingAnswer)}\n {this.renderFeedbackOption('no', correspondingAnswer)}\n </div>\n </div>\n </FieldsetGroup>\n )\n )}\n </fieldset>\n );\n }\n\n private renderLinkToCorrectAnswerField() {\n return (\n <fieldset>\n <legend class=\"font-bold\">\n {this.bindings.i18n.t('generated-answer-feedback-link')}\n </legend>\n <input\n type=\"text\"\n ref={(linkInputRef) => (this.linkInputRef = linkInputRef)}\n placeholder=\"https://URL\"\n class=\"input-primary placeholder-neutral-dark mt-4 h-9 w-full rounded-md px-4\"\n onChange={(e) =>\n this.setCurrentAnswer(\n 'documentUrl',\n (e.currentTarget as HTMLInputElement).value\n )\n }\n />\n </fieldset>\n );\n }\n\n private renderAddNotesField() {\n return (\n <fieldset>\n <legend class=\"mt-8 font-bold\">\n {this.bindings.i18n.t('generated-answer-additional-notes')}\n </legend>\n <textarea\n name=\"answer-details\"\n ref={(detailsInput) => (this.detailsInputRef = detailsInput)}\n class=\"placeholder-neutral-dark border-neutral hover:border-primary-light focus-visible:border-primary mt-4 w-full resize-none rounded-md border px-4 py-2 leading-5 focus:outline-hidden focus-visible:ring-2\"\n rows={4}\n placeholder={this.bindings.i18n.t('add-notes')}\n onChange={(e) =>\n this.setCurrentAnswer(\n 'details',\n (e.currentTarget as HTMLTextAreaElement).value\n )\n }\n ></textarea>\n </fieldset>\n );\n }\n\n private renderFeedbackForm() {\n return (\n <form\n part=\"form\"\n id={this.formId}\n slot=\"body\"\n onSubmit={(e) => this.handleSubmit(e)}\n class=\"flex flex-col gap-8 leading-4\"\n >\n {this.renderOptions()}\n {this.renderLinkToCorrectAnswerField()}\n {this.renderAddNotesField()}\n </form>\n );\n }\n\n private renderSuccessMessage() {\n return (\n <div slot=\"body\" class=\"my-4 flex flex-col items-center gap-4\">\n <atomic-icon icon={Success} class=\"w-48\" />\n <p class=\"text-base\">\n {this.bindings.i18n.t('generated-answer-feedback-success')}\n </p>\n </div>\n );\n }\n\n private renderBody() {\n if (!this.feedbackSubmitted) {\n return this.renderFeedbackForm();\n } else {\n return this.renderSuccessMessage();\n }\n }\n\n private renderFeedbackFormFooter() {\n const buttonClasses =\n 'flex items-center justify-center text-sm leading-4 p-2 rounded-md';\n\n return (\n <div slot=\"footer\" part=\"modal-footer\">\n <div class=\"flex items-center justify-between\">\n <div class=\"required-label text-base\">\n <span class=\"text-error mr-0.5\">*</span>\n {this.bindings.i18n.t('required-fields')}\n </div>\n <div class=\"flex gap-2\">\n <Button\n part=\"cancel-button\"\n style=\"outline-primary\"\n class={buttonClasses}\n ariaLabel={this.bindings.i18n.t('skip')}\n onClick={() => this.close()}\n >\n {this.bindings.i18n.t('skip')}\n </Button>\n <Button\n part=\"submit-button\"\n style=\"primary\"\n type=\"submit\"\n form={this.formId}\n class={buttonClasses}\n ariaLabel={this.bindings.i18n.t('generated-answer-send-feedback')}\n >\n {this.bindings.i18n.t('generated-answer-send-feedback')}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n private renderSuccessFormFooter() {\n return (\n <div slot=\"footer\">\n <div class=\"flex justify-end gap-2 p-2\">\n <Button\n part=\"cancel-button\"\n style=\"primary\"\n onClick={() => this.close()}\n class=\"flex justify-center p-2 text-sm leading-4\"\n ariaLabel={this.bindings.i18n.t('modal-done')}\n >\n {this.bindings.i18n.t('modal-done')}\n </Button>\n </div>\n </div>\n );\n }\n\n private renderFooter() {\n if (!this.feedbackSubmitted) {\n return this.renderFeedbackFormFooter();\n } else {\n return this.renderSuccessFormFooter();\n }\n }\n\n public render() {\n this.updateBreakpoints();\n\n return (\n <atomic-modal\n fullscreen={false}\n isOpen={this.isOpen}\n close={() => this.close()}\n container={this.host}\n part=\"generated-answer-feedback-modal\"\n exportparts={ATOMIC_MODAL_EXPORT_PARTS}\n >\n {this.renderHeader()}\n {this.renderBody()}\n {this.renderFooter()}\n </atomic-modal>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { r as registerInstance, h, g as getElement } from './index-3f35faca.js';
|
|
2
|
-
import {
|
|
2
|
+
import { buildGeneratedAnswer, buildSearchStatus, buildTabManager, buildInteractiveCitation } from '@coveo/headless';
|
|
3
3
|
import { d as debounce } from './debounce-utils-8619dece.js';
|
|
4
4
|
import { I as InitializeBindings, B as BindStateToController, H as Hidden } from './initialization-utils-271aa8c0.js';
|
|
5
5
|
import { A as ArrayProp } from './props-utils-76e19fa7.js';
|
|
6
6
|
import { A as AriaLiveRegion } from './stencil-accessibility-utils-2d41d4cd.js';
|
|
7
7
|
import { s as shouldDisplayOnCurrentTab } from './tab-utils-35886d3e.js';
|
|
8
|
-
import {
|
|
8
|
+
import { g as getNamedSlotFromHost } from './slot-utils-dcf4fc27.js';
|
|
9
|
+
import { r as readGeneratedAnswerStoredData, w as writeGeneratedAnswerStoredData, g as getGeneratedAnswerStatus, i as insertGeneratedAnswerFeedbackModal, G as GeneratedAnswerNoAnswerMessage, a as GeneratedAnswerWrapper, b as GeneratedAnswerCommon, c as copyToClipboard } from './generated-answer-common-184a3c08.js';
|
|
9
10
|
import './dom-utils-f6086cd3.js';
|
|
10
11
|
import './event-utils-8de63ec3.js';
|
|
11
12
|
import './init-queue-fbe942c3.js';
|
|
@@ -14,8 +15,7 @@ import '@coveo/bueno';
|
|
|
14
15
|
import './utils-7ac76ba7.js';
|
|
15
16
|
import './purify-c7ebd240.js';
|
|
16
17
|
import './_commonjsHelpers-1789f0cf.js';
|
|
17
|
-
import './local-storage-utils-
|
|
18
|
-
import './slot-utils-dcf4fc27.js';
|
|
18
|
+
import './local-storage-utils-a4bf8fba.js';
|
|
19
19
|
import './stencil-heading-2b28a9b9.js';
|
|
20
20
|
import './stencil-button-75e8b31b.js';
|
|
21
21
|
import './stencil-button-style-0bc80040.js';
|
|
@@ -69,17 +69,17 @@ const AtomicGeneratedAnswer = class {
|
|
|
69
69
|
* If you don't set this property, the generated answer can be displayed on any tab. Otherwise, the generated answer won't be displayed on any of the specified tabs.
|
|
70
70
|
*/
|
|
71
71
|
this.tabsExcluded = '[]';
|
|
72
|
+
this._data = readGeneratedAnswerStoredData(this.withToggle);
|
|
72
73
|
// @ts-expect-error: This function is used by BindStateToController.
|
|
73
74
|
this.onGeneratedAnswerStateUpdate = () => {
|
|
74
|
-
if (this.generatedAnswerState.isVisible !==
|
|
75
|
-
this.
|
|
76
|
-
|
|
77
|
-
...this.generatedAnswerCommon.data,
|
|
75
|
+
if (this.generatedAnswerState.isVisible !== this._data?.isVisible) {
|
|
76
|
+
this._data = {
|
|
77
|
+
...this._data,
|
|
78
78
|
isVisible: this.generatedAnswerState.isVisible,
|
|
79
79
|
};
|
|
80
|
-
|
|
80
|
+
writeGeneratedAnswerStoredData(this._data);
|
|
81
81
|
}
|
|
82
|
-
this.setAriaMessage(this.
|
|
82
|
+
this.setAriaMessage(getGeneratedAnswerStatus(this.generatedAnswerState, this.bindings.i18n));
|
|
83
83
|
};
|
|
84
84
|
this.setCopied = (isCopied) => {
|
|
85
85
|
this.copied = isCopied;
|
|
@@ -110,25 +110,9 @@ const AtomicGeneratedAnswer = class {
|
|
|
110
110
|
[...this.tabsExcluded].length > 0) {
|
|
111
111
|
console.warn('Values for both "tabs-included" and "tabs-excluded" have been provided. This could lead to unexpected behaviors.');
|
|
112
112
|
}
|
|
113
|
-
this.generatedAnswerCommon = new GeneratedAnswerCommon({
|
|
114
|
-
host: this.host,
|
|
115
|
-
withToggle: this.withToggle,
|
|
116
|
-
collapsible: this.collapsible,
|
|
117
|
-
disableCitationAnchoring: this.disableCitationAnchoring,
|
|
118
|
-
getGeneratedAnswer: () => this.generatedAnswer,
|
|
119
|
-
getGeneratedAnswerState: () => this.generatedAnswerState,
|
|
120
|
-
getSearchStatusState: () => this.searchStatusState,
|
|
121
|
-
getBindings: () => this.bindings,
|
|
122
|
-
getCopied: () => this.copied,
|
|
123
|
-
setCopied: this.setCopied,
|
|
124
|
-
getCopyError: () => this.copyError,
|
|
125
|
-
setCopyError: this.setCopyError,
|
|
126
|
-
setAriaMessage: this.setAriaMessage,
|
|
127
|
-
buildInteractiveCitation: (props) => buildInteractiveCitation(this.bindings.engine, props),
|
|
128
|
-
});
|
|
129
113
|
this.generatedAnswer = buildGeneratedAnswer(this.bindings.engine, {
|
|
130
114
|
initialState: {
|
|
131
|
-
isVisible: this.
|
|
115
|
+
isVisible: this._data.isVisible,
|
|
132
116
|
responseFormat: {
|
|
133
117
|
contentFormat: ['text/markdown', 'text/plain'],
|
|
134
118
|
},
|
|
@@ -139,7 +123,7 @@ const AtomicGeneratedAnswer = class {
|
|
|
139
123
|
fieldsToIncludeInCitations: this.getCitationFields(),
|
|
140
124
|
});
|
|
141
125
|
this.searchStatus = buildSearchStatus(this.bindings.engine);
|
|
142
|
-
this.
|
|
126
|
+
this.insertFeedbackModal();
|
|
143
127
|
if (window.ResizeObserver && this.collapsible) {
|
|
144
128
|
const debouncedAdaptAnswerHeight = debounce(() => this.adaptAnswerHeight(), 100);
|
|
145
129
|
this.resizeObserver = new ResizeObserver(debouncedAdaptAnswerHeight);
|
|
@@ -147,6 +131,9 @@ const AtomicGeneratedAnswer = class {
|
|
|
147
131
|
}
|
|
148
132
|
this.tabManager = buildTabManager(this.bindings.engine);
|
|
149
133
|
}
|
|
134
|
+
insertFeedbackModal() {
|
|
135
|
+
this.modalRef = insertGeneratedAnswerFeedbackModal(this.host, () => this.generatedAnswer);
|
|
136
|
+
}
|
|
150
137
|
updateAnswerCollapsed(newState, oldState) {
|
|
151
138
|
const newExpanded = newState.expanded;
|
|
152
139
|
const oldExpanded = oldState ? oldState.expanded : undefined;
|
|
@@ -234,7 +221,55 @@ const AtomicGeneratedAnswer = class {
|
|
|
234
221
|
if (!shouldDisplayOnCurrentTab([...this.tabsIncluded], [...this.tabsExcluded], this.tabManagerState?.activeTab)) {
|
|
235
222
|
return h(Hidden, null);
|
|
236
223
|
}
|
|
237
|
-
|
|
224
|
+
const hasRetryableError = Boolean(!this.searchStatusState?.hasError &&
|
|
225
|
+
this.generatedAnswerState?.error?.isRetryable);
|
|
226
|
+
const hasNoAnswerGenerated = this.generatedAnswerState?.answer === undefined &&
|
|
227
|
+
!this.generatedAnswerState?.citations?.length &&
|
|
228
|
+
!hasRetryableError;
|
|
229
|
+
const isAnswerVisible = this.generatedAnswerState?.isVisible;
|
|
230
|
+
const hasCustomNoAnswerMessage = !!getNamedSlotFromHost(this.host, 'no-answer-message');
|
|
231
|
+
const hasClipboard = !!navigator?.clipboard?.writeText;
|
|
232
|
+
if (hasNoAnswerGenerated) {
|
|
233
|
+
return this.generatedAnswerState?.cannotAnswer && hasCustomNoAnswerMessage ? (h(GeneratedAnswerWrapper, null, h(GeneratedAnswerNoAnswerMessage, { i18n: this.bindings.i18n }, h("slot", { name: "no-answer-message" })))) : null;
|
|
234
|
+
}
|
|
235
|
+
const buildInteractiveCitationForCitation = (citation) => buildInteractiveCitation(this.bindings.engine, {
|
|
236
|
+
options: { citation },
|
|
237
|
+
});
|
|
238
|
+
return h(GeneratedAnswerCommon, { collapsible: this.collapsible, onShowButtonClick: this.clickOnShowButton.bind(this), onClickDislike: this.clickDislike.bind(this), onClickLike: this.clickLike.bind(this), onCopyToClipboard: this.copyToClipboard.bind(this), disableCitationAnchoring: this.disableCitationAnchoring, copied: this.copied, i18n: this.bindings.i18n, copyError: this.copyError, generatedAnswer: this.generatedAnswer, generatedAnswerState: this.generatedAnswerState, withToggle: this.withToggle, isAnswerVisible: isAnswerVisible, hasRetryableError: hasRetryableError, hasClipboard: hasClipboard, buildInteractiveCitationForCitation: buildInteractiveCitationForCitation });
|
|
239
|
+
}
|
|
240
|
+
clickDislike() {
|
|
241
|
+
this.setIsAnswerHelpful(false);
|
|
242
|
+
this.generatedAnswer?.dislike();
|
|
243
|
+
this.openFeedbackModal();
|
|
244
|
+
}
|
|
245
|
+
clickLike() {
|
|
246
|
+
this.setIsAnswerHelpful(true);
|
|
247
|
+
this.generatedAnswer?.like();
|
|
248
|
+
this.openFeedbackModal();
|
|
249
|
+
}
|
|
250
|
+
async copyToClipboard() {
|
|
251
|
+
if (this.generatedAnswerState?.answer) {
|
|
252
|
+
await copyToClipboard(this.generatedAnswerState.answer, this.setCopied, this.setCopyError, () => this.generatedAnswer?.logCopyToClipboard(), this.bindings.engine.logger);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
clickOnShowButton() {
|
|
256
|
+
if (this.generatedAnswerState?.expanded) {
|
|
257
|
+
this.generatedAnswer?.collapse();
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
this.generatedAnswer?.expand();
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
setIsAnswerHelpful(isAnswerHelpful) {
|
|
264
|
+
if (this.modalRef) {
|
|
265
|
+
this.modalRef.helpful = isAnswerHelpful;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
openFeedbackModal() {
|
|
269
|
+
if (this.modalRef &&
|
|
270
|
+
!this.generatedAnswerState?.feedbackSubmitted) {
|
|
271
|
+
this.modalRef.isOpen = true;
|
|
272
|
+
}
|
|
238
273
|
}
|
|
239
274
|
get host() { return getElement(this); }
|
|
240
275
|
static get watchers() { return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"atomic-generated-answer.entry.js","mappings":"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","names":[],"sources":["src/components/search/atomic-generated-answer/atomic-generated-answer.pcss?tag=atomic-generated-answer&encapsulation=shadow","src/components/search/atomic-generated-answer/atomic-generated-answer.tsx"],"sourcesContent":["@import '../../common/generated-answer/styles/generated-answer.pcss';\n","import {\n SearchStatus,\n SearchStatusState,\n buildSearchStatus,\n buildGeneratedAnswer,\n GeneratedAnswer,\n GeneratedAnswerState,\n buildInteractiveCitation,\n buildTabManager,\n TabManagerState,\n TabManager,\n} from '@coveo/headless';\nimport {Component, Element, State, Prop, Watch, h} from '@stencil/core';\nimport {debounce} from '../../../utils/debounce-utils';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../utils/initialization-utils';\nimport {ArrayProp} from '../../../utils/props-utils';\nimport {AriaLiveRegion} from '../../../utils/stencil-accessibility-utils';\nimport {shouldDisplayOnCurrentTab} from '../../../utils/tab-utils';\nimport {GeneratedAnswerCommon} from '../../common/generated-answer/generated-answer-common';\nimport {Hidden} from '../../common/stencil-hidden';\nimport {Bindings} from '../atomic-search-interface/atomic-search-interface';\n\n/**\n * The `atomic-generated-answer` component uses Coveo Machine Learning (Coveo ML) models to automatically generate an answer to a query executed by the user.\n * For more information, see [About Relevance Generative Answering (RGA)](https://docs.coveo.com/en/n9de0370/)\n *\n * @slot no-answer-message - Lets you pass a custom sorry message when no answer is generated.\n *\n * @part container - The container displaying the generated answer.\n * @part header-label - The header of the generated answer container.\n * @part feedback-button - The \"like\" and \"dislike\" buttons.\n * @part toggle - The switch to toggle the visibility of the generated answer.\n * @part copy-button - The \"Copy answer\" button.\n * @part retry-container - The container for the \"retry\" section.\n * @part generated-text - The text of the generated answer.\n * @part citations-label - The header of the citations list.\n *\n * @part answer-code-block - The generated answer multi-line code blocks.\n * @part answer-emphasis - The generated answer emphasized text elements.\n * @part answer-inline-code - The generated answer inline code elements.\n * @part answer-heading-1 - The generated answer level 1 heading elements.\n * @part answer-heading-2 - The generated answer level 2 heading elements.\n * @part answer-heading-3 - The generated answer level 3 heading elements.\n * @part answer-heading-4 - The generated answer level 4 heading elements.\n * @part answer-heading-5 - The generated answer level 5 heading elements.\n * @part answer-heading-6 - The generated answer level 6 heading elements.\n * @part answer-list-item - The generated answer list item elements for both ordered and unordered lists.\n * @part answer-ordered-list - The generated answer ordered list elements.\n * @part answer-paragraph - The generated answer paragraph elements.\n * @part answer-quote-block - The generated answer quote block elements.\n * @part answer-unordered-list - The generated answer unordered list elements.\n * @part answer-strong - The generated answer strong text elements.\n * @part answer-table - The generated answer table elements.\n * @part answer-table-container - The generated answer table container elements.\n * @part answer-table-content - The generated answer table content cell elements.\n * @part answer-table-header - The generated answer table header cell elements.\n *\n * @part citation - The link that allows the user to navigate to the item.\n * @part citation-popover - The pop-up that shows an item preview when the user hovers over the citation.\n */\n@Component({\n tag: 'atomic-generated-answer',\n styleUrl: 'atomic-generated-answer.pcss',\n shadow: true,\n})\nexport class AtomicGeneratedAnswer implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n public generatedAnswer!: GeneratedAnswer;\n public searchStatus!: SearchStatus;\n private resizeObserver?: ResizeObserver;\n\n private readonly DEFAULT_COLLAPSED_HEIGHT = 16;\n private readonly MAX_COLLAPSED_HEIGHT = 32;\n private readonly MIN_COLLAPSED_HEIGHT = 9;\n private readonly REQUIRED_FIELDS_TO_INCLUDE_IN_CITATIONS = ['filetype'];\n\n @BindStateToController('generatedAnswer', {\n onUpdateCallbackMethod: 'onGeneratedAnswerStateUpdate',\n })\n @State()\n private generatedAnswerState!: GeneratedAnswerState;\n\n @BindStateToController('searchStatus')\n @State()\n private searchStatusState!: SearchStatusState;\n\n public tabManager!: TabManager;\n\n @BindStateToController('tabManager')\n @State()\n public tabManagerState!: TabManagerState;\n\n @State()\n public error!: Error;\n\n @Element() private host!: HTMLElement;\n\n @State()\n copied = false;\n\n @State()\n copyError = false;\n\n /**\n * Whether to render a toggle button that lets the user hide or show the answer.\n * @default false\n */\n @Prop() withToggle?: boolean;\n\n /**\n * Whether to allow the answer to be collapsed when the text is taller than the specified `--atomic-crga-collapsed-height` value (16rem by default).\n * @default false\n */\n @Prop() collapsible?: boolean;\n\n /**\n * The maximum height (in rem units) of the answer when collapsed.\n *\n */\n @Prop() maxCollapsedHeight = this.DEFAULT_COLLAPSED_HEIGHT;\n\n /**\n * The unique identifier of the answer configuration to use to generate the answer.\n */\n @Prop() answerConfigurationId?: string;\n\n /**\n * A list of fields to include with the citations used to generate the answer.\n */\n @Prop() fieldsToIncludeInCitations?: string;\n\n /**\n * Option to disable citation anchoring.\n * @default false\n */\n @Prop() disableCitationAnchoring?: boolean;\n\n /**\n * The tabs on which the generated answer can be displayed. This property should not be used at the same time as `tabs-excluded`.\n *\n * Set this property as a stringified JSON array, e.g.,\n * ```html\n * <atomic-generated-answer tabs-included='[\"tabIDA\", \"tabIDB\"]'></atomic-generated-answer>\n * ```\n * If you don't set this property, the generated answer can be displayed on any tab. Otherwise, the generated answer can only be displayed on the specified tabs.\n */\n @ArrayProp()\n @Prop({reflect: true, mutable: true})\n public tabsIncluded: string[] | string = '[]';\n\n /**\n * The tabs on which this generated answer must not be displayed. This property should not be used at the same time as `tabs-included`.\n *\n * Set this property as a stringified JSON array, e.g.,\n * ```html\n * <atomic-generated-answer tabs-excluded='[\"tabIDA\", \"tabIDB\"]'></atomic-generated-answer>\n * ```\n * If you don't set this property, the generated answer can be displayed on any tab. Otherwise, the generated answer won't be displayed on any of the specified tabs.\n */\n @ArrayProp()\n @Prop({reflect: true, mutable: true})\n public tabsExcluded: string[] | string = '[]';\n\n @AriaLiveRegion('generated-answer')\n protected ariaMessage!: string;\n\n private generatedAnswerCommon!: GeneratedAnswerCommon;\n private fullAnswerHeight?: number;\n\n public initialize() {\n if (\n [...this.tabsIncluded].length > 0 &&\n [...this.tabsExcluded].length > 0\n ) {\n console.warn(\n 'Values for both \"tabs-included\" and \"tabs-excluded\" have been provided. This could lead to unexpected behaviors.'\n );\n }\n this.generatedAnswerCommon = new GeneratedAnswerCommon({\n host: this.host,\n withToggle: this.withToggle,\n collapsible: this.collapsible,\n disableCitationAnchoring: this.disableCitationAnchoring,\n getGeneratedAnswer: () => this.generatedAnswer,\n getGeneratedAnswerState: () => this.generatedAnswerState,\n getSearchStatusState: () => this.searchStatusState,\n getBindings: () => this.bindings,\n getCopied: () => this.copied,\n setCopied: this.setCopied,\n getCopyError: () => this.copyError,\n setCopyError: this.setCopyError,\n setAriaMessage: this.setAriaMessage,\n buildInteractiveCitation: (props) =>\n buildInteractiveCitation(this.bindings.engine, props),\n });\n this.generatedAnswer = buildGeneratedAnswer(this.bindings.engine, {\n initialState: {\n isVisible: this.generatedAnswerCommon.data.isVisible,\n responseFormat: {\n contentFormat: ['text/markdown', 'text/plain'],\n },\n },\n ...(this.answerConfigurationId && {\n answerConfigurationId: this.answerConfigurationId,\n }),\n fieldsToIncludeInCitations: this.getCitationFields(),\n });\n this.searchStatus = buildSearchStatus(this.bindings.engine);\n this.generatedAnswerCommon.insertFeedbackModal();\n\n if (window.ResizeObserver && this.collapsible) {\n const debouncedAdaptAnswerHeight = debounce(\n () => this.adaptAnswerHeight(),\n 100\n );\n this.resizeObserver = new ResizeObserver(debouncedAdaptAnswerHeight);\n this.resizeObserver.observe(this.host);\n }\n this.tabManager = buildTabManager(this.bindings.engine);\n }\n\n @Watch('generatedAnswerState')\n public updateAnswerCollapsed(\n newState: GeneratedAnswerState,\n oldState: GeneratedAnswerState\n ) {\n const newExpanded = newState.expanded;\n const oldExpanded = oldState ? oldState.expanded : undefined;\n\n if (newExpanded !== oldExpanded) {\n const container = this.getAnswerContainer();\n\n if (!container) {\n return;\n }\n\n this.toggleClass(container, 'answer-collapsed', !newExpanded);\n }\n }\n\n public disconnectedCallback() {\n this.resizeObserver?.disconnect();\n }\n\n // @ts-expect-error: This function is used by BindStateToController.\n private onGeneratedAnswerStateUpdate = () => {\n if (\n this.generatedAnswerState.isVisible !==\n this.generatedAnswerCommon?.data?.isVisible\n ) {\n this.generatedAnswerCommon.data = {\n ...this.generatedAnswerCommon.data,\n isVisible: this.generatedAnswerState.isVisible,\n };\n this.generatedAnswerCommon.writeStoredData(\n this.generatedAnswerCommon.data\n );\n }\n\n this.setAriaMessage(this.generatedAnswerCommon.getGeneratedAnswerStatus());\n };\n\n private setCopied = (isCopied: boolean) => {\n this.copied = isCopied;\n };\n\n private setCopyError = (copyError: boolean) => {\n this.copyError = copyError;\n };\n\n private setAriaMessage = (message: string) => {\n this.ariaMessage = message;\n };\n\n private toggleClass(element: Element, className: string, condition: boolean) {\n element.classList.toggle(className, condition);\n }\n\n private adaptAnswerHeight() {\n const answerHeight = this.host?.shadowRoot\n ?.querySelector('[part=\"generated-text\"]')\n ?.getBoundingClientRect().height;\n\n if (answerHeight) {\n const rootFontSize = parseFloat(\n getComputedStyle(document.documentElement).fontSize\n );\n\n this.fullAnswerHeight = answerHeight / rootFontSize;\n\n this.updateAnswerHeight();\n }\n }\n\n private getAnswerContainer() {\n return this.host?.shadowRoot?.querySelector('[part=\"generated-container\"]');\n }\n\n private getAnswerFooter() {\n return this.host?.shadowRoot?.querySelector(\n '[part=\"generated-answer-footer\"]'\n );\n }\n\n private getCitationFields() {\n return (this.fieldsToIncludeInCitations ?? '')\n .split(',')\n .map((field) => field.trim())\n .filter((field) => field.length > 0)\n .concat(this.REQUIRED_FIELDS_TO_INCLUDE_IN_CITATIONS)\n }\n\n private validateMaxCollapsedHeight(): number {\n const isValid =\n this.maxCollapsedHeight >= this.MIN_COLLAPSED_HEIGHT &&\n this.maxCollapsedHeight <= this.MAX_COLLAPSED_HEIGHT;\n\n if (!isValid) {\n console.warn(\n `max-collapsed-height (${this.maxCollapsedHeight}rem) is out of the valid range (${this.MIN_COLLAPSED_HEIGHT}rem - ${this.MAX_COLLAPSED_HEIGHT}rem). Falling back to default value (${this.DEFAULT_COLLAPSED_HEIGHT}rem).`\n );\n }\n\n return isValid ? this.maxCollapsedHeight : this.DEFAULT_COLLAPSED_HEIGHT;\n }\n\n private setCSSVariable(variableName: string, value: string) {\n const container = this.getAnswerContainer();\n if (container) {\n (container as HTMLElement).style.setProperty(variableName, value);\n }\n }\n\n private updateAnswerHeight() {\n const container = this.getAnswerContainer() as HTMLElement;\n const footer = this.getAnswerFooter();\n const maxHeight = this.validateMaxCollapsedHeight();\n\n if (!container || !footer) {\n return;\n }\n\n if (this.fullAnswerHeight! > maxHeight) {\n this.setCSSVariable('--atomic-crga-collapsed-height', `${maxHeight}rem`);\n this.toggleClass(\n container,\n 'answer-collapsed',\n !this.generatedAnswerState.expanded\n );\n this.toggleClass(footer, 'is-collapsible', true);\n this.toggleClass(\n footer,\n 'generating-label-visible',\n this.generatedAnswerState.isStreaming\n );\n } else {\n this.toggleClass(container, 'answer-collapsed', false);\n this.toggleClass(footer, 'is-collapsible', false);\n this.toggleClass(footer, 'generating-label-visible', false);\n }\n }\n\n @Watch('tabManagerState')\n watchTabManagerState(\n newValue: {activeTab: string},\n oldValue: {activeTab: string}\n ) {\n if (newValue?.activeTab !== oldValue?.activeTab) {\n if (\n !shouldDisplayOnCurrentTab(\n [...this.tabsIncluded],\n [...this.tabsExcluded],\n this.tabManagerState?.activeTab\n )\n ) {\n this.generatedAnswer.disable();\n } else {\n this.generatedAnswer.enable();\n }\n }\n }\n\n public render() {\n if (\n !shouldDisplayOnCurrentTab(\n [...this.tabsIncluded],\n [...this.tabsExcluded],\n this.tabManagerState?.activeTab\n )\n ) {\n return <Hidden />;\n }\n return this.generatedAnswerCommon.render();\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"atomic-generated-answer.entry.js","mappings":"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","names":[],"sources":["src/components/search/atomic-generated-answer/atomic-generated-answer.pcss?tag=atomic-generated-answer&encapsulation=shadow","src/components/search/atomic-generated-answer/atomic-generated-answer.tsx"],"sourcesContent":["@import '../../common/generated-answer/styles/generated-answer.pcss';\n","import {\n SearchStatus,\n SearchStatusState,\n buildSearchStatus,\n buildGeneratedAnswer,\n GeneratedAnswer,\n GeneratedAnswerState,\n GeneratedAnswerCitation,\n buildInteractiveCitation,\n buildTabManager,\n TabManagerState,\n TabManager,\n} from '@coveo/headless';\nimport { Component, Element, State, Prop, Watch, h } from '@stencil/core';\nimport { debounce } from '../../../utils/debounce-utils';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../utils/initialization-utils';\nimport { ArrayProp } from '../../../utils/props-utils';\nimport { AriaLiveRegion } from '../../../utils/stencil-accessibility-utils';\nimport { shouldDisplayOnCurrentTab } from '../../../utils/tab-utils';\nimport { getNamedSlotFromHost } from '../../../utils/slot-utils';\nimport {\n readGeneratedAnswerStoredData,\n writeGeneratedAnswerStoredData,\n insertGeneratedAnswerFeedbackModal,\n getGeneratedAnswerStatus,\n copyToClipboard,\n GeneratedAnswerWrapper,\n GeneratedAnswerNoAnswerMessage,\n GeneratedAnswerCommon,\n} from '../../common/generated-answer/generated-answer-common';\nimport { Hidden } from '../../common/stencil-hidden';\nimport { Bindings } from '../atomic-search-interface/atomic-search-interface';\n\n/**\n * The `atomic-generated-answer` component uses Coveo Machine Learning (Coveo ML) models to automatically generate an answer to a query executed by the user.\n * For more information, see [About Relevance Generative Answering (RGA)](https://docs.coveo.com/en/n9de0370/)\n *\n * @slot no-answer-message - Lets you pass a custom sorry message when no answer is generated.\n *\n * @part container - The container displaying the generated answer.\n * @part header-label - The header of the generated answer container.\n * @part feedback-button - The \"like\" and \"dislike\" buttons.\n * @part toggle - The switch to toggle the visibility of the generated answer.\n * @part copy-button - The \"Copy answer\" button.\n * @part retry-container - The container for the \"retry\" section.\n * @part generated-text - The text of the generated answer.\n * @part citations-label - The header of the citations list.\n *\n * @part answer-code-block - The generated answer multi-line code blocks.\n * @part answer-emphasis - The generated answer emphasized text elements.\n * @part answer-inline-code - The generated answer inline code elements.\n * @part answer-heading-1 - The generated answer level 1 heading elements.\n * @part answer-heading-2 - The generated answer level 2 heading elements.\n * @part answer-heading-3 - The generated answer level 3 heading elements.\n * @part answer-heading-4 - The generated answer level 4 heading elements.\n * @part answer-heading-5 - The generated answer level 5 heading elements.\n * @part answer-heading-6 - The generated answer level 6 heading elements.\n * @part answer-list-item - The generated answer list item elements for both ordered and unordered lists.\n * @part answer-ordered-list - The generated answer ordered list elements.\n * @part answer-paragraph - The generated answer paragraph elements.\n * @part answer-quote-block - The generated answer quote block elements.\n * @part answer-unordered-list - The generated answer unordered list elements.\n * @part answer-strong - The generated answer strong text elements.\n * @part answer-table - The generated answer table elements.\n * @part answer-table-container - The generated answer table container elements.\n * @part answer-table-content - The generated answer table content cell elements.\n * @part answer-table-header - The generated answer table header cell elements.\n *\n * @part citation - The link that allows the user to navigate to the item.\n * @part citation-popover - The pop-up that shows an item preview when the user hovers over the citation.\n */\n@Component({\n tag: 'atomic-generated-answer',\n styleUrl: 'atomic-generated-answer.pcss',\n shadow: true,\n})\nexport class AtomicGeneratedAnswer implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n public generatedAnswer!: GeneratedAnswer;\n public searchStatus!: SearchStatus;\n private resizeObserver?: ResizeObserver;\n\n private readonly DEFAULT_COLLAPSED_HEIGHT = 16;\n private readonly MAX_COLLAPSED_HEIGHT = 32;\n private readonly MIN_COLLAPSED_HEIGHT = 9;\n private readonly REQUIRED_FIELDS_TO_INCLUDE_IN_CITATIONS = ['filetype'];\n\n @BindStateToController('generatedAnswer', {\n onUpdateCallbackMethod: 'onGeneratedAnswerStateUpdate',\n })\n @State()\n private generatedAnswerState!: GeneratedAnswerState;\n\n @BindStateToController('searchStatus')\n @State()\n private searchStatusState!: SearchStatusState;\n\n public tabManager!: TabManager;\n\n @BindStateToController('tabManager')\n @State()\n public tabManagerState!: TabManagerState;\n\n @State()\n public error!: Error;\n\n @Element() private host!: HTMLElement;\n\n @State()\n copied = false;\n\n @State()\n copyError = false;\n\n /**\n * Whether to render a toggle button that lets the user hide or show the answer.\n * @default false\n */\n @Prop() withToggle?: boolean;\n\n /**\n * Whether to allow the answer to be collapsed when the text is taller than the specified `--atomic-crga-collapsed-height` value (16rem by default).\n * @default false\n */\n @Prop() collapsible?: boolean;\n\n /**\n * The maximum height (in rem units) of the answer when collapsed.\n *\n */\n @Prop() maxCollapsedHeight = this.DEFAULT_COLLAPSED_HEIGHT;\n\n /**\n * The unique identifier of the answer configuration to use to generate the answer.\n */\n @Prop() answerConfigurationId?: string;\n\n /**\n * A list of fields to include with the citations used to generate the answer.\n */\n @Prop() fieldsToIncludeInCitations?: string;\n\n /**\n * Option to disable citation anchoring.\n * @default false\n */\n @Prop() disableCitationAnchoring?: boolean;\n\n /**\n * The tabs on which the generated answer can be displayed. This property should not be used at the same time as `tabs-excluded`.\n *\n * Set this property as a stringified JSON array, e.g.,\n * ```html\n * <atomic-generated-answer tabs-included='[\"tabIDA\", \"tabIDB\"]'></atomic-generated-answer>\n * ```\n * If you don't set this property, the generated answer can be displayed on any tab. Otherwise, the generated answer can only be displayed on the specified tabs.\n */\n @ArrayProp()\n @Prop({ reflect: true, mutable: true })\n public tabsIncluded: string[] | string = '[]';\n\n /**\n * The tabs on which this generated answer must not be displayed. This property should not be used at the same time as `tabs-included`.\n *\n * Set this property as a stringified JSON array, e.g.,\n * ```html\n * <atomic-generated-answer tabs-excluded='[\"tabIDA\", \"tabIDB\"]'></atomic-generated-answer>\n * ```\n * If you don't set this property, the generated answer can be displayed on any tab. Otherwise, the generated answer won't be displayed on any of the specified tabs.\n */\n @ArrayProp()\n @Prop({ reflect: true, mutable: true })\n public tabsExcluded: string[] | string = '[]';\n\n @AriaLiveRegion('generated-answer')\n protected ariaMessage!: string;\n\n private modalRef?: HTMLAtomicGeneratedAnswerFeedbackModalElement;\n private fullAnswerHeight?: number;\n private _data = readGeneratedAnswerStoredData(this.withToggle);\n\n public initialize() {\n if (\n [...this.tabsIncluded].length > 0 &&\n [...this.tabsExcluded].length > 0\n ) {\n console.warn(\n 'Values for both \"tabs-included\" and \"tabs-excluded\" have been provided. This could lead to unexpected behaviors.'\n );\n }\n this.generatedAnswer = buildGeneratedAnswer(this.bindings.engine, {\n initialState: {\n isVisible: this._data.isVisible,\n responseFormat: {\n contentFormat: ['text/markdown', 'text/plain'],\n },\n },\n ...(this.answerConfigurationId && {\n answerConfigurationId: this.answerConfigurationId,\n }),\n fieldsToIncludeInCitations: this.getCitationFields(),\n });\n this.searchStatus = buildSearchStatus(this.bindings.engine);\n this.insertFeedbackModal();\n\n if (window.ResizeObserver && this.collapsible) {\n const debouncedAdaptAnswerHeight = debounce(\n () => this.adaptAnswerHeight(),\n 100\n );\n this.resizeObserver = new ResizeObserver(debouncedAdaptAnswerHeight);\n this.resizeObserver.observe(this.host);\n }\n this.tabManager = buildTabManager(this.bindings.engine);\n }\n\n private insertFeedbackModal() {\n this.modalRef = insertGeneratedAnswerFeedbackModal(\n this.host,\n () => this.generatedAnswer\n ) as HTMLAtomicGeneratedAnswerFeedbackModalElement;\n }\n\n @Watch('generatedAnswerState')\n public updateAnswerCollapsed(\n newState: GeneratedAnswerState,\n oldState: GeneratedAnswerState\n ) {\n const newExpanded = newState.expanded;\n const oldExpanded = oldState ? oldState.expanded : undefined;\n\n if (newExpanded !== oldExpanded) {\n const container = this.getAnswerContainer();\n\n if (!container) {\n return;\n }\n\n this.toggleClass(container, 'answer-collapsed', !newExpanded);\n }\n }\n\n public disconnectedCallback() {\n this.resizeObserver?.disconnect();\n }\n\n // @ts-expect-error: This function is used by BindStateToController.\n private onGeneratedAnswerStateUpdate = () => {\n if (\n this.generatedAnswerState.isVisible !== this._data?.isVisible\n ) {\n this._data = {\n ...this._data,\n isVisible: this.generatedAnswerState.isVisible,\n };\n writeGeneratedAnswerStoredData(this._data);\n }\n\n this.setAriaMessage(\n getGeneratedAnswerStatus(this.generatedAnswerState, this.bindings.i18n)\n );\n };\n\n private setCopied = (isCopied: boolean) => {\n this.copied = isCopied;\n };\n\n private setCopyError = (copyError: boolean) => {\n this.copyError = copyError;\n };\n\n private setAriaMessage = (message: string) => {\n this.ariaMessage = message;\n };\n\n private toggleClass(element: Element, className: string, condition: boolean) {\n element.classList.toggle(className, condition);\n }\n\n private adaptAnswerHeight() {\n const answerHeight = this.host?.shadowRoot\n ?.querySelector('[part=\"generated-text\"]')\n ?.getBoundingClientRect().height;\n\n if (answerHeight) {\n const rootFontSize = parseFloat(\n getComputedStyle(document.documentElement).fontSize\n );\n\n this.fullAnswerHeight = answerHeight / rootFontSize;\n\n this.updateAnswerHeight();\n }\n }\n\n private getAnswerContainer() {\n return this.host?.shadowRoot?.querySelector('[part=\"generated-container\"]');\n }\n\n private getAnswerFooter() {\n return this.host?.shadowRoot?.querySelector(\n '[part=\"generated-answer-footer\"]'\n );\n }\n\n private getCitationFields() {\n return (this.fieldsToIncludeInCitations ?? '')\n .split(',')\n .map((field) => field.trim())\n .filter((field) => field.length > 0)\n .concat(this.REQUIRED_FIELDS_TO_INCLUDE_IN_CITATIONS)\n }\n\n private validateMaxCollapsedHeight(): number {\n const isValid =\n this.maxCollapsedHeight >= this.MIN_COLLAPSED_HEIGHT &&\n this.maxCollapsedHeight <= this.MAX_COLLAPSED_HEIGHT;\n\n if (!isValid) {\n console.warn(\n `max-collapsed-height (${this.maxCollapsedHeight}rem) is out of the valid range (${this.MIN_COLLAPSED_HEIGHT}rem - ${this.MAX_COLLAPSED_HEIGHT}rem). Falling back to default value (${this.DEFAULT_COLLAPSED_HEIGHT}rem).`\n );\n }\n\n return isValid ? this.maxCollapsedHeight : this.DEFAULT_COLLAPSED_HEIGHT;\n }\n\n private setCSSVariable(variableName: string, value: string) {\n const container = this.getAnswerContainer();\n if (container) {\n (container as HTMLElement).style.setProperty(variableName, value);\n }\n }\n\n private updateAnswerHeight() {\n const container = this.getAnswerContainer() as HTMLElement;\n const footer = this.getAnswerFooter();\n const maxHeight = this.validateMaxCollapsedHeight();\n\n if (!container || !footer) {\n return;\n }\n\n if (this.fullAnswerHeight! > maxHeight) {\n this.setCSSVariable('--atomic-crga-collapsed-height', `${maxHeight}rem`);\n this.toggleClass(\n container,\n 'answer-collapsed',\n !this.generatedAnswerState.expanded\n );\n this.toggleClass(footer, 'is-collapsible', true);\n this.toggleClass(\n footer,\n 'generating-label-visible',\n this.generatedAnswerState.isStreaming\n );\n } else {\n this.toggleClass(container, 'answer-collapsed', false);\n this.toggleClass(footer, 'is-collapsible', false);\n this.toggleClass(footer, 'generating-label-visible', false);\n }\n }\n\n @Watch('tabManagerState')\n watchTabManagerState(\n newValue: { activeTab: string },\n oldValue: { activeTab: string }\n ) {\n if (newValue?.activeTab !== oldValue?.activeTab) {\n if (\n !shouldDisplayOnCurrentTab(\n [...this.tabsIncluded],\n [...this.tabsExcluded],\n this.tabManagerState?.activeTab\n )\n ) {\n this.generatedAnswer.disable();\n } else {\n this.generatedAnswer.enable();\n }\n }\n }\n\n public render() {\n if (\n !shouldDisplayOnCurrentTab(\n [...this.tabsIncluded],\n [...this.tabsExcluded],\n this.tabManagerState?.activeTab\n )\n ) {\n return <Hidden />;\n }\n\n const hasRetryableError = Boolean(\n !this.searchStatusState?.hasError &&\n this.generatedAnswerState?.error?.isRetryable\n );\n\n const hasNoAnswerGenerated =\n this.generatedAnswerState?.answer === undefined &&\n !this.generatedAnswerState?.citations?.length &&\n !hasRetryableError;\n\n const isAnswerVisible = this.generatedAnswerState?.isVisible;\n const hasCustomNoAnswerMessage = !!getNamedSlotFromHost(this.host, 'no-answer-message');\n const hasClipboard = !!navigator?.clipboard?.writeText;\n\n if (hasNoAnswerGenerated) {\n return this.generatedAnswerState?.cannotAnswer && hasCustomNoAnswerMessage ? (\n <GeneratedAnswerWrapper>\n <GeneratedAnswerNoAnswerMessage i18n={this.bindings.i18n}>\n <slot name=\"no-answer-message\"></slot>\n </GeneratedAnswerNoAnswerMessage>\n </GeneratedAnswerWrapper>\n ) : null;\n }\n\n const buildInteractiveCitationForCitation = (citation: GeneratedAnswerCitation) =>\n buildInteractiveCitation(this.bindings.engine, {\n options: { citation },\n });\n\n return <GeneratedAnswerCommon\n collapsible={this.collapsible}\n onShowButtonClick={this.clickOnShowButton.bind(this)}\n onClickDislike={this.clickDislike.bind(this)}\n onClickLike={this.clickLike.bind(this)}\n onCopyToClipboard={this.copyToClipboard.bind(this)}\n disableCitationAnchoring={this.disableCitationAnchoring}\n copied={this.copied}\n i18n={this.bindings.i18n}\n copyError={this.copyError}\n generatedAnswer={this.generatedAnswer}\n generatedAnswerState={this.generatedAnswerState}\n withToggle={this.withToggle}\n isAnswerVisible={isAnswerVisible}\n hasRetryableError={hasRetryableError}\n hasClipboard={hasClipboard}\n buildInteractiveCitationForCitation={buildInteractiveCitationForCitation}\n />;\n\n }\n\n private clickDislike() {\n this.setIsAnswerHelpful(false);\n this.generatedAnswer?.dislike();\n this.openFeedbackModal();\n }\n\n private clickLike() {\n this.setIsAnswerHelpful(true);\n this.generatedAnswer?.like();\n this.openFeedbackModal();\n }\n\n private async copyToClipboard() {\n if (this.generatedAnswerState?.answer) {\n await copyToClipboard(\n this.generatedAnswerState.answer,\n this.setCopied,\n this.setCopyError,\n () => this.generatedAnswer?.logCopyToClipboard(),\n this.bindings.engine.logger\n );\n }\n }\n\n private clickOnShowButton() {\n if (this.generatedAnswerState?.expanded) {\n this.generatedAnswer?.collapse();\n } else {\n this.generatedAnswer?.expand();\n }\n }\n\n private setIsAnswerHelpful(isAnswerHelpful: boolean) {\n if (this.modalRef) {\n this.modalRef.helpful = isAnswerHelpful;\n }\n }\n\n private openFeedbackModal() {\n if (\n this.modalRef &&\n !this.generatedAnswerState?.feedbackSubmitted\n ) {\n this.modalRef.isOpen = true;\n }\n }\n}\n"],"version":3}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { r as registerInstance, g as getElement } from './index-3f35faca.js';
|
|
2
|
-
import {
|
|
1
|
+
import { r as registerInstance, h, g as getElement } from './index-3f35faca.js';
|
|
2
|
+
import { buildGeneratedAnswer, buildSearchStatus, buildInteractiveCitation } from '@coveo/headless/insight';
|
|
3
3
|
import { d as debounce } from './debounce-utils-8619dece.js';
|
|
4
4
|
import { I as InitializeBindings, B as BindStateToController } from './initialization-utils-271aa8c0.js';
|
|
5
5
|
import { A as AriaLiveRegion } from './stencil-accessibility-utils-2d41d4cd.js';
|
|
6
|
-
import { G as GeneratedAnswerCommon } from './generated-answer-common-
|
|
6
|
+
import { w as writeGeneratedAnswerStoredData, g as getGeneratedAnswerStatus, r as readGeneratedAnswerStoredData, i as insertGeneratedAnswerFeedbackModal, G as GeneratedAnswerNoAnswerMessage, a as GeneratedAnswerWrapper, b as GeneratedAnswerCommon, c as copyToClipboard } from './generated-answer-common-184a3c08.js';
|
|
7
|
+
import { g as getNamedSlotFromHost } from './slot-utils-dcf4fc27.js';
|
|
7
8
|
import './dom-utils-f6086cd3.js';
|
|
8
9
|
import './event-utils-8de63ec3.js';
|
|
9
10
|
import './init-queue-fbe942c3.js';
|
|
@@ -11,8 +12,7 @@ import './initialization-lit-stencil-common-utils-804fe146.js';
|
|
|
11
12
|
import './utils-7ac76ba7.js';
|
|
12
13
|
import './purify-c7ebd240.js';
|
|
13
14
|
import './_commonjsHelpers-1789f0cf.js';
|
|
14
|
-
import './local-storage-utils-
|
|
15
|
-
import './slot-utils-dcf4fc27.js';
|
|
15
|
+
import './local-storage-utils-a4bf8fba.js';
|
|
16
16
|
import './stencil-heading-2b28a9b9.js';
|
|
17
17
|
import './stencil-button-75e8b31b.js';
|
|
18
18
|
import './stencil-button-style-0bc80040.js';
|
|
@@ -46,23 +46,24 @@ const AtomicInsightGeneratedAnswer = class {
|
|
|
46
46
|
*
|
|
47
47
|
*/
|
|
48
48
|
this.maxCollapsedHeight = this.DEFAULT_COLLAPSED_HEIGHT;
|
|
49
|
+
this.setCopied = debounce(() => {
|
|
50
|
+
this.copied = false;
|
|
51
|
+
}, 3000);
|
|
52
|
+
this.setCopyError = debounce(() => {
|
|
53
|
+
this.copyError = false;
|
|
54
|
+
}, 1000);
|
|
55
|
+
this._data = null;
|
|
49
56
|
// @ts-expect-error: This function is used by BindStateToController.
|
|
50
57
|
this.onGeneratedAnswerStateUpdate = () => {
|
|
51
58
|
if (this.generatedAnswerState.isVisible !==
|
|
52
|
-
this.
|
|
53
|
-
this.
|
|
54
|
-
...this.
|
|
59
|
+
this._data?.isVisible) {
|
|
60
|
+
this._data = {
|
|
61
|
+
...this._data,
|
|
55
62
|
isVisible: this.generatedAnswerState.isVisible,
|
|
56
63
|
};
|
|
57
|
-
|
|
64
|
+
writeGeneratedAnswerStoredData(this._data);
|
|
58
65
|
}
|
|
59
|
-
this.setAriaMessage(this.
|
|
60
|
-
};
|
|
61
|
-
this.setCopied = (isCopied) => {
|
|
62
|
-
this.copied = isCopied;
|
|
63
|
-
};
|
|
64
|
-
this.setCopyError = (copyError) => {
|
|
65
|
-
this.copyError = copyError;
|
|
66
|
+
this.setAriaMessage(getGeneratedAnswerStatus(this.generatedAnswerState, this.bindings.i18n));
|
|
66
67
|
};
|
|
67
68
|
this.setAriaMessage = (message) => {
|
|
68
69
|
this.ariaMessage = message;
|
|
@@ -80,25 +81,10 @@ const AtomicInsightGeneratedAnswer = class {
|
|
|
80
81
|
this.disableCitationAnchoring = undefined;
|
|
81
82
|
}
|
|
82
83
|
initialize() {
|
|
83
|
-
this.
|
|
84
|
-
host: this.host,
|
|
85
|
-
withToggle: this.withToggle,
|
|
86
|
-
collapsible: this.collapsible,
|
|
87
|
-
disableCitationAnchoring: this.disableCitationAnchoring,
|
|
88
|
-
getGeneratedAnswer: () => this.generatedAnswer,
|
|
89
|
-
getGeneratedAnswerState: () => this.generatedAnswerState,
|
|
90
|
-
getSearchStatusState: () => this.searchStatusState,
|
|
91
|
-
getBindings: () => this.bindings,
|
|
92
|
-
getCopied: () => this.copied,
|
|
93
|
-
setCopied: this.setCopied,
|
|
94
|
-
getCopyError: () => this.copyError,
|
|
95
|
-
setCopyError: this.setCopyError,
|
|
96
|
-
setAriaMessage: this.setAriaMessage,
|
|
97
|
-
buildInteractiveCitation: (props) => buildInteractiveCitation(this.bindings.engine, props),
|
|
98
|
-
});
|
|
84
|
+
this._data = readGeneratedAnswerStoredData(this.withToggle);
|
|
99
85
|
this.generatedAnswer = buildGeneratedAnswer(this.bindings.engine, {
|
|
100
86
|
initialState: {
|
|
101
|
-
isVisible: this.
|
|
87
|
+
isVisible: this._data?.isVisible || false,
|
|
102
88
|
responseFormat: {
|
|
103
89
|
contentFormat: ['text/markdown', 'text/plain'],
|
|
104
90
|
},
|
|
@@ -109,13 +95,15 @@ const AtomicInsightGeneratedAnswer = class {
|
|
|
109
95
|
fieldsToIncludeInCitations: this.getCitationFields(),
|
|
110
96
|
});
|
|
111
97
|
this.searchStatus = buildSearchStatus(this.bindings.engine);
|
|
112
|
-
this.generatedAnswerCommon.insertFeedbackModal();
|
|
113
98
|
if (window.ResizeObserver && this.collapsible) {
|
|
114
99
|
const debouncedAdaptAnswerHeight = debounce(() => this.adaptAnswerHeight(), 100);
|
|
115
100
|
this.resizeObserver = new ResizeObserver(debouncedAdaptAnswerHeight);
|
|
116
101
|
this.resizeObserver.observe(this.host);
|
|
117
102
|
}
|
|
118
103
|
}
|
|
104
|
+
componentDidLoad() {
|
|
105
|
+
this.modalRef = insertGeneratedAnswerFeedbackModal(this.host, () => this.generatedAnswer);
|
|
106
|
+
}
|
|
119
107
|
updateAnswerCollapsed(newState, oldState) {
|
|
120
108
|
const newExpanded = newState.expanded;
|
|
121
109
|
const oldExpanded = oldState ? oldState.expanded : undefined;
|
|
@@ -190,7 +178,55 @@ const AtomicInsightGeneratedAnswer = class {
|
|
|
190
178
|
}
|
|
191
179
|
}
|
|
192
180
|
render() {
|
|
193
|
-
|
|
181
|
+
const hasRetryableError = Boolean(!this.searchStatusState?.hasError &&
|
|
182
|
+
this.generatedAnswerState?.error?.isRetryable);
|
|
183
|
+
const hasNoAnswerGenerated = this.generatedAnswerState?.answer === undefined &&
|
|
184
|
+
!this.generatedAnswerState?.citations?.length &&
|
|
185
|
+
!hasRetryableError;
|
|
186
|
+
const isAnswerVisible = this.generatedAnswerState?.isVisible;
|
|
187
|
+
const hasCustomNoAnswerMessage = !!getNamedSlotFromHost(this.host, 'no-answer-message');
|
|
188
|
+
const hasClipboard = !!navigator?.clipboard?.writeText;
|
|
189
|
+
if (hasNoAnswerGenerated) {
|
|
190
|
+
return this.generatedAnswerState?.cannotAnswer && hasCustomNoAnswerMessage ? (h(GeneratedAnswerWrapper, null, h(GeneratedAnswerNoAnswerMessage, { i18n: this.bindings.i18n }, h("slot", { name: "no-answer-message" })))) : null;
|
|
191
|
+
}
|
|
192
|
+
const buildInteractiveCitationForCitation = (citation) => buildInteractiveCitation(this.bindings.engine, {
|
|
193
|
+
options: { citation },
|
|
194
|
+
});
|
|
195
|
+
return h(GeneratedAnswerCommon, { collapsible: this.collapsible, onShowButtonClick: this.clickOnShowButton.bind(this), onClickDislike: this.clickDislike.bind(this), onClickLike: this.clickLike.bind(this), onCopyToClipboard: this.copyToClipboard.bind(this), disableCitationAnchoring: this.disableCitationAnchoring, copied: this.copied, i18n: this.bindings.i18n, copyError: this.copyError, generatedAnswer: this.generatedAnswer, generatedAnswerState: this.generatedAnswerState, withToggle: this.withToggle, isAnswerVisible: isAnswerVisible, hasRetryableError: hasRetryableError, hasClipboard: hasClipboard, buildInteractiveCitationForCitation: buildInteractiveCitationForCitation });
|
|
196
|
+
}
|
|
197
|
+
clickDislike() {
|
|
198
|
+
this.setIsAnswerHelpful(false);
|
|
199
|
+
this.generatedAnswer?.dislike();
|
|
200
|
+
this.openFeedbackModal();
|
|
201
|
+
}
|
|
202
|
+
clickLike() {
|
|
203
|
+
this.setIsAnswerHelpful(true);
|
|
204
|
+
this.generatedAnswer?.like();
|
|
205
|
+
this.openFeedbackModal();
|
|
206
|
+
}
|
|
207
|
+
async copyToClipboard() {
|
|
208
|
+
if (this.generatedAnswerState?.answer) {
|
|
209
|
+
await copyToClipboard(this.generatedAnswerState.answer, this.setCopied, this.setCopyError, () => this.generatedAnswer?.logCopyToClipboard(), this.bindings.engine.logger);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
clickOnShowButton() {
|
|
213
|
+
if (this.generatedAnswerState?.expanded) {
|
|
214
|
+
this.generatedAnswer?.collapse();
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
this.generatedAnswer?.expand();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
setIsAnswerHelpful(isAnswerHelpful) {
|
|
221
|
+
if (this.modalRef) {
|
|
222
|
+
this.modalRef.helpful = isAnswerHelpful;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
openFeedbackModal() {
|
|
226
|
+
if (this.modalRef &&
|
|
227
|
+
!this.generatedAnswerState?.feedbackSubmitted) {
|
|
228
|
+
this.modalRef.isOpen = true;
|
|
229
|
+
}
|
|
194
230
|
}
|
|
195
231
|
get host() { return getElement(this); }
|
|
196
232
|
static get watchers() { return {
|