UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

62 lines (61 loc) 1.69 kB
"use client"; import React, { useContext } from 'react'; import { formatMessage } from "./useTranslation.js"; import SharedContext from "./Context.js"; import renderWithFormatting from "./renderWithFormatting.js"; import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime"; const TranslationImpl = ({ id, children, ...params }) => { const { translation } = useContext(SharedContext); const result = formatMessage(id || children, params, translation); if (typeof result !== 'string') { return _jsx(_Fragment, { children: String(id) }); } return _jsx(_Fragment, { children: renderWithFormatting(result) }); }; const Translation = TranslationImpl; Translation.withTypes = function withTypes() { return function TypedTranslation(props) { return _jsx(TranslationImpl, { ...props }); }; }; export default Translation; function isPlainObject(value) { if (value === null || typeof value !== 'object') { return false; } if (Array.isArray(value)) { return false; } return Object.getPrototypeOf(value) === Object.prototype; } export function mergeTranslations(...translations) { return translations.reduce((acc, cur) => { Object.keys(cur).forEach(key => { const accValue = acc[key]; const curValue = cur[key]; if (Array.isArray(accValue) && Array.isArray(curValue)) { acc[key] = [...accValue, ...curValue]; return; } if (isPlainObject(accValue) && isPlainObject(curValue)) { acc[key] = mergeTranslations(accValue, curValue); return; } acc[key] = curValue; }); return acc; }, {}); } //# sourceMappingURL=Translation.js.map