instantsearch-ui-components
Version:
Common UI components for InstantSearch.
58 lines (55 loc) • 3.21 kB
JavaScript
import { _ as _$2 } from '@swc/helpers/esm/_object_spread.js';
import { _ as _$1 } from '@swc/helpers/esm/_object_spread_props.js';
import { _ } from '@swc/helpers/esm/_object_without_properties.js';
import { cx } from '../../lib/cx.js';
function createChatSidePanelLayoutComponent(param) {
var createElement = param.createElement;
var originalMargins = new WeakMap();
return function ChatSidePanelLayout(userProps) {
var open = userProps.open, maximized = userProps.maximized, headerComponent = userProps.headerComponent, messagesComponent = userProps.messagesComponent, promptComponent = userProps.promptComponent, _userProps_classNames = userProps.classNames, classNames = _userProps_classNames === void 0 ? {} : _userProps_classNames, className = userProps.className, parentElement = userProps.parentElement; // Chat state props (destructured to avoid spreading on div)
userProps.messages; userProps.status; userProps.isClearing; userProps.clearMessages; userProps.onClearTransitionEnd; userProps.suggestions; userProps.tools; userProps.sendMessage; userProps.regenerate; userProps.stop; userProps.error; var rest = _(userProps, [
"open",
"maximized",
"headerComponent",
"messagesComponent",
"promptComponent",
"classNames",
"className",
"parentElement",
"messages",
"status",
"isClearing",
"clearMessages",
"onClearTransitionEnd",
"suggestions",
"tools",
"sendMessage",
"regenerate",
"stop",
"error"
]);
var element = typeof document !== 'undefined' ? parentElement ? document.querySelector(parentElement) : document.body : null;
if (element) {
if (open && !originalMargins.has(element)) {
originalMargins.set(element, element.style.marginRight);
var chatWidth = getComputedStyle(document.documentElement).getPropertyValue('--ais-chat-width').trim() || '22.5rem';
var original = originalMargins.get(element);
element.style.marginRight = original ? "calc(".concat(original, " + ").concat(chatWidth, ")") : chatWidth;
} else if (!open && originalMargins.has(element)) {
var saved = originalMargins.get(element);
if (saved) {
element.style.marginRight = saved;
} else {
element.style.removeProperty('margin-right');
}
originalMargins.delete(element);
}
}
return /*#__PURE__*/ createElement("div", _$1(_$2({}, rest), {
className: cx('ais-Chat', 'ais-ChatSidePanelLayout', maximized && 'ais-ChatSidePanelLayout--maximized', classNames.root, className)
}), /*#__PURE__*/ createElement("div", {
className: cx('ais-Chat-container', open && 'ais-Chat-container--open', maximized && 'ais-Chat-container--maximized', classNames.container)
}, headerComponent, messagesComponent, promptComponent));
};
}
export { createChatSidePanelLayoutComponent };