UNPKG

instantsearch-ui-components

Version:

Common UI components for InstantSearch.

83 lines (81 loc) 4.47 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "createChatMessageErrorComponent", { enumerable: true, get: function() { return createChatMessageErrorComponent; } }); var _object_spread = require("@swc/helpers/_/_object_spread"); var _object_without_properties = require("@swc/helpers/_/_object_without_properties"); var _Button = require("../Button"); var _icons = require("./icons"); function createChatMessageErrorComponent(param) { var createElement = param.createElement; var Button = (0, _Button.createButtonComponent)({ createElement: createElement }); return function ChatMessageError(userProps) { var _ref, _ref1; var errorMessage = userProps.errorMessage, onReload = userProps.onReload, onNewConversation = userProps.onNewConversation, actions = userProps.actions, userTranslations = userProps.translations, props = _object_without_properties._(userProps, [ "errorMessage", "onReload", "onNewConversation", "actions", "translations" ]); var defaultErrorMessage = 'Sorry, we are not able to generate a response at the moment. Please contact support.'; var defaultNewConversationText = 'Start a new conversation'; var defaultRetryText = 'Retry'; var errorMessageTranslation = userTranslations === null || userTranslations === void 0 ? void 0 : userTranslations.errorMessage; var resolvedErrorMessage = typeof errorMessageTranslation === 'function' ? errorMessageTranslation({ errorMessage: errorMessage }) : errorMessageTranslation !== null && errorMessageTranslation !== void 0 ? errorMessageTranslation : defaultErrorMessage; var newConversationText = (_ref = userTranslations === null || userTranslations === void 0 ? void 0 : userTranslations.newConversationText) !== null && _ref !== void 0 ? _ref : defaultNewConversationText; var retryText = (_ref1 = userTranslations === null || userTranslations === void 0 ? void 0 : userTranslations.retryText) !== null && _ref1 !== void 0 ? _ref1 : defaultRetryText; // Action precedence: // 1. `actions` (full custom) // 2. `onNewConversation` (recommended for permanent / guardrail errors) // 3. `onReload` (legacy retry, suitable for transient failures) // 4. nothing var hasCustomActions = Boolean(actions); var showNewConversation = !hasCustomActions && Boolean(onNewConversation); var showRetry = !hasCustomActions && !showNewConversation && Boolean(onReload); var hasActions = hasCustomActions || showNewConversation || showRetry; return /*#__PURE__*/ createElement("article", _object_spread._({ className: "ais-ChatMessageError ais-ChatMessage ais-ChatMessage--left ais-ChatMessage--subtle" }, props), /*#__PURE__*/ createElement("div", { className: "ais-ChatMessage-container" }, /*#__PURE__*/ createElement("div", { className: "ais-ChatMessage-content" }, /*#__PURE__*/ createElement("div", { className: "ais-ChatMessage-message" }, resolvedErrorMessage), hasActions && /*#__PURE__*/ createElement("div", { className: "ais-ChatMessage-actions" }, hasCustomActions ? actions.map(function(action, index) { return /*#__PURE__*/ createElement(Button, _object_spread._({ key: index, variant: "ghost", className: "ais-ChatMessage-action" }, action), action.children); }) : showNewConversation ? /*#__PURE__*/ createElement(Button, { variant: "primary", size: "md", className: "ais-ChatMessage-errorAction", onClick: function onClick() { return onNewConversation === null || onNewConversation === void 0 ? void 0 : onNewConversation(); } }, newConversationText) : /*#__PURE__*/ createElement(Button, { variant: "primary", size: "md", className: "ais-ChatMessage-errorAction", onClick: function onClick() { return onReload === null || onReload === void 0 ? void 0 : onReload(); } }, /*#__PURE__*/ createElement(_icons.ReloadIcon, { createElement: createElement }), retryText))))); }; }