@basthon/console-react 0.3.2 → 0.3.4

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.
@@ -2,6 +2,7 @@ import { FC, PropsWithChildren } from "react";
2
2
  import { type BasthonContextProps } from "@basthon/gui-react";
3
3
  import { type Theme } from "../state-manager";
4
4
  interface InnerAppProps {
5
+ initFromStorage?: boolean;
5
6
  forceTheme?: Theme;
6
7
  compactHeader?: boolean;
7
8
  onChangeEditor?: () => void;
@@ -9,10 +9,10 @@ import { Header } from "./header";
9
9
  import { MainContainer } from "./main-container";
10
10
  import { Footer } from "./footer";
11
11
  import * as styles from "./styles.module.scss";
12
- const InnerApp = ({ forceTheme, compactHeader, onChangeEditor, children, }) => {
12
+ const InnerApp = ({ initFromStorage, forceTheme, compactHeader, onChangeEditor, children, }) => {
13
13
  const gui = useGUI();
14
14
  // state
15
- const [state, dispatch] = stateManager.useReducer(gui.language);
15
+ const [state, dispatch] = stateManager.useReducer(gui.language, initFromStorage ?? true);
16
16
  const language = stateManager.language(state);
17
17
  const theme = forceTheme != null ? forceTheme : stateManager.theme(state);
18
18
  // set data-theme for basthon-loader footer
@@ -29,9 +29,14 @@ const InnerApp = ({ forceTheme, compactHeader, onChangeEditor, children, }) => {
29
29
  /**
30
30
  * Main app setting up state manager, header, main container and footer.
31
31
  */
32
- const ConsoleApp = ({ forceTheme, compactHeader, onChangeEditor, children, ...props }) => {
32
+ const ConsoleApp = ({ initFromStorage, forceTheme, compactHeader, onChangeEditor, children, ...props }) => {
33
33
  props.GUI = GUI;
34
- const innerProps = { forceTheme, compactHeader, onChangeEditor };
34
+ const innerProps = {
35
+ initFromStorage,
36
+ forceTheme,
37
+ compactHeader,
38
+ onChangeEditor,
39
+ };
35
40
  return (_jsx(BasthonContext, { ...props, children: _jsx(InnerApp, { ...innerProps, children: children }) }));
36
41
  };
37
42
  export default ConsoleApp;
@@ -17,7 +17,7 @@ interface Action {
17
17
  payload?: Theme | ViewMode | RightPanel | State | string;
18
18
  }
19
19
  declare const stateManager: {
20
- useReducer: (language: Language) => readonly [{
20
+ useReducer: (language: Language, initFromStorage: boolean) => readonly [{
21
21
  language: Language;
22
22
  ready: boolean;
23
23
  theme: Theme;
@@ -42,7 +42,8 @@ const reducer = (state, action) => {
42
42
  const { type, payload } = action;
43
43
  switch (type) {
44
44
  case "init": {
45
- const state = copy(payload);
45
+ if (payload != null)
46
+ state = copy(payload);
46
47
  state.ready = true;
47
48
  return state;
48
49
  }
@@ -77,16 +78,19 @@ const reducer = (state, action) => {
77
78
  };
78
79
  /* stateManager exposed as API */
79
80
  const stateManager = {
80
- useReducer: (language) => {
81
+ useReducer: (language, initFromStorage) => {
81
82
  const [state, dispatch] = useImmerReducer(reducer, {
82
83
  ...initialState,
83
84
  language,
84
85
  });
85
86
  // dispatch init from storage
86
87
  useEffect(() => {
87
- stateFromStorage(language).then((payload) => {
88
+ (async () => {
89
+ let payload = undefined;
90
+ if (initFromStorage)
91
+ payload = await stateFromStorage(language);
88
92
  dispatch({ type: "init", payload });
89
- });
93
+ })();
90
94
  }, []);
91
95
  return [state, dispatch];
92
96
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@basthon/console-react",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "description": "Basthon - Console React Component",
5
5
  "homepage": "https://basthon.fr",
6
6
  "bugs": {