@sheet-i18n/react-client 1.5.1 → 1.5.2-canary.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.
package/dist/index.d.mts CHANGED
@@ -66,12 +66,13 @@ type IntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet e
66
66
  };
67
67
 
68
68
  declare function useLocaleStorage<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false>(localeStorageManager: LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>): {
69
- locale: TSupportedLocales[number];
69
+ locale: TSupportedLocales[number] | undefined;
70
70
  };
71
71
 
72
72
  interface StorageBasedIntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> {
73
73
  i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>;
74
74
  storageManager: LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>;
75
+ fallbackUI?: React.ReactNode;
75
76
  children: React.ReactNode;
76
77
  }
77
78
 
package/dist/index.d.ts CHANGED
@@ -66,12 +66,13 @@ type IntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet e
66
66
  };
67
67
 
68
68
  declare function useLocaleStorage<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false>(localeStorageManager: LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>): {
69
- locale: TSupportedLocales[number];
69
+ locale: TSupportedLocales[number] | undefined;
70
70
  };
71
71
 
72
72
  interface StorageBasedIntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> {
73
73
  i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>;
74
74
  storageManager: LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>;
75
+ fallbackUI?: React.ReactNode;
75
76
  children: React.ReactNode;
76
77
  }
77
78
 
package/dist/index.js CHANGED
@@ -43,7 +43,7 @@ __export(src_exports, {
43
43
  module.exports = __toCommonJS(src_exports);
44
44
 
45
45
  // src/createI18nContext.tsx
46
- var import_shared_utils5 = require("@sheet-i18n/shared-utils");
46
+ var import_shared_utils6 = require("@sheet-i18n/shared-utils");
47
47
  var import_react_core = require("@sheet-i18n/react-core");
48
48
 
49
49
  // src/Provider/IntlProvider.tsx
@@ -458,39 +458,47 @@ var getLocaleStorageManager = (i18nStore, storage) => {
458
458
  var import_react3 = require("react");
459
459
  var LISTENER_ID = "LOCALE_STORAGE_LISTENER_ID";
460
460
  function useLocaleStorage(localeStorageManager) {
461
- var _a;
462
- const [locale, setLocale] = (0, import_react3.useState)((_a = localeStorageManager == null ? void 0 : localeStorageManager.getLocale) == null ? void 0 : _a.call(localeStorageManager));
461
+ const [locale, setLocale] = (0, import_react3.useState)();
462
+ (0, import_react3.useEffect)(() => {
463
+ const storedLocale = localeStorageManager.getLocale();
464
+ setLocale(storedLocale);
465
+ }, []);
463
466
  (0, import_react3.useEffect)(() => {
464
- var _a2;
465
- (_a2 = localeStorageManager == null ? void 0 : localeStorageManager.observerManager) == null ? void 0 : _a2.addListener({
467
+ var _a;
468
+ (_a = localeStorageManager == null ? void 0 : localeStorageManager.observerManager) == null ? void 0 : _a.addListener({
466
469
  listenerId: LISTENER_ID,
467
470
  listener: (newLocale) => {
468
471
  setLocale(newLocale);
469
472
  }
470
473
  });
471
474
  return () => {
472
- var _a3;
473
- (_a3 = localeStorageManager == null ? void 0 : localeStorageManager.observerManager) == null ? void 0 : _a3.removeListener(LISTENER_ID);
475
+ var _a2;
476
+ (_a2 = localeStorageManager == null ? void 0 : localeStorageManager.observerManager) == null ? void 0 : _a2.removeListener(LISTENER_ID);
474
477
  };
475
478
  }, []);
476
479
  return { locale };
477
480
  }
478
481
 
479
482
  // src/Provider/StorageBasedIntlProvider.tsx
483
+ var import_shared_utils5 = require("@sheet-i18n/shared-utils");
480
484
  var import_jsx_runtime2 = require("react/jsx-runtime");
481
485
  function StorageBasedIntlProvider({
482
486
  i18nStore,
483
487
  storageManager,
488
+ fallbackUI = null,
484
489
  children
485
490
  }) {
486
491
  const { locale } = useLocaleStorage(storageManager);
492
+ if (import_shared_utils5.validator.isNullish(locale)) {
493
+ return fallbackUI;
494
+ }
487
495
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(IntlProvider, { currentLocale: locale, i18nStore, children });
488
496
  }
489
497
 
490
498
  // src/createI18nContext.tsx
491
499
  var import_jsx_runtime3 = require("react/jsx-runtime");
492
500
  function createI18nContext(i18nStore) {
493
- if (import_shared_utils5.validator.isNullish(i18nStore)) {
501
+ if (import_shared_utils6.validator.isNullish(i18nStore)) {
494
502
  throw new InvalidI18nContextStateError(
495
503
  "\u26A0\uFE0F no i18nStore provided. To use createI18nContext, you must provide an i18nStore as a parameter"
496
504
  );
package/dist/index.mjs CHANGED
@@ -20,7 +20,7 @@ var __spreadValues = (a, b) => {
20
20
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
21
 
22
22
  // src/createI18nContext.tsx
23
- import { validator as validator4 } from "@sheet-i18n/shared-utils";
23
+ import { validator as validator5 } from "@sheet-i18n/shared-utils";
24
24
  import { I18nStore } from "@sheet-i18n/react-core";
25
25
 
26
26
  // src/Provider/IntlProvider.tsx
@@ -435,39 +435,47 @@ var getLocaleStorageManager = (i18nStore, storage) => {
435
435
  import { useEffect as useEffect2, useState as useState2 } from "react";
436
436
  var LISTENER_ID = "LOCALE_STORAGE_LISTENER_ID";
437
437
  function useLocaleStorage(localeStorageManager) {
438
- var _a;
439
- const [locale, setLocale] = useState2((_a = localeStorageManager == null ? void 0 : localeStorageManager.getLocale) == null ? void 0 : _a.call(localeStorageManager));
438
+ const [locale, setLocale] = useState2();
439
+ useEffect2(() => {
440
+ const storedLocale = localeStorageManager.getLocale();
441
+ setLocale(storedLocale);
442
+ }, []);
440
443
  useEffect2(() => {
441
- var _a2;
442
- (_a2 = localeStorageManager == null ? void 0 : localeStorageManager.observerManager) == null ? void 0 : _a2.addListener({
444
+ var _a;
445
+ (_a = localeStorageManager == null ? void 0 : localeStorageManager.observerManager) == null ? void 0 : _a.addListener({
443
446
  listenerId: LISTENER_ID,
444
447
  listener: (newLocale) => {
445
448
  setLocale(newLocale);
446
449
  }
447
450
  });
448
451
  return () => {
449
- var _a3;
450
- (_a3 = localeStorageManager == null ? void 0 : localeStorageManager.observerManager) == null ? void 0 : _a3.removeListener(LISTENER_ID);
452
+ var _a2;
453
+ (_a2 = localeStorageManager == null ? void 0 : localeStorageManager.observerManager) == null ? void 0 : _a2.removeListener(LISTENER_ID);
451
454
  };
452
455
  }, []);
453
456
  return { locale };
454
457
  }
455
458
 
456
459
  // src/Provider/StorageBasedIntlProvider.tsx
460
+ import { validator as validator4 } from "@sheet-i18n/shared-utils";
457
461
  import { jsx as jsx2 } from "react/jsx-runtime";
458
462
  function StorageBasedIntlProvider({
459
463
  i18nStore,
460
464
  storageManager,
465
+ fallbackUI = null,
461
466
  children
462
467
  }) {
463
468
  const { locale } = useLocaleStorage(storageManager);
469
+ if (validator4.isNullish(locale)) {
470
+ return fallbackUI;
471
+ }
464
472
  return /* @__PURE__ */ jsx2(IntlProvider, { currentLocale: locale, i18nStore, children });
465
473
  }
466
474
 
467
475
  // src/createI18nContext.tsx
468
476
  import { jsx as jsx3 } from "react/jsx-runtime";
469
477
  function createI18nContext(i18nStore) {
470
- if (validator4.isNullish(i18nStore)) {
478
+ if (validator5.isNullish(i18nStore)) {
471
479
  throw new InvalidI18nContextStateError(
472
480
  "\u26A0\uFE0F no i18nStore provided. To use createI18nContext, you must provide an i18nStore as a parameter"
473
481
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheet-i18n/react-client",
3
- "version": "1.5.1",
3
+ "version": "1.5.2-canary.0",
4
4
  "description": "a client package for react modules used by sheet-i18n",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -26,8 +26,8 @@
26
26
  "license": "ISC",
27
27
  "dependencies": {
28
28
  "@sheet-i18n/shared-utils": "1.8.1",
29
- "@sheet-i18n/errors": "1.8.1",
30
- "@sheet-i18n/react-core": "1.5.1"
29
+ "@sheet-i18n/react-core": "1.5.1",
30
+ "@sheet-i18n/errors": "1.8.1"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/react": "^19.0.2",