@gaddario98/react-core 2.1.0 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import * as _gaddario98_react_state from '@gaddario98/react-state';
1
+ import * as _gaddario98_react_state from '../state/index';
2
2
 
3
3
  type Locale = string;
4
4
  type TranslationResources = Record<string, any>;
@@ -1,4 +1,4 @@
1
- 'use strict';var compilerRuntime=require('react/compiler-runtime'),reactState=require('@gaddario98/react-state');// Lazy initialization to avoid side effects at module load time
1
+ 'use strict';var compilerRuntime=require('react/compiler-runtime'),index_ts=require('../state/index.js');// Lazy initialization to avoid side effects at module load time
2
2
  const _localizationConfig = {
3
3
  currentLocale: 'it',
4
4
  locales: {
@@ -10,7 +10,7 @@ const {
10
10
  useValue: useLocalizationConfigValue,
11
11
  useState: useLocalizationConfigState,
12
12
  useReset: useLocalizationConfigReset
13
- } = reactState.atomStateGenerator({
13
+ } = index_ts.atomStateGenerator({
14
14
  key: 'localizationConfig',
15
15
  defaultValue: _localizationConfig,
16
16
  persist: true
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../localization/config.ts","../../localization/core.ts","../../localization/hooks.ts","../../localization/server.ts","../../localization/useTranslatedText.ts"],"sourcesContent":["import { atomStateGenerator } from '@gaddario98/react-state'\nimport type { Locale, TranslationResources } from './types'\n\nexport interface LocalizationConfigProps {\n currentLocale: Locale\n locales: Record<Locale, TranslationResources>\n}\n\n// Lazy initialization to avoid side effects at module load time\nconst _localizationConfig: LocalizationConfigProps = {\n currentLocale: 'it',\n locales: {\n it: {},\n },\n}\n\nexport const {\n atom: localizationConfigAtom,\n useValue: useLocalizationConfigValue,\n useState: useLocalizationConfigState,\n useReset: useLocalizationConfigReset,\n} = atomStateGenerator<LocalizationConfigProps>({\n key: 'localizationConfig',\n defaultValue: _localizationConfig,\n persist: true,\n})\n\n/**\n * Hook per gestire le operazioni di localization\n */\nexport const useLocalizationActions = () => {\n const [config, setConfig] = useLocalizationConfigState()\n return {\n /**\n * Aggiunge o aggiorna una locale con le sue risorse\n */\n addLocale: (locale: Locale, resources: TranslationResources) => {\n setConfig({\n ...config,\n locales: {\n ...config.locales,\n [locale]: resources,\n },\n })\n },\n\n /**\n * Switch alla locale specificata\n */\n switchLocale: (locale: Locale) => {\n setConfig({\n ...config,\n currentLocale: locale,\n })\n },\n\n /**\n * Inizializza con una locale di default\n */\n initializeLocale: (locale: Locale, resources: TranslationResources) => {\n setConfig({\n currentLocale: locale,\n locales: {\n [locale]: resources,\n },\n })\n },\n }\n}\n","import type { TranslationOptions, TranslationResources } from './types'\n\n/**\n * Risolve una chiave di traduzione dalle risorse fornite.\n * Supporta la notazione punto per oggetti annidati (es. 'common.buttons.save').\n */\nconst getNestedValue = (obj: any, key: string): string | undefined => {\n return key.split('.').reduce((acc, part) => {\n return acc && acc[part] !== undefined ? acc[part] : undefined\n }, obj)\n}\n\n/**\n * Formatta un numero secondo le opzioni specificate\n */\nconst formatNumber = (\n value: number,\n locale: string = 'en-US',\n formatOptions?: Intl.NumberFormatOptions\n): string => {\n try {\n return new Intl.NumberFormat(locale, formatOptions).format(value)\n } catch {\n return String(value)\n }\n}\n\n/**\n * Formatta una data secondo le opzioni specificate\n */\nconst formatDate = (\n value: Date | number | string,\n locale: string = 'en-US',\n formatOptions?: Intl.DateTimeFormatOptions\n): string => {\n try {\n const date = value instanceof Date ? value : new Date(value)\n return new Intl.DateTimeFormat(locale, formatOptions).format(date)\n } catch {\n return String(value)\n }\n}\n\n/**\n * Formatta una valuta secondo le opzioni specificate\n */\nconst formatCurrency = (\n value: number,\n locale: string = 'en-US',\n currency: string = 'USD',\n formatOptions?: Intl.NumberFormatOptions\n): string => {\n try {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n ...formatOptions,\n }).format(value)\n } catch {\n return String(value)\n }\n}\n\n/**\n * Gestisce la pluralizzazione secondo ICU MessageFormat\n * Formato: {{count, plural, =0{nessuno} one{un elemento} other{# elementi}}}\n */\nconst handlePlural = (count: number, pattern: string): string => {\n // Estrae le varie forme: =0{...} one{...} few{...} many{...} other{...}\n const forms: Record<string, string> = {}\n const regex = /(=\\d+|zero|one|two|few|many|other)\\{([^}]*)\\}/g\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(pattern)) !== null) {\n forms[match[1]] = match[2]\n }\n\n // Controlla forme esatte prima (=0, =1, etc.)\n const exactForm = forms[`=${count}`]\n if (exactForm !== undefined) {\n return exactForm.replace(/#/g, String(count))\n }\n\n // Regole di pluralizzazione semplificate (inglese-based)\n let pluralForm: string\n if (count === 0 && forms.zero) {\n pluralForm = forms.zero\n } else if (count === 1 && forms.one) {\n pluralForm = forms.one\n } else if (count === 2 && forms.two) {\n pluralForm = forms.two\n } else if (forms.other) {\n pluralForm = forms.other\n } else {\n pluralForm = pattern\n }\n\n // Sostituisce # con il conteggio\n return pluralForm.replace(/#/g, String(count))\n}\n\n/**\n * Gestisce la selezione secondo ICU MessageFormat\n * Formato: {{gender, select, male{lui} female{lei} other{loro}}}\n */\nconst handleSelect = (value: string, pattern: string): string => {\n const forms: Record<string, string> = {}\n const regex = /(\\w+)\\{([^}]*)\\}/g\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(pattern)) !== null) {\n forms[match[1]] = match[2]\n }\n\n return forms[value] || forms.other || pattern\n}\n\n/**\n * Effettua l'interpolazione avanzata dei parametri nella stringa di traduzione.\n * Supporta:\n * - Interpolazione semplice: {{name}}\n * - Formattazione numeri: {{count, number}}\n * - Formattazione date: {{date, date}}\n * - Formattazione valuta: {{price, currency}}\n * - Pluralizzazione: {{count, plural, =0{nessuno} one{un elemento} other{# elementi}}}\n * - Selezione: {{gender, select, male{lui} female{lei} other{loro}}}\n */\nconst interpolate = (\n text: string,\n options?: TranslationOptions,\n locale: string = 'en-US'\n): string => {\n if (!options) return text\n\n // Pattern per catturare interpolazioni complesse: {{key}} o {{key, format, pattern}}\n return text.replace(/\\{\\{([^}]+)\\}\\}/g, (match, content) => {\n const parts = content.split(',').map((p: string) => p.trim())\n const key = parts[0]\n const value = options[key]\n\n if (value === undefined) {\n return match // Mantiene il placeholder se il valore non esiste\n }\n\n // Nessun formato specificato - interpolazione semplice\n if (parts.length === 1) {\n return String(value)\n }\n\n const format = parts[1]\n const formatOpts = options.formatOptions?.[key]\n\n switch (format) {\n case 'number': {\n if (typeof value !== 'number') return String(value)\n return formatNumber(value, locale, formatOpts?.number)\n }\n\n case 'date': {\n return formatDate(value, locale, formatOpts?.date)\n }\n\n case 'currency': {\n if (typeof value !== 'number') return String(value)\n const currency = formatOpts?.currency?.currency || 'USD'\n return formatCurrency(value, locale, currency, formatOpts?.currency)\n }\n\n case 'plural': {\n if (typeof value !== 'number') return String(value)\n const pattern = parts.slice(2).join(',').trim()\n return handlePlural(value, pattern)\n }\n\n case 'select': {\n const pattern = parts.slice(2).join(',').trim()\n return handleSelect(String(value), pattern)\n }\n\n default:\n return String(value)\n }\n })\n}\n\n/**\n * Funzione core per risolvere una traduzione.\n */\nexport const resolveTranslation = (\n key: string,\n resources: TranslationResources,\n options?: TranslationOptions,\n locale: string = 'en-US'\n): string => {\n const rawValue = getNestedValue(resources, key)\n\n // Se non trovato, usa defaultValue se presente, altrimenti la chiave stessa\n if (rawValue === undefined) {\n if (options && options.defaultValue) {\n return interpolate(options.defaultValue, options, locale)\n }\n return key\n }\n\n return interpolate(String(rawValue), options, locale)\n}\n","import { useMemo } from 'react'\nimport { useLocalizationConfigValue } from './config'\nimport { resolveTranslation } from './core';\nimport type { Locale, TranslateFunction } from './types'\n\nexport const useTranslation = (\n _ns?: string,\n): { t: TranslateFunction; locale: Locale } => {\n const { currentLocale, locales } = useLocalizationConfigValue()\n const resources = useMemo(\n () => locales[currentLocale],\n [locales, currentLocale],\n )\n\n const t = useMemo<TranslateFunction>(() => {\n return (key, options) =>\n resolveTranslation(\n _ns ? `${_ns}.${key}` : key,\n resources,\n options,\n currentLocale,\n )\n }, [resources, currentLocale, _ns])\n\n return { t, locale: currentLocale }\n}\n","import { resolveTranslation } from './core'\nimport type { Locale, TranslateFunction, TranslationResources } from './types'\n\n/**\n * Crea un'istanza di traduzione per l'uso lato server (o fuori dai componenti React).\n */\nexport const createServerTranslator = (\n resources: TranslationResources,\n locale: Locale = 'it', // Default locale hardcoded per ora, o passato come argomento\n): { t: TranslateFunction; locale: Locale } => {\n const t: TranslateFunction = (key, options) => {\n return resolveTranslation(key, resources, options)\n }\n\n return { t, locale }\n}\n","import { useCallback } from 'react'\nimport { useTranslation } from './hooks'\nimport type { TranslationOptions } from './types'\n\n// Mantengo l'interfaccia TranslationFunction per compatibilità\nexport type TranslationFunction = (\n key: string,\n options?: TranslationOptions,\n) => string\n\n/**\n * Hook per tradurre testi che si adatta al sistema di traduzione interno.\n * Wrapper di retro-compatibilità per useTranslation.\n *\n * @param ns - Namespace opzionale (ignorato nella nuova implementazione)\n * @returns Un oggetto con la funzione traslateText (e alias t)\n */\nexport const useTranslatedText = (ns?: string) => {\n const { t } = useTranslation(ns)\n\n const traslateText = useCallback(\n (text: string, options?: TranslationOptions) => {\n if (!text) return ''\n return t(text, options)\n },\n [t],\n )\n\n return { traslateText, t: traslateText }\n}\n"],"names":["_localizationConfig","currentLocale","locales","it","atom","localizationConfigAtom","useValue","useLocalizationConfigValue","useState","useLocalizationConfigState","useReset","useLocalizationConfigReset","atomStateGenerator","key","defaultValue","persist","useLocalizationActions","$","_c","config","setConfig","t0","t1","locale","resources","Object","assign","locale_0","t2","locale_1","resources_0","t3","addLocale","switchLocale","initializeLocale","getNestedValue","obj","split","reduce","acc","part","undefined","formatNumber","value","formatOptions","Intl","NumberFormat","format","_a","String","formatDate","date","Date","DateTimeFormat","formatCurrency","currency","style","handlePlural","count","pattern","forms","regex","match","exec","exactForm","replace","pluralForm","zero","one","two","other","handleSelect","interpolate","text","options","content","parts","map","p","trim","length","formatOpts","number","_b","slice","join","resolveTranslation","rawValue","useTranslation","_ns","t","createServerTranslator","useTranslatedText","ns","traslateText"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../localization/config.ts","../../localization/core.ts","../../localization/hooks.ts","../../localization/server.ts","../../localization/useTranslatedText.ts"],"sourcesContent":["import { atomStateGenerator } from '@gaddario98/react-state'\nimport type { Locale, TranslationResources } from './types'\n\nexport interface LocalizationConfigProps {\n currentLocale: Locale\n locales: Record<Locale, TranslationResources>\n}\n\n// Lazy initialization to avoid side effects at module load time\nconst _localizationConfig: LocalizationConfigProps = {\n currentLocale: 'it',\n locales: {\n it: {},\n },\n}\n\nexport const {\n atom: localizationConfigAtom,\n useValue: useLocalizationConfigValue,\n useState: useLocalizationConfigState,\n useReset: useLocalizationConfigReset,\n} = atomStateGenerator<LocalizationConfigProps>({\n key: 'localizationConfig',\n defaultValue: _localizationConfig,\n persist: true,\n})\n\n/**\n * Hook per gestire le operazioni di localization\n */\nexport const useLocalizationActions = () => {\n const [config, setConfig] = useLocalizationConfigState()\n return {\n /**\n * Aggiunge o aggiorna una locale con le sue risorse\n */\n addLocale: (locale: Locale, resources: TranslationResources) => {\n setConfig({\n ...config,\n locales: {\n ...config.locales,\n [locale]: resources,\n },\n })\n },\n\n /**\n * Switch alla locale specificata\n */\n switchLocale: (locale: Locale) => {\n setConfig({\n ...config,\n currentLocale: locale,\n })\n },\n\n /**\n * Inizializza con una locale di default\n */\n initializeLocale: (locale: Locale, resources: TranslationResources) => {\n setConfig({\n currentLocale: locale,\n locales: {\n [locale]: resources,\n },\n })\n },\n }\n}\n","import type { TranslationOptions, TranslationResources } from './types'\n\n/**\n * Risolve una chiave di traduzione dalle risorse fornite.\n * Supporta la notazione punto per oggetti annidati (es. 'common.buttons.save').\n */\nconst getNestedValue = (obj: any, key: string): string | undefined => {\n return key.split('.').reduce((acc, part) => {\n return acc && acc[part] !== undefined ? acc[part] : undefined\n }, obj)\n}\n\n/**\n * Formatta un numero secondo le opzioni specificate\n */\nconst formatNumber = (\n value: number,\n locale: string = 'en-US',\n formatOptions?: Intl.NumberFormatOptions\n): string => {\n try {\n return new Intl.NumberFormat(locale, formatOptions).format(value)\n } catch {\n return String(value)\n }\n}\n\n/**\n * Formatta una data secondo le opzioni specificate\n */\nconst formatDate = (\n value: Date | number | string,\n locale: string = 'en-US',\n formatOptions?: Intl.DateTimeFormatOptions\n): string => {\n try {\n const date = value instanceof Date ? value : new Date(value)\n return new Intl.DateTimeFormat(locale, formatOptions).format(date)\n } catch {\n return String(value)\n }\n}\n\n/**\n * Formatta una valuta secondo le opzioni specificate\n */\nconst formatCurrency = (\n value: number,\n locale: string = 'en-US',\n currency: string = 'USD',\n formatOptions?: Intl.NumberFormatOptions\n): string => {\n try {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n ...formatOptions,\n }).format(value)\n } catch {\n return String(value)\n }\n}\n\n/**\n * Gestisce la pluralizzazione secondo ICU MessageFormat\n * Formato: {{count, plural, =0{nessuno} one{un elemento} other{# elementi}}}\n */\nconst handlePlural = (count: number, pattern: string): string => {\n // Estrae le varie forme: =0{...} one{...} few{...} many{...} other{...}\n const forms: Record<string, string> = {}\n const regex = /(=\\d+|zero|one|two|few|many|other)\\{([^}]*)\\}/g\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(pattern)) !== null) {\n forms[match[1]] = match[2]\n }\n\n // Controlla forme esatte prima (=0, =1, etc.)\n const exactForm = forms[`=${count}`]\n if (exactForm !== undefined) {\n return exactForm.replace(/#/g, String(count))\n }\n\n // Regole di pluralizzazione semplificate (inglese-based)\n let pluralForm: string\n if (count === 0 && forms.zero) {\n pluralForm = forms.zero\n } else if (count === 1 && forms.one) {\n pluralForm = forms.one\n } else if (count === 2 && forms.two) {\n pluralForm = forms.two\n } else if (forms.other) {\n pluralForm = forms.other\n } else {\n pluralForm = pattern\n }\n\n // Sostituisce # con il conteggio\n return pluralForm.replace(/#/g, String(count))\n}\n\n/**\n * Gestisce la selezione secondo ICU MessageFormat\n * Formato: {{gender, select, male{lui} female{lei} other{loro}}}\n */\nconst handleSelect = (value: string, pattern: string): string => {\n const forms: Record<string, string> = {}\n const regex = /(\\w+)\\{([^}]*)\\}/g\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(pattern)) !== null) {\n forms[match[1]] = match[2]\n }\n\n return forms[value] || forms.other || pattern\n}\n\n/**\n * Effettua l'interpolazione avanzata dei parametri nella stringa di traduzione.\n * Supporta:\n * - Interpolazione semplice: {{name}}\n * - Formattazione numeri: {{count, number}}\n * - Formattazione date: {{date, date}}\n * - Formattazione valuta: {{price, currency}}\n * - Pluralizzazione: {{count, plural, =0{nessuno} one{un elemento} other{# elementi}}}\n * - Selezione: {{gender, select, male{lui} female{lei} other{loro}}}\n */\nconst interpolate = (\n text: string,\n options?: TranslationOptions,\n locale: string = 'en-US'\n): string => {\n if (!options) return text\n\n // Pattern per catturare interpolazioni complesse: {{key}} o {{key, format, pattern}}\n return text.replace(/\\{\\{([^}]+)\\}\\}/g, (match, content) => {\n const parts = content.split(',').map((p: string) => p.trim())\n const key = parts[0]\n const value = options[key]\n\n if (value === undefined) {\n return match // Mantiene il placeholder se il valore non esiste\n }\n\n // Nessun formato specificato - interpolazione semplice\n if (parts.length === 1) {\n return String(value)\n }\n\n const format = parts[1]\n const formatOpts = options.formatOptions?.[key]\n\n switch (format) {\n case 'number': {\n if (typeof value !== 'number') return String(value)\n return formatNumber(value, locale, formatOpts?.number)\n }\n\n case 'date': {\n return formatDate(value, locale, formatOpts?.date)\n }\n\n case 'currency': {\n if (typeof value !== 'number') return String(value)\n const currency = formatOpts?.currency?.currency || 'USD'\n return formatCurrency(value, locale, currency, formatOpts?.currency)\n }\n\n case 'plural': {\n if (typeof value !== 'number') return String(value)\n const pattern = parts.slice(2).join(',').trim()\n return handlePlural(value, pattern)\n }\n\n case 'select': {\n const pattern = parts.slice(2).join(',').trim()\n return handleSelect(String(value), pattern)\n }\n\n default:\n return String(value)\n }\n })\n}\n\n/**\n * Funzione core per risolvere una traduzione.\n */\nexport const resolveTranslation = (\n key: string,\n resources: TranslationResources,\n options?: TranslationOptions,\n locale: string = 'en-US'\n): string => {\n const rawValue = getNestedValue(resources, key)\n\n // Se non trovato, usa defaultValue se presente, altrimenti la chiave stessa\n if (rawValue === undefined) {\n if (options && options.defaultValue) {\n return interpolate(options.defaultValue, options, locale)\n }\n return key\n }\n\n return interpolate(String(rawValue), options, locale)\n}\n","import { useMemo } from 'react'\nimport { useLocalizationConfigValue } from './config'\nimport { resolveTranslation } from './core';\nimport type { Locale, TranslateFunction } from './types'\n\nexport const useTranslation = (\n _ns?: string,\n): { t: TranslateFunction; locale: Locale } => {\n const { currentLocale, locales } = useLocalizationConfigValue()\n const resources = useMemo(\n () => locales[currentLocale],\n [locales, currentLocale],\n )\n\n const t = useMemo<TranslateFunction>(() => {\n return (key, options) =>\n resolveTranslation(\n _ns ? `${_ns}.${key}` : key,\n resources,\n options,\n currentLocale,\n )\n }, [resources, currentLocale, _ns])\n\n return { t, locale: currentLocale }\n}\n","import { resolveTranslation } from './core'\nimport type { Locale, TranslateFunction, TranslationResources } from './types'\n\n/**\n * Crea un'istanza di traduzione per l'uso lato server (o fuori dai componenti React).\n */\nexport const createServerTranslator = (\n resources: TranslationResources,\n locale: Locale = 'it', // Default locale hardcoded per ora, o passato come argomento\n): { t: TranslateFunction; locale: Locale } => {\n const t: TranslateFunction = (key, options) => {\n return resolveTranslation(key, resources, options)\n }\n\n return { t, locale }\n}\n","import { useCallback } from 'react'\nimport { useTranslation } from './hooks'\nimport type { TranslationOptions } from './types'\n\n// Mantengo l'interfaccia TranslationFunction per compatibilità\nexport type TranslationFunction = (\n key: string,\n options?: TranslationOptions,\n) => string\n\n/**\n * Hook per tradurre testi che si adatta al sistema di traduzione interno.\n * Wrapper di retro-compatibilità per useTranslation.\n *\n * @param ns - Namespace opzionale (ignorato nella nuova implementazione)\n * @returns Un oggetto con la funzione traslateText (e alias t)\n */\nexport const useTranslatedText = (ns?: string) => {\n const { t } = useTranslation(ns)\n\n const traslateText = useCallback(\n (text: string, options?: TranslationOptions) => {\n if (!text) return ''\n return t(text, options)\n },\n [t],\n )\n\n return { traslateText, t: traslateText }\n}\n"],"names":["_localizationConfig","currentLocale","locales","it","atom","localizationConfigAtom","useValue","useLocalizationConfigValue","useState","useLocalizationConfigState","useReset","useLocalizationConfigReset","atomStateGenerator","key","defaultValue","persist","useLocalizationActions","$","_c","config","setConfig","t0","t1","locale","resources","Object","assign","locale_0","t2","locale_1","resources_0","t3","addLocale","switchLocale","initializeLocale","getNestedValue","obj","split","reduce","acc","part","undefined","formatNumber","value","formatOptions","Intl","NumberFormat","format","_a","String","formatDate","date","Date","DateTimeFormat","formatCurrency","currency","style","handlePlural","count","pattern","forms","regex","match","exec","exactForm","replace","pluralForm","zero","one","two","other","handleSelect","interpolate","text","options","content","parts","map","p","trim","length","formatOpts","number","_b","slice","join","resolveTranslation","rawValue","useTranslation","_ns","t","createServerTranslator","useTranslatedText","ns","traslateText"],"mappings":"yGAQA;AACA,MAAMA,mBAAmB,GAA4B;AACnDC,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,OAAO,EAAE;AACPC,IAAAA,EAAE,EAAE;AACL;CACF;AAEM,MAAM;AACXC,EAAAA,IAAI,EAAEC,sBAAsB;AAC5BC,EAAAA,QAAQ,EAAEC,0BAA0B;AACpCC,EAAAA,QAAQ,EAAEC,0BAA0B;AACpCC,EAAAA,QAAQ,EAAEC;AAA0B,CACrC,GAAGC,2BAAkB,CAA0B;AAC9CC,EAAAA,GAAG,EAAE,oBAAoB;AACzBC,EAAAA,YAAY,EAAEd,mBAAmB;AACjCe,EAAAA,OAAO,EAAE;AACV,CAAA;AAED;;AAEG;AACI,MAAMC,sBAAsB,GAAGA,MAAA;EAAA,MAAAC,CAAA,GAAAC,iBAAA,CAAA,EAAA,CAAA;AACpC,EAAA,MAAA,CAAAC,MAAA,EAAAC,SAAA,CAAA,GAA4BX,0BAA0B,EAAE;AAAA,EAAA,IAAAY,EAAA;AAAA,EAAA,IAAAC,EAAA;AAAA,EAAA,IAAAL,CAAA,CAAA,CAAA,CAAA,KAAAE,MAAA,IAAAF,CAAA,QAAAG,SAAA,EAAA;AAK3CC,IAAAA,EAAA,GAAAA,CAAAE,MAAA,EAAAC,SAAA,KAAA;AACTJ,MAAAA,SAAS,CAAAK,MAAA,CAAAC,MAAA,CAAAD,MAAA,CAAAC,MAAA,CAAA,EAAA,EACJP,MAAM,CAAA,EAAA;AAAAjB,QAAAA,OAAA,kCAEJiB,MAAM,CAAAjB,OAAQ,CAAA,EAAA;AAAA,UAAA,CAChBqB,MAAM,GAAGC;;SAEZ;IAAA,CACH;AAKaF,IAAAA,EAAA,GAAAK,QAAA,IAAA;AACZP,MAAAA,SAAS,iCACJD,MAAM,CAAA,EAAA;AAAAlB,QAAAA,aAAA,EACMsB;SACf;IAAA,CACH;AAAAN,IAAAA,CAAA,MAAAE,MAAA;AAAAF,IAAAA,CAAA,MAAAG,SAAA;AAAAH,IAAAA,CAAA,MAAAI,EAAA;AAAAJ,IAAAA,CAAA,MAAAK,EAAA;AAAA,EAAA,CAAA,MAAA;AAAAD,IAAAA,EAAA,GAAAJ,CAAA,CAAA,CAAA,CAAA;AAAAK,IAAAA,EAAA,GAAAL,CAAA,CAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAAW,EAAA;EAAA,IAAAX,CAAA,QAAAG,SAAA,EAAA;AAKiBQ,IAAAA,EAAA,GAAAA,CAAAC,QAAA,EAAAC,WAAA,KAAA;AAChBV,MAAAA,SAAS,CAAC;AAAAnB,QAAAA,aAAA,EACOsB,QAAM;AAAArB,QAAAA,OAAA,EACZ;AAAA,UAAA,CACNqB,QAAM,GAAGC;AACX;AACF,OAAA,CAAC;IAAA,CACH;AAAAP,IAAAA,CAAA,MAAAG,SAAA;AAAAH,IAAAA,CAAA,MAAAW,EAAA;AAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAA,GAAAX,CAAA,CAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAAc,EAAA;EAAA,IAAAd,CAAA,CAAA,CAAA,CAAA,KAAAI,EAAA,IAAAJ,CAAA,QAAAK,EAAA,IAAAL,CAAA,CAAA,CAAA,CAAA,KAAAW,EAAA,EAAA;IAlCIG,EAAA,GAAA;AAAAC,MAAAA,SAAA,EAIMX,EAQV;AAAAY,MAAAA,YAAA,EAKaX,EAKb;AAAAY,MAAAA,gBAAA,EAKiBN;KAQnB;AAAAX,IAAAA,CAAA,MAAAI,EAAA;AAAAJ,IAAAA,CAAA,MAAAK,EAAA;AAAAL,IAAAA,CAAA,MAAAW,EAAA;AAAAX,IAAAA,CAAA,MAAAc,EAAA;AAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAA,GAAAd,CAAA,CAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAnCMc,EAmCN;AAAA,ECjEH;;;AAGG;AACH,MAAMI,cAAc,GAAGA,CAACC,GAAQ,EAAEvB,GAAW,KAAwB;AACnE,EAAA,OAAOA,GAAG,CAACwB,KAAK,CAAC,GAAG,CAAC,CAACC,MAAM,CAAC,CAACC,GAAG,EAAEC,IAAI,KAAI;AACzC,IAAA,OAAOD,GAAG,IAAIA,GAAG,CAACC,IAAI,CAAC,KAAKC,SAAS,GAAGF,GAAG,CAACC,IAAI,CAAC,GAAGC,SAAS;EAC/D,CAAC,EAAEL,GAAG,CAAC;AACT,CAAC;AAED;;AAEG;AACH,MAAMM,YAAY,GAAGA,CACnBC,KAAa,EACbpB,SAAiB,OAAO,EACxBqB,aAAwC,KAC9B;EACV,IAAI;AACF,IAAA,OAAO,IAAIC,IAAI,CAACC,YAAY,CAACvB,MAAM,EAAEqB,aAAa,CAAC,CAACG,MAAM,CAACJ,KAAK,CAAC;EACnE,CAAC,CAAC,OAAAK,EAAA,EAAM;IACN,OAAOC,MAAM,CAACN,KAAK,CAAC;AACtB,EAAA;AACF,CAAC;AAED;;AAEG;AACH,MAAMO,UAAU,GAAGA,CACjBP,KAA6B,EAC7BpB,SAAiB,OAAO,EACxBqB,aAA0C,KAChC;EACV,IAAI;AACF,IAAA,MAAMO,IAAI,GAAGR,KAAK,YAAYS,IAAI,GAAGT,KAAK,GAAG,IAAIS,IAAI,CAACT,KAAK,CAAC;AAC5D,IAAA,OAAO,IAAIE,IAAI,CAACQ,cAAc,CAAC9B,MAAM,EAAEqB,aAAa,CAAC,CAACG,MAAM,CAACI,IAAI,CAAC;EACpE,CAAC,CAAC,OAAAH,EAAA,EAAM;IACN,OAAOC,MAAM,CAACN,KAAK,CAAC;AACtB,EAAA;AACF,CAAC;AAED;;AAEG;AACH,MAAMW,cAAc,GAAGA,CACrBX,KAAa,EACbpB,MAAA,GAAiB,OAAO,EACxBgC,QAAA,GAAmB,KAAK,EACxBX,aAAwC,KAC9B;EACV,IAAI;IACF,OAAO,IAAIC,IAAI,CAACC,YAAY,CAACvB,MAAM,EAAAE,MAAA,CAAAC,MAAA,CAAA;AACjC8B,MAAAA,KAAK,EAAE,UAAU;AACjBD,MAAAA;KAAQ,EACLX,aAAa,CAAA,CAChB,CAACG,MAAM,CAACJ,KAAK,CAAC;EAClB,CAAC,CAAC,OAAAK,EAAA,EAAM;IACN,OAAOC,MAAM,CAACN,KAAK,CAAC;AACtB,EAAA;AACF,CAAC;AAED;;;AAGG;AACH,MAAMc,YAAY,GAAGA,CAACC,KAAa,EAAEC,OAAe,KAAY;AAC9D;EACA,MAAMC,KAAK,GAA2B,EAAE;EACxC,MAAMC,KAAK,GAAG,gDAAgD;AAC9D,EAAA,IAAIC,KAA6B;EAEjC,OAAO,CAACA,KAAK,GAAGD,KAAK,CAACE,IAAI,CAACJ,OAAO,CAAC,MAAM,IAAI,EAAE;IAC7CC,KAAK,CAACE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC;AAC5B,EAAA;AAEA;AACA,EAAA,MAAME,SAAS,GAAGJ,KAAK,CAAC,CAAA,CAAA,EAAIF,KAAK,EAAE,CAAC;EACpC,IAAIM,SAAS,KAAKvB,SAAS,EAAE;IAC3B,OAAOuB,SAAS,CAACC,OAAO,CAAC,IAAI,EAAEhB,MAAM,CAACS,KAAK,CAAC,CAAC;AAC/C,EAAA;AAEA;AACA,EAAA,IAAIQ,UAAkB;AACtB,EAAA,IAAIR,KAAK,KAAK,CAAC,IAAIE,KAAK,CAACO,IAAI,EAAE;IAC7BD,UAAU,GAAGN,KAAK,CAACO,IAAI;EACzB,CAAC,MAAM,IAAIT,KAAK,KAAK,CAAC,IAAIE,KAAK,CAACQ,GAAG,EAAE;IACnCF,UAAU,GAAGN,KAAK,CAACQ,GAAG;EACxB,CAAC,MAAM,IAAIV,KAAK,KAAK,CAAC,IAAIE,KAAK,CAACS,GAAG,EAAE;IACnCH,UAAU,GAAGN,KAAK,CAACS,GAAG;AACxB,EAAA,CAAC,MAAM,IAAIT,KAAK,CAACU,KAAK,EAAE;IACtBJ,UAAU,GAAGN,KAAK,CAACU,KAAK;AAC1B,EAAA,CAAC,MAAM;AACLJ,IAAAA,UAAU,GAAGP,OAAO;AACtB,EAAA;AAEA;EACA,OAAOO,UAAU,CAACD,OAAO,CAAC,IAAI,EAAEhB,MAAM,CAACS,KAAK,CAAC,CAAC;AAChD,CAAC;AAED;;;AAGG;AACH,MAAMa,YAAY,GAAGA,CAAC5B,KAAa,EAAEgB,OAAe,KAAY;EAC9D,MAAMC,KAAK,GAA2B,EAAE;EACxC,MAAMC,KAAK,GAAG,mBAAmB;AACjC,EAAA,IAAIC,KAA6B;EAEjC,OAAO,CAACA,KAAK,GAAGD,KAAK,CAACE,IAAI,CAACJ,OAAO,CAAC,MAAM,IAAI,EAAE;IAC7CC,KAAK,CAACE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC;AAC5B,EAAA;EAEA,OAAOF,KAAK,CAACjB,KAAK,CAAC,IAAIiB,KAAK,CAACU,KAAK,IAAIX,OAAO;AAC/C,CAAC;AAED;;;;;;;;;AASG;AACH,MAAMa,WAAW,GAAGA,CAClBC,IAAY,EACZC,OAA4B,EAC5BnD,MAAA,GAAiB,OAAO,KACd;AACV,EAAA,IAAI,CAACmD,OAAO,EAAE,OAAOD,IAAI;AAEzB;EACA,OAAOA,IAAI,CAACR,OAAO,CAAC,kBAAkB,EAAE,CAACH,KAAK,EAAEa,OAAO,KAAI;;AACzD,IAAA,MAAMC,KAAK,GAAGD,OAAO,CAACtC,KAAK,CAAC,GAAG,CAAC,CAACwC,GAAG,CAAEC,CAAS,IAAKA,CAAC,CAACC,IAAI,EAAE,CAAC;AAC7D,IAAA,MAAMlE,GAAG,GAAG+D,KAAK,CAAC,CAAC,CAAC;AACpB,IAAA,MAAMjC,KAAK,GAAG+B,OAAO,CAAC7D,GAAG,CAAC;IAE1B,IAAI8B,KAAK,KAAKF,SAAS,EAAE;MACvB,OAAOqB,KAAK,CAAA;AACd,IAAA;AAEA;AACA,IAAA,IAAIc,KAAK,CAACI,MAAM,KAAK,CAAC,EAAE;MACtB,OAAO/B,MAAM,CAACN,KAAK,CAAC;AACtB,IAAA;AAEA,IAAA,MAAMI,MAAM,GAAG6B,KAAK,CAAC,CAAC,CAAC;IACvB,MAAMK,UAAU,GAAG,CAAAjC,EAAA,GAAA0B,OAAO,CAAC9B,aAAa,MAAA,IAAA,IAAAI,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAGnC,GAAG,CAAC;AAE/C,IAAA,QAAQkC,MAAM;AACZ,MAAA,KAAK,QAAQ;AAAE,QAAA;UACb,IAAI,OAAOJ,KAAK,KAAK,QAAQ,EAAE,OAAOM,MAAM,CAACN,KAAK,CAAC;UACnD,OAAOD,YAAY,CAACC,KAAK,EAAEpB,MAAM,EAAE0D,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,MAAA,GAAA,MAAA,GAAVA,UAAU,CAAEC,MAAM,CAAC;AACxD,QAAA;AAEA,MAAA,KAAK,MAAM;AAAE,QAAA;UACX,OAAOhC,UAAU,CAACP,KAAK,EAAEpB,MAAM,EAAE0D,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,MAAA,GAAA,MAAA,GAAVA,UAAU,CAAE9B,IAAI,CAAC;AACpD,QAAA;AAEA,MAAA,KAAK,UAAU;AAAE,QAAA;UACf,IAAI,OAAOR,KAAK,KAAK,QAAQ,EAAE,OAAOM,MAAM,CAACN,KAAK,CAAC;AACnD,UAAA,MAAMY,QAAQ,GAAG,CAAA,CAAA4B,EAAA,GAAAF,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,MAAA,GAAA,MAAA,GAAVA,UAAU,CAAE1B,QAAQ,MAAA,IAAA,IAAA4B,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAE5B,QAAQ,KAAI,KAAK;UACxD,OAAOD,cAAc,CAACX,KAAK,EAAEpB,MAAM,EAAEgC,QAAQ,EAAE0B,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,MAAA,GAAA,MAAA,GAAVA,UAAU,CAAE1B,QAAQ,CAAC;AACtE,QAAA;AAEA,MAAA,KAAK,QAAQ;AAAE,QAAA;UACb,IAAI,OAAOZ,KAAK,KAAK,QAAQ,EAAE,OAAOM,MAAM,CAACN,KAAK,CAAC;AACnD,UAAA,MAAMgB,OAAO,GAAGiB,KAAK,CAACQ,KAAK,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAACN,IAAI,EAAE;AAC/C,UAAA,OAAOtB,YAAY,CAACd,KAAK,EAAEgB,OAAO,CAAC;AACrC,QAAA;AAEA,MAAA,KAAK,QAAQ;AAAE,QAAA;AACb,UAAA,MAAMA,OAAO,GAAGiB,KAAK,CAACQ,KAAK,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAACN,IAAI,EAAE;UAC/C,OAAOR,YAAY,CAACtB,MAAM,CAACN,KAAK,CAAC,EAAEgB,OAAO,CAAC;AAC7C,QAAA;AAEA,MAAA;QACE,OAAOV,MAAM,CAACN,KAAK,CAAC;AACxB;AACF,EAAA,CAAC,CAAC;AACJ,CAAC;AAED;;AAEG;AACI,MAAM2C,kBAAkB,GAAGA,CAChCzE,GAAW,EACXW,SAA+B,EAC/BkD,OAA4B,EAC5BnD,MAAA,GAAiB,OAAO,KACd;AACV,EAAA,MAAMgE,QAAQ,GAAGpD,cAAc,CAACX,SAAS,EAAEX,GAAG,CAAC;AAE/C;EACA,IAAI0E,QAAQ,KAAK9C,SAAS,EAAE;AAC1B,IAAA,IAAIiC,OAAO,IAAIA,OAAO,CAAC5D,YAAY,EAAE;MACnC,OAAO0D,WAAW,CAACE,OAAO,CAAC5D,YAAY,EAAE4D,OAAO,EAAEnD,MAAM,CAAC;AAC3D,IAAA;AACA,IAAA,OAAOV,GAAG;AACZ,EAAA;EAEA,OAAO2D,WAAW,CAACvB,MAAM,CAACsC,QAAQ,CAAC,EAAEb,OAAO,EAAEnD,MAAM,CAAC;AACvD,ECxMO,MAAMiE,cAAc,GAAGC,GAAA,IAAA;EAAA,MAAAxE,CAAA,GAAAC,iBAAA,CAAA,CAAA,CAAA;AAG5B,EAAA,MAAA;IAAAjB,aAAA;AAAAC,IAAAA;GAAA,GAAmCK,0BAA0B,EAAE;AAC/D,EAAA,MAAAiB,SAAA,GACQtB,OAAO,CAACD,aAAa,CAAC;AAE7B,EAAA,IAAAoB,EAAA;EAAA,IAAAJ,CAAA,CAAA,CAAA,CAAA,KAAAwE,GAAA,IAAAxE,CAAA,QAAAhB,aAAA,IAAAgB,CAAA,CAAA,CAAA,CAAA,KAAAO,SAAA,EAAA;IAGQH,EAAA,GAAAA,CAAAR,GAAA,EAAA6D,OAAA,KACLY,kBAAkB,CAChBG,GAAG,GAAH,CAAA,EAASA,GAAG,CAAA,CAAA,EAAI5E,GAAG,CAAA,CAAQ,GAA3BA,GAA2B,EAC3BW,SAAS,EACTkD,OAAO,EACPzE,aAAa,CACd;AAAAgB,IAAAA,CAAA,MAAAwE,GAAA;AAAAxE,IAAAA,CAAA,MAAAhB,aAAA;AAAAgB,IAAAA,CAAA,MAAAO,SAAA;AAAAP,IAAAA,CAAA,MAAAI,EAAA;AAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAA,GAAAJ,CAAA,CAAA,CAAA,CAAA;AAAA,EAAA;EAPL,MAAAyE,CAAA,GACErE,EAMG;AAC8B,EAAA,IAAAC,EAAA;AAAA,EAAA,IAAAL,CAAA,CAAA,CAAA,CAAA,KAAAhB,aAAA,IAAAgB,CAAA,QAAAyE,CAAA,EAAA;IAE5BpE,EAAA,GAAA;MAAAoE,CAAA;AAAAnE,MAAAA,MAAA,EAAatB;KAAe;AAAAgB,IAAAA,CAAA,MAAAhB,aAAA;AAAAgB,IAAAA,CAAA,MAAAyE,CAAA;AAAAzE,IAAAA,CAAA,MAAAK,EAAA;AAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAA,GAAAL,CAAA,CAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAA5BK,EAA4B;AAAA,ECrBrC;;AAEG;AACI,MAAMqE,sBAAsB,GAAGA,CACpCnE,SAA+B,EAC/BD,MAAA,GAAiB,IAAI,KACuB;AAC5C,EAAA,MAAMmE,CAAC,GAAsBA,CAAC7E,GAAG,EAAE6D,OAAO,KAAI;AAC5C,IAAA,OAAOY,kBAAkB,CAACzE,GAAG,EAAEW,SAAS,EAAEkD,OAAO,CAAC;EACpD,CAAC;EAED,OAAO;IAAEgB,CAAC;AAAEnE,IAAAA;GAAQ;AACtB,ECLA;;;;;;AAMG;AACI,MAAMqE,iBAAiB,GAAGC,EAAA,IAAA;EAAA,MAAA5E,CAAA,GAAAC,iBAAA,CAAA,CAAA,CAAA;AAC/B,EAAA,MAAA;AAAAwE,IAAAA;GAAA,GAAcF,cAAc,CAACK,EAAE,CAAC;AAAA,EAAA,IAAAxE,EAAA;EAAA,IAAAJ,CAAA,QAAAyE,CAAA,EAAA;AAG9BrE,IAAAA,EAAA,GAAAA,CAAAoD,IAAA,EAAAC,OAAA,KAAA;AACE,MAAA,IAAI,CAACD,IAAI,EAAA;AAAA,QAAA,OAAS,EAAE;AAAA,MAAA;AAAA,MAAA,OACbiB,CAAC,CAACjB,IAAI,EAAEC,OAAO,CAAC;IAAA,CACxB;AAAAzD,IAAAA,CAAA,MAAAyE,CAAA;AAAAzE,IAAAA,CAAA,MAAAI,EAAA;AAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAA,GAAAJ,CAAA,CAAA,CAAA,CAAA;AAAA,EAAA;EAJH,MAAA6E,YAAA,GAAqBzE,EAMpB;AAAA,EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAA6E,YAAA,EAAA;IAEMxE,EAAA,GAAA;MAAAwE,YAAA;AAAAJ,MAAAA,CAAA,EAAmBI;KAAc;AAAA7E,IAAAA,CAAA,MAAA6E,YAAA;AAAA7E,IAAAA,CAAA,MAAAK,EAAA;AAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAA,GAAAL,CAAA,CAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAAjCK,EAAiC;AAAA"}
@@ -1,4 +1,4 @@
1
- import {c}from'react/compiler-runtime';import {atomStateGenerator}from'@gaddario98/react-state';// Lazy initialization to avoid side effects at module load time
1
+ import {c}from'react/compiler-runtime';import {atomStateGenerator}from'../state/index.mjs';// Lazy initialization to avoid side effects at module load time
2
2
  const _localizationConfig = {
3
3
  currentLocale: 'it',
4
4
  locales: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../localization/config.ts","../../localization/core.ts","../../localization/hooks.ts","../../localization/server.ts","../../localization/useTranslatedText.ts"],"sourcesContent":["import { atomStateGenerator } from '@gaddario98/react-state'\nimport type { Locale, TranslationResources } from './types'\n\nexport interface LocalizationConfigProps {\n currentLocale: Locale\n locales: Record<Locale, TranslationResources>\n}\n\n// Lazy initialization to avoid side effects at module load time\nconst _localizationConfig: LocalizationConfigProps = {\n currentLocale: 'it',\n locales: {\n it: {},\n },\n}\n\nexport const {\n atom: localizationConfigAtom,\n useValue: useLocalizationConfigValue,\n useState: useLocalizationConfigState,\n useReset: useLocalizationConfigReset,\n} = atomStateGenerator<LocalizationConfigProps>({\n key: 'localizationConfig',\n defaultValue: _localizationConfig,\n persist: true,\n})\n\n/**\n * Hook per gestire le operazioni di localization\n */\nexport const useLocalizationActions = () => {\n const [config, setConfig] = useLocalizationConfigState()\n return {\n /**\n * Aggiunge o aggiorna una locale con le sue risorse\n */\n addLocale: (locale: Locale, resources: TranslationResources) => {\n setConfig({\n ...config,\n locales: {\n ...config.locales,\n [locale]: resources,\n },\n })\n },\n\n /**\n * Switch alla locale specificata\n */\n switchLocale: (locale: Locale) => {\n setConfig({\n ...config,\n currentLocale: locale,\n })\n },\n\n /**\n * Inizializza con una locale di default\n */\n initializeLocale: (locale: Locale, resources: TranslationResources) => {\n setConfig({\n currentLocale: locale,\n locales: {\n [locale]: resources,\n },\n })\n },\n }\n}\n","import type { TranslationOptions, TranslationResources } from './types'\n\n/**\n * Risolve una chiave di traduzione dalle risorse fornite.\n * Supporta la notazione punto per oggetti annidati (es. 'common.buttons.save').\n */\nconst getNestedValue = (obj: any, key: string): string | undefined => {\n return key.split('.').reduce((acc, part) => {\n return acc && acc[part] !== undefined ? acc[part] : undefined\n }, obj)\n}\n\n/**\n * Formatta un numero secondo le opzioni specificate\n */\nconst formatNumber = (\n value: number,\n locale: string = 'en-US',\n formatOptions?: Intl.NumberFormatOptions\n): string => {\n try {\n return new Intl.NumberFormat(locale, formatOptions).format(value)\n } catch {\n return String(value)\n }\n}\n\n/**\n * Formatta una data secondo le opzioni specificate\n */\nconst formatDate = (\n value: Date | number | string,\n locale: string = 'en-US',\n formatOptions?: Intl.DateTimeFormatOptions\n): string => {\n try {\n const date = value instanceof Date ? value : new Date(value)\n return new Intl.DateTimeFormat(locale, formatOptions).format(date)\n } catch {\n return String(value)\n }\n}\n\n/**\n * Formatta una valuta secondo le opzioni specificate\n */\nconst formatCurrency = (\n value: number,\n locale: string = 'en-US',\n currency: string = 'USD',\n formatOptions?: Intl.NumberFormatOptions\n): string => {\n try {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n ...formatOptions,\n }).format(value)\n } catch {\n return String(value)\n }\n}\n\n/**\n * Gestisce la pluralizzazione secondo ICU MessageFormat\n * Formato: {{count, plural, =0{nessuno} one{un elemento} other{# elementi}}}\n */\nconst handlePlural = (count: number, pattern: string): string => {\n // Estrae le varie forme: =0{...} one{...} few{...} many{...} other{...}\n const forms: Record<string, string> = {}\n const regex = /(=\\d+|zero|one|two|few|many|other)\\{([^}]*)\\}/g\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(pattern)) !== null) {\n forms[match[1]] = match[2]\n }\n\n // Controlla forme esatte prima (=0, =1, etc.)\n const exactForm = forms[`=${count}`]\n if (exactForm !== undefined) {\n return exactForm.replace(/#/g, String(count))\n }\n\n // Regole di pluralizzazione semplificate (inglese-based)\n let pluralForm: string\n if (count === 0 && forms.zero) {\n pluralForm = forms.zero\n } else if (count === 1 && forms.one) {\n pluralForm = forms.one\n } else if (count === 2 && forms.two) {\n pluralForm = forms.two\n } else if (forms.other) {\n pluralForm = forms.other\n } else {\n pluralForm = pattern\n }\n\n // Sostituisce # con il conteggio\n return pluralForm.replace(/#/g, String(count))\n}\n\n/**\n * Gestisce la selezione secondo ICU MessageFormat\n * Formato: {{gender, select, male{lui} female{lei} other{loro}}}\n */\nconst handleSelect = (value: string, pattern: string): string => {\n const forms: Record<string, string> = {}\n const regex = /(\\w+)\\{([^}]*)\\}/g\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(pattern)) !== null) {\n forms[match[1]] = match[2]\n }\n\n return forms[value] || forms.other || pattern\n}\n\n/**\n * Effettua l'interpolazione avanzata dei parametri nella stringa di traduzione.\n * Supporta:\n * - Interpolazione semplice: {{name}}\n * - Formattazione numeri: {{count, number}}\n * - Formattazione date: {{date, date}}\n * - Formattazione valuta: {{price, currency}}\n * - Pluralizzazione: {{count, plural, =0{nessuno} one{un elemento} other{# elementi}}}\n * - Selezione: {{gender, select, male{lui} female{lei} other{loro}}}\n */\nconst interpolate = (\n text: string,\n options?: TranslationOptions,\n locale: string = 'en-US'\n): string => {\n if (!options) return text\n\n // Pattern per catturare interpolazioni complesse: {{key}} o {{key, format, pattern}}\n return text.replace(/\\{\\{([^}]+)\\}\\}/g, (match, content) => {\n const parts = content.split(',').map((p: string) => p.trim())\n const key = parts[0]\n const value = options[key]\n\n if (value === undefined) {\n return match // Mantiene il placeholder se il valore non esiste\n }\n\n // Nessun formato specificato - interpolazione semplice\n if (parts.length === 1) {\n return String(value)\n }\n\n const format = parts[1]\n const formatOpts = options.formatOptions?.[key]\n\n switch (format) {\n case 'number': {\n if (typeof value !== 'number') return String(value)\n return formatNumber(value, locale, formatOpts?.number)\n }\n\n case 'date': {\n return formatDate(value, locale, formatOpts?.date)\n }\n\n case 'currency': {\n if (typeof value !== 'number') return String(value)\n const currency = formatOpts?.currency?.currency || 'USD'\n return formatCurrency(value, locale, currency, formatOpts?.currency)\n }\n\n case 'plural': {\n if (typeof value !== 'number') return String(value)\n const pattern = parts.slice(2).join(',').trim()\n return handlePlural(value, pattern)\n }\n\n case 'select': {\n const pattern = parts.slice(2).join(',').trim()\n return handleSelect(String(value), pattern)\n }\n\n default:\n return String(value)\n }\n })\n}\n\n/**\n * Funzione core per risolvere una traduzione.\n */\nexport const resolveTranslation = (\n key: string,\n resources: TranslationResources,\n options?: TranslationOptions,\n locale: string = 'en-US'\n): string => {\n const rawValue = getNestedValue(resources, key)\n\n // Se non trovato, usa defaultValue se presente, altrimenti la chiave stessa\n if (rawValue === undefined) {\n if (options && options.defaultValue) {\n return interpolate(options.defaultValue, options, locale)\n }\n return key\n }\n\n return interpolate(String(rawValue), options, locale)\n}\n","import { useMemo } from 'react'\nimport { useLocalizationConfigValue } from './config'\nimport { resolveTranslation } from './core';\nimport type { Locale, TranslateFunction } from './types'\n\nexport const useTranslation = (\n _ns?: string,\n): { t: TranslateFunction; locale: Locale } => {\n const { currentLocale, locales } = useLocalizationConfigValue()\n const resources = useMemo(\n () => locales[currentLocale],\n [locales, currentLocale],\n )\n\n const t = useMemo<TranslateFunction>(() => {\n return (key, options) =>\n resolveTranslation(\n _ns ? `${_ns}.${key}` : key,\n resources,\n options,\n currentLocale,\n )\n }, [resources, currentLocale, _ns])\n\n return { t, locale: currentLocale }\n}\n","import { resolveTranslation } from './core'\nimport type { Locale, TranslateFunction, TranslationResources } from './types'\n\n/**\n * Crea un'istanza di traduzione per l'uso lato server (o fuori dai componenti React).\n */\nexport const createServerTranslator = (\n resources: TranslationResources,\n locale: Locale = 'it', // Default locale hardcoded per ora, o passato come argomento\n): { t: TranslateFunction; locale: Locale } => {\n const t: TranslateFunction = (key, options) => {\n return resolveTranslation(key, resources, options)\n }\n\n return { t, locale }\n}\n","import { useCallback } from 'react'\nimport { useTranslation } from './hooks'\nimport type { TranslationOptions } from './types'\n\n// Mantengo l'interfaccia TranslationFunction per compatibilità\nexport type TranslationFunction = (\n key: string,\n options?: TranslationOptions,\n) => string\n\n/**\n * Hook per tradurre testi che si adatta al sistema di traduzione interno.\n * Wrapper di retro-compatibilità per useTranslation.\n *\n * @param ns - Namespace opzionale (ignorato nella nuova implementazione)\n * @returns Un oggetto con la funzione traslateText (e alias t)\n */\nexport const useTranslatedText = (ns?: string) => {\n const { t } = useTranslation(ns)\n\n const traslateText = useCallback(\n (text: string, options?: TranslationOptions) => {\n if (!text) return ''\n return t(text, options)\n },\n [t],\n )\n\n return { traslateText, t: traslateText }\n}\n"],"names":["_localizationConfig","currentLocale","locales","it","atom","localizationConfigAtom","useValue","useLocalizationConfigValue","useState","useLocalizationConfigState","useReset","useLocalizationConfigReset","atomStateGenerator","key","defaultValue","persist","useLocalizationActions","$","_c","config","setConfig","t0","t1","locale","resources","Object","assign","locale_0","t2","locale_1","resources_0","t3","addLocale","switchLocale","initializeLocale","getNestedValue","obj","split","reduce","acc","part","undefined","formatNumber","value","formatOptions","Intl","NumberFormat","format","_a","String","formatDate","date","Date","DateTimeFormat","formatCurrency","currency","style","handlePlural","count","pattern","forms","regex","match","exec","exactForm","replace","pluralForm","zero","one","two","other","handleSelect","interpolate","text","options","content","parts","map","p","trim","length","formatOpts","number","_b","slice","join","resolveTranslation","rawValue","useTranslation","_ns","t","createServerTranslator","useTranslatedText","ns","traslateText"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../localization/config.ts","../../localization/core.ts","../../localization/hooks.ts","../../localization/server.ts","../../localization/useTranslatedText.ts"],"sourcesContent":["import { atomStateGenerator } from '@gaddario98/react-state'\nimport type { Locale, TranslationResources } from './types'\n\nexport interface LocalizationConfigProps {\n currentLocale: Locale\n locales: Record<Locale, TranslationResources>\n}\n\n// Lazy initialization to avoid side effects at module load time\nconst _localizationConfig: LocalizationConfigProps = {\n currentLocale: 'it',\n locales: {\n it: {},\n },\n}\n\nexport const {\n atom: localizationConfigAtom,\n useValue: useLocalizationConfigValue,\n useState: useLocalizationConfigState,\n useReset: useLocalizationConfigReset,\n} = atomStateGenerator<LocalizationConfigProps>({\n key: 'localizationConfig',\n defaultValue: _localizationConfig,\n persist: true,\n})\n\n/**\n * Hook per gestire le operazioni di localization\n */\nexport const useLocalizationActions = () => {\n const [config, setConfig] = useLocalizationConfigState()\n return {\n /**\n * Aggiunge o aggiorna una locale con le sue risorse\n */\n addLocale: (locale: Locale, resources: TranslationResources) => {\n setConfig({\n ...config,\n locales: {\n ...config.locales,\n [locale]: resources,\n },\n })\n },\n\n /**\n * Switch alla locale specificata\n */\n switchLocale: (locale: Locale) => {\n setConfig({\n ...config,\n currentLocale: locale,\n })\n },\n\n /**\n * Inizializza con una locale di default\n */\n initializeLocale: (locale: Locale, resources: TranslationResources) => {\n setConfig({\n currentLocale: locale,\n locales: {\n [locale]: resources,\n },\n })\n },\n }\n}\n","import type { TranslationOptions, TranslationResources } from './types'\n\n/**\n * Risolve una chiave di traduzione dalle risorse fornite.\n * Supporta la notazione punto per oggetti annidati (es. 'common.buttons.save').\n */\nconst getNestedValue = (obj: any, key: string): string | undefined => {\n return key.split('.').reduce((acc, part) => {\n return acc && acc[part] !== undefined ? acc[part] : undefined\n }, obj)\n}\n\n/**\n * Formatta un numero secondo le opzioni specificate\n */\nconst formatNumber = (\n value: number,\n locale: string = 'en-US',\n formatOptions?: Intl.NumberFormatOptions\n): string => {\n try {\n return new Intl.NumberFormat(locale, formatOptions).format(value)\n } catch {\n return String(value)\n }\n}\n\n/**\n * Formatta una data secondo le opzioni specificate\n */\nconst formatDate = (\n value: Date | number | string,\n locale: string = 'en-US',\n formatOptions?: Intl.DateTimeFormatOptions\n): string => {\n try {\n const date = value instanceof Date ? value : new Date(value)\n return new Intl.DateTimeFormat(locale, formatOptions).format(date)\n } catch {\n return String(value)\n }\n}\n\n/**\n * Formatta una valuta secondo le opzioni specificate\n */\nconst formatCurrency = (\n value: number,\n locale: string = 'en-US',\n currency: string = 'USD',\n formatOptions?: Intl.NumberFormatOptions\n): string => {\n try {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n ...formatOptions,\n }).format(value)\n } catch {\n return String(value)\n }\n}\n\n/**\n * Gestisce la pluralizzazione secondo ICU MessageFormat\n * Formato: {{count, plural, =0{nessuno} one{un elemento} other{# elementi}}}\n */\nconst handlePlural = (count: number, pattern: string): string => {\n // Estrae le varie forme: =0{...} one{...} few{...} many{...} other{...}\n const forms: Record<string, string> = {}\n const regex = /(=\\d+|zero|one|two|few|many|other)\\{([^}]*)\\}/g\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(pattern)) !== null) {\n forms[match[1]] = match[2]\n }\n\n // Controlla forme esatte prima (=0, =1, etc.)\n const exactForm = forms[`=${count}`]\n if (exactForm !== undefined) {\n return exactForm.replace(/#/g, String(count))\n }\n\n // Regole di pluralizzazione semplificate (inglese-based)\n let pluralForm: string\n if (count === 0 && forms.zero) {\n pluralForm = forms.zero\n } else if (count === 1 && forms.one) {\n pluralForm = forms.one\n } else if (count === 2 && forms.two) {\n pluralForm = forms.two\n } else if (forms.other) {\n pluralForm = forms.other\n } else {\n pluralForm = pattern\n }\n\n // Sostituisce # con il conteggio\n return pluralForm.replace(/#/g, String(count))\n}\n\n/**\n * Gestisce la selezione secondo ICU MessageFormat\n * Formato: {{gender, select, male{lui} female{lei} other{loro}}}\n */\nconst handleSelect = (value: string, pattern: string): string => {\n const forms: Record<string, string> = {}\n const regex = /(\\w+)\\{([^}]*)\\}/g\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(pattern)) !== null) {\n forms[match[1]] = match[2]\n }\n\n return forms[value] || forms.other || pattern\n}\n\n/**\n * Effettua l'interpolazione avanzata dei parametri nella stringa di traduzione.\n * Supporta:\n * - Interpolazione semplice: {{name}}\n * - Formattazione numeri: {{count, number}}\n * - Formattazione date: {{date, date}}\n * - Formattazione valuta: {{price, currency}}\n * - Pluralizzazione: {{count, plural, =0{nessuno} one{un elemento} other{# elementi}}}\n * - Selezione: {{gender, select, male{lui} female{lei} other{loro}}}\n */\nconst interpolate = (\n text: string,\n options?: TranslationOptions,\n locale: string = 'en-US'\n): string => {\n if (!options) return text\n\n // Pattern per catturare interpolazioni complesse: {{key}} o {{key, format, pattern}}\n return text.replace(/\\{\\{([^}]+)\\}\\}/g, (match, content) => {\n const parts = content.split(',').map((p: string) => p.trim())\n const key = parts[0]\n const value = options[key]\n\n if (value === undefined) {\n return match // Mantiene il placeholder se il valore non esiste\n }\n\n // Nessun formato specificato - interpolazione semplice\n if (parts.length === 1) {\n return String(value)\n }\n\n const format = parts[1]\n const formatOpts = options.formatOptions?.[key]\n\n switch (format) {\n case 'number': {\n if (typeof value !== 'number') return String(value)\n return formatNumber(value, locale, formatOpts?.number)\n }\n\n case 'date': {\n return formatDate(value, locale, formatOpts?.date)\n }\n\n case 'currency': {\n if (typeof value !== 'number') return String(value)\n const currency = formatOpts?.currency?.currency || 'USD'\n return formatCurrency(value, locale, currency, formatOpts?.currency)\n }\n\n case 'plural': {\n if (typeof value !== 'number') return String(value)\n const pattern = parts.slice(2).join(',').trim()\n return handlePlural(value, pattern)\n }\n\n case 'select': {\n const pattern = parts.slice(2).join(',').trim()\n return handleSelect(String(value), pattern)\n }\n\n default:\n return String(value)\n }\n })\n}\n\n/**\n * Funzione core per risolvere una traduzione.\n */\nexport const resolveTranslation = (\n key: string,\n resources: TranslationResources,\n options?: TranslationOptions,\n locale: string = 'en-US'\n): string => {\n const rawValue = getNestedValue(resources, key)\n\n // Se non trovato, usa defaultValue se presente, altrimenti la chiave stessa\n if (rawValue === undefined) {\n if (options && options.defaultValue) {\n return interpolate(options.defaultValue, options, locale)\n }\n return key\n }\n\n return interpolate(String(rawValue), options, locale)\n}\n","import { useMemo } from 'react'\nimport { useLocalizationConfigValue } from './config'\nimport { resolveTranslation } from './core';\nimport type { Locale, TranslateFunction } from './types'\n\nexport const useTranslation = (\n _ns?: string,\n): { t: TranslateFunction; locale: Locale } => {\n const { currentLocale, locales } = useLocalizationConfigValue()\n const resources = useMemo(\n () => locales[currentLocale],\n [locales, currentLocale],\n )\n\n const t = useMemo<TranslateFunction>(() => {\n return (key, options) =>\n resolveTranslation(\n _ns ? `${_ns}.${key}` : key,\n resources,\n options,\n currentLocale,\n )\n }, [resources, currentLocale, _ns])\n\n return { t, locale: currentLocale }\n}\n","import { resolveTranslation } from './core'\nimport type { Locale, TranslateFunction, TranslationResources } from './types'\n\n/**\n * Crea un'istanza di traduzione per l'uso lato server (o fuori dai componenti React).\n */\nexport const createServerTranslator = (\n resources: TranslationResources,\n locale: Locale = 'it', // Default locale hardcoded per ora, o passato come argomento\n): { t: TranslateFunction; locale: Locale } => {\n const t: TranslateFunction = (key, options) => {\n return resolveTranslation(key, resources, options)\n }\n\n return { t, locale }\n}\n","import { useCallback } from 'react'\nimport { useTranslation } from './hooks'\nimport type { TranslationOptions } from './types'\n\n// Mantengo l'interfaccia TranslationFunction per compatibilità\nexport type TranslationFunction = (\n key: string,\n options?: TranslationOptions,\n) => string\n\n/**\n * Hook per tradurre testi che si adatta al sistema di traduzione interno.\n * Wrapper di retro-compatibilità per useTranslation.\n *\n * @param ns - Namespace opzionale (ignorato nella nuova implementazione)\n * @returns Un oggetto con la funzione traslateText (e alias t)\n */\nexport const useTranslatedText = (ns?: string) => {\n const { t } = useTranslation(ns)\n\n const traslateText = useCallback(\n (text: string, options?: TranslationOptions) => {\n if (!text) return ''\n return t(text, options)\n },\n [t],\n )\n\n return { traslateText, t: traslateText }\n}\n"],"names":["_localizationConfig","currentLocale","locales","it","atom","localizationConfigAtom","useValue","useLocalizationConfigValue","useState","useLocalizationConfigState","useReset","useLocalizationConfigReset","atomStateGenerator","key","defaultValue","persist","useLocalizationActions","$","_c","config","setConfig","t0","t1","locale","resources","Object","assign","locale_0","t2","locale_1","resources_0","t3","addLocale","switchLocale","initializeLocale","getNestedValue","obj","split","reduce","acc","part","undefined","formatNumber","value","formatOptions","Intl","NumberFormat","format","_a","String","formatDate","date","Date","DateTimeFormat","formatCurrency","currency","style","handlePlural","count","pattern","forms","regex","match","exec","exactForm","replace","pluralForm","zero","one","two","other","handleSelect","interpolate","text","options","content","parts","map","p","trim","length","formatOpts","number","_b","slice","join","resolveTranslation","rawValue","useTranslation","_ns","t","createServerTranslator","useTranslatedText","ns","traslateText"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as _gaddario98_react_form from '@gaddario98/react-form';
3
- import { FieldValues, FormManagerConfig, Submit, SetValueFunction, FormManager, SubmitKeysArg, FormElements } from '@gaddario98/react-form';
4
- import { QueriesArray, MultipleQueryResponse, AllMutation, QueryDefinition, MutationConfig, QueryProps, QueryAtIndex, ExtractQuery } from '@gaddario98/react-queries';
2
+ import * as _gaddario98_react_form from '../form/index';
3
+ import { FieldValues, FormManagerConfig, Submit, SetValueFunction, FormManager, SubmitKeysArg, FormElements } from '../form/index';
4
+ import { QueriesArray, MultipleQueryResponse, AllMutation, QueryDefinition, MutationConfig, QueryProps, QueryAtIndex, ExtractQuery } from '../queries/index';
5
5
  import { DeepKeys, DeepValue } from '@tanstack/react-form';
6
6
  import { ComponentProps } from 'react';
7
7
  import * as jotai from 'jotai';
8
- import { AuthState } from '@gaddario98/react-auth';
8
+ import { AuthState } from '../auth/index';
9
9
  import * as jotai_family from 'jotai-family';
10
10
 
11
11
  /**
@@ -1,4 +1,4 @@
1
- 'use strict';var jsxRuntime=require('react/jsx-runtime'),react=require('react'),reactQueries=require('@gaddario98/react-queries'),jotai=require('jotai'),compilerRuntime=require('react/compiler-runtime'),reactState=require('@gaddario98/react-state'),equal=require('fast-deep-equal'),reactForm=require('@gaddario98/react-form'),jotaiFamily=require('jotai-family'),reactQuery=require('@tanstack/react-query');/******************************************************************************
1
+ 'use strict';var jsxRuntime=require('react/jsx-runtime'),react=require('react'),index_ts=require('../queries/index.js'),jotai=require('jotai'),compilerRuntime=require('react/compiler-runtime'),index_ts$2=require('../state/index.js'),equal=require('fast-deep-equal'),index_ts$1=require('../form/index.js'),jotaiFamily=require('jotai-family'),reactQuery=require('@tanstack/react-query');/******************************************************************************
2
2
  Copyright (c) Microsoft Corporation.
3
3
 
4
4
  Permission to use, copy, modify, and/or distribute this software for any
@@ -206,13 +206,13 @@ const usePageValues = ({
206
206
  }) => {
207
207
  const {
208
208
  get: getApiValues
209
- } = reactQueries.useApiValues({
209
+ } = index_ts.useApiValues({
210
210
  scopeId: pageId
211
211
  });
212
212
  const {
213
213
  get: getFormValues,
214
214
  set: setFormValues
215
- } = reactForm.useFormValues({
215
+ } = index_ts$1.useFormValues({
216
216
  formId: pageId
217
217
  });
218
218
  const subscriptions = react.useRef(new Map());
@@ -1378,7 +1378,7 @@ const {
1378
1378
  useValue: usePageConfigValue,
1379
1379
  useState: usePageConfigState,
1380
1380
  useReset: usePageConfigReset
1381
- } = reactState.atomStateGenerator({
1381
+ } = index_ts$2.atomStateGenerator({
1382
1382
  key: "pageConfig",
1383
1383
  defaultValue: _pageConfig,
1384
1384
  persist: false
@@ -1498,7 +1498,7 @@ function useFormData({
1498
1498
  var _a_0;
1499
1499
  const {
1500
1500
  queryClient
1501
- } = reactQueries.useApiConfigValue();
1501
+ } = index_ts.useApiConfigValue();
1502
1502
  const [defaultValueQuery, setDefaultValueQuery] = react.useState(form === null || form === void 0 ? void 0 : form.defaultValues);
1503
1503
  react.useEffect(() => {
1504
1504
  if (!(form === null || form === void 0 ? void 0 : form.defaultValueQueryKey)) {
@@ -1531,7 +1531,7 @@ function useFormData({
1531
1531
  pageId
1532
1532
  });
1533
1533
  // Call useFormManager hook at top level (maintains hook order)
1534
- const rawFormData = reactForm.useFormManager(Object.assign(Object.assign({}, form), {
1534
+ const rawFormData = index_ts$1.useFormManager(Object.assign(Object.assign({}, form), {
1535
1535
  data: mappedFormData,
1536
1536
  ns,
1537
1537
  submit: formSubmit,
@@ -1657,7 +1657,7 @@ const usePageConfig = t0 => {
1657
1657
  } else {
1658
1658
  t7 = $[17];
1659
1659
  }
1660
- reactQueries.useApi(processedQueries, t7);
1660
+ index_ts.useApi(processedQueries, t7);
1661
1661
  let t8;
1662
1662
  if ($[18] !== pageId || $[19] !== viewSettings) {
1663
1663
  t8 = {
@@ -1959,7 +1959,7 @@ const MetadataManager = MetadataManagerImpl;const PageGenerator = _a => {
1959
1959
  const layoutBody = react.useMemo(() => body, [body]);
1960
1960
  const store = jotai.useStore();
1961
1961
  const refreshQueries = react.useCallback(() => {
1962
- const val = store.get(reactQueries.queriesAtom);
1962
+ const val = store.get(index_ts.queriesAtom);
1963
1963
  Object.values(val).forEach(query => {
1964
1964
  query.refetch();
1965
1965
  });