piral-translate 1.0.0-pre.2296 → 1.0.0

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.
Files changed (53) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +12 -2
  3. package/esm/Languages.js +2 -2
  4. package/esm/Languages.js.map +1 -1
  5. package/esm/actions.js +17 -19
  6. package/esm/actions.js.map +1 -1
  7. package/esm/components.d.ts +2 -3
  8. package/esm/components.js +1 -1
  9. package/esm/components.js.map +1 -1
  10. package/esm/create.js +39 -19
  11. package/esm/create.js.map +1 -1
  12. package/esm/current.js +2 -2
  13. package/esm/current.js.map +1 -1
  14. package/esm/default.d.ts +2 -2
  15. package/esm/default.js +1 -1
  16. package/esm/default.js.map +1 -1
  17. package/esm/hooks.js +12 -10
  18. package/esm/hooks.js.map +1 -1
  19. package/esm/localize.d.ts +2 -2
  20. package/esm/localize.js +20 -23
  21. package/esm/localize.js.map +1 -1
  22. package/esm/types.d.ts +24 -4
  23. package/lib/Languages.js +6 -5
  24. package/lib/Languages.js.map +1 -1
  25. package/lib/actions.js +17 -19
  26. package/lib/actions.js.map +1 -1
  27. package/lib/components.d.ts +2 -3
  28. package/lib/components.js +2 -2
  29. package/lib/components.js.map +1 -1
  30. package/lib/create.js +43 -23
  31. package/lib/create.js.map +1 -1
  32. package/lib/current.js +3 -3
  33. package/lib/current.js.map +1 -1
  34. package/lib/default.d.ts +2 -2
  35. package/lib/default.js +3 -2
  36. package/lib/default.js.map +1 -1
  37. package/lib/hooks.js +14 -12
  38. package/lib/hooks.js.map +1 -1
  39. package/lib/index.js +1 -1
  40. package/lib/localize.d.ts +2 -2
  41. package/lib/localize.js +20 -22
  42. package/lib/localize.js.map +1 -1
  43. package/lib/types.d.ts +24 -4
  44. package/package.json +33 -6
  45. package/piral-translate.min.js +1 -0
  46. package/src/actions.test.ts +134 -5
  47. package/src/components.tsx +1 -3
  48. package/src/create.test.ts +122 -3
  49. package/src/create.ts +32 -3
  50. package/src/default.tsx +2 -1
  51. package/src/hooks.ts +3 -1
  52. package/src/localize.ts +5 -5
  53. package/src/types.ts +24 -5
@@ -1,3 +1,2 @@
1
- import * as React from 'react';
2
- import { LanguagesPickerProps } from './types';
3
- export declare const PiralLanguagesPicker: React.ComponentType<LanguagesPickerProps>;
1
+ /// <reference types="react" />
2
+ export declare const PiralLanguagesPicker: import("react").ComponentType<import("./types").LanguagesPickerProps>;
package/lib/components.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PiralLanguagesPicker = void 0;
4
- var piral_core_1 = require("piral-core");
5
- exports.PiralLanguagesPicker = piral_core_1.getPiralComponent('LanguagesPicker');
4
+ const piral_core_1 = require("piral-core");
5
+ exports.PiralLanguagesPicker = (0, piral_core_1.getPiralComponent)('LanguagesPicker');
6
6
  //# sourceMappingURL=components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.tsx"],"names":[],"mappings":";;;AACA,yCAA+C;AAGlC,QAAA,oBAAoB,GAA8C,8BAAiB,CAAC,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.tsx"],"names":[],"mappings":";;;AAAA,2CAA+C;AAElC,QAAA,oBAAoB,GAAG,IAAA,8BAAiB,EAAC,iBAAiB,CAAC,CAAC"}
package/lib/create.js CHANGED
@@ -1,22 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createLocaleApi = exports.setupLocalizer = void 0;
4
- var tslib_1 = require("tslib");
5
- var actions_1 = require("./actions");
6
- var localize_1 = require("./localize");
7
- var default_1 = require("./default");
4
+ const deepmerge = require("deepmerge");
5
+ const actions_1 = require("./actions");
6
+ const localize_1 = require("./localize");
7
+ const default_1 = require("./default");
8
8
  /**
9
9
  * Sets up a new localizer by using the given config.
10
10
  * @param config The configuration for the new localizer.
11
11
  */
12
- function setupLocalizer(config) {
13
- if (config === void 0) { config = {}; }
14
- var msgs = config.messages || {};
15
- var languages = Object.keys(msgs);
16
- var defaultLang = languages[0] || 'en';
17
- var computeLang = config.language;
18
- var usedLang = typeof computeLang === 'function' ? computeLang(languages, defaultLang, 'en') : computeLang;
19
- var language = usedLang || defaultLang;
12
+ function setupLocalizer(config = {}) {
13
+ const msgs = config.messages || {};
14
+ const languages = Object.keys(msgs);
15
+ const defaultLang = languages[0] || 'en';
16
+ const computeLang = config.language;
17
+ const usedLang = typeof computeLang === 'function' ? computeLang(languages, defaultLang, 'en') : computeLang;
18
+ const language = usedLang || defaultLang;
20
19
  return new localize_1.Localizer(msgs, language, languages.length ? languages : [language], config.fallback);
21
20
  }
22
21
  exports.setupLocalizer = setupLocalizer;
@@ -24,25 +23,46 @@ exports.setupLocalizer = setupLocalizer;
24
23
  * Creates new Pilet API extensions for localization.
25
24
  * @param localizer The specific localizer to be used, if any.
26
25
  */
27
- function createLocaleApi(localizer) {
28
- if (localizer === void 0) { localizer = setupLocalizer(); }
29
- return function (context) {
30
- context.defineActions(actions_1.createActions(localizer));
31
- context.dispatch(function (state) { return (tslib_1.__assign(tslib_1.__assign({}, state), { components: tslib_1.__assign(tslib_1.__assign({}, state.components), { LanguagesPicker: default_1.DefaultPicker }), language: {
26
+ function createLocaleApi(localizer = setupLocalizer()) {
27
+ return (context) => {
28
+ context.defineActions((0, actions_1.createActions)(localizer));
29
+ context.dispatch((state) => (Object.assign(Object.assign({}, state), { components: Object.assign({ LanguagesPicker: default_1.DefaultPicker }, state.components), language: {
32
30
  loading: false,
33
31
  available: localizer.languages,
34
32
  selected: localizer.language,
35
- } })); });
36
- return function () {
37
- var localTranslations = {};
33
+ } })));
34
+ return (api) => {
35
+ let localTranslations = {};
38
36
  return {
39
- setTranslations: function (messages) {
37
+ addTranslations(messages, isOverriding = true) {
38
+ const messagesToMerge = messages;
39
+ if (isOverriding) {
40
+ messagesToMerge.unshift(localizer.messages);
41
+ }
42
+ else {
43
+ messagesToMerge.push(localizer.messages);
44
+ }
45
+ this.setTranslations(deepmerge.all(messagesToMerge));
46
+ },
47
+ getCurrentLanguage(cb) {
48
+ const selected = context.readState((s) => s.language.selected);
49
+ if (cb) {
50
+ cb(selected);
51
+ const handler = (ev) => {
52
+ cb(ev.currentLanguage);
53
+ };
54
+ api.on('select-language', handler);
55
+ return () => api.off('select-language', handler);
56
+ }
57
+ return selected;
58
+ },
59
+ setTranslations(messages) {
40
60
  localTranslations = messages;
41
61
  },
42
- getTranslations: function () {
62
+ getTranslations() {
43
63
  return localTranslations;
44
64
  },
45
- translate: function (tag, variables) {
65
+ translate(tag, variables) {
46
66
  return localizer.localizeLocal(localTranslations, tag, variables);
47
67
  },
48
68
  };
package/lib/create.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":";;;;AACA,qCAA0C;AAC1C,uCAAuC;AACvC,qCAA0C;AA8B1C;;;GAGG;AACH,SAAgB,cAAc,CAAC,MAAyB;IAAzB,uBAAA,EAAA,WAAyB;IACtD,IAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACnC,IAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,IAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACzC,IAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;IACpC,IAAM,QAAQ,GAAG,OAAO,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC7G,IAAM,QAAQ,GAAG,QAAQ,IAAI,WAAW,CAAC;IACzC,OAAO,IAAI,oBAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnG,CAAC;AARD,wCAQC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,SAAyC;IAAzC,0BAAA,EAAA,YAAyB,cAAc,EAAE;IACvE,OAAO,UAAC,OAAO;QACb,OAAO,CAAC,aAAa,CAAC,uBAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QAEhD,OAAO,CAAC,QAAQ,CAAC,UAAC,KAAK,IAAK,OAAA,uCACvB,KAAK,KACR,UAAU,wCACL,KAAK,CAAC,UAAU,KACnB,eAAe,EAAE,uBAAa,KAEhC,QAAQ,EAAE;gBACR,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,QAAQ,EAAE,SAAS,CAAC,QAAQ;aAC7B,IACD,EAX0B,CAW1B,CAAC,CAAC;QAEJ,OAAO;YACL,IAAI,iBAAiB,GAAyB,EAAE,CAAC;YAEjD,OAAO;gBACL,eAAe,YAAC,QAAQ;oBACtB,iBAAiB,GAAG,QAAQ,CAAC;gBAC/B,CAAC;gBACD,eAAe;oBACb,OAAO,iBAAiB,CAAC;gBAC3B,CAAC;gBACD,SAAS,YAAC,GAAG,EAAE,SAAS;oBACtB,OAAO,SAAS,CAAC,aAAa,CAAC,iBAAiB,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBACpE,CAAC;aACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAjCD,0CAiCC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"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"}
package/lib/current.js CHANGED
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getUserLocale = void 0;
4
- var piral_core_1 = require("piral-core");
4
+ const piral_core_1 = require("piral-core");
5
5
  function getUserLocaleUnchecked(defaultLocale, remoteLocale) {
6
- var storedLocale = piral_core_1.cookie.getItem('_culture') || piral_core_1.storage.getItem('locale');
6
+ const storedLocale = piral_core_1.cookie.getItem('_culture') || piral_core_1.storage.getItem('locale');
7
7
  if (storedLocale) {
8
8
  return storedLocale;
9
9
  }
@@ -16,7 +16,7 @@ function getUserLocaleUnchecked(defaultLocale, remoteLocale) {
16
16
  return defaultLocale;
17
17
  }
18
18
  function getUserLocale(availableLocales, defaultLocale, fallbackLocale) {
19
- var selected = getUserLocaleUnchecked(defaultLocale, fallbackLocale || '');
19
+ const selected = getUserLocaleUnchecked(defaultLocale, fallbackLocale || '');
20
20
  if (availableLocales.indexOf(selected) !== -1) {
21
21
  return selected;
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"current.js","sourceRoot":"","sources":["../src/current.ts"],"names":[],"mappings":";;;AAAA,yCAA6C;AAE7C,SAAS,sBAAsB,CAAC,aAAqB,EAAE,YAAoB;IACzE,IAAM,YAAY,GAAG,mBAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,oBAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE7E,IAAI,YAAY,EAAE;QAChB,OAAO,YAAY,CAAC;KACrB;SAAM,IAAI,YAAY,EAAE;QACvB,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACnD;SAAM,IAAI,SAAS,CAAC,QAAQ,EAAE;QAC7B,OAAO,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC3C;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAgB,aAAa,CAAC,gBAA+B,EAAE,aAAqB,EAAE,cAAuB;IAC3G,IAAM,QAAQ,GAAG,sBAAsB,CAAC,aAAa,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;IAE7E,IAAI,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;QAC7C,OAAO,QAAQ,CAAC;KACjB;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AARD,sCAQC"}
1
+ {"version":3,"file":"current.js","sourceRoot":"","sources":["../src/current.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAE7C,SAAS,sBAAsB,CAAC,aAAqB,EAAE,YAAoB;IACzE,MAAM,YAAY,GAAG,mBAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,oBAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE7E,IAAI,YAAY,EAAE;QAChB,OAAO,YAAY,CAAC;KACrB;SAAM,IAAI,YAAY,EAAE;QACvB,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACnD;SAAM,IAAI,SAAS,CAAC,QAAQ,EAAE;QAC7B,OAAO,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC3C;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAgB,aAAa,CAAC,gBAA+B,EAAE,aAAqB,EAAE,cAAuB;IAC3G,MAAM,QAAQ,GAAG,sBAAsB,CAAC,aAAa,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;IAE7E,IAAI,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;QAC7C,OAAO,QAAQ,CAAC;KACjB;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AARD,sCAQC"}
package/lib/default.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- /// <reference types="react" />
1
+ import type { FC } from 'react';
2
2
  import { LanguagesPickerProps } from './types';
3
- export declare const DefaultPicker: React.FC<LanguagesPickerProps>;
3
+ export declare const DefaultPicker: FC<LanguagesPickerProps>;
package/lib/default.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DefaultPicker = void 0;
4
- var piral_core_1 = require("piral-core");
5
- exports.DefaultPicker = function (props) { return piral_core_1.defaultRender(undefined); };
4
+ const piral_core_1 = require("piral-core");
5
+ const DefaultPicker = (props) => (0, piral_core_1.defaultRender)(undefined);
6
+ exports.DefaultPicker = DefaultPicker;
6
7
  //# sourceMappingURL=default.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"default.js","sourceRoot":"","sources":["../src/default.tsx"],"names":[],"mappings":";;;AAAA,yCAA2C;AAG9B,QAAA,aAAa,GAAmC,UAAC,KAAK,IAAK,OAAA,0BAAa,CAAC,SAAS,CAAC,EAAxB,CAAwB,CAAC"}
1
+ {"version":3,"file":"default.js","sourceRoot":"","sources":["../src/default.tsx"],"names":[],"mappings":";;;AACA,2CAA2C;AAGpC,MAAM,aAAa,GAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;AAA9E,QAAA,aAAa,iBAAiE"}
package/lib/hooks.js CHANGED
@@ -1,29 +1,31 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useTranslate = exports.useDynamicLanguage = void 0;
4
- var react_1 = require("react");
5
- var piral_core_1 = require("piral-core");
4
+ const react_1 = require("react");
5
+ const piral_core_1 = require("piral-core");
6
6
  function useDynamicLanguage(defaultSelected, load) {
7
- var _a = react_1.useState(defaultSelected), selected = _a[0], setSelected = _a[1];
8
- var _b = piral_core_1.useActions(), selectLanguage = _b.selectLanguage, setTranslations = _b.setTranslations, getTranslations = _b.getTranslations;
9
- react_1.useEffect(function () {
10
- var active = true;
11
- var current = getTranslations(selected);
7
+ const [selected, setSelected] = (0, react_1.useState)(defaultSelected);
8
+ const { selectLanguage, setTranslations, getTranslations } = (0, piral_core_1.useActions)();
9
+ (0, react_1.useEffect)(() => {
10
+ let active = true;
11
+ const current = getTranslations(selected);
12
12
  selectLanguage(undefined);
13
- load(selected, current).then(function (result) {
13
+ load(selected, current).then((result) => {
14
14
  if (active) {
15
15
  setTranslations(selected, result);
16
16
  selectLanguage(selected);
17
17
  }
18
- }, function (err) { return console.error(err); });
19
- return function () { return (active = false); };
18
+ }, (err) => console.error(err));
19
+ return () => {
20
+ active = false;
21
+ };
20
22
  }, [selected]);
21
23
  return [selected, setSelected];
22
24
  }
23
25
  exports.useDynamicLanguage = useDynamicLanguage;
24
26
  function useTranslate() {
25
- var translate = piral_core_1.useActions().translate;
26
- piral_core_1.useGlobalState(function (m) { return m.language.selected; });
27
+ const { translate } = (0, piral_core_1.useActions)();
28
+ (0, piral_core_1.useGlobalState)((m) => m.language.selected);
27
29
  return translate;
28
30
  }
29
31
  exports.useTranslate = useTranslate;
package/lib/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":";;;AAAA,+BAA4C;AAC5C,yCAAwD;AAGxD,SAAgB,kBAAkB,CAChC,eAAuB,EACvB,IAAoB;IAEd,IAAA,KAA0B,gBAAQ,CAAC,eAAe,CAAC,EAAlD,QAAQ,QAAA,EAAE,WAAW,QAA6B,CAAC;IACpD,IAAA,KAAuD,uBAAU,EAAE,EAAjE,cAAc,oBAAA,EAAE,eAAe,qBAAA,EAAE,eAAe,qBAAiB,CAAC;IAE1E,iBAAS,CAAC;QACR,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1C,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAC1B,UAAC,MAAM;YACL,IAAI,MAAM,EAAE;gBACV,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAClC,cAAc,CAAC,QAAQ,CAAC,CAAC;aAC1B;QACH,CAAC,EACD,UAAC,GAAG,IAAK,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAC5B,CAAC;QACF,OAAO,cAAM,OAAA,CAAC,MAAM,GAAG,KAAK,CAAC,EAAhB,CAAgB,CAAC;IAChC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACjC,CAAC;AAxBD,gDAwBC;AAED,SAAgB,YAAY;IAClB,IAAA,SAAS,GAAK,uBAAU,EAAE,UAAjB,CAAkB;IACnC,2BAAc,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAnB,CAAmB,CAAC,CAAC;IAC3C,OAAO,SAAS,CAAC;AACnB,CAAC;AAJD,oCAIC"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":";;;AAAA,iCAA4C;AAC5C,2CAAwD;AAGxD,SAAgB,kBAAkB,CAChC,eAAuB,EACvB,IAAoB;IAEpB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,eAAe,CAAC,CAAC;IAC1D,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,IAAA,uBAAU,GAAE,CAAC;IAE1E,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1C,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAC1B,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,MAAM,EAAE;gBACV,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAClC,cAAc,CAAC,QAAQ,CAAC,CAAC;aAC1B;QACH,CAAC,EACD,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAC5B,CAAC;QACF,OAAO,GAAG,EAAE;YACV,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACjC,CAAC;AA1BD,gDA0BC;AAED,SAAgB,YAAY;IAC1B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,uBAAU,GAAE,CAAC;IACnC,IAAA,2BAAc,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,SAAS,CAAC;AACnB,CAAC;AAJD,oCAIC"}
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
3
+ const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./components"), exports);
5
5
  tslib_1.__exportStar(require("./create"), exports);
6
6
  tslib_1.__exportStar(require("./current"), exports);
package/lib/localize.d.ts CHANGED
@@ -14,7 +14,7 @@ export declare class Localizer implements Localizable {
14
14
  * @param key The key of the translation snippet.
15
15
  * @param variables The optional variables to use.
16
16
  */
17
- localizeGlobal<T>(key: string, variables?: T): string;
17
+ localizeGlobal<T extends object>(key: string, variables?: T): string;
18
18
  /**
19
19
  * Localizes the given key via the local translations.
20
20
  * Uses the global translations as fallback mechanism.
@@ -22,7 +22,7 @@ export declare class Localizer implements Localizable {
22
22
  * @param key The key of the translation snippet.
23
23
  * @param variables The optional variables to use.
24
24
  */
25
- localizeLocal<T>(localMessages: LocalizationMessages, key: string, variables?: T): string;
25
+ localizeLocal<T extends object>(localMessages: LocalizationMessages, key: string, variables?: T): string;
26
26
  private localizeBase;
27
27
  private translateMessage;
28
28
  }
package/lib/localize.js CHANGED
@@ -7,8 +7,8 @@ function defaultFallback(key, language) {
7
7
  }
8
8
  else {
9
9
  if (language) {
10
- console.warn("Missing translation of \"" + key + "\" in language \"" + language + "\".");
11
- return "__" + language + "_" + key + "__";
10
+ console.warn(`Missing translation of "${key}" in language "${language}".`);
11
+ return `__${language}_${key}__`;
12
12
  }
13
13
  else {
14
14
  return '';
@@ -16,16 +16,15 @@ function defaultFallback(key, language) {
16
16
  }
17
17
  }
18
18
  function formatMessage(message, variables) {
19
- return message.replace(/{{\s*([A-Za-z0-9_.]+)\s*}}/g, function (_match, p1) {
20
- return p1 in variables ? variables[p1] || '' : "{{" + p1 + "}}";
19
+ return message.replace(/{{\s*([A-Za-z0-9_.]+)\s*}}/g, (_match, p1) => {
20
+ return p1 in variables ? variables[p1] || '' : `{{${p1}}}`;
21
21
  });
22
22
  }
23
- var Localizer = /** @class */ (function () {
23
+ class Localizer {
24
24
  /**
25
25
  * Creates a new instance of a localizer.
26
26
  */
27
- function Localizer(messages, language, languages, fallback) {
28
- if (fallback === void 0) { fallback = defaultFallback; }
27
+ constructor(messages, language, languages, fallback = defaultFallback) {
29
28
  this.messages = messages;
30
29
  this.language = language;
31
30
  this.languages = languages;
@@ -36,9 +35,9 @@ var Localizer = /** @class */ (function () {
36
35
  * @param key The key of the translation snippet.
37
36
  * @param variables The optional variables to use.
38
37
  */
39
- Localizer.prototype.localizeGlobal = function (key, variables) {
38
+ localizeGlobal(key, variables) {
40
39
  return this.localizeBase(key, variables);
41
- };
40
+ }
42
41
  /**
43
42
  * Localizes the given key via the local translations.
44
43
  * Uses the global translations as fallback mechanism.
@@ -46,27 +45,26 @@ var Localizer = /** @class */ (function () {
46
45
  * @param key The key of the translation snippet.
47
46
  * @param variables The optional variables to use.
48
47
  */
49
- Localizer.prototype.localizeLocal = function (localMessages, key, variables) {
50
- var message = this.translateMessage(localMessages, key, variables);
48
+ localizeLocal(localMessages, key, variables) {
49
+ const message = this.translateMessage(localMessages, key, variables);
51
50
  if (message === undefined) {
52
51
  return this.localizeBase(key, variables);
53
52
  }
54
53
  return message;
55
- };
56
- Localizer.prototype.localizeBase = function (key, variables) {
57
- var message = this.translateMessage(this.messages, key, variables);
54
+ }
55
+ localizeBase(key, variables) {
56
+ const message = this.translateMessage(this.messages, key, variables);
58
57
  if (message === undefined) {
59
58
  return this.fallback(key, this.language);
60
59
  }
61
60
  return message;
62
- };
63
- Localizer.prototype.translateMessage = function (messages, key, variables) {
64
- var language = this.language;
65
- var translations = language && messages[language];
66
- var translation = translations && translations[key];
61
+ }
62
+ translateMessage(messages, key, variables) {
63
+ const language = this.language;
64
+ const translations = language && messages[language];
65
+ const translation = translations && translations[key];
67
66
  return translation && (variables ? formatMessage(translation, variables) : translation);
68
- };
69
- return Localizer;
70
- }());
67
+ }
68
+ }
71
69
  exports.Localizer = Localizer;
72
70
  //# sourceMappingURL=localize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"localize.js","sourceRoot":"","sources":["../src/localize.ts"],"names":[],"mappings":";;;AAEA,SAAS,eAAe,CAAC,GAAW,EAAE,QAAgB;IACpD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;QACzC,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B;SAAM;QACL,IAAI,QAAQ,EAAE;YACZ,OAAO,CAAC,IAAI,CAAC,8BAA2B,GAAG,yBAAkB,QAAQ,QAAI,CAAC,CAAC;YAC3E,OAAO,OAAK,QAAQ,SAAI,GAAG,OAAI,CAAC;SACjC;aAAM;YACL,OAAO,EAAE,CAAC;SACX;KACF;AACH,CAAC;AAED,SAAS,aAAa,CAAI,OAAe,EAAE,SAAY;IACrD,OAAO,OAAO,CAAC,OAAO,CAAC,6BAA6B,EAAE,UAAC,MAAc,EAAE,EAAU;QAC/E,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAK,EAAE,OAAI,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED;IACE;;OAEG;IACH,mBACS,QAA8B,EAC9B,QAAgB,EAChB,SAAwB,EACvB,QAA0B;QAA1B,yBAAA,EAAA,0BAA0B;QAH3B,aAAQ,GAAR,QAAQ,CAAsB;QAC9B,aAAQ,GAAR,QAAQ,CAAQ;QAChB,cAAS,GAAT,SAAS,CAAe;QACvB,aAAQ,GAAR,QAAQ,CAAkB;IACjC,CAAC;IAEJ;;;;OAIG;IACI,kCAAc,GAArB,UAAyB,GAAW,EAAE,SAAa;QACjD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;OAMG;IACI,iCAAa,GAApB,UAAwB,aAAmC,EAAE,GAAW,EAAE,SAAa;QACrF,IAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAErE,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;SAC1C;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,gCAAY,GAApB,UAAwB,GAAW,EAAE,SAAa;QAChD,IAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAErE,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC1C;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,oCAAgB,GAAxB,UAA4B,QAA8B,EAAE,GAAW,EAAE,SAAa;QACpF,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAM,YAAY,GAAG,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAM,WAAW,GAAG,YAAY,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;QACtD,OAAO,WAAW,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC1F,CAAC;IACH,gBAAC;AAAD,CAAC,AArDD,IAqDC;AArDY,8BAAS"}
1
+ {"version":3,"file":"localize.js","sourceRoot":"","sources":["../src/localize.ts"],"names":[],"mappings":";;;AAEA,SAAS,eAAe,CAAC,GAAW,EAAE,QAAgB;IACpD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;QACzC,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B;SAAM;QACL,IAAI,QAAQ,EAAE;YACZ,OAAO,CAAC,IAAI,CAAC,2BAA2B,GAAG,kBAAkB,QAAQ,IAAI,CAAC,CAAC;YAC3E,OAAO,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC;SACjC;aAAM;YACL,OAAO,EAAE,CAAC;SACX;KACF;AACH,CAAC;AAED,SAAS,aAAa,CAAmB,OAAe,EAAE,SAAY;IACpE,OAAO,OAAO,CAAC,OAAO,CAAC,6BAA6B,EAAE,CAAC,MAAc,EAAE,EAAU,EAAE,EAAE;QACnF,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAa,SAAS;IACpB;;OAEG;IACH,YACS,QAA8B,EAC9B,QAAgB,EAChB,SAAwB,EACvB,WAAW,eAAe;QAH3B,aAAQ,GAAR,QAAQ,CAAsB;QAC9B,aAAQ,GAAR,QAAQ,CAAQ;QAChB,cAAS,GAAT,SAAS,CAAe;QACvB,aAAQ,GAAR,QAAQ,CAAkB;IACjC,CAAC;IAEJ;;;;OAIG;IACI,cAAc,CAAmB,GAAW,EAAE,SAAa;QAChE,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;OAMG;IACI,aAAa,CAAmB,aAAmC,EAAE,GAAW,EAAE,SAAa;QACpG,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAErE,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;SAC1C;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,YAAY,CAAmB,GAAW,EAAE,SAAa;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAErE,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC1C;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,gBAAgB,CAAmB,QAA8B,EAAE,GAAW,EAAE,SAAa;QACnG,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,YAAY,GAAG,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,YAAY,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;QACtD,OAAO,WAAW,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC1F,CAAC;CACF;AArDD,8BAqDC"}
package/lib/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { ComponentType } from 'react';
1
+ import type { Disposable } from 'piral-core';
2
+ import type { ComponentType } from 'react';
2
3
  declare module 'piral-core/lib/types/custom' {
3
4
  interface PiletCustomApi extends PiletLocaleApi {
4
5
  }
@@ -97,8 +98,8 @@ export interface Localizable {
97
98
  messages: LocalizationMessages;
98
99
  language: string;
99
100
  languages: Array<string>;
100
- localizeGlobal<T>(key: string, variables?: T): string;
101
- localizeLocal<T>(localMessages: LocalizationMessages, key: string, variables?: T): string;
101
+ localizeGlobal<T extends object>(key: string, variables?: T): string;
102
+ localizeLocal<T extends object>(localMessages: LocalizationMessages, key: string, variables?: T): string;
102
103
  }
103
104
  export interface LocalizationMessages {
104
105
  /**
@@ -107,13 +108,32 @@ export interface LocalizationMessages {
107
108
  [lang: string]: Translations;
108
109
  }
109
110
  export interface PiletLocaleApi {
111
+ /**
112
+ * Adds a list of translations to the existing translations.
113
+ *
114
+ * Internally, setTranslations is used, which means the translations will be exclusively used for
115
+ * retrieving translations for the pilet.
116
+ *
117
+ * @param messagesList The list of messages that extend the existing translations
118
+ * @param [isOverriding=true] Indicates whether the new translations overwrite the existing translations
119
+ */
120
+ addTranslations(messagesList: LocalizationMessages[], isOverriding?: boolean): void;
121
+ /**
122
+ * Gets the currently selected language directly.
123
+ */
124
+ getCurrentLanguage(): string;
125
+ /**
126
+ * Gets the currently selected language in a callback that is also invoked when the
127
+ * selected language changes. Returns a disposable to stop the notifications.
128
+ */
129
+ getCurrentLanguage(cb: (currently: string) => void): Disposable;
110
130
  /**
111
131
  * Translates the given tag (using the optional variables) into a string using the current language.
112
132
  * The used template can contain placeholders in form of `{{variableName}}`.
113
133
  * @param tag The tag to translate.
114
134
  * @param variables The optional variables to fill into the temnplate.
115
135
  */
116
- translate<T = Record<string, string>>(tag: string, variables?: T): string;
136
+ translate<T extends object = Record<string, string>>(tag: string, variables?: T): string;
117
137
  /**
118
138
  * Provides translations to the application.
119
139
  * The translations will be exclusively used for retrieving translations for the pilet.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "piral-translate",
3
- "version": "1.0.0-pre.2296",
3
+ "version": "1.0.0",
4
4
  "description": "Plugin for providing translated messages in Piral.",
5
5
  "keywords": [
6
6
  "piral",
@@ -22,11 +22,29 @@
22
22
  "module": "esm/index.js",
23
23
  "main": "lib/index.js",
24
24
  "typings": "lib/index.d.ts",
25
+ "exports": {
26
+ ".": {
27
+ "import": "./esm/index.js",
28
+ "require": "./lib/index.js"
29
+ },
30
+ "./esm/*": {
31
+ "import": "./esm/*"
32
+ },
33
+ "./lib/*": {
34
+ "require": "./lib/*"
35
+ },
36
+ "./_/*": {
37
+ "import": "./esm/*.js",
38
+ "require": "./lib/*.js"
39
+ },
40
+ "./package.json": "./package.json"
41
+ },
25
42
  "sideEffects": false,
26
43
  "files": [
27
44
  "esm",
28
45
  "lib",
29
- "src"
46
+ "src",
47
+ "piral-translate.min.js"
30
48
  ],
31
49
  "repository": {
32
50
  "type": "git",
@@ -36,17 +54,26 @@
36
54
  "url": "https://github.com/smapiot/piral/issues"
37
55
  },
38
56
  "scripts": {
39
- "build": "yarn build:commonjs && yarn build:esnext",
57
+ "cleanup": "rimraf esm lib piral-translate.min.js",
58
+ "build": "yarn build:bundle && yarn build:commonjs && yarn build:esnext",
59
+ "build:bundle": "esbuild src/index.ts --outfile=piral-translate.min.js --bundle --external:piral-core --external:react --minify --global-name=piralTranslate",
40
60
  "build:commonjs": "tsc --project tsconfig.json --outDir lib --module commonjs",
41
61
  "build:esnext": "tsc --project tsconfig.json --outDir esm --module esnext",
42
62
  "typedoc": "typedoc --json ../../../docs/types/piral-translate.json src --exclude \"src/**/*.test.*\"",
43
63
  "test": "echo \"Error: run tests from root\" && exit 1"
44
64
  },
65
+ "dependencies": {
66
+ "deepmerge": "^4.2.2"
67
+ },
45
68
  "devDependencies": {
46
- "piral-core": "^1.0.0-pre.2296"
69
+ "@types/deepmerge": "^2.2.0",
70
+ "@types/react": "^18.0.0",
71
+ "piral-core": "^1.0.0",
72
+ "react": "^18.0.0"
47
73
  },
48
74
  "peerDependencies": {
49
- "piral-core": "0.13.x"
75
+ "piral-core": "0.14.x || 0.15.x",
76
+ "react": ">=16.8.0"
50
77
  },
51
- "gitHead": "8dc47ff93be1eefcc3e226a1e7dd4d58615b4e0c"
78
+ "gitHead": "67d9a2920bd5231baf10bc87ae8985666b18fa3a"
52
79
  }
@@ -0,0 +1 @@
1
+ var piralTranslate=(()=>{var F=Object.create;var u=Object.defineProperty,U=Object.defineProperties,$=Object.getOwnPropertyDescriptor,D=Object.getOwnPropertyDescriptors,N=Object.getOwnPropertyNames,x=Object.getOwnPropertySymbols,B=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty,V=Object.prototype.propertyIsEnumerable;var O=(e,t,r)=>t in e?u(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,c=(e,t)=>{for(var r in t||(t={}))h.call(t,r)&&O(e,r,t[r]);if(x)for(var r of x(t))V.call(t,r)&&O(e,r,t[r]);return e},f=(e,t)=>U(e,D(t)),j=e=>u(e,"__esModule",{value:!0});var l=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(t,r)=>(typeof require!="undefined"?require:t)[r]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var K=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Y=(e,t)=>{j(e);for(var r in t)u(e,r,{get:t[r],enumerable:!0})},Z=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of N(t))!h.call(e,a)&&a!=="default"&&u(e,a,{get:()=>t[a],enumerable:!(r=$(t,a))||r.enumerable});return e},i=e=>Z(j(u(e!=null?F(B(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var z=K((ye,v)=>{"use strict";var q=function(t){return H(t)&&!J(t)};function H(e){return!!e&&typeof e=="object"}function J(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||X(e)}var Q=typeof Symbol=="function"&&Symbol.for,W=Q?Symbol.for("react.element"):60103;function X(e){return e.$$typeof===W}function ee(e){return Array.isArray(e)?[]:{}}function p(e,t){return t.clone!==!1&&t.isMergeableObject(e)?g(ee(e),e,t):e}function te(e,t,r){return e.concat(t).map(function(a){return p(a,r)})}function re(e,t){if(!t.customMerge)return g;var r=t.customMerge(e);return typeof r=="function"?r:g}function ae(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return e.propertyIsEnumerable(t)}):[]}function A(e){return Object.keys(e).concat(ae(e))}function S(e,t){try{return t in e}catch{return!1}}function ne(e,t){return S(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function se(e,t,r){var a={};return r.isMergeableObject(e)&&A(e).forEach(function(n){a[n]=p(e[n],r)}),A(t).forEach(function(n){ne(e,n)||(S(e,n)&&r.isMergeableObject(t[n])?a[n]=re(n,r)(e[n],t[n],r):a[n]=p(t[n],r))}),a}function g(e,t,r){r=r||{},r.arrayMerge=r.arrayMerge||te,r.isMergeableObject=r.isMergeableObject||q,r.cloneUnlessOtherwiseSpecified=p;var a=Array.isArray(t),n=Array.isArray(e),s=a===n;return s?a?r.arrayMerge(e,t,r):se(e,t,r):p(t,r)}g.all=function(t,r){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(a,n){return g(a,n,r)},{})};var oe=g;v.exports=oe});var be={};Y(be,{Languages:()=>me,PiralLanguagesPicker:()=>T,createLocaleApi:()=>ce,getUserLocale:()=>ue,setupLocalizer:()=>w,useDynamicLanguage:()=>fe,useTranslate:()=>pe});var P=i(l("piral-core")),T=(0,P.getPiralComponent)("LanguagesPicker");var k=i(z());function E(e){return{selectLanguage(t,r){t.dispatch(a=>{e.language=r;let n=a.language.selected,s=r;return setTimeout(()=>{t.emit("select-language",{previousLanguage:n,currentLanguage:s})},0),f(c({},a),{language:f(c({},a.language),{loading:r===void 0,selected:r})})})},translate(t,r,a){return e&&e.localizeGlobal(r,a)},setTranslations(t,r,a){e.messages[r]=a.global;for(let n of a.locals){let s=t.apis[n.name];if(s){let o=s.getTranslations();o[r]=n.value,s.setTranslations(o)}}},getTranslations(t,r){return{global:e.messages[r],locals:Object.keys(t.apis).map(a=>({name:a,value:t.apis[a].getTranslations()[r]}))}}}}function ie(e,t){return t?"...":""}function le(e,t){return e.replace(/{{\s*([A-Za-z0-9_.]+)\s*}}/g,(r,a)=>a in t?t[a]||"":`{{${a}}}`)}var M=class{constructor(t,r,a,n=ie){this.messages=t;this.language=r;this.languages=a;this.fallback=n}localizeGlobal(t,r){return this.localizeBase(t,r)}localizeLocal(t,r,a){let n=this.translateMessage(t,r,a);return n===void 0?this.localizeBase(r,a):n}localizeBase(t,r){let a=this.translateMessage(this.messages,t,r);return a===void 0?this.fallback(t,this.language):a}translateMessage(t,r,a){let n=this.language,s=n&&t[n],o=s&&s[r];return o&&(a?le(o,a):o)}};var C=i(l("piral-core")),_=e=>(0,C.defaultRender)(void 0);function w(e={}){let t=e.messages||{},r=Object.keys(t),a=r[0]||"en",n=e.language,o=(typeof n=="function"?n(r,a,"en"):n)||a;return new M(t,o,r.length?r:[o],e.fallback)}function ce(e=w()){return t=>(t.defineActions(E(e)),t.dispatch(r=>f(c({},r),{components:c({LanguagesPicker:_},r.components),language:{loading:!1,available:e.languages,selected:e.language}})),r=>{let a={};return{addTranslations(n,s=!0){let o=n;s?o.unshift(e.messages):o.push(e.messages),this.setTranslations(k.all(o))},getCurrentLanguage(n){let s=t.readState(o=>o.language.selected);if(n){n(s);let o=b=>{n(b.currentLanguage)};return r.on("select-language",o),()=>r.off("select-language",o)}return s},setTranslations(n){a=n},getTranslations(){return a},translate(n,s){return e.localizeLocal(a,n,s)}}})}var d=i(l("piral-core"));function ge(e,t){let r=d.cookie.getItem("_culture")||d.storage.getItem("locale");return r||(t?t.toLowerCase().substring(0,2):navigator.language?navigator.language.substring(0,2):e)}function ue(e,t,r){let a=ge(t,r||"");return e.indexOf(a)!==-1?a:t}var L=i(l("react")),m=i(l("piral-core"));function fe(e,t){let[r,a]=(0,L.useState)(e),{selectLanguage:n,setTranslations:s,getTranslations:o}=(0,m.useActions)();return(0,L.useEffect)(()=>{let b=!0,R=o(r);return n(void 0),t(r,R).then(y=>{b&&(s(r,y),n(r))},y=>console.error(y)),()=>{b=!1}},[r]),[r,a]}function pe(){let{translate:e}=(0,m.useActions)();return(0,m.useGlobalState)(t=>t.language.selected),e}var G=i(l("react")),I=i(l("piral-core"));var me=()=>{let{available:e,selected:t}=(0,I.useGlobalState)(r=>r.language);return G.createElement(T,{selected:t,available:e})};return be;})();