index.tsx 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import {
  2. type ReactNode
  3. } from "react";
  4. import NCoreUIKitLocalize from "./localize";
  5. import NCoreUIKitSnackBar from "./snackBar";
  6. import NCoreUIKitDialog from "./dialog";
  7. import NCoreUIKitModal from "./modal";
  8. import NCoreUIKitTheme from "./theme";
  9. import NCoreUIKitToast from "./toast";
  10. import {
  11. type NCoreUIKitConfig
  12. } from "../types";
  13. import {
  14. Host
  15. } from "../helpers/portalize";
  16. class CoreContext<T extends NCoreUIKitConfig> {
  17. NCoreUIKitLocalize: NCoreUIKitLocalize<T>;
  18. NCoreUIKitSnackBar: NCoreUIKitSnackBar;
  19. NCoreUIKitTheme: NCoreUIKitTheme<T>;
  20. NCoreUIKitDialog: NCoreUIKitDialog;
  21. NCoreUIKitModal: NCoreUIKitModal;
  22. NCoreUIKitToast: NCoreUIKitToast;
  23. constructor(initialState: T) {
  24. this.NCoreUIKitTheme = new NCoreUIKitTheme({
  25. initialSelectedActiveSharpness: initialState.initialSelectedActiveSharpness,
  26. initialSelectedGapPropagation: initialState.initialSelectedGapPropagation,
  27. initialSelectedPalette: initialState.initialSelectedPalette,
  28. initialSelectedTheme: initialState.initialSelectedTheme,
  29. projectThemes: initialState.projectThemes
  30. });
  31. this.NCoreUIKitLocalize = new NCoreUIKitLocalize({
  32. initialSelectedLocale: initialState.initialSelectedLocale,
  33. projectLocales: initialState.projectLocales
  34. });
  35. this.NCoreUIKitModal = new NCoreUIKitModal({
  36. data: []
  37. });
  38. this.NCoreUIKitToast = new NCoreUIKitToast({
  39. data: []
  40. });
  41. this.NCoreUIKitSnackBar = new NCoreUIKitSnackBar({
  42. data: []
  43. });
  44. this.NCoreUIKitDialog = new NCoreUIKitDialog({
  45. data: []
  46. });
  47. }
  48. Provider = ({
  49. children
  50. }: {
  51. children: ReactNode
  52. }) => {
  53. const LocalizeContext = this.NCoreUIKitLocalize;
  54. const SnackBarContext = this.NCoreUIKitSnackBar;
  55. const DialogContext = this.NCoreUIKitDialog;
  56. const ModalContext = this.NCoreUIKitModal;
  57. const ToastContext = this.NCoreUIKitToast;
  58. const ThemeContext = this.NCoreUIKitTheme;
  59. return <ThemeContext.Provider>
  60. <LocalizeContext.Provider>
  61. <Host name="snack-bar-system">
  62. <SnackBarContext.Provider>
  63. <SnackBarContext.Render>
  64. <Host name="toast-system">
  65. <Host name="modal-system">
  66. <ModalContext.Provider>
  67. <ModalContext.Render>
  68. <DialogContext.Provider>
  69. <DialogContext.Render>
  70. <ToastContext.Provider>
  71. <ToastContext.Render>
  72. {children}
  73. </ToastContext.Render>
  74. </ToastContext.Provider>
  75. </DialogContext.Render>
  76. </DialogContext.Provider>
  77. </ModalContext.Render>
  78. </ModalContext.Provider>
  79. </Host>
  80. </Host>
  81. </SnackBarContext.Render>
  82. </SnackBarContext.Provider>
  83. </Host>
  84. </LocalizeContext.Provider>
  85. </ThemeContext.Provider>;
  86. };
  87. };
  88. export default CoreContext;