@dappworks/kit 0.5.41 → 0.5.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{PromiseState-e64b3707.d.ts → PromiseState-8EAu4Zv4.d.mts} +1 -1
- package/dist/{StorageState-cfd942cb.d.ts → StorageState-qapaHguM.d.mts} +1 -1
- package/dist/aiem.d.mts +14 -15
- package/dist/aiem.mjs +5 -5
- package/dist/aiem.mjs.map +1 -1
- package/dist/{chunk-ISV4OEKJ.mjs → chunk-2B3FO5P6.mjs} +5 -5
- package/dist/chunk-2B3FO5P6.mjs.map +1 -0
- package/dist/{chunk-M5Y3VYMJ.mjs → chunk-6HA5WR5H.mjs} +9 -15
- package/dist/chunk-6HA5WR5H.mjs.map +1 -0
- package/dist/{chunk-FJHGIW3I.mjs → chunk-AFXQRBS6.mjs} +3 -3
- package/dist/chunk-AFXQRBS6.mjs.map +1 -0
- package/dist/chunk-GKAU4P5I.mjs +1 -1
- package/dist/chunk-GKAU4P5I.mjs.map +1 -1
- package/dist/{chunk-SL5OV6OR.mjs → chunk-GPPSD2BO.mjs} +5 -7
- package/dist/chunk-GPPSD2BO.mjs.map +1 -0
- package/dist/chunk-IMOLRP7I.mjs +1 -1
- package/dist/chunk-IMOLRP7I.mjs.map +1 -1
- package/dist/chunk-K7LFG5BA.mjs +2 -2
- package/dist/chunk-K7LFG5BA.mjs.map +1 -1
- package/dist/{chunk-3XIPR2M3.mjs → chunk-L5VZQRXB.mjs} +7 -8
- package/dist/chunk-L5VZQRXB.mjs.map +1 -0
- package/dist/{chunk-2N4HH4ZF.mjs → chunk-NCGC2KDE.mjs} +4 -6
- package/dist/chunk-NCGC2KDE.mjs.map +1 -0
- package/dist/chunk-ONVPCAMQ.mjs +1 -1
- package/dist/chunk-ONVPCAMQ.mjs.map +1 -1
- package/dist/{chunk-C5BPNLKH.mjs → chunk-TEVYTENF.mjs} +4 -4
- package/dist/chunk-TEVYTENF.mjs.map +1 -0
- package/dist/{chunk-4F33QAJ4.mjs → chunk-WNK4WSTE.mjs} +31 -56
- package/dist/chunk-WNK4WSTE.mjs.map +1 -0
- package/dist/{chunk-IDKGZ5T4.mjs → chunk-XSGTWROT.mjs} +8 -8
- package/dist/chunk-XSGTWROT.mjs.map +1 -0
- package/dist/{chunk-R4N52NI2.mjs → chunk-YBLCIJW4.mjs} +37 -31
- package/dist/chunk-YBLCIJW4.mjs.map +1 -0
- package/dist/{chunk-6F7H4PAA.mjs → chunk-YOSPWY5K.mjs} +2 -2
- package/dist/chunk-YOSPWY5K.mjs.map +1 -0
- package/dist/dev.d.mts +1 -1
- package/dist/dev.mjs +6 -8
- package/dist/dev.mjs.map +1 -1
- package/dist/experimental.d.mts +4 -4
- package/dist/experimental.mjs +7 -9
- package/dist/experimental.mjs.map +1 -1
- package/dist/form.d.mts +6 -6
- package/dist/form.mjs +16 -20
- package/dist/form.mjs.map +1 -1
- package/dist/{index-38be834f.d.ts → index-CUKoRIdy.d.mts} +1 -1
- package/dist/index.d.mts +5 -5
- package/dist/index.mjs +9 -9
- package/dist/index.mjs.map +1 -1
- package/dist/inspector.d.mts +1 -1
- package/dist/inspector.mjs +3 -4
- package/dist/inspector.mjs.map +1 -1
- package/dist/jsoncomponent.d.mts +5 -5
- package/dist/jsoncomponent.mjs +2 -2
- package/dist/jsoncomponent.mjs.map +1 -1
- package/dist/jsontable.d.mts +2 -2
- package/dist/jsontable.mjs +5 -5
- package/dist/jsontable.mjs.map +1 -1
- package/dist/metrics.d.mts +1 -1
- package/dist/metrics.mjs +6 -6
- package/dist/metrics.mjs.map +1 -1
- package/dist/plugins.d.mts +7 -7
- package/dist/plugins.mjs +6 -6
- package/dist/plugins.mjs.map +1 -1
- package/dist/{root-218afa4f.d.ts → root-BPMUmS6H.d.mts} +1 -1
- package/dist/ui.mjs +5 -6
- package/dist/ui.mjs.map +1 -1
- package/dist/utils.d.mts +105 -22
- package/dist/utils.mjs +4 -4
- package/dist/utils.mjs.map +1 -1
- package/dist/wallet.d.mts +6 -4
- package/dist/wallet.mjs +59 -17
- package/dist/wallet.mjs.map +1 -1
- package/package.json +4 -3
- package/dist/chunk-2N4HH4ZF.mjs.map +0 -1
- package/dist/chunk-3XIPR2M3.mjs.map +0 -1
- package/dist/chunk-4F33QAJ4.mjs.map +0 -1
- package/dist/chunk-6F7H4PAA.mjs.map +0 -1
- package/dist/chunk-C5BPNLKH.mjs.map +0 -1
- package/dist/chunk-FJHGIW3I.mjs.map +0 -1
- package/dist/chunk-IDKGZ5T4.mjs.map +0 -1
- package/dist/chunk-ISV4OEKJ.mjs.map +0 -1
- package/dist/chunk-M5Y3VYMJ.mjs.map +0 -1
- package/dist/chunk-R4N52NI2.mjs.map +0 -1
- package/dist/chunk-SL5OV6OR.mjs.map +0 -1
- /package/dist/{PaginationState-c19e621a.d.ts → PaginationState-Bmrrw0ky.d.mts} +0 -0
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":";;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAOA,aAAyC;;;ACAhD,OAAOA,WAAS,iBAAiB;AACjC,SAAS,YAAY;;;ACDrB,OAAOA,UAAS,YAAAC,iBAAgB;AAChC,SAAS,UAAAC,eAAc;;;ACDvB,OAAO,SAAc,SAAS,gBAAgB;AAC9C,SAAS,gBAA+B;AAExC,SAAS,aAAa;AAsBf,SAAS,eAAe;AAAA,EAC7B;AAAA,EAAU;AAAA,EAAS;AAAA,EAAO;AAAA,EAAO;AAAA,EAAU;AAC7C,GAAwB;AACtB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,EAAE,UAAU,MAAM,IAAI;AAC5B,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAiB,EAAE;AAC/C,QAAM,YAAY,CAAC,CAAC;AACpB,QAAM,aAAa,QAAQ,MAAM;AAC/B,UAAM,aAAa,SAAS,SAAS,WAAW,gBAAgB;AAChE,WAAO,kCACF,WAAW,aACX;AAAA,EAEP,GAAG,CAAC,OAAO,gBAAgB,CAAC;AAC5B,SACE,0DACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,cAAc,SAAS;AAAA,MACrC;AAAA,MACA,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ,MAAM,oCAAC,SAAM,WAAU,0BAAyB;AAAA,MAChD;AAAA,MACA;AAAA,MACA,UAAU,CAAC,MAAW;AACpB,cAAM,UAAU,EAAE,OAAO;AACzB,iBAAS,OAAO;AAAA,MAClB;AAAA,MACA,QAAQ,MAAM;AACZ,YAAI,UAAU;AACZ,gBAAMC,UAAS,SAAS,KAAK;AAC7B,oBAAUA,OAAM;AAChB;AAAA,QACF;AACA,kBAAU,EAAE;AAAA,MACd;AAAA;AAAA,IAEC;AAAA,EACH,GACC,eAAe,oCAAC,SAAI,WAAW,GAAG,mDAAmD,oBAAoB,KAAI,WAAY,GACzH,aAAa,oCAAC,SAAI,WAAU,iCAA+B,MAAO,CACrE;AAEJ;;;AC1EA,OAAOH,UAAoB,WAAAI,UAAS,cAAc;AAClD,SAAS,aAAqD;AA+BvD,SAAS,YAAY,OAAyB;AAjCrD;AAkCE,QAAM,EAAE,UAAU,SAAS,OAAO,OAAO,UAAU,UAAU,SAAS,IAAI;AAC1E,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,EAAE,gBAAgB,UAAU,MAAM,IAAI;AAC5C,QAAM,eAAc,cAAS,YAAY,MAArB,mBAAwB;AAC5C,QAAM,iBAAiB,OAAO,IAAI;AAClC,QAAM,aAAaA,SAAQ,MAAM;AAC/B,UAAM,aAAa,SAAS,SAAS,WAAW,aAAa;AAC7D,WAAO,kCACF,WAAW,aACX;AAAA,EAEP,GAAG,CAAC,OAAO,gBAAgB,CAAC;AAC5B,SACE,gBAAAJ,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,UAAU,SAAS;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,CAAC,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,MACxC;AAAA,MACA;AAAA,MACA,UAAU,MAAM;AACd,YAAI,eAAe,SAAS;AAC1B,yBAAe,UAAU;AACzB,iBAAO;AAAA,QACT;AACA,YAAI,UAAU,MAAM,UAAU;AAC5B,iBAAO,kBAAkB;AAAA,QAC3B;AACA,YAAI,UAAU;AACZ,gBAAM,SAAS,SAAS,KAAK;AAC7B,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA;AAAA,EACF;AAEJ;;;ACjGA,OAAOA,UAAc,aAAa,WAAAI,UAAS,YAAAH,iBAAgB;AAE3D,SAAS,QAAQ,kBAA4D;AA0BtE,SAAS,aAAa,OAA0B;AA5BvD;AA6BE,QAAM,EAAE,UAAU,SAAS,OAAO,OAAO,UAAU,UAAU,SAAS,IAAI;AAC1E,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,eAAe;AAAA,MACb,aAAa;AAAA,QACX,MAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,EAAE,gBAAgB,CAAC,GAAG,gBAAgB,UAAU,MAAM,IAAI;AAChE,QAAM,eAAc,cAAS,YAAY,MAArB,mBAAwB;AAC5C,QAAM,aAAaG,SAAQ,MAAM;AAC/B,UAAM,aAAa,SAAS,SAAS,WAAW,sBAAsB;AACtE,WAAO,kCACF,WAAW,aACX;AAAA,EAEP,GAAG,CAAC,OAAO,gBAAgB,CAAC;AAC5B,QAAM,CAAC,QAAQ,SAAS,IAAIH,UAAiB,EAAE;AAC/C,QAAM,YAAY,CAAC,CAAC;AACpB,QAAM,aAAa,YAAY,CAACI,WAAU;AACxC,QAAI,CAACA,UAAS,UAAU;AACtB,gBAAU,kBAAkB,wBAAwB;AACpD;AAAA,IACF;AACA,QAAI,UAAU;AACZ,YAAMF,UAAS,SAASE,MAAK;AAC7B,gBAAUF,OAAM;AAChB;AAAA,IACF;AACA,cAAU,EAAE;AAAA,EACd,GAAG,CAAC,CAAC;AAEL,SACE,gBAAAH,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,+BAAO;AAAA,MACd,WAAW,GAAG,UAAU,SAAS;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,YAAY,WAAW;AAAA,MAC9B,cAAc,aAAa;AAAA,MAC3B,cAAc,CAAC,KAAK;AAAA,MACpB,mBAAmB,CAAC,MAAM;AACxB,cAAM,OAAO,MAAM,KAAK,CAAC;AACzB,cAAM,KAAK,KAAK,CAAC;AACjB,iBAAS,EAAE;AACX,mBAAW,EAAE;AAAA,MACf;AAAA;AAAA,IAEC,cAAc,IAAI,CAAC,SAClB,gBAAAA,OAAA,cAAC,cAAW,KAAK,KAAK,OAAO,OAAO,KAAK,SACtC,KAAK,KACR,CACD;AAAA,EACH;AAEJ;;;AC/GA,OAAOA,UAAc,eAAAM,cAAa,WAAAF,UAAS,YAAAH,iBAAgB;AAC3D,SAAS,MAAM,UAAAM,SAAQ,cAAAC,mBAA8C;AA+B9D,SAAS,qBAAqB,OAAkC;AAhCvE;AAiCE,QAAM,EAAE,UAAU,SAAS,OAAO,OAAO,UAAU,WAAW,CAAC,EAAE,IAAI;AACrE,QAAM,EAAE,gBAAgB,CAAC,GAAG,gBAAgB,UAAU,MAAM,IAAI;AAChE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB,eAAe,CAAC;AAAA,IAChB,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,cAAc;AAAA,EAChB,IAAI;AACJ,QAAM,gBAAc,cAAS,YAAY,MAArB,mBAAwB,gBAAe;AAC3D,QAAM,eAAeJ,SAAQ,MAAM;AACjC,WAAO,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC;AAAA,EACrC,GAAG,CAAC,KAAK,CAAC;AACV,QAAM,aAAaA,SAAQ,MAAM;AAC/B,UAAM,aAAa,SAAS,SAAS,WAAW,sBAAsB;AACtE,WAAO,kCACF,WAAW,aACX;AAAA,EAEP,GAAG,CAAC,OAAO,gBAAgB,CAAC;AAC5B,QAAM,CAAC,QAAQ,SAAS,IAAIH,UAAiB,EAAE;AAC/C,QAAM,YAAY,CAAC,CAAC;AACpB,QAAM,aAAaK,aAAY,CAACD,WAAU;AACxC,QAAI,CAACA,UAAS,UAAU;AACtB,gBAAU,kBAAkB,wBAAwB;AACpD;AAAA,IACF;AACA,QAAI,UAAU;AACZ,YAAMF,UAAS,SAASE,MAAK;AAC7B,gBAAUF,OAAM;AAChB;AAAA,IACF;AACA,cAAU,EAAE;AAAA,EACd,GAAG,CAAC,CAAC;AAEL,SACE,gBAAAH,OAAA;AAAA,IAACO;AAAA,IAAA;AAAA,MACC,WAAW,GAAG,UAAU,SAAS;AAAA,MACjC;AAAA,MACA,aAAW;AAAA,MACX,eAAc;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,OAAO,YAAY,WAAW;AAAA,MAC9B,cAAc,aAAa;AAAA,MAC3B,mBAAmB,CAAC,MAAM;AACxB,cAAM,OAAO,MAAM,KAAK,CAAC;AACzB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,iBAAS,EAAE;AACX,mBAAW,EAAE;AAAA,MACf;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA,cAAc;AAAA,QACZ,aAAa;AAAA,UACX,MAAM;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,SACG;AAAA,MAEL;AAAA,MACA;AAAA;AAAA,IAEC,cAAc,IAAI,CAAC,SAClB,gBAAAP,OAAA,cAACQ,aAAA,EAAW,KAAK,KAAK,OAAO,WAAW,KAAK,SAC1C,KAAK,KACR,CACD;AAAA,EACH;AAEJ;AAEA,SAAS,mBACP,OAIA;AACA,SACE,gBAAAR,OAAA,cAAC,SAAI,WAAU,0BACZ,MAAM,IAAI,CAAC,SACV,gBAAAA,OAAA,cAAC,QAAK,WAAU,sCAAqC,OAAM,aAAY,MAAK,MAAK,KAAK,KAAK,OACxF,KAAK,SACR,CACD,CACH;AAEJ;;;ACvIA,OAAOA,UAAc,UAAAS,SAAQ,YAAAR,iBAAgB;AAC7C,OAAO,kBAAmC;AAE1C,SAAS,cAAc;AA8BhB,IAAM,eAAe,CAAC,EAAE,OAAO,UAAU,CAAC,GAAG,OAAO,UAAU,UAAU,UAAU,SAAS,MAAyB;AACzH,QAAM,EAAE,eAAe,SAAS,WAAW,OAAO,WAAW,QAAQ,cAAc,0BAA0B,CAAC,GAAG,gBAAgB,aAAa,sBAAsB,oBAAoB,iBAAiB,kBAAkB,OAAO,QAAQ,IAAI;AAC9O,QAAM,EAAE,gBAAgB,SAAS,IAAI;AACrC,QAAM,CAAC,kBAAkB,mBAAmB,IAAIA,UAAS,EAAE;AAC3D,QAAM,CAAC,YAAY,aAAa,IAAIA,UAAS,KAAK;AAClD,QAAM,uBAAuB,wBAAwB,SAAS;AAC9D,QAAM,CAAC,QAAQ,SAAS,IAAIA,UAAiB,EAAE;AAC/C,QAAM,YAAY,CAAC,CAAC;AACpB,QAAM,sBAAsBQ;AAAA,IAC1B,EAAE,SAAS,OAAOJ,WAAU;AAC1B,UAAI,CAACA,UAAS,UAAU;AACtB,kBAAU,kBAAkB,wBAAwB;AACpD;AAAA,MACF;AACA,UAAI,UAAU;AACZ,cAAMF,UAAS,SAASE,MAAK;AAC7B,kBAAUF,OAAM;AAChB;AAAA,MACF;AACA,gBAAU,EAAE;AAAA,IACd,GAAG,GAAI;AAAA,EACT,EAAE;AAEF,QAAM,YAAY,MAAM,KAAK;AAC7B,QAAM,YAAY,aAAa;AAE/B,SACE,gBAAAH,OAAA,cAAC,SAAI,WAAU,4BAEX,aAAa,gBAAAA,OAAA,cAAC,SAAI,WAAW,GAAG,0CAA0C,cAAc,KACrF,SACC,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA;AAAA,IAET;AAAA,IACA,YAAY,gBAAAA,OAAA,cAAC,UAAK,WAAU,4BAAyB,GAAC;AAAA,EACzD,GAED,wBACC,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO;AAAA,MACP,UAAU,CAAC,UAAU;AACnB,cAAM,IAAI,MAAM,OAAO;AACvB,4BAAoB,CAAC;AACrB,4BAAoB,iBAAiB,CAAC;AAAA,MACxC;AAAA;AAAA,IAEC,wBAAwB,IAAI,CAAC,SAAS;AACrC,aAAO,gBAAAA,OAAA,cAAC,YAAO,KAAK,KAAK,OAAO,OAAO,KAAK,SAAQ,KAAK,KAAM;AAAA,IACjE,CAAC;AAAA,EACH,CAEJ,GAED,eAAe,gBAAAA,OAAA,cAAC,SAAI,WAAW,GAAG,mDAAmD,oBAAoB,KAAI,WAAY,GAC1H,gBAAAA,OAAA,cAAC,SAAI,WAAW,GAAG,oEAAoE,kBAAkB,KACvG,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,EAAE,UAAU,YAAY,UAAU,SAAS,EAAE,SAAS,MAAM,EAAE;AAAA,MACvE,QAAQ;AAAA,MACR,OAAM;AAAA,MACN,UAAU,mBAAmB,mBAAmB;AAAA,MAChD;AAAA,MACA,UAAU,CAAC,MAAM;AACf,iBAAS,CAAC;AACV,4BAAoB,CAAC;AAAA,MACvB;AAAA,MACA,SAAS,CAAC,QAAQ,WAAW;AAC3B,mBAAW,QAAQ,QAAQ,MAAM;AACjC,YAAI,aAAa,UAAU,gBAAgB,OAAO;AAChD,gBAAM,OAAO,OAAO,KAAK,UAAU,KAAK;AACxC,iBAAO,SAAS,KAAK,UAAU,MAAM,MAAM,YAAY,CAAC;AAAA,QAC1D;AACA,eAAO,OAAO,YAAY,iBAAiB;AAAA,UACzC,MAAM;AAAA,UACN,SAAS;AAAA,UACT,OAAO,CAAC;AAAA,UACR,QAAQ;AAAA,YACN,qBAAqB;AAAA,UACvB;AAAA,QACF,CAAC;AACD,eAAO,OAAO,SAAS,eAAe;AAAA,MACxC;AAAA;AAAA,EACF,CACF,GACC,aAAa,gBAAAA,OAAA,cAAC,SAAI,WAAW,GAAG,+BAA+B,eAAe,KAAI,MAAO,GACzF,SACC,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAW;AAAA,MACX,SAAS,YAAY;AACnB,sBAAc,IAAI;AAClB,cAAM,MAAM,KAAK;AACjB,sBAAc,KAAK;AAAA,MACrB;AAAA;AAAA,IACD;AAAA,EAED,CAEJ;AAEJ;;;ACvIA,SAAS,iBAAiB;AAG1B,OAAO,eAAe;AACtB,SAAS,QAAQ,UAAU,gBAAgB,YAAY,YAAY;AAG5D,IAAM,sBAAN,MAA2C;AAAA,EA4ChD,YAAY,OAA2C,CAAC,GAAG;AA3C3D,iBAA4B,IAAI,gBAAgB;AAGhD,oBAAoB;AACpB,oBAAW;AACX,wBAAe;AACf,qBAAY;AAYZ,yBAAgB,MAAM;AACpB,aAAO,EAAE,OAAO,KAAK;AAAA,IACvB;AACA,oBAAW,CAAC,GAAoB,OAAgB;AAC9C,WAAK,MAAM,IAAI,EAAE,QAAQ;AACzB,UAAI,KAAK,aAAa;AACpB,aAAK,YAAY,GAAG,EAAE;AAAA,MACxB;AAAA,IACF;AACA,oBAAW,CAAC,MAAuB;AACjC,UAAI,KAAK,aAAa;AACpB,aAAK,YAAY,CAAC;AAAA,MACpB;AAAA,IACF;AAWA,0BAAiB,CAAC,UAAa,WAAgB;AAE7C,WAAO,OAAO,MAAM,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;AAClD,QAAI,KAAK,UAAU;AACjB,qBAAe,MAAM;AAAA,QACnB,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAzCA,IAAI,WAAW;AACb,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB;AAAA,EACA,IAAI,SAAS,OAAU;AACrB,SAAK,MAAM,IAAI,KAAK;AAAA,EACtB;AAAA,EACA,IAAI,cAAc;AAChB,WAAO,KAAK,cAAc;AAAA,EAC5B;AAAA,EAiBA,MAAM,EAAE,QAAQ,MAAM,IAAI,CAAC,GAAG;AAC5B,QAAI,OAAO;AACT,WAAK,MAAM,QAAQ,KAAK,MAAM;AAAA,IAChC,OAAO;AACL,WAAK,MAAM,MAAM;AAAA,IACnB;AACA,WAAO;AAAA,EACT;AAUF;AAEO,IAAM,kBAAN,MAAyB;AAAA,EAG9B,YAAY,OAAoC,CAAC,GAAG;AAFpD,iBAAY;AACZ,mBAAc;AAEZ,QAAI,CAAC,KAAK,SAAS,KAAK,SAAS;AAC/B,WAAK,QAAQ,KAAK;AAAA,IACpB;AACA,WAAO,OAAO,MAAM,IAAI;AACxB,mBAAe,MAAM;AAAA,MACnB,OAAO;AAAA,MACP,KAAK;AAAA,IACP,CAAC;AAAA,EACH;AAAA,EACA,IAAI,OAAmB;AACrB,YAAQ,KAAK,MAAM,KAAK;AACxB,UAAM,SAAS,OAAO,UAAU,KAAK,OAAO,KAAK;AACjD,SAAK,QAAQ,KAAK,MAAM;AACxB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,MAAM,OAAmB;AACvB,WAAO;AAAA,EACT;AAAA,EACA,MAAM;AACJ,WAAO,KAAK,UAAU,KAAK,KAAK;AAAA,EAClC;AAAA,EACA,UAAU,OAAU;AAClB,WAAO;AAAA,EACT;AAAA,EACA,QAAQ;AACN,SAAK,IAAI,KAAK,OAAO;AAAA,EACvB;AACF;;;AN3EO,IAAM,eAAe,CAC1B,OACA,aAAuD,CAAC,GACxD,QAAmB,cAChB;AACH,QAAM,EAAE,UAAU,YAAY,OAAO,SAAS,IAAI;AAElD,QAAM,aAAa,CAAC;AAEpB,SAAO,KAAK,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AA1BzC;AA2BI,UAAM,WAAW,SAAS,GAAG;AAC7B,UAAM,kBAAiB,yCAAa,SAAQ,CAAC;AAC7C,UAAM,QAAQ,CAAC;AACf,UAAM,WAAW,CAAC;AAClB,UAAM,aAAa,OAAO,QAAQ,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAW;AA/BtE,UAAAU,KAAA;AAgCM,YAAM,CAAC,GAAG,CAAC,IAAI;AAEf,YAAM,OAAO,OAAO;AACpB,QAAE,CAAC,IAAI;AAAA,QACL;AAAA,MACF;AAEA,YAAM,CAAC,IAAI;AAEX,UAAI,CAAC,eAAe,CAAC,GAAG;AACtB,uBAAe,CAAC,IAAI,CAAC;AAAA,MACvB;AAEA,WAAIA,MAAA,eAAe,CAAC,MAAhB,gBAAAA,IAAmB,OAAO;AAC5B,UAAE,CAAC,EAAE,QAAQ,eAAe,CAAC,EAAE,SAAS;AAAA,MAC1C;AAEA,WAAI,oBAAe,CAAC,MAAhB,mBAAmB,UAAU;AAC/B,iBAAS,KAAK,CAAC;AAAA,MACjB;AAEA,UAAI,SAAS,YAAY,SAAS,UAAU;AAC1C,aAAI,oBAAe,CAAC,MAAhB,mBAAmB,eAAe;AACpC,eAAI,oBAAe,CAAC,MAAhB,mBAAmB,kBAAkB;AACvC,2BAAe,CAAC,EAAE,WAAW,IAAI;AAAA,UACnC,OAAO;AACL,2BAAe,CAAC,EAAE,WAAW,IAAI;AAAA,UACnC;AAAA,QACF,OAAO;AACL,cAAI,CAAC,eAAe,CAAC,EAAE,WAAW,GAAG;AACnC,2BAAe,CAAC,EAAE,WAAW,IAAI;AAEjC,gBAAI,SAAS,UAAU;AACrB,6BAAe,CAAC,EAAE,YAAY,IAAI,iCAC7B,eAAe,CAAC,EAAE,YAAY,IADD;AAAA,gBAEhC,WAAW;AAAA,cACb;AAAA,YACF;AAEA,gBAAI,OAAO,KAAK,aAAa,CAAC,GAAG;AAC/B,6BAAe,CAAC,EAAE,WAAW,IAAI;AACjC,6BAAe,CAAC,EAAE,YAAY,IAAI,iCAC7B,eAAe,CAAC,EAAE,YAAY,IADD;AAAA,gBAEhC,cAAc;AAAA,cAChB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,UAAI,SAAS,WAAW;AACtB,uBAAe,CAAC,EAAE,WAAW,IAAI;AAAA,MACnC;AAEA,UAAI,SAAS,UAAU;AAErB,UAAE,CAAC,EAAE,OAAO;AACZ,cAAM,CAAC,IAAI,KAAK,UAAU,GAAG,MAAM,CAAC;AACpC,uBAAe,CAAC,EAAE,WAAW,IAAI;AAAA,MACnC;AAEA,qBAAe,CAAC,EAAE,OAAO,IAAI;AAC7B,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AACL,UAAM,SAAS;AAAA,MACb,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACF;AACA,UAAM,OAAO,IAAI,oBAAoB;AAAA;AAAA,MAEnC;AAAA,MACA,UAAU;AAAA,QACR,0BAA0B;AAAA,UACxB,UAAU;AAAA,QACZ;AAAA,SACG,iBAJK;AAAA,QAKR,SAAQ,gBAAW,GAAG,MAAd,mBAAiB;AAAA,MAC3B;AAAA;AAAA;AAAA;AAAA,MAIA,aAAa,CAAC,GAAG,OAAO;AACtB,cAAM,EAAE,UAAAC,UAAS,IAAI;AACrB,YAAIA,aAAY,IAAI;AAClB,gBAAM,QAAQ,GAAG,QAAQ,SAAS,EAAE;AACpC,gBAAM,OAAO;AAAA,YACX,CAAC,GAAG,GAAG;AAAA,cACL,CAAC,KAAK,GAAGA,UAAS,KAAK;AAAA,YACzB;AAAA,UACF;AAEA,+CAAW;AAAA,QACb;AAAA,MACF;AAAA,MACA,OAAO,IAAI,gBAAgB;AAAA,QACzB,SAAS;AAAA,QACT,OAAO,CAAC,MAAM;AACZ,cAAI,OAAO;AACT,mBAAO,MAAM,GAAuB,IAAI;AAAA,UAC1C;AACA,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,eAAW,GAAG,IAAI;AAAA,EACpB,CAAC;AAED,SAAO;AAGT;AAEO,IAAM,oBAAoB,CAAC,EAAE,YAAY,UAAU,YAAY,MAAM;AAC1E,QAA4E,oBAAe,CAAC,GAApF,aAAW,SAAS,UAAU,WAAW,cAnJnD,IAmJ8E,IAAT,iBAAS,IAAT,CAA3D,aAAW,WAAS,YAAU,aAAW;AACjD,QAAM,CAAC,SAAS,UAAU,IAAIV,UAAS,KAAK;AAC5C,SACE,gBAAAD,OAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,WAAW,GAAG,gBAAgB,SAAS;AAAA,MACvC,MAAK;AAAA,MACL,OAAM;AAAA,MACN,WAAW;AAAA,MACX,SAAS,CAAC,MAAM;AACd,cAAM,WAAW,CAAC;AAClB,cAAM,WAAW,OAAO,KAAK,UAAU;AACvC,mBAAW,WAAW,UAAU;AAC9B,gBAAM,OAAO,WAAW,OAAO;AAC/B,gBAAM,UAAU,KAAK,QAAQ;AAC7B,cAAI,SAAS;AACX,oBAAQ,OAAO;AAMf,kBAAM,OAAO,QAAQ,MAAM;AAC3B,kBAAM,WAAW,QAAQ,MAAM;AAC/B,kBAAM,OAAO,OAAO,KAAK,QAAQ;AACjC,uBAAW,OAAO,MAAM;AACtB,oBAAM,WAAW,SAAS,GAAG;AAC7B,kBAAI,UAAU;AACZ,sBAAM,EAAE,UAAU,SAAS,IAAI;AAC/B,oBAAI,UAAU;AACZ,sBAAI,KAAK,GAAG,MAAM,UAAa,KAAK,GAAG,MAAM,QAAQ,KAAK,GAAG,MAAM,IAAI;AACrE;AAAA,kBACF;AAAA,gBACF;AACA,oBAAI,UAAU;AACZ,wBAAM,SAAS,SAAS,KAAK,GAAG,CAAC;AACjC,sBAAI,QAAQ;AACV;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAEA,qBAAS,OAAO,IAAI;AAAA,UACtB,OAAO;AACL,oBAAQ,MAAM,yBAAyB;AACvC;AAAA,UACF;AAAA,QACF;AACA,6CAAW,UAAU;AACrB,uDAAgB,UAAU;AAAA,MAC5B;AAAA,OACI;AAAA,IAEH,YAAY;AAAA,EACf;AAEJ;AAEO,IAAM,eAAe,CAAC,EAAE,SAAS,WAAW,YAAY,MAAM;AACnE,QAA4E,oBAAe,CAAC,GAApF,aAAW,SAAS,UAAU,WAAW,cA9MnD,IA8M8E,IAAT,iBAAS,IAAT,CAA3D,aAAW,WAAS,YAAU,aAAW;AACjD,QAAM,CAAC,SAAS,UAAU,IAAID,UAAS,KAAK;AAC5C,SACE,gBAAAD,OAAA,cAAC,SAAI,WAAU,iBACb,gBAAAA,OAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,WAAW,GAAG,gBAAgB,SAAS;AAAA,MACvC,MAAK;AAAA,MACL,OAAM;AAAA,MACN,MAAK;AAAA,MACL,WAAW;AAAA,MACX,SAAS,CAAC,MAAM;AACd,YAAI,WAAW,CAAC;AAChB,cAAM,UAAU,UAAU,QAAQ;AAClC,YAAI,SAAS;AACX,kBAAQ,OAAO;AAMf,qBAAW,QAAQ,MAAM;AACzB,gBAAM,WAAW,QAAQ,MAAM;AAC/B,gBAAM,OAAO,OAAO,KAAK,QAAQ;AACjC,qBAAW,OAAO,MAAM;AACtB,kBAAM,WAAW,SAAS,GAAG;AAC7B,gBAAI,UAAU;AACZ,oBAAM,EAAE,UAAU,SAAS,IAAI;AAC/B,kBAAI,UAAU;AACZ,oBAAI,SAAS,GAAG,MAAM,UAAa,SAAS,GAAG,MAAM,QAAQ,SAAS,GAAG,MAAM,IAAI;AACjF;AAAA,gBACF;AAAA,cACF;AACA,kBAAI,UAAU;AACZ,sBAAM,SAAS,SAAS,SAAS,GAAG,CAAC;AACrC,oBAAI,QAAQ;AACV;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,uDAAgB,SAAS,UAAU;AAAA,MACrC;AAAA,OACI;AAAA,IAEH,YAAY;AAAA,EACf,CACF;AAEJ;;;AO/PA,OAAOF,UAAS,YAAAC,iBAAgB;AAChC,SAAS,UAAAC,eAAc;AACvB,OAAO,UAAU;AAOjB,YAAY,WAAW;AACvB,SAAS,aAAa,iBAAiB;AACvC,SAAS,gBAAgB;AAGzB,SAAS,QAAAU,aAAY;AAErB,SAAS,cAAc,OAA2B;AAChD,QAAM,EAAE,IAAI,YAAY,OAAO,MAAM,UAAU,aAAa,QAAQ,UAAU,QAAQ,SAAS,IAAI;AAEnG,MAAI,YAAY,SAAS,WAAW,MAAM,UAAU;AAAE,WAAO;AAAA,EAAM;AAInE,QAAM,SAAS,YAAY,SAAS,WAAW,MAAM;AACrD,QAAM,aAAa,YAAY,SAAS,WAAW,MAAM;AACzD,QAAM,SAAS,YAAY,SAAS,WAAW,MAAM;AACrD,QAAM,YAAY,UAAU,cAAc;AAE1C,SACE,gBAAAZ,OAAA,cAAC,SAAI,WAAW,GAAG,UAAU,KAC1B,aACC,gBAAAA,OAAA,cAAC,WAAM,SAAS,IAAI,WAAW,GAAG,uBAAuB,KACvD,gBAAAA,OAAA,cAAC,UAAK,WAAU,aAAW,KAAM,GAChC,YAAY,gBAAAA,OAAA,cAAC,UAAK,WAAU,4BAAyB,GAAC,CACzD,GAOD,QACH;AAEJ;AAEA,IAAM,eAAe,CAAC,QAAe,QAA6C,IAAI,MAAM;AAC1F;AACA,SAAO,OAAO,IAAI,CAAC,MAAM,UAAU;AACjC,QAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,YAAM,QAAQ,IAAI,OAAO;AACzB,aACE,gBAAAA,OAAA,cAAC,SAAI,KAAK,OAAO,WAAW,GAAG,sDAAsD,OAAO,yBAAyB,UAAU,KAC5H,aAAa,MAAM,QAAQ,CAAC,CAC/B;AAAA,IAEJ,OAAO;AACL,aACE,gBAAAA,OAAA,cAAC,SAAI,WAAU,UAAS,KAAK,SAC1B,OAAO,IAAI,CACd;AAAA,IAEJ;AAAA,EACF,CAAC;AACH;AAEA,IAAM,sBAAsB,CAAC,EAAE,OAAO,UAAU,EAAE,IAAI,GAAG,YAAY,UAAU,EAAE,OAAO,EAAE,MAAgC;AACxH,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAAS,KAAK;AAC1C,QAAM,SAAS,OAAO,YAAY,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,KAAK,OAAO,CAAC,CAAC;AACrF,SACE,gBAAAD,OAAA,cAAC,SAAI,WAAU,wBACZ,QAAQ,SACP,SACE,aAAa,QAAQ,MAAM,IAE3B,WAAW,IAAI,CAAC,YAAY;AAC1B,WACE,gBAAAA,OAAA,cAAC,SAAI,KAAK,QAAQ,QAAQ,OACvB,QAAQ,OACX;AAAA,EAEJ,CAAC,IAGH,gBAAAA,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,SAAS,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;AAAA;AAAA,IAElC,gBAAAA,OAAA,cAAC,SAAI,WAAU,0DAAwD,KAAM;AAAA,IAC5E,SAAS,gBAAAA,OAAA,cAAC,eAAU,IAAK,gBAAAA,OAAA,cAAC,iBAAY;AAAA,EACzC,GACA,gBAAAA,OAAA,cAAC,SAAI,WAAW,GAAG,oBAAoB,SAAS,UAAU,QAAQ,KAC/D,SACG,aAAa,QAAQ,MAAM,IAC3B,WAAW,IAAI,CAAC,YAAY;AAC5B,WACE,gBAAAA,OAAA,cAAC,SAAI,KAAK,QAAQ,QAAQ,OACvB,QAAQ,OACX;AAAA,EAEJ,CAAC,CACL,CACF,CAEJ;AAEJ;AAEA,IAAM,oBAAoB,CAAC,EAAE,OAAO,MAAsB;AACxD,SACE,gBAAAA,OAAA,cAAC,aACC,gBAAAA,OAAA,cAAC,SAAI,WAAU,eAAY,QAAM,GACjC,gBAAAA,OAAA,cAAC,SAAI,WAAU,eACZ,OAAO,IAAI,CAAC,UACX,gBAAAA,OAAA,cAAC,SAAI,WAAU,aAAY,OAAM,OAAM,KAAK,MAAM,YAC/C,MAAM,KACT,CACD,CACH,CACF;AAEJ;AAEA,IAAMa,gBAAe,CAAC,EAAE,SAAS,MAAyB;AACxD,QAAM,EAAE,YAAY,UAAU,OAAO,oBAAoB,CAAC,EAAE,IAAU,6BAAuB,QAAQ;AACrG,MAAI,UAAU;AACZ,WAAO;AAAA,EACT;AACA,SACE,gBAAAb,OAAA,cAAC,SAAI,WAAU,2BACb,gBAAAA,OAAA,cAACE,SAAA,EAAO,MAAK,UAAS,OAAM,WAAU,MAAK,QAAM,UAAW,CAC9D;AAEJ;AAOO,IAAM,iBAAiB,SAAS,CAAC,EAAE,UAAU,UAAU,MAAa;AA7I3E;AA8IE,MAAI,GAAC,4CAAW,gBAAX,mBAAwB;AAAO,WAAO,gBAAAF,OAAA,cAAAA,OAAA,cAAE;AAC7C,SACE,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,eAAc;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,iBAAiB,EAAE,cAAAa,cAAa;AAAA,MAClC;AAAA,MACA,UAAUD,MAAK,UAAU,QAAQ;AAAA,MACjC,UAAU,UAAU;AAAA,MACpB,UAAU,UAAU;AAAA,MACpB,QAAQ,UAAU;AAAA,MAClB,UAAU,UAAU;AAAA,MACpB,UAAU,UAAU;AAAA,MACpB,WAAW,UAAU;AAAA,MACrB,gBAAgB,UAAU;AAAA,MAC1B,KAAK,UAAU;AAAA;AAAA,IAEd,YAAY;AAAA,EACf;AAEJ,CAAC;;;ACrKD,OAAOZ,YAAW;;;ACIX,IAAM,WAA+B;AAAA,EAC1C,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,aAAiC;AAAA,EAC5C,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,aAAiC;AAAA,EAC5C,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,aAAiC;AAAA,EAC5C,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,UAA8B;AAAA,EACzC,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,YAAgC;AAAA,EAC3C,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,YAAgC;AAAA,EAC3C,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,YAAgC;AAAA,EAC3C,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;;;ADvHA,IAAM,MAAMA,OAAM,WAAqC,CAAC,OAAO,QAAQ;AACrE,QAAoG,YAA5F,eAAa,GAAG,cAAc,cAAc,cAAc,UAAU,UAZ9E,IAYsG,IAAV,kBAAU,IAAV,CAAlF,cAAgB,gBAAc,gBAAc,gBAAc,YAAU;AAC5E,QAAM,aAAa,CAACc,aAAgC,mBAA+C;AACjG,QAAI,CAACA;AAAY,aAAO;AACxB,QAAI,CAAC,OAAO,KAAK,cAAc,EAAE,SAAS,OAAOA,WAAU,CAAC;AAAG,aAAO;AACtE,WAAO,eAAeA,WAAU;AAAA,EAClC;AAEA,QAAM,uBAAuB,MAAM;AACjC,UAAM,WAAW,WAAW,YAAY,OAAO;AAC/C,UAAM,SAAS,WAAW,cAAc,SAAS;AACjD,UAAM,SAAS,WAAW,cAAc,SAAS;AACjD,UAAM,SAAS,WAAW,cAAc,SAAS;AACjD,WAAO,GAAG,UAAU,QAAQ,QAAQ,MAAM;AAAA,EAC5C;AAEA,SACE,gBAAAd,OAAA,cAAC,wBAAI,KAAU,WAAW,GAAG,qBAAqB,GAAG,SAAS,KAAO,QAClE,QACH;AAEJ,CAAC;AAED,IAAI,cAAc;AAElB,IAAO,cAAQ;;;AEpCf,OAAOA,YAAW;AAIlB,IAAM,cAAc,CAAC,SAA6B,oBAAgD;AAChG,MAAI,CAAC;AAAS,WAAO;AACrB,MAAI,CAAC,OAAO,KAAK,eAAe,EAAE,SAAS,OAAO,OAAO,CAAC;AAAG,WAAO;AACpE,SAAO,gBAAgB,OAAO;AAChC;AAUA,IAAM,OAAOA,OAAM,WAAsC,CAAC,OAAO,QAAQ;AACvE,QAA4F,YAApF,aAAW,GAAG,YAAY,YAAY,YAAY,UAAU,UAnBtE,IAmB8F,IAAV,kBAAU,IAAV,CAA1E,YAAc,cAAY,cAAY,cAAY,YAAU;AAEpE,QAAM,WAAW,YAAY,UAAU,QAAQ;AAC/C,QAAM,SAAS,YAAY,YAAY,UAAU;AACjD,QAAM,SAAS,YAAY,YAAY,UAAU;AACjD,QAAM,SAAS,YAAY,YAAY,UAAU;AAEjD,QAAM,gBAAgB,GAAG,UAAU,QAAQ,QAAQ,MAAM;AAEzD,SACE,gBAAAA,OAAA,cAAC,wBAAI,KAAU,WAAW,GAAG,QAAQ,eAAe,SAAS,KAAO,QACjE,QACH;AAEJ,CAAC;AAED,KAAK,cAAc;AAEnB,IAAO,eAAQ;;;AX5BR,IAAM,aAAa,CAAyB,UAA4B;AAT/E;AAUE,QAAM,EAAE,cAAc,eAAe,wBAAwB,SAAS,MAAM,IAAI;AAChF,QAAsE,mBAA9D,SAAO,aAAa,uBAX9B,IAWwE,IAAf,uBAAe,IAAf,CAA/C,SAAO,eAAa;AAC5B,QAAM,aAAa,aAAa,OAAO,YAAY,KAAK;AACxD,QAAM,YAAY,SAAS,SAAS,WAAW,MAAM;AAErD,YAAU,MAAM;AACd,QAAI,cAAc,SAAS;AACzB,cAAQ,UAAU;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAEf,SACE,gBAAAA,QAAA,cAAAA,QAAA,iBACG,sEAAwB,QAAxB,gDAA8B,aAC/B,gBAAAA,QAAA,cAAC,gBAAK,UAAU,oCAAe,GAAG,WAAU,WACzC,OAAO,KAAK,UAAU,EAAE,IAAI,CAAC,QAAQ;AAzB9C,QAAAU,KAAAK,KAAAC,KAAAC,KAAA;AA0BU,UAAM,SAAS,WAAW,GAAG;AAC7B,WACE,gBAAAjB,QAAA,cAAC,eAAI,aAAYU,MAAA,iCAAQ,YAAR,OAAAA,MAAmB,GAAG,KAAU,IAAI,QAAQ,GAAG,MAC9D,gBAAAV,QAAA,cAAC,QAAK,WAAW,GAAG,yDAAyD,UAAU,WAAW,iCAAQ,OAAO,KAC/G,gBAAAA,QAAA,cAAC,SAAI,WAAW,GAAG,8BAA8B,iCAAQ,WAAW,MAAI,iCAAQ,UAAS,GAAI,IAC5FgB,OAAAD,MAAA,iCAAQ,iBAAR,gBAAAA,IAAsB,QAAtB,gBAAAC,IAAA,KAAAD,KAA4B,KAAK,WAAW,GAAG,IAChD,gBAAAf,QAAA,cAAC,kBAAe,WAAW,WAAW,GAAG,MACtC,MAAAiB,MAAA,iCAAQ,iBAAR,gBAAAA,IAAsB,uBAAtB,wBAAAA,KAA2C,KAAK,WAAW,GAAG,KAC9D,iCAAQ,sBAAqB,gBAAAjB,QAAA,cAAC,gBAAa,SAAS,KAAK,WAAW,WAAW,GAAG,GAAG,aAAa,OAAO,mBAAmB,IAC5H,4CAAQ,iBAAR,mBAAsB,sBAAtB,4BAA0C,KAAK,WAAW,GAAG,EAChE,CACF,CACF;AAAA,EAEJ,CAAC,CACH,IACC,sEAAwB,uBAAxB,gDAA6C,cAC5C,kBAAiB,iEAAwB,mBACzC,gBAAAA,QAAA,cAAC,SAAI,WAAU,iBACb,gBAAAA,QAAA,cAAC,qBAAkB,YAAwB,UAAU,eAAe,aAAa,wBAAwB,CAC3G,IAED,sEAAwB,sBAAxB,gDAA4C,WAC/C;AAEJ;;;AYnDA,OAAOA,WAAS,aAAAkB,YAAW,YAAAjB,iBAAgB;AAC3C,SAAS,eAAAkB,cAAa,aAAAC,kBAAiB;AAMvC,IAAM,iBAAiB,CAAC,EAAE,SAAS,QAAQ,UAAU,MAAwD;AAP7G;AAQE,QAAM,CAAC,QAAQ,SAAS,IAAInB,UAAS,IAAI;AACzC,SACE,gBAAAD,QAAA,cAAC,SAAI,IAAI,QAAQ,OAAO,MACtB,gBAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,SAAS,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;AAAA;AAAA,IAElC,gBAAAA,QAAA,cAAC,SAAI,WAAW,GAAG,wDAAwD,iCAAQ,WAAW,MAAI,iCAAQ,UAAS,OAAQ;AAAA,IAC1H,SAAS,gBAAAA,QAAA,cAACoB,YAAA,EAAU,MAAM,IAAI,WAAU,sCAAqC,IAAK,gBAAApB,QAAA,cAACmB,cAAA,EAAY,MAAM,IAAI,WAAU,sCAAqC;AAAA,EAC3J,GACA,gBAAAnB,QAAA,cAAC,SAAI,WAAW,GAAG,QAAQ,SAAS,UAAU,QAAQ,MACnD,4CAAQ,iBAAR,mBAAsB,QAAtB,4BAA4B,SAAS,YACtC,gBAAAA,QAAA,cAAC,kBAAe,cACb,4CAAQ,iBAAR,mBAAsB,uBAAtB,4BAA2C,SAAS,aACpD,iCAAQ,sBAAqB,gBAAAA,QAAA,cAAC,gBAAa,SAAkB,WAAsB,aAAa,OAAO,mBAAmB,IAC1H,4CAAQ,iBAAR,mBAAsB,sBAAtB,4BAA0C,SAAS,UACtD,CACF,CACF;AAEJ;AAEO,IAAM,aAAa,CAAyB,UAA4B;AA9B/E;AA+BE,QAAM,EAAE,eAAe,CAAC,GAAG,eAAe,wBAAwB,SAAS,MAAM,IAAI;AACrF,QAAyD,mBAAjD,SAAO,uBAhCjB,IAgC2D,IAAf,uBAAe,IAAf,CAAlC,SAAO;AACf,QAAM,aAAa,aAAa,OAAO,YAAY,KAAK;AAExD,EAAAkB,WAAU,MAAM;AACd,QAAI,cAAc,SAAS;AACzB,cAAQ,UAAU;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAEf,SACE,gBAAAlB,QAAA,cAAAA,QAAA,iBACG,sEAAwB,QAAxB,gDAA8B,aAC9B,OAAO,KAAK,UAAU,EAAE,IAAI,CAAC,QAAQ;AACpC,WACE,gBAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,SAAS;AAAA,QACT,WAAW,WAAW,GAAG;AAAA,QACzB,QAAQ,WAAW,GAAG;AAAA;AAAA,IACxB;AAAA,EAEJ,CAAC,IACA,sEAAwB,uBAAxB,gDAA6C,cAC5C,kBAAiB,iEAAwB,mBACzC,gBAAAA,QAAA,cAAC,SAAI,WAAU,iBACb,gBAAAA,QAAA,cAAC,qBAAkB,YAAwB,UAAU,eAAe,aAAa,wBAAwB,CAC3G,IAED,sEAAwB,sBAAxB,gDAA4C,WAC/C;AAEJ;;;AC/DA,OAAOA,WAAS,aAAAkB,kBAAiB;AAK1B,IAAM,eAAe,CAAyB,UAA4B;AALjF;AAME,QAAM,EAAE,eAAe,CAAC,GAAG,eAAe,wBAAwB,SAAS,MAAM,IAAI;AACrF,QAAyD,mBAAjD,SAAO,uBAPjB,IAO2D,IAAf,uBAAe,IAAf,CAAlC,SAAO;AACf,QAAM,aAAa,aAAa,OAAO,YAAY,KAAK;AAExD,EAAAA,WAAU,MAAM;AACd,QAAI,cAAc,SAAS;AACzB,cAAQ,UAAU;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAEf,SACE,gBAAAlB,QAAA,cAAAA,QAAA,iBACG,sEAAwB,QAAxB,gDAA8B,aAC/B,gBAAAA,QAAA,cAAC,SAAI,WAAU,eACZ,OAAO,KAAK,UAAU,EAAE,IAAI,CAAC,QAAQ;AApB9C,QAAAU,KAAAK,KAAAC,KAAAC,KAAA;AAqBU,UAAM,SAAS,WAAW,GAAG;AAC7B,WACE,gBAAAjB,QAAA,cAAC,SAAI,KAAU,IAAI,QAAQ,GAAG,OAC3Be,OAAAL,MAAA,iCAAQ,iBAAR,gBAAAA,IAAsB,QAAtB,gBAAAK,IAAA,KAAAL,KAA4B,KAAK,WAAW,GAAG,IAChD,gBAAAV,QAAA,cAAC,kBAAe,WAAW,WAAW,GAAG,MACtCiB,OAAAD,MAAA,iCAAQ,iBAAR,gBAAAA,IAAsB,uBAAtB,gBAAAC,IAAA,KAAAD,KAA2C,KAAK,WAAW,GAAG,KAC9D,iCAAQ,sBAAqB,gBAAAhB,QAAA,cAAC,gBAAa,SAAS,KAAK,WAAW,WAAW,GAAG,GAAG,aAAa,OAAO,mBAAmB,IAC5H,4CAAQ,iBAAR,mBAAsB,sBAAtB,4BAA0C,KAAK,WAAW,GAAG,EAChE,CACF;AAAA,EAEJ,CAAC,CACH,IACC,sEAAwB,uBAAxB,gDAA6C,cAC5C,kBAAiB,iEAAwB,mBACzC,gBAAAA,QAAA,cAAC,SAAI,WAAU,iBACb,gBAAAA,QAAA,cAAC,qBAAkB,YAAwB,UAAU,eAAe,aAAa,wBAAwB,CAC3G,IAED,sEAAwB,sBAAxB,gDAA4C,WAC/C;AAEJ;;;AC3CA,OAAOA,WAAS,aAAAkB,YAAW,WAAAd,UAAS,YAAAH,iBAAgB;AACpD,SAAS,KAAK,YAAY;AAMnB,IAAM,YAAY,CAAyB,UAA4B;AAP9E;AAQE,QAAM,EAAE,eAAe,CAAC,GAAG,eAAe,wBAAwB,SAAS,MAAM,IAAI;AACrF,QAOI,mBANF;AAAA;AAAA,IACA,aAAa;AAAA,MACX,OAAO;AAAA,IACT;AAAA,IACA;AAAA,EAdJ,IAgBM,IADC,uBACD,IADC;AAAA,IALH;AAAA,IACA;AAAA,IAGA;AAAA;AAGF,QAAM,aAAaG,SAAQ,MAAM,aAAa,OAAO,YAAY,KAAK,GAAG,CAAC,MAAM,UAAU,MAAM,YAAY,MAAM,YAAY,CAAC;AAC/H,QAAM,WAAW,OAAO,KAAK,UAAU;AACvC,QAAM,CAAC,aAAa,cAAc,IAAIH,UAAS,SAAS,CAAC,KAAK,EAAE;AAEhE,EAAAiB,WAAU,MAAM;AACd,QAAI,cAAc,SAAS;AACzB,cAAQ,UAAU;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAEf,SACE,gBAAAlB,QAAA,cAAAA,QAAA,gBACE,gBAAAA,QAAA;AAAA,IAAC;AAAA,qCACK,aADL;AAAA,MAEC,aAAa;AAAA,MACb,mBAAmB,CAAC,QAAgB;AAClC,uBAAe,GAAG;AAAA,MACpB;AAAA;AAAA,IAEC,SAAS,IAAI,CAAC,QAAQ;AACrB,YAAM,SAAS,WAAW,GAAG;AAC7B,aAAO,gBAAAA,QAAA,cAAC,OAAI,IAAI,QAAQ,GAAG,aAAa,KAAU,OAAO,gBAAAA,QAAA,cAAC,SAAI,WAAW,iCAAQ,gBAAc,iCAAQ,UAAS,GAAI,GAAQ;AAAA,IAC9H,CAAC;AAAA,EACH,IACC,sEAAwB,QAAxB,gDAA8B,aAC9B,SAAS,IAAI,CAAC,QAAQ;AA1C7B,QAAAU,KAAAK,KAAAC,KAAAC,KAAA;AA2CQ,UAAM,SAAS,WAAW,GAAG;AAC7B,WACE,gBAAAjB,QAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,IAAI,QAAQ,GAAG;AAAA,QACf,WAAW,GAAG,QAAQ,gBAAgB,MAAM,KAAK,QAAQ;AAAA;AAAA,OAExDe,OAAAL,MAAA,iCAAQ,iBAAR,gBAAAA,IAAsB,QAAtB,gBAAAK,IAAA,KAAAL,KAA4B,KAAK,WAAW,GAAG;AAAA,MAChD,gBAAAV,QAAA,cAAC,kBAAe,WAAW,WAAW,GAAG,MACtCiB,OAAAD,MAAA,iCAAQ,iBAAR,gBAAAA,IAAsB,uBAAtB,gBAAAC,IAAA,KAAAD,KAA2C,KAAK,WAAW,GAAG,KAC9D,iCAAQ,sBAAqB,gBAAAhB,QAAA,cAAC,gBAAa,SAAS,KAAK,WAAW,WAAW,GAAG,GAAG,aAAa,OAAO,mBAAmB,IAC5H,4CAAQ,iBAAR,mBAAsB,sBAAtB,4BAA0C,KAAK,WAAW,GAAG,EAChE;AAAA,IACF;AAAA,EAEJ,CAAC,IACA,sEAAwB,uBAAxB,gDAA6C,cAC5C,kBAAiB,iEAAwB,mBACzC,gBAAAA,QAAA,cAAC,SAAI,WAAU,iBACb,gBAAAA,QAAA,cAAC,qBAAkB,YAAwB,UAAU,eAAe,aAAa,wBAAwB,CAC3G,IAED,sEAAwB,sBAAxB,gDAA4C,WAC/C;AAEJ;;;Af1DA,IAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAgGO,IAAM,WAAW,CAAyB,UAA4B;AA/G7E;AAgHE,QAAM,SAAO,WAAM,iBAAN,mBAAoB,UAAS;AAC1C,QAAM,OAAO,WAAW,IAAI;AAC5B,SACE,gBAAAA,QAAA,cAAC,SAAI,WAAW,MAAM,aACpB,gBAAAA,QAAA,cAAC,yBAAS,MAAO,CACnB;AAEJ;;;AgBvHA,OAAOA,WAAyB,WAAAI,UAAS,UAAAK,eAAc;AACvD,SAAiD,gBAAgB;AA8B1D,SAAS,eAAe,OAA4B;AA/B3D;AAgCE,QAAM,EAAE,UAAU,SAAS,OAAO,OAAO,UAAU,UAAU,SAAS,IAAI;AAC1E,QAAM;AAAA,IACJ;AAAA,IACA,mBAAmB;AAAA,MACjB,cAAc;AAAA,IAChB;AAAA,IACA,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP,UAAU;AAAA,IACV,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,EAAE,gBAAgB,UAAU,MAAM,IAAI;AAC5C,QAAM,eAAc,cAAS,YAAY,MAArB,mBAAwB;AAC5C,QAAM,iBAAiBA,QAAO,IAAI;AAClC,QAAM,aAAaL,SAAQ,MAAM;AAC/B,UAAM,aAAa,SAAS,SAAS,WAAW,aAAa;AAC7D,WAAO,kCACF,WAAW,aACX;AAAA,EAEP,GAAG,CAAC,OAAO,gBAAgB,CAAC;AAE5B,SACE,gBAAAJ,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,UAAU,SAAS;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,CAAC,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,MACxC,UAAU,MAAM;AACd,YAAI,eAAe,SAAS;AAC1B,yBAAe,UAAU;AACzB,iBAAO;AAAA,QACT;AACA,YAAI,UAAU,MAAM,UAAU;AAC5B,iBAAO,kBAAkB;AAAA,QAC3B;AACA,YAAI,UAAU;AACZ,gBAAM,SAAS,SAAS,KAAK;AAC7B,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA;AAAA,EACF;AAEJ;;;AC/FA,OAAOA,WAAS,aAAAkB,YAAW,WAAAd,UAAS,UAAAK,SAAQ,YAAAR,iBAAgB;AAC5D,SAAS,kBAAmC;AAE5C,SAAoB,4BAA4B;AAmCzC,SAAS,iBAAiB,EAAE,OAAO,SAAS,OAAO,UAAU,UAAU,UAAU,SAAS,GAA0B;AACzH,QAAM;AAAA,IACJ;AAAA,IACA,mBAAmB,EAAE,iBAAiB,YAAY;AAAA,IAClD;AAAA,IACA,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP,cAAc;AAAA,IACd,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,CAAC,MAAM,OAAO,IAAIA,UAAoB;AAC5C,QAAM,EAAE,gBAAgB,UAAU,MAAM,IAAI;AAC5C,QAAM,iBAAiBQ,QAAO,IAAI;AAClC,QAAM,iBAAiBL,SAAQ,MAAM;AACnC,UAAM,aAAa,SAAS,SAAS,WAAW,kBAAkB;AAClE,WAAO,kCACF,WAAW,sBACX;AAAA,EAEP,GAAG,CAAC,OAAO,mBAAmB,CAAC;AAE/B,EAAAc,WAAU,MAAM;AACd,QAAI,OAAO;AACT,UAAI;AACF,cAAM,SAAS,IAAI,KAAK,KAAK,EAAE,YAAY;AAC3C,cAAM,IAAI,qBAAqB,MAAM;AACrC,gBAAQ,CAAC;AAAA,MACX,SAAS,OAAO;AACd,gBAAQ,IAAI,SAAS,MAAM,OAAO;AAAA,MACpC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SACE,gBAAAlB,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,yBAAuB;AAAA,MACvB,WAAW,GAAG,UAAU,SAAS;AAAA,MACjC,YAAY;AAAA,MACZ,qBAAqB;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,aAAa,eAAe;AAAA,MAC5B,YAAY;AAAA,MACZ,UAAU,CAAC,cAAc;AACvB,YAAI,WAAW;AACb,gBAAM,IAAI,UAAU,OAAO,KAAK,EAAE,YAAY;AAC9C,mBAAS,CAAC;AAAA,QACZ;AAAA,MACF;AAAA,MACA,UAAU,MAAM;AACd,YAAI,eAAe,SAAS;AAC1B,yBAAe,UAAU;AACzB,iBAAO;AAAA,QACT;AACA,YAAI,UAAU,MAAM,UAAU;AAC5B,iBAAO,kBAAkB;AAAA,QAC3B;AACA,YAAI,UAAU;AACZ,gBAAM,SAAS,SAAS,KAAK;AAC7B,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA;AAAA,EACF;AAEJ;;;AChHA,SAAS,OAAO,WAAW,cAAc,mBAAmB;AAC5D,SAAS,YAAAqB,WAAU,0BAA0B;AAE7C,OAAO,eAAe;AAEtB,SAAS,aAAAH,YAAW,WAAAd,gBAAe;AAGnC,OAAOJ,aAAW;AAElB,IAAM,gBAAgBqB,UAAS,MAAM;AACnC,QAAM,YAAY,SAAS;AAC3B,QAAM,mBAAmB,UAAU,IAAI,qBAAqB;AAC5D,QAAM,EAAE,UAAU,OAAO,IAAI;AAC7B,QAAM,QAAQ,mBAAmB,OAAO;AAAA,IACtC,UAAU;AAAA,EACZ,EAAE;AAEF,EAAAH,WAAU,MAAM;AACd,UAAM,eAAe,MAAM;AACzB,YAAM,WAAW,OAAO,aAAa;AAAA,IACvC;AACA,iBAAa;AACb,WAAO,iBAAiB,UAAU,YAAY;AAC9C,WAAO,MAAM;AACX,aAAO,oBAAoB,UAAU,YAAY;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,WAAW,MAAM;AAEvB,QAAM,YAAYd,SAAQ,MAAM;AAC9B,QAAI,CAAC,UAAU;AACb,aAAO;AAAA,IACT;AAEA,UAAM,eAAe,mBAAK,iBAAiB;AAC3C,QAAI,YAAY,aAAa,UAAU,cAAc;AACnD,mBAAa,cAAc;AAC3B,aAAO,KAAK,YAAY,EAAE,QAAQ,CAAC,QAAQ;AACzC,YAAI,OAAO,aAAa,GAAG,MAAM,UAAU;AAEzC,uBAAa,GAAG,EAAE,UAAU;AAAA,QAC9B;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WACE,gBAAAJ,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,iBAAiB;AAAA,QAC5B,YAAY,iBAAiB;AAAA,QAC7B,gBAAgB,iBAAiB;AAAA,QACjC,eAAe,iBAAiB;AAAA,QAChC;AAAA,QACA,MAAM,iBAAiB;AAAA,QACvB,cAAc,CAAC,SAAkB;AAC/B,cAAI,CAAC,MAAM;AACT,6BAAiB,MAAM,KAAK,OAAO;AAAA,UACrC;AAAA,QACF;AAAA;AAAA,MAEA,gBAAAA,QAAA,cAAC,SAAI,WAAU,+CACb,gBAAAA,QAAA,cAAC,aAAU,QAAO,uBAChB,gBAAAA,QAAA,cAAC,oBACE,iBAAiB,SAAS,gBAAAA,QAAA,cAAC,eAAY,WAAU,sDAAoD,iBAAiB,KAAM,GAC7H,gBAAAA,QAAA,cAAC,aAAU,WAAW,GAAG,4BAA4B,KACnD,gBAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,iBAAiB;AAAA,UACxB;AAAA,UACA,YAAY,iBAAiB;AAAA,UAC7B;AAAA,UACA,eAAe,iBAAiB,gBAC5B,iBAAiB,gBACjB,CAAC,SAAS;AACV,6BAAiB,MAAM,KAAK,eAAe,IAAI;AAAA,UACjD;AAAA,UAEF,OAAO,iBAAiB;AAAA,UACxB,UAAU,iBAAiB;AAAA,UAC3B,SAAS,iBAAiB;AAAA,UAC1B,wBAAwB,iBAAiB;AAAA;AAAA,MAC3C,CACF,CACF,CACF,CACF;AAAA,IACF;AAAA,EAEJ,GAAG,CAAC,QAAQ,UAAU,QAAQ,CAAC;AAE/B,SAAO;AACT,CAAC;AAED,IAAO,mBAAQ;;;AC1Ff,OAAO,kBAAkB;AAGzB,SAAS,0BAA0B;AAEnC,OAAOA,aAAyC;AAIzC,IAAM,wBAAN,MAAqE;AAAA,EAsB1E,YAAY,MAA0C;AArBtD,eAAM;AACN,oBAAW,MAAM,gBAAAA,QAAA,cAAC,sBAAS;AAE3B,kBAAS;AACT,iBAAQ;AAIR,qBAAY;AAEZ,iBAAmB;AACnB,qBAAuF;AACvF,0BAAmD;AACnD,yBAAgB;AAChB,iBAAQ,IAAI,aAAa;AAQvB,UAAM,aAAa,UAAS,6BAAM,UAAS,WAAW,OAAO;AAC7D,UAAM,aAAa,kCACd,WAAW,aACX,6BAAM;AAEX,WAAO,OAAO,MAAM,MAAM,EAAE,WAAW,CAAC;AACxC,uBAAmB,IAAI;AAAA,EACzB;AAAA,EAEA,QAAQ,GAAsC;AAC5C,WAAO,OAAO,MAAM,CAAC;AAAA,EACvB;AAAA,EAEA,QAAQ;AACN,SAAK,SAAS;AACd,SAAK,QAAQ;AACb,SAAK,WAAW;AAChB,SAAK,aAAa;AAClB,SAAK,eAAe;AACpB,SAAK,YAAY;AACjB,SAAK,iBAAiB;AACtB,SAAK,gBAAgB;AACrB,SAAK,gBAAgB;AACrB,SAAK,QAAQ;AACb,SAAK,WAAW;AAChB,SAAK,UAAU;AACf,SAAK,MAAM,mBAAmB;AAAA,EAChC;AACF;AAEA,eAAsB,mBAA2C,GAAsC;AACrG,SAAO,IAAI,QAAW,CAAC,SAAS,WAAW;AACzC,UAAM,aAAa,UAAS,uBAAG,UAAS,WAAW,OAAO;AAC1D,UAAM,aAAa,kCACd,WAAW,aACX,uBAAG;AAER,UAAM,mBAAmB,UAAU,IAAI,qBAAqB;AAE5D,qBAAiB,QAAQ,iCACpB,IADoB;AAAA,MAEvB;AAAA,MACA,QAAQ;AAAA,IACV,EAAC;AACD,qBAAiB,MAAM,GAAG,eAAe,CAAC,aAAgB;AACxD,UAAI,iBAAiB,eAAe;AAClC,yBAAiB,cAAc,QAAQ;AAAA,MACzC,OAAO;AACL,yBAAiB,MAAM;AACvB,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IACF,CAAC;AACD,qBAAiB,MAAM,GAAG,SAAS,MAAM;AACvC,uBAAiB,MAAM;AACvB,aAAO,OAAO;AAAA,IAChB,CAAC;AAAA,EACH,CAAC;AACH;;;AC5FA,OAAOsB,mBAAkB;AACzB,OAAOtB,aAAW;AAElB,SAAS,sBAAAuB,2BAA0B;;;ACHnC,SAAS,SAAAC,QAAO,aAAAC,YAAW,gBAAAC,eAAc,eAAAC,oBAAmB;AAC5D,SAAS,YAAAN,iBAAgB;AAGzB,OAAOO,gBAAe;AAEtB,OAAO5B,aAAW;AAElB,IAAM,gBAAgBqB,UAAS,MAAM;AACnC,QAAM,YAAY,SAAS;AAC3B,QAAM,YAAY,UAAU,IAAI,cAAc;AAC9C,QAAM,EAAE,MAAM,oBAAoB,IAAI;AACtC,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AACA,SACE,gBAAArB,QAAA;AAAA,IAACwB;AAAA,IAAA;AAAA,MACC,WAAW,UAAU;AAAA,MACrB,YAAY,UAAU;AAAA,MACtB,gBAAgB,UAAU;AAAA,MAC1B,QAAQ,UAAU;AAAA,MAClB,MAAM,UAAU;AAAA,MAChB,eAAe,CAAC;AAAA,MAChB,cAAc,CAAC,SAAkB;AAC/B,YAAI,CAAC,MAAM;AACT,oBAAU,MAAM,KAAK,OAAO;AAAA,QAC9B;AAAA,MACF;AAAA;AAAA,IAEA,gBAAAxB,QAAA,cAAC,SAAI,WAAU,gFACb,gBAAAA,QAAA,cAAC4B,YAAA,EAAU,QAAO,uBAChB,gBAAA5B,QAAA,cAAC0B,eAAA,MACE,UAAU,SAAS,gBAAA1B,QAAA,cAAC2B,cAAA,EAAY,WAAU,sDAAoD,UAAU,KAAM,GAC/G,gBAAA3B,QAAA,cAACyB,YAAA,EAAU,WAAU,gCACnB,gBAAAzB,QAAA,cAAC,kBAAe,WAAW,MAAM,CACnC,CACF,CACF,CACF;AAAA,EACF;AAEJ,CAAC;AAED,IAAO6B,oBAAQ;;;ADzBR,IAAM,iBAAN,MAAkE;AAAA,EAgBvE,YAAY,MAAgC;AAf5C,eAAM;AACN,oBAAW,MAAM,gBAAA7B,QAAA,cAAC6B,mBAAA,IAAS;AAE3B,kBAAS;AACT,iBAAQ;AACR,gBAA+B;AAC/B,qBAAoB;AAEpB,iBAAmB;AACnB,qBAAuF;AACvF,0BAAmD;AACnD,+BAAsB;AACtB,iBAAQ,IAAIP,cAAa;AAIvB,UAAM,aAAa,UAAS,6BAAM,UAAS,WAAW,OAAO;AAC7D,UAAM,aAAa,kCACd,WAAW,aACX,6BAAM;AAEX,WAAO,OAAO,MAAM,MAAM,EAAE,WAAW,CAAC;AACxC,IAAAC,oBAAmB,IAAI;AAAA,EACzB;AAAA,EAEA,QAAQ,GAA4B;AAClC,WAAO,OAAO,MAAM,CAAC;AAAA,EACvB;AAAA,EAEA,QAAQ;AACN,SAAK,SAAS;AACd,SAAK,QAAQ;AACb,SAAK,OAAO;AACZ,SAAK,YAAY;AACjB,SAAK,iBAAiB;AACtB,SAAK,sBAAsB;AAC3B,SAAK,gBAAgB;AACrB,SAAK,MAAM,mBAAmB;AAAA,EAChC;AACF;AAEA,eAAsB,YAAwC,GAA4B;AACxF,SAAO,IAAI,QAAW,CAAC,SAAS,WAAW;AACzC,UAAM,aAAa,UAAS,uBAAG,UAAS,WAAW,OAAO;AAC1D,UAAM,aAAa,kCACd,WAAW,aACX,uBAAG;AAER,UAAM,YAAY,UAAU,IAAI,cAAc;AAC9C,cAAU,QAAQ,iCACb,IADa;AAAA,MAEhB;AAAA,MACA,QAAQ;AAAA,IACV,EAAC;AACD,cAAU,MAAM,GAAG,eAAe,CAAC,aAAgB;AACjD,UAAI,UAAU,eAAe;AAC3B,kBAAU,cAAc,QAAQ;AAAA,MAClC,OAAO;AACL,kBAAU,MAAM;AAChB,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IACF,CAAC;AACD,cAAU,MAAM,GAAG,SAAS,MAAM;AAChC,gBAAU,MAAM;AAChB,aAAO,OAAO;AAAA,IAChB,CAAC;AAAA,EACH,CAAC;AACH;AAEO,SAASO,cACd;AAAA,EACE;AAAA,EACA,WAAW,CAAC;AAAA,EACZ,QAAQ,CAAC,GAAM,SAAS;AAAA,EACxB;AAAA,EACA,QAAQ;AACV,GAOkC;AAClC,QAAM,QAAQ,CAAC;AACf,QAAM,WAAW,CAAC;AAClB,QAAM,QAAQ,OAAO,QAAQ,IAAI,EAAE,OAAO,CAAC,GAAG,MAAM;AAzGtD;AA0GI,UAAM,CAAC,GAAG,CAAC,IAAI;AAEf,UAAM,OAAO,OAAO;AACpB,MAAE,CAAC,IAAI;AAAA,MACL;AAAA,IACF;AAEA,UAAM,CAAC,IAAI;AAEX,QAAI,CAAC,SAAS,CAAC,GAAG;AAChB,eAAS,CAAC,IAAI,CAAC;AAAA,IACjB;AAEA,QAAI,SAAS,YAAY,SAAS,UAAU;AAC1C,WAAI,cAAS,CAAC,MAAV,mBAAa,eAAe;AAC9B,iBAAS,CAAC,EAAE,WAAW,IAAI;AAC3B,UAAE,CAAC,EAAE,gBAAgB,SAAS,CAAC,EAAE;AAAA,MACnC,OAAO;AACL,YAAI,CAAC,SAAS,CAAC,EAAE,WAAW,GAAG;AAC7B,mBAAS,CAAC,EAAE,WAAW,IAAI;AAE3B,cAAI,SAAS,UAAU;AACrB,cAAE,CAAC,EAAE,YAAY;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QAAI,SAAS,WAAW;AACtB,eAAS,CAAC,EAAE,WAAW,IAAI;AAC3B,eAAS,CAAC,EAAE,YAAY,IAAI;AAAA,QAC1B,MAAM;AAAA,MACR;AAAA,IACF;AAEA,QAAI,SAAS,UAAU;AAErB,QAAE,CAAC,EAAE,OAAO;AACZ,YAAM,CAAC,IAAI,KAAK,UAAU,GAAG,MAAM,CAAC;AACpC,eAAS,CAAC,EAAE,WAAW,IAAI;AAAA,IAC7B;AAEA,SAAI,cAAS,CAAC,MAAV,mBAAa,WAAW;AAC1B,QAAE,CAAC,EAAE,YAAY,SAAS,CAAC,EAAE;AAC7B,aAAO,SAAS,CAAC,EAAE;AAAA,IACrB;AACA,SAAI,cAAS,CAAC,MAAV,mBAAa,OAAO;AACtB,QAAE,CAAC,EAAE,QAAQ,SAAS,CAAC,EAAE,SAAS;AAClC,aAAO,SAAS,CAAC,EAAE;AAAA,IACrB;AACA,SAAI,cAAS,CAAC,MAAV,mBAAa,aAAa;AAC5B,QAAE,CAAC,EAAE,cAAc,SAAS,CAAC,EAAE;AAC/B,aAAO,SAAS,CAAC,EAAE;AAAA,IACrB;AAEA,SAAI,cAAS,CAAC,MAAV,mBAAa,UAAU;AACzB,eAAS,KAAK,CAAC;AACf,aAAO,SAAS,CAAC,EAAE;AAAA,IACrB;AAEA,aAAS,CAAC,EAAE,OAAO,IAAI;AACvB,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACL,QAAM,SAAS;AAAA,IACb,MAAM;AAAA,IACN,YAAY;AAAA,IACZ;AAAA,EACF;AACA,QAAM,OAAO,IAAI,oBAAoB;AAAA;AAAA,IAEnC;AAAA,IACA,UAAU;AAAA,MACR,0BAA0B;AAAA,QACxB,UAAU;AAAA,QACV,YAAY;AAAA,MACd;AAAA,OACG;AAAA,IAEL,YAAY,GAAG;AACb,UAAI,UAAU;AACZ,iBAAS,EAAE,QAAa;AAAA,MAC1B,OAAO;AACL,cAAM,YAAY,UAAU,IAAI,cAAc;AAC9C,kBAAU,MAAM,KAAK,eAAe,EAAE,QAAQ;AAAA,MAChD;AAAA,IACF;AAAA,IACA,OAAO,IAAI,gBAAgB;AAAA,MACzB,SAAS;AAAA,MACT,OAAO,CAAC,MAAS,MAAM,GAAG,IAAI;AAAA,IAChC,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;AAEA,eAAsB,kBACpB,MACA,WAAuE,CAAC,GACxE,QACA,QAAQ,CAAC,GAAM,SAA2C;AACxD,SAAO;AACT,GACA,QAAmB,WACnB;AACA,QAAM,OAAOA,cAAa,EAAE,MAAM,UAAU,OAAO,MAAM,CAAC;AAC1D,SAAO,YAAe,iCACjB,SADiB;AAAA;AAAA,IAGpB;AAAA,EACF,EAAC;AACH","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, { JSX, 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, { JSX, 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, { JSX, 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, { JSX, 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, { JSX, 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","// @ts-nocheck\nimport 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/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/JSONForm/Layouts/format.tsx","../components/JSONSchemaForm/index.tsx","../components/ui/grid/styles.tsx","../components/ui/grid/col.tsx","../components/ui/grid/grid.tsx","../components/JSONForm/Layouts/gridLayout.tsx","../components/JSONForm/Layouts/listLayout.tsx","../components/JSONForm/Layouts/simpleLayout.tsx","../components/JSONForm/Layouts/tabLayout.tsx","../components/JSONForm/index.tsx","../components/JSONFormWidgets/TextareaWidget/index.tsx","../components/JSONFormWidgets/DatePickerWidget/index.tsx","../module/ComplexFormModal/Provider.tsx","../module/ComplexFormModal/index.tsx","../module/FormModal/Provider.tsx","../module/FormModal/index.tsx"],"names":["React","errMsg","useMemo","useState","value","useCallback","Select","SelectItem","useRef","_a","formData","Button","SubmitButton","toJS","numColSpan","_b","_c","_d","ChevronUp","ChevronDown","useEffect","observer","Modal","Draggable","ModalContent","ModalHeader","ModalBody","Provider_default","EventEmitter","makeAutoObservable","getFormState"],"mappings":"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","file":"form.mjs","sourcesContent":["import React, { JSX, 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, { JSX, 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, { JSX, 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, { JSX, 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 { 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, { 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, properties, uiSchema: { layout } }: ObjectFieldTemplateProps & { idSchema: { $id: string } }) => {\n const { $id } = idSchema;\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","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 { 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","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 } 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, { 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, { 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, { JSX, 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","// @ts-nocheck\nimport 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 { 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","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"]}
|