@douglasneuroinformatics/libui 3.0.0 → 3.0.1
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.
- package/dist/{chunk-6MDNYDO3.js → chunk-IGUNY5FU.js} +2 -2
- package/dist/{chunk-A6FWMB7V.js → chunk-ZY7IYWWD.js} +24 -16
- package/dist/chunk-ZY7IYWWD.js.map +1 -0
- package/dist/components.d.ts +1 -1
- package/dist/components.js +2 -2
- package/dist/douglasneuroinformatics-libui-3.0.1.tgz +0 -0
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.js +2 -2
- package/dist/i18n.d.ts +8 -4
- package/dist/i18n.js +3 -3
- package/dist/{types-CjAJvRys.d.ts → types-DHEs3SFX.d.ts} +1 -1
- package/package.json +1 -1
- package/src/i18n/store.ts +28 -15
- package/src/i18n/types.ts +1 -1
- package/dist/chunk-A6FWMB7V.js.map +0 -1
- package/dist/douglasneuroinformatics-libui-3.0.0.tgz +0 -0
- /package/dist/{chunk-6MDNYDO3.js.map → chunk-IGUNY5FU.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
translationStore
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZY7IYWWD.js";
|
|
4
4
|
import {
|
|
5
5
|
isBrowser
|
|
6
6
|
} from "./chunk-IX6RFIQL.js";
|
|
@@ -334,4 +334,4 @@ export {
|
|
|
334
334
|
useTranslation,
|
|
335
335
|
useWindowSize
|
|
336
336
|
};
|
|
337
|
-
//# sourceMappingURL=chunk-
|
|
337
|
+
//# sourceMappingURL=chunk-IGUNY5FU.js.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// src/i18n/store.ts
|
|
2
|
+
import { get } from "lodash-es";
|
|
2
3
|
import { createStore } from "zustand/vanilla";
|
|
3
4
|
|
|
4
5
|
// src/i18n/translations/libui.json
|
|
@@ -167,25 +168,32 @@ var translationStore = createStore((set) => ({
|
|
|
167
168
|
resolvedLanguage: "en",
|
|
168
169
|
translations: { libui: libui_default }
|
|
169
170
|
}));
|
|
170
|
-
var
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
translationStore.setState({
|
|
177
|
-
fallbackLanguage: fallbackLanguage ?? state.fallbackLanguage,
|
|
178
|
-
isInitialized: true,
|
|
179
|
-
resolvedLanguage: defaultLanguage ?? state.resolvedLanguage,
|
|
180
|
-
translations: {
|
|
181
|
-
...state.translations,
|
|
182
|
-
...translations
|
|
171
|
+
var i18n = {
|
|
172
|
+
init: ({ defaultLanguage, fallbackLanguage, translations } = {}) => {
|
|
173
|
+
const state = translationStore.getState();
|
|
174
|
+
if (state.isInitialized) {
|
|
175
|
+
console.error("Cannot reinitialize translations store");
|
|
176
|
+
return;
|
|
183
177
|
}
|
|
184
|
-
|
|
178
|
+
translationStore.setState({
|
|
179
|
+
fallbackLanguage: fallbackLanguage ?? state.fallbackLanguage,
|
|
180
|
+
isInitialized: true,
|
|
181
|
+
resolvedLanguage: defaultLanguage ?? state.resolvedLanguage,
|
|
182
|
+
translations: {
|
|
183
|
+
...state.translations,
|
|
184
|
+
...translations
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
},
|
|
188
|
+
t: (arg) => {
|
|
189
|
+
const { fallbackLanguage, resolvedLanguage, translations } = translationStore.getState();
|
|
190
|
+
const value = typeof arg === "string" ? get(translations, arg, arg) : arg;
|
|
191
|
+
return value[resolvedLanguage] ?? value[fallbackLanguage];
|
|
192
|
+
}
|
|
185
193
|
};
|
|
186
194
|
|
|
187
195
|
export {
|
|
188
196
|
translationStore,
|
|
189
|
-
|
|
197
|
+
i18n
|
|
190
198
|
};
|
|
191
|
-
//# sourceMappingURL=chunk-
|
|
199
|
+
//# sourceMappingURL=chunk-ZY7IYWWD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/i18n/store.ts","../src/i18n/translations/libui.json"],"sourcesContent":["import { get } from 'lodash-es';\nimport type { SetOptional } from 'type-fest';\nimport { createStore } from 'zustand/vanilla';\n\nimport libui from '@/i18n/translations/libui.json';\n\nimport type { Language, TranslateFunction, Translations } from './types';\n\ntype InitOptions = {\n defaultLanguage?: Language;\n fallbackLanguage?: Language;\n translations?: SetOptional<Translations, 'libui'>;\n};\n\ntype I18N = {\n init: (options?: InitOptions) => void;\n t: TranslateFunction;\n};\n\nexport type TranslationStore = {\n changeLanguage: (language: Language) => void;\n fallbackLanguage: Language;\n isInitialized: boolean;\n resolvedLanguage: Language;\n translations: Translations;\n};\n\nexport const translationStore = createStore<TranslationStore>((set) => ({\n changeLanguage(language) {\n set({ resolvedLanguage: language });\n },\n fallbackLanguage: 'en',\n isInitialized: false,\n resolvedLanguage: 'en',\n translations: { libui }\n}));\n\nexport const i18n: I18N = {\n init: ({ defaultLanguage, fallbackLanguage, translations }: InitOptions = {}) => {\n const state = translationStore.getState();\n if (state.isInitialized) {\n console.error('Cannot reinitialize translations store');\n return;\n }\n translationStore.setState({\n fallbackLanguage: fallbackLanguage ?? state.fallbackLanguage,\n isInitialized: true,\n resolvedLanguage: defaultLanguage ?? state.resolvedLanguage,\n translations: {\n ...state.translations,\n ...translations\n }\n });\n },\n t: (arg) => {\n const { fallbackLanguage, resolvedLanguage, translations } = translationStore.getState();\n const value = typeof arg === 'string' ? (get(translations, arg, arg) as { [key: string]: string }) : arg;\n return value[resolvedLanguage] ?? value[fallbackLanguage];\n }\n};\n","{\n \"days\": {\n \"friday\": {\n \"en\": \"Friday\",\n \"fr\": \"Vendredi\"\n },\n \"monday\": {\n \"en\": \"Monday\",\n \"fr\": \"Lundi\"\n },\n \"saturday\": {\n \"en\": \"Saturday\",\n \"fr\": \"Samedi\"\n },\n \"sunday\": {\n \"en\": \"Sunday\",\n \"fr\": \"Dimanche\"\n },\n \"thursday\": {\n \"en\": \"Thursday\",\n \"fr\": \"Jeudi\"\n },\n \"tuesday\": {\n \"en\": \"Tuesday\",\n \"fr\": \"Mardi\"\n },\n \"wednesday\": {\n \"en\": \"Wednesday\",\n \"fr\": \"Mercredi\"\n }\n },\n \"form\": {\n \"append\": {\n \"en\": \"Append\",\n \"fr\": \"Ajouter\"\n },\n \"radioLabels\": {\n \"false\": {\n \"en\": \"False\",\n \"fr\": \"Faux\"\n },\n \"true\": {\n \"en\": \"True\",\n \"fr\": \"Vrai\"\n }\n },\n \"remove\": {\n \"en\": \"Remove\",\n \"fr\": \"Supprimer\"\n },\n \"required\": {\n \"en\": \"This field is required\",\n \"fr\": \"Ce champ est obligatoire\"\n },\n \"reset\": {\n \"en\": \"Reset\",\n \"fr\": \"Réinitialiser\"\n },\n \"submit\": {\n \"en\": \"Submit\",\n \"fr\": \"Soumettre\"\n }\n },\n \"months\": {\n \"april\": {\n \"en\": \"April\",\n \"fr\": \"Avril\"\n },\n \"august\": {\n \"en\": \"August\",\n \"fr\": \"Août\"\n },\n \"december\": {\n \"en\": \"December\",\n \"fr\": \"Décembre\"\n },\n \"february\": {\n \"en\": \"February\",\n \"fr\": \"Février\"\n },\n \"january\": {\n \"en\": \"January\",\n \"fr\": \"Janvier\"\n },\n \"july\": {\n \"en\": \"July\",\n \"fr\": \"Juillet\"\n },\n \"june\": {\n \"en\": \"June\",\n \"fr\": \"Juin\"\n },\n \"march\": {\n \"en\": \"March\",\n \"fr\": \"Mars\"\n },\n \"may\": {\n \"en\": \"May\",\n \"fr\": \"Mai\"\n },\n \"november\": {\n \"en\": \"November\",\n \"fr\": \"Novembre\"\n },\n \"october\": {\n \"en\": \"October\",\n \"fr\": \"Octobre\"\n },\n \"september\": {\n \"en\": \"September\",\n \"fr\": \"Septembre\"\n }\n },\n \"notifications\": {\n \"types\": {\n \"error\": {\n \"en\": \"Error\",\n \"fr\": \"Erreur\"\n },\n \"info\": {\n \"en\": \"Info\",\n \"fr\": \"Attention\"\n },\n \"success\": {\n \"en\": \"Success\",\n \"fr\": \"Succès\"\n },\n \"warning\": {\n \"en\": \"Warning\",\n \"fr\": \"Avertissement\"\n }\n }\n },\n \"pagination\": {\n \"info\": {\n \"en\": \"Showing {{first}} to {{last}} of {{total}} results\",\n \"fr\": \"Affichage de {{first}} à {{last}} sur {{total}} résultats\"\n },\n \"next\": {\n \"en\": \"Next\",\n \"fr\": \"Suivant\"\n },\n \"previous\": {\n \"en\": \"Previous\",\n \"fr\": \"Précédent\"\n }\n },\n \"searchBar\": {\n \"placeholder\": {\n \"en\": \"Search...\",\n \"fr\": \"Rechercher...\"\n }\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/components.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ import { FormDataType, FormContent, PartialNullableFormDataType } from '@douglas
|
|
|
18
18
|
import { z } from 'zod';
|
|
19
19
|
import * as _radix_ui_react_hover_card from '@radix-ui/react-hover-card';
|
|
20
20
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
21
|
-
import { L as Language } from './types-
|
|
21
|
+
import { L as Language } from './types-DHEs3SFX.js';
|
|
22
22
|
import { LineProps } from 'recharts';
|
|
23
23
|
import * as _radix_ui_react_menubar from '@radix-ui/react-menubar';
|
|
24
24
|
import { MenubarMenuProps } from '@radix-ui/react-menubar';
|
package/dist/components.js
CHANGED
|
Binary file
|
package/dist/hooks.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Promisable } from 'type-fest';
|
|
2
2
|
import { RefObject, useEffect, Dispatch, SetStateAction } from 'react';
|
|
3
3
|
import * as zustand from 'zustand';
|
|
4
|
-
import { T as TranslationNamespace, L as Language, a as TranslateFunction } from './types-
|
|
4
|
+
import { T as TranslationNamespace, L as Language, a as TranslateFunction } from './types-DHEs3SFX.js';
|
|
5
5
|
|
|
6
6
|
type DownloadTextOptions = {
|
|
7
7
|
blobType: 'text/csv' | 'text/plain';
|
package/dist/hooks.js
CHANGED
package/dist/i18n.d.ts
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import * as zustand from 'zustand';
|
|
2
2
|
import { SetOptional } from 'type-fest';
|
|
3
|
-
import { L as Language, b as Translations } from './types-
|
|
4
|
-
export { E as ExtractTranslationKey, c as LanguageOptions,
|
|
3
|
+
import { L as Language, b as Translations, a as TranslateFunction } from './types-DHEs3SFX.js';
|
|
4
|
+
export { E as ExtractTranslationKey, c as LanguageOptions, d as TranslationKey, T as TranslationNamespace, U as UserConfig } from './types-DHEs3SFX.js';
|
|
5
5
|
|
|
6
6
|
type InitOptions = {
|
|
7
7
|
defaultLanguage?: Language;
|
|
8
8
|
fallbackLanguage?: Language;
|
|
9
9
|
translations?: SetOptional<Translations, 'libui'>;
|
|
10
10
|
};
|
|
11
|
+
type I18N = {
|
|
12
|
+
init: (options?: InitOptions) => void;
|
|
13
|
+
t: TranslateFunction;
|
|
14
|
+
};
|
|
11
15
|
type TranslationStore = {
|
|
12
16
|
changeLanguage: (language: Language) => void;
|
|
13
17
|
fallbackLanguage: Language;
|
|
@@ -16,6 +20,6 @@ type TranslationStore = {
|
|
|
16
20
|
translations: Translations;
|
|
17
21
|
};
|
|
18
22
|
declare const translationStore: zustand.StoreApi<TranslationStore>;
|
|
19
|
-
declare const
|
|
23
|
+
declare const i18n: I18N;
|
|
20
24
|
|
|
21
|
-
export { Language, type TranslationStore, Translations,
|
|
25
|
+
export { Language, TranslateFunction, type TranslationStore, Translations, i18n, translationStore };
|
package/dist/i18n.js
CHANGED
|
@@ -190,7 +190,7 @@ type ExtractTranslationKey<T extends {
|
|
|
190
190
|
} ? Key : `${Key}.${ExtractTranslationKey<T[Key]>}` : `${Key}` : never;
|
|
191
191
|
type TranslationNamespace = Extract<keyof Translations, string>;
|
|
192
192
|
type TranslationKey<TNamespace> = TNamespace extends TranslationNamespace ? ExtractTranslationKey<Translations[TNamespace]> : ExtractTranslationKey<Translations>;
|
|
193
|
-
interface TranslateFunction<TNamespace> {
|
|
193
|
+
interface TranslateFunction<TNamespace = undefined> {
|
|
194
194
|
(key: TranslationKey<TNamespace>): string;
|
|
195
195
|
(translations: {
|
|
196
196
|
[L in Language]: string;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@douglasneuroinformatics/libui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "3.0.
|
|
4
|
+
"version": "3.0.1",
|
|
5
5
|
"packageManager": "pnpm@9.3.0",
|
|
6
6
|
"description": "Generic UI components for DNP projects, built using React and Tailwind CSS",
|
|
7
7
|
"author": "Joshua Unrau",
|
package/src/i18n/store.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { get } from 'lodash-es';
|
|
1
2
|
import type { SetOptional } from 'type-fest';
|
|
2
3
|
import { createStore } from 'zustand/vanilla';
|
|
3
4
|
|
|
4
5
|
import libui from '@/i18n/translations/libui.json';
|
|
5
6
|
|
|
6
|
-
import type { Language, Translations } from './types';
|
|
7
|
+
import type { Language, TranslateFunction, Translations } from './types';
|
|
7
8
|
|
|
8
9
|
type InitOptions = {
|
|
9
10
|
defaultLanguage?: Language;
|
|
@@ -11,6 +12,11 @@ type InitOptions = {
|
|
|
11
12
|
translations?: SetOptional<Translations, 'libui'>;
|
|
12
13
|
};
|
|
13
14
|
|
|
15
|
+
type I18N = {
|
|
16
|
+
init: (options?: InitOptions) => void;
|
|
17
|
+
t: TranslateFunction;
|
|
18
|
+
};
|
|
19
|
+
|
|
14
20
|
export type TranslationStore = {
|
|
15
21
|
changeLanguage: (language: Language) => void;
|
|
16
22
|
fallbackLanguage: Language;
|
|
@@ -29,19 +35,26 @@ export const translationStore = createStore<TranslationStore>((set) => ({
|
|
|
29
35
|
translations: { libui }
|
|
30
36
|
}));
|
|
31
37
|
|
|
32
|
-
export const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
translationStore.setState({
|
|
39
|
-
fallbackLanguage: fallbackLanguage ?? state.fallbackLanguage,
|
|
40
|
-
isInitialized: true,
|
|
41
|
-
resolvedLanguage: defaultLanguage ?? state.resolvedLanguage,
|
|
42
|
-
translations: {
|
|
43
|
-
...state.translations,
|
|
44
|
-
...translations
|
|
38
|
+
export const i18n: I18N = {
|
|
39
|
+
init: ({ defaultLanguage, fallbackLanguage, translations }: InitOptions = {}) => {
|
|
40
|
+
const state = translationStore.getState();
|
|
41
|
+
if (state.isInitialized) {
|
|
42
|
+
console.error('Cannot reinitialize translations store');
|
|
43
|
+
return;
|
|
45
44
|
}
|
|
46
|
-
|
|
45
|
+
translationStore.setState({
|
|
46
|
+
fallbackLanguage: fallbackLanguage ?? state.fallbackLanguage,
|
|
47
|
+
isInitialized: true,
|
|
48
|
+
resolvedLanguage: defaultLanguage ?? state.resolvedLanguage,
|
|
49
|
+
translations: {
|
|
50
|
+
...state.translations,
|
|
51
|
+
...translations
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
t: (arg) => {
|
|
56
|
+
const { fallbackLanguage, resolvedLanguage, translations } = translationStore.getState();
|
|
57
|
+
const value = typeof arg === 'string' ? (get(translations, arg, arg) as { [key: string]: string }) : arg;
|
|
58
|
+
return value[resolvedLanguage] ?? value[fallbackLanguage];
|
|
59
|
+
}
|
|
47
60
|
};
|
package/src/i18n/types.ts
CHANGED
|
@@ -45,7 +45,7 @@ export type TranslationKey<TNamespace> = TNamespace extends TranslationNamespace
|
|
|
45
45
|
? ExtractTranslationKey<Translations[TNamespace]>
|
|
46
46
|
: ExtractTranslationKey<Translations>;
|
|
47
47
|
|
|
48
|
-
export interface TranslateFunction<TNamespace> {
|
|
48
|
+
export interface TranslateFunction<TNamespace = undefined> {
|
|
49
49
|
(key: TranslationKey<TNamespace>): string;
|
|
50
50
|
(translations: { [L in Language]: string }): string;
|
|
51
51
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/i18n/store.ts","../src/i18n/translations/libui.json"],"sourcesContent":["import type { SetOptional } from 'type-fest';\nimport { createStore } from 'zustand/vanilla';\n\nimport libui from '@/i18n/translations/libui.json';\n\nimport type { Language, Translations } from './types';\n\ntype InitOptions = {\n defaultLanguage?: Language;\n fallbackLanguage?: Language;\n translations?: SetOptional<Translations, 'libui'>;\n};\n\nexport type TranslationStore = {\n changeLanguage: (language: Language) => void;\n fallbackLanguage: Language;\n isInitialized: boolean;\n resolvedLanguage: Language;\n translations: Translations;\n};\n\nexport const translationStore = createStore<TranslationStore>((set) => ({\n changeLanguage(language) {\n set({ resolvedLanguage: language });\n },\n fallbackLanguage: 'en',\n isInitialized: false,\n resolvedLanguage: 'en',\n translations: { libui }\n}));\n\nexport const init = ({ defaultLanguage, fallbackLanguage, translations }: InitOptions = {}) => {\n const state = translationStore.getState();\n if (state.isInitialized) {\n console.error('Cannot reinitialize translations store');\n return;\n }\n translationStore.setState({\n fallbackLanguage: fallbackLanguage ?? state.fallbackLanguage,\n isInitialized: true,\n resolvedLanguage: defaultLanguage ?? state.resolvedLanguage,\n translations: {\n ...state.translations,\n ...translations\n }\n });\n};\n","{\n \"days\": {\n \"friday\": {\n \"en\": \"Friday\",\n \"fr\": \"Vendredi\"\n },\n \"monday\": {\n \"en\": \"Monday\",\n \"fr\": \"Lundi\"\n },\n \"saturday\": {\n \"en\": \"Saturday\",\n \"fr\": \"Samedi\"\n },\n \"sunday\": {\n \"en\": \"Sunday\",\n \"fr\": \"Dimanche\"\n },\n \"thursday\": {\n \"en\": \"Thursday\",\n \"fr\": \"Jeudi\"\n },\n \"tuesday\": {\n \"en\": \"Tuesday\",\n \"fr\": \"Mardi\"\n },\n \"wednesday\": {\n \"en\": \"Wednesday\",\n \"fr\": \"Mercredi\"\n }\n },\n \"form\": {\n \"append\": {\n \"en\": \"Append\",\n \"fr\": \"Ajouter\"\n },\n \"radioLabels\": {\n \"false\": {\n \"en\": \"False\",\n \"fr\": \"Faux\"\n },\n \"true\": {\n \"en\": \"True\",\n \"fr\": \"Vrai\"\n }\n },\n \"remove\": {\n \"en\": \"Remove\",\n \"fr\": \"Supprimer\"\n },\n \"required\": {\n \"en\": \"This field is required\",\n \"fr\": \"Ce champ est obligatoire\"\n },\n \"reset\": {\n \"en\": \"Reset\",\n \"fr\": \"Réinitialiser\"\n },\n \"submit\": {\n \"en\": \"Submit\",\n \"fr\": \"Soumettre\"\n }\n },\n \"months\": {\n \"april\": {\n \"en\": \"April\",\n \"fr\": \"Avril\"\n },\n \"august\": {\n \"en\": \"August\",\n \"fr\": \"Août\"\n },\n \"december\": {\n \"en\": \"December\",\n \"fr\": \"Décembre\"\n },\n \"february\": {\n \"en\": \"February\",\n \"fr\": \"Février\"\n },\n \"january\": {\n \"en\": \"January\",\n \"fr\": \"Janvier\"\n },\n \"july\": {\n \"en\": \"July\",\n \"fr\": \"Juillet\"\n },\n \"june\": {\n \"en\": \"June\",\n \"fr\": \"Juin\"\n },\n \"march\": {\n \"en\": \"March\",\n \"fr\": \"Mars\"\n },\n \"may\": {\n \"en\": \"May\",\n \"fr\": \"Mai\"\n },\n \"november\": {\n \"en\": \"November\",\n \"fr\": \"Novembre\"\n },\n \"october\": {\n \"en\": \"October\",\n \"fr\": \"Octobre\"\n },\n \"september\": {\n \"en\": \"September\",\n \"fr\": \"Septembre\"\n }\n },\n \"notifications\": {\n \"types\": {\n \"error\": {\n \"en\": \"Error\",\n \"fr\": \"Erreur\"\n },\n \"info\": {\n \"en\": \"Info\",\n \"fr\": \"Attention\"\n },\n \"success\": {\n \"en\": \"Success\",\n \"fr\": \"Succès\"\n },\n \"warning\": {\n \"en\": \"Warning\",\n \"fr\": \"Avertissement\"\n }\n }\n },\n \"pagination\": {\n \"info\": {\n \"en\": \"Showing {{first}} to {{last}} of {{total}} results\",\n \"fr\": \"Affichage de {{first}} à {{last}} sur {{total}} résultats\"\n },\n \"next\": {\n \"en\": \"Next\",\n \"fr\": \"Suivant\"\n },\n \"previous\": {\n \"en\": \"Previous\",\n \"fr\": \"Précédent\"\n }\n },\n \"searchBar\": {\n \"placeholder\": {\n \"en\": \"Search...\",\n \"fr\": \"Rechercher...\"\n }\n }\n}\n"],"mappings":"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","names":[]}
|
|
Binary file
|
|
File without changes
|