@dappworks/kit 0.4.234 → 0.4.236

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.
@@ -1,4 +1,4 @@
1
- import { getStyle } from './chunk-K73JTEJQ.mjs';
1
+ import { getStyle } from './chunk-YG4RDLYA.mjs';
2
2
  import { useStore, rootStore } from './chunk-XSGTWROT.mjs';
3
3
  import { __spreadValues, __spreadProps } from './chunk-R4SQKVDQ.mjs';
4
4
  import React from 'react';
@@ -73,4 +73,4 @@ var DialogStore = class _DialogStore {
73
73
 
74
74
  export { DialogStore };
75
75
  //# sourceMappingURL=out.js.map
76
- //# sourceMappingURL=chunk-GT4R5SDI.mjs.map
76
+ //# sourceMappingURL=chunk-63DQOYRW.mjs.map
@@ -1,5 +1,5 @@
1
1
  import { AIem } from './chunk-NPQ7GCFM.mjs';
2
- import { DialogStore } from './chunk-GT4R5SDI.mjs';
2
+ import { DialogStore } from './chunk-63DQOYRW.mjs';
3
3
  import { ToastPlugin } from './chunk-IMOLRP7I.mjs';
4
4
  import { RootStore, rootStore } from './chunk-XSGTWROT.mjs';
5
5
  import { helper } from './chunk-R4N52NI2.mjs';
@@ -1049,4 +1049,4 @@ var AppProvider = observer(({ children }) => {
1049
1049
 
1050
1050
  export { AppProvider, AutoMan, BigNumberInputState, BigNumberState, ObjectPool, PromiseHook, StorageListState, StorageState, WalletConfigStore, WalletHistoryStore, WalletRpcStore, WalletStore };
1051
1051
  //# sourceMappingURL=out.js.map
1052
- //# sourceMappingURL=chunk-OPCLNLJF.mjs.map
1052
+ //# sourceMappingURL=chunk-VXA4UKJU.mjs.map
@@ -93,12 +93,14 @@ var primary_default = {
93
93
  var getStyle = (theme, key) => {
94
94
  switch (theme) {
95
95
  case "default":
96
- return _.get(default_default, key);
96
+ return _.get(default_default, key) || {};
97
97
  case "primary":
98
- return _.get(primary_default, key);
98
+ return _.get(primary_default, key) || {};
99
+ default:
100
+ return {};
99
101
  }
100
102
  };
101
103
 
102
104
  export { getStyle };
103
105
  //# sourceMappingURL=out.js.map
104
- //# sourceMappingURL=chunk-K73JTEJQ.mjs.map
106
+ //# sourceMappingURL=chunk-YG4RDLYA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../themes/default.json","../themes/primary.json","../themes/index.ts"],"names":[],"mappings":";;;;;AAAA;AAAA,EACE,OAAS;AAAA,IACP,YAAc;AAAA,MACZ,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,aAAe;AAAA,IACb,YAAc;AAAA,MACZ,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,gBAAkB;AAAA,IAChB,YAAc;AAAA,MACZ,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,kBAAoB;AAAA,IAClB,qBAAuB;AAAA,MACrB,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,cAAgB;AAAA,IACd,YAAc;AAAA,MACZ,gBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,sBAAwB;AAAA,IACtB,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,SAAW;AAAA,MACX,gBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,gBAAkB;AAAA,IAChB,YAAc;AAAA,MACZ,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,MAAQ;AAAA,IACN,WAAa;AAAA,EACf;AACF;;;ACzCA;AAAA,EACE,OAAS;AAAA,IACP,YAAc;AAAA,MACZ,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,aAAe;AAAA,IACb,YAAc;AAAA,MACZ,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,gBAAkB;AAAA,IAChB,YAAc;AAAA,MACZ,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,kBAAoB;AAAA,IAClB,qBAAuB;AAAA,MACrB,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,cAAgB;AAAA,IACd,YAAc;AAAA,MACZ,SAAW;AAAA,MACX,gBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,sBAAwB;AAAA,IACtB,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,SAAW;AAAA,MACX,gBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,gBAAkB;AAAA,IAChB,YAAc;AAAA,MACZ,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,MAAQ;AAAA,IACN,WAAa;AAAA,EACf;AACF;;;ACnCO,IAAM,WAAW,CAAC,OAAkB,QAAsB;AAC/D,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO,EAAE,IAAI,iBAAc,GAAG,KAAK,CAAC;AAAA,IACtC,KAAK;AACH,aAAO,EAAE,IAAI,iBAAc,GAAG,KAAK,CAAC;AAAA,IACtC;AACE,aAAO,CAAC;AAAA,EACZ;AACF","sourcesContent":["{\n \"Modal\": {\n \"classNames\": {\n \"base\": \"\"\n }\n },\n \"InputWidget\": {\n \"classNames\": {\n \"inputWrapper\": \"\"\n }\n },\n \"TextareaWidget\": {\n \"classNames\": {\n \"inputWrapper\": \"\"\n }\n },\n \"DatePickerWidget\": {\n \"dateInputClassNames\": {\n \"inputWrapper\": \"\"\n }\n },\n \"SelectWidget\": {\n \"classNames\": {\n \"popoverContent\": \"rounded-lg shadow-md border dark:border-[#3e3e3e]\"\n }\n },\n \"MultipleSelectWidget\": {\n \"classNames\": {\n \"base\": \"w-full\",\n \"trigger\": \"min-h-12 py-1\",\n \"popoverContent\": \"rounded-lg shadow-md border dark:border-[#3e3e3e]\"\n }\n },\n \"CheckboxWidget\": {\n \"classNames\": {\n \"base\": \"m-0 flex items-center justify-start w-full cursor-pointer rounded-lg gap-2 p-[13px] bg-content2\"\n }\n },\n \"Card\": {\n \"className\": \"\"\n }\n}\n","{\n \"Modal\": {\n \"classNames\": {\n \"base\": \"dark:bg-[#09090B] border dark:border-[#2c2c2c] rounded-lg shadow-md\"\n }\n },\n \"InputWidget\": {\n \"classNames\": {\n \"inputWrapper\": \"rounded-lg shadow-none border dark:border-[#2c2c2c] !bg-transparent data-[hover=true]:!bg-default-50 group-data-[focus=true]:!bg-transparent\"\n }\n },\n \"TextareaWidget\": {\n \"classNames\": {\n \"inputWrapper\": \"rounded-lg shadow-none border dark:border-[#2c2c2c] !bg-transparent data-[hover=true]:!bg-default-50 group-data-[focus=true]:!bg-transparent\"\n }\n },\n \"DatePickerWidget\": {\n \"dateInputClassNames\": {\n \"inputWrapper\": \"rounded-lg bg-transparent border dark:border-[#2c2c2c] hover:bg-default-50\"\n }\n },\n \"SelectWidget\": {\n \"classNames\": {\n \"trigger\": \"rounded-lg bg-transparent shadow-none border dark:border-[#2c2c2c] data-[hover=true]:bg-default-50\",\n \"popoverContent\": \"rounded-lg shadow-md border border-[#F4F4F5] dark:border-[#3e3e3e]\"\n }\n },\n \"MultipleSelectWidget\": {\n \"classNames\": {\n \"base\": \"w-full\",\n \"trigger\": \"min-h-12 py-1 rounded-lg bg-transparent shadow-none border dark:border-[#2c2c2c] data-[hover=true]:bg-default-50\",\n \"popoverContent\": \"rounded-lg shadow-md border dark:border-[#3e3e3e]\"\n }\n },\n \"CheckboxWidget\": {\n \"classNames\": {\n \"base\": \"m-0 flex items-center justify-start w-full cursor-pointer rounded-lg gap-2 p-[13px] bg-transparent border dark:border-[#2c2c2c]\"\n }\n },\n \"Card\": {\n \"className\": \"dark:bg-[#09090B]\"\n }\n}\n","import { _ } from \"../lib/lodash\";\nimport defaultTheme from \"./default.json\";\nimport primaryTheme from \"./primary.json\";\n\nexport type ThemeType = \"default\" | \"primary\";\nexport type StyleKeyType = keyof typeof defaultTheme;\n\nexport const getStyle = (theme: ThemeType, key: StyleKeyType) => {\n switch (theme) {\n case \"default\":\n return _.get(defaultTheme, key) || {};\n case \"primary\":\n return _.get(primaryTheme, key) || {};\n default:\n return {};\n }\n};\n"]}
package/dist/form.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import React$1, { Dispatch, SetStateAction, ReactNode } from 'react';
2
- import { TabsProps, ButtonProps, CheckboxProps, SlotsToClasses, InputSlots, InputProps, SelectSlots, SelectProps, SelectedItems, DatePickerProps, ModalSlots } from '@nextui-org/react';
2
+ import { ButtonProps, TabsProps, CheckboxProps, SlotsToClasses, InputSlots, InputProps, SelectSlots, SelectProps, SelectedItems, DatePickerProps, ModalSlots } from '@nextui-org/react';
3
3
  import { UiSchema, RJSFSchema, WidgetProps, Widget } from '@rjsf/utils';
4
4
  import * as _rjsf_validator_ajv8_lib_validator from '@rjsf/validator-ajv8/lib/validator';
5
5
  import Form, { IChangeEvent } from '@rjsf/core';
@@ -47,65 +47,18 @@ declare class JSONSchemaValue<T> {
47
47
  reset(): void;
48
48
  }
49
49
 
50
- type LayoutType = 'TabLayout' | 'GridLayout' | 'ListLayout' | 'SimpleLayout';
51
- type FieldLayoutType<T, F extends keyof T> = Array<keyof NonNullable<T[F]>> | Array<Array<keyof NonNullable<T[F]>> | keyof NonNullable<T[F]>>;
52
- type SubmitButtonProps<T> = ButtonProps & {
53
- onAfterSubmit?: (formKey: FormKey<T>, data: FormDataOfKey<T>, setLoading: Dispatch<SetStateAction<boolean>>) => void;
50
+ declare const COMPONENTS: {
51
+ GridLayout: <T extends FormDataType>(props: JSONFormProps<T>) => React$1.JSX.Element;
52
+ TabLayout: <T extends FormDataType>(props: JSONFormProps<T>) => React$1.JSX.Element;
53
+ ListLayout: <T extends FormDataType>(props: JSONFormProps<T>) => React$1.JSX.Element;
54
+ SimpleLayout: <T extends FormDataType>(props: JSONFormProps<T>) => React$1.JSX.Element;
54
55
  };
55
- type CombFormsCustomRender<T> = (formStates: {
56
- [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>;
57
- }) => React$1.ReactNode;
58
- type CombFormsCustomRenderMap<T> = {
59
- Top?: CombFormsCustomRender<T>;
60
- SubmitButtonBefore?: CombFormsCustomRender<T>;
61
- SubmitButtonAfter?: CombFormsCustomRender<T>;
62
- };
63
- type SubformCustomRender<T> = (formKey: FormKey<T>, formState: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => React$1.ReactNode;
64
- type SubformCustomRenderMap<T> = {
65
- Top?: SubformCustomRender<T>;
66
- SubmitButtonBefore?: SubformCustomRender<T>;
67
- SubmitButtonAfter?: SubformCustomRender<T>;
68
- };
69
- type FormLayoutType<T, L> = L extends 'TabLayout' | 'ListLayout' | 'SimpleLayout' ? {
70
- [F in keyof T]?: {
71
- title?: string;
72
- titleBoxCss?: string;
73
- fieldLayout?: FieldLayoutType<T, F>;
74
- submitButtonProps?: SubmitButtonProps<T>;
75
- customRender?: SubformCustomRenderMap<T>;
76
- };
77
- } : L extends 'GridLayout' ? {
78
- [F in keyof T]?: {
79
- title?: string;
80
- titleBoxCss?: string;
81
- fieldLayout?: FieldLayoutType<T, F>;
82
- colSpan?: number;
83
- cardCss?: string;
84
- submitButtonProps?: SubmitButtonProps<T>;
85
- customRender?: SubformCustomRenderMap<T>;
86
- };
87
- } : never;
88
- type LayoutConfigType<T, L> = L extends 'TabLayout' ? {
89
- $type: 'TabLayout';
90
- $tabsProps?: TabsProps;
91
- $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
92
- } & FormLayoutType<T, L> : L extends 'GridLayout' ? {
93
- $type: 'GridLayout';
94
- $gridColumn?: number;
95
- $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
96
- } & FormLayoutType<T, L> : L extends 'ListLayout' ? {
97
- $type: 'ListLayout';
98
- $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
99
- } & FormLayoutType<T, L> : L extends 'SimpleLayout' ? {
100
- $type: 'SimpleLayout';
101
- $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
102
- } & FormLayoutType<T, L> : never;
103
56
  type FormDataType = {
104
57
  [key: string]: {
105
58
  [key: string]: string | number | boolean | Record<string, string | number | boolean>;
106
59
  };
107
60
  };
108
- type FormConfigType<T> = {
61
+ type FormConfigType<T extends FormDataType> = {
109
62
  [F in keyof T]?: {
110
63
  [X in keyof T[F]]?: {
111
64
  title?: string;
@@ -120,15 +73,71 @@ type FormConfigType<T> = {
120
73
  } & UiSchema;
121
74
  };
122
75
  };
123
- type FormKey<T = FormDataType> = keyof T;
124
- type FormDataOfKey<T = FormDataType> = T[FormKey<T>];
125
- type JSONFormProps<T = FormDataType> = {
76
+ type SubmitButtonProps<T extends FormDataType> = ButtonProps & {
77
+ onAfterSubmit?: (formKey: FormKey<T>, data: FormDataOfKey<T>, setLoading: Dispatch<SetStateAction<boolean>>) => void;
78
+ };
79
+ type CombFormsCustomRender<T extends FormDataType> = (formStates: {
80
+ [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>;
81
+ }) => React$1.ReactNode;
82
+ type CombFormsCustomRenderMap<T extends FormDataType> = {
83
+ Top?: CombFormsCustomRender<T>;
84
+ SubmitButtonBefore?: CombFormsCustomRender<T>;
85
+ SubmitButtonAfter?: CombFormsCustomRender<T>;
86
+ };
87
+ type SubformCustomRender<T extends FormDataType> = (formKey: FormKey<T>, formState: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => React$1.ReactNode;
88
+ type SubformCustomRenderMap<T extends FormDataType> = {
89
+ Top?: SubformCustomRender<T>;
90
+ SubmitButtonBefore?: SubformCustomRender<T>;
91
+ SubmitButtonAfter?: SubformCustomRender<T>;
92
+ };
93
+ type SubformLayoutBaseConfig<T extends FormDataType, F extends keyof T> = {
94
+ title?: string;
95
+ titleBoxCss?: string;
96
+ fieldLayout?: Array<keyof NonNullable<T[F]>> | Array<Array<keyof NonNullable<T[F]>> | keyof NonNullable<T[F]>>;
97
+ submitButtonProps?: SubmitButtonProps<T>;
98
+ customRender?: SubformCustomRenderMap<T>;
99
+ };
100
+ interface LayoutConfigMap<T extends FormDataType> {
101
+ GridLayout: {
102
+ $type: 'GridLayout';
103
+ $gridColumn?: number;
104
+ $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
105
+ } & {
106
+ [F in keyof T]?: SubformLayoutBaseConfig<T, F> & {
107
+ colSpan?: number;
108
+ cardCss?: string;
109
+ };
110
+ };
111
+ TabLayout: {
112
+ $type: 'TabLayout';
113
+ $tabsProps?: TabsProps;
114
+ $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
115
+ } & {
116
+ [F in keyof T]?: SubformLayoutBaseConfig<T, F>;
117
+ };
118
+ ListLayout: {
119
+ $type: 'ListLayout';
120
+ $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
121
+ } & {
122
+ [F in keyof T]?: SubformLayoutBaseConfig<T, F>;
123
+ };
124
+ SimpleLayout: {
125
+ $type: 'SimpleLayout';
126
+ $combFormsCustomRender?: CombFormsCustomRenderMap<T>;
127
+ } & {
128
+ [F in keyof T]?: SubformLayoutBaseConfig<T, F>;
129
+ };
130
+ }
131
+ type LayoutType = keyof typeof COMPONENTS;
132
+ type LayoutConfigType<T extends FormDataType, L extends LayoutType> = LayoutConfigMap<T>[L];
133
+ type FormKey<T extends FormDataType> = keyof T;
134
+ type FormDataOfKey<T extends FormDataType> = T[FormKey<T>];
135
+ type JSONFormProps<T extends FormDataType> = {
126
136
  className?: string;
127
137
  theme?: ThemeType;
128
138
  formData: T;
129
139
  formConfig?: FormConfigType<T>;
130
140
  layoutConfig?: LayoutConfigType<T, LayoutType>;
131
- children?: any;
132
141
  onBatchSubmit?: (data: T, setLoading: Dispatch<SetStateAction<boolean>>) => void;
133
142
  onSet?: (v: FormDataOfKey<T>, form: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => FormDataOfKey<T>;
134
143
  onChange?: (data: Partial<T>) => void;
@@ -372,4 +381,4 @@ declare function getSimpleFormData<T>(data: T, metadata: {
372
381
  [key: string]: any;
373
382
  } & Partial<JSONSchemaFormState<any>>, config: Partial<FormModalStore>, onSet?: (v: T, form: JSONSchemaFormState<T, UiSchema>) => T, theme?: ThemeType): Promise<T>;
374
383
 
375
- export { CheckboxWidget, type CheckboxWidgetProps, type CheckboxWidgetUIOptions, ComplexFormModalStore, DatePickerWidget, type DatePickerWidgetProps, type DatePickerWidgetUIOptions, EditorWidget, type EditorWidgetProps, type EditorWidgetUIOptions, type FieldLayoutType, type FormConfigType, type FormDataOfKey, type FormDataType, type FormKey, type FormLayoutType, FormModalStore, InputWidget, type InputWidgetProps, type InputWidgetUIOptions, JSONForm, type JSONFormProps, JSONSchemaForm, type LayoutConfigType, type LayoutType, MultipleSelectWidget, type MultipleSelectWidgetProps, type MultipleSelectWidgetUIOptions, SelectWidget, type SelectWidgetProps, type SelectWidgetUIOptions, TextareaWidget, type TextareaWidgetProps, type TextareaWidgetUIOptions, getComplexFormData, getFormData, getFormState, getSimpleFormData };
384
+ export { CheckboxWidget, type CheckboxWidgetProps, type CheckboxWidgetUIOptions, ComplexFormModalStore, DatePickerWidget, type DatePickerWidgetProps, type DatePickerWidgetUIOptions, EditorWidget, type EditorWidgetProps, type EditorWidgetUIOptions, type FormConfigType, type FormDataOfKey, type FormDataType, type FormKey, FormModalStore, InputWidget, type InputWidgetProps, type InputWidgetUIOptions, JSONForm, type JSONFormProps, JSONSchemaForm, type LayoutConfigType, type LayoutType, MultipleSelectWidget, type MultipleSelectWidgetProps, type MultipleSelectWidgetUIOptions, SelectWidget, type SelectWidgetProps, type SelectWidgetUIOptions, TextareaWidget, type TextareaWidgetProps, type TextareaWidgetUIOptions, getComplexFormData, getFormData, getFormState, getSimpleFormData };
package/dist/form.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { getStyle } from './chunk-K73JTEJQ.mjs';
1
+ import { getStyle } from './chunk-YG4RDLYA.mjs';
2
2
  import { useStore, RootStore } from './chunk-XSGTWROT.mjs';
3
3
  import { helper } from './chunk-R4N52NI2.mjs';
4
4
  import { _ } from './chunk-K7LFG5BA.mjs';
@@ -1017,7 +1017,7 @@ var TabLayout = (props) => {
1017
1017
  };
1018
1018
 
1019
1019
  // components/JSONForm/index.tsx
1020
- var components = {
1020
+ var COMPONENTS = {
1021
1021
  GridLayout,
1022
1022
  TabLayout,
1023
1023
  ListLayout,
@@ -1026,13 +1026,8 @@ var components = {
1026
1026
  var JSONForm = (props) => {
1027
1027
  var _a;
1028
1028
  const type = ((_a = props.layoutConfig) == null ? void 0 : _a.$type) || "SimpleLayout";
1029
- const Component = components[type];
1030
- return /* @__PURE__ */ React7.createElement(
1031
- "div",
1032
- { className: props.className },
1033
- // @ts-ignore
1034
- /* @__PURE__ */ React7.createElement(Component, __spreadValues({}, props))
1035
- );
1029
+ const Comp = COMPONENTS[type];
1030
+ return /* @__PURE__ */ React7.createElement("div", { className: props.className }, /* @__PURE__ */ React7.createElement(Comp, __spreadValues({}, props)));
1036
1031
  };
1037
1032
  function TextareaWidget(props) {
1038
1033
  var _a;
package/dist/form.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../components/JSONForm/index.tsx","../components/JSONForm/Layouts/gridLayout.tsx","../components/JSONForm/Layouts/format.tsx","../components/JSONFormWidgets/CheckboxWidget/index.tsx","../components/JSONFormWidgets/InputWidget/index.tsx","../components/JSONFormWidgets/SelectWidget/index.tsx","../components/JSONFormWidgets/MultipleSelectWidget/index.tsx","../components/JSONFormWidgets/EditorWidget/index.tsx","../store/standard/JSONSchemaState.ts","../components/JSONSchemaForm/index.tsx","../components/ui/grid/col.tsx","../components/ui/grid/styles.tsx","../components/ui/grid/grid.tsx","../components/JSONForm/Layouts/listLayout.tsx","../components/JSONForm/Layouts/simpleLayout.tsx","../components/JSONForm/Layouts/tabLayout.tsx","../components/JSONFormWidgets/TextareaWidget/index.tsx","../components/JSONFormWidgets/DatePickerWidget/index.tsx","../module/ComplexFormModal/Provider.tsx","../module/ComplexFormModal/index.tsx","../module/FormModal/index.tsx","../module/FormModal/Provider.tsx"],"names":["React","useState","Button","errMsg","useMemo","value","useCallback","Select","SelectItem","useRef","_a","formData","toJS","SubmitButton","numColSpan","_b","_c","_d","useEffect","ChevronDown","ChevronUp","observer","EventEmitter","makeAutoObservable","Modal","ModalBody","ModalContent","ModalHeader","Draggable","Provider_default","getFormState"],"mappings":"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","sourcesContent":["import React, { Dispatch, SetStateAction } from \"react\";\nimport { ButtonProps, TabsProps } from \"@nextui-org/react\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { JSONSchemaFormState } from \"../../store/standard/JSONSchemaState\";\nimport { GridLayout } from \"./Layouts/gridLayout\";\nimport { ListLayout } from \"./Layouts/listLayout\";\nimport { SimpleLayout } from \"./Layouts/simpleLayout\";\nimport { TabLayout } from \"./Layouts/tabLayout\";\nimport { ThemeType } from \"../../themes\";\n\nexport type LayoutType = 'TabLayout' | 'GridLayout' | 'ListLayout' | 'SimpleLayout';\n\nexport type FieldLayoutType<T, F extends keyof T> = Array<keyof NonNullable<T[F]>> | Array<Array<keyof NonNullable<T[F]>> | keyof NonNullable<T[F]>>;\n\ntype SubmitButtonProps<T> = ButtonProps & { onAfterSubmit?: (formKey: FormKey<T>, data: FormDataOfKey<T>, setLoading: Dispatch<SetStateAction<boolean>>) => void };\n\ntype CombFormsCustomRender<T> = (formStates: { [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema> }) => React.ReactNode;\n\ntype CombFormsCustomRenderMap<T> = {\n Top?: CombFormsCustomRender<T>;\n SubmitButtonBefore?: CombFormsCustomRender<T>;\n SubmitButtonAfter?: CombFormsCustomRender<T>;\n}\n\ntype SubformCustomRender<T> = (formKey: FormKey<T>, formState: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => React.ReactNode;\n\ntype SubformCustomRenderMap<T> = {\n Top?: SubformCustomRender<T>;\n SubmitButtonBefore?: SubformCustomRender<T>;\n SubmitButtonAfter?: SubformCustomRender<T>;\n}\n\nexport type FormLayoutType<T, L> = L extends 'TabLayout' | 'ListLayout' | 'SimpleLayout'\n ? {\n [F in keyof T]?: {\n title?: string;\n titleBoxCss?: string;\n fieldLayout?: FieldLayoutType<T, F>;\n submitButtonProps?: SubmitButtonProps<T>;\n customRender?: SubformCustomRenderMap<T>;\n };\n }\n : L extends 'GridLayout'\n ? {\n [F in keyof T]?: {\n title?: string;\n titleBoxCss?: string;\n fieldLayout?: FieldLayoutType<T, F>;\n colSpan?: number;\n cardCss?: string;\n submitButtonProps?: SubmitButtonProps<T>;\n customRender?: SubformCustomRenderMap<T>;\n };\n }\n : never;\n\nexport type LayoutConfigType<T, L> = L extends 'TabLayout'\n ? { $type: 'TabLayout'; $tabsProps?: TabsProps; $combFormsCustomRender?: CombFormsCustomRenderMap<T> } & FormLayoutType<T, L>\n : L extends 'GridLayout'\n ? { $type: 'GridLayout'; $gridColumn?: number; $combFormsCustomRender?: CombFormsCustomRenderMap<T> } & FormLayoutType<T, L>\n : L extends 'ListLayout'\n ? { $type: 'ListLayout'; $combFormsCustomRender?: CombFormsCustomRenderMap<T> } & FormLayoutType<T, L>\n : L extends 'SimpleLayout'\n ? { $type: 'SimpleLayout'; $combFormsCustomRender?: CombFormsCustomRenderMap<T> } & FormLayoutType<T, L>\n : never;\n\nexport type FormDataType = {\n [key: string]: {\n [key: string]: string | number | boolean | Record<string, string | number | boolean>;\n };\n};\n\nexport type FormConfigType<T> = {\n [F in keyof T]?: {\n [X in keyof T[F]]?: {\n title?: string;\n required?: boolean;\n requiredErrMsg?: string;\n validate?: (v: any) => string | void;\n selectOptions?: { label: string; value: string }[];\n isMultipleSelect?: boolean;\n } & UiSchema;\n };\n};\n\nexport type FormKey<T = FormDataType> = keyof T;\n\nexport type FormDataOfKey<T = FormDataType> = T[FormKey<T>];\n\nexport type JSONFormProps<T = FormDataType> = {\n className?: string;\n theme?: ThemeType;\n formData: T;\n formConfig?: FormConfigType<T>;\n layoutConfig?: LayoutConfigType<T, LayoutType>;\n children?: any;\n onBatchSubmit?: (data: T, setLoading: Dispatch<SetStateAction<boolean>>) => void;\n onSet?: (v: FormDataOfKey<T>, form: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => FormDataOfKey<T>;\n onChange?: (data: Partial<T>) => void;\n onReady?: (formStates: { [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema> }) => void;\n batchSubmitButtonProps?: ButtonProps & { onBatchSubmit?: (formData: T, setLoading: Dispatch<SetStateAction<boolean>>) => void };\n};\n\nconst components = {\n GridLayout,\n TabLayout,\n ListLayout,\n SimpleLayout,\n};\n\nexport const JSONForm = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const type = props.layoutConfig?.$type || 'SimpleLayout';\n const Component = components[type];\n return (\n <div className={props.className}>\n {\n // @ts-ignore\n <Component {...props} />\n }\n </div>\n );\n};\n","import React, { useEffect } from \"react\";\nimport { Card } from \"@nextui-org/react\";\nimport { FormDataType, JSONFormProps, LayoutConfigType } from \"..\";\nimport { BatchSubmitButton, SubmitButton, getFormState } from \"./format\";\nimport { JSONSchemaForm } from \"../../../components/JSONSchemaForm\";\nimport { Grid, Col } from '../../../components/ui/grid';\nimport { cn } from '../../../lib/utils';\nimport { getStyle } from \"../../../themes\";\n\nexport const GridLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig, onBatchSubmit, batchSubmitButtonProps, onReady, theme } = props;\n const { $type, $gridColumn, $combFormsCustomRender, ...formLayout } = layoutConfig as LayoutConfigType<T, 'GridLayout'>;\n const formStates = getFormState(props, formLayout, theme);\n const cardStyle = getStyle(theme || 'default', 'Card');\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n {$combFormsCustomRender?.Top?.(formStates)}\n <Grid numItems={$gridColumn ?? 1} className=\"gap-2\">\n {Object.keys(formStates).map((key) => {\n const layout = formLayout[key];\n return (\n <Col numColSpan={layout?.colSpan ?? 1} key={key} id={`form-${key}`}>\n <Card className={cn(\"h-full m-0 p-4 shadow-sm border dark:border-[#3e3e3e]\", cardStyle.className, layout?.cardCss)}>\n <div className={cn('mb-2 font-bold text-center', layout?.titleBoxCss)}>{layout?.title || key}</div>\n {layout?.customRender?.Top?.(key, formStates[key])}\n <JSONSchemaForm formState={formStates[key]}>\n {layout?.customRender?.SubmitButtonBefore?.(key, formStates[key])}\n {layout?.submitButtonProps && <SubmitButton formKey={key} formState={formStates[key]} buttonProps={layout.submitButtonProps} />}\n {layout?.customRender?.SubmitButtonAfter?.(key, formStates[key])}\n </JSONSchemaForm>\n </Card>\n </Col>\n );\n })}\n </Grid>\n {$combFormsCustomRender?.SubmitButtonBefore?.(formStates)}\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n {$combFormsCustomRender?.SubmitButtonAfter?.(formStates)}\n </>\n );\n};","import React, { useState } from \"react\";\nimport { Button } from \"@nextui-org/react\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { FormDataOfKey, JSONFormProps } from \"..\";\nimport { CheckboxWidget } from \"../../../components/JSONFormWidgets/CheckboxWidget\";\nimport { InputWidget } from \"../../../components/JSONFormWidgets/InputWidget\";\nimport { SelectWidget } from \"../../../components/JSONFormWidgets/SelectWidget\";\nimport { MultipleSelectWidget } from \"../../../components/JSONFormWidgets/MultipleSelectWidget\";\nimport { EditorWidget } from '../../../components/JSONFormWidgets/EditorWidget';\nimport {\n JSONSchemaFormState,\n JSONSchemaValue,\n} from \"../../../store/standard/JSONSchemaState\";\nimport { helper } from \"../../../lib/helper\";\nimport { cn } from \"../../../lib/utils\";\nimport { ThemeType } from \"../../../themes\";\n\nexport const getFormState = <T,>(\n props: JSONFormProps<T>,\n formLayout: { [x: string]: { fieldLayout?: any[] } } = {},\n theme: ThemeType = 'default'\n) => {\n const { formData, formConfig, onSet, onChange } = props;\n\n const formStates: {\n [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>;\n } = {};\n\n Object.keys(formData).forEach((key) => {\n const metadata = formData[key];\n const formConfigData = formConfig?.[key] || {};\n const value = {};\n const required = [];\n const properties = Object.entries(metadata).reduce((p, c: any) => {\n const [k, v] = c;\n\n const type = typeof v;\n p[k] = {\n type,\n };\n\n value[k] = v;\n\n if (!formConfigData[k]) {\n formConfigData[k] = {};\n }\n\n if (formConfigData[k]?.title) {\n p[k].title = formConfigData[k].title || k;\n }\n\n if (formConfigData[k]?.required) {\n required.push(k);\n }\n\n if (type === \"string\" || type === \"number\") {\n if (formConfigData[k]?.selectOptions) {\n if (formConfigData[k]?.isMultipleSelect) {\n formConfigData[k]['ui:widget'] = MultipleSelectWidget;\n } else {\n formConfigData[k]['ui:widget'] = SelectWidget;\n }\n } else {\n if (!formConfigData[k][\"ui:widget\"]) {\n formConfigData[k][\"ui:widget\"] = InputWidget;\n\n if (type === \"number\") {\n formConfigData[k]['ui:options'] = {\n ...formConfigData[k]['ui:options'],\n inputType: 'number',\n };\n }\n\n if (helper.json.isJsonString(v)) {\n formConfigData[k]['ui:widget'] = EditorWidget;\n formConfigData[k][\"ui:options\"] = {\n ...formConfigData[k][\"ui:options\"],\n jsonStrSpace: 2,\n };\n }\n }\n }\n }\n\n if (type === \"boolean\") {\n formConfigData[k][\"ui:widget\"] = CheckboxWidget;\n }\n\n if (type === 'object') {\n // Instead of setting up \"definitions\", the easy way to do this is to edit the json directly using the EditorWidget\n p[k].type = 'string';\n value[k] = JSON.stringify(v, null, 2);\n formConfigData[k]['ui:widget'] = EditorWidget;\n }\n\n formConfigData[k]['theme'] = theme;\n return p;\n }, {});\n const schema = {\n type: \"object\",\n properties,\n required,\n };\n const form = new JSONSchemaFormState({\n // @ts-ignore\n schema,\n uiSchema: {\n \"ui:submitButtonOptions\": {\n norender: true,\n },\n ...formConfigData,\n layout: formLayout[key]?.fieldLayout,\n },\n // afterSubmit: async (e) => {\n // onSubmit?.(key as FormKey<T>, e.formData as FormDataOfKey<T>);\n // },\n afterChange: (e, id) => {\n const { formData } = e;\n if (formData && id) {\n const field = id.replace('root_', '');\n const data = {\n [key]: {\n [field]: formData[field],\n }\n };\n // @ts-ignore\n onChange?.(data);\n }\n },\n value: new JSONSchemaValue({\n default: value as FormDataOfKey<T>,\n onSet: (v) => {\n if (onSet) {\n return onSet(v as FormDataOfKey<T>, form);\n }\n return v;\n },\n }),\n });\n\n formStates[key] = form;\n });\n\n return formStates;\n};\n\nexport const BatchSubmitButton = ({ formStates, onSubmit, buttonProps }) => {\n const { className, onClick, children, isLoading, onBatchSubmit, ...rest } = buttonProps || {};\n const [loading, setLoading] = useState(false);\n return (\n <Button\n className={cn('mt-4 ml-auto', className)}\n size=\"sm\"\n color=\"primary\"\n isLoading={loading}\n onClick={(e) => {\n const formData = {};\n const formKeys = Object.keys(formStates);\n for (const formKey of formKeys) {\n const form = formStates[formKey];\n const current = form.formRef.current;\n if (current) {\n current.submit();\n // const errors = current.state.errors;\n // if (errors.length > 0) {\n // return;\n // }\n\n const data = current.state.formData;\n const uiSchema = current.state.uiSchema;\n const keys = Object.keys(uiSchema);\n for (const key of keys) {\n const uiConfig = uiSchema[key];\n if (uiConfig) {\n const { required, validate } = uiConfig;\n if (required) {\n if (data[key] === undefined || data[key] === null || data[key] === '') {\n return;\n }\n }\n if (validate) {\n const errMsg = validate(data[key]);\n if (errMsg) {\n return;\n }\n }\n }\n }\n\n formData[formKey] = data;\n } else {\n console.error('formRef.current is null');\n return;\n }\n }\n onSubmit?.(formData, setLoading);\n onBatchSubmit?.(formData, setLoading);\n }}\n {...rest}\n >\n {children || 'Submit'}\n </Button>\n );\n};\n\nexport const SubmitButton = ({ formKey, formState, buttonProps }) => {\n const { className, onClick, children, isLoading, onAfterSubmit, ...rest } = buttonProps || {};\n const [loading, setLoading] = useState(false);\n return (\n <div className=\"w-full flex\">\n <Button\n className={cn('mt-4 ml-auto', className)}\n type=\"submit\"\n color=\"primary\"\n size=\"sm\"\n isLoading={loading}\n onClick={(e) => {\n let formData = {};\n const current = formState.formRef.current;\n if (current) {\n current.submit();\n // const errors = current.state.errors;\n // if (errors.length > 0) {\n // return;\n // }\n\n formData = current.state.formData;\n const uiSchema = current.state.uiSchema;\n const keys = Object.keys(uiSchema);\n for (const key of keys) {\n const uiConfig = uiSchema[key];\n if (uiConfig) {\n const { required, validate } = uiConfig;\n if (required) {\n if (formData[key] === undefined || formData[key] === null || formData[key] === '') {\n return;\n }\n }\n if (validate) {\n const errMsg = validate(formData[key]);\n if (errMsg) {\n return;\n }\n }\n }\n }\n }\n onAfterSubmit?.(formKey, formData, setLoading);\n }}\n {...rest}\n >\n {children || 'Submit'}\n </Button>\n </div>\n );\n};\n","import React, { useMemo, useState } from \"react\";\nimport { Checkbox, CheckboxProps } from \"@nextui-org/react\";\nimport { WidgetProps } from \"@rjsf/utils\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../../../lib/utils\";\nimport { getStyle } from \"../../../themes\";\n\ntype Options = {\n className?: string;\n nextuiClassNames?: CheckboxProps[\"classNames\"];\n size: CheckboxProps[\"size\"];\n color: CheckboxProps[\"color\"];\n description?: string;\n descriptionClassName?: string;\n};\n\nexport interface CheckboxWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface CheckboxWidgetUIOptions {\n \"ui:widget\": (props: CheckboxWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n}\n\nexport function CheckboxWidget({\n onChange, options, label, value, disabled, uiSchema\n}: CheckboxWidgetProps) {\n const {\n className,\n nextuiClassNames,\n size = 'sm',\n color = 'primary',\n description,\n descriptionClassName,\n } = options;\n const { validate, theme } = uiSchema;\n const [errMsg, setErrMsg] = useState<string>('');\n const isInvalid = !!errMsg;\n const classNames = useMemo(() => {\n const themeStyle = getStyle(theme || 'default', 'CheckboxWidget');\n return {\n ...themeStyle.classNames,\n ...nextuiClassNames\n }\n }, [theme, nextuiClassNames]);\n return (\n <>\n <Checkbox\n className={cn('max-w-full', className)}\n classNames={classNames}\n defaultSelected={value}\n isDisabled={disabled}\n icon={<Check className=\"bg-white dark:bg-black\" />}\n color={color}\n size={size}\n onChange={(e: any) => {\n const checked = e.target.checked;\n onChange(checked);\n }}\n onBlur={() => {\n if (validate) {\n const errMsg = validate(value);\n setErrMsg(errMsg);\n return;\n }\n setErrMsg('');\n }}\n >\n {label}\n </Checkbox>\n {description && <div className={cn('mt-1 text-xs text-[#A1A1A9] dark:text-[#717179]', descriptionClassName)}>{description}</div>}\n {isInvalid && <div className=\"mt-2 text-xs text-[#DF3562]\">{errMsg}</div>}\n </>\n );\n}\n\n","// @ts-nocheck\nimport React, { ReactNode, useMemo, useRef } from \"react\";\nimport { Input, InputProps, InputSlots, SlotsToClasses } from \"@nextui-org/react\";\nimport { WidgetProps } from \"@rjsf/utils\";\nimport { cn } from \"../../../lib/utils\";\nimport { getStyle } from \"../../../themes\";\n\ntype Options = {\n className?: string;\n nextuiClassNames?: SlotsToClasses<InputSlots>;\n labelPlacement?: InputProps[\"labelPlacement\"];\n size: InputProps[\"size\"];\n placeholder?: string;\n inputType?: 'text' | 'number' | 'password';\n color?: InputProps[\"color\"];\n variant?: InputProps[\"variant\"];\n radius?: InputProps[\"radius\"];\n startContent?: ReactNode;\n endContent?: ReactNode;\n description?: string;\n min?: number;\n max?: number;\n};\n//@ts-ignore \nexport interface InputWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface InputWidgetUIOptions {\n \"ui:widget\": (props: InputWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n}\n\nexport function InputWidget(props: InputWidgetProps) {\n const { onChange, options, label, value, required, disabled, uiSchema } = props;\n const {\n className,\n nextuiClassNames,\n labelPlacement = 'inside',\n size = 'sm',\n inputType = 'text',\n color,\n variant,\n radius,\n startContent,\n endContent,\n description,\n min,\n max\n } = options;\n const { requiredErrMsg, validate, theme } = uiSchema;\n const placeholder = uiSchema['ui:options']?.placeholder;\n const isFirstChecked = useRef(true);\n const classNames = useMemo(() => {\n const themeStyle = getStyle(theme || 'default', 'InputWidget');\n return {\n ...themeStyle.classNames,\n ...nextuiClassNames\n }\n }, [theme, nextuiClassNames]);\n return (\n <Input\n className={cn('w-full', className)}\n classNames={classNames}\n label={label}\n placeholder={placeholder}\n value={value}\n isRequired={required}\n isDisabled={disabled}\n size={size}\n labelPlacement={labelPlacement}\n description={description}\n type={inputType}\n color={color}\n variant={variant}\n radius={radius}\n startContent={startContent}\n endContent={endContent}\n onChange={(e) => onChange(e.target.value)}\n min={min}\n max={max}\n validate={() => {\n if (isFirstChecked.current) {\n isFirstChecked.current = false;\n return true;\n }\n if (value === '' && required) {\n return requiredErrMsg || 'This field is required';\n }\n if (validate) {\n const errMsg = validate(value);\n return errMsg;\n }\n return true;\n }}\n />\n );\n}\n\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { WidgetProps } from \"@rjsf/utils\";\nimport { Select, SelectItem, SelectProps, SelectSlots, SlotsToClasses } from \"@nextui-org/react\";\nimport { cn } from \"../../../lib/utils\";\nimport { getStyle } from \"../../../themes\";\n\ntype Options = {\n className?: string;\n nextuiClassNames?: SlotsToClasses<SelectSlots>;\n listboxProps?: SelectProps['listboxProps'];\n labelPlacement?: SelectProps[\"labelPlacement\"];\n placeholder?: string;\n size: SelectProps[\"size\"];\n color?: SelectProps[\"color\"];\n variant?: SelectProps[\"variant\"];\n radius?: SelectProps[\"radius\"];\n description?: string;\n};\n\nexport interface SelectWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface SelectWidgetUIOptions {\n \"ui:widget\": (props: SelectWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n}\n\nexport function SelectWidget(props: SelectWidgetProps) {\n const { onChange, options, label, value, required, disabled, uiSchema } = props;\n const {\n className,\n nextuiClassNames,\n listboxProps = {\n itemClasses: {\n base: [\n 'rounded-lg',\n 'text-default-500',\n 'transition-opacity',\n 'data-[hover=true]:text-foreground',\n 'data-[hover=true]:bg-default-100',\n 'dark:data-[hover=true]:bg-default-50',\n 'data-[selectable=true]:focus:bg-default-50',\n 'data-[pressed=true]:opacity-70',\n 'data-[focus-visible=true]:ring-default-500',\n ],\n },\n },\n labelPlacement = 'inside',\n size = 'sm',\n color,\n variant,\n radius,\n description,\n } = options;\n const { selectOptions = [], requiredErrMsg, validate, theme } = uiSchema;\n const placeholder = uiSchema['ui:options']?.placeholder;\n const classNames = useMemo(() => {\n const themeStyle = getStyle(theme || 'default', 'MultipleSelectWidget');\n return {\n ...themeStyle.classNames,\n ...nextuiClassNames\n }\n }, [theme, nextuiClassNames]);\n const [errMsg, setErrMsg] = useState<string>('');\n const isInvalid = !!errMsg;\n const checkValue = useCallback((value) => {\n if (!value && required) {\n setErrMsg(requiredErrMsg || 'This field is required');\n return;\n }\n if (validate) {\n const errMsg = validate(value);\n setErrMsg(errMsg);\n return;\n }\n setErrMsg('');\n }, []);\n\n return (\n <Select\n label={label?.trim()}\n className={cn('w-full', className)}\n classNames={classNames}\n labelPlacement={labelPlacement}\n placeholder={placeholder}\n size={size}\n isRequired={required}\n isDisabled={disabled}\n isInvalid={isInvalid}\n description={description}\n listboxProps={listboxProps}\n variant={variant}\n radius={radius}\n color={isInvalid ? 'danger' : color}\n errorMessage={isInvalid && errMsg}\n selectedKeys={[value]}\n onSelectionChange={(v) => {\n const keys = Array.from(v) as string[];\n const _v = keys[0];\n onChange(_v);\n checkValue(_v);\n }}\n >\n {selectOptions.map((item) => (\n <SelectItem key={item.value} value={item.value}>\n {item.label}\n </SelectItem>\n ))}\n </Select>\n );\n}\n\n\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { Chip, Select, SelectItem, SelectProps, SelectedItems } from '@nextui-org/react';\nimport { WidgetProps } from '@rjsf/utils';\nimport { cn } from \"../../../lib/utils\";\nimport { getStyle } from '../../../themes';\n\ntype Options = {\n className?: string;\n nextuiClassNames?: SelectProps['classNames'];\n labelPlacement?: SelectProps['labelPlacement'];\n listboxProps?: SelectProps['listboxProps'];\n size: SelectProps['size'];\n color?: SelectProps['color'];\n placeholder?: string;\n description?: string;\n renderValue?: (\n items: SelectedItems<{\n label: string;\n value: string;\n }>,\n ) => React.ReactNode;\n};\n\nexport interface MultipleSelectWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface MultipleSelectWidgetUIOptions {\n 'ui:widget': (props: MultipleSelectWidgetProps) => JSX.Element;\n 'ui:options': Options;\n}\n\nexport function MultipleSelectWidget(props: MultipleSelectWidgetProps) {\n const { onChange, options, label, value, required, uiSchema = {} } = props;\n const { selectOptions = [], requiredErrMsg, validate, theme } = uiSchema;\n const {\n className,\n nextuiClassNames,\n labelPlacement = 'inside',\n listboxProps = {},\n size = 'sm',\n color,\n description,\n renderValue = DefaultRenderValue\n } = options;\n const placeholder = uiSchema['ui:options']?.placeholder || 'Select an option';\n const selectedKeys = useMemo(() => {\n return value ? value.split(',') : [];\n }, [value]);\n const classNames = useMemo(() => {\n const themeStyle = getStyle(theme || 'default', 'MultipleSelectWidget');\n return {\n ...themeStyle.classNames,\n ...nextuiClassNames\n }\n }, [theme, nextuiClassNames]);\n const [errMsg, setErrMsg] = useState<string>('');\n const isInvalid = !!errMsg;\n const checkValue = useCallback((value) => {\n if (!value && required) {\n setErrMsg(requiredErrMsg || 'This field is required');\n return;\n }\n if (validate) {\n const errMsg = validate(value);\n setErrMsg(errMsg);\n return;\n }\n setErrMsg('');\n }, []);\n\n return (\n <Select\n className={cn('w-full', className)}\n label={label}\n isMultiline\n selectionMode=\"multiple\"\n labelPlacement={labelPlacement}\n size={size}\n placeholder={placeholder}\n selectedKeys={selectedKeys}\n isRequired={required}\n color={isInvalid ? 'danger' : color}\n errorMessage={isInvalid && errMsg}\n onSelectionChange={(v) => {\n const keys = Array.from(v) as string[];\n const _v = keys.join(',');\n onChange(_v);\n checkValue(_v);\n }}\n items={selectOptions}\n classNames={classNames}\n listboxProps={{\n itemClasses: {\n base: [\n 'rounded-lg',\n 'text-default-500',\n 'transition-opacity',\n 'data-[hover=true]:text-foreground',\n 'data-[hover=true]:bg-default-100',\n 'dark:data-[hover=true]:bg-default-50',\n 'data-[selectable=true]:focus:bg-default-50',\n 'data-[pressed=true]:opacity-70',\n 'data-[focus-visible=true]:ring-default-500',\n ],\n },\n ...listboxProps\n }}\n description={description}\n renderValue={renderValue}\n >\n {selectOptions.map((item) => (\n <SelectItem key={item.value} textValue={item.label}>\n {item.label}\n </SelectItem>\n ))}\n </Select>\n );\n}\n\nfunction DefaultRenderValue(\n items: SelectedItems<{\n label: string;\n value: string;\n }>,\n) {\n return (\n <div className=\"flex flex-wrap gap-1\">\n {items.map((item) => (\n <Chip className=\"rounded-sm h-auto py-[2px] text-xs\" color=\"secondary\" size=\"sm\" key={item.key}>\n {item.textValue}\n </Chip>\n ))}\n </div>\n );\n}\n","import React, { useRef, useState } from \"react\";\nimport MonacoEditor, { EditorProps } from \"@monaco-editor/react\";\nimport { WidgetProps } from \"@rjsf/utils\";\nimport { Button } from \"@nextui-org/react\";\nimport { cn } from \"../../../lib/utils\";\nimport { helper } from \"../../../lib/helper\";\nimport { _ } from '../../../lib/lodash';\n\ntype Options = {\n editorHeight?: string;\n readOnly?: boolean;\n language?: string;\n languageSelectorOptions?: { label: string; value: string }[];\n onChangeLanguage?: (v: string) => void;\n onRun?: (v: string) => void;\n onMount?: EditorProps['onMount'];\n jsonStrSpace?: number; // Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.\n labelClassName?: string;\n description?: string;\n descriptionClassName?: string;\n editorBoxClassName?: string;\n errMsgClassName?: string;\n};\n\nexport interface EditorWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport type EditorWidgetUIOptions = {\n \"ui:widget\": (props: EditorWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n};\n\nexport const EditorWidget = ({ label, options = {}, value, required, uiSchema, disabled, onChange }: EditorWidgetProps) => {\n const { editorHeight = '200px', readOnly = false, language = 'json', jsonStrSpace, languageSelectorOptions = [], labelClassName, description, descriptionClassName, editorBoxClassName, errMsgClassName, onChangeLanguage, onRun, onMount } = options;\n const { requiredErrMsg, validate } = uiSchema;\n const [selectedLanguage, setSelectedLanguage] = useState('');\n const [runLoading, setRunLoading] = useState(false);\n const showLanguageSelector = languageSelectorOptions.length > 0;\n const [errMsg, setErrMsg] = useState<string>('');\n const isInvalid = !!errMsg;\n const debouncedCheckValue = useRef(\n _.debounce(async (value) => {\n if (!value && required) {\n setErrMsg(requiredErrMsg || 'This field is required');\n return;\n }\n if (validate) {\n const errMsg = validate(value);\n setErrMsg(errMsg);\n return;\n }\n setErrMsg('');\n }, 1000),\n ).current;\n\n const labelText = label.trim();\n const showLabel = labelText || showLanguageSelector;\n\n return (\n <div className='flex flex-col relative'>\n {\n showLabel && <div className={cn('flex justify-between items-center mb-2', labelClassName)}>\n {label && (\n <label\n className=\"mr-2 flex items-center text-sm\"\n >\n {label}\n {required && <span className=\"font-bold text-red-600\">*</span>}\n </label>\n )}\n {showLanguageSelector && (\n <select\n className=\"w-full p-3 text-sm rounded-md bg-[#F4F4F5] dark:bg-[#27272A]\"\n value={selectedLanguage}\n onChange={(event) => {\n const v = event.target.value;\n setSelectedLanguage(v);\n onChangeLanguage && onChangeLanguage(v);\n }}\n >\n {languageSelectorOptions.map((item) => {\n return <option key={item.value} value={item.value}>{item.label}</option>\n })}\n </select>\n )}\n </div>\n }\n {description && <div className={cn('mb-2 text-xs text-[#A1A1A9] dark:text-[#717179]', descriptionClassName)}>{description}</div>}\n <div className={cn(\"rounded-lg overflow-hidden relative border dark:border-[#2c2c2c]\", editorBoxClassName)}>\n <MonacoEditor\n options={{ readOnly: readOnly || disabled, minimap: { enabled: false } }}\n height={editorHeight}\n theme=\"vs-dark\"\n language={selectedLanguage ? selectedLanguage : language}\n value={value}\n onChange={(v) => {\n onChange(v);\n debouncedCheckValue(v);\n }}\n onMount={(editor, monaco) => {\n onMount && onMount(editor, monaco);\n if (language === 'json' && jsonStrSpace && value) {\n const json = helper.json.safeParse(value);\n editor.setValue(JSON.stringify(json, null, jsonStrSpace));\n }\n monaco.editor.defineTheme('myCustomTheme', {\n base: 'vs-dark',\n inherit: true,\n rules: [],\n colors: {\n 'editor.background': '#09090B',\n },\n });\n monaco.editor.setTheme('myCustomTheme');\n }}\n />\n </div>\n {isInvalid && <div className={cn(\"mt-2 text-xs text-[#DF3562]\", errMsgClassName)}>{errMsg}</div>}\n {onRun && (\n <Button\n className=\"absolute bottom-2 right-4\"\n size=\"sm\"\n isLoading={runLoading}\n onClick={async () => {\n setRunLoading(true);\n await onRun(value);\n setRunLoading(false);\n }}\n >\n Run\n </Button>\n )}\n </div>\n );\n};\n\n","import { createRef } from \"react\";\nimport Form, { IChangeEvent } from \"@rjsf/core\";\nimport { RJSFSchema, UiSchema } from \"@rjsf/utils\";\nimport validator from \"@rjsf/validator-ajv8\";\nimport { action, computed, makeObservable, observable, toJS } from \"mobx\";\nimport { helper } from \"../../lib/helper\";\n\nexport class JSONSchemaFormState<T, U = UiSchema> {\n value: JSONSchemaValue<T> = new JSONSchemaValue();\n schema: RJSFSchema;\n uiSchema: U;\n reactive: boolean = true;\n readonly = false;\n liveValidate = false;\n validator = validator;\n formRef: React.RefObject<Form>;\n\n get formData() {\n return this.value.get();\n }\n set formData(value: T) {\n this.value.set(value);\n }\n get dynamicData() {\n return this.getDymaicData();\n }\n getDymaicData = () => {\n return { ready: true };\n };\n onChange = (e: IChangeEvent<T>, id?: string) => {\n this.value.set(e.formData);\n if (this.afterChange) {\n this.afterChange(e, id);\n }\n };\n onSubmit = (e: IChangeEvent<T>) => {\n if (this.afterSubmit) {\n this.afterSubmit(e);\n }\n };\n afterSubmit: (e: IChangeEvent<T>) => void;\n afterChange: (e: IChangeEvent<T>, id?: string) => void;\n reset({ force = false } = {}) {\n if (force) {\n this.value.value = this.value.default;\n } else {\n this.value.reset();\n }\n return this;\n }\n customValidate = (formData: T, errors: any) => errors;\n constructor(args: Partial<JSONSchemaFormState<T, U>> = {}) {\n Object.assign(this, args, { formRef: createRef() });\n if (this.reactive) {\n makeObservable(this, {\n formData: computed,\n });\n }\n }\n}\n\nexport class JSONSchemaValue<T> {\n value?: T = null as T;\n default?: T = null as T;\n constructor(args: Partial<JSONSchemaValue<T>> = {}) {\n if (!args.value && args.default) {\n args.value = args.default;\n }\n Object.assign(this, args);\n makeObservable(this, {\n value: observable,\n set: action,\n });\n }\n set(value: Partial<T>) {\n value = this.onSet(value);\n const newVal = helper.deepMerge(this.value, value);\n this.value = toJS(newVal);\n return this.value;\n }\n onSet(value: Partial<T>) {\n return value;\n }\n get() {\n return this.getFormat(this.value);\n }\n getFormat(value: T) {\n return value;\n }\n reset() {\n this.set(this.default);\n }\n}\n","import React, { useState } from \"react\";\nimport { Button } from \"@nextui-org/react\";\nimport Form from \"@rjsf/core\";\nimport {\n type ErrorListProps,\n type FieldTemplateProps,\n type ObjectFieldTemplateProps,\n type SubmitButtonProps,\n} from \"@rjsf/utils\";\nimport * as Utils from \"@rjsf/utils\"\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\nimport { observer } from \"mobx-react-lite\";\nimport { cn } from \"../../lib/utils\";\nimport { JSONSchemaFormState } from \"../../store/standard/JSONSchemaState\";\nimport { toJS } from \"mobx\";\n\nfunction FieldTemplate(props: FieldTemplateProps) {\n const { id, classNames, label, help, required, description, errors, children, schema, uiSchema } = props;\n\n if (uiSchema && uiSchema['ui:widget'] === 'hidden') { return null; }\n\n // const hideLabel = schema.type === 'object' || schema.type === 'boolean';\n\n const isDate = uiSchema && uiSchema['ui:widget'] === 'date';\n const isDateTime = uiSchema && uiSchema['ui:widget'] === 'date-time';\n const isTime = uiSchema && uiSchema['ui:widget'] === 'time';\n const showLabel = isDate || isDateTime || isTime;\n\n return (\n <div className={cn(classNames)}>\n {showLabel && (\n <label htmlFor={id} className={cn('flex items-center h-8')}>\n <span className=\"text-sm\">{label}</span>\n {required && <span className=\"font-bold text-red-600\">*</span>}\n </label>\n )}\n\n {/* {description} */}\n {/* {children} */}\n {/* {help} */}\n\n {children}\n </div>\n );\n}\n\nconst renderLayout = (layout: any[], fields: { [k: string]: React.ReactElement }, n = 1) => {\n n++;\n return layout.map((item, index) => {\n if (Array.isArray(item)) {\n const even = (n & 1) === 0;\n return (\n <div key={index} className={cn('w-full flex justify-between items-center space-x-2', even ? 'flex-row items-start' : 'flex-col')}>\n {renderLayout(item, fields, n)}\n </div>\n );\n } else {\n return (\n <div className=\"w-full\" key={index}>\n {fields[item]}\n </div>\n );\n }\n });\n};\n\nconst ObjectFieldTemplate = ({ title, idSchema: { $id }, properties, uiSchema: { layout } }: ObjectFieldTemplateProps) => {\n const [opened, setOpened] = useState(false);\n const fields = Object.fromEntries(properties.map((item) => [item.name, item.content]));\n return (\n <div className=\"w-full space-y-2.5\">\n {$id === 'root' ? (\n layout ? (\n renderLayout(layout, fields)\n ) : (\n properties.map((element) => {\n return (\n <div key={element.content.key}>\n {element.content}\n </div>\n );\n })\n )\n ) : (\n <>\n <div\n className=\"mt-5 mb-[10px] flex justify-between items-center cursor-pointer border-t-[1px solid #E5E5EA] py-[5px] hover:bg-[#F2F2F7] dark:hover:bg-gray-900\"\n onClick={() => setOpened((o) => !o)}\n >\n <div className=\"text-gray-900 dark:text-gray-100 font-bold text-base\">{title}</div>\n {opened ? <ChevronUp /> : <ChevronDown />}\n </div>\n <div className={cn('mt-2 space-y-2.5', opened ? 'block' : 'hidden')}>\n {layout\n ? renderLayout(layout, fields)\n : properties.map((element) => {\n return (\n <div key={element.content.key}>\n {element.content}\n </div>\n );\n })}\n </div>\n </>\n )}\n </div>\n );\n};\n\nconst ErrorListTemplate = ({ errors }: ErrorListProps) => {\n return (\n <div>\n <div className=\"font-bold\">Errors</div>\n <div className=\"mt-[10px]\">\n {errors.map((error) => (\n <div className=\"mb-[10px]\" color=\"red\" key={error.property}>\n {error.stack}\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nconst SubmitButton = ({ uiSchema }: SubmitButtonProps) => {\n const { submitText, norender, props: submitButtonProps = {} } = Utils.getSubmitButtonOptions(uiSchema);\n if (norender) {\n return null;\n }\n return (\n <div className=\"flex justify-end mt-4\">\n <Button type=\"submit\" color='primary' size='sm'>{submitText}</Button>\n </div>\n );\n};\n\ninterface Props {\n formState: JSONSchemaFormState<any>;\n children?: any;\n}\n\nexport const JSONSchemaForm = observer(({ children, formState }: Props) => {\n if (!formState?.dynamicData?.ready) return <></>;\n return (\n <Form\n showErrorList=\"bottom\"\n templates={{\n ObjectFieldTemplate,\n FieldTemplate,\n ErrorListTemplate,\n ButtonTemplates: { SubmitButton },\n }}\n formData={toJS(formState.formData)}\n readonly={formState.readonly}\n uiSchema={formState.uiSchema}\n schema={formState.schema}\n onChange={formState.onChange}\n onSubmit={formState.onSubmit}\n validator={formState.validator}\n customValidate={formState.customValidate}\n ref={formState.formRef}\n >\n {children && children}\n </Form>\n );\n});\n","import React from 'react';\nimport { colSpan, colSpanLg, colSpanMd, colSpanSm, GridClassesMapping } from './styles';\nimport { cn } from '../../../lib/utils';\n\nexport interface ColProps extends React.HTMLAttributes<HTMLDivElement> {\n numColSpan?: number;\n numColSpanSm?: number;\n numColSpanMd?: number;\n numColSpanLg?: number;\n}\n\nconst Col = React.forwardRef<HTMLDivElement, ColProps>((props, ref) => {\n const { numColSpan = 1, numColSpanSm, numColSpanMd, numColSpanLg, children, className, ...other } = props;\n const getColSpan = (numColSpan: number | undefined, colSpanMapping: GridClassesMapping): string => {\n if (!numColSpan) return '';\n if (!Object.keys(colSpanMapping).includes(String(numColSpan))) return '';\n return colSpanMapping[numColSpan];\n };\n\n const getColSpanClassNames = () => {\n const spanBase = getColSpan(numColSpan, colSpan);\n const spanSm = getColSpan(numColSpanSm, colSpanSm);\n const spanMd = getColSpan(numColSpanMd, colSpanMd);\n const spanLg = getColSpan(numColSpanLg, colSpanLg);\n return cn(spanBase, spanSm, spanMd, spanLg);\n };\n\n return (\n <div ref={ref} className={cn(getColSpanClassNames(), className)} {...other}>\n {children}\n </div>\n );\n});\n\nCol.displayName = 'Col';\n\nexport default Col;\n","export type GridClassesMapping = {\n [key: string]: string;\n};\n\nexport const gridCols: GridClassesMapping = {\n 0: 'grid-cols-none',\n 1: 'grid-cols-1',\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n 4: 'grid-cols-4',\n 5: 'grid-cols-5',\n 6: 'grid-cols-6',\n 7: 'grid-cols-7',\n 8: 'grid-cols-8',\n 9: 'grid-cols-9',\n 10: 'grid-cols-10',\n 11: 'grid-cols-11',\n 12: 'grid-cols-12',\n};\n\nexport const gridColsSm: GridClassesMapping = {\n 0: 'sm:grid-cols-none',\n 1: 'sm:grid-cols-1',\n 2: 'sm:grid-cols-2',\n 3: 'sm:grid-cols-3',\n 4: 'sm:grid-cols-4',\n 5: 'sm:grid-cols-5',\n 6: 'sm:grid-cols-6',\n 7: 'sm:grid-cols-7',\n 8: 'sm:grid-cols-8',\n 9: 'sm:grid-cols-9',\n 10: 'sm:grid-cols-10',\n 11: 'sm:grid-cols-11',\n 12: 'sm:grid-cols-12',\n};\n\nexport const gridColsMd: GridClassesMapping = {\n 0: 'md:grid-cols-none',\n 1: 'md:grid-cols-1',\n 2: 'md:grid-cols-2',\n 3: 'md:grid-cols-3',\n 4: 'md:grid-cols-4',\n 5: 'md:grid-cols-5',\n 6: 'md:grid-cols-6',\n 7: 'md:grid-cols-7',\n 8: 'md:grid-cols-8',\n 9: 'md:grid-cols-9',\n 10: 'md:grid-cols-10',\n 11: 'md:grid-cols-11',\n 12: 'md:grid-cols-12',\n};\n\nexport const gridColsLg: GridClassesMapping = {\n 0: 'lg:grid-cols-none',\n 1: 'lg:grid-cols-1',\n 2: 'lg:grid-cols-2',\n 3: 'lg:grid-cols-3',\n 4: 'lg:grid-cols-4',\n 5: 'lg:grid-cols-5',\n 6: 'lg:grid-cols-6',\n 7: 'lg:grid-cols-7',\n 8: 'lg:grid-cols-8',\n 9: 'lg:grid-cols-9',\n 10: 'lg:grid-cols-10',\n 11: 'lg:grid-cols-11',\n 12: 'lg:grid-cols-12',\n};\n\nexport const colSpan: GridClassesMapping = {\n 1: 'col-span-1',\n 2: 'col-span-2',\n 3: 'col-span-3',\n 4: 'col-span-4',\n 5: 'col-span-5',\n 6: 'col-span-6',\n 7: 'col-span-7',\n 8: 'col-span-8',\n 9: 'col-span-9',\n 10: 'col-span-10',\n 11: 'col-span-11',\n 12: 'col-span-12',\n 13: 'col-span-13',\n};\n\nexport const colSpanSm: GridClassesMapping = {\n 1: 'sm:col-span-1',\n 2: 'sm:col-span-2',\n 3: 'sm:col-span-3',\n 4: 'sm:col-span-4',\n 5: 'sm:col-span-5',\n 6: 'sm:col-span-6',\n 7: 'sm:col-span-7',\n 8: 'sm:col-span-8',\n 9: 'sm:col-span-9',\n 10: 'sm:col-span-10',\n 11: 'sm:col-span-11',\n 12: 'sm:col-span-12',\n 13: 'sm:col-span-13',\n};\n\nexport const colSpanMd: GridClassesMapping = {\n 1: 'md:col-span-1',\n 2: 'md:col-span-2',\n 3: 'md:col-span-3',\n 4: 'md:col-span-4',\n 5: 'md:col-span-5',\n 6: 'md:col-span-6',\n 7: 'md:col-span-7',\n 8: 'md:col-span-8',\n 9: 'md:col-span-9',\n 10: 'md:col-span-10',\n 11: 'md:col-span-11',\n 12: 'md:col-span-12',\n 13: 'md:col-span-13',\n};\n\nexport const colSpanLg: GridClassesMapping = {\n 1: 'lg:col-span-1',\n 2: 'lg:col-span-2',\n 3: 'lg:col-span-3',\n 4: 'lg:col-span-4',\n 5: 'lg:col-span-5',\n 6: 'lg:col-span-6',\n 7: 'lg:col-span-7',\n 8: 'lg:col-span-8',\n 9: 'lg:col-span-9',\n 10: 'lg:col-span-10',\n 11: 'lg:col-span-11',\n 12: 'lg:col-span-12',\n 13: 'lg:col-span-13',\n};\n","import React from 'react';\nimport { GridClassesMapping, gridCols, gridColsLg, gridColsMd, gridColsSm } from './styles';\nimport { cn } from '../../../lib/utils';\n\nconst getGridCols = (numCols: number | undefined, gridColsMapping: GridClassesMapping): string => {\n if (!numCols) return '';\n if (!Object.keys(gridColsMapping).includes(String(numCols))) return '';\n return gridColsMapping[numCols];\n};\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n numItems?: number;\n numItemsSm?: number;\n numItemsMd?: number;\n numItemsLg?: number;\n children: React.ReactNode;\n}\n\nconst Grid = React.forwardRef<HTMLDivElement, GridProps>((props, ref) => {\n const { numItems = 1, numItemsSm, numItemsMd, numItemsLg, children, className, ...other } = props;\n\n const colsBase = getGridCols(numItems, gridCols);\n const colsSm = getGridCols(numItemsSm, gridColsSm);\n const colsMd = getGridCols(numItemsMd, gridColsMd);\n const colsLg = getGridCols(numItemsLg, gridColsLg);\n\n const colClassNames = cn(colsBase, colsSm, colsMd, colsLg);\n\n return (\n <div ref={ref} className={cn('grid', colClassNames, className)} {...other}>\n {children}\n </div>\n );\n});\n\nGrid.displayName = 'Grid';\n\nexport default Grid;\n","import React, { useEffect, useState } from \"react\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\nimport { FormDataType, JSONFormProps, LayoutConfigType } from \"..\";\nimport { JSONSchemaForm } from \"../../../components/JSONSchemaForm\";\nimport { cn } from \"../../../lib/utils\";\nimport { BatchSubmitButton, SubmitButton, getFormState } from \"./format\";\n\nconst CollapsibleBox = ({ formKey, layout, formState }: { formKey: string; layout: any; formState: any }) => {\n const [opened, setOpened] = useState(true);\n return (\n <div id={`form-${formKey}`}>\n <div\n className=\"mt-5 mb-[10px] flex justify-between items-center cursor-pointer border-t-[1px solid #E5E5EA] py-[5px]\"\n onClick={() => setOpened((o) => !o)}\n >\n <div className={cn('text-gray-900 dark:text-gray-100 font-bold text-base', layout?.titleBoxCss)}>{layout?.title || formKey}</div>\n {opened ? <ChevronUp size={18} className=\"text-[#717179] dark:text-[#A1A1A9]\" /> : <ChevronDown size={18} className=\"text-[#717179] dark:text-[#A1A1A9]\" />}\n </div>\n <div className={cn('mt-2', opened ? 'block' : 'hidden')}>\n {layout?.customRender?.Top?.(formKey, formState)}\n <JSONSchemaForm formState={formState}>\n {layout?.customRender?.SubmitButtonBefore?.(formKey, formState)}\n {layout?.submitButtonProps && <SubmitButton formKey={formKey} formState={formState} buttonProps={layout.submitButtonProps} />}\n {layout?.customRender?.SubmitButtonAfter?.(formKey, formState)}\n </JSONSchemaForm>\n </div>\n </div>\n );\n};\n\nexport const ListLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig = {}, onBatchSubmit, batchSubmitButtonProps, onReady, theme } = props;\n const { $type, $combFormsCustomRender, ...formLayout } = layoutConfig as LayoutConfigType<T, 'ListLayout'>;\n const formStates = getFormState(props, formLayout, theme);\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n {$combFormsCustomRender?.Top?.(formStates)}\n {Object.keys(formStates).map((key) => {\n return (\n <CollapsibleBox\n key={key}\n formKey={key}\n formState={formStates[key]}\n layout={formLayout[key]}\n />\n );\n })}\n {$combFormsCustomRender?.SubmitButtonBefore?.(formStates)}\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n {$combFormsCustomRender?.SubmitButtonAfter?.(formStates)}\n </>\n );\n};","import React, { useEffect } from 'react';\nimport { FormDataType, JSONFormProps, LayoutConfigType } from '..';\nimport { JSONSchemaForm } from '../../../components/JSONSchemaForm';\nimport { BatchSubmitButton, SubmitButton, getFormState } from './format';\n\nexport const SimpleLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig = {}, onBatchSubmit, batchSubmitButtonProps, onReady, theme } = props;\n const { $type, $combFormsCustomRender, ...formLayout } = layoutConfig as LayoutConfigType<T, 'SimpleLayout'>;\n const formStates = getFormState(props, formLayout, theme);\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n {$combFormsCustomRender?.Top?.(formStates)}\n <div className=\"space-y-2\">\n {Object.keys(formStates).map((key) => {\n const layout = formLayout[key];\n return (\n <div key={key} id={`form-${key}`}>\n {layout?.customRender?.Top?.(key, formStates[key])}\n <JSONSchemaForm formState={formStates[key]}>\n {layout?.customRender?.SubmitButtonBefore?.(key, formStates[key])}\n {layout?.submitButtonProps && <SubmitButton formKey={key} formState={formStates[key]} buttonProps={layout.submitButtonProps} />}\n {layout?.customRender?.SubmitButtonAfter?.(key, formStates[key])}\n </JSONSchemaForm>\n </div>\n );\n })}\n </div>\n {$combFormsCustomRender?.SubmitButtonBefore?.(formStates)}\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n {$combFormsCustomRender?.SubmitButtonAfter?.(formStates)}\n </>\n );\n};\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Tab, Tabs } from \"@nextui-org/react\";\nimport { FormDataType, JSONFormProps, LayoutConfigType } from \"..\";\nimport { JSONSchemaForm } from \"../../../components/JSONSchemaForm\";\nimport { BatchSubmitButton, SubmitButton, getFormState } from \"./format\";\nimport { cn } from \"../../../lib/utils\";\n\nexport const TabLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig = {}, onBatchSubmit, batchSubmitButtonProps, onReady, theme } = props;\n const {\n $type,\n $tabsProps = {\n color: 'default',\n },\n $combFormsCustomRender,\n ...formLayout\n } = layoutConfig as LayoutConfigType<T, 'TabLayout'>;\n const formStates = useMemo(() => getFormState(props, formLayout, theme), [props.formData, props.formConfig, props.layoutConfig]);\n const formKeys = Object.keys(formStates);\n const [selectedTab, setSelectedTab] = useState(formKeys[0] || '');\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n <Tabs\n {...$tabsProps}\n selectedKey={selectedTab}\n onSelectionChange={(key: string) => {\n setSelectedTab(key);\n }}\n >\n {formKeys.map((key) => {\n const layout = formLayout[key];\n return <Tab id={`form-${key}-tab-menu`} key={key} title={<div className={layout?.titleBoxCss}>{layout?.title || key}</div>} />;\n })}\n </Tabs>\n {$combFormsCustomRender?.Top?.(formStates)}\n {formKeys.map((key) => {\n const layout = formLayout[key];\n return (\n <div\n key={key}\n id={`form-${key}-tab-content`}\n className={cn('mt-4', selectedTab === key ? '' : 'hidden')}\n >\n {layout?.customRender?.Top?.(key, formStates[key])}\n <JSONSchemaForm formState={formStates[key]}>\n {layout?.customRender?.SubmitButtonBefore?.(key, formStates[key])}\n {layout?.submitButtonProps && <SubmitButton formKey={key} formState={formStates[key]} buttonProps={layout.submitButtonProps} />}\n {layout?.customRender?.SubmitButtonAfter?.(key, formStates[key])}\n </JSONSchemaForm>\n </div>\n );\n })}\n {$combFormsCustomRender?.SubmitButtonBefore?.(formStates)}\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n {$combFormsCustomRender?.SubmitButtonAfter?.(formStates)}\n </>\n );\n};\n","import React, { ReactNode, useMemo, useRef } from 'react';\nimport { InputProps, InputSlots, SlotsToClasses, Textarea } from '@nextui-org/react';\nimport { WidgetProps } from '@rjsf/utils';\nimport { cn } from \"../../../lib/utils\";\nimport { getStyle } from '../../../themes';\n\ntype Options = {\n className?: string;\n nextuiClassNames?: SlotsToClasses<InputSlots>;\n labelPlacement?: InputProps['labelPlacement'];\n size: InputProps['size'];\n minRows?: number;\n maxRows?: number;\n placeholder?: string;\n color?: InputProps[\"color\"];\n variant?: InputProps[\"variant\"];\n radius?: InputProps[\"radius\"];\n startContent?: ReactNode;\n endContent?: ReactNode;\n description?: string;\n};\n// @ts-ignore \nexport interface TextareaWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface TextareaWidgetUIOptions {\n 'ui:widget': (props: TextareaWidgetProps) => JSX.Element;\n 'ui:options': Options;\n}\n\nexport function TextareaWidget(props: TextareaWidgetProps) {\n const { onChange, options, label, value, required, disabled, uiSchema } = props;\n const {\n className,\n nextuiClassNames = {\n inputWrapper: 'rounded-lg shadow-none border dark:border-[#2c2c2c] !bg-transparent data-[hover=true]:!bg-default-50 group-data-[focus=true]:!bg-transparent',\n },\n labelPlacement = 'inside',\n size = 'md',\n minRows = 3,\n maxRows = 8,\n color,\n variant,\n radius,\n startContent,\n endContent,\n description,\n } = options;\n const { requiredErrMsg, validate, theme } = uiSchema;\n const placeholder = uiSchema['ui:options']?.placeholder;\n const isFirstChecked = useRef(true);\n const classNames = useMemo(() => {\n const themeStyle = getStyle(theme || 'default', 'InputWidget');\n return {\n ...themeStyle.classNames,\n ...nextuiClassNames\n }\n }, [theme, nextuiClassNames]);\n\n return (\n <Textarea\n className={cn('w-full', className)}\n classNames={classNames}\n label={label}\n placeholder={placeholder}\n value={value}\n isRequired={required}\n isDisabled={disabled}\n minRows={minRows}\n maxRows={maxRows}\n size={size}\n labelPlacement={labelPlacement}\n description={description}\n color={color}\n variant={variant}\n radius={radius}\n startContent={startContent}\n endContent={endContent}\n onChange={(e) => onChange(e.target.value)}\n validate={() => {\n if (isFirstChecked.current) {\n isFirstChecked.current = false;\n return true;\n }\n if (value === '' && required) {\n return requiredErrMsg || 'This field is required';\n }\n if (validate) {\n const errMsg = validate(value);\n return errMsg;\n }\n return true;\n }}\n />\n );\n}\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { DatePicker, DatePickerProps } from '@nextui-org/react';\nimport { RJSFSchema, Widget, WidgetProps } from \"@rjsf/utils\";\nimport { DateValue, parseAbsoluteToLocal } from '@internationalized/date';\nimport { cn } from \"../../../lib/utils\";\nimport { getStyle } from \"../../../themes\";\n\ntype Options = {\n className?: string;\n nextuiClassNames?: Record<\"base\" | \"selectorButton\" | \"selectorIcon\" | \"popoverContent\" | \"calendar\" | \"calendarContent\" | \"timeInputLabel\" | \"timeInput\", string>;\n dateInputClassNames?: Record<\n | \"base\"\n | \"label\"\n | \"inputWrapper\"\n | \"innerWrapper\"\n | \"input\"\n | \"helperWrapper\"\n | \"description\"\n | \"errorMessage\",\n string\n >;\n size: DatePickerProps[\"size\"];\n labelPlacement?: DatePickerProps[\"labelPlacement\"];\n color: DatePickerProps[\"color\"];\n granularity?: DatePickerProps[\"granularity\"];\n variant?: DatePickerProps['variant'];\n description?: string;\n};\n\nexport interface DatePickerWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface DatePickerWidgetUIOptions {\n 'ui:widget': (props: DatePickerWidgetProps) => string | Widget<any, RJSFSchema, any> | undefined;\n 'ui:options': Options;\n}\n\nexport function DatePickerWidget({ label, options, value, required, disabled, uiSchema, onChange }: DatePickerWidgetProps) {\n const {\n className,\n nextuiClassNames = { calendarContent: 'min-w-fit' },\n dateInputClassNames,\n labelPlacement = 'inside',\n size = 'sm',\n granularity = 'day',\n color = 'default',\n description,\n variant,\n } = options;\n const [date, setDate] = useState<DateValue>();\n const { requiredErrMsg, validate, theme } = uiSchema;\n const isFirstChecked = useRef(true);\n const dateInputStyle = useMemo(() => {\n const themeStyle = getStyle(theme || 'default', 'DatePickerWidget');\n return {\n ...themeStyle.dateInputClassNames,\n ...dateInputClassNames\n }\n }, [theme, dateInputClassNames]);\n\n useEffect(() => {\n if (value) {\n try {\n const ISOStr = new Date(value).toISOString();\n const v = parseAbsoluteToLocal(ISOStr);\n setDate(v);\n } catch (error) {\n console.log('error', error.message);\n }\n }\n }, [value]);\n\n return (\n <DatePicker\n showMonthAndYearPickers\n className={cn('w-full', className)}\n classNames={nextuiClassNames}\n dateInputClassNames={dateInputStyle}\n label={label}\n size={size}\n labelPlacement={labelPlacement}\n color={color}\n granularity={granularity}\n variant={variant}\n value={date}\n isRequired={required}\n description={description || ''}\n isDisabled={disabled}\n onChange={(dateValue) => {\n if (dateValue) {\n const v = dateValue.toDate('GMT').toISOString();\n onChange(v);\n }\n }}\n validate={() => {\n if (isFirstChecked.current) {\n isFirstChecked.current = false;\n return true;\n }\n if (value === '' && required) {\n return requiredErrMsg || 'This field is required';\n }\n if (validate) {\n const errMsg = validate(value);\n return errMsg;\n }\n return true;\n }}\n />\n );\n}\n","import { Modal, ModalBody, ModalContent, ModalHeader } from '@nextui-org/react';\nimport { observer, useLocalObservable } from \"mobx-react-lite\";\nimport { useStore } from \"../../store/index\";\nimport Draggable from \"react-draggable\";\nimport { JSONForm } from \"../../components/JSONForm\";\nimport { useEffect, useMemo } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { ComplexFormModalStore } from \".\";\nimport React from \"react\";\n\nconst JSONViewModal = observer(() => {\n const rootStore = useStore();\n const complexFormModal = rootStore.get(ComplexFormModalStore);\n const { formData, isOpen } = complexFormModal;\n const store = useLocalObservable(() => ({\n isMobile: false,\n }));\n\n useEffect(() => {\n const handleResize = () => {\n store.isMobile = window.innerWidth < 991;\n };\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n const isMobile = store.isMobile;\n\n const ModalMemo = useMemo(() => {\n if (!formData) {\n return null;\n }\n\n const layoutConfig = { ...complexFormModal.layoutConfig };\n if (isMobile && layoutConfig.$type === 'GridLayout') {\n layoutConfig.$gridColumn = 1;\n Object.keys(layoutConfig).forEach((key) => {\n if (typeof layoutConfig[key] === 'object') {\n // @ts-ignore\n layoutConfig[key].colSpan = 1;\n }\n });\n }\n\n return (\n <Modal\n className={complexFormModal.className}\n classNames={complexFormModal.classNames}\n scrollBehavior={complexFormModal.scrollBehavior}\n isDismissable={complexFormModal.isDismissable}\n isOpen={isOpen}\n size={complexFormModal.modalSize}\n onOpenChange={(open: boolean) => {\n if (!open) {\n complexFormModal.event.emit('abort');\n }\n }}\n >\n <div className=\"z-50 fixed top-0 left-0 w-screen h-screen\">\n <Draggable handle=\".draggable-handle\">\n <ModalContent>\n {complexFormModal.title && <ModalHeader className=\"flex flex-col gap-1 draggable-handle cursor-move\">{complexFormModal.title}</ModalHeader>}\n <ModalBody className={cn('max-h-[90vh] overflow-auto')}>\n <JSONForm\n theme={complexFormModal.theme}\n formData={formData}\n formConfig={complexFormModal.formConfig}\n layoutConfig={layoutConfig}\n onBatchSubmit={complexFormModal.onBatchSubmit\n ? complexFormModal.onBatchSubmit\n : (data) => {\n complexFormModal.event.emit('batchSubmit', data);\n }\n }\n onSet={complexFormModal.onSet}\n onChange={complexFormModal.onChange}\n onReady={complexFormModal.onReady}\n batchSubmitButtonProps={complexFormModal.batchSubmitButtonProps}\n />\n </ModalBody>\n </ModalContent>\n </Draggable>\n </div>\n </Modal>\n );\n }, [isOpen, formData, isMobile]);\n\n return ModalMemo;\n});\n\nexport default JSONViewModal;\n","import { Store } from \"../../store/standard/base\";\nimport Provider from \"./Provider\";\nimport { FormConfigType, FormDataOfKey, FormDataType, LayoutConfigType, LayoutType } from \"../../components/JSONForm\";\nimport EventEmitter from \"events\";\nimport { JSONSchemaFormState } from \"../../store/standard/JSONSchemaState\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { makeAutoObservable } from \"mobx\";\nimport { RootStore } from \"../../store\";\nimport React, { Dispatch, SetStateAction } from \"react\";\nimport { ButtonProps, SlotsToClasses, ModalSlots } from \"@nextui-org/react\";\nimport { getStyle, ThemeType } from \"../../themes\";\n\nexport class ComplexFormModalStore<T extends FormDataType> implements Store {\n sid = 'ComplexFormModalStore';\n provider = () => <Provider />;\n\n isOpen = false;\n title = '';\n formData?: T;\n formConfig?: FormConfigType<T>;\n layoutConfig?: LayoutConfigType<T, LayoutType>;\n className = '';\n classNames?: SlotsToClasses<ModalSlots>;\n theme: ThemeType = \"default\";\n modalSize: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | 'xs' | '3xl' | '4xl' | '5xl' = 'md';\n scrollBehavior?: 'normal' | 'inside' | 'outside' = 'normal';\n isDismissable = true;\n event = new EventEmitter();\n onBatchSubmit?: (data: T, setLoading?: Dispatch<SetStateAction<boolean>>) => void;\n onSet?: (v: FormDataOfKey<T>, form: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => FormDataOfKey<T>;\n onChange?: (data: Partial<T>) => void;\n onReady?: (formStates: { [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema> }) => void;\n batchSubmitButtonProps?: ButtonProps & { onBatchSubmit?: (formData: T, setLoading: Dispatch<SetStateAction<boolean>>) => void };\n\n constructor(args?: Partial<ComplexFormModalStore<T>>) {\n const modalStyle = getStyle(args?.theme || 'default', 'Modal');\n const classNames = {\n ...modalStyle.classNames,\n ...args?.classNames\n }\n Object.assign(this, args, { classNames });\n makeAutoObservable(this);\n }\n\n setData(v: Partial<ComplexFormModalStore<T>>) {\n Object.assign(this, v);\n }\n\n close() {\n this.isOpen = false;\n this.title = '';\n this.formData = undefined;\n this.formConfig = undefined;\n this.layoutConfig = undefined;\n this.modalSize = 'md';\n this.scrollBehavior = 'normal';\n this.isDismissable = true;\n this.onBatchSubmit = undefined;\n this.onSet = undefined;\n this.onChange = undefined;\n this.onReady = undefined;\n this.event.removeAllListeners();\n }\n}\n\nexport async function getComplexFormData<T extends FormDataType>(v: Partial<ComplexFormModalStore<T>>) {\n return new Promise<T>((resolve, reject) => {\n const modalStyle = getStyle(v?.theme || 'default', 'Modal');\n const classNames = {\n ...modalStyle.classNames,\n ...v?.classNames\n }\n const complexFormModal = RootStore.Get(ComplexFormModalStore);\n // @ts-ignore\n complexFormModal.setData({\n ...v,\n classNames,\n isOpen: true,\n });\n complexFormModal.event.on('batchSubmit', (formData: T) => {\n if (complexFormModal.onBatchSubmit) {\n complexFormModal.onBatchSubmit(formData);\n } else {\n complexFormModal.close();\n resolve(formData);\n }\n });\n complexFormModal.event.on('abort', () => {\n complexFormModal.close();\n reject('abort');\n });\n });\n}\n","import EventEmitter from \"events\";\nimport React from \"react\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { makeAutoObservable } from \"mobx\";\nimport { Store } from \"../../store/standard/base\";\nimport {\n JSONSchemaFormState,\n JSONSchemaValue,\n} from \"../../store/standard/JSONSchemaState\";\nimport Provider from \"./Provider\";\nimport { SelectWidget } from \"../../components/JSONFormWidgets/SelectWidget\";\nimport { InputWidget } from \"../../components/JSONFormWidgets/InputWidget\";\nimport { CheckboxWidget } from \"../../components/JSONFormWidgets/CheckboxWidget\";\nimport { EditorWidget } from \"../../components/JSONFormWidgets/EditorWidget\";\nimport { RootStore } from \"../../store\";\nimport { SlotsToClasses, ModalSlots } from \"@nextui-org/react\";\nimport { getStyle, ThemeType } from \"../../themes\";\n\nexport class FormModalStore<T = { [key: string]: any }> implements Store {\n sid = 'FormModalStore';\n provider = () => <Provider />;\n\n isOpen = false;\n title = '';\n form: JSONSchemaFormState<T> = null;\n className: string = '';\n classNames?: SlotsToClasses<ModalSlots>;\n theme: ThemeType = \"default\";\n modalSize: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | 'xs' | '3xl' | '4xl' | '5xl' = 'md';\n scrollBehavior?: 'normal' | 'inside' | 'outside' = 'normal';\n closeOnOverlayClick = false;\n event = new EventEmitter();\n onAfterSubmit?: (data: T) => void;\n\n constructor(args?: Partial<FormModalStore>) {\n const modalStyle = getStyle(args?.theme || 'default', 'Modal');\n const classNames = {\n ...modalStyle.classNames,\n ...args?.classNames\n }\n Object.assign(this, args, { classNames });\n makeAutoObservable(this);\n }\n\n setData(v: Partial<FormModalStore>) {\n Object.assign(this, v);\n }\n\n close() {\n this.isOpen = false;\n this.title = '';\n this.form = null;\n this.modalSize = 'md';\n this.scrollBehavior = 'normal';\n this.closeOnOverlayClick = false;\n this.onAfterSubmit = undefined;\n this.event.removeAllListeners();\n }\n}\n\nexport async function getFormData<T = { [key: string]: any }>(v: Partial<FormModalStore>) {\n return new Promise<T>((resolve, reject) => {\n const modalStyle = getStyle(v?.theme || 'default', 'Modal');\n const classNames = {\n ...modalStyle.classNames,\n ...v?.classNames\n }\n const formModal = RootStore.Get(FormModalStore);\n formModal.setData({\n ...v,\n classNames,\n isOpen: true,\n });\n formModal.event.on('afterSubmit', (formData: T) => {\n if (formModal.onAfterSubmit) {\n formModal.onAfterSubmit(formData);\n } else {\n formModal.close();\n resolve(formData);\n }\n });\n formModal.event.on('abort', () => {\n formModal.close();\n reject('abort');\n });\n });\n}\n\nexport function getFormState<T>(\n {\n data,\n metadata = {},\n onSet = (v: T, form) => v,\n onSubmit,\n theme = 'default',\n }: {\n data: T;\n metadata?: { [key: string]: any } & Partial<JSONSchemaFormState<any>>;\n onSet?: (v: T, form: JSONSchemaFormState<T, UiSchema>) => T;\n onSubmit?: (data: T) => void;\n theme: ThemeType;\n }\n): JSONSchemaFormState<T, UiSchema> {\n const value = {};\n const required = [];\n const props = Object.entries(data).reduce((p, c) => {\n const [k, v] = c;\n\n const type = typeof v;\n p[k] = {\n type\n };\n\n value[k] = v;\n\n if (!metadata[k]) {\n metadata[k] = {};\n }\n\n if (type === 'string' || type === 'number') {\n if (metadata[k]?.selectOptions) {\n metadata[k]['ui:widget'] = SelectWidget;\n p[k].selectOptions = metadata[k].selectOptions;\n } else {\n if (!metadata[k]['ui:widget']) {\n metadata[k]['ui:widget'] = InputWidget;\n\n if (type === 'number') {\n p[k].inputType = 'number';\n }\n }\n }\n }\n\n if (type === 'boolean') {\n metadata[k]['ui:widget'] = CheckboxWidget;\n metadata[k]['ui:options'] = {\n size: 'sm',\n }\n }\n\n if (type === 'object') {\n // Instead of setting up \"definitions\", the easy way to do this is to edit the json directly using the EditorWidget\n p[k].type = 'string';\n value[k] = JSON.stringify(v, null, 2);\n metadata[k]['ui:widget'] = EditorWidget;\n }\n\n if (metadata[k]?.inputType) {\n p[k].inputType = metadata[k].inputType;\n delete metadata[k].inputType;\n }\n if (metadata[k]?.title) {\n p[k].title = metadata[k].title || v;\n delete metadata[k].title;\n }\n if (metadata[k]?.description) {\n p[k].description = metadata[k].description;\n delete metadata[k].description;\n }\n\n if (metadata[k]?.required) {\n required.push(k);\n delete metadata[k].required;\n }\n\n metadata[k]['theme'] = theme;\n return p;\n }, {});\n const schema = {\n type: 'object',\n properties: props,\n required,\n };\n const form = new JSONSchemaFormState({\n //@ts-ignore\n schema,\n uiSchema: {\n 'ui:submitButtonOptions': {\n norender: false,\n submitText: 'Submit',\n },\n ...metadata,\n },\n afterSubmit(e) {\n if (onSubmit) {\n onSubmit(e.formData as T);\n } else {\n const formModal = RootStore.Get(FormModalStore);\n formModal.event.emit('afterSubmit', e.formData);\n }\n },\n value: new JSONSchemaValue({\n default: value,\n onSet: (v: T) => onSet(v, form),\n }),\n });\n return form as any\n}\n\nexport async function getSimpleFormData<T>(\n data: T,\n metadata: { [key: string]: any } & Partial<JSONSchemaFormState<any>> = {},\n config: Partial<FormModalStore>,\n onSet = (v: T, form: JSONSchemaFormState<T, UiSchema>) => {\n return v;\n },\n theme: ThemeType = 'default'\n) {\n const form = getFormState({ data, metadata, onSet, theme });\n return getFormData<T>({\n ...config,\n //@ts-ignore\n form\n });\n}\n","import { Modal, ModalBody, ModalContent, ModalHeader } from '@nextui-org/react';\nimport { observer } from \"mobx-react-lite\";\nimport { JSONSchemaForm } from \"../../components/JSONSchemaForm\";\nimport { useStore } from \"../../store/index\";\nimport Draggable from \"react-draggable\";\nimport { FormModalStore } from \".\";\nimport React from 'react';\n\nconst JSONFormModal = observer(() => {\n const rootStore = useStore();\n const formModal = rootStore.get(FormModalStore);\n const { form, closeOnOverlayClick } = formModal;\n if (!form) {\n return null;\n }\n return (\n <Modal\n className={formModal.className}\n classNames={formModal.classNames}\n scrollBehavior={formModal.scrollBehavior}\n isOpen={formModal.isOpen}\n size={formModal.modalSize}\n isDismissable={!closeOnOverlayClick}\n onOpenChange={(open: boolean) => {\n if (!open) {\n formModal.event.emit('abort');\n }\n }}\n >\n <div className=\"z-50 fixed top-0 left-0 w-screen h-screen flex items-center justify-center\">\n <Draggable handle=\".draggable-handle\">\n <ModalContent>\n {formModal.title && <ModalHeader className=\"flex flex-col gap-1 draggable-handle cursor-move\">{formModal.title}</ModalHeader>}\n <ModalBody className='max-h-[90vh] overflow-auto'>\n <JSONSchemaForm formState={form} />\n </ModalBody>\n </ModalContent>\n </Draggable>\n </div>\n </Modal>\n );\n});\n\nexport default JSONFormModal;\n\n"]}
1
+ {"version":3,"sources":["../components/JSONForm/index.tsx","../components/JSONForm/Layouts/gridLayout.tsx","../components/JSONForm/Layouts/format.tsx","../components/JSONFormWidgets/CheckboxWidget/index.tsx","../components/JSONFormWidgets/InputWidget/index.tsx","../components/JSONFormWidgets/SelectWidget/index.tsx","../components/JSONFormWidgets/MultipleSelectWidget/index.tsx","../components/JSONFormWidgets/EditorWidget/index.tsx","../store/standard/JSONSchemaState.ts","../components/JSONSchemaForm/index.tsx","../components/ui/grid/col.tsx","../components/ui/grid/styles.tsx","../components/ui/grid/grid.tsx","../components/JSONForm/Layouts/listLayout.tsx","../components/JSONForm/Layouts/simpleLayout.tsx","../components/JSONForm/Layouts/tabLayout.tsx","../components/JSONFormWidgets/TextareaWidget/index.tsx","../components/JSONFormWidgets/DatePickerWidget/index.tsx","../module/ComplexFormModal/Provider.tsx","../module/ComplexFormModal/index.tsx","../module/FormModal/index.tsx","../module/FormModal/Provider.tsx"],"names":["React","useState","Button","errMsg","useMemo","value","useCallback","Select","SelectItem","useRef","_a","formData","toJS","SubmitButton","numColSpan","_b","_c","_d","useEffect","ChevronDown","ChevronUp","observer","EventEmitter","makeAutoObservable","Modal","ModalBody","ModalContent","ModalHeader","Draggable","Provider_default","getFormState"],"mappings":"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","sourcesContent":["import React, { Dispatch, SetStateAction } from \"react\";\nimport { ButtonProps, TabsProps } from \"@nextui-org/react\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { JSONSchemaFormState } from \"../../store/standard/JSONSchemaState\";\nimport { GridLayout } from \"./Layouts/gridLayout\";\nimport { ListLayout } from \"./Layouts/listLayout\";\nimport { SimpleLayout } from \"./Layouts/simpleLayout\";\nimport { TabLayout } from \"./Layouts/tabLayout\";\nimport { ThemeType } from \"../../themes\";\n\nconst COMPONENTS = {\n GridLayout,\n TabLayout,\n ListLayout,\n SimpleLayout,\n};\n\nexport type FormDataType = {\n [key: string]: {\n [key: string]: string | number | boolean | Record<string, string | number | boolean>;\n };\n};\n\nexport type FormConfigType<T extends FormDataType> = {\n [F in keyof T]?: {\n [X in keyof T[F]]?: {\n title?: string;\n required?: boolean;\n requiredErrMsg?: string;\n validate?: (v: any) => string | void;\n selectOptions?: { label: string; value: string }[];\n isMultipleSelect?: boolean;\n } & UiSchema;\n };\n};\n\ntype SubmitButtonProps<T extends FormDataType> = ButtonProps & { onAfterSubmit?: (formKey: FormKey<T>, data: FormDataOfKey<T>, setLoading: Dispatch<SetStateAction<boolean>>) => void };\n\ntype CombFormsCustomRender<T extends FormDataType> = (formStates: { [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema> }) => React.ReactNode;\ntype CombFormsCustomRenderMap<T extends FormDataType> = {\n Top?: CombFormsCustomRender<T>;\n SubmitButtonBefore?: CombFormsCustomRender<T>;\n SubmitButtonAfter?: CombFormsCustomRender<T>;\n}\n\ntype SubformCustomRender<T extends FormDataType> = (formKey: FormKey<T>, formState: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => React.ReactNode;\ntype SubformCustomRenderMap<T extends FormDataType> = {\n Top?: SubformCustomRender<T>;\n SubmitButtonBefore?: SubformCustomRender<T>;\n SubmitButtonAfter?: SubformCustomRender<T>;\n}\n\ntype SubformLayoutBaseConfig<T extends FormDataType, F extends keyof T> = {\n title?: string;\n titleBoxCss?: string;\n fieldLayout?: Array<keyof NonNullable<T[F]>> | Array<Array<keyof NonNullable<T[F]>> | keyof NonNullable<T[F]>>;\n submitButtonProps?: SubmitButtonProps<T>;\n customRender?: SubformCustomRenderMap<T>;\n};\n\ninterface LayoutConfigMap<T extends FormDataType> {\n GridLayout: {\n $type: 'GridLayout';\n $gridColumn?: number;\n $combFormsCustomRender?: CombFormsCustomRenderMap<T>;\n } & {\n [F in keyof T]?: SubformLayoutBaseConfig<T, F> & {\n colSpan?: number;\n cardCss?: string;\n };\n };\n TabLayout: {\n $type: 'TabLayout';\n $tabsProps?: TabsProps;\n $combFormsCustomRender?: CombFormsCustomRenderMap<T>;\n } & {\n [F in keyof T]?: SubformLayoutBaseConfig<T, F>\n };\n ListLayout: {\n $type: 'ListLayout';\n $combFormsCustomRender?: CombFormsCustomRenderMap<T>;\n } & {\n [F in keyof T]?: SubformLayoutBaseConfig<T, F>\n };\n SimpleLayout: {\n $type: 'SimpleLayout';\n $combFormsCustomRender?: CombFormsCustomRenderMap<T>;\n } & {\n [F in keyof T]?: SubformLayoutBaseConfig<T, F>\n };\n}\n\nexport type LayoutType = keyof typeof COMPONENTS;\nexport type LayoutConfigType<T extends FormDataType, L extends LayoutType> = LayoutConfigMap<T>[L];\n\nexport type FormKey<T extends FormDataType> = keyof T;\nexport type FormDataOfKey<T extends FormDataType> = T[FormKey<T>];\n\nexport type JSONFormProps<T extends FormDataType> = {\n className?: string;\n theme?: ThemeType;\n formData: T;\n formConfig?: FormConfigType<T>;\n layoutConfig?: LayoutConfigType<T, LayoutType>;\n onBatchSubmit?: (data: T, setLoading: Dispatch<SetStateAction<boolean>>) => void;\n onSet?: (v: FormDataOfKey<T>, form: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => FormDataOfKey<T>;\n onChange?: (data: Partial<T>) => void;\n onReady?: (formStates: { [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema> }) => void;\n batchSubmitButtonProps?: ButtonProps & { onBatchSubmit?: (formData: T, setLoading: Dispatch<SetStateAction<boolean>>) => void };\n};\n\nexport const JSONForm = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const type = props.layoutConfig?.$type || 'SimpleLayout';\n const Comp = COMPONENTS[type];\n return (\n <div className={props.className}>\n <Comp {...props} />\n </div>\n );\n};","import React, { useEffect } from \"react\";\nimport { Card } from \"@nextui-org/react\";\nimport { FormDataType, JSONFormProps, LayoutConfigType } from \"..\";\nimport { BatchSubmitButton, SubmitButton, getFormState } from \"./format\";\nimport { JSONSchemaForm } from \"../../../components/JSONSchemaForm\";\nimport { Grid, Col } from '../../../components/ui/grid';\nimport { cn } from '../../../lib/utils';\nimport { getStyle } from \"../../../themes\";\n\nexport const GridLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig, onBatchSubmit, batchSubmitButtonProps, onReady, theme } = props;\n const { $type, $gridColumn, $combFormsCustomRender, ...formLayout } = layoutConfig as LayoutConfigType<T, 'GridLayout'>;\n const formStates = getFormState(props, formLayout, theme);\n const cardStyle = getStyle(theme || 'default', 'Card');\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n {$combFormsCustomRender?.Top?.(formStates)}\n <Grid numItems={$gridColumn ?? 1} className=\"gap-2\">\n {Object.keys(formStates).map((key) => {\n const layout = formLayout[key];\n return (\n <Col numColSpan={layout?.colSpan ?? 1} key={key} id={`form-${key}`}>\n <Card className={cn(\"h-full m-0 p-4 shadow-sm border dark:border-[#3e3e3e]\", cardStyle.className, layout?.cardCss)}>\n <div className={cn('mb-2 font-bold text-center', layout?.titleBoxCss)}>{layout?.title || key}</div>\n {layout?.customRender?.Top?.(key, formStates[key])}\n <JSONSchemaForm formState={formStates[key]}>\n {layout?.customRender?.SubmitButtonBefore?.(key, formStates[key])}\n {layout?.submitButtonProps && <SubmitButton formKey={key} formState={formStates[key]} buttonProps={layout.submitButtonProps} />}\n {layout?.customRender?.SubmitButtonAfter?.(key, formStates[key])}\n </JSONSchemaForm>\n </Card>\n </Col>\n );\n })}\n </Grid>\n {$combFormsCustomRender?.SubmitButtonBefore?.(formStates)}\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n {$combFormsCustomRender?.SubmitButtonAfter?.(formStates)}\n </>\n );\n};","import React, { useState } from \"react\";\nimport { Button } from \"@nextui-org/react\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { FormDataOfKey, FormDataType, JSONFormProps } from \"..\";\nimport { CheckboxWidget } from \"../../../components/JSONFormWidgets/CheckboxWidget\";\nimport { InputWidget } from \"../../../components/JSONFormWidgets/InputWidget\";\nimport { SelectWidget } from \"../../../components/JSONFormWidgets/SelectWidget\";\nimport { MultipleSelectWidget } from \"../../../components/JSONFormWidgets/MultipleSelectWidget\";\nimport { EditorWidget } from '../../../components/JSONFormWidgets/EditorWidget';\nimport {\n JSONSchemaFormState,\n JSONSchemaValue,\n} from \"../../../store/standard/JSONSchemaState\";\nimport { helper } from \"../../../lib/helper\";\nimport { cn } from \"../../../lib/utils\";\nimport { ThemeType } from \"../../../themes\";\n\nexport const getFormState = <T extends FormDataType>(\n props: JSONFormProps<T>,\n formLayout: { [x: string]: { fieldLayout?: any[] } } = {},\n theme: ThemeType = 'default'\n) => {\n const { formData, formConfig, onSet, onChange } = props;\n\n const formStates = {};\n\n Object.keys(formData).forEach((key) => {\n const metadata = formData[key];\n const formConfigData = formConfig?.[key] || {};\n const value = {};\n const required = [];\n const properties = Object.entries(metadata).reduce((p, c: any) => {\n const [k, v] = c;\n\n const type = typeof v;\n p[k] = {\n type,\n };\n\n value[k] = v;\n\n if (!formConfigData[k]) {\n formConfigData[k] = {};\n }\n\n if (formConfigData[k]?.title) {\n p[k].title = formConfigData[k].title || k;\n }\n\n if (formConfigData[k]?.required) {\n required.push(k);\n }\n\n if (type === \"string\" || type === \"number\") {\n if (formConfigData[k]?.selectOptions) {\n if (formConfigData[k]?.isMultipleSelect) {\n formConfigData[k]['ui:widget'] = MultipleSelectWidget;\n } else {\n formConfigData[k]['ui:widget'] = SelectWidget;\n }\n } else {\n if (!formConfigData[k][\"ui:widget\"]) {\n formConfigData[k][\"ui:widget\"] = InputWidget;\n\n if (type === \"number\") {\n formConfigData[k]['ui:options'] = {\n ...formConfigData[k]['ui:options'],\n inputType: 'number',\n };\n }\n\n if (helper.json.isJsonString(v)) {\n formConfigData[k]['ui:widget'] = EditorWidget;\n formConfigData[k][\"ui:options\"] = {\n ...formConfigData[k][\"ui:options\"],\n jsonStrSpace: 2,\n };\n }\n }\n }\n }\n\n if (type === \"boolean\") {\n formConfigData[k][\"ui:widget\"] = CheckboxWidget;\n }\n\n if (type === 'object') {\n // Instead of setting up \"definitions\", the easy way to do this is to edit the json directly using the EditorWidget\n p[k].type = 'string';\n value[k] = JSON.stringify(v, null, 2);\n formConfigData[k]['ui:widget'] = EditorWidget;\n }\n\n formConfigData[k]['theme'] = theme;\n return p;\n }, {});\n const schema = {\n type: \"object\",\n properties,\n required,\n };\n const form = new JSONSchemaFormState({\n // @ts-ignore\n schema,\n uiSchema: {\n \"ui:submitButtonOptions\": {\n norender: true,\n },\n ...formConfigData,\n layout: formLayout[key]?.fieldLayout,\n },\n // afterSubmit: async (e) => {\n // onSubmit?.(key as FormKey<T>, e.formData as FormDataOfKey<T>);\n // },\n afterChange: (e, id) => {\n const { formData } = e;\n if (formData && id) {\n const field = id.replace('root_', '');\n const data = {\n [key]: {\n [field]: formData[field],\n }\n };\n // @ts-ignore\n onChange?.(data);\n }\n },\n value: new JSONSchemaValue({\n default: value as FormDataOfKey<T>,\n onSet: (v) => {\n if (onSet) {\n return onSet(v as FormDataOfKey<T>, form);\n }\n return v;\n },\n }),\n });\n\n formStates[key] = form;\n });\n\n return formStates as {\n [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>;\n };\n};\n\nexport const BatchSubmitButton = ({ formStates, onSubmit, buttonProps }) => {\n const { className, onClick, children, isLoading, onBatchSubmit, ...rest } = buttonProps || {};\n const [loading, setLoading] = useState(false);\n return (\n <Button\n className={cn('mt-4 ml-auto', className)}\n size=\"sm\"\n color=\"primary\"\n isLoading={loading}\n onClick={(e) => {\n const formData = {};\n const formKeys = Object.keys(formStates);\n for (const formKey of formKeys) {\n const form = formStates[formKey];\n const current = form.formRef.current;\n if (current) {\n current.submit();\n // const errors = current.state.errors;\n // if (errors.length > 0) {\n // return;\n // }\n\n const data = current.state.formData;\n const uiSchema = current.state.uiSchema;\n const keys = Object.keys(uiSchema);\n for (const key of keys) {\n const uiConfig = uiSchema[key];\n if (uiConfig) {\n const { required, validate } = uiConfig;\n if (required) {\n if (data[key] === undefined || data[key] === null || data[key] === '') {\n return;\n }\n }\n if (validate) {\n const errMsg = validate(data[key]);\n if (errMsg) {\n return;\n }\n }\n }\n }\n\n formData[formKey] = data;\n } else {\n console.error('formRef.current is null');\n return;\n }\n }\n onSubmit?.(formData, setLoading);\n onBatchSubmit?.(formData, setLoading);\n }}\n {...rest}\n >\n {children || 'Submit'}\n </Button>\n );\n};\n\nexport const SubmitButton = ({ formKey, formState, buttonProps }) => {\n const { className, onClick, children, isLoading, onAfterSubmit, ...rest } = buttonProps || {};\n const [loading, setLoading] = useState(false);\n return (\n <div className=\"w-full flex\">\n <Button\n className={cn('mt-4 ml-auto', className)}\n type=\"submit\"\n color=\"primary\"\n size=\"sm\"\n isLoading={loading}\n onClick={(e) => {\n let formData = {};\n const current = formState.formRef.current;\n if (current) {\n current.submit();\n // const errors = current.state.errors;\n // if (errors.length > 0) {\n // return;\n // }\n\n formData = current.state.formData;\n const uiSchema = current.state.uiSchema;\n const keys = Object.keys(uiSchema);\n for (const key of keys) {\n const uiConfig = uiSchema[key];\n if (uiConfig) {\n const { required, validate } = uiConfig;\n if (required) {\n if (formData[key] === undefined || formData[key] === null || formData[key] === '') {\n return;\n }\n }\n if (validate) {\n const errMsg = validate(formData[key]);\n if (errMsg) {\n return;\n }\n }\n }\n }\n }\n onAfterSubmit?.(formKey, formData, setLoading);\n }}\n {...rest}\n >\n {children || 'Submit'}\n </Button>\n </div>\n );\n};\n","import React, { useMemo, useState } from \"react\";\nimport { Checkbox, CheckboxProps } from \"@nextui-org/react\";\nimport { WidgetProps } from \"@rjsf/utils\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../../../lib/utils\";\nimport { getStyle } from \"../../../themes\";\n\ntype Options = {\n className?: string;\n nextuiClassNames?: CheckboxProps[\"classNames\"];\n size: CheckboxProps[\"size\"];\n color: CheckboxProps[\"color\"];\n description?: string;\n descriptionClassName?: string;\n};\n\nexport interface CheckboxWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface CheckboxWidgetUIOptions {\n \"ui:widget\": (props: CheckboxWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n}\n\nexport function CheckboxWidget({\n onChange, options, label, value, disabled, uiSchema\n}: CheckboxWidgetProps) {\n const {\n className,\n nextuiClassNames,\n size = 'sm',\n color = 'primary',\n description,\n descriptionClassName,\n } = options;\n const { validate, theme } = uiSchema;\n const [errMsg, setErrMsg] = useState<string>('');\n const isInvalid = !!errMsg;\n const classNames = useMemo(() => {\n const themeStyle = getStyle(theme || 'default', 'CheckboxWidget');\n return {\n ...themeStyle.classNames,\n ...nextuiClassNames\n }\n }, [theme, nextuiClassNames]);\n return (\n <>\n <Checkbox\n className={cn('max-w-full', className)}\n classNames={classNames}\n defaultSelected={value}\n isDisabled={disabled}\n icon={<Check className=\"bg-white dark:bg-black\" />}\n color={color}\n size={size}\n onChange={(e: any) => {\n const checked = e.target.checked;\n onChange(checked);\n }}\n onBlur={() => {\n if (validate) {\n const errMsg = validate(value);\n setErrMsg(errMsg);\n return;\n }\n setErrMsg('');\n }}\n >\n {label}\n </Checkbox>\n {description && <div className={cn('mt-1 text-xs text-[#A1A1A9] dark:text-[#717179]', descriptionClassName)}>{description}</div>}\n {isInvalid && <div className=\"mt-2 text-xs text-[#DF3562]\">{errMsg}</div>}\n </>\n );\n}\n\n","// @ts-nocheck\nimport React, { ReactNode, useMemo, useRef } from \"react\";\nimport { Input, InputProps, InputSlots, SlotsToClasses } from \"@nextui-org/react\";\nimport { WidgetProps } from \"@rjsf/utils\";\nimport { cn } from \"../../../lib/utils\";\nimport { getStyle } from \"../../../themes\";\n\ntype Options = {\n className?: string;\n nextuiClassNames?: SlotsToClasses<InputSlots>;\n labelPlacement?: InputProps[\"labelPlacement\"];\n size: InputProps[\"size\"];\n placeholder?: string;\n inputType?: 'text' | 'number' | 'password';\n color?: InputProps[\"color\"];\n variant?: InputProps[\"variant\"];\n radius?: InputProps[\"radius\"];\n startContent?: ReactNode;\n endContent?: ReactNode;\n description?: string;\n min?: number;\n max?: number;\n};\n//@ts-ignore \nexport interface InputWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface InputWidgetUIOptions {\n \"ui:widget\": (props: InputWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n}\n\nexport function InputWidget(props: InputWidgetProps) {\n const { onChange, options, label, value, required, disabled, uiSchema } = props;\n const {\n className,\n nextuiClassNames,\n labelPlacement = 'inside',\n size = 'sm',\n inputType = 'text',\n color,\n variant,\n radius,\n startContent,\n endContent,\n description,\n min,\n max\n } = options;\n const { requiredErrMsg, validate, theme } = uiSchema;\n const placeholder = uiSchema['ui:options']?.placeholder;\n const isFirstChecked = useRef(true);\n const classNames = useMemo(() => {\n const themeStyle = getStyle(theme || 'default', 'InputWidget');\n return {\n ...themeStyle.classNames,\n ...nextuiClassNames\n }\n }, [theme, nextuiClassNames]);\n return (\n <Input\n className={cn('w-full', className)}\n classNames={classNames}\n label={label}\n placeholder={placeholder}\n value={value}\n isRequired={required}\n isDisabled={disabled}\n size={size}\n labelPlacement={labelPlacement}\n description={description}\n type={inputType}\n color={color}\n variant={variant}\n radius={radius}\n startContent={startContent}\n endContent={endContent}\n onChange={(e) => onChange(e.target.value)}\n min={min}\n max={max}\n validate={() => {\n if (isFirstChecked.current) {\n isFirstChecked.current = false;\n return true;\n }\n if (value === '' && required) {\n return requiredErrMsg || 'This field is required';\n }\n if (validate) {\n const errMsg = validate(value);\n return errMsg;\n }\n return true;\n }}\n />\n );\n}\n\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { WidgetProps } from \"@rjsf/utils\";\nimport { Select, SelectItem, SelectProps, SelectSlots, SlotsToClasses } from \"@nextui-org/react\";\nimport { cn } from \"../../../lib/utils\";\nimport { getStyle } from \"../../../themes\";\n\ntype Options = {\n className?: string;\n nextuiClassNames?: SlotsToClasses<SelectSlots>;\n listboxProps?: SelectProps['listboxProps'];\n labelPlacement?: SelectProps[\"labelPlacement\"];\n placeholder?: string;\n size: SelectProps[\"size\"];\n color?: SelectProps[\"color\"];\n variant?: SelectProps[\"variant\"];\n radius?: SelectProps[\"radius\"];\n description?: string;\n};\n\nexport interface SelectWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface SelectWidgetUIOptions {\n \"ui:widget\": (props: SelectWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n}\n\nexport function SelectWidget(props: SelectWidgetProps) {\n const { onChange, options, label, value, required, disabled, uiSchema } = props;\n const {\n className,\n nextuiClassNames,\n listboxProps = {\n itemClasses: {\n base: [\n 'rounded-lg',\n 'text-default-500',\n 'transition-opacity',\n 'data-[hover=true]:text-foreground',\n 'data-[hover=true]:bg-default-100',\n 'dark:data-[hover=true]:bg-default-50',\n 'data-[selectable=true]:focus:bg-default-50',\n 'data-[pressed=true]:opacity-70',\n 'data-[focus-visible=true]:ring-default-500',\n ],\n },\n },\n labelPlacement = 'inside',\n size = 'sm',\n color,\n variant,\n radius,\n description,\n } = options;\n const { selectOptions = [], requiredErrMsg, validate, theme } = uiSchema;\n const placeholder = uiSchema['ui:options']?.placeholder;\n const classNames = useMemo(() => {\n const themeStyle = getStyle(theme || 'default', 'MultipleSelectWidget');\n return {\n ...themeStyle.classNames,\n ...nextuiClassNames\n }\n }, [theme, nextuiClassNames]);\n const [errMsg, setErrMsg] = useState<string>('');\n const isInvalid = !!errMsg;\n const checkValue = useCallback((value) => {\n if (!value && required) {\n setErrMsg(requiredErrMsg || 'This field is required');\n return;\n }\n if (validate) {\n const errMsg = validate(value);\n setErrMsg(errMsg);\n return;\n }\n setErrMsg('');\n }, []);\n\n return (\n <Select\n label={label?.trim()}\n className={cn('w-full', className)}\n classNames={classNames}\n labelPlacement={labelPlacement}\n placeholder={placeholder}\n size={size}\n isRequired={required}\n isDisabled={disabled}\n isInvalid={isInvalid}\n description={description}\n listboxProps={listboxProps}\n variant={variant}\n radius={radius}\n color={isInvalid ? 'danger' : color}\n errorMessage={isInvalid && errMsg}\n selectedKeys={[value]}\n onSelectionChange={(v) => {\n const keys = Array.from(v) as string[];\n const _v = keys[0];\n onChange(_v);\n checkValue(_v);\n }}\n >\n {selectOptions.map((item) => (\n <SelectItem key={item.value} value={item.value}>\n {item.label}\n </SelectItem>\n ))}\n </Select>\n );\n}\n\n\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { Chip, Select, SelectItem, SelectProps, SelectedItems } from '@nextui-org/react';\nimport { WidgetProps } from '@rjsf/utils';\nimport { cn } from \"../../../lib/utils\";\nimport { getStyle } from '../../../themes';\n\ntype Options = {\n className?: string;\n nextuiClassNames?: SelectProps['classNames'];\n labelPlacement?: SelectProps['labelPlacement'];\n listboxProps?: SelectProps['listboxProps'];\n size: SelectProps['size'];\n color?: SelectProps['color'];\n placeholder?: string;\n description?: string;\n renderValue?: (\n items: SelectedItems<{\n label: string;\n value: string;\n }>,\n ) => React.ReactNode;\n};\n\nexport interface MultipleSelectWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface MultipleSelectWidgetUIOptions {\n 'ui:widget': (props: MultipleSelectWidgetProps) => JSX.Element;\n 'ui:options': Options;\n}\n\nexport function MultipleSelectWidget(props: MultipleSelectWidgetProps) {\n const { onChange, options, label, value, required, uiSchema = {} } = props;\n const { selectOptions = [], requiredErrMsg, validate, theme } = uiSchema;\n const {\n className,\n nextuiClassNames,\n labelPlacement = 'inside',\n listboxProps = {},\n size = 'sm',\n color,\n description,\n renderValue = DefaultRenderValue\n } = options;\n const placeholder = uiSchema['ui:options']?.placeholder || 'Select an option';\n const selectedKeys = useMemo(() => {\n return value ? value.split(',') : [];\n }, [value]);\n const classNames = useMemo(() => {\n const themeStyle = getStyle(theme || 'default', 'MultipleSelectWidget');\n return {\n ...themeStyle.classNames,\n ...nextuiClassNames\n }\n }, [theme, nextuiClassNames]);\n const [errMsg, setErrMsg] = useState<string>('');\n const isInvalid = !!errMsg;\n const checkValue = useCallback((value) => {\n if (!value && required) {\n setErrMsg(requiredErrMsg || 'This field is required');\n return;\n }\n if (validate) {\n const errMsg = validate(value);\n setErrMsg(errMsg);\n return;\n }\n setErrMsg('');\n }, []);\n\n return (\n <Select\n className={cn('w-full', className)}\n label={label}\n isMultiline\n selectionMode=\"multiple\"\n labelPlacement={labelPlacement}\n size={size}\n placeholder={placeholder}\n selectedKeys={selectedKeys}\n isRequired={required}\n color={isInvalid ? 'danger' : color}\n errorMessage={isInvalid && errMsg}\n onSelectionChange={(v) => {\n const keys = Array.from(v) as string[];\n const _v = keys.join(',');\n onChange(_v);\n checkValue(_v);\n }}\n items={selectOptions}\n classNames={classNames}\n listboxProps={{\n itemClasses: {\n base: [\n 'rounded-lg',\n 'text-default-500',\n 'transition-opacity',\n 'data-[hover=true]:text-foreground',\n 'data-[hover=true]:bg-default-100',\n 'dark:data-[hover=true]:bg-default-50',\n 'data-[selectable=true]:focus:bg-default-50',\n 'data-[pressed=true]:opacity-70',\n 'data-[focus-visible=true]:ring-default-500',\n ],\n },\n ...listboxProps\n }}\n description={description}\n renderValue={renderValue}\n >\n {selectOptions.map((item) => (\n <SelectItem key={item.value} textValue={item.label}>\n {item.label}\n </SelectItem>\n ))}\n </Select>\n );\n}\n\nfunction DefaultRenderValue(\n items: SelectedItems<{\n label: string;\n value: string;\n }>,\n) {\n return (\n <div className=\"flex flex-wrap gap-1\">\n {items.map((item) => (\n <Chip className=\"rounded-sm h-auto py-[2px] text-xs\" color=\"secondary\" size=\"sm\" key={item.key}>\n {item.textValue}\n </Chip>\n ))}\n </div>\n );\n}\n","import React, { useRef, useState } from \"react\";\nimport MonacoEditor, { EditorProps } from \"@monaco-editor/react\";\nimport { WidgetProps } from \"@rjsf/utils\";\nimport { Button } from \"@nextui-org/react\";\nimport { cn } from \"../../../lib/utils\";\nimport { helper } from \"../../../lib/helper\";\nimport { _ } from '../../../lib/lodash';\n\ntype Options = {\n editorHeight?: string;\n readOnly?: boolean;\n language?: string;\n languageSelectorOptions?: { label: string; value: string }[];\n onChangeLanguage?: (v: string) => void;\n onRun?: (v: string) => void;\n onMount?: EditorProps['onMount'];\n jsonStrSpace?: number; // Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.\n labelClassName?: string;\n description?: string;\n descriptionClassName?: string;\n editorBoxClassName?: string;\n errMsgClassName?: string;\n};\n\nexport interface EditorWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport type EditorWidgetUIOptions = {\n \"ui:widget\": (props: EditorWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n};\n\nexport const EditorWidget = ({ label, options = {}, value, required, uiSchema, disabled, onChange }: EditorWidgetProps) => {\n const { editorHeight = '200px', readOnly = false, language = 'json', jsonStrSpace, languageSelectorOptions = [], labelClassName, description, descriptionClassName, editorBoxClassName, errMsgClassName, onChangeLanguage, onRun, onMount } = options;\n const { requiredErrMsg, validate } = uiSchema;\n const [selectedLanguage, setSelectedLanguage] = useState('');\n const [runLoading, setRunLoading] = useState(false);\n const showLanguageSelector = languageSelectorOptions.length > 0;\n const [errMsg, setErrMsg] = useState<string>('');\n const isInvalid = !!errMsg;\n const debouncedCheckValue = useRef(\n _.debounce(async (value) => {\n if (!value && required) {\n setErrMsg(requiredErrMsg || 'This field is required');\n return;\n }\n if (validate) {\n const errMsg = validate(value);\n setErrMsg(errMsg);\n return;\n }\n setErrMsg('');\n }, 1000),\n ).current;\n\n const labelText = label.trim();\n const showLabel = labelText || showLanguageSelector;\n\n return (\n <div className='flex flex-col relative'>\n {\n showLabel && <div className={cn('flex justify-between items-center mb-2', labelClassName)}>\n {label && (\n <label\n className=\"mr-2 flex items-center text-sm\"\n >\n {label}\n {required && <span className=\"font-bold text-red-600\">*</span>}\n </label>\n )}\n {showLanguageSelector && (\n <select\n className=\"w-full p-3 text-sm rounded-md bg-[#F4F4F5] dark:bg-[#27272A]\"\n value={selectedLanguage}\n onChange={(event) => {\n const v = event.target.value;\n setSelectedLanguage(v);\n onChangeLanguage && onChangeLanguage(v);\n }}\n >\n {languageSelectorOptions.map((item) => {\n return <option key={item.value} value={item.value}>{item.label}</option>\n })}\n </select>\n )}\n </div>\n }\n {description && <div className={cn('mb-2 text-xs text-[#A1A1A9] dark:text-[#717179]', descriptionClassName)}>{description}</div>}\n <div className={cn(\"rounded-lg overflow-hidden relative border dark:border-[#2c2c2c]\", editorBoxClassName)}>\n <MonacoEditor\n options={{ readOnly: readOnly || disabled, minimap: { enabled: false } }}\n height={editorHeight}\n theme=\"vs-dark\"\n language={selectedLanguage ? selectedLanguage : language}\n value={value}\n onChange={(v) => {\n onChange(v);\n debouncedCheckValue(v);\n }}\n onMount={(editor, monaco) => {\n onMount && onMount(editor, monaco);\n if (language === 'json' && jsonStrSpace && value) {\n const json = helper.json.safeParse(value);\n editor.setValue(JSON.stringify(json, null, jsonStrSpace));\n }\n monaco.editor.defineTheme('myCustomTheme', {\n base: 'vs-dark',\n inherit: true,\n rules: [],\n colors: {\n 'editor.background': '#09090B',\n },\n });\n monaco.editor.setTheme('myCustomTheme');\n }}\n />\n </div>\n {isInvalid && <div className={cn(\"mt-2 text-xs text-[#DF3562]\", errMsgClassName)}>{errMsg}</div>}\n {onRun && (\n <Button\n className=\"absolute bottom-2 right-4\"\n size=\"sm\"\n isLoading={runLoading}\n onClick={async () => {\n setRunLoading(true);\n await onRun(value);\n setRunLoading(false);\n }}\n >\n Run\n </Button>\n )}\n </div>\n );\n};\n\n","import { createRef } from \"react\";\nimport Form, { IChangeEvent } from \"@rjsf/core\";\nimport { RJSFSchema, UiSchema } from \"@rjsf/utils\";\nimport validator from \"@rjsf/validator-ajv8\";\nimport { action, computed, makeObservable, observable, toJS } from \"mobx\";\nimport { helper } from \"../../lib/helper\";\n\nexport class JSONSchemaFormState<T, U = UiSchema> {\n value: JSONSchemaValue<T> = new JSONSchemaValue();\n schema: RJSFSchema;\n uiSchema: U;\n reactive: boolean = true;\n readonly = false;\n liveValidate = false;\n validator = validator;\n formRef: React.RefObject<Form>;\n\n get formData() {\n return this.value.get();\n }\n set formData(value: T) {\n this.value.set(value);\n }\n get dynamicData() {\n return this.getDymaicData();\n }\n getDymaicData = () => {\n return { ready: true };\n };\n onChange = (e: IChangeEvent<T>, id?: string) => {\n this.value.set(e.formData);\n if (this.afterChange) {\n this.afterChange(e, id);\n }\n };\n onSubmit = (e: IChangeEvent<T>) => {\n if (this.afterSubmit) {\n this.afterSubmit(e);\n }\n };\n afterSubmit: (e: IChangeEvent<T>) => void;\n afterChange: (e: IChangeEvent<T>, id?: string) => void;\n reset({ force = false } = {}) {\n if (force) {\n this.value.value = this.value.default;\n } else {\n this.value.reset();\n }\n return this;\n }\n customValidate = (formData: T, errors: any) => errors;\n constructor(args: Partial<JSONSchemaFormState<T, U>> = {}) {\n Object.assign(this, args, { formRef: createRef() });\n if (this.reactive) {\n makeObservable(this, {\n formData: computed,\n });\n }\n }\n}\n\nexport class JSONSchemaValue<T> {\n value?: T = null as T;\n default?: T = null as T;\n constructor(args: Partial<JSONSchemaValue<T>> = {}) {\n if (!args.value && args.default) {\n args.value = args.default;\n }\n Object.assign(this, args);\n makeObservable(this, {\n value: observable,\n set: action,\n });\n }\n set(value: Partial<T>) {\n value = this.onSet(value);\n const newVal = helper.deepMerge(this.value, value);\n this.value = toJS(newVal);\n return this.value;\n }\n onSet(value: Partial<T>) {\n return value;\n }\n get() {\n return this.getFormat(this.value);\n }\n getFormat(value: T) {\n return value;\n }\n reset() {\n this.set(this.default);\n }\n}\n","import React, { useState } from \"react\";\nimport { Button } from \"@nextui-org/react\";\nimport Form from \"@rjsf/core\";\nimport {\n type ErrorListProps,\n type FieldTemplateProps,\n type ObjectFieldTemplateProps,\n type SubmitButtonProps,\n} from \"@rjsf/utils\";\nimport * as Utils from \"@rjsf/utils\"\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\nimport { observer } from \"mobx-react-lite\";\nimport { cn } from \"../../lib/utils\";\nimport { JSONSchemaFormState } from \"../../store/standard/JSONSchemaState\";\nimport { toJS } from \"mobx\";\n\nfunction FieldTemplate(props: FieldTemplateProps) {\n const { id, classNames, label, help, required, description, errors, children, schema, uiSchema } = props;\n\n if (uiSchema && uiSchema['ui:widget'] === 'hidden') { return null; }\n\n // const hideLabel = schema.type === 'object' || schema.type === 'boolean';\n\n const isDate = uiSchema && uiSchema['ui:widget'] === 'date';\n const isDateTime = uiSchema && uiSchema['ui:widget'] === 'date-time';\n const isTime = uiSchema && uiSchema['ui:widget'] === 'time';\n const showLabel = isDate || isDateTime || isTime;\n\n return (\n <div className={cn(classNames)}>\n {showLabel && (\n <label htmlFor={id} className={cn('flex items-center h-8')}>\n <span className=\"text-sm\">{label}</span>\n {required && <span className=\"font-bold text-red-600\">*</span>}\n </label>\n )}\n\n {/* {description} */}\n {/* {children} */}\n {/* {help} */}\n\n {children}\n </div>\n );\n}\n\nconst renderLayout = (layout: any[], fields: { [k: string]: React.ReactElement }, n = 1) => {\n n++;\n return layout.map((item, index) => {\n if (Array.isArray(item)) {\n const even = (n & 1) === 0;\n return (\n <div key={index} className={cn('w-full flex justify-between items-center space-x-2', even ? 'flex-row items-start' : 'flex-col')}>\n {renderLayout(item, fields, n)}\n </div>\n );\n } else {\n return (\n <div className=\"w-full\" key={index}>\n {fields[item]}\n </div>\n );\n }\n });\n};\n\nconst ObjectFieldTemplate = ({ title, idSchema: { $id }, properties, uiSchema: { layout } }: ObjectFieldTemplateProps) => {\n const [opened, setOpened] = useState(false);\n const fields = Object.fromEntries(properties.map((item) => [item.name, item.content]));\n return (\n <div className=\"w-full space-y-2.5\">\n {$id === 'root' ? (\n layout ? (\n renderLayout(layout, fields)\n ) : (\n properties.map((element) => {\n return (\n <div key={element.content.key}>\n {element.content}\n </div>\n );\n })\n )\n ) : (\n <>\n <div\n className=\"mt-5 mb-[10px] flex justify-between items-center cursor-pointer border-t-[1px solid #E5E5EA] py-[5px] hover:bg-[#F2F2F7] dark:hover:bg-gray-900\"\n onClick={() => setOpened((o) => !o)}\n >\n <div className=\"text-gray-900 dark:text-gray-100 font-bold text-base\">{title}</div>\n {opened ? <ChevronUp /> : <ChevronDown />}\n </div>\n <div className={cn('mt-2 space-y-2.5', opened ? 'block' : 'hidden')}>\n {layout\n ? renderLayout(layout, fields)\n : properties.map((element) => {\n return (\n <div key={element.content.key}>\n {element.content}\n </div>\n );\n })}\n </div>\n </>\n )}\n </div>\n );\n};\n\nconst ErrorListTemplate = ({ errors }: ErrorListProps) => {\n return (\n <div>\n <div className=\"font-bold\">Errors</div>\n <div className=\"mt-[10px]\">\n {errors.map((error) => (\n <div className=\"mb-[10px]\" color=\"red\" key={error.property}>\n {error.stack}\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nconst SubmitButton = ({ uiSchema }: SubmitButtonProps) => {\n const { submitText, norender, props: submitButtonProps = {} } = Utils.getSubmitButtonOptions(uiSchema);\n if (norender) {\n return null;\n }\n return (\n <div className=\"flex justify-end mt-4\">\n <Button type=\"submit\" color='primary' size='sm'>{submitText}</Button>\n </div>\n );\n};\n\ninterface Props {\n formState: JSONSchemaFormState<any>;\n children?: any;\n}\n\nexport const JSONSchemaForm = observer(({ children, formState }: Props) => {\n if (!formState?.dynamicData?.ready) return <></>;\n return (\n <Form\n showErrorList=\"bottom\"\n templates={{\n ObjectFieldTemplate,\n FieldTemplate,\n ErrorListTemplate,\n ButtonTemplates: { SubmitButton },\n }}\n formData={toJS(formState.formData)}\n readonly={formState.readonly}\n uiSchema={formState.uiSchema}\n schema={formState.schema}\n onChange={formState.onChange}\n onSubmit={formState.onSubmit}\n validator={formState.validator}\n customValidate={formState.customValidate}\n ref={formState.formRef}\n >\n {children && children}\n </Form>\n );\n});\n","import React from 'react';\nimport { colSpan, colSpanLg, colSpanMd, colSpanSm, GridClassesMapping } from './styles';\nimport { cn } from '../../../lib/utils';\n\nexport interface ColProps extends React.HTMLAttributes<HTMLDivElement> {\n numColSpan?: number;\n numColSpanSm?: number;\n numColSpanMd?: number;\n numColSpanLg?: number;\n}\n\nconst Col = React.forwardRef<HTMLDivElement, ColProps>((props, ref) => {\n const { numColSpan = 1, numColSpanSm, numColSpanMd, numColSpanLg, children, className, ...other } = props;\n const getColSpan = (numColSpan: number | undefined, colSpanMapping: GridClassesMapping): string => {\n if (!numColSpan) return '';\n if (!Object.keys(colSpanMapping).includes(String(numColSpan))) return '';\n return colSpanMapping[numColSpan];\n };\n\n const getColSpanClassNames = () => {\n const spanBase = getColSpan(numColSpan, colSpan);\n const spanSm = getColSpan(numColSpanSm, colSpanSm);\n const spanMd = getColSpan(numColSpanMd, colSpanMd);\n const spanLg = getColSpan(numColSpanLg, colSpanLg);\n return cn(spanBase, spanSm, spanMd, spanLg);\n };\n\n return (\n <div ref={ref} className={cn(getColSpanClassNames(), className)} {...other}>\n {children}\n </div>\n );\n});\n\nCol.displayName = 'Col';\n\nexport default Col;\n","export type GridClassesMapping = {\n [key: string]: string;\n};\n\nexport const gridCols: GridClassesMapping = {\n 0: 'grid-cols-none',\n 1: 'grid-cols-1',\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n 4: 'grid-cols-4',\n 5: 'grid-cols-5',\n 6: 'grid-cols-6',\n 7: 'grid-cols-7',\n 8: 'grid-cols-8',\n 9: 'grid-cols-9',\n 10: 'grid-cols-10',\n 11: 'grid-cols-11',\n 12: 'grid-cols-12',\n};\n\nexport const gridColsSm: GridClassesMapping = {\n 0: 'sm:grid-cols-none',\n 1: 'sm:grid-cols-1',\n 2: 'sm:grid-cols-2',\n 3: 'sm:grid-cols-3',\n 4: 'sm:grid-cols-4',\n 5: 'sm:grid-cols-5',\n 6: 'sm:grid-cols-6',\n 7: 'sm:grid-cols-7',\n 8: 'sm:grid-cols-8',\n 9: 'sm:grid-cols-9',\n 10: 'sm:grid-cols-10',\n 11: 'sm:grid-cols-11',\n 12: 'sm:grid-cols-12',\n};\n\nexport const gridColsMd: GridClassesMapping = {\n 0: 'md:grid-cols-none',\n 1: 'md:grid-cols-1',\n 2: 'md:grid-cols-2',\n 3: 'md:grid-cols-3',\n 4: 'md:grid-cols-4',\n 5: 'md:grid-cols-5',\n 6: 'md:grid-cols-6',\n 7: 'md:grid-cols-7',\n 8: 'md:grid-cols-8',\n 9: 'md:grid-cols-9',\n 10: 'md:grid-cols-10',\n 11: 'md:grid-cols-11',\n 12: 'md:grid-cols-12',\n};\n\nexport const gridColsLg: GridClassesMapping = {\n 0: 'lg:grid-cols-none',\n 1: 'lg:grid-cols-1',\n 2: 'lg:grid-cols-2',\n 3: 'lg:grid-cols-3',\n 4: 'lg:grid-cols-4',\n 5: 'lg:grid-cols-5',\n 6: 'lg:grid-cols-6',\n 7: 'lg:grid-cols-7',\n 8: 'lg:grid-cols-8',\n 9: 'lg:grid-cols-9',\n 10: 'lg:grid-cols-10',\n 11: 'lg:grid-cols-11',\n 12: 'lg:grid-cols-12',\n};\n\nexport const colSpan: GridClassesMapping = {\n 1: 'col-span-1',\n 2: 'col-span-2',\n 3: 'col-span-3',\n 4: 'col-span-4',\n 5: 'col-span-5',\n 6: 'col-span-6',\n 7: 'col-span-7',\n 8: 'col-span-8',\n 9: 'col-span-9',\n 10: 'col-span-10',\n 11: 'col-span-11',\n 12: 'col-span-12',\n 13: 'col-span-13',\n};\n\nexport const colSpanSm: GridClassesMapping = {\n 1: 'sm:col-span-1',\n 2: 'sm:col-span-2',\n 3: 'sm:col-span-3',\n 4: 'sm:col-span-4',\n 5: 'sm:col-span-5',\n 6: 'sm:col-span-6',\n 7: 'sm:col-span-7',\n 8: 'sm:col-span-8',\n 9: 'sm:col-span-9',\n 10: 'sm:col-span-10',\n 11: 'sm:col-span-11',\n 12: 'sm:col-span-12',\n 13: 'sm:col-span-13',\n};\n\nexport const colSpanMd: GridClassesMapping = {\n 1: 'md:col-span-1',\n 2: 'md:col-span-2',\n 3: 'md:col-span-3',\n 4: 'md:col-span-4',\n 5: 'md:col-span-5',\n 6: 'md:col-span-6',\n 7: 'md:col-span-7',\n 8: 'md:col-span-8',\n 9: 'md:col-span-9',\n 10: 'md:col-span-10',\n 11: 'md:col-span-11',\n 12: 'md:col-span-12',\n 13: 'md:col-span-13',\n};\n\nexport const colSpanLg: GridClassesMapping = {\n 1: 'lg:col-span-1',\n 2: 'lg:col-span-2',\n 3: 'lg:col-span-3',\n 4: 'lg:col-span-4',\n 5: 'lg:col-span-5',\n 6: 'lg:col-span-6',\n 7: 'lg:col-span-7',\n 8: 'lg:col-span-8',\n 9: 'lg:col-span-9',\n 10: 'lg:col-span-10',\n 11: 'lg:col-span-11',\n 12: 'lg:col-span-12',\n 13: 'lg:col-span-13',\n};\n","import React from 'react';\nimport { GridClassesMapping, gridCols, gridColsLg, gridColsMd, gridColsSm } from './styles';\nimport { cn } from '../../../lib/utils';\n\nconst getGridCols = (numCols: number | undefined, gridColsMapping: GridClassesMapping): string => {\n if (!numCols) return '';\n if (!Object.keys(gridColsMapping).includes(String(numCols))) return '';\n return gridColsMapping[numCols];\n};\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n numItems?: number;\n numItemsSm?: number;\n numItemsMd?: number;\n numItemsLg?: number;\n children: React.ReactNode;\n}\n\nconst Grid = React.forwardRef<HTMLDivElement, GridProps>((props, ref) => {\n const { numItems = 1, numItemsSm, numItemsMd, numItemsLg, children, className, ...other } = props;\n\n const colsBase = getGridCols(numItems, gridCols);\n const colsSm = getGridCols(numItemsSm, gridColsSm);\n const colsMd = getGridCols(numItemsMd, gridColsMd);\n const colsLg = getGridCols(numItemsLg, gridColsLg);\n\n const colClassNames = cn(colsBase, colsSm, colsMd, colsLg);\n\n return (\n <div ref={ref} className={cn('grid', colClassNames, className)} {...other}>\n {children}\n </div>\n );\n});\n\nGrid.displayName = 'Grid';\n\nexport default Grid;\n","import React, { useEffect, useState } from \"react\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\nimport { FormDataType, JSONFormProps, LayoutConfigType } from \"..\";\nimport { JSONSchemaForm } from \"../../../components/JSONSchemaForm\";\nimport { cn } from \"../../../lib/utils\";\nimport { BatchSubmitButton, SubmitButton, getFormState } from \"./format\";\n\nconst CollapsibleBox = ({ formKey, layout, formState }: { formKey: string; layout: any; formState: any }) => {\n const [opened, setOpened] = useState(true);\n return (\n <div id={`form-${formKey}`}>\n <div\n className=\"mt-5 mb-[10px] flex justify-between items-center cursor-pointer border-t-[1px solid #E5E5EA] py-[5px]\"\n onClick={() => setOpened((o) => !o)}\n >\n <div className={cn('text-gray-900 dark:text-gray-100 font-bold text-base', layout?.titleBoxCss)}>{layout?.title || formKey}</div>\n {opened ? <ChevronUp size={18} className=\"text-[#717179] dark:text-[#A1A1A9]\" /> : <ChevronDown size={18} className=\"text-[#717179] dark:text-[#A1A1A9]\" />}\n </div>\n <div className={cn('mt-2', opened ? 'block' : 'hidden')}>\n {layout?.customRender?.Top?.(formKey, formState)}\n <JSONSchemaForm formState={formState}>\n {layout?.customRender?.SubmitButtonBefore?.(formKey, formState)}\n {layout?.submitButtonProps && <SubmitButton formKey={formKey} formState={formState} buttonProps={layout.submitButtonProps} />}\n {layout?.customRender?.SubmitButtonAfter?.(formKey, formState)}\n </JSONSchemaForm>\n </div>\n </div>\n );\n};\n\nexport const ListLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig = {}, onBatchSubmit, batchSubmitButtonProps, onReady, theme } = props;\n const { $type, $combFormsCustomRender, ...formLayout } = layoutConfig as LayoutConfigType<T, 'ListLayout'>;\n const formStates = getFormState(props, formLayout, theme);\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n {$combFormsCustomRender?.Top?.(formStates)}\n {Object.keys(formStates).map((key) => {\n return (\n <CollapsibleBox\n key={key}\n formKey={key}\n formState={formStates[key]}\n layout={formLayout[key]}\n />\n );\n })}\n {$combFormsCustomRender?.SubmitButtonBefore?.(formStates)}\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n {$combFormsCustomRender?.SubmitButtonAfter?.(formStates)}\n </>\n );\n};","import React, { useEffect } from 'react';\nimport { FormDataType, JSONFormProps, LayoutConfigType } from '..';\nimport { JSONSchemaForm } from '../../../components/JSONSchemaForm';\nimport { BatchSubmitButton, SubmitButton, getFormState } from './format';\n\nexport const SimpleLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig = {}, onBatchSubmit, batchSubmitButtonProps, onReady, theme } = props;\n const { $type, $combFormsCustomRender, ...formLayout } = layoutConfig as LayoutConfigType<T, 'SimpleLayout'>;\n const formStates = getFormState(props, formLayout, theme);\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n {$combFormsCustomRender?.Top?.(formStates)}\n <div className=\"space-y-2\">\n {Object.keys(formStates).map((key) => {\n const layout = formLayout[key];\n return (\n <div key={key} id={`form-${key}`}>\n {layout?.customRender?.Top?.(key, formStates[key])}\n <JSONSchemaForm formState={formStates[key]}>\n {layout?.customRender?.SubmitButtonBefore?.(key, formStates[key])}\n {layout?.submitButtonProps && <SubmitButton formKey={key} formState={formStates[key]} buttonProps={layout.submitButtonProps} />}\n {layout?.customRender?.SubmitButtonAfter?.(key, formStates[key])}\n </JSONSchemaForm>\n </div>\n );\n })}\n </div>\n {$combFormsCustomRender?.SubmitButtonBefore?.(formStates)}\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n {$combFormsCustomRender?.SubmitButtonAfter?.(formStates)}\n </>\n );\n};\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Tab, Tabs } from \"@nextui-org/react\";\nimport { FormDataType, JSONFormProps, LayoutConfigType } from \"..\";\nimport { JSONSchemaForm } from \"../../../components/JSONSchemaForm\";\nimport { BatchSubmitButton, SubmitButton, getFormState } from \"./format\";\nimport { cn } from \"../../../lib/utils\";\n\nexport const TabLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig = {}, onBatchSubmit, batchSubmitButtonProps, onReady, theme } = props;\n const {\n $type,\n $tabsProps = {\n color: 'default',\n },\n $combFormsCustomRender,\n ...formLayout\n } = layoutConfig as LayoutConfigType<T, 'TabLayout'>;\n const formStates = useMemo(() => getFormState(props, formLayout, theme), [props.formData, props.formConfig, props.layoutConfig]);\n const formKeys = Object.keys(formStates);\n const [selectedTab, setSelectedTab] = useState(formKeys[0] || '');\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n <Tabs\n {...$tabsProps}\n selectedKey={selectedTab}\n onSelectionChange={(key: string) => {\n setSelectedTab(key);\n }}\n >\n {formKeys.map((key) => {\n const layout = formLayout[key];\n return <Tab id={`form-${key}-tab-menu`} key={key} title={<div className={layout?.titleBoxCss}>{layout?.title || key}</div>} />;\n })}\n </Tabs>\n {$combFormsCustomRender?.Top?.(formStates)}\n {formKeys.map((key) => {\n const layout = formLayout[key];\n return (\n <div\n key={key}\n id={`form-${key}-tab-content`}\n className={cn('mt-4', selectedTab === key ? '' : 'hidden')}\n >\n {layout?.customRender?.Top?.(key, formStates[key])}\n <JSONSchemaForm formState={formStates[key]}>\n {layout?.customRender?.SubmitButtonBefore?.(key, formStates[key])}\n {layout?.submitButtonProps && <SubmitButton formKey={key} formState={formStates[key]} buttonProps={layout.submitButtonProps} />}\n {layout?.customRender?.SubmitButtonAfter?.(key, formStates[key])}\n </JSONSchemaForm>\n </div>\n );\n })}\n {$combFormsCustomRender?.SubmitButtonBefore?.(formStates)}\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n {$combFormsCustomRender?.SubmitButtonAfter?.(formStates)}\n </>\n );\n};\n","import React, { ReactNode, useMemo, useRef } from 'react';\nimport { InputProps, InputSlots, SlotsToClasses, Textarea } from '@nextui-org/react';\nimport { WidgetProps } from '@rjsf/utils';\nimport { cn } from \"../../../lib/utils\";\nimport { getStyle } from '../../../themes';\n\ntype Options = {\n className?: string;\n nextuiClassNames?: SlotsToClasses<InputSlots>;\n labelPlacement?: InputProps['labelPlacement'];\n size: InputProps['size'];\n minRows?: number;\n maxRows?: number;\n placeholder?: string;\n color?: InputProps[\"color\"];\n variant?: InputProps[\"variant\"];\n radius?: InputProps[\"radius\"];\n startContent?: ReactNode;\n endContent?: ReactNode;\n description?: string;\n};\n// @ts-ignore \nexport interface TextareaWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface TextareaWidgetUIOptions {\n 'ui:widget': (props: TextareaWidgetProps) => JSX.Element;\n 'ui:options': Options;\n}\n\nexport function TextareaWidget(props: TextareaWidgetProps) {\n const { onChange, options, label, value, required, disabled, uiSchema } = props;\n const {\n className,\n nextuiClassNames = {\n inputWrapper: 'rounded-lg shadow-none border dark:border-[#2c2c2c] !bg-transparent data-[hover=true]:!bg-default-50 group-data-[focus=true]:!bg-transparent',\n },\n labelPlacement = 'inside',\n size = 'md',\n minRows = 3,\n maxRows = 8,\n color,\n variant,\n radius,\n startContent,\n endContent,\n description,\n } = options;\n const { requiredErrMsg, validate, theme } = uiSchema;\n const placeholder = uiSchema['ui:options']?.placeholder;\n const isFirstChecked = useRef(true);\n const classNames = useMemo(() => {\n const themeStyle = getStyle(theme || 'default', 'InputWidget');\n return {\n ...themeStyle.classNames,\n ...nextuiClassNames\n }\n }, [theme, nextuiClassNames]);\n\n return (\n <Textarea\n className={cn('w-full', className)}\n classNames={classNames}\n label={label}\n placeholder={placeholder}\n value={value}\n isRequired={required}\n isDisabled={disabled}\n minRows={minRows}\n maxRows={maxRows}\n size={size}\n labelPlacement={labelPlacement}\n description={description}\n color={color}\n variant={variant}\n radius={radius}\n startContent={startContent}\n endContent={endContent}\n onChange={(e) => onChange(e.target.value)}\n validate={() => {\n if (isFirstChecked.current) {\n isFirstChecked.current = false;\n return true;\n }\n if (value === '' && required) {\n return requiredErrMsg || 'This field is required';\n }\n if (validate) {\n const errMsg = validate(value);\n return errMsg;\n }\n return true;\n }}\n />\n );\n}\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { DatePicker, DatePickerProps } from '@nextui-org/react';\nimport { RJSFSchema, Widget, WidgetProps } from \"@rjsf/utils\";\nimport { DateValue, parseAbsoluteToLocal } from '@internationalized/date';\nimport { cn } from \"../../../lib/utils\";\nimport { getStyle } from \"../../../themes\";\n\ntype Options = {\n className?: string;\n nextuiClassNames?: Record<\"base\" | \"selectorButton\" | \"selectorIcon\" | \"popoverContent\" | \"calendar\" | \"calendarContent\" | \"timeInputLabel\" | \"timeInput\", string>;\n dateInputClassNames?: Record<\n | \"base\"\n | \"label\"\n | \"inputWrapper\"\n | \"innerWrapper\"\n | \"input\"\n | \"helperWrapper\"\n | \"description\"\n | \"errorMessage\",\n string\n >;\n size: DatePickerProps[\"size\"];\n labelPlacement?: DatePickerProps[\"labelPlacement\"];\n color: DatePickerProps[\"color\"];\n granularity?: DatePickerProps[\"granularity\"];\n variant?: DatePickerProps['variant'];\n description?: string;\n};\n\nexport interface DatePickerWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface DatePickerWidgetUIOptions {\n 'ui:widget': (props: DatePickerWidgetProps) => string | Widget<any, RJSFSchema, any> | undefined;\n 'ui:options': Options;\n}\n\nexport function DatePickerWidget({ label, options, value, required, disabled, uiSchema, onChange }: DatePickerWidgetProps) {\n const {\n className,\n nextuiClassNames = { calendarContent: 'min-w-fit' },\n dateInputClassNames,\n labelPlacement = 'inside',\n size = 'sm',\n granularity = 'day',\n color = 'default',\n description,\n variant,\n } = options;\n const [date, setDate] = useState<DateValue>();\n const { requiredErrMsg, validate, theme } = uiSchema;\n const isFirstChecked = useRef(true);\n const dateInputStyle = useMemo(() => {\n const themeStyle = getStyle(theme || 'default', 'DatePickerWidget');\n return {\n ...themeStyle.dateInputClassNames,\n ...dateInputClassNames\n }\n }, [theme, dateInputClassNames]);\n\n useEffect(() => {\n if (value) {\n try {\n const ISOStr = new Date(value).toISOString();\n const v = parseAbsoluteToLocal(ISOStr);\n setDate(v);\n } catch (error) {\n console.log('error', error.message);\n }\n }\n }, [value]);\n\n return (\n <DatePicker\n showMonthAndYearPickers\n className={cn('w-full', className)}\n classNames={nextuiClassNames}\n dateInputClassNames={dateInputStyle}\n label={label}\n size={size}\n labelPlacement={labelPlacement}\n color={color}\n granularity={granularity}\n variant={variant}\n value={date}\n isRequired={required}\n description={description || ''}\n isDisabled={disabled}\n onChange={(dateValue) => {\n if (dateValue) {\n const v = dateValue.toDate('GMT').toISOString();\n onChange(v);\n }\n }}\n validate={() => {\n if (isFirstChecked.current) {\n isFirstChecked.current = false;\n return true;\n }\n if (value === '' && required) {\n return requiredErrMsg || 'This field is required';\n }\n if (validate) {\n const errMsg = validate(value);\n return errMsg;\n }\n return true;\n }}\n />\n );\n}\n","import { Modal, ModalBody, ModalContent, ModalHeader } from '@nextui-org/react';\nimport { observer, useLocalObservable } from \"mobx-react-lite\";\nimport { useStore } from \"../../store/index\";\nimport Draggable from \"react-draggable\";\nimport { JSONForm } from \"../../components/JSONForm\";\nimport { useEffect, useMemo } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { ComplexFormModalStore } from \".\";\nimport React from \"react\";\n\nconst JSONViewModal = observer(() => {\n const rootStore = useStore();\n const complexFormModal = rootStore.get(ComplexFormModalStore);\n const { formData, isOpen } = complexFormModal;\n const store = useLocalObservable(() => ({\n isMobile: false,\n }));\n\n useEffect(() => {\n const handleResize = () => {\n store.isMobile = window.innerWidth < 991;\n };\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n const isMobile = store.isMobile;\n\n const ModalMemo = useMemo(() => {\n if (!formData) {\n return null;\n }\n\n const layoutConfig = { ...complexFormModal.layoutConfig };\n if (isMobile && layoutConfig.$type === 'GridLayout') {\n layoutConfig.$gridColumn = 1;\n Object.keys(layoutConfig).forEach((key) => {\n if (typeof layoutConfig[key] === 'object') {\n // @ts-ignore\n layoutConfig[key].colSpan = 1;\n }\n });\n }\n\n return (\n <Modal\n className={complexFormModal.className}\n classNames={complexFormModal.classNames}\n scrollBehavior={complexFormModal.scrollBehavior}\n isDismissable={complexFormModal.isDismissable}\n isOpen={isOpen}\n size={complexFormModal.modalSize}\n onOpenChange={(open: boolean) => {\n if (!open) {\n complexFormModal.event.emit('abort');\n }\n }}\n >\n <div className=\"z-50 fixed top-0 left-0 w-screen h-screen\">\n <Draggable handle=\".draggable-handle\">\n <ModalContent>\n {complexFormModal.title && <ModalHeader className=\"flex flex-col gap-1 draggable-handle cursor-move\">{complexFormModal.title}</ModalHeader>}\n <ModalBody className={cn('max-h-[90vh] overflow-auto')}>\n <JSONForm\n theme={complexFormModal.theme}\n formData={formData}\n formConfig={complexFormModal.formConfig}\n layoutConfig={layoutConfig}\n onBatchSubmit={complexFormModal.onBatchSubmit\n ? complexFormModal.onBatchSubmit\n : (data) => {\n complexFormModal.event.emit('batchSubmit', data);\n }\n }\n onSet={complexFormModal.onSet}\n onChange={complexFormModal.onChange}\n onReady={complexFormModal.onReady}\n batchSubmitButtonProps={complexFormModal.batchSubmitButtonProps}\n />\n </ModalBody>\n </ModalContent>\n </Draggable>\n </div>\n </Modal>\n );\n }, [isOpen, formData, isMobile]);\n\n return ModalMemo;\n});\n\nexport default JSONViewModal;\n","import { Store } from \"../../store/standard/base\";\nimport Provider from \"./Provider\";\nimport { FormConfigType, FormDataOfKey, FormDataType, LayoutConfigType, LayoutType } from \"../../components/JSONForm\";\nimport EventEmitter from \"events\";\nimport { JSONSchemaFormState } from \"../../store/standard/JSONSchemaState\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { makeAutoObservable } from \"mobx\";\nimport { RootStore } from \"../../store\";\nimport React, { Dispatch, SetStateAction } from \"react\";\nimport { ButtonProps, SlotsToClasses, ModalSlots } from \"@nextui-org/react\";\nimport { getStyle, ThemeType } from \"../../themes\";\n\nexport class ComplexFormModalStore<T extends FormDataType> implements Store {\n sid = 'ComplexFormModalStore';\n provider = () => <Provider />;\n\n isOpen = false;\n title = '';\n formData?: T;\n formConfig?: FormConfigType<T>;\n layoutConfig?: LayoutConfigType<T, LayoutType>;\n className = '';\n classNames?: SlotsToClasses<ModalSlots>;\n theme: ThemeType = \"default\";\n modalSize: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | 'xs' | '3xl' | '4xl' | '5xl' = 'md';\n scrollBehavior?: 'normal' | 'inside' | 'outside' = 'normal';\n isDismissable = true;\n event = new EventEmitter();\n onBatchSubmit?: (data: T, setLoading?: Dispatch<SetStateAction<boolean>>) => void;\n onSet?: (v: FormDataOfKey<T>, form: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => FormDataOfKey<T>;\n onChange?: (data: Partial<T>) => void;\n onReady?: (formStates: { [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema> }) => void;\n batchSubmitButtonProps?: ButtonProps & { onBatchSubmit?: (formData: T, setLoading: Dispatch<SetStateAction<boolean>>) => void };\n\n constructor(args?: Partial<ComplexFormModalStore<T>>) {\n const modalStyle = getStyle(args?.theme || 'default', 'Modal');\n const classNames = {\n ...modalStyle.classNames,\n ...args?.classNames\n }\n Object.assign(this, args, { classNames });\n makeAutoObservable(this);\n }\n\n setData(v: Partial<ComplexFormModalStore<T>>) {\n Object.assign(this, v);\n }\n\n close() {\n this.isOpen = false;\n this.title = '';\n this.formData = undefined;\n this.formConfig = undefined;\n this.layoutConfig = undefined;\n this.modalSize = 'md';\n this.scrollBehavior = 'normal';\n this.isDismissable = true;\n this.onBatchSubmit = undefined;\n this.onSet = undefined;\n this.onChange = undefined;\n this.onReady = undefined;\n this.event.removeAllListeners();\n }\n}\n\nexport async function getComplexFormData<T extends FormDataType>(v: Partial<ComplexFormModalStore<T>>) {\n return new Promise<T>((resolve, reject) => {\n const modalStyle = getStyle(v?.theme || 'default', 'Modal');\n const classNames = {\n ...modalStyle.classNames,\n ...v?.classNames\n }\n const complexFormModal = RootStore.Get(ComplexFormModalStore);\n // @ts-ignore\n complexFormModal.setData({\n ...v,\n classNames,\n isOpen: true,\n });\n complexFormModal.event.on('batchSubmit', (formData: T) => {\n if (complexFormModal.onBatchSubmit) {\n complexFormModal.onBatchSubmit(formData);\n } else {\n complexFormModal.close();\n resolve(formData);\n }\n });\n complexFormModal.event.on('abort', () => {\n complexFormModal.close();\n reject('abort');\n });\n });\n}\n","import EventEmitter from \"events\";\nimport React from \"react\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { makeAutoObservable } from \"mobx\";\nimport { Store } from \"../../store/standard/base\";\nimport {\n JSONSchemaFormState,\n JSONSchemaValue,\n} from \"../../store/standard/JSONSchemaState\";\nimport Provider from \"./Provider\";\nimport { SelectWidget } from \"../../components/JSONFormWidgets/SelectWidget\";\nimport { InputWidget } from \"../../components/JSONFormWidgets/InputWidget\";\nimport { CheckboxWidget } from \"../../components/JSONFormWidgets/CheckboxWidget\";\nimport { EditorWidget } from \"../../components/JSONFormWidgets/EditorWidget\";\nimport { RootStore } from \"../../store\";\nimport { SlotsToClasses, ModalSlots } from \"@nextui-org/react\";\nimport { getStyle, ThemeType } from \"../../themes\";\n\nexport class FormModalStore<T = { [key: string]: any }> implements Store {\n sid = 'FormModalStore';\n provider = () => <Provider />;\n\n isOpen = false;\n title = '';\n form: JSONSchemaFormState<T> = null;\n className: string = '';\n classNames?: SlotsToClasses<ModalSlots>;\n theme: ThemeType = \"default\";\n modalSize: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | 'xs' | '3xl' | '4xl' | '5xl' = 'md';\n scrollBehavior?: 'normal' | 'inside' | 'outside' = 'normal';\n closeOnOverlayClick = false;\n event = new EventEmitter();\n onAfterSubmit?: (data: T) => void;\n\n constructor(args?: Partial<FormModalStore>) {\n const modalStyle = getStyle(args?.theme || 'default', 'Modal');\n const classNames = {\n ...modalStyle.classNames,\n ...args?.classNames\n }\n Object.assign(this, args, { classNames });\n makeAutoObservable(this);\n }\n\n setData(v: Partial<FormModalStore>) {\n Object.assign(this, v);\n }\n\n close() {\n this.isOpen = false;\n this.title = '';\n this.form = null;\n this.modalSize = 'md';\n this.scrollBehavior = 'normal';\n this.closeOnOverlayClick = false;\n this.onAfterSubmit = undefined;\n this.event.removeAllListeners();\n }\n}\n\nexport async function getFormData<T = { [key: string]: any }>(v: Partial<FormModalStore>) {\n return new Promise<T>((resolve, reject) => {\n const modalStyle = getStyle(v?.theme || 'default', 'Modal');\n const classNames = {\n ...modalStyle.classNames,\n ...v?.classNames\n }\n const formModal = RootStore.Get(FormModalStore);\n formModal.setData({\n ...v,\n classNames,\n isOpen: true,\n });\n formModal.event.on('afterSubmit', (formData: T) => {\n if (formModal.onAfterSubmit) {\n formModal.onAfterSubmit(formData);\n } else {\n formModal.close();\n resolve(formData);\n }\n });\n formModal.event.on('abort', () => {\n formModal.close();\n reject('abort');\n });\n });\n}\n\nexport function getFormState<T>(\n {\n data,\n metadata = {},\n onSet = (v: T, form) => v,\n onSubmit,\n theme = 'default',\n }: {\n data: T;\n metadata?: { [key: string]: any } & Partial<JSONSchemaFormState<any>>;\n onSet?: (v: T, form: JSONSchemaFormState<T, UiSchema>) => T;\n onSubmit?: (data: T) => void;\n theme: ThemeType;\n }\n): JSONSchemaFormState<T, UiSchema> {\n const value = {};\n const required = [];\n const props = Object.entries(data).reduce((p, c) => {\n const [k, v] = c;\n\n const type = typeof v;\n p[k] = {\n type\n };\n\n value[k] = v;\n\n if (!metadata[k]) {\n metadata[k] = {};\n }\n\n if (type === 'string' || type === 'number') {\n if (metadata[k]?.selectOptions) {\n metadata[k]['ui:widget'] = SelectWidget;\n p[k].selectOptions = metadata[k].selectOptions;\n } else {\n if (!metadata[k]['ui:widget']) {\n metadata[k]['ui:widget'] = InputWidget;\n\n if (type === 'number') {\n p[k].inputType = 'number';\n }\n }\n }\n }\n\n if (type === 'boolean') {\n metadata[k]['ui:widget'] = CheckboxWidget;\n metadata[k]['ui:options'] = {\n size: 'sm',\n }\n }\n\n if (type === 'object') {\n // Instead of setting up \"definitions\", the easy way to do this is to edit the json directly using the EditorWidget\n p[k].type = 'string';\n value[k] = JSON.stringify(v, null, 2);\n metadata[k]['ui:widget'] = EditorWidget;\n }\n\n if (metadata[k]?.inputType) {\n p[k].inputType = metadata[k].inputType;\n delete metadata[k].inputType;\n }\n if (metadata[k]?.title) {\n p[k].title = metadata[k].title || v;\n delete metadata[k].title;\n }\n if (metadata[k]?.description) {\n p[k].description = metadata[k].description;\n delete metadata[k].description;\n }\n\n if (metadata[k]?.required) {\n required.push(k);\n delete metadata[k].required;\n }\n\n metadata[k]['theme'] = theme;\n return p;\n }, {});\n const schema = {\n type: 'object',\n properties: props,\n required,\n };\n const form = new JSONSchemaFormState({\n //@ts-ignore\n schema,\n uiSchema: {\n 'ui:submitButtonOptions': {\n norender: false,\n submitText: 'Submit',\n },\n ...metadata,\n },\n afterSubmit(e) {\n if (onSubmit) {\n onSubmit(e.formData as T);\n } else {\n const formModal = RootStore.Get(FormModalStore);\n formModal.event.emit('afterSubmit', e.formData);\n }\n },\n value: new JSONSchemaValue({\n default: value,\n onSet: (v: T) => onSet(v, form),\n }),\n });\n return form as any\n}\n\nexport async function getSimpleFormData<T>(\n data: T,\n metadata: { [key: string]: any } & Partial<JSONSchemaFormState<any>> = {},\n config: Partial<FormModalStore>,\n onSet = (v: T, form: JSONSchemaFormState<T, UiSchema>) => {\n return v;\n },\n theme: ThemeType = 'default'\n) {\n const form = getFormState({ data, metadata, onSet, theme });\n return getFormData<T>({\n ...config,\n //@ts-ignore\n form\n });\n}\n","import { Modal, ModalBody, ModalContent, ModalHeader } from '@nextui-org/react';\nimport { observer } from \"mobx-react-lite\";\nimport { JSONSchemaForm } from \"../../components/JSONSchemaForm\";\nimport { useStore } from \"../../store/index\";\nimport Draggable from \"react-draggable\";\nimport { FormModalStore } from \".\";\nimport React from 'react';\n\nconst JSONFormModal = observer(() => {\n const rootStore = useStore();\n const formModal = rootStore.get(FormModalStore);\n const { form, closeOnOverlayClick } = formModal;\n if (!form) {\n return null;\n }\n return (\n <Modal\n className={formModal.className}\n classNames={formModal.classNames}\n scrollBehavior={formModal.scrollBehavior}\n isOpen={formModal.isOpen}\n size={formModal.modalSize}\n isDismissable={!closeOnOverlayClick}\n onOpenChange={(open: boolean) => {\n if (!open) {\n formModal.event.emit('abort');\n }\n }}\n >\n <div className=\"z-50 fixed top-0 left-0 w-screen h-screen flex items-center justify-center\">\n <Draggable handle=\".draggable-handle\">\n <ModalContent>\n {formModal.title && <ModalHeader className=\"flex flex-col gap-1 draggable-handle cursor-move\">{formModal.title}</ModalHeader>}\n <ModalBody className='max-h-[90vh] overflow-auto'>\n <JSONSchemaForm formState={form} />\n </ModalBody>\n </ModalContent>\n </Draggable>\n </div>\n </Modal>\n );\n});\n\nexport default JSONFormModal;\n\n"]}
package/dist/index.mjs CHANGED
@@ -1,10 +1,10 @@
1
- export { AppProvider, AutoMan, BigNumberInputState, BigNumberState, ObjectPool, PromiseHook, StorageListState, StorageState } from './chunk-OPCLNLJF.mjs';
1
+ export { AppProvider, AutoMan, BigNumberInputState, BigNumberState, ObjectPool, PromiseHook, StorageListState, StorageState } from './chunk-VXA4UKJU.mjs';
2
2
  export { BooleanState, NumberState, PromiseState, Store, StringState, ValueState } from './chunk-TSUKTLY3.mjs';
3
3
  import './chunk-NPQ7GCFM.mjs';
4
4
  import './chunk-7MDKCI65.mjs';
5
- import './chunk-GT4R5SDI.mjs';
5
+ import './chunk-63DQOYRW.mjs';
6
6
  import './chunk-IMOLRP7I.mjs';
7
- import './chunk-K73JTEJQ.mjs';
7
+ import './chunk-YG4RDLYA.mjs';
8
8
  export { RootStore, rootStore, useStore } from './chunk-XSGTWROT.mjs';
9
9
  import './chunk-R4N52NI2.mjs';
10
10
  export { PaginationState } from './chunk-ONVPCAMQ.mjs';
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+
3
+ declare const COMPONENTS: {
4
+ Card: <T extends Record<string, any>>({ jsondata }: {
5
+ jsondata: JSONDataType<T>;
6
+ }) => React.JSX.Element;
7
+ CardList: <T extends Record<string, any>>({ jsondata }: {
8
+ jsondata: JSONDataType<T>;
9
+ }) => React.JSX.Element;
10
+ Nav: <T extends Record<string, any>>({ jsondata }: {
11
+ jsondata: JSONDataType<T>;
12
+ }) => React.JSX.Element;
13
+ };
14
+ type JSONDataType<T extends Record<string, any>> = Array<T> | T;
15
+ interface JSONComponentProps<T extends Record<string, any>> {
16
+ className?: string;
17
+ jsondata: JSONDataType<T>;
18
+ type?: keyof typeof COMPONENTS;
19
+ }
20
+ declare const JSONComponent: <T extends Record<string, any>>({ className, jsondata, type }: JSONComponentProps<T>) => React.JSX.Element;
21
+
22
+ export { JSONComponent, type JSONComponentProps, type JSONDataType };
@@ -0,0 +1,42 @@
1
+ import './chunk-R4SQKVDQ.mjs';
2
+ import React from 'react';
3
+
4
+ var CardWidget = ({ jsondata }) => {
5
+ const keys = Object.keys(jsondata);
6
+ return /* @__PURE__ */ React.createElement("div", { className: "p-2 shadow-sm rounded-lg border dark:border-[#3e3e3e] space-y-2" }, keys.map((key) => {
7
+ return /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between", key }, /* @__PURE__ */ React.createElement("div", null, key), /* @__PURE__ */ React.createElement("div", null, jsondata[key]));
8
+ }));
9
+ };
10
+ var Card_default = CardWidget;
11
+ var CardListWidget = ({ jsondata }) => {
12
+ if (Array.isArray(jsondata)) {
13
+ const firstData = jsondata[0];
14
+ if (firstData && firstData.constructor === Object) {
15
+ return /* @__PURE__ */ React.createElement("div", { className: "space-y-2" }, jsondata.map((item, index) => {
16
+ return /* @__PURE__ */ React.createElement(Card_default, { jsondata: item, key: index });
17
+ }));
18
+ }
19
+ }
20
+ return /* @__PURE__ */ React.createElement(Card_default, { jsondata });
21
+ };
22
+ var CardList_default = CardListWidget;
23
+ var NavWidget = ({ jsondata }) => {
24
+ return /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("h1", null, "Nav"));
25
+ };
26
+ var Nav_default = NavWidget;
27
+
28
+ // components/JSONComponent/index.tsx
29
+ var COMPONENTS = {
30
+ Card: Card_default,
31
+ CardList: CardList_default,
32
+ Nav: Nav_default
33
+ };
34
+ var JSONComponent = ({ className, jsondata, type }) => {
35
+ const _type = type || (Array.isArray(jsondata) ? "CardList" : "Card");
36
+ const Comp = COMPONENTS[_type];
37
+ return /* @__PURE__ */ React.createElement("div", { className }, /* @__PURE__ */ React.createElement(Comp, { jsondata }));
38
+ };
39
+
40
+ export { JSONComponent };
41
+ //# sourceMappingURL=out.js.map
42
+ //# sourceMappingURL=jsoncomponent.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../components/JSONComponent/index.tsx","../components/JSONComponent/Widgets/Card.tsx","../components/JSONComponent/Widgets/CardList.tsx","../components/JSONComponent/Widgets/Nav.tsx"],"names":["React"],"mappings":";;;AAAA,OAAOA,YAAW;;;ACAlB,OAAO,WAAW;AAGlB,IAAM,aAAa,CAAgC,EAAE,SAAS,MAAqC;AACjG,QAAM,OAAO,OAAO,KAAK,QAAQ;AACjC,SACE,oCAAC,SAAI,WAAU,qEACZ,KAAK,IAAI,SAAO;AACf,WACE,oCAAC,SAAI,WAAU,qCAAoC,OACjD,oCAAC,aACE,GACH,GACA,oCAAC,aACE,SAAS,GAAG,CACf,CACF;AAAA,EAEJ,CAAC,CACH;AAEJ;AAEA,IAAO,eAAQ;;;ACvBf,OAAOA,YAAW;AAIlB,IAAM,iBAAiB,CAAgC,EAAE,SAAS,MAAqC;AACrG,MAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,UAAM,YAAY,SAAS,CAAC;AAC5B,QAAI,aAAa,UAAU,gBAAgB,QAAQ;AACjD,aACE,gBAAAA,OAAA,cAAC,SAAI,WAAU,eACZ,SAAS,IAAI,CAAC,MAAM,UAAU;AAC7B,eACE,gBAAAA,OAAA,cAAC,gBAAW,UAAU,MAAM,KAAK,OAAO;AAAA,MAE5C,CAAC,CACH;AAAA,IAEJ;AAAA,EACF;AACA,SACE,gBAAAA,OAAA,cAAC,gBAAW,UAAoB;AAEpC;AAEA,IAAO,mBAAQ;;;ACxBf,OAAOA,YAAW;AAGlB,IAAM,YAAY,CAAgC,EAAE,SAAS,MAAqC;AAChG,SACE,gBAAAA,OAAA,cAAC,aACC,gBAAAA,OAAA,cAAC,YAAG,KAAG,CACT;AAEJ;AAEA,IAAO,cAAQ;;;AHNf,IAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AACF;AAUO,IAAM,gBAAgB,CAAgC,EAAE,WAAW,UAAU,KAAK,MAA6B;AACpH,QAAM,QAAQ,SAAS,MAAM,QAAQ,QAAQ,IAAI,aAAa;AAC9D,QAAM,OAAO,WAAW,KAAK;AAC7B,SACE,gBAAAA,OAAA,cAAC,SAAI,aACH,gBAAAA,OAAA,cAAC,QAAK,UAAoB,CAC5B;AAEJ","sourcesContent":["import React from \"react\";\nimport Card from \"./Widgets/Card\";\nimport CardList from \"./Widgets/CardList\";\nimport Nav from \"./Widgets/Nav\";\n\nconst COMPONENTS = {\n Card,\n CardList,\n Nav,\n};\n\nexport type JSONDataType<T extends Record<string, any>> = Array<T> | T;\n\nexport interface JSONComponentProps<T extends Record<string, any>> {\n className?: string;\n jsondata: JSONDataType<T>;\n type?: keyof typeof COMPONENTS;\n}\n\nexport const JSONComponent = <T extends Record<string, any>>({ className, jsondata, type }: JSONComponentProps<T>) => {\n const _type = type || (Array.isArray(jsondata) ? 'CardList' : 'Card');\n const Comp = COMPONENTS[_type];\n return (\n <div className={className}>\n <Comp jsondata={jsondata} />\n </div>\n );\n}\n","import React from \"react\";\nimport { JSONDataType } from \"..\";\n\nconst CardWidget = <T extends Record<string, any>>({ jsondata }: { jsondata: JSONDataType<T> }) => {\n const keys = Object.keys(jsondata);\n return (\n <div className=\"p-2 shadow-sm rounded-lg border dark:border-[#3e3e3e] space-y-2\">\n {keys.map(key => {\n return (\n <div className=\"flex items-center justify-between\" key={key}>\n <div>\n {key}\n </div>\n <div>\n {jsondata[key]}\n </div>\n </div>\n )\n })}\n </div>\n );\n}\n\nexport default CardWidget;","import React from \"react\";\nimport { JSONDataType } from \"..\";\nimport CardWidget from \"./Card\";\n\nconst CardListWidget = <T extends Record<string, any>>({ jsondata }: { jsondata: JSONDataType<T> }) => {\n if (Array.isArray(jsondata)) {\n const firstData = jsondata[0];\n if (firstData && firstData.constructor === Object) {\n return (\n <div className=\"space-y-2\">\n {jsondata.map((item, index) => {\n return (\n <CardWidget jsondata={item} key={index} />\n )\n })}\n </div>\n )\n }\n }\n return (\n <CardWidget jsondata={jsondata} />\n );\n}\n\nexport default CardListWidget;","import React from \"react\";\nimport { JSONDataType } from \"..\";\n\nconst NavWidget = <T extends Record<string, any>>({ jsondata }: { jsondata: JSONDataType<T> }) => {\n return (\n <div>\n <h1>Nav</h1>\n </div>\n );\n}\n\nexport default NavWidget;"]}
package/dist/plugins.mjs CHANGED
@@ -1,8 +1,8 @@
1
- import { DialogStore } from './chunk-GT4R5SDI.mjs';
2
- export { DialogStore } from './chunk-GT4R5SDI.mjs';
1
+ import { DialogStore } from './chunk-63DQOYRW.mjs';
2
+ export { DialogStore } from './chunk-63DQOYRW.mjs';
3
3
  import { ToastPlugin } from './chunk-IMOLRP7I.mjs';
4
4
  export { ToastPlugin } from './chunk-IMOLRP7I.mjs';
5
- import { getStyle } from './chunk-K73JTEJQ.mjs';
5
+ import { getStyle } from './chunk-YG4RDLYA.mjs';
6
6
  import { useStore, RootStore } from './chunk-XSGTWROT.mjs';
7
7
  import './chunk-K7LFG5BA.mjs';
8
8
  import { cn } from './chunk-2HNXZE3X.mjs';
package/dist/wallet.mjs CHANGED
@@ -1,11 +1,11 @@
1
- import { WalletConfigStore, WalletStore, WalletRpcStore } from './chunk-OPCLNLJF.mjs';
2
- export { WalletConfigStore, WalletHistoryStore, WalletRpcStore, WalletStore } from './chunk-OPCLNLJF.mjs';
1
+ import { WalletConfigStore, WalletStore, WalletRpcStore } from './chunk-VXA4UKJU.mjs';
2
+ export { WalletConfigStore, WalletHistoryStore, WalletRpcStore, WalletStore } from './chunk-VXA4UKJU.mjs';
3
3
  import './chunk-TSUKTLY3.mjs';
4
4
  import './chunk-NPQ7GCFM.mjs';
5
5
  import './chunk-7MDKCI65.mjs';
6
- import './chunk-GT4R5SDI.mjs';
6
+ import './chunk-63DQOYRW.mjs';
7
7
  import { ToastPlugin } from './chunk-IMOLRP7I.mjs';
8
- import './chunk-K73JTEJQ.mjs';
8
+ import './chunk-YG4RDLYA.mjs';
9
9
  import { RootStore } from './chunk-XSGTWROT.mjs';
10
10
  import './chunk-R4N52NI2.mjs';
11
11
  import './chunk-ONVPCAMQ.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dappworks/kit",
3
- "version": "0.4.234",
3
+ "version": "0.4.236",
4
4
  "description": "",
5
5
  "main": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.mts",
@@ -59,6 +59,10 @@
59
59
  "./utils": {
60
60
  "import": "./dist/utils.mjs",
61
61
  "require": "./dist/utils.js"
62
+ },
63
+ "./jsoncomponent": {
64
+ "import": "./dist/jsoncomponent.mjs",
65
+ "require": "./dist/jsoncomponent.js"
62
66
  }
63
67
  },
64
68
  "typesVersions": {
@@ -98,6 +102,9 @@
98
102
  ],
99
103
  "utils": [
100
104
  "./dist/utils.d.mts"
105
+ ],
106
+ "jsoncomponent": [
107
+ "./dist/jsoncomponent.d.mts"
101
108
  ]
102
109
  }
103
110
  },
@@ -111,7 +118,7 @@
111
118
  "@iconify/react": ">=5.0.2",
112
119
  "@iotexproject/iotex-address-ts": "^1.0.4",
113
120
  "@monaco-editor/react": ">=4.0.0",
114
- "@nextui-org/react": ">=2.4.2",
121
+ "@nextui-org/react": ">=2.4.8",
115
122
  "@radix-ui/react-dialog": ">=1.0.0",
116
123
  "@radix-ui/react-dropdown-menu": "^2.0.5",
117
124
  "@rainbow-me/rainbowkit": ">=2.1.5",
@@ -162,4 +169,4 @@
162
169
  "reflect-metadata": "^0.2.2",
163
170
  "virtua": "0.33.7"
164
171
  }
165
- }
172
+ }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../themes/default.json","../themes/primary.json","../themes/index.ts"],"names":[],"mappings":";;;;;AAAA;AAAA,EACE,OAAS;AAAA,IACP,YAAc;AAAA,MACZ,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,aAAe;AAAA,IACb,YAAc;AAAA,MACZ,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,gBAAkB;AAAA,IAChB,YAAc;AAAA,MACZ,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,kBAAoB;AAAA,IAClB,qBAAuB;AAAA,MACrB,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,cAAgB;AAAA,IACd,YAAc;AAAA,MACZ,gBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,sBAAwB;AAAA,IACtB,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,SAAW;AAAA,MACX,gBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,gBAAkB;AAAA,IAChB,YAAc;AAAA,MACZ,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,MAAQ;AAAA,IACN,WAAa;AAAA,EACf;AACF;;;ACzCA;AAAA,EACE,OAAS;AAAA,IACP,YAAc;AAAA,MACZ,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,aAAe;AAAA,IACb,YAAc;AAAA,MACZ,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,gBAAkB;AAAA,IAChB,YAAc;AAAA,MACZ,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,kBAAoB;AAAA,IAClB,qBAAuB;AAAA,MACrB,cAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,cAAgB;AAAA,IACd,YAAc;AAAA,MACZ,SAAW;AAAA,MACX,gBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,sBAAwB;AAAA,IACtB,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,SAAW;AAAA,MACX,gBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,gBAAkB;AAAA,IAChB,YAAc;AAAA,MACZ,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,MAAQ;AAAA,IACN,WAAa;AAAA,EACf;AACF;;;ACpCO,IAAM,WAAW,CAAC,OAAkB,QAAgB;AACzD,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO,EAAE,IAAI,iBAAc,GAAG;AAAA,IAChC,KAAK;AACH,aAAO,EAAE,IAAI,iBAAc,GAAG;AAAA,EAClC;AACF","sourcesContent":["{\n \"Modal\": {\n \"classNames\": {\n \"base\": \"\"\n }\n },\n \"InputWidget\": {\n \"classNames\": {\n \"inputWrapper\": \"\"\n }\n },\n \"TextareaWidget\": {\n \"classNames\": {\n \"inputWrapper\": \"\"\n }\n },\n \"DatePickerWidget\": {\n \"dateInputClassNames\": {\n \"inputWrapper\": \"\"\n }\n },\n \"SelectWidget\": {\n \"classNames\": {\n \"popoverContent\": \"rounded-lg shadow-md border dark:border-[#3e3e3e]\"\n }\n },\n \"MultipleSelectWidget\": {\n \"classNames\": {\n \"base\": \"w-full\",\n \"trigger\": \"min-h-12 py-1\",\n \"popoverContent\": \"rounded-lg shadow-md border dark:border-[#3e3e3e]\"\n }\n },\n \"CheckboxWidget\": {\n \"classNames\": {\n \"base\": \"m-0 flex items-center justify-start w-full cursor-pointer rounded-lg gap-2 p-[13px] bg-content2\"\n }\n },\n \"Card\": {\n \"className\": \"\"\n }\n}\n","{\n \"Modal\": {\n \"classNames\": {\n \"base\": \"dark:bg-[#09090B] border dark:border-[#2c2c2c] rounded-lg shadow-md\"\n }\n },\n \"InputWidget\": {\n \"classNames\": {\n \"inputWrapper\": \"rounded-lg shadow-none border dark:border-[#2c2c2c] !bg-transparent data-[hover=true]:!bg-default-50 group-data-[focus=true]:!bg-transparent\"\n }\n },\n \"TextareaWidget\": {\n \"classNames\": {\n \"inputWrapper\": \"rounded-lg shadow-none border dark:border-[#2c2c2c] !bg-transparent data-[hover=true]:!bg-default-50 group-data-[focus=true]:!bg-transparent\"\n }\n },\n \"DatePickerWidget\": {\n \"dateInputClassNames\": {\n \"inputWrapper\": \"rounded-lg bg-transparent border dark:border-[#2c2c2c] hover:bg-default-50\"\n }\n },\n \"SelectWidget\": {\n \"classNames\": {\n \"trigger\": \"rounded-lg bg-transparent shadow-none border dark:border-[#2c2c2c] data-[hover=true]:bg-default-50\",\n \"popoverContent\": \"rounded-lg shadow-md border border-[#F4F4F5] dark:border-[#3e3e3e]\"\n }\n },\n \"MultipleSelectWidget\": {\n \"classNames\": {\n \"base\": \"w-full\",\n \"trigger\": \"min-h-12 py-1 rounded-lg bg-transparent shadow-none border dark:border-[#2c2c2c] data-[hover=true]:bg-default-50\",\n \"popoverContent\": \"rounded-lg shadow-md border dark:border-[#3e3e3e]\"\n }\n },\n \"CheckboxWidget\": {\n \"classNames\": {\n \"base\": \"m-0 flex items-center justify-start w-full cursor-pointer rounded-lg gap-2 p-[13px] bg-transparent border dark:border-[#2c2c2c]\"\n }\n },\n \"Card\": {\n \"className\": \"dark:bg-[#09090B]\"\n }\n}\n","import { _ } from \"../lib/lodash\";\nimport defaultTheme from \"./default.json\";\nimport primaryTheme from \"./primary.json\";\n\nexport type ThemeType = \"default\" | \"primary\";\n\nexport const getStyle = (theme: ThemeType, key: string) => {\n switch (theme) {\n case \"default\":\n return _.get(defaultTheme, key);\n case \"primary\":\n return _.get(primaryTheme, key);\n }\n};\n"]}