UNPKG

@nexusui/components

Version:

These are custom components specially-developed for NexusUI applications. They will make your life easier by giving you out-of-the-box implementations for various high-level UI elements that you can drop directly into your application.

2 lines (1 loc) 2.01 kB
import{jsx as n}from"react/jsx-runtime";import{createContext as t,useMemo as e,useContext as r}from"react";import{ThemeContext as o}from"@emotion/react";import s from"lodash/get";const u=["en-US","de-DE","fr-FR","en-GB","it-IT","es-ES","pt-PT","pt-BR","pl","sv-SE","nl-NL","tr","cs","hu","ru","zh-CN","zh-TW","ko","ja","bg","da","ro","sk","sl","th"],i="en-US",c=t({userLanguage:i}),a=t=>{const{children:r,userLanguage:o}=t,s=e((()=>({userLanguage:o})),[o]);return n(c.Provider,{value:s,children:r})};function l(){return r(c).userLanguage}const g=(n,t)=>{const e=[];let r=0;const o=`<${t}>`,s=`</${t}>`;let u=n.indexOf(o,r),i=n.indexOf(s,r);for(;u>-1&&i>-1;)r=u+o.length,e.push({from:r,to:i,tag:t}),r=i+s.length,u=n.indexOf(o,r),i=n.indexOf(s,r);return e};function f(n){return function(t,c=""){let a=r(o).language||i;return u.includes(a)||("production"!==process.env.NODE_ENV&&console.warn(`Nexusui translation: Unsupported language: ${a}`),a=i),e((()=>{const e=t[a];return function(r,o){const u=function(n,t){return t?t.split(".").reduce(((n,t)=>n&&n[t]?n[t]:null),n):n}(e,c)||{};let l=u[r];return l||("production"!==process.env.NODE_ENV&&(n&&n(c,r,a),console.warn(`Nexusui translation: Missing translation for key -${r}- in ${a} language.`)),l=c?s(t[i],`${c}.${r}`):t[i][r]),o?function(n,t){let e=!1,r=!1;const o=[];let s=[];const u=Object.keys(t);if(u.forEach((e=>{const o=t[e];if("function"!=typeof o){if(!n.includes(e))return n;n=n.replaceAll(`{{${e}}}`,o?.toString())}else r=!0,u.length>1&&(s=s.concat(g(n,e)))})),!r)return n;1===u.length&&(s=g(n,u[0])),s.sort(((n,t)=>n.from-t.from));let i=0;if(s.forEach(((r,s)=>{i>r.from&&(e=!0),o.push(n.substring(i,r.from-(r.tag.length+2))),o.push(t[r.tag](n.substring(r.from,r.to),s)),i=r.to+(r.tag.length+3)})),o.push(n.substring(i)),e&&"production"!==process.env.NODE_ENV)throw new Error(`[Localization] - "${n}" includes nest tag`);return o}(l,o):l}}),[a,c,t])}}export{a as UserLanguageProvider,f as initTranslations,u as supportedLanguage,l as useUserLanguage};