index.tsx 5.2 KB

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