@memori.ai/memori-react
Version:
[](https://www.npmjs.com/package/@memori.ai/memori-react)   => {
const browserLanguage = navigator.language;
if (browserLanguage) {
let lng = browserLanguage.split('-')[0];
if (['en', 'it'].includes(lng)) {
return {
lng,
fallbackLng: lng === 'en' ? 'it' : 'en',
};
}
}
return {
lng: 'en',
fallbackLng: 'it',
};
};
const getParsedContext = (context) => {
var _a;
if (!context)
return {};
const parsedContext = (_a = context === null || context === void 0 ? void 0 : context.split(',')) === null || _a === void 0 ? void 0 : _a.reduce((acc, cur) => {
const [key, value] = cur.split(':').map(t => t.trim());
return { ...acc, [key]: value };
}, {});
return parsedContext;
};
const Memori = ({ ownerUserName, ownerUserID, memoriName, memoriID, integration, integrationID, tenantID, secretToken, sessionID, layout, customLayout, showShare, showCopyButton = true, showTranslationOriginal = false, showSettings, showTypingText = false, showClear = false, showOnlyLastMessages, showInputs = true, showDates = false, showContextPerLine = false, showUpload, showLogin, showReasoning, height = '100%', baseURL, apiURL = 'https://backend.memori.ai', engineURL = 'https://engine.memori.ai', tag, pin, context, initialQuestion, showChatHistory = true, uiLang, spokenLang, multilingual, authToken, enableAudio, defaultSpeakerActive = true, disableTextEnteredEvents = false, onStateChange, additionalInfo, customMediaRenderer, additionalSettings, userAvatar, useMathFormatting = false, autoStart, applyVarsToRoot = false, }) => {
var _a, _b, _c, _d;
const [memori, setMemori] = useState();
const [tenant, setTenant] = useState();
const [speechKey, setSpeechKey] = useState();
const { t } = useTranslation();
if (!((memoriID && ownerUserID) || (memoriName && ownerUserName))) {
throw new Error('Identifier pair required: please provide either memoriID and ownerUserID or memoriName and ownerUserName');
}
const client = memoriApiClient(apiURL, engineURL);
const fetchSpeechKey = useCallback(async () => {
const url = baseURL ||
(tenantID.startsWith('https://') ? tenantID : `https://${tenantID}`);
try {
const result = await fetch(`${url}/api/speechkey`);
const data = await result.json();
if (data.AZURE_COGNITIVE_SERVICES_TTS_KEY) {
setSpeechKey(data.AZURE_COGNITIVE_SERVICES_TTS_KEY);
}
else {
console.log('AZURE_COGNITIVE_SERVICES_TTS_KEY not found');
}
}
catch (error) {
console.error('Error fetching speech key', error);
}
}, []);
useEffect(() => {
fetchSpeechKey();
}, []);
const fetchMemori = useCallback(async () => {
if (memoriID && ownerUserID) {
const { memori, ...resp } = await client.backend.getMemoriByUserAndId(tenantID, ownerUserID, memoriID);
if (resp.resultCode === 0 && !!memori) {
setMemori(memori);
}
else {
console.error('[MEMORI]', resp, memori);
}
}
else if (memoriName && ownerUserName) {
const { memori, ...resp } = await client.backend.getMemori(tenantID, ownerUserName, memoriName);
if (resp.resultCode === 0 && !!memori) {
if (!memori.ownerUserID && ownerUserID) {
memori.ownerUserID = ownerUserID;
}
setMemori(memori);
}
else {
console.error('[MEMORI]', resp, memori);
}
}
}, [memoriID, ownerUserID, memoriName, ownerUserName, tenantID]);
useEffect(() => {
fetchMemori();
}, [fetchMemori, tenantID]);
const fetchTenant = useCallback(async () => {
const { tenant, ...resp } = await client.backend.tenant.getTenant(tenantID);
if (tenant && resp.resultCode === 0)
setTenant(tenant);
else
console.debug('[TENANT]', resp, tenant);
}, [tenantID, apiURL]);
useEffect(() => {
fetchTenant();
}, [fetchTenant]);
useEffect(() => {
if (uiLang) {
i18n.changeLanguage(uiLang.toLowerCase());
}
else {
const { lng, fallbackLng } = getPreferredLanguages();
i18n.changeLanguage(lng).catch(() => {
i18n.changeLanguage(fallbackLng);
});
}
}, [uiLang]);
const layoutIntegration = integration !== null && integration !== void 0 ? integration : (_a = memori === null || memori === void 0 ? void 0 : memori.integrations) === null || _a === void 0 ? void 0 : _a.find(i => integrationID
? i.integrationID === integrationID
: !!i.publish && i.type === 'LANDING_EXPERIENCE');
const layoutIntegrationConfig = safeParseJSON((_b = layoutIntegration === null || layoutIntegration === void 0 ? void 0 : layoutIntegration.customData) !== null && _b !== void 0 ? _b : '{}');
const whiteListedDomains = layoutIntegrationConfig.whiteListedDomains;
if (whiteListedDomains) {
if (typeof window !== 'undefined') {
if (!whiteListedDomains.some((domain) => new RegExp(domain).test(window.location.hostname))) {
return null;
}
}
}
const initialContextVars = context !== null && context !== void 0 ? context : getParsedContext(layoutIntegrationConfig.contextVars);
const initialQuestionLayout = initialQuestion !== null && initialQuestion !== void 0 ? initialQuestion : layoutIntegrationConfig.initialQuestion;
return (_jsx(I18nWrapper, { children: _jsxs(VisemeProvider, { children: [_jsx(Toaster, { position: "top-center", reverseOrder: true }), memori ? (_jsx(MemoriWidget, { layout: layout, customLayout: customLayout, height: height, baseUrl: baseURL ||
(tenantID.startsWith('https://') || tenantID.startsWith('http://')
? tenantID
: `https://${tenantID}`), apiURL: apiURL, engineURL: engineURL, memori: {
...memori,
secretToken,
}, ownerUserName: ownerUserName !== null && ownerUserName !== void 0 ? ownerUserName : memori.ownerUserName, ownerUserID: ownerUserID !== null && ownerUserID !== void 0 ? ownerUserID : memori.ownerUserID, tenantID: tenantID, memoriLang: spokenLang !== null && spokenLang !== void 0 ? spokenLang : (_d = (_c = memori.culture) === null || _c === void 0 ? void 0 : _c.split('-')) === null || _d === void 0 ? void 0 : _d[0], multilingual: multilingual, showChatHistory: showChatHistory, tenant: tenant, secret: secretToken, sessionID: sessionID, showShare: showShare, showCopyButton: showCopyButton, showTranslationOriginal: showTranslationOriginal, showSettings: showSettings, showTypingText: showTypingText, showClear: showClear, showOnlyLastMessages: showOnlyLastMessages, showInputs: showInputs, showDates: showDates, showContextPerLine: showContextPerLine, showLogin: showLogin !== null && showLogin !== void 0 ? showLogin : memori === null || memori === void 0 ? void 0 : memori.enableDeepThought, showUpload: showUpload, showReasoning: showReasoning, integration: layoutIntegration, initialContextVars: initialContextVars, initialQuestion: initialQuestionLayout, authToken: authToken, AZURE_COGNITIVE_SERVICES_TTS_KEY: speechKey, autoStart: autoStart !== undefined
? autoStart
: layout === 'HIDDEN_CHAT'
? true
: autoStart, enableAudio: enableAudio && !!speechKey, defaultSpeakerActive: defaultSpeakerActive, disableTextEnteredEvents: disableTextEnteredEvents, onStateChange: onStateChange, additionalInfo: additionalInfo, customMediaRenderer: customMediaRenderer, additionalSettings: additionalSettings, userAvatar: userAvatar, useMathFormatting: useMathFormatting, applyVarsToRoot: applyVarsToRoot, ...(tag && pin ? { personification: { tag, pin } } : {}) })) : (_jsx("div", { style: {
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
}, children: _jsxs("p", { style: {
textAlign: 'center',
margin: '2rem auto',
textTransform: 'capitalize',
}, children: [t('loading') || 'Loading', "..."] }) }))] }) }));
};
Memori.propTypes = {
memoriName: PropTypes.string,
memoriID: PropTypes.string,
ownerUserName: PropTypes.string,
ownerUserID: PropTypes.string,
integrationID: PropTypes.string,
integration: PropTypes.any,
tenantID: PropTypes.string.isRequired,
secretToken: PropTypes.string,
sessionID: PropTypes.string,
layout: PropTypes.oneOf([
'DEFAULT',
'FULLPAGE',
'TOTEM',
'WEBSITE_ASSISTANT',
'CHAT',
'HIDDEN_CHAT',
'ZOOMED_FULL_BODY',
]),
customLayout: PropTypes.any,
showShare: PropTypes.bool,
showCopyButton: PropTypes.bool,
showTranslationOriginal: PropTypes.bool,
showInputs: PropTypes.bool,
showDates: PropTypes.bool,
showContextPerLine: PropTypes.bool,
showSettings: PropTypes.bool,
showClear: PropTypes.bool,
showOnlyLastMessages: PropTypes.bool,
showTypingText: PropTypes.bool,
showLogin: PropTypes.bool,
showUpload: PropTypes.bool,
showReasoning: PropTypes.bool,
height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
baseURL: PropTypes.string,
apiURL: PropTypes.string,
engineURL: PropTypes.string,
tag: PropTypes.string,
pin: PropTypes.string,
context: PropTypes.objectOf(PropTypes.any),
initialQuestion: PropTypes.string,
uiLang: PropTypes.oneOf([
'en',
'it',
'fr',
'es',
'de',
'EN',
'IT',
'FR',
'ES',
'DE',
]),
spokenLang: PropTypes.string,
multilingual: PropTypes.bool,
authToken: PropTypes.string,
enableAudio: PropTypes.bool,
defaultSpeakerActive: PropTypes.bool,
disableTextEnteredEvents: PropTypes.bool,
onStateChange: PropTypes.func,
additionalInfo: PropTypes.objectOf(PropTypes.any),
customMediaRenderer: PropTypes.func,
additionalSettings: PropTypes.any,
userAvatar: PropTypes.oneOfType([PropTypes.string, PropTypes.any]),
useMathFormatting: PropTypes.bool,
autoStart: PropTypes.bool,
applyVarsToRoot: PropTypes.bool,
};
export default Memori;
//# sourceMappingURL=index.js.map