UNPKG

@memori.ai/memori-react

Version:

[![npm version](https://img.shields.io/github/package-json/v/memori-ai/memori-react)](https://www.npmjs.com/package/@memori.ai/memori-react) ![Tests](https://github.com/memori-ai/memori-react/workflows/CI/badge.svg?branch=main) ![TypeScript Support](https

61 lines 7.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = require("react"); const classnames_1 = tslib_1.__importDefault(require("classnames")); const Button_1 = tslib_1.__importDefault(require("../ui/Button")); const MapMarker_1 = tslib_1.__importDefault(require("../icons/MapMarker")); const SoundDeactivated_1 = tslib_1.__importDefault(require("../icons/SoundDeactivated")); const Sound_1 = tslib_1.__importDefault(require("../icons/Sound")); const react_i18next_1 = require("react-i18next"); const Setting_1 = tslib_1.__importDefault(require("../icons/Setting")); const ShareButton_1 = tslib_1.__importDefault(require("../ShareButton/ShareButton")); const FullscreenExit_1 = tslib_1.__importDefault(require("../icons/FullscreenExit")); const Fullscreen_1 = tslib_1.__importDefault(require("../icons/Fullscreen")); const Refresh_1 = tslib_1.__importDefault(require("../icons/Refresh")); const Clear_1 = tslib_1.__importDefault(require("../icons/Clear")); const DeepThought_1 = tslib_1.__importDefault(require("../icons/DeepThought")); const Group_1 = tslib_1.__importDefault(require("../icons/Group")); const User_1 = tslib_1.__importDefault(require("../icons/User")); const Message_1 = tslib_1.__importDefault(require("../icons/Message")); const Header = ({ className, memori, tenant, position, setShowPositionDrawer, setShowSettingsDrawer, setShowChatHistoryDrawer, setShowKnownFactsDrawer, setShowExpertsDrawer, enableAudio = true, speakerMuted, setSpeakerMuted, hasUserActivatedSpeak = false, showShare = true, showSettings = true, showSpeaker = true, showReload = false, showClear = false, showLogin = true, setShowLoginDrawer, clearHistory, loginToken, user, sessionID, showChatHistory = true, fullScreenHandler, baseUrl, }) => { const { t } = (0, react_i18next_1.useTranslation)(); const [fullScreenAvailable, setFullScreenAvailable] = (0, react_1.useState)(false); const [fullScreen, setFullScreen] = (0, react_1.useState)(false); (0, react_1.useEffect)(() => { if (document.fullscreenEnabled) { setFullScreenAvailable(true); } }, []); return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)('memori-header', className), children: [memori.needsPosition && position && ((0, jsx_runtime_1.jsxs)("div", { className: "memori-header--position", children: [position.latitude !== 0 && position.longitude !== 0 && ((0, jsx_runtime_1.jsx)("span", { className: "memori-header--position-placeName", children: position.placeName })), (0, jsx_runtime_1.jsx)(Button_1.default, { primary: true, shape: "circle", className: "memori-header--button memori-header--button--position", title: t('widget.position') || 'Position', icon: (0, jsx_runtime_1.jsx)(MapMarker_1.default, {}), onClick: () => setShowPositionDrawer(true) })] })), showReload && ((0, jsx_runtime_1.jsx)(Button_1.default, { primary: true, shape: "circle", className: "memori-header--button memori-header--button--reload", title: t('reload') || 'Reload', icon: (0, jsx_runtime_1.jsx)(Refresh_1.default, {}), onClick: () => { window.location.reload(); } })), showClear && ((0, jsx_runtime_1.jsx)(Button_1.default, { primary: true, shape: "circle", className: "memori-header--button memori-header--button--clear", title: t('clearHistory') || 'Clear chat', icon: (0, jsx_runtime_1.jsx)(Clear_1.default, {}), onClick: clearHistory })), showChatHistory && !!loginToken && ((0, jsx_runtime_1.jsx)(Button_1.default, { primary: true, disabled: !loginToken, shape: "circle", className: "memori-header--button memori-header--button--chat-history", title: t('write_and_speak.chatHistory') || 'Chat history', icon: (0, jsx_runtime_1.jsx)(Message_1.default, {}), onClick: () => setShowChatHistoryDrawer(true) })), fullScreenAvailable && ((0, jsx_runtime_1.jsx)(Button_1.default, { primary: true, shape: "circle", className: "memori-header--button memori-header--button--fullscreen", title: fullScreen ? t('fullscreenExit') || 'Exit fullscreen' : t('fullscreenEnter') || 'Enter fullscreen', icon: fullScreen ? (0, jsx_runtime_1.jsx)(FullscreenExit_1.default, {}) : (0, jsx_runtime_1.jsx)(Fullscreen_1.default, {}), onClick: fullScreenHandler || (() => { if (!document.fullscreenElement) { const memoriWidget = document.querySelector('.memori-widget'); if (memoriWidget) { memoriWidget.style.backgroundColor = '#FFFFFF'; memoriWidget.requestFullscreen().catch(err => { console.warn('Error attempting to enable fullscreen:', err); }); } setFullScreen(true); } else if (document.exitFullscreen) { const memoriWidget = document.querySelector('.memori-widget'); if (memoriWidget) { memoriWidget.style.backgroundColor = ''; } document.exitFullscreen().catch(err => { console.warn('Error attempting to exit fullscreen:', err); }); setFullScreen(false); } }) })), memori.enableDeepThought && !!loginToken && (user === null || user === void 0 ? void 0 : user.pAndCUAccepted) && ((0, jsx_runtime_1.jsx)(Button_1.default, { primary: !!sessionID && !!hasUserActivatedSpeak, shape: "circle", icon: (0, jsx_runtime_1.jsx)(DeepThought_1.default, {}), className: "memori-header--button memori-header--button--knownfacts", disabled: !hasUserActivatedSpeak || !sessionID, onClick: () => setShowKnownFactsDrawer(true), title: t('knownFacts.title') || 'Known facts' })), memori.enableBoardOfExperts && ((0, jsx_runtime_1.jsx)(Button_1.default, { primary: true, shape: "circle", icon: (0, jsx_runtime_1.jsx)(Group_1.default, {}), className: "memori-header--button memori-header--button--experts", disabled: !hasUserActivatedSpeak || !sessionID, onClick: () => setShowExpertsDrawer(true), title: t('widget.showExpertsInTheBoard') || 'Experts in this board' })), enableAudio && showSpeaker && ((0, jsx_runtime_1.jsx)(Button_1.default, { primary: true, shape: "circle", className: "memori-header--button memori-header--button--speaker", icon: speakerMuted ? (0, jsx_runtime_1.jsx)(SoundDeactivated_1.default, {}) : (0, jsx_runtime_1.jsx)(Sound_1.default, {}), onClick: () => setSpeakerMuted(!speakerMuted), title: t('widget.sound') || 'Sound' })), showSettings && ((0, jsx_runtime_1.jsx)(Button_1.default, { primary: true, shape: "circle", className: "memori-header--button memori-header--button-settings", icon: (0, jsx_runtime_1.jsx)(Setting_1.default, {}), onClick: () => setShowSettingsDrawer(true), title: t('widget.settings') || 'Settings' })), showShare && ((0, jsx_runtime_1.jsx)(ShareButton_1.default, { className: "memori-header--button memori-header--button-share", title: memori.name, memori: memori, sessionID: sessionID, tenant: tenant, showQrCode: true, align: "left", baseUrl: baseUrl })), showLogin && ((0, jsx_runtime_1.jsx)(Button_1.default, { primary: true, shape: "circle", className: "memori-header--button memori-header--button-login", icon: (0, jsx_runtime_1.jsx)(User_1.default, {}), onClick: () => setShowLoginDrawer(true), title: loginToken ? t('login.user') || 'User' : t('login.login') || 'Login' }))] })); }; exports.default = Header; //# sourceMappingURL=Header.js.map