@flow97/antd-schema 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/package.json +2 -2
- package/lib/index.js.map +0 -1
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flow97/antd-schema",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"react-error-boundary": "^4.1.2",
|
|
45
45
|
"zod": "^3.23.8",
|
|
46
46
|
"zustand": "^5.0.1",
|
|
47
|
-
"@flow97/react-toolkit": "^0.0.
|
|
47
|
+
"@flow97/react-toolkit": "^0.0.4"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/jmespath": "^0.15.2",
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/renderer-registry.ts","../src/core/render-helpers.tsx","../src/libs/useKy.ts","../src/schemas/base.ts","../src/schemas/button.ts","../src/schemas/card.ts","../src/schemas/form-item.ts","../src/schemas/date-picker.ts","../src/schemas/date-range.ts","../src/schemas/descriptions.ts","../src/schemas/div.ts","../src/schemas/flex.ts","../src/schemas/form.ts","../src/schemas/table.ts","../src/schemas/infinite-list.ts","../src/schemas/input-number.ts","../src/schemas/input-text.ts","../src/schemas/link.ts","../src/schemas/query-list.tsx","../src/schemas/select.ts","../src/schemas/service.ts","../src/schemas/span.ts","../src/schemas/viewport.ts","../src/schemas/index.ts","../src/stores/index.ts","../src/constants/index.ts","../src/utils/index.tsx","../src/renderers/base.tsx","../src/renderers/button.tsx","../src/renderers/card.tsx","../src/components/UnixDatePicker.tsx","../src/components/UnixRangePicker.tsx","../src/renderers/form-item.tsx","../src/renderers/date-picker.tsx","../src/renderers/date-range.tsx","../src/renderers/desciptions.tsx","../src/renderers/div.tsx","../src/renderers/flex.tsx","../src/renderers/form.tsx","../src/renderers/infinite-list.tsx","../src/renderers/input-number.tsx","../src/renderers/input-text.tsx","../src/renderers/link.tsx","../src/renderers/query-list.tsx","../src/renderers/select.tsx","../src/renderers/service.tsx","../src/renderers/span.tsx","../src/renderers/table.tsx","../src/renderers/viewport.tsx","../src/schema-renderer.tsx","../src/index.tsx"],"names":["request","z","formItemSchema","jsx","useState","search","dayjs","DatePicker","useEffect","Form","useRef","isPlainObject","Typography","merge"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAQO,IAAM,gBAAA,uBAAuB,GAAA,EAAoC;AAOjE,SAAS,gBAAA,CAAiB,MAAkB,SAAA,EAA+B;AAChF,EAAA,gBAAA,CAAiB,GAAA,CAAI,MAAM,SAAS,CAAA;AACtC;AAOO,SAAS,YAAY,IAAA,EAAkD;AAC5E,EAAA,OAAO,gBAAA,CAAiB,IAAI,IAAI,CAAA;AAClC;ACjBO,SAAS,WAAA,CAAoD,OAAa,MAAA,EAAY;AAC3F,EAAA,OAAO,KAAA,EAAO,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AACjC,IAAA,MAAM,EAAE,MAAK,GAAI,IAAA;AACjB,IAAA,MAAM,iBAAA,GAAoB,YAAY,IAAkB,CAAA;AAExD,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,uBAAO,GAAA,CAAC,qBAAkB,IAAA,EAAM,IAAA,EAAM,UAAqB,CAAA,EAAG,IAAI,CAAA,EAAG,KAAK,CAAA,CAAI,CAAA;AAAA,IAChF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAC,CAAA;AACH;ACPO,IAAM,iBAAA,GAAN,cAAgC,KAAA,CAAM;AAAA,EAI3C,WAAA,CAAY,OAAA,EAAiB,QAAA,EAAqB,IAAA,EAAgB;AAChE,IAAA,KAAA,CAAM,OAAO,CAAA;AAJf,IAAA,aAAA,CAAA,IAAA,EAAA,UAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAIE,IAAA,IAAA,CAAK,IAAA,GAAO,mBAAA;AACZ,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,EACd;AACF,CAAA;AAGA,IAAM,qBAAA,GAA2D;AAAA,EAC/D,IAAA,EAAM,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA;AAAA,EAChB,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA;AAAA,EAClB,KAAA,EAAO,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG;AACnB,CAAA;AAGA,IAAM,oBAAA,GAAuB,CAAC,KAAA,EAAO,SAAA,EAAW,OAAO,CAAA;AAGvD,IAAM,WAAA,GAAc;AAAA,EAClB,EAAA,EAAI,GAAA;AAAA,EACJ,YAAA,EAAc,GAAA;AAAA,EACd,SAAA,EAAW,GAAA;AAAA,EACX,YAAA,EAAc;AAChB,CAAA;AAGA,IAAM,eAAA,GAAkB,GAAA;AA0BxB,SAAS,iBAAA,CAAkB,MAAe,MAAA,EAAyB;AACjE,EAAA,IAAI,MAAA,GAAS,WAAA,CAAY,EAAA,IAAM,MAAA,IAAU,KAAK,OAAO,KAAA;AACrD,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,IAAA,KAAS,UAAU,OAAO,IAAA;AAE9C,EAAA,MAAM,OAAA,GAAU,IAAA;AAChB,EAAA,MAAM,eAAA,GAAkB,MAAA,CAAO,IAAA,CAAK,qBAAqB,CAAA,CAAE,IAAA;AAAA,IACzD,WAAS,OAAA,CAAQ,KAAK,MAAM,MAAA,IAAa,OAAA,CAAQ,KAAK,CAAA,KAAM;AAAA,GAC9D;AAEA,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,OAAO,MAAA,CAAO,QAAQ,qBAAqB,CAAA,CAAE,MAAM,CAAC,CAAC,KAAA,EAAO,YAAY,CAAA,KAAM;AAC5E,MAAA,MAAM,KAAA,GAAQ,QAAQ,KAAK,CAAA;AAC3B,MAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM,OAAO,IAAA;AAClD,MAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,YAAA,CAAa,SAAS,KAAK,CAAA;AAAA,IACjE,CAAC,CAAA;AAAA,EACH;AACA,EAAA,OAAO,IAAA;AACT;AAGA,SAAS,oBAAoB,IAAA,EAAuB;AAClD,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,IAAA,KAAS,UAAU,OAAO,eAAA;AAC9C,EAAA,KAAA,MAAW,SAAS,oBAAA,EAAsB;AACxC,IAAA,MAAM,KAAA,GAAS,KAAiC,KAAK,CAAA;AACrD,IAAA,IAAI,KAAA,EAAO,OAAO,MAAA,CAAO,KAAK,CAAA;AAAA,EAChC;AACA,EAAA,OAAO,eAAA;AACT;AAGA,eAAe,eAAA,CAAgB,UAAoB,YAAA,EAA+C;AAChG,EAAA,QAAQ,YAAA;AAAc,IACpB,KAAK,MAAA;AACH,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,KAAK,aAAA;AACH,MAAA,OAAO,SAAS,WAAA,EAAY;AAAA,IAC9B,KAAK,UAAA;AACH,MAAA,OAAO,SAAS,QAAA,EAAS;AAAA,IAC3B,KAAK,MAAA;AACH,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB;AACE,MAAA,OAAO,QAAA;AAAA;AAEb;AAmBO,SAAS,MAAM,OAAA,EAA+C;AACnE,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI,GAAA,CAAI,MAAA,EAAO;AACpC,EAAA,MAAM,WAAW,WAAA,EAAY;AAC7B,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO,EAAE,KAAA,EAAO,UAAA,EAAW;AAAA,IAC3B,OAAA,EAAS,EAAE,UAAA,EAAY,SAAA,EAAU;AAAA,IACjC,IAAA,EAAM,EAAE,KAAA;AAAM,MACZ,eAAA,EAAgB;AAGpB,EAAA,MAAM,iBAAA,GAAuC,CAACA,QAAAA,EAAS,IAAA,KAAS;AAC9D,IAAA,IAAI,KAAA,EAAO;AACT,MAAAA,SAAQ,OAAA,CAAQ,GAAA,CAAI,eAAA,EAAiB,CAAA,OAAA,EAAU,KAAK,CAAA,CAAE,CAAA;AAAA,IACxD;AACA,IAAA,MAAM,MAAM,IAAA,CAAK,OAAA;AACjB,IAAA,MAAM,aAAA,GAAgB,GAAA,EAAK,YAAA,IAAgB,CAAC,KAAA;AAC5C,IAAA,IAAI,CAACA,QAAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,aAAa,CAAA,EAAG;AACvC,MAAAA,QAAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,aAAA,EAAe,aAAA,GAAgB,WAAW,kBAAA,CAAmB,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA;AAAA,IACjG;AAAA,EACF,CAAA;AAGA,EAAA,MAAM,eAAA,GAAmC,OAAO,KAAA,KAAqB;AACnE,IAAA,IAAI,CAAC,MAAM,QAAA,EAAU;AACnB,MAAA,YAAA,CAAa,KAAA,CAAM,EAAE,OAAA,EAAS,eAAA,EAAiB,aAAa,KAAA,CAAM,OAAA,IAAW,0BAA0B,CAAA;AACvG,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,KAAA,CAAM,QAAA;AACzB,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI;AACF,MAAA,MAAM,cAAc,KAAA,CAAM,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,IAAK,EAAA;AAClE,MAAA,IAAI,YAAY,QAAA,CAAS,kBAAkB,KAAK,WAAA,CAAY,UAAA,CAAW,OAAO,CAAA,EAAG;AAC/E,QAAA,IAAA,GAAO,MAAM,KAAA,CAAM,QAAA,CAAS,KAAA,GAAQ,IAAA,EAAK;AAAA,MAC3C;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAER;AAEA,IAAA,MAAM,YAAA,GAAe,oBAAoB,IAAI,CAAA;AAE7C,IAAA,QAAQ,MAAA;AAAQ,MACd,KAAK,WAAA,CAAY,YAAA;AACf,QAAA,UAAA,EAAW;AACX,QAAA,SAAA,IAAa,QAAA,CAAS,SAAA,EAAW,EAAE,OAAA,EAAS,MAAM,CAAA;AAClD,QAAA;AAAA,MACF,KAAK,WAAA,CAAY,YAAA;AACf,QAAA,UAAA,EAAW;AACX,QAAA,SAAA,IAAa,SAAS,CAAA,EAAG,SAAS,sBAAsB,EAAE,OAAA,EAAS,MAAM,CAAA;AACzE,QAAA;AAAA,MACF,KAAK,WAAA,CAAY,SAAA;AACf,QAAA,YAAA,CAAa,MAAM,EAAE,OAAA,EAAS,gCAAA,EAAS,WAAA,EAAa,sEAAe,CAAA;AACnE,QAAA;AAAA,MACF;AACE,QAAA,YAAA,CAAa,MAAM,EAAE,OAAA,EAAS,gBAAA,EAAkB,WAAA,EAAa,cAAc,CAAA;AAAA;AAE/E,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAGA,EAAA,MAAM,iBAAA,GAAuC,OAAO,QAAA,EAAU,QAAA,EAAU,QAAA,KAAa;AACnF,IAAA,MAAM,WAAA,GAAc,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,IAAK,EAAA;AAC5D,IAAA,IAAI,CAAC,WAAA,CAAY,QAAA,CAAS,kBAAkB,GAAG,OAAO,QAAA;AAEtD,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI;AACF,MAAA,IAAA,GAAO,MAAM,QAAA,CAAS,KAAA,EAAM,CAAE,IAAA,EAAK;AAAA,IACrC,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,QAAA;AAAA,IACT;AAEA,IAAA,IAAI,iBAAA,CAAkB,IAAA,EAAM,QAAA,CAAS,MAAM,CAAA,EAAG;AAC5C,MAAA,OAAO,IAAI,QAAA,CAAS,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,EAAG;AAAA,QACxC,QAAQ,QAAA,CAAS,MAAA;AAAA,QACjB,YAAY,QAAA,CAAS,UAAA;AAAA,QACrB,SAAS,QAAA,CAAS;AAAA,OACnB,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,YAAA,GAAe,oBAAoB,IAAI,CAAA;AAC7C,IAAA,YAAA,CAAa,MAAM,EAAE,OAAA,EAAS,gBAAA,EAAkB,WAAA,EAAa,cAAc,CAAA;AAC3E,IAAA,MAAM,IAAI,iBAAA,CAAkB,YAAA,EAAc,QAAA,EAAU,IAAI,CAAA;AAAA,EAC1D,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,GAAG,MAAA,CAAO;AAAA,IACzB,SAAA,EAAW,UAAA;AAAA,IACX,KAAA,EAAO,CAAA;AAAA,IACP,OAAA,EAAS,eAAA;AAAA,IACT,GAAG,OAAA;AAAA,IACH,KAAA,EAAO;AAAA,MACL,aAAA,EAAe,CAAC,iBAAiB,CAAA;AAAA,MACjC,WAAA,EAAa,CAAC,eAAe,CAAA;AAAA,MAC7B,aAAA,EAAe,CAAC,iBAAiB;AAAA;AACnC,GACD,CAAA;AAGD,EAAA,MAAM,OAAA,GAAU,OAAU,MAAA,EAAgB,GAAA,EAAa,MAAgB,IAAA,KAAsC;AAC3G,IAAA,MAAM,EAAE,YAAA,GAAe,MAAA,EAAQ,YAAA,EAAc,aAAA,EAAe,SAAS,GAAG,UAAA,EAAW,GAAI,IAAA,IAAQ,EAAC;AAEhG,IAAA,MAAM,YAAA,GAAwC;AAAA,MAC5C,GAAG,OAAA;AAAA,MACH,YAAA;AAAA,MACA,GAAI,aAAA,KAAkB,MAAA,IAAa,EAAE,cAAc,aAAA;AAAc,KACnE;AAEA,IAAA,MAAM,YAAA,GAAkE;AAAA,MACtE,GAAG,UAAA;AAAA,MACH,OAAA,EAAS;AAAA,KACX;AAEA,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,IACE,IAAA,YAAgB,QAAA,IAChB,IAAA,YAAgB,eAAA,IAChB,gBAAgB,IAAA,IAChB,OAAO,IAAA,KAAS,QAAA,IAChB,IAAA,YAAgB,WAAA,IAChB,WAAA,CAAY,MAAA,CAAO,IAAI,CAAA,EACvB;AACA,QAAA,YAAA,CAAa,IAAA,GAAO,IAAA;AAAA,MACtB,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,IAAA,GAAO,IAAA;AAAA,MACtB;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,GAAW,MAAM,QAAA,CAAS,GAAA,EAAK,EAAE,MAAA,EAAQ,GAAG,cAAc,CAAA;AAChE,IAAA,OAAO,eAAA,CAAgB,UAAU,YAAY,CAAA;AAAA,EAC/C,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,CAAc,GAAA,EAAa,IAAA,KAA0B,QAAW,KAAA,EAAO,GAAA,EAAK,QAAW,IAAI,CAAA;AAAA,IAChG,IAAA,EAAM,CAAc,GAAA,EAAa,IAAA,EAAgB,SAA0B,OAAA,CAAW,MAAA,EAAQ,GAAA,EAAK,IAAA,EAAM,IAAI,CAAA;AAAA,IAC7G,GAAA,EAAK,CAAc,GAAA,EAAa,IAAA,EAAgB,SAA0B,OAAA,CAAW,KAAA,EAAO,GAAA,EAAK,IAAA,EAAM,IAAI,CAAA;AAAA,IAC3G,MAAA,EAAQ,CAAc,GAAA,EAAa,IAAA,KAA0B,QAAW,QAAA,EAAU,GAAA,EAAK,QAAW,IAAI,CAAA;AAAA,IACtG,KAAA,EAAO,CAAc,GAAA,EAAa,IAAA,EAAgB,SAA0B,OAAA,CAAW,OAAA,EAAS,GAAA,EAAK,IAAA,EAAM,IAAI,CAAA;AAAA,IAC/G,OAAA,EAAS,CAAc,IAAA,KAA4D;AACjF,MAAA,MAAM,EAAE,GAAA,EAAK,MAAA,GAAS,KAAA,EAAO,GAAG,MAAK,GAAI,IAAA;AACzC,MAAA,OAAO,OAAA,CAAW,MAAA,EAAQ,GAAA,EAAK,MAAA,EAAW,IAAI,CAAA;AAAA,IAChD,CAAA;AAAA,IACA;AAAA,GACF;AACF;AChRO,IAAM,UAAA,GAAa,EAAE,MAAA,CAAO;AAAA,EACjC,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,SAAS,0BAAM,CAAA;AAAA,EAChC,OAAA,EAAS,CAAA,CACN,MAAA,EAAO,CACP,UAAS,CACT,QAAA;AAAA,IACC;AAAA,GACF;AAAA,EACF,YAAY,CAAA,CACT,MAAA,GACA,QAAA,EAAS,CACT,SAAS,0MAA+C;AAC7D,CAAC;ACVM,IAAM,YAAA,GAAe,WACzB,MAAA,CAAO;AAAA,EACN,IAAA,EAAMC,CAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACxB,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAAM,CAAA;AAAA,EAC3C,UAAA,EAAYA,CAAAA,CACT,IAAA,CAAK,CAAC,WAAW,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,MAAM,CAAC,CAAA,CACrD,QAAA,EAAS,CACT,SAAS,sFAAgB,CAAA;AAAA,EAC5B,MAAA,EAAQA,EAAE,IAAA,CAAK,CAAC,SAAS,UAAU,CAAC,EAAE,QAAA,EAAS;AAAA,EAC/C,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1B,MAAMA,CAAAA,CAAE,GAAA,GAAM,QAAA,EAAS,CAAE,SAAS,gCAAO,CAAA;AAAA,EACzC,MAAA,EAAQA,CAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,MAAM,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gDAAa,CAAA;AAAA,EACjE,KAAK,MAAA,EAAO,CAAE,QAAA,EAAS,CAAE,SAAS,0BAAM,CAAA;AAAA,EACxC,MAAA,EAAQA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,8DAAY,CAAA;AAAA,EACtE,IAAA,EAAMA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,kDAAU,CAAA;AAAA,EAClE,WAAA,EAAaA,EAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,kDAAU,CAAA;AAAA,EAC1D,KAAA,EAAOA,EACJ,MAAA,CAAO;AAAA,IACN,KAAA,EAAOA,EAAE,MAAA,EAAO;AAAA,IAChB,MAAMA,CAAAA,CAAE,GAAA,EAAI,CAAE,KAAA,GAAQ,QAAA,EAAS;AAAA,IAC/B,IAAA,EAAMA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,IAAUA,CAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS;AAAA,IAC7C,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GAC5B,EACA,QAAA;AACL,CAAC,CAAA,CACA,MAAA;AAAA,EACC,CAAA,IAAA,KAAQ;AAEN,IAAA,IAAI,IAAA,CAAK,MAAA,KAAW,UAAA,IAAc,CAAC,KAAK,GAAA,EAAK;AAC3C,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAAA,EACA;AAAA,IACE,OAAA,EAAS,+CAAA;AAAA,IACT,IAAA,EAAM,CAAC,KAAK;AAAA;AAEhB,CAAA,CACC,MAAA;AAAA,EACC,CAAA,IAAA,KAAQ;AAEN,IAAA,IAAI,IAAA,CAAK,MAAA,KAAW,OAAA,IAAW,CAAC,KAAK,KAAA,EAAO;AAC1C,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAAA,EACA;AAAA,IACE,OAAA,EAAS,oDAAA;AAAA,IACT,IAAA,EAAM,CAAC,OAAO;AAAA;AAElB;ACpDF,IAAM,cAAA,GAAiB,WAAW,MAAA,CAAO;AAAA,EACvC,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACtB,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,OAAOA,CAAAA,CAAE,GAAA,EAAI,CAAE,KAAA,GAAQ,QAAA;AACzB,CAAC,CAAA;AAED,IAAM,cAAA,GAAiBA,EAAE,IAAA,CAAK,MAAMA,EAAE,GAAA,EAAI,CAAE,OAAO,CAAA;AAM5C,IAAM,UAAA,GAA8B,eAAe,MAAA,CAAO;AAAA,EAC/D,IAAA,EAAM,eAAe,QAAA;AACvB,CAAC;ACdM,IAAMC,eAAAA,GAAiB,WAAW,MAAA,CAAO;AAAA,EAC9C,KAAA,EAAOD,EAAE,MAAA,EAAO;AAAA,EAChB,IAAA,EAAMA,EAAE,MAAA,EAAO;AAAA,EACf,QAAA,EAAUA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC/B,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sCAAQ,CAAA;AAAA,EAC7C,OAAOA,CAAAA,CAAE,GAAA,GAAM,QAAA,EAAS,CAAE,SAAS,sFAAoC,CAAA;AAAA,EACvE,KAAA,EAAOA,EACJ,MAAA,CAAO;AAAA,IACN,IAAA,EAAMA,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,QAAA,EAAU,SAAA,EAAW,SAAS,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,sCAAQ,CAAA;AAAA,IACrF,UAAUA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,4CAAS,CAAA;AAAA,IACnD,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8GAAoB,CAAA;AAAA,IAC5D,KAAKA,CAAAA,CACF,MAAA,GACA,QAAA,EAAS,CACT,SAAS,uOAA6D,CAAA;AAAA,IACzE,KAAKA,CAAAA,CACF,MAAA,GACA,QAAA,EAAS,CACT,SAAS,uOAA6D;AAAA,GAC1E,CAAA,CACA,KAAA,GACA,QAAA,EAAS,CACT,SAAS,sCAAQ;AACtB,CAAC,CAAA;;;ACvBM,IAAM,gBAAA,GAAmBC,gBAAe,MAAA,CAAO;AAAA,EACpD,IAAA,EAAMD,CAAAA,CAAE,OAAA,CAAQ,aAAa,CAAA;AAAA,EAC7B,UAAUA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,wDAAW,CAAA;AAAA,EACrD,SAASA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,gFAAe,CAAA;AAAA,EACxD,UAAUA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,gCAAO,CAAA;AAAA,EACjD,KAAKA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,yCAAW;AAClD,CAAC,CAAA;ACNM,IAAM,eAAA,GAAkBC,gBAC5B,MAAA,CAAO;AAAA,EACN,IAAA,EAAMD,CAAAA,CAAE,OAAA,CAAQ,YAAY,CAAA;AAAA,EAC5B,UAAA,EAAYA,CAAAA,CAAE,KAAA,CAAM,CAACA,EAAE,OAAA,EAAQ,EAAGA,CAAAA,CAAE,OAAA,EAAS,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,sCAAQ,CAAA;AAAA,EAC5E,UAAUA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,wDAAW,CAAA;AAAA,EACrD,KAAKA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,yCAAW;AAClD,CAAC,CAAA,CACA,SAAS,oKAA6B,CAAA;ACElC,IAAM,kBAAA,GAAqB,WAC/B,MAAA,CAAO;AAAA,EACN,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,cAAc,CAAA;AAAA,EAC9B,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,cAAI,CAAA;AAAA,EAC1C,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,UAAU,CAAA;AAAA,EACpD,YAAYA,CAAAA,CAAE,GAAA,GAAM,QAAA,EAAS,CAAE,SAAS,oBAAK,CAAA;AAAA,EAC7C,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,cAAI;AAC7C,CAAC,CAAA,CAEA,SAAS,wGAAmB,CAAA;AClBxB,IAAM,SAAA,GAAY,WAAW,MAAA,CAAO;AAAA,EACzC,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,KAAK,CAAA;AAAA,EACrB,IAAA,EAAMA,EAAE,GAAA,EAAI,CAAE,OAAM,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,oBAAK,CAAA;AAAA,EAC/C,KAAA,EAAOA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,cAAI;AAC/D,CAAC,CAAA;ACJM,IAAM,UAAA,GAAa,WAAW,MAAA,CAAO;AAAA,EAC1C,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACtB,UAAUA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,sGAA0C,CAAA;AAAA,EACpF,MAAMA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,sFAAgB,CAAA;AAAA,EACtD,OAAA,EAASA,CAAAA,CACN,IAAA,CAAK,CAAC,cAAc,QAAA,EAAU,UAAA,EAAY,eAAA,EAAiB,cAAA,EAAgB,cAAc,CAAC,CAAA,CAC1F,QAAA,EAAS,CACT,SAAS,4FAAiB,CAAA;AAAA,EAC7B,KAAA,EAAOA,CAAAA,CACJ,IAAA,CAAK,CAAC,cAAc,QAAA,EAAU,UAAA,EAAY,UAAA,EAAY,SAAS,CAAC,CAAA,CAChE,QAAA,EAAS,CACT,SAAS,kGAAkB,CAAA;AAAA,EAC9B,GAAA,EAAKA,CAAAA,CAAE,KAAA,CAAM,CAACA,EAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,wDAAW,CAAA;AAAA,EACtE,IAAA,EAAMA,EAAE,GAAA,EAAI,CAAE,OAAM,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,oBAAK,CAAA;AAAA,EAC/C,KAAA,EAAOA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,cAAI;AAC/D,CAAC,CAAA;ACfM,IAAM,UAAA,GAAa,WAAW,MAAA,CAAO;AAAA,EAC1C,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACtB,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1B,QAAA,EAAUA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC/B,MAAA,EAAQA,EAAE,GAAA,EAAI,CAAE,OAAM,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gCAAO,CAAA;AAAA,EACnD,aAAA,EAAeA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,kDAAU,CAAA;AAAA,EAC3E,MAAA,EAAQA,EACL,KAAA,CAAM,CAACA,EAAE,OAAA,CAAQ,YAAY,CAAA,EAAGA,CAAAA,CAAE,OAAA,CAAQ,QAAQ,GAAGA,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAC,CAAC,EAC3E,OAAA,CAAQ,YAAY,CAAA,CACpB,QAAA,CAAS,0BAAM,CAAA;AAAA,EAClB,UAAA,EAAYA,CAAAA,CACT,KAAA,CAAM,CAACA,EAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAC9B,QAAA,EAAS,CACT,SAAS,8MAAmD,CAAA;AAAA,EAC/D,UAAA,EAAYA,CAAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,sCAAQ,CAAA;AAAA,EAClE,gBAAgBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,0EAAc,CAAA;AAAA,EAC9D,MAAA,EAAQA,EACL,KAAA,CAAM;AAAA,IACLA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,CAAS,0BAAM,CAAA;AAAA,IAC1BA,CAAAA,CAAE,KAAA,CAAM,CAACA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,0BAAM,CAAA,EAAGA,EAAE,MAAA,EAAO,CAAE,QAAA,CAAS,0BAAM,CAAC,CAAC;AAAA,GACnE,CAAA,CACA,OAAA,CAAQ,EAAE,CAAA,CACV,SAAS,+BAAW;AACzB,CAAC;ACvBM,IAAM,WAAA,GAAc,WACxB,MAAA,CAAO;AAAA,EACN,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EACvB,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yEAAkB,CAAA;AAAA,EACzD,OAAA,EAASA,EACN,MAAA,CAAO;AAAA,IACN,KAAA,EAAOA,EAAE,MAAA,EAAO;AAAA,IAChB,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gFAAe,CAAA;AAAA,IACzD,KAAA,EAAOA,CAAAA,CAAE,KAAA,CAAM,CAACA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,IAClD,KAAA,EAAOA,EAAE,IAAA,CAAK,CAAC,QAAQ,OAAA,EAAS,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,IACpD,KAAKA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wLAAkC;AAAA,GACvE,CAAA,CACA,KAAA,GACA,QAAA,EAAS,CACT,SAAS,gCAAO,CAAA;AAAA,EACnB,MAAA,EAAQA,EAAE,GAAA,EAAI,CAAE,OAAM,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,0BAAM,CAAA;AAAA,EAClD,KAAKA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wHAA8B,CAAA;AAAA,EAClE,MAAMA,CAAAA,CAAE,KAAA,CAAM,CAACA,CAAAA,CAAE,KAAI,CAAE,KAAA,EAAM,EAAGA,CAAAA,CAAE,QAAQ,CAAC,EAAE,QAAA,EAAS,CAAE,SAAS,kGAAkB,CAAA;AAAA,EACnF,QAAA,EAAUA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC/B,IAAA,EAAMA,CAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,UAAU,OAAO,CAAC,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EAC3D,WAAA,EAAaA,CAAAA,CACV,IAAA,CAAK,CAAC,OAAA,EAAS,MAAM,CAAC,CAAA,CACtB,QAAA,EAAS,CACT,QAAA,CAAS,2JAA6C,CAAA;AAAA,EACzD,UAAA,EAAYA,EACT,KAAA,CAAM;AAAA,IACLA,CAAAA,CAAE,QAAQ,KAAK,CAAA;AAAA,IACfA,EAAE,MAAA,CAAO;AAAA,MACP,OAAA,EAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MAC7B,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MAC9B,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,KAC5B;AAAA,GACF,CAAA,CACA,OAAA,CAAQ,KAAK,CAAA,CACb,SAAS,0BAAM;AACpB,CAAC,CAAA,CACA,SAAS,+HAAgC;;;ACvBrC,IAAM,kBAAA,GAAqB,WAAW,MAAA,CAAO;AAAA,EAClD,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,eAAe,CAAA;AAAA,EAC/B,GAAA,EAAKA,EAAE,MAAA,EAAO;AAAA,EACd,MAAA,EAAQA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,kJAA0B,CAAA;AAAA,EACpF,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAAM,CAAA;AAAA,EAC3C,KAAA,EAAOA,EAAE,GAAA,EAAI,CAAE,OAAM,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,sCAAQ,CAAA;AAAA,EACnD,SAAS,YAAA,CAAa,KAAA,GAAQ,QAAA,EAAS,CAAE,SAAS,0KAA8B,CAAA;AAAA,EAChF,UAAA,EAAY,WAAW,KAAA,CAAM,MAAA;AAAA,EAC7B,MAAA,EAAQ,WAAW,KAAA,CAAM,MAAA;AAAA,EACzB,MAAA,EAAQ,WAAW,KAAA,CAAM,MAAA;AAAA,EACzB,aAAA,EAAe,WAAW,KAAA,CAAM,aAAA;AAAA,EAChC,MAAA,EAAQ,YAAY,KAAA,CAAM,MAAA;AAAA,EAC1B,WAAA,EAAa,YAAY,KAAA,CAAM,WAAA;AAAA,EAC/B,MAAA,EAAQ,YAAY,KAAA,CAAM,MAAA;AAAA,EAC1B,OAAA,EAAS,YAAY,KAAA,CAAM;AAC7B,CAAC,CAAA;AC5BM,IAAM,iBAAA,GAAoBC,gBAAe,MAAA,CAAO;AAAA,EACrD,IAAA,EAAMD,CAAAA,CAAE,OAAA,CAAQ,cAAc,CAAA;AAAA,EAC9B,SAAA,EAAWA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAChC,GAAA,EAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACzB,GAAA,EAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACzB,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1B,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,QAAQ,OAAO,CAAA,CAAE,SAAS,cAAI,CAAA;AAAA,EAChD,QAAA,EAAUA,EAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,kDAAU;AAC1D,CAAC;ACRM,IAAM,eAAA,GAAkBC,gBAAe,MAAA,CAAO;AAAA,EACnD,IAAA,EAAMD,CAAAA,CAAE,OAAA,CAAQ,YAAY,CAAA;AAAA,EAC5B,SAAA,EAAWA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AACzB,CAAC;ACHM,IAAM,UAAA,GAAa,WAAW,MAAA,CAAO;AAAA,EAC1C,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACtB,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1B,IAAA,EAAMA,EAAE,MAAA,EAAO;AAAA,EACf,MAAA,EAAQA,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,OAAA,EAAS,SAAA,EAAW,MAAM,CAAC,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACvE,MAAA,EAAQA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,8DAAY;AACxE,CAAC,CAAA;ACMM,IAAM,eAAA,GAAkB,WAAW,MAAA,CAAO;AAAA,EAC/C,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,YAAY,CAAA;AAAA,EAC5B,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4FAAiB,CAAA;AAAA,EAC5D,GAAA,EAAKA,EAAE,MAAA,EAAO;AAAA,EACd,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAAM,CAAA;AAAA,EAC3C,MAAA,EAAQA,EAAE,IAAA,CAAK,CAAC,OAAO,MAAM,CAAC,CAAA,CAAE,OAAA,CAAQ,KAAK,CAAA;AAAA,EAC7C,OAAA,EAASA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC9B,OAAA,EAASA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,IAAUA,CAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS;AAAA,EAChD,IAAA,EAAMA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,4IAAyB,CAAA;AAAA,EACjF,MAAA,EAAQA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,kJAA0B,CAAA;AAAA,EACpF,KAAA,EAAOA,EAAE,GAAA,EAAI,CAAE,OAAM,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,sCAAQ,CAAA;AAAA,EACnD,SAAS,YAAA,CAAa,KAAA,GAAQ,QAAA,EAAS,CAAE,SAAS,0KAA8B,CAAA;AAAA,EAChF,YAAA,EAAcA,EAAE,IAAA,CAAK,CAAC,QAAQ,OAAA,EAAS,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAC3D,UAAA,EAAY,WAAW,KAAA,CAAM,MAAA;AAAA,EAC7B,MAAA,EAAQ,WAAW,KAAA,CAAM,MAAA;AAAA,EACzB,MAAA,EAAQ,WAAW,KAAA,CAAM,MAAA;AAAA,EACzB,aAAA,EAAe,WAAW,KAAA,CAAM,aAAA;AAAA,EAChC,MAAA,EAAQ,YAAY,KAAA,CAAM,MAAA;AAAA,EAC1B,WAAA,EAAa,YAAY,KAAA,CAAM,WAAA;AAAA,EAC/B,MAAA,EAAQ,YAAY,KAAA,CAAM,MAAA;AAAA,EAC1B,OAAA,EAAS,YAAY,KAAA,CAAM;AAC7B,CAAC,CAAA;ACjCM,IAAM,YAAA,GAAeC,gBAAe,MAAA,CAAO;AAAA,EAChD,IAAA,EAAMD,CAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACxB,YAAYA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,kDAAU,CAAA;AAAA,EACtD,SAASA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,sIAAwB,CAAA;AAAA,EACjE,YAAYA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,gCAAO,CAAA;AAAA,EACnD,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,QAAQ,OAAO,CAAA,CAAE,SAAS,cAAI,CAAA;AAAA,EAChD,OAAA,EAASA,EACN,KAAA,CAAMA,CAAAA,CAAE,OAAO,EAAE,KAAA,EAAOA,EAAE,MAAA,EAAO,EAAG,OAAOA,CAAAA,CAAE,MAAA,IAAU,CAAC,EACxD,QAAA,EAAS,CACT,SAAS,0BAAM,CAAA;AAAA,EAClB,gBAAA,EAAkBA,EAAE,MAAA,EAAO,CAAE,QAAQ,OAAO,CAAA,CAAE,SAAS,sCAAQ,CAAA;AAAA,EAC/D,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oBAAK;AAC9C,CAAC,CAAA;ACZM,IAAM,aAAA,GAAgB,WAC1B,MAAA,CAAO;AAAA,EACN,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA,EACzB,MAAA,EAAQA,EAAE,IAAA,CAAK,CAAC,OAAO,MAAM,CAAC,EAAE,QAAA,EAAS;AAAA,EACzC,GAAA,EAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACzB,MAAA,EAAQA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,IAAUA,CAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS;AAAA,EAC/C,IAAA,EAAMA,CAAAA,CAAE,GAAA,EAAI,CAAE,QAAA;AAChB,CAAC,CAAA,CACA,SAAS,oNAAoD;ACRzD,IAAM,UAAA,GAAa,WACvB,MAAA,CAAO;AAAA,EACN,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACtB,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,0BAAM;AAClC,CAAC,CAAA,CACA,SAAS,8GAAyB,CAAA;ACL9B,IAAM,cAAA,GAAiB,WAAW,MAAA,CAAO;AAAA,EAC9C,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA;AAAA,EAC1B,IAAA,EAAMA,EAAE,GAAA,EAAI,CAAE,OAAM,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,0BAAM,CAAA;AAAA,EAChD,IAAA,EAAMA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,0BAAM;AAChE,CAAC;;;ACiCoBA,EAAE,KAAA,CAAM;AAAA,EAC3B,YAAA;AAAA,EACA,UAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAC;ACtDM,IAAM,YAAA,GAAe,MAAA,EAAc,CAAE,OAAO;AAAA,EACjD,OAAA,sBAAa,GAAA;AACf,CAAA,CAAE,CAAA;AAEK,IAAM,YAAA,GAAe,CAAC,GAAA,EAAa,KAAA,KAAe;AACvD,EAAA,YAAA,CAAa,QAAA,CAAS,CAAA,IAAA,MAAS,EAAE,OAAA,EAAS,IAAI,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA,CAAE,GAAA,CAAI,GAAA,EAAK,KAAK,GAAE,CAAE,CAAA;AACpF,CAAA;AAEO,IAAM,YAAA,GAAe,CAAC,GAAA,KAAiB;AAC5C,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,OAAO,YAAA,CAAa,QAAA,EAAS,CAAE,OAAA,CAAQ,IAAI,GAAG,CAAA;AAAA,EAChD;AACF,CAAA;;;AClBO,IAAM,cAAA,GAAiB,YAAA;;;ACWvB,SAAS,wBAAA,CAAyB,QAAgB,MAAA,EAAgB;AACvE,EAAA,SAAS,QAAQ,IAAA,EAAgC;AAC/C,IAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAE5B,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,cAAc,CAAA;AACvC,MAAA,IAAI,KAAA,EAAO;AAET,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,EAAQ,KAAA,CAAM,CAAC,CAAC,CAAA;AACtC,QAAA,OAAO,MAAA;AAAA,MACT;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AAC9B,MAAA,OAAO,IAAA,CAAK,IAAI,OAAO,CAAA;AAAA,IACzB,CAAA,MAAA,IAAW,OAAO,IAAA,KAAS,QAAA,IAAY,SAAS,IAAA,EAAM;AACpD,MAAA,MAAM,SAA8B,EAAC;AAErC,MAAA,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAE,OAAA,CAAQ,CAAA,GAAA,KAAO;AAC/B,QAAA,MAAA,CAAO,GAAG,CAAA,GAAI,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,MACjC,CAAC,CAAA;AAED,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB;AAEO,IAAM,YAAA,GAAe,CAAC,IAAA,KAAgB;AAC3C,EAAA,OAAO,KAAK,KAAA,EAAM,CAAE,IAAI,IAAA,CAAK,SAAA,IAAa,SAAS,CAAA;AACrD,CAAA;AAEO,IAAM,cAAA,GAAiB,CAAC,IAAA,KAAgB;AAC7C,EAAA,OAAO,IAAA,CAAK,OAAM,CAAE,GAAA,CAAI,CAAC,IAAA,CAAK,SAAA,IAAa,SAAS,CAAA;AACtD,CAAA;ACzCO,SAAS,eAA0C,MAAA,EAAyB;AACjF,EAAA,OAAO,SAA4B,gBAAA,EAAmE;AACpG,IAAA,MAAM,uBAAA,GAA0B,CAAC,KAAA,KAAgC;AAC/D,MAAA,MAAM,EAAE,IAAA,EAAM,GAAG,SAAA,EAAU,GAAI,KAAA;AAC/B,MAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAwB,IAAI,CAAA;AAEhE,MAAA,SAAA,CAAU,MAAM;AAEd,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAChC,QAAA,aAAA,CAAc,MAAM,CAAA;AAAA,MACtB,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,uBAAOE,GAAAA,CAAC,gBAAA,EAAA,EAAkB,GAAI,WAAiB,UAAA,EAAwB,CAAA;AAAA,IACzE,CAAA;AAEA,IAAA,uBAAA,CAAwB,cAAc,CAAA,eAAA,EAAkB,gBAAA,CAAiB,WAAA,IAAe,gBAAA,CAAiB,QAAQ,WAAW,CAAA,CAAA,CAAA;AAE5H,IAAA,OAAO,uBAAA;AAAA,EACT,CAAA;AACF;ACZA,IAAM,mBAAA,GAAsB,CAAmB,EAAE,IAAA,EAAM,QAAO,KAA0C;AACtG,EAAA,MAAM,EAAE,IAAA,EAAM,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,MAAA,EAAQ,IAAA,EAAM,GAAG,IAAA,EAAK,GAAI,IAAA;AAE7F,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,SAA2B,IAAI,CAAA;AAC7D,EAAA,MAAM,WAAW,KAAA,EAAM;AAEvB,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAO,YAAA,KAAiB,QAAA,CAAS;AAAA,IAC7C,OAAO,KAAA,EAAO,KAAA;AAAA,IACd,OAAA;AAAA,IACA,OAAO,KAAA,EAAO,KAAA;AAAA,IACd,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAW,YAAY;AACrB,MAAA,UAAA,iBAAWD,GAAAA,CAAC,QAAA,EAAA,EAAS,CAAE,CAAA;AAEvB,MAAA,IAAI,QAAA;AAEJ,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,MAAM,QAAA,GAAW,MAAM,QAAA,CAAS,OAAA,CAAqC;AAAA,UACnE,MAAA;AAAA,UACA,GAAA;AAAA,UACA,cAAc,MAAA,IAAU,wBAAA,CAAyB,YAAA,CAAa,UAAU,GAAG,MAAM,CAAA;AAAA,UACjF,MAAM,IAAA,IAAQ,wBAAA,CAAyB,YAAA,CAAa,UAAU,GAAG,IAAI;AAAA,SACtE,CAAA;AAED,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,YAAA,CAAa,OAAA,EAAS,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA;AAAA,QAC1C;AAEA,QAAA,QAAA,GAAW,YAAY,KAAA,EAAO,IAAA,EAAO,QAAA,CAAS,IAAA,CAAK,QAAmB,MAAS,CAAA;AAAA,MACjF,CAAA,MAAO;AACL,QAAA,QAAA,GAAW,WAAA,CAAY,KAAA,EAAO,IAAA,EAAM,MAAM,CAAA;AAAA,MAC5C;AACA,MAAA,UAAA,CAAW,QAAQ,CAAA;AAAA,IACrB;AAAA,GACD,CAAA;AAED,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAA,GAAAA,CAAC,cAAY,GAAG,IAAA,EAAM,MAAM,UAAA,EAAY,OAAA,EAAS,MAC9C,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,IACC,YAAA,CAAa,YAAA,EAAc,QAAA,CAAS,IAAI;AAAA,GAAA,EAC3C,CAAA;AAEJ,CAAA;AAEA,IAAM,sBAAA,GAAyB,CAAC,EAAE,IAAA,EAAK,KAA8B;AACnE,EAAA,MAAM,EAAE,IAAA,EAAM,UAAA,EAAY,GAAA,EAAK,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,UAAA,EAAY,MAAA,EAAQ,OAAA,EAAS,GAAG,IAAA,EAAK,GAAI,IAAA;AAC9F,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,YAAA,EAAa;AACjC,EAAA,MAAM,WAAW,KAAA,EAAM;AAEvB,EAAA,MAAM,UAAU,YAAY;AAC1B,IAAA,MAAM,SAAA,GAAY,UAAA,GAAa,OAAA,CAAQ,GAAA,CAAI,UAAU,CAAA,GAAI,IAAA;AACzD,IAAA,MAAM,MAAA,GAAS,GAAA,CAAK,OAAA,CAAQ,gBAAA,EAAkB,CAAC,MAAA,EAAQ,GAAA,KAAQE,MAAAA,CAAO,SAAA,EAAW,GAAG,CAAA,IAAK,EAAE,CAAA;AAE3F,IAAA,MAAM,SAAA,GAAY;AAAA,MAChB,MAAA;AAAA,MACA,YAAA,EAAc,MAAA;AAAA,MACd,IAAA,EAAM;AAAA,KACR;AAEA,IAAA,MAAM,QAAA,GAAW,MAAM,QAAA,CAAS,QAAA,CAAS,QAAQ,SAAS,CAAA;AAE1D,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,qBAAqB,CAAA;AACzD,IAAA,IAAI,QAAA,GAAW,SAAA;AACf,IAAA,MAAM,aAAA,GAAgB,MAAA,EAAQ,KAAA,CAAM,wCAAwC,CAAA;AAC5E,IAAA,QAAA,GAAW,aAAA,GAAgB,CAAC,CAAA,IAAK,QAAA;AACjC,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,MAAA,CAAO,MAAM,QAAQ,CAAA;AAAA,EACvB,CAAA;AAEA,EAAA,uBACEF,IAAC,UAAA,EAAA,EAAY,GAAG,MAAM,IAAA,EAAM,UAAA,EAAY,SACrC,QAAA,EAAA,IAAA,EACH,CAAA;AAEJ,CAAA;AAEO,IAAM,cAAA,GAAiB,eAAe,YAAY,CAAA,CAAuB,CAAC,EAAE,UAAA,EAAY,QAAO,KAAM;AAC1G,EAAA,MAAM,EAAE,QAAQ,IAAA,EAAM,IAAA,EAAM,YAAY,MAAA,EAAQ,IAAA,EAAM,UAAA,EAAY,WAAA,EAAY,GAAI,UAAA;AAClF,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,YAAA,EAAa;AACjC,EAAA,MAAM,SAAA,GAAY,UAAA,GAAa,OAAA,CAAQ,GAAA,CAAI,UAAU,CAAA,GAAI,IAAA;AACzD,EAAA,MAAM,SAAA,GAAY,MAAA,IAAU,wBAAA,CAAyB,SAAA,EAAW,MAAM,CAAA;AACtE,EAAA,MAAM,OAAA,GAAU,IAAA,IAAQ,wBAAA,CAAyB,SAAA,EAAW,IAAI,CAAA;AAEhE,EAAA,MAAM,UAAU,EAAE,GAAG,YAAY,MAAA,EAAQ,SAAA,EAAW,MAAM,OAAA,EAAQ;AAElE,EAAA,IAAI,WAAW,OAAA,EAAS;AACtB,IAAA,uBAAOA,GAAAA,CAAC,mBAAA,EAAA,EAAoB,IAAA,EAAM,SAAS,MAAA,EAAgB,CAAA;AAAA,EAC7D,CAAA,MAAA,IAAW,WAAW,UAAA,EAAY;AAChC,IAAA,uBAAOA,GAAAA,CAAC,sBAAA,EAAA,EAAuB,IAAA,EAAM,OAAA,EAAS,CAAA;AAAA,EAChD;AAEA,EAAA,uBACEA,GAAAA,CAAC,UAAA,EAAA,EAAW,MAAY,IAAA,EAAM,UAAA,EAAY,aACvC,QAAA,EAAA,IAAA,EACH,CAAA;AAEJ,CAAC;AC5GM,IAAM,YAAA,GAAe,eAAe,UAAU,CAAA,CAAuB,CAAC,EAAE,UAAA,EAAY,QAAO,KAAM;AACtG,EAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAK,GAAI,UAAA;AACxB,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,IAAA,EAAM,MAAM,CAAA;AACzC,EAAA,uBAAOA,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAe,QAAA,EAAS,CAAA;AACvC,CAAC;ACGD,IAAM,iBAA0C,CAAA,KAAA,KAAS;AACvD,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,GAAA,EAAK,GAAG,MAAK,GAAI,KAAA;AAE1C,EAAA,MAAM,aAAA,GACJ,OAAO,KAAA,KAAU,QAAA,GAAY,MAAM,cAAA,CAAeG,MAAA,CAAM,KAAA,GAAQ,GAAI,CAAC,CAAA,GAAIA,MAAA,CAAM,KAAA,GAAQ,GAAI,CAAA,GAAK,IAAA;AAElG,EAAA,MAAM,eAAA,GAAkB,CAAC,IAAA,KAAgB;AACvC,IAAA,QAAA,GAAW,GAAA,GAAM,aAAa,IAAI,CAAA,CAAE,MAAK,GAAI,IAAA,CAAK,MAAM,CAAA;AAAA,EAC1D,CAAA;AAEA,EAAA,uBAAOH,IAAC,UAAA,EAAA,EAAY,GAAG,MAAM,KAAA,EAAO,aAAA,EAAe,UAAU,eAAA,EAAiB,CAAA;AAChF,CAAA;AAEA,IAAO,sBAAA,GAAQ,cAAA;ACjBf,MAAA,CAAO,SAAS,CAAA;AAOhB,IAAM,kBAA4C,CAAA,KAAA,KAAS;AACzD,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,GAAA,EAAK,GAAG,MAAK,GAAI,KAAA;AAE1C,EAAA,MAAM,aAAA,GAA2C;AAAA,IAC/C,QAAQ,CAAC,CAAA,GAAK,GAAA,GAAM,cAAA,CAAeG,OAAM,KAAA,CAAM,CAAC,CAAA,GAAI,GAAI,CAAC,CAAA,GAAIA,MAAAA,CAAM,MAAM,CAAC,CAAA,GAAI,GAAI,CAAA,GAAK,IAAA;AAAA,IACvF,QAAQ,CAAC,CAAA,GAAK,GAAA,GAAM,cAAA,CAAeA,OAAM,KAAA,CAAM,CAAC,CAAA,GAAI,GAAI,CAAC,CAAA,GAAIA,MAAAA,CAAM,MAAM,CAAC,CAAA,GAAI,GAAI,CAAA,GAAK;AAAA,GACzF;AAEA,EAAA,MAAM,kBAAgD,CAAA,KAAA,KAAS;AAC7D,IAAA,QAAA,GAAW;AAAA,MACT,KAAA,GAAQ,CAAC,CAAA,GAAK,GAAA,GAAM,aAAa,KAAA,CAAM,CAAC,CAAC,CAAA,CAAE,MAAK,GAAI,KAAA,CAAM,CAAC,CAAA,CAAE,MAAK,GAAK,IAAA;AAAA,MACvE,KAAA,GAAQ,CAAC,CAAA,GAAK,GAAA,GAAM,aAAa,KAAA,CAAM,CAAC,CAAC,CAAA,CAAE,MAAK,GAAI,KAAA,CAAM,CAAC,CAAA,CAAE,MAAK,GAAK;AAAA,KACxE,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBAAOH,GAAAA,CAACI,UAAAA,CAAW,WAAA,EAAX,EAAwB,GAAG,IAAA,EAAM,KAAA,EAAO,aAAA,EAAe,QAAA,EAAU,eAAA,EAAiB,CAAA;AAC5F,CAAA;AAEA,IAAO,uBAAA,GAAQ,eAAA;AC3BR,SAAS,aAA4C,MAAA,EAAyB;AACnF,EAAA,OAAO,SACL,WAAA,EACA;AACA,IAAA,OAAO,cAAA,CAAe,MAAM,CAAA,CAAE,CAAC,EAAE,UAAA,EAAY,GAAG,WAAU,KAAM;AAC9D,MAAA,MAAM,EAAE,OAAO,IAAA,EAAM,QAAA,EAAU,OAAO,KAAA,EAAO,GAAG,eAAc,GAAI,UAAA;AAElE,MAAA,uBACEJ,GAAAA,CAAC,IAAA,CAAK,IAAA,EAAL,EAAU,KAAA,EAAc,IAAA,EAAY,KAAA,EAAc,QAAA,EAAoB,cAAc,KAAA,EAAQ,GAAG,SAAA,EAC7F,QAAA,EAAA,WAAA,CAAY,aAAa,CAAA,EAC5B,CAAA;AAAA,IAEJ,CAAC,CAAA;AAAA,EACH,CAAA;AACF;ACjBO,IAAM,kBAAA,GAAqB,YAAA,CAAa,gBAAgB,CAAA,CAAE,CAAA,aAAA,KAAiB;AAChF,EAAA,uBAAOA,GAAAA,CAAC,sBAAA,EAAA,EAAgB,GAAG,aAAA,EAAe,CAAA;AAC5C,CAAC;ACFM,IAAM,iBAAA,GAAoB,YAAA,CAAa,eAAe,CAAA,CAAE,CAAA,aAAA,KAAiB;AAC9E,EAAA,uBAAOA,GAAAA,CAAC,uBAAA,EAAA,EAAiB,GAAG,aAAA,EAAe,CAAA;AAC7C,CAAC;ACGM,IAAM,uBAAuB,cAAA,CAAe,kBAAkB,EAAE,CAAC,EAAE,YAAW,KAAM;AACzF,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,WAAW,UAAA,EAAY,GAAG,MAAK,GAAI,UAAA;AAC9D,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,YAAA,EAAa;AACjC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,QAAAA,CAAqC,EAAE,CAAA;AAEjE,EAAAI,UAAU,MAAM;AACd,IAAA,IAAI,WAAA;AAEJ,IAAA,IAAI,OAAO,eAAe,QAAA,EAAU;AAClC,MAAA,WAAA,GAAc,UAAA;AAAA,IAChB,WAAW,UAAA,EAAY;AACrB,MAAA,WAAA,GAAc,OAAA,CAAQ,IAAI,UAAU,CAAA;AAAA,IACtC;AAEA,IAAA,WAAA,GAAc,SAAA,GAAYH,MAAAA,CAAO,WAAA,EAAa,SAAS,CAAA,GAAI,WAAA;AAE3D,IAAA,MAAM,SAAqC,WAAA,EAAa,GAAA;AAAA,MACtD,CAAC,IAAA,MAA8D;AAAA,QAC7D,KAAK,IAAA,CAAK,KAAA;AAAA,QACV,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,UAAU,IAAA,CAAK;AAAA,OACjB;AAAA,KACF;AAEA,IAAA,QAAA,CAAS,MAAM,CAAA;AAAA,EACjB,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,uBAAOF,GAAAA,CAAC,YAAA,EAAA,EAAc,GAAG,IAAA,EAAM,OAAc,KAAA,EAAc,CAAA;AAC7D,CAAC;ACjCM,IAAM,WAAA,GAAc,eAAe,SAAS,CAAA,CAAuB,CAAC,EAAE,UAAA,EAAY,QAAO,KAAM;AACpG,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,UAAA;AACxB,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,IAAA,EAAM,MAAM,CAAA;AACzC,EAAA,uBAAOA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAe,QAAA,EAAS,CAAA;AACtC,CAAC;ACFM,IAAM,YAAA,GAAe,eAAe,UAAU,CAAA,CAAuB,CAAC,EAAE,UAAA,EAAY,QAAO,KAAM;AACtG,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAO,GAAG,MAAK,GAAI,UAAA;AACjC,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,IAAA,EAAM,MAAM,CAAA;AAEzC,EAAA,uBACEA,GAAAA,CAAC,IAAA,EAAA,EAAM,GAAG,IAAA,EAAM,OACb,QAAA,EACH,CAAA;AAEJ,CAAC;ACNM,IAAM,YAAA,GAAe,eAAe,UAAU,CAAA,CAGlD,CAAC,EAAE,UAAA,EAAY,IAAA,EAAM,eAAA,EAAgB,KAAM;AAC5C,EAAA,MAAM,CAAC,YAAY,CAAA,GAAIM,IAAAA,CAAK,OAAA,EAAQ;AACpC,EAAA,MAAM,QAAQ,IAAA,IAAQ,YAAA;AACtB,EAAA,MAAM,EAAE,OAAA,EAAS,MAAA,EAAQ,YAAY,MAAA,EAAQ,GAAG,MAAK,GAAI,UAAA;AAEzD,EAAA,MAAM,WAAW,OAAA,IAAW,eAAA;AAE5B,EAAA,MAAM,QAAA,GAAW,MAAA,EAAQ,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AAC5C,IAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAK,GAAI,IAAA;AACvB,IAAA,MAAM,iBAAA,GAAoB,YAAY,IAAkB,CAAA;AAExD,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,MAAM,GAAA,GAAM,CAAA,EAAG,IAAI,CAAA,EAAG,KAAK,CAAA,CAAA;AAC3B,MAAA,uBACEN,GAAAA,CAAC,GAAA,EAAA,EAAI,IAAA,EACH,QAAA,kBAAAA,IAAC,iBAAA,EAAA,EAAkB,IAAA,EAAM,IAAA,EAAM,CAAA,EAAA,EADX,GAEtB,CAAA;AAAA,IAEJ;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAC,CAAA;AAED,EAAA,MAAM,QAAA,GAAW,OAAO,UAAA,KAAe,QAAA,GAAW,EAAE,MAAM,UAAA,EAAW,GAAI,EAAE,IAAA,EAAM,UAAA,EAAW;AAE5F,EAAA,MAAM,cAAA,GAA8C,CAAC,CAAA,EAAG,MAAA,KAAW;AACjE,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,YAAA,CAAa,UAAU,MAAM,CAAA;AAAA,IAC/B;AAAA,EACF,CAAA;AAEA,EAAA,uBACEA,GAAAA,CAACM,IAAAA,EAAA,EAAM,GAAG,IAAA,EAAM,IAAA,EAAM,KAAA,EAAO,QAAA,EAAoB,gBAC/C,QAAA,kBAAAN,GAAAA,CAAC,GAAA,EAAA,EAAI,MAAA,EAAiB,UAAS,CAAA,EACjC,CAAA;AAEJ,CAAC;ACrBM,IAAM,uBAAuB,cAAA,CAAe,kBAAkB,EAAE,CAAC,EAAE,YAAW,KAAM;AACzF,EAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAS,GAAA,EAAK,QAAQ,OAAA,EAAS,MAAA,EAAQ,MAAA,EAAQ,aAAA,EAAe,UAAA,EAAY,MAAA,EAAQ,KAAA,EAAO,GAAG,MAAK,GAChH,UAAA;AACF,EAAA,MAAM,GAAA,GAAM,OAA+C,IAAI,CAAA;AAG/D,EAAA,MAAM,aAAa,CAAA,cAAA,EAAiB,OAAA,IAAW,SAAS,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,CAAA,CAAA;AAEtE,EAAA,MAAM,aAA0D,OAAA,GAAU,CAAC,GAAG,OAAO,IAAI,EAAC;AAG1F,EAAA,UAAA,CAAW,QAAQ,CAAA,MAAA,KAAU;AAC3B,IAAA,MAAA,CAAO,MAAA,GAAS,CAAC,KAAA,KAAe;AAC9B,MAAA,IAAI,aAAA,CAAc,KAAK,CAAA,EAAG;AACxB,QAAA,uBACEA,IAAC,UAAA,CAAW,SAAA,EAAX,EAAqB,KAAA,EAAO,EAAE,WAAW,GAAA,EAAK,QAAA,EAAU,QAAO,EAC9D,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAK,QAAA,EAAA,IAAA,CAAK,UAAU,KAAA,EAAO,IAAA,EAAM,CAAC,CAAA,EAAE,CAAA,EACvC,CAAA;AAAA,MAEJ,CAAA,MAAA,IAAW,OAAO,KAAA,KAAU,QAAA,EAAU;AACpC,QAAA,IAAI;AACF,UAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAC5B,UAAA,IAAI,aAAA,CAAc,GAAG,CAAA,EAAG;AACtB,YAAA,uBACEA,IAAC,UAAA,CAAW,SAAA,EAAX,EAAqB,KAAA,EAAO,EAAE,WAAW,GAAA,EAAK,QAAA,EAAU,QAAO,EAC9D,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAK,QAAA,EAAA,IAAA,CAAK,UAAU,GAAA,EAAK,IAAA,EAAM,CAAC,CAAA,EAAE,CAAA,EACrC,CAAA;AAAA,UAEJ;AACA,UAAA,OAAO,KAAA;AAAA,QACT,CAAA,CAAA,MAAQ;AACN,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF,CAAA,MAAO;AACL,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF,CAAA;AAAA,EACF,CAAC,CAAA;AAED,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,UAAA,CAAW,IAAA,CAAK;AAAA,MACd,KAAA,EAAO,cAAA;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,MAAA,EAAQ,CAAC,MAAA,KAAgB,WAAA,CAAY,SAAS,MAAM;AAAA,KACrD,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAAuB;AACzC,IAAA,MAAM,IAAA,GAAO,WAAW,KAAA,CAAM;AAAA,MAC5B,IAAA,EAAM,MAAA;AAAA,MACN,MAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAA,EAAQ,UAAA;AAAA,MACR;AAAA,KACD,CAAA;AACD,IAAA,uBAAOA,GAAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAY,IAAA,EAAY,iBAAiB,OAAA,EAAS,CAAA;AAAA,EACzE,CAAA;AAEA,EAAA,MAAM,YAAA,GACJ,WACC,MAAM;AAEL,IAAA,MAAM,YAAA,GAAe,IAAI,OAAA,EAAS,IAAA,GAAO,IAAI,OAAA,CAAQ,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,EAAG,IAAA;AACvE,IAAA,OAAO,WAAA,CAAY,QAAQ,YAAY,CAAA;AAAA,EACzC,CAAA,CAAA;AAEF,EAAA,MAAM,WAAA,GAAc;AAAA,IAClB,KAAA,EAAO,CAAC,IAAA,EAAiC,KAAA,KACvC,MAAM,MAAA,CAAO,CAAC,KAAK,IAAA,KAAS,GAAA,CAAI,OAAO,IAAA,EAAM,IAAA,EAAM,QAAQ,EAAE,GAAG,EAAW,KAAK,EAAC;AAAA,IACnF,SAAS,CAAC,QAAA,KAAsC,CAAC,CAAC,UAAU,IAAA,EAAM,OAAA;AAAA,IAClE,aAAA,EAAe,CAAC,QAAA,EAAmC,SAAA,EAA0B,gBAAA,KAA0B;AACrG,MAAA,IAAI,CAAC,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,OAAO,MAAA;AACrC,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,UAAU,IAAA,EAAM,MAAA;AAAA,QACxB,IAAA,EAAA,CAAO,gBAAA,EAAkB,IAAA,IAAQ,CAAA,IAAK;AAAA,OACxC;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAM,UAAA,GAAa,YAAY,KAAK,CAAA;AAEpC,EAAA,uBACEA,GAAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA,EAAS,UAAA;AAAA,MACT,MAAA,EAAQ,YAAA;AAAA,MACR,WAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA,EAAS;AAAA,QACP,GAAA;AAAA,QACA,MAAA,EAAQ,KAAA;AAAA,QACR,YAAA,EAAc,CAAC,OAAA,EAAmC,SAAA,KAAmB;AACnE,UAAA,MAAM,EAAE,SAAQ,GAAI,OAAA;AACpB,UAAA,IAAI,CAAC,OAAA,EAAS;AACZ,YAAA,OAAO;AAAA,cACL,QAAQ,SAAA,EAAW,MAAA;AAAA,cACnB,IAAA,EAAM,WAAW,IAAA,IAAQ;AAAA,aAC3B;AAAA,UACF;AAEA,UAAA,IAAI,MAAA,EAAQ;AACV,YAAA,OAAO,KAAA;AAAA,cACL;AAAA,gBACE,QAAQ,SAAA,EAAW,MAAA;AAAA,gBACnB,IAAA,EAAM,WAAW,IAAA,IAAQ;AAAA,eAC3B;AAAA,cACA,wBAAA,CAAyB,SAAS,MAAM;AAAA,aAC1C;AAAA,UACF,CAAA,MAAO;AACL,YAAA,OAAO;AAAA,cACL,GAAG,OAAA;AAAA,cACH,QAAQ,SAAA,EAAW,MAAA;AAAA,cACnB,IAAA,EAAM,WAAW,IAAA,IAAQ;AAAA,aAC3B;AAAA,UACF;AAAA,QACF;AAAA;AACF;AAAA,GACF;AAEJ,CAAC;AChJM,IAAM,mBAAA,GAAsB,YAAA,CAAa,iBAAiB,CAAA,CAAE,CAAA,KAAA,KAAS;AAC1E,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,GAAG,MAAK,GAAI,KAAA;AACxC,EAAA,uBAAOA,IAAC,WAAA,EAAA,EAAa,GAAG,MAAM,KAAA,EAAO,EAAE,OAAM,EAAG,CAAA;AAClD,CAAC;ACHM,IAAM,iBAAA,GAAoB,YAAA,CAAa,eAAe,CAAA,CAAE,CAAA,aAAA,KAAiB;AAC9E,EAAA,uBAAOA,GAAAA,CAAC,KAAA,EAAA,EAAO,GAAG,aAAA,EAAe,CAAA;AACnC,CAAC;ACFM,IAAM,eAAe,cAAA,CAAe,UAAU,EAAE,CAAC,EAAE,YAAW,KAAM;AACzE,EAAA,MAAM,EAAE,MAAM,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAM,GAAG,MAAK,GAAI,UAAA;AACrD,EAAA,MAAM,GAAA,GAAM,GAAG,YAAA,CAAa,EAAE,KAAK,IAAA,EAAM,KAAA,EAAO,QAAQ,CAAA;AACxD,EAAA,uBACEA,GAAAA,CAAC,GAAA,EAAA,EAAE,MAAM,GAAA,EAAM,GAAG,MACf,QAAA,EAAA,IAAA,EACH,CAAA;AAEJ,CAAC;ACgBM,IAAM,oBAAoB,cAAA,CAAe,eAAe,EAAE,CAAC,EAAE,YAAW,KAAM;AACnF,EAAA,MAAM;AAAA,IACJ,OAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,GAAA;AAAA,IACA,MAAA,GAAS,KAAA;AAAA,IACT,GAAG;AAAA,GACL,GAAI,UAAA;AACJ,EAAA,MAAM,GAAA,GAAMO,OAAoD,IAAI,CAAA;AACpE,EAAA,MAAM,aAA0D,OAAA,GAAU,CAAC,GAAG,OAAO,IAAI,EAAC;AAG1F,EAAA,UAAA,CAAW,QAAQ,CAAA,MAAA,KAAU;AAC3B,IAAA,MAAA,CAAO,MAAA,GAAS,CAAC,KAAA,KAAe;AAC9B,MAAA,IAAIC,aAAAA,CAAc,KAAK,CAAA,EAAG;AACxB,QAAA,uBACER,IAACS,UAAAA,CAAW,SAAA,EAAX,EAAqB,KAAA,EAAO,EAAE,WAAW,GAAA,EAAK,QAAA,EAAU,QAAO,EAC9D,QAAA,kBAAAT,IAAC,KAAA,EAAA,EAAK,QAAA,EAAA,IAAA,CAAK,UAAU,KAAA,EAAO,IAAA,EAAM,CAAC,CAAA,EAAE,CAAA,EACvC,CAAA;AAAA,MAEJ,CAAA,MAAA,IAAW,OAAO,KAAA,KAAU,QAAA,EAAU;AACpC,QAAA,IAAI;AACF,UAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAC5B,UAAA,IAAIQ,aAAAA,CAAc,GAAG,CAAA,EAAG;AACtB,YAAA,uBACER,IAACS,UAAAA,CAAW,SAAA,EAAX,EAAqB,KAAA,EAAO,EAAE,WAAW,GAAA,EAAK,QAAA,EAAU,QAAO,EAC9D,QAAA,kBAAAT,IAAC,KAAA,EAAA,EAAK,QAAA,EAAA,IAAA,CAAK,UAAU,GAAA,EAAK,IAAA,EAAM,CAAC,CAAA,EAAE,CAAA,EACrC,CAAA;AAAA,UAEJ;AACA,UAAA,OAAO,KAAA;AAAA,QACT,CAAA,CAAA,MAAQ;AACN,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF,CAAA,MAAO;AACL,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF,CAAA;AAAA,EACF,CAAC,CAAA;AAED,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,UAAA,CAAW,IAAA,CAAK;AAAA,MACd,KAAA,EAAO,cAAA;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,MAAA,EAAQ,CAAC,MAAA,KAAgB,WAAA,CAAY,SAAS,MAAM;AAAA,KACrD,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAAuB;AACzC,IAAA,MAAM,IAAA,GAAO,WAAW,KAAA,CAAM;AAAA,MAC5B,IAAA,EAAM,MAAA;AAAA,MACN,MAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAA,EAAQ,UAAA;AAAA,MACR;AAAA,KACD,CAAA;AACD,IAAA,uBAAOA,GAAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAY,IAAA,EAAY,iBAAiB,OAAA,EAAS,CAAA;AAAA,EACzE,CAAA;AAEA,EAAA,MAAM,eAAe,MAAA,KAAW,MAAM,YAAY,MAAA,EAAQ,GAAA,CAAI,SAAS,IAAI,CAAA,CAAA;AAE3E,EAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAAwB;AAI3C,IAAA,IAAI,MAAM,IAAA,EAAM;AACd,MAAA,OAAO;AAAA,QACL,KAAA,EAAO,KAAK,IAAA,CAAK,IAAA;AAAA,QACjB,KAAA,EAAO,KAAK,IAAA,CAAK;AAAA,OACnB;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,OAAO,IAAA,EAAM,IAAA;AAAA,MACb,OAAO,IAAA,EAAM;AAAA,KACf;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,kBAAkB,CAAC,EAAE,IAAA,EAAM,IAAA,EAAM,SAAQ,KAAwB;AACrE,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,OAAOU,KAAAA;AAAA,QACL;AAAA,UACE,IAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,wBAAA,CAAyB,SAAS,MAAM;AAAA,OAC1C;AAAA,IACF,CAAA,MAAO;AACL,MAAA,OAAO;AAAA,QACL,GAAG,OAAA;AAAA,QACH,IAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,UAAU,CAAC,EAAE,IAAA,EAAM,IAAA,EAAM,SAAQ,KAAwB;AAC7D,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,OAAOA,KAAAA;AAAA,QACL;AAAA,UACE,IAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,wBAAA,CAAyB,SAAS,IAAI;AAAA,OACxC;AAAA,IACF,CAAA,MAAO;AACL,MAAA,OAAO;AAAA,QACL,GAAG,OAAA;AAAA,QACH,IAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,YAAY,KAAK,CAAA;AAEpC,EAAA,uBACEV,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,UAAA;AAAA,MACC,GAAG,IAAA;AAAA,MACJ,GAAA;AAAA,MACA,OAAA,EAAS,UAAA;AAAA,MACT,UAAA;AAAA,MACA,MAAA,EAAQ,YAAA;AAAA,MACR,WAAA;AAAA,MACA,OAAA,EAAS;AAAA,QACP,GAAA;AAAA,QACA,MAAA;AAAA,QACA,YAAA,EAAc,eAAA;AAAA,QACd,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA;AAAA,GACF;AAEJ,CAAC;ACrKM,IAAM,cAAA,GAAiB,YAAA,CAAa,YAAY,CAAA,CAAE,CAAA,aAAA,KAAiB;AACxE,EAAA,MAAM,EAAE,MAAM,KAAA,EAAO,OAAA,EAAS,QAAQ,KAAA,EAAO,GAAG,MAAK,GAAI,aAAA;AACzD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIC,QAAAA,EAAsD;AACpG,EAAA,MAAM,WAAW,KAAA,EAAM;AAEvB,EAAAI,UAAU,MAAM;AACd,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,QAAA,CACG,GAAA,CAA8D,MAAM,CAAA,CACpE,IAAA,CAAK,CAAA,QAAA,KAAY;AAChB,QAAA,kBAAA,CAAmB,UAAU,OAAO,CAAA;AAAA,MACtC,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AACX,QAAA,kBAAA,CAAmB,EAAE,CAAA;AAAA,MACvB,CAAC,CAAA;AAAA,IACL,WAAW,OAAA,EAAS;AAClB,MAAA,kBAAA,CAAmB,OAAO,CAAA;AAAA,IAC5B;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAEpB,EAAA,uBAAOL,GAAAA,CAAC,MAAA,EAAA,EAAQ,GAAG,IAAA,EAAM,SAAS,eAAA,EAAiB,KAAA,EAAO,EAAE,KAAA,EAAM,EAAG,CAAA;AACvE,CAAC;ACpBM,IAAM,kBAAkB,cAAA,CAAe,aAAa,EAAE,CAAC,EAAE,YAAW,KAAM;AAC/E,EAAA,MAAM,EAAE,OAAA,EAAS,MAAA,EAAQ,KAAK,IAAA,EAAM,UAAA,EAAY,QAAO,GAAI,UAAA;AAC3D,EAAA,MAAM,WAAW,KAAA,EAAM;AAEvB,EAAAK,UAAU,MAAM;AACd,IAAA,MAAM,SAAA,GAAY,aAAa,UAAU,CAAA;AACzC,IAAA,MAAM,SAAA,GAAY,MAAA,IAAU,wBAAA,CAAyB,SAAA,EAAW,MAAM,CAAA;AACtE,IAAA,MAAM,OAAA,GAAU,MAAA,IAAU,wBAAA,CAAyB,SAAA,EAAW,IAAI,CAAA;AAElE,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,QAAA,CACG,OAAA,CAAqC;AAAA,QACpC,MAAA;AAAA,QACA,GAAA;AAAA,QACA,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM;AAAA,OACP,CAAA,CAEA,IAAA,CAAK,CAAA,GAAA,KAAO;AACX,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,YAAA,CAAa,OAAA,EAAS,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAAA,QACrC;AAAA,MACF,CAAC,CAAA,CACA,KAAA,CAAM,CAAA,GAAA,KAAO;AACZ,QAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,MACnB,CAAC,CAAA;AAAA,IACL;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,IAAA;AACT,CAAC;ACjCM,IAAM,YAAA,GAAe,eAAe,UAAU,CAAA,CAAuB,CAAC,EAAE,UAAA,EAAY,QAAO,KAAM;AACtG,EAAA,MAAM,EAAE,MAAK,GAAI,UAAA;AAGjB,EAAA,MAAM,SAAS,IAAA,CAAK,OAAA,CAAQ,cAAA,EAAgB,CAAC,QAAQ,OAAA,KAAY;AAC/D,IAAA,OAAOH,MAAAA,CAAO,MAAA,EAAQ,OAAO,CAAA,IAAK,EAAA;AAAA,EACpC,CAAC,CAAA;AAED,EAAA,uBAAOF,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,EAAO,CAAA;AACvB,CAAC;ACJM,IAAM,aAAA,GAAgB,eAAe,WAAW,CAAA,CAAuB,CAAC,EAAE,UAAA,EAAY,QAAO,KAAM;AACxG,EAAA,MAAM,EAAE,SAAS,MAAA,EAAQ,MAAA,EAAQ,MAAM,GAAA,EAAK,UAAA,EAAY,GAAG,IAAA,EAAK,GAAI,UAAA;AACpE,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,YAAA,EAAa;AACjC,EAAA,MAAM,WAAW,KAAA,EAAM;AAEvB,EAAA,IAAI,aAAwB,EAAC;AAE7B,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,IAAI,SAAA,GAAY,IAAA;AAEhB,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,SAAA,GAAY,OAAA,CAAQ,IAAI,UAAU,CAAA;AAAA,IACpC;AAEA,IAAA,MAAM,MAAA,GAAS,GAAA,CAAI,OAAA,CAAQ,gBAAA,EAAkB,CAAC,MAAA,EAAQ,GAAA,KAAQE,MAAAA,CAAO,SAAA,EAAW,GAAG,CAAA,IAAK,EAAE,CAAA;AAC1F,IAAA,QAAA,CAAS,GAAA,CAAuB,MAAM,CAAA,CAAE,IAAA,CAAK,CAAA,GAAA,KAAO;AAClD,MAAA,UAAA,GAAa,MAAM,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAA,GAAI,GAAA,CAAI,OAAO,EAAC;AAAA,IACrD,CAAC,CAAA;AAAA,EACH,CAAA,MAAO;AACL,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACvB,MAAA,UAAA,GAAa,IAAA;AAAA,IACf,CAAA,MAAO;AAEL,MAAA,MAAM,KAAA,GAAQ,IAAA,EAAM,KAAA,CAAM,cAAc,CAAA;AACxC,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,MAAM,MAAA,GAASA,MAAAA,CAAO,MAAA,EAAQ,KAAA,CAAM,CAAC,CAAC,CAAA;AACtC,QAAA,UAAA,GAAa,UAAU,EAAC;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,YAAA,GAAe,MAAA,KAAW,MAAM,WAAA,CAAY,MAAM,CAAA,CAAA;AAExD,EAAA,uBAAOF,IAAC,KAAA,EAAA,EAAO,GAAG,MAAM,MAAA,EAAgB,OAAA,EAAkB,MAAA,EAAQ,YAAA,EAAc,UAAA,EAAwB,CAAA;AAC1G,CAAC;ACxCM,IAAM,mBAAmB,cAAA,CAAe,cAAc,EAAE,CAAC,EAAE,YAAW,KAAM;AACjF,EAAA,MAAM,EAAE,MAAK,GAAI,UAAA;AACjB,EAAA,MAAM,QAAA,GAAW,YAAY,IAAI,CAAA;AACjC,EAAA,uBAAOA,GAAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAS,CAAA;AACxB,CAAC;ACGD,SAAS,cAAA,CAAe,EAAE,KAAA,EAAM,EAAwB;AACtD,EAAA,uBAAOA,IAAC,KAAA,EAAA,EAAK,QAAA,EAAA,IAAA,CAAK,UAAU,KAAA,EAAO,IAAA,EAAM,CAAC,CAAA,EAAE,CAAA;AAC9C;AAEA,IAAM,WAAoC,CAAA,KAAA,KAAS;AACjD,EAAA,MAAM,EAAE,QAAO,GAAI,KAAA;AAEnB,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AAEpB,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACb,0BAAAA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,IAAA,EAAM,MAAA,EAAQ,CAAA,EAClC,CAAA;AAEJ,CAAA;AAEA,IAAM,cAAA,GAAiB,iBAAA,CAAkB,QAAA,EAAU,EAAE,gBAAgB,CAAA;AAErE,IAAO,uBAAA,GAAQ;;;ACHf,gBAAA,CAAiB,UAAU,cAAc,CAAA;AACzC,gBAAA,CAAiB,QAAQ,YAAY,CAAA;AACrC,gBAAA,CAAiB,eAAe,kBAAkB,CAAA;AAClD,gBAAA,CAAiB,cAAc,iBAAiB,CAAA;AAChD,gBAAA,CAAiB,gBAAgB,oBAAoB,CAAA;AACrD,gBAAA,CAAiB,OAAO,WAAW,CAAA;AACnC,gBAAA,CAAiB,QAAQ,YAAY,CAAA;AACrC,gBAAA,CAAiB,QAAQ,YAAY,CAAA;AACrC,gBAAA,CAAiB,iBAAiB,oBAAoB,CAAA;AACtD,gBAAA,CAAiB,gBAAgB,mBAAmB,CAAA;AACpD,gBAAA,CAAiB,cAAc,iBAAiB,CAAA;AAChD,gBAAA,CAAiB,QAAQ,YAAY,CAAA;AACrC,gBAAA,CAAiB,cAAc,iBAAiB,CAAA;AAChD,gBAAA,CAAiB,UAAU,cAAc,CAAA;AACzC,gBAAA,CAAiB,WAAW,eAAe,CAAA;AAC3C,gBAAA,CAAiB,QAAQ,YAAY,CAAA;AACrC,gBAAA,CAAiB,SAAS,aAAa,CAAA;AACvC,gBAAA,CAAiB,YAAY,gBAAgB,CAAA","file":"index.js","sourcesContent":["import type { ComponentType } from 'react'\n\nimport type { SchemaType } from '../schemas'\n\n/**\n * Renderer 注册表\n * 用于存储和管理所有的 renderer 组件\n */\nexport const rendererRegistry = new Map<SchemaType, ComponentType<any>>()\n\n/**\n * 注册 renderer 组件\n * @param type - schema 类型\n * @param component - renderer 组件\n */\nexport function registerRenderer(type: SchemaType, component: ComponentType<any>) {\n rendererRegistry.set(type, component)\n}\n\n/**\n * 获取 renderer 组件\n * @param type - schema 类型\n * @returns renderer 组件\n */\nexport function getRenderer(type: SchemaType): ComponentType<any> | undefined {\n return rendererRegistry.get(type)\n}\n","import type { BaseSchema, SchemaType } from '../schemas'\nimport { getRenderer } from './renderer-registry'\n\n/**\n * 渲染 schema 数组\n * @param array - schema 数组\n * @param source - 外部数据源,传递给子组件\n * @returns 渲染的组件数组\n */\nexport function renderArray<T extends BaseSchema, S extends object>(array?: T[], source?: S) {\n return array?.map((item, index) => {\n const { type } = item\n const RendererComponent = getRenderer(type as SchemaType)\n\n if (RendererComponent) {\n return <RendererComponent data={item} source={source} key={`${type}${index}`} />\n }\n\n return null\n })\n}\n","import { APP_ID_HEADER, useToolkitStore } from '@flow97/react-toolkit'\nimport { App } from 'antd'\nimport ky, {\n type AfterResponseHook,\n type BeforeErrorHook,\n type BeforeRequestHook,\n type HTTPError,\n type KyInstance,\n type Options as KyOptions,\n} from 'ky'\nimport { useNavigate } from 'react-router'\n\n/** HTTP 响应错误,包含响应和数据 */\nexport class HttpResponseError extends Error {\n response?: Response\n data?: unknown\n\n constructor(message: string, response?: Response, data?: unknown) {\n super(message)\n this.name = 'HttpResponseError'\n this.response = response\n this.data = data\n }\n}\n\n/** 默认状态码字段配置 */\nconst DEFAULT_STATUS_FIELDS: Record<string, readonly number[]> = {\n code: [0, 1, 200],\n status: [0, 1, 200],\n errno: [0, 1, 200],\n} as const\n\n/** 默认错误消息字段 */\nconst DEFAULT_ERROR_FIELDS = ['msg', 'message', 'error'] as const\n\n/** HTTP 状态码常量 */\nconst HTTP_STATUS = {\n OK: 200,\n UNAUTHORIZED: 401,\n FORBIDDEN: 403,\n UNREGISTERED: 412,\n} as const\n\n/** 请求超时时间(毫秒) */\nconst REQUEST_TIMEOUT = 30000\n\n/** 响应类型 */\nexport type ResponseType = 'json' | 'blob' | 'text' | 'arrayBuffer' | 'formData'\n\n/** 通用请求选项接口 */\nexport interface RequestOptions extends KyOptions {\n /** 响应类型 */\n responseType?: ResponseType\n /** 是否使用全局模式,为 true 时 app-id header 设置为 global */\n isGlobalMode?: boolean\n}\n\n/** HTTP 客户端方法接口 */\nexport interface KyMethods {\n get: <T = unknown>(url: string, options?: RequestOptions) => Promise<T>\n post: <T = unknown>(url: string, data?: unknown, options?: RequestOptions) => Promise<T>\n put: <T = unknown>(url: string, data?: unknown, options?: RequestOptions) => Promise<T>\n delete: <T = unknown>(url: string, options?: RequestOptions) => Promise<T>\n patch: <T = unknown>(url: string, data?: unknown, options?: RequestOptions) => Promise<T>\n /** 通用请求方法 */\n request: <T = unknown>(options: RequestOptions & { url: string; method?: string }) => Promise<T>\n instance: KyInstance\n}\n\n/** 判断响应是否成功 */\nfunction isSuccessResponse(data: unknown, status: number): boolean {\n if (status < HTTP_STATUS.OK || status >= 300) return false\n if (!data || typeof data !== 'object') return true\n\n const dataObj = data as Record<string, unknown>\n const hasBusinessCode = Object.keys(DEFAULT_STATUS_FIELDS).some(\n field => dataObj[field] !== undefined && dataObj[field] !== null,\n )\n\n if (hasBusinessCode) {\n return Object.entries(DEFAULT_STATUS_FIELDS).every(([field, allowedCodes]) => {\n const value = dataObj[field]\n if (value === undefined || value === null) return true\n return typeof value === 'number' && allowedCodes.includes(value)\n })\n }\n return true\n}\n\n/** 提取错误消息 */\nfunction extractErrorMessage(data: unknown): string {\n if (!data || typeof data !== 'object') return 'Unknown error'\n for (const field of DEFAULT_ERROR_FIELDS) {\n const value = (data as Record<string, unknown>)[field]\n if (value) return String(value)\n }\n return 'Unknown error'\n}\n\n/** 根据响应类型处理响应数据 */\nasync function processResponse(response: Response, responseType?: ResponseType): Promise<unknown> {\n switch (responseType) {\n case 'text':\n return response.text()\n case 'arrayBuffer':\n return response.arrayBuffer()\n case 'formData':\n return response.formData()\n case 'json':\n return response.json()\n default:\n return response\n }\n}\n\n/**\n * HTTP 客户端 Hook\n *\n * @example\n * ```tsx\n * const client = useKy()\n *\n * // GET 请求\n * const data = await client.get<User[]>('/api/users')\n *\n * // POST 请求\n * const result = await client.post<User>('/api/users', { name: 'John' })\n *\n * // 全局模式(app-id: global)\n * const games = await client.get('/api/games', { isGlobalMode: true })\n * ```\n */\nexport function useKy(options?: Omit<KyOptions, 'hooks'>): KyMethods {\n const { notification } = App.useApp()\n const navigate = useNavigate()\n const {\n token: { token, clearToken },\n context: { apiBaseUrl, loginPath },\n game: { appId },\n } = useToolkitStore()\n\n // beforeRequest: 设置 Authorization 和 app-id headers\n const beforeRequestHook: BeforeRequestHook = (request, opts) => {\n if (token) {\n request.headers.set('Authorization', `Bearer ${token}`)\n }\n const ctx = opts.context as { isGlobalMode?: boolean } | undefined\n const finalIsGlobal = ctx?.isGlobalMode ?? !appId\n if (!request.headers.has(APP_ID_HEADER)) {\n request.headers.set(APP_ID_HEADER, finalIsGlobal ? 'global' : encodeURIComponent(String(appId)))\n }\n }\n\n // beforeError: 处理 HTTP 错误\n const beforeErrorHook: BeforeErrorHook = async (error: HTTPError) => {\n if (!error.response) {\n notification.error({ message: 'Network Error', description: error.message || 'Network request failed' })\n return error\n }\n\n const { status } = error.response\n let data: unknown\n try {\n const contentType = error.response.headers.get('content-type') || ''\n if (contentType.includes('application/json') || contentType.startsWith('text/')) {\n data = await error.response.clone().json()\n }\n } catch {\n /* ignore */\n }\n\n const errorMessage = extractErrorMessage(data)\n\n switch (status) {\n case HTTP_STATUS.UNAUTHORIZED:\n clearToken()\n loginPath && navigate(loginPath, { replace: true })\n break\n case HTTP_STATUS.UNREGISTERED:\n clearToken()\n loginPath && navigate(`${loginPath}?unregistered=true`, { replace: true })\n break\n case HTTP_STATUS.FORBIDDEN:\n notification.error({ message: '访问被禁止', description: '您没有权限访问此资源。' })\n break\n default:\n notification.error({ message: 'Request failed', description: errorMessage })\n }\n return error\n }\n\n // afterResponse: 处理业务状态码\n const afterResponseHook: AfterResponseHook = async (_request, _options, response) => {\n const contentType = response.headers.get('content-type') || ''\n if (!contentType.includes('application/json')) return response\n\n let data: unknown\n try {\n data = await response.clone().json()\n } catch {\n return response\n }\n\n if (isSuccessResponse(data, response.status)) {\n return new Response(JSON.stringify(data), {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n })\n }\n\n const errorMessage = extractErrorMessage(data)\n notification.error({ message: 'Request failed', description: errorMessage })\n throw new HttpResponseError(errorMessage, response, data)\n }\n\n const instance = ky.create({\n prefixUrl: apiBaseUrl,\n retry: 0,\n timeout: REQUEST_TIMEOUT,\n ...options,\n hooks: {\n beforeRequest: [beforeRequestHook],\n beforeError: [beforeErrorHook],\n afterResponse: [afterResponseHook],\n },\n })\n\n // 统一请求方法\n const request = async <T>(method: string, url: string, data?: unknown, opts?: RequestOptions): Promise<T> => {\n const { responseType = 'json', isGlobalMode: reqGlobalMode, context, ...reqOptions } = opts || {}\n\n const finalContext: Record<string, unknown> = {\n ...context,\n responseType,\n ...(reqGlobalMode !== undefined && { isGlobalMode: reqGlobalMode }),\n }\n\n const finalOptions: KyOptions & { context?: Record<string, unknown> } = {\n ...reqOptions,\n context: finalContext,\n }\n\n if (data !== undefined) {\n if (\n data instanceof FormData ||\n data instanceof URLSearchParams ||\n data instanceof Blob ||\n typeof data === 'string' ||\n data instanceof ArrayBuffer ||\n ArrayBuffer.isView(data)\n ) {\n finalOptions.body = data as BodyInit\n } else {\n finalOptions.json = data\n }\n }\n\n const response = await instance(url, { method, ...finalOptions })\n return processResponse(response, responseType) as Promise<T>\n }\n\n return {\n get: <T = unknown>(url: string, opts?: RequestOptions) => request<T>('GET', url, undefined, opts),\n post: <T = unknown>(url: string, data?: unknown, opts?: RequestOptions) => request<T>('POST', url, data, opts),\n put: <T = unknown>(url: string, data?: unknown, opts?: RequestOptions) => request<T>('PUT', url, data, opts),\n delete: <T = unknown>(url: string, opts?: RequestOptions) => request<T>('DELETE', url, undefined, opts),\n patch: <T = unknown>(url: string, data?: unknown, opts?: RequestOptions) => request<T>('PATCH', url, data, opts),\n request: <T = unknown>(opts: RequestOptions & { url: string; method?: string }) => {\n const { url, method = 'GET', ...rest } = opts\n return request<T>(method, url, undefined, rest)\n },\n instance,\n }\n}\n","import { z } from 'zod'\n\nexport const baseSchema = z.object({\n type: z.string().describe('组件类型'),\n storeId: z\n .string()\n .optional()\n .describe(\n '存储 ID。用于存储表单编辑、Service 组件(目前未支持) 发起 HTTP 请求产生的值。组件间交互时用到,数据会以此 ID 作为 key 存储到 Map 中。',\n ),\n storeIdRef: z\n .string()\n .optional()\n .describe('关联组件的 ID,会根据此 ID 去 store 中查找数据,关联的数据会可以被组件访问。'),\n})\n\nexport type BaseSchema = z.infer<typeof baseSchema>\n","import { string, z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const buttonSchema = baseSchema\n .extend({\n type: z.literal('button'),\n code: z.string().optional().describe('权限编号'),\n buttonType: z\n .enum(['primary', 'default', 'dashed', 'link', 'text'])\n .optional()\n .describe('按钮类型,影响按钮的显示样式'),\n action: z.enum(['modal', 'download']).optional(),\n text: z.string().optional(),\n data: z.any().optional().describe('自定义数据'),\n method: z.enum(['GET', 'POST']).optional().describe('请求方法,默认 GET'),\n url: string().optional().describe('请求地址'),\n params: z.record(z.string(), z.any()).optional().describe('请求时携带的请求参数'),\n body: z.record(z.string(), z.any()).optional().describe('请求携带的请求体'),\n showLoading: z.boolean().default(true).describe('是否显示加载状态'),\n modal: z\n .object({\n title: z.string(),\n body: z.any().array().optional(),\n data: z.record(z.string(), z.any()).optional(),\n width: z.number().optional(),\n })\n .optional(),\n })\n .refine(\n data => {\n // 当 action 是 'download' 时,url 字段必须存在且不为空\n if (data.action === 'download' && !data.url) {\n return false\n }\n\n return true\n },\n {\n message: \"When action is 'download', 'url' is required.\",\n path: ['url'],\n },\n )\n .refine(\n data => {\n // 当 action 是 'dialog' 时,dialog 字段必须存在且不为空\n if (data.action === 'modal' && !data.modal) {\n return false\n }\n\n return true\n },\n {\n message: \"When action is 'modal', 'modal' field is required.\",\n path: ['modal'],\n },\n )\n\nexport type ButtonSchema = z.infer<typeof buttonSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nconst baseCardSchema = baseSchema.extend({\n type: z.literal('card'),\n title: z.string().optional(),\n extra: z.any().array().optional(),\n})\n\nconst cardBodySchema = z.lazy(() => z.any().array())\n\ntype Card = z.infer<typeof baseCardSchema> & {\n body?: z.infer<typeof cardBodySchema>\n}\n\nexport const cardSchema: z.ZodType<Card> = baseCardSchema.extend({\n body: cardBodySchema.optional(),\n})\n\nexport type CardSchema = z.infer<typeof cardSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const formItemSchema = baseSchema.extend({\n label: z.string(),\n name: z.string(),\n preserve: z.boolean().optional(),\n span: z.number().optional().describe('栅格占位格数'),\n value: z.any().optional().describe('字段默认值,会作为 Form.Item 的 initialValue'),\n rules: z\n .object({\n type: z.enum(['string', 'number', 'boolean', 'integer']).optional().describe('字段数据类型'),\n required: z.boolean().optional().describe('是否为必选字段'),\n message: z.string().optional().describe('错误信息,不设置时会通过模板自动生成'),\n min: z\n .number()\n .optional()\n .describe('必须设置 type:string 类型为字符串最小长度;number 类型时为最小值;array 类型时为数组最小长度'),\n max: z\n .number()\n .optional()\n .describe('必须设置 type:string 类型为字符串最大长度;number 类型时为最大值;array 类型时为数组最大长度'),\n })\n .array()\n .optional()\n .describe('表单校验规则'),\n})\n\nexport type FormItemSchema = z.infer<typeof formItemSchema>\n","import { z } from 'zod'\n\nimport { formItemSchema } from './form-item'\n\nexport const datePickerSchema = formItemSchema.extend({\n type: z.literal('date-picker'),\n showTime: z.boolean().optional().describe('是否显示时间选择器'),\n showNow: z.boolean().optional().describe('显示当前日期时间的快捷选择'),\n showWeek: z.boolean().optional().describe('展示当前周'),\n utc: z.boolean().optional().describe('是否使用UTC时间'),\n})\n\nexport type DatePickerSchema = z.infer<typeof datePickerSchema>\n","import { z } from 'zod'\n\nimport { formItemSchema } from './form-item'\n\nexport const dateRangeSchema = formItemSchema\n .extend({\n type: z.literal('date-range'),\n allowEmpty: z.tuple([z.boolean(), z.boolean()]).optional().describe('是否允许为空'),\n showTime: z.boolean().optional().describe('是否显示时间选择器'),\n utc: z.boolean().optional().describe('是否使用UTC时间'),\n })\n .describe('日期范围选择器。该组件的值为数组类型,需要自己做映射。')\n\nexport type DateRangeSchema = z.infer<typeof dateRangeSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\n/**\n * 描述列表组件,用于展示一组描述信息\n * 接受的数据类型\n * {\n * label: string | number\n * value: string | number\n * }[]\n */\n\nexport const descriptionsSchema = baseSchema\n .extend({\n type: z.literal('descriptions'),\n title: z.string().optional().describe('标题'),\n dataIndex: z.string().optional().describe('JMESPath'),\n dataSource: z.any().optional().describe('数据源'),\n column: z.number().optional().describe('列数'),\n })\n\n .describe('描述列表组件,用于展示一组描述信息')\n\nexport type DescriptionsSchema = z.infer<typeof descriptionsSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const divSchema = baseSchema.extend({\n type: z.literal('div'),\n body: z.any().array().optional().describe('子元素'),\n style: z.record(z.string(), z.any()).optional().describe('样式'),\n})\n\nexport type DivSchema = z.infer<typeof divSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const flexSchema = baseSchema.extend({\n type: z.literal('flex'),\n vertical: z.boolean().optional().describe('flex 主轴的方向是否垂直,使用 flex-direction: column'),\n wrap: z.boolean().optional().describe('设置元素单行显示还是多行显示'),\n justify: z\n .enum(['flex-start', 'center', 'flex-end', 'space-between', 'space-around', 'space-evenly'])\n .optional()\n .describe('设置元素在主轴方向上的对齐方式'),\n align: z\n .enum(['flex-start', 'center', 'flex-end', 'baseline', 'stretch'])\n .optional()\n .describe('设置元素在交叉轴方向上的对齐方式'),\n gap: z.union([z.number(), z.string()]).optional().describe('设置网格之间的间隙'),\n body: z.any().array().optional().describe('子元素'),\n style: z.record(z.string(), z.any()).optional().describe('样式'),\n})\n\nexport type FlexSchema = z.infer<typeof flexSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const formSchema = baseSchema.extend({\n type: z.literal('form'),\n name: z.string().optional(),\n preserve: z.boolean().optional(),\n fields: z.any().array().optional().describe('表单项配置'),\n initialValues: z.record(z.string(), z.any()).optional().describe('设置表单的初始值'),\n layout: z\n .union([z.literal('horizontal'), z.literal('inline'), z.literal('vertical')])\n .default('horizontal')\n .describe('表单布局'),\n labelWidth: z\n .union([z.number(), z.string()])\n .optional()\n .describe('标签宽度,当为数字时表示在 24 列的栅格中占据多少列,当为 string 时使用 flex 布局'),\n labelAlign: z.enum(['left', 'right']).optional().describe('标签对齐方式'),\n clearOnDestroy: z.boolean().optional().describe('当表单被卸载时清空表单值'),\n gutter: z\n .union([\n z.number().describe('横向间隔'),\n z.tuple([z.number().describe('横向间隔'), z.number().describe('纵向间隔')]),\n ])\n .default(10)\n .describe('Grid 栅格间隔'),\n})\n\nexport type FormSchema = z.infer<typeof formSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const tableSchema = baseSchema\n .extend({\n type: z.literal('table'),\n rowKey: z.string().optional().describe('表格行 key 的取值,唯一标识'),\n columns: z\n .object({\n title: z.string(),\n dataIndex: z.string().optional().describe('数据源的字段名,支持点语法'),\n width: z.union([z.number(), z.string()]).optional(),\n align: z.enum(['left', 'right', 'center']).optional(),\n tpl: z.string().optional().describe('模板字符串。支持模板字符串,可以在此处做数据映射。(暂时不支持)'),\n })\n .array()\n .optional()\n .describe('表格列配置'),\n footer: z.any().array().optional().describe('表格底部'),\n api: z.string().optional().describe('数据查询地址,只支持 GET 请求,优先级高于 data'),\n data: z.union([z.any().array(), z.string()]).optional().describe('表格数据源,可以是数组或者变量。'),\n bordered: z.boolean().optional(),\n size: z.enum(['small', 'middle', 'large']).default('middle'),\n tableLayout: z\n .enum(['fixed', 'auto'])\n .optional()\n .describe('表格元素的 table-layout 属性,设为 fixed 表示内容不会影响列的布局'),\n pagination: z\n .union([\n z.literal(false),\n z.object({\n current: z.number().optional(),\n pageSize: z.number().optional(),\n total: z.number().optional(),\n }),\n ])\n .default(false)\n .describe('分页配置'),\n })\n .describe('表格组件,如果需要发起请求,建议使用 query-list。')\n\nexport type TableSchema = z.infer<typeof tableSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\nimport { buttonSchema } from './button'\nimport { formSchema } from './form'\nimport { tableSchema } from './table'\n\n/**\n * 无限列表组件\n * 接口返回的数据格式\n * {\n * rows: any[]\n * rowKey: string\n * hasMore: boolean\n * }\n */\n\nexport const infiniteListSchema = baseSchema.extend({\n type: z.literal('infinite-list'),\n url: z.string(),\n params: z.record(z.string(), z.any()).optional().describe('查询参数。支持模板字符串,可以在此处做数据映射。'),\n code: z.string().optional().describe('权限编号'),\n extra: z.any().array().optional().describe('表格额外配置'),\n actions: buttonSchema.array().optional().describe('表格操作。会自动把该行的表格数据沿着组件树逐级往下传递。'),\n formLayout: formSchema.shape.layout,\n gutter: formSchema.shape.gutter,\n fields: formSchema.shape.fields,\n initialValues: formSchema.shape.initialValues,\n rowKey: tableSchema.shape.rowKey,\n tableLayout: tableSchema.shape.tableLayout,\n footer: tableSchema.shape.footer,\n columns: tableSchema.shape.columns,\n})\n\nexport type InfiniteListSchema = z.infer<typeof infiniteListSchema>\n","import { z } from 'zod'\n\nimport { formItemSchema } from './form-item'\n\nexport const inputNumberSchema = formItemSchema.extend({\n type: z.literal('input-number'),\n clearable: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n step: z.number().optional(),\n width: z.string().default('100px').describe('宽度'),\n controls: z.boolean().default(false).describe('是否使用控制按钮'),\n})\n\nexport type InputNumberSchema = z.infer<typeof inputNumberSchema>\n","import { z } from 'zod'\n\nimport { formItemSchema } from './form-item'\n\nexport const inputTextSchema = formItemSchema.extend({\n type: z.literal('input-text'),\n clearable: z.boolean().optional(),\n})\n\nexport type InputTextSchema = z.infer<typeof inputTextSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const linkSchema = baseSchema.extend({\n type: z.literal('link'),\n text: z.string().optional(),\n href: z.string(),\n target: z.enum(['_blank', '_self', '_parent', '_top']).default('_blank'),\n params: z.record(z.string(), z.any()).optional().describe('跳转时携带的查询参数'),\n})\n\nexport type LinkSchema = z.infer<typeof linkSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\nimport { buttonSchema } from './button'\nimport { formSchema } from './form'\nimport { tableSchema } from './table'\n\n/**\n * 查询列表组件\n * 接口返回的数据格式\n * {\n * rows: any[]\n * total: number\n * }\n */\n\nexport const queryListSchema = baseSchema.extend({\n type: z.literal('query-list'),\n identifier: z.string().optional().describe('组件唯一标识,未提供时自动生成'),\n url: z.string(),\n code: z.string().optional().describe('权限编号'),\n method: z.enum(['GET', 'POST']).default('GET'),\n onePage: z.boolean().optional(),\n headers: z.record(z.string(), z.any()).optional(),\n body: z.record(z.string(), z.any()).optional().describe('请求体。支持模板字符串,可以在此处做数据映射。'),\n params: z.record(z.string(), z.any()).optional().describe('查询参数。支持模板字符串,可以在此处做数据映射。'),\n extra: z.any().array().optional().describe('表格额外配置'),\n actions: buttonSchema.array().optional().describe('表格操作。会自动把该行的表格数据沿着组件树逐级往下传递。'),\n buttonsAlign: z.enum(['left', 'right', 'bottom']).optional(),\n formLayout: formSchema.shape.layout,\n gutter: formSchema.shape.gutter,\n fields: formSchema.shape.fields,\n initialValues: formSchema.shape.initialValues,\n rowKey: tableSchema.shape.rowKey,\n tableLayout: tableSchema.shape.tableLayout,\n footer: tableSchema.shape.footer,\n columns: tableSchema.shape.columns,\n})\n\nexport type QueryListSchema = z.infer<typeof queryListSchema>\n","import { z } from 'zod'\n\nimport { formItemSchema } from './form-item'\n\nexport const selectSchema = formItemSchema.extend({\n type: z.literal('select'),\n allowClear: z.boolean().optional().describe('是否显示清除按钮'),\n virtual: z.boolean().optional().describe('是否开启虚拟滚动,数据量大时开启可以提高性能'),\n showSearch: z.boolean().optional().describe('是否可搜索'),\n width: z.string().default('100px').describe('宽度'),\n options: z\n .array(z.object({ label: z.string(), value: z.string() }))\n .optional()\n .describe('选项列表'),\n optionFilterProp: z.string().default('label').describe('搜索过滤字段'),\n source: z.string().optional().describe('数据源'),\n})\n\nexport type SelectSchema = z.infer<typeof selectSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const serviceSchema = baseSchema\n .extend({\n type: z.literal('service'),\n method: z.enum(['GET', 'POST']).optional(),\n url: z.string().optional(),\n params: z.record(z.string(), z.any()).optional(),\n body: z.any().optional(),\n })\n .describe('数据请求组件,用于调用外部服务,支持 GET 和 POST 请求,返回的数据会存储到 store 中')\n\nexport type ServiceSchema = z.infer<typeof serviceSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const spanSchema = baseSchema\n .extend({\n type: z.literal('span'),\n text: z.string().describe('文字节点'),\n })\n .describe('插入 span 标签,用于输出文字或字符串模板')\n\nexport type SpanSchema = z.infer<typeof spanSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const viewportSchema = baseSchema.extend({\n type: z.literal('viewport'),\n body: z.any().array().optional().describe('视窗内容'),\n data: z.record(z.string(), z.any()).optional().describe('视窗数据'),\n})\n\nexport type ViewportSchema = z.infer<typeof viewportSchema>\n","import { z } from 'zod'\n\nimport type { BaseSchema } from './base'\nimport { baseSchema } from './base'\nimport type { ButtonSchema } from './button'\nimport { buttonSchema } from './button'\nimport type { CardSchema } from './card'\nimport { cardSchema } from './card'\nimport type { DatePickerSchema } from './date-picker'\nimport { datePickerSchema } from './date-picker'\nimport type { DateRangeSchema } from './date-range'\nimport { dateRangeSchema } from './date-range'\nimport type { DescriptionsSchema } from './descriptions'\nimport { descriptionsSchema } from './descriptions'\nimport type { DivSchema } from './div'\nimport { divSchema } from './div'\nimport type { FlexSchema } from './flex'\nimport { flexSchema } from './flex'\nimport type { FormSchema } from './form'\nimport { formSchema } from './form'\nimport type { FormItemSchema, formItemSchema } from './form-item'\nimport { infiniteListSchema } from './infinite-list'\nimport type { InputNumberSchema } from './input-number'\nimport { inputNumberSchema } from './input-number'\nimport type { InputTextSchema } from './input-text'\nimport { inputTextSchema } from './input-text'\nimport type { LinkSchema } from './link'\nimport { linkSchema } from './link'\nimport type { QueryListSchema } from './query-list'\nimport { queryListSchema } from './query-list'\nimport type { SelectSchema } from './select'\nimport { selectSchema } from './select'\nimport type { ServiceSchema } from './service'\nimport { serviceSchema } from './service'\nimport type { SpanSchema } from './span'\nimport { spanSchema } from './span'\nimport type { TableSchema } from './table'\nimport { tableSchema } from './table'\nimport type { ViewportSchema } from './viewport'\nimport { viewportSchema } from './viewport'\n\nconst _schemaUnion = z.union([\n buttonSchema,\n cardSchema,\n datePickerSchema,\n dateRangeSchema,\n descriptionsSchema,\n divSchema,\n flexSchema,\n formSchema,\n infiniteListSchema,\n inputNumberSchema,\n inputTextSchema,\n linkSchema,\n queryListSchema,\n selectSchema,\n serviceSchema,\n spanSchema,\n tableSchema,\n viewportSchema,\n descriptionsSchema,\n])\n\ntype SchemaUnion = z.infer<typeof _schemaUnion>\n\nexport type SchemaType = SchemaUnion['type']\n\nexport {\n baseSchema,\n buttonSchema,\n cardSchema,\n datePickerSchema,\n dateRangeSchema,\n descriptionsSchema,\n divSchema,\n flexSchema,\n formItemSchema,\n formSchema,\n infiniteListSchema,\n inputNumberSchema,\n inputTextSchema,\n linkSchema,\n queryListSchema,\n selectSchema,\n serviceSchema,\n spanSchema,\n tableSchema,\n viewportSchema,\n}\n\nexport type {\n BaseSchema,\n ButtonSchema,\n CardSchema,\n DatePickerSchema,\n DateRangeSchema,\n DescriptionsSchema,\n DivSchema,\n FlexSchema,\n FormItemSchema,\n FormSchema,\n InputNumberSchema,\n InputTextSchema,\n LinkSchema,\n QueryListSchema,\n SelectSchema,\n ServiceSchema,\n SpanSchema,\n TableSchema,\n ViewportSchema,\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { create } from 'zustand'\n\ninterface State {\n dataMap: Map<string, any>\n}\n\nexport const useDataStore = create<State>()(() => ({\n dataMap: new Map(),\n}))\n\nexport const setStoreData = (key: string, value: any) => {\n useDataStore.setState(prev => ({ dataMap: new Map(prev.dataMap).set(key, value) }))\n}\n\nexport const getStoreData = (key?: string) => {\n if (key) {\n return useDataStore.getState().dataMap.get(key)\n }\n}\n","// 用于匹配字符串变量\nexport const STRING_VAR_REG = /^\\${(.+)}$/\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Dayjs } from 'dayjs'\nimport { search } from 'jmespath'\n\nimport { STRING_VAR_REG } from '../constants'\n\ntype ValueOrNestedObject<T = any> = {\n [key: string]: T | ValueOrNestedObject<T>\n}\n\ntype Replaceable = string | ValueOrNestedObject\n\nexport function replaceValueWithJMESPath(source: object, target: object) {\n function replace(item: Replaceable): Replaceable {\n if (typeof item === 'string') {\n // 检查字符串是否符合 `${}` 形式\n const match = item.match(STRING_VAR_REG)\n if (match) {\n // 使用 JMESPath 查询 source 对象\n const result = search(source, match[1])\n return result\n }\n return item // 不是 `${}` 形式的字符串,保留原始值\n } else if (Array.isArray(item)) {\n return item.map(replace) // 递归处理数组元素\n } else if (typeof item === 'object' && item !== null) {\n const newObj: ValueOrNestedObject = {}\n\n Object.keys(item).forEach(key => {\n newObj[key] = replace(item[key])\n })\n\n return newObj\n }\n return item // 其他类型的值,保留原始值\n }\n\n return replace(target)\n}\n\nexport const addUtcOffset = (date: Dayjs) => {\n return date.clone().add(date.utcOffset(), 'minutes')\n}\n\nexport const minusUtcOffset = (date: Dayjs) => {\n return date.clone().add(-date.utcOffset(), 'minutes')\n}\n","import { useEffect, useState } from 'react'\nimport type { ZodType } from 'zod'\n\nimport type { BaseSchema } from '../schemas'\n\nexport function withParsedData<Schema extends BaseSchema>(schema: ZodType<Schema>) {\n return function <P extends object>(WrappedComponent: React.ComponentType<P & { parsedData: Schema }>) {\n const WithParsedDataComponent = (props: P & { data: Schema }) => {\n const { data, ...restProps } = props\n const [parsedData, setParsedData] = useState<Schema | null>(null)\n\n useEffect(() => {\n // NOTICE: 不要在此 catch error,让外部的 react-error-boundary 捕获错误\n const parsed = schema.parse(data)\n setParsedData(parsed)\n }, [data])\n\n if (!parsedData) {\n return null\n }\n\n return <WrappedComponent {...(restProps as P)} parsedData={parsedData} />\n }\n\n WithParsedDataComponent.displayName = `withParsedData(${WrappedComponent.displayName || WrappedComponent.name || 'Component'})`\n\n return WithParsedDataComponent\n }\n}\n","import { AuthButton, useModal } from '@flow97/react-toolkit'\nimport { Skeleton } from 'antd'\nimport { saveAs } from 'file-saver'\nimport { search } from 'jmespath'\nimport type { ReactNode } from 'react'\nimport { useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { renderArray } from '../core'\nimport { useKy } from '../libs/useKy'\nimport type { ButtonSchema } from '../schemas'\nimport { buttonSchema } from '../schemas'\nimport { getStoreData, setStoreData, useDataStore } from '../stores'\nimport { replaceValueWithJMESPath } from '../utils'\nimport { withParsedData } from './base'\n\nconst ModalButtonRenderer = <S extends object>({ data, source }: { data: ButtonSchema; source?: S }) => {\n const { text, buttonType, modal, storeIdRef, storeId, method, url, params, body, ...rest } = data\n\n const [content, setContent] = useState<ReactNode | null>(null)\n const kyClient = useKy()\n\n const { show, modal: modalElement } = useModal({\n title: modal?.title,\n content,\n width: modal?.width,\n destroyOnClose: true,\n afterOpen: async () => {\n setContent(<Skeleton />)\n\n let _content\n\n if (url) {\n const response = await kyClient.request<{ data: { data: unknown } }>({\n method,\n url,\n searchParams: params && replaceValueWithJMESPath(getStoreData(storeIdRef), params),\n json: body && replaceValueWithJMESPath(getStoreData(storeIdRef), body),\n })\n\n if (storeId) {\n setStoreData(storeId, response.data.data)\n }\n\n _content = renderArray(modal?.body, (response.data.data as object) || undefined)\n } else {\n _content = renderArray(modal?.body, source)\n }\n setContent(_content)\n },\n })\n\n return (\n <>\n <AuthButton {...rest} type={buttonType} onClick={show}>\n {text}\n </AuthButton>\n {createPortal(modalElement, document.body)}\n </>\n )\n}\n\nconst DownloadButtonRenderer = ({ data }: { data: ButtonSchema }) => {\n const { text, buttonType, url, method, params, body, storeIdRef, action: _action, ...rest } = data\n const { dataMap } = useDataStore()\n const kyClient = useKy()\n\n const onClick = async () => {\n const storeData = storeIdRef ? dataMap.get(storeIdRef) : null\n const newUrl = url!.replace(/\\$\\{([^}]+)\\}/g, (_match, key) => search(storeData, key) ?? '')\n\n const kyOptions = {\n method,\n searchParams: params,\n json: body,\n }\n // 使用 instance 获取原始 Response 以访问 headers\n const response = await kyClient.instance(newUrl, kyOptions)\n\n const header = response.headers.get('content-disposition')\n let filename = 'unknown'\n const filenameMatch = header?.match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/)\n filename = filenameMatch?.[1] || filename\n const blob = await response.blob()\n saveAs(blob, filename)\n }\n\n return (\n <AuthButton {...rest} type={buttonType} onClick={onClick}>\n {text}\n </AuthButton>\n )\n}\n\nexport const ButtonRenderer = withParsedData(buttonSchema)<{ source?: object }>(({ parsedData, source }) => {\n const { action, code, text, buttonType, params, body, storeIdRef, showLoading } = parsedData\n const { dataMap } = useDataStore()\n const storeData = storeIdRef ? dataMap.get(storeIdRef) : null\n const newParams = params && replaceValueWithJMESPath(storeData, params)\n const newBody = body && replaceValueWithJMESPath(storeData, body)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const newData = { ...parsedData, params: newParams, body: newBody } as any\n\n if (action === 'modal') {\n return <ModalButtonRenderer data={newData} source={source} />\n } else if (action === 'download') {\n return <DownloadButtonRenderer data={newData} />\n }\n\n return (\n <AuthButton code={code} type={buttonType} showLoading={showLoading}>\n {text}\n </AuthButton>\n )\n})\n","import { Card } from 'antd'\n\nimport { renderArray } from '../core'\nimport { cardSchema } from '../schemas'\nimport { withParsedData } from './base'\n\nexport const CardRenderer = withParsedData(cardSchema)<{ source?: object }>(({ parsedData, source }) => {\n const { title, body } = parsedData\n const children = renderArray(body, source)\n return <Card title={title}>{children}</Card>\n})\n","import { DatePicker } from 'antd'\nimport type { Dayjs } from 'dayjs'\nimport dayjs from 'dayjs'\nimport type { FC } from 'react'\n\nimport type { DatePickerSchema } from '../schemas'\nimport { addUtcOffset, minusUtcOffset } from '../utils'\n\ninterface UnixDatePickerProps extends Pick<DatePickerSchema, 'showTime' | 'showNow' | 'showWeek' | 'utc'> {\n value?: number\n onChange?: (value?: number) => void\n}\n\nconst UnixDatePicker: FC<UnixDatePickerProps> = props => {\n const { value, onChange, utc, ...rest } = props\n\n const internelValue =\n typeof value === 'number' ? (utc ? minusUtcOffset(dayjs(value * 1000)) : dayjs(value * 1000)) : null\n\n const onChangeHandler = (date: Dayjs) => {\n onChange?.(utc ? addUtcOffset(date).unix() : date.unix())\n }\n\n return <DatePicker {...rest} value={internelValue} onChange={onChangeHandler} />\n}\n\nexport default UnixDatePicker\n","import { DatePicker } from 'antd'\nimport type { RangePickerProps } from 'antd/es/date-picker'\nimport dayjs, { extend } from 'dayjs'\nimport utcPlugin from 'dayjs/plugin/utc'\nimport type { FC } from 'react'\n\nimport type { DateRangeSchema } from '../schemas'\nimport { addUtcOffset, minusUtcOffset } from '../utils'\n\nextend(utcPlugin)\n\ninterface UnixRangePickerProps extends Pick<DateRangeSchema, 'utc' | 'showTime' | 'allowEmpty'> {\n value?: [number | null, number | null]\n onChange?: (value?: [number | null, number | null]) => void\n}\n\nconst UnixRangePicker: FC<UnixRangePickerProps> = props => {\n const { value, onChange, utc, ...rest } = props\n\n const internelValue: RangePickerProps['value'] = [\n value?.[0] ? (utc ? minusUtcOffset(dayjs(value[0] * 1000)) : dayjs(value[0] * 1000)) : null,\n value?.[1] ? (utc ? minusUtcOffset(dayjs(value[1] * 1000)) : dayjs(value[1] * 1000)) : null,\n ]\n\n const onChangeHandler: RangePickerProps['onChange'] = range => {\n onChange?.([\n range?.[0] ? (utc ? addUtcOffset(range[0]).unix() : range[0].unix()) : null,\n range?.[1] ? (utc ? addUtcOffset(range[1]).unix() : range[1].unix()) : null,\n ])\n }\n\n return <DatePicker.RangePicker {...rest} value={internelValue} onChange={onChangeHandler} />\n}\n\nexport default UnixRangePicker\n","import { Form } from 'antd'\nimport type { ReactElement } from 'react'\nimport type { ZodType } from 'zod'\n\nimport type { FormItemSchema } from '../schemas'\nimport { withParsedData } from './base'\n\nexport function withFormItem<Schema extends FormItemSchema>(schema: ZodType<Schema>) {\n return function (\n getChildren: (props: Omit<Schema, 'label' | 'name' | 'preserve' | 'rules' | 'value'>) => ReactElement,\n ) {\n return withParsedData(schema)(({ parsedData, ...restProps }) => {\n const { label, name, preserve, rules, value, ...childrenProps } = parsedData\n\n return (\n <Form.Item label={label} name={name} rules={rules} preserve={preserve} initialValue={value} {...restProps}>\n {getChildren(childrenProps)}\n </Form.Item>\n )\n })\n }\n}\n","import { UnixDatePicker } from '../components'\nimport { datePickerSchema } from '../schemas'\nimport { withFormItem } from './form-item'\n\nexport const DatePickerRenderer = withFormItem(datePickerSchema)(childrenProps => {\n return <UnixDatePicker {...childrenProps} />\n})\n","import { UnixRangePicker } from '../components'\nimport { dateRangeSchema } from '../schemas'\nimport { withFormItem } from './form-item'\n\nexport const DateRangeRenderer = withFormItem(dateRangeSchema)(childrenProps => {\n return <UnixRangePicker {...childrenProps} />\n})\n","import type { DescriptionsProps } from 'antd'\nimport { Descriptions } from 'antd'\nimport { search } from 'jmespath'\nimport { useEffect, useState } from 'react'\n\nimport { descriptionsSchema } from '../schemas/descriptions'\nimport { useDataStore } from '../stores'\nimport { withParsedData } from './base'\n\nexport const DescriptionsRenderer = withParsedData(descriptionsSchema)(({ parsedData }) => {\n const { title, dataSource, dataIndex, storeIdRef, ...rest } = parsedData\n const { dataMap } = useDataStore()\n const [items, setItems] = useState<DescriptionsProps['items']>([])\n\n useEffect(() => {\n let _dataSource\n\n if (typeof dataSource === 'object') {\n _dataSource = dataSource\n } else if (storeIdRef) {\n _dataSource = dataMap.get(storeIdRef)\n }\n\n _dataSource = dataIndex ? search(_dataSource, dataIndex) : _dataSource\n\n const _items: DescriptionsProps['items'] = _dataSource?.map(\n (item: { label: string | number; value: string | number }) => ({\n key: item.label,\n label: item.label,\n children: item.value,\n }),\n )\n\n setItems(_items)\n }, [dataMap])\n\n return <Descriptions {...rest} title={title} items={items} />\n})\n","import { renderArray } from '../core'\nimport { divSchema } from '../schemas'\nimport { withParsedData } from './base'\n\nexport const DivRenderer = withParsedData(divSchema)<{ source?: object }>(({ parsedData, source }) => {\n const { body, style } = parsedData\n const children = renderArray(body, source)\n return <div style={style}>{children}</div>\n})\n","import { Flex } from 'antd'\n\nimport { renderArray } from '../core'\nimport { flexSchema } from '../schemas'\nimport { withParsedData } from './base'\n\nexport const FlexRenderer = withParsedData(flexSchema)<{ source?: object }>(({ parsedData, source }) => {\n const { body, style, ...rest } = parsedData\n const children = renderArray(body, source)\n\n return (\n <Flex {...rest} style={style}>\n {children}\n </Flex>\n )\n})\n","import type { FormInstance, FormProps } from 'antd'\nimport { Col, Form, Row } from 'antd'\n\nimport { getRenderer } from '../core'\nimport type { SchemaType } from '../schemas'\nimport { formSchema } from '../schemas'\nimport { setStoreData } from '../stores'\nimport { withParsedData } from './base'\n\nexport const FormRenderer = withParsedData(formSchema)<{\n form?: FormInstance\n externalStoreId?: string\n}>(({ parsedData, form, externalStoreId }) => {\n const [formInstance] = Form.useForm()\n const _from = form || formInstance\n const { storeId, fields, labelWidth, gutter, ...rest } = parsedData\n // query-list 调用此组件是,storeId 为空,需要从外部传入\n const _storeId = storeId || externalStoreId\n\n const children = fields?.map((item, index) => {\n const { type, span } = item\n const RendererComponent = getRenderer(type as SchemaType)\n\n if (RendererComponent) {\n const key = `${type}${index}`\n return (\n <Col span={span} key={key}>\n <RendererComponent data={item} />\n </Col>\n )\n }\n\n return null\n })\n\n const labelCol = typeof labelWidth === 'number' ? { span: labelWidth } : { flex: labelWidth }\n\n const onValuesChange: FormProps['onValuesChange'] = (_, values) => {\n if (_storeId) {\n setStoreData(_storeId, values)\n }\n }\n\n return (\n <Form {...rest} form={_from} labelCol={labelCol} onValuesChange={onValuesChange}>\n <Row gutter={gutter}>{children}</Row>\n </Form>\n )\n})\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { InfiniteListPayload, InfiniteListRef } from '@flow97/react-toolkit'\nimport { InfiniteList } from '@flow97/react-toolkit'\nimport type { FormInstance, TableColumnType } from 'antd'\nimport { Typography } from 'antd'\nimport { isPlainObject, merge } from 'lodash-es'\nimport { useRef } from 'react'\n\nimport { renderArray } from '../core'\nimport { formSchema } from '../schemas'\nimport { infiniteListSchema } from '../schemas/infinite-list'\nimport { replaceValueWithJMESPath } from '../utils'\nimport { withParsedData } from './base'\nimport { FormRenderer } from './form'\n\ninterface ListData {\n rows: any[]\n rowKey: string\n hasMore: boolean\n}\n\ninterface ApiResponse {\n status: number\n msg: string\n data: ListData\n}\n\nexport const InfiniteListRenderer = withParsedData(infiniteListSchema)(({ parsedData }) => {\n const { storeId, columns, url, footer, actions, fields, gutter, initialValues, formLayout, params, extra, ...rest } =\n parsedData\n const ref = useRef<InfiniteListRef<any, any, ApiResponse>>(null)\n\n // 为每个渲染器实例生成唯一 ID\n const identifier = `infinite-list-${storeId || 'default'}-${Date.now()}`\n\n const newColumns: (TableColumnType<any> & { tpl?: string })[] = columns ? [...columns] : []\n\n // 处理对象字面量或 JSON 字符串\n newColumns.forEach(column => {\n column.render = (value: any) => {\n if (isPlainObject(value)) {\n return (\n <Typography.Paragraph style={{ maxHeight: 200, overflow: 'auto' }}>\n <pre>{JSON.stringify(value, null, 2)}</pre>\n </Typography.Paragraph>\n )\n } else if (typeof value === 'string') {\n try {\n const obj = JSON.parse(value)\n if (isPlainObject(obj)) {\n return (\n <Typography.Paragraph style={{ maxHeight: 200, overflow: 'auto' }}>\n <pre>{JSON.stringify(obj, null, 2)}</pre>\n </Typography.Paragraph>\n )\n }\n return value\n } catch {\n return value\n }\n } else {\n return value\n }\n }\n })\n\n if (actions) {\n newColumns.push({\n title: '操作',\n align: 'center',\n render: (record: any) => renderArray(actions, record),\n })\n }\n\n const renderForm = (form: FormInstance) => {\n const data = formSchema.parse({\n type: 'form',\n fields,\n initialValues,\n layout: formLayout,\n gutter,\n })\n return <FormRenderer data={data} form={form} externalStoreId={storeId} />\n }\n\n const renderFooter =\n footer &&\n (() => {\n // 获取最后一页的 data 字段作为 source\n const lastPageData = ref.current?.data?.[ref.current.data.length - 1]?.data\n return renderArray(footer, lastPageData)\n })\n\n const dataAdapter = {\n items: (data: ApiResponse[] | undefined, _form: FormInstance) =>\n data?.reduce((acc, curr) => acc.concat(curr?.data?.rows ?? []), [] as any[]) ?? [],\n hasMore: (lastPage: ApiResponse | undefined) => !!lastPage?.data?.hasMore,\n nextPageParam: (lastPage: ApiResponse | undefined, _allPages: ApiResponse[], currentPageParam: any) => {\n if (!lastPage?.data?.hasMore) return undefined\n return {\n rowKey: lastPage?.data?.rowKey,\n page: (currentPageParam?.page || 0) + 1,\n }\n },\n }\n\n const tableExtra = renderArray(extra)\n\n return (\n <InfiniteList\n {...rest}\n ref={ref}\n identifier={identifier}\n columns={newColumns}\n footer={renderFooter}\n dataAdapter={dataAdapter}\n renderForm={renderForm}\n tableExtra={tableExtra}\n request={{\n url,\n method: 'GET',\n searchParams: (payload: InfiniteListPayload<any>, pageParam: any) => {\n const { filters } = payload\n if (!filters) {\n return {\n rowKey: pageParam?.rowKey,\n page: pageParam?.page || 0,\n }\n }\n\n if (params) {\n return merge(\n {\n rowKey: pageParam?.rowKey,\n page: pageParam?.page || 0,\n },\n replaceValueWithJMESPath(filters, params),\n )\n } else {\n return {\n ...filters,\n rowKey: pageParam?.rowKey,\n page: pageParam?.page || 0,\n }\n }\n },\n }}\n />\n )\n})\n","import { InputNumber } from 'antd'\n\nimport { inputNumberSchema } from '../schemas'\nimport { withFormItem } from './form-item'\n\nexport const InputNumberRenderer = withFormItem(inputNumberSchema)(props => {\n const { type: _type, width, ...rest } = props\n return <InputNumber {...rest} style={{ width }} />\n})\n","import { Input } from 'antd'\n\nimport { inputTextSchema } from '../schemas'\nimport { withFormItem } from './form-item'\n\nexport const InputTextRenderer = withFormItem(inputTextSchema)(childrenProps => {\n return <Input {...childrenProps} />\n})\n","import qs from 'query-string'\n\nimport { linkSchema } from '../schemas'\nimport { withParsedData } from './base'\n\nexport const LinkRenderer = withParsedData(linkSchema)(({ parsedData }) => {\n const { type: _type, href, params, text, ...rest } = parsedData\n const url = qs.stringifyUrl({ url: href, query: params })\n return (\n <a href={url} {...rest}>\n {text}\n </a>\n )\n})\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { QueryListPayload, QueryListRef } from '@flow97/react-toolkit'\nimport { QueryList } from '@flow97/react-toolkit'\nimport { type FormInstance, type TableColumnType, Typography } from 'antd'\nimport type { AnyObject } from 'antd/es/_util/type'\nimport { isPlainObject, merge } from 'lodash-es'\nimport { useRef } from 'react'\n\nimport { renderArray } from '../core'\nimport { formSchema } from '../schemas'\nimport { queryListSchema } from '../schemas/query-list'\nimport { replaceValueWithJMESPath } from '../utils'\nimport { withParsedData } from './base'\nimport { FormRenderer } from './form'\n\ntype FormValues = AnyObject\n\ninterface ListResponse {\n status?: number\n msg?: string\n data?: {\n rows: any[]\n total: number\n }\n // 兼容直接返回 rows 和 total 的格式\n rows?: any[]\n total?: number\n}\n\nexport const QueryListRenderer = withParsedData(queryListSchema)(({ parsedData }) => {\n const {\n storeId,\n fields,\n initialValues,\n formLayout,\n columns,\n params,\n body,\n footer,\n extra,\n gutter,\n actions,\n identifier,\n url,\n method = 'GET',\n ...rest\n } = parsedData\n const ref = useRef<QueryListRef<any, FormValues, ListResponse>>(null)\n const newColumns: (TableColumnType<any> & { tpl?: string })[] = columns ? [...columns] : []\n\n // 处理对象字面量或 JSON 字符串\n newColumns.forEach(column => {\n column.render = (value: any) => {\n if (isPlainObject(value)) {\n return (\n <Typography.Paragraph style={{ maxHeight: 200, overflow: 'auto' }}>\n <pre>{JSON.stringify(value, null, 2)}</pre>\n </Typography.Paragraph>\n )\n } else if (typeof value === 'string') {\n try {\n const obj = JSON.parse(value)\n if (isPlainObject(obj)) {\n return (\n <Typography.Paragraph style={{ maxHeight: 200, overflow: 'auto' }}>\n <pre>{JSON.stringify(obj, null, 2)}</pre>\n </Typography.Paragraph>\n )\n }\n return value\n } catch {\n return value\n }\n } else {\n return value\n }\n }\n })\n\n if (actions) {\n newColumns.push({\n title: '操作',\n align: 'center',\n render: (record: any) => renderArray(actions, record),\n })\n }\n\n const renderForm = (form: FormInstance) => {\n const data = formSchema.parse({\n type: 'form',\n fields,\n initialValues,\n layout: formLayout,\n gutter,\n })\n return <FormRenderer data={data} form={form} externalStoreId={storeId} />\n }\n\n const renderFooter = footer && (() => renderArray(footer, ref.current?.data))\n\n const dataAdapter = (data?: ListResponse) => {\n // 支持两种数据格式:\n // 1. { status: 0, msg: \"ok\", data: { rows: [], total: 0 } }\n // 2. { rows: [], total: 0 }\n if (data?.data) {\n return {\n items: data.data.rows,\n total: data.data.total,\n }\n }\n return {\n items: data?.rows,\n total: data?.total,\n }\n }\n\n const getSearchParams = ({ page, size, filters }: QueryListPayload) => {\n if (params) {\n return merge(\n {\n page,\n size,\n },\n replaceValueWithJMESPath(filters, params),\n )\n } else {\n return {\n ...filters,\n page,\n size,\n }\n }\n }\n\n const getBody = ({ page, size, filters }: QueryListPayload) => {\n if (body) {\n return merge(\n {\n page,\n size,\n },\n replaceValueWithJMESPath(filters, body),\n )\n } else {\n return {\n ...filters,\n page,\n size,\n }\n }\n }\n\n const tableExtra = renderArray(extra)\n\n return (\n <QueryList<any, FormValues, ListResponse>\n identifier={identifier}\n {...rest}\n ref={ref}\n columns={newColumns}\n renderForm={renderForm}\n footer={renderFooter}\n dataAdapter={dataAdapter}\n request={{\n url,\n method,\n searchParams: getSearchParams,\n body: getBody,\n }}\n tableExtra={tableExtra}\n />\n )\n})\n","import { Select } from 'antd'\nimport { useEffect, useState } from 'react'\n\nimport { useKy } from '../libs/useKy'\nimport { selectSchema } from '../schemas/select'\nimport { withFormItem } from './form-item'\n\nexport const SelectRenderer = withFormItem(selectSchema)(childrenProps => {\n const { type: _type, options, source, width, ...rest } = childrenProps\n const [internalOptions, setInternalOptions] = useState<{ label: string; value: string | number }[]>()\n const kyClient = useKy()\n\n useEffect(() => {\n if (source) {\n kyClient\n .get<{ options: { label: string; value: string | number }[] }>(source)\n .then(response => {\n setInternalOptions(response?.options)\n })\n .catch(() => {\n setInternalOptions([])\n })\n } else if (options) {\n setInternalOptions(options)\n }\n }, [source, options])\n\n return <Select {...rest} options={internalOptions} style={{ width }} />\n})\n","import { useEffect } from 'react'\n\nimport { useKy } from '../libs/useKy'\nimport { serviceSchema } from '../schemas'\nimport { getStoreData, setStoreData } from '../stores'\nimport { replaceValueWithJMESPath } from '../utils'\nimport { withParsedData } from './base'\n\nexport const ServiceRenderer = withParsedData(serviceSchema)(({ parsedData }) => {\n const { storeId, params, url, body, storeIdRef, method } = parsedData\n const kyClient = useKy()\n\n useEffect(() => {\n const storeData = getStoreData(storeIdRef)\n const newParams = params && replaceValueWithJMESPath(storeData, params)\n const newBody = params && replaceValueWithJMESPath(storeData, body)\n\n if (url) {\n kyClient\n .request<{ data: { data: unknown } }>({\n method,\n url: url!,\n searchParams: newParams,\n json: newBody,\n })\n\n .then(res => {\n if (storeId) {\n setStoreData(storeId, res.data.data)\n }\n })\n .catch(err => {\n console.error(err)\n })\n }\n }, [])\n\n return null\n})\n","import { search } from 'jmespath'\n\nimport { spanSchema } from '../schemas/span'\nimport { withParsedData } from './base'\n\nexport const SpanRenderer = withParsedData(spanSchema)<{ source?: object }>(({ parsedData, source }) => {\n const { text } = parsedData\n\n // 使用 JMESPath 在 source 对象中查找变量,替换为变量值\n const result = text.replace(/\\$\\{(\\w+)\\}/g, (_match, varName) => {\n return search(source, varName) ?? ''\n })\n\n return <span>{result}</span>\n})\n","import { Table } from 'antd'\nimport { search } from 'jmespath'\n\nimport { STRING_VAR_REG } from '../constants'\nimport { renderArray } from '../core'\nimport { useKy } from '../libs/useKy'\nimport { tableSchema } from '../schemas/table'\nimport { useDataStore } from '../stores'\nimport { withParsedData } from './base'\n\nexport const TableRenderer = withParsedData(tableSchema)<{ source?: object }>(({ parsedData, source }) => {\n const { columns, footer, rowKey, data, api, storeIdRef, ...rest } = parsedData\n const { dataMap } = useDataStore()\n const kyClient = useKy()\n\n let dataSource: unknown[] = []\n\n if (api) {\n let storeData = null\n\n if (storeIdRef) {\n storeData = dataMap.get(storeIdRef)\n }\n\n const newUrl = api.replace(/\\$\\{([^}]+)\\}/g, (_match, key) => search(storeData, key) ?? '')\n kyClient.get<{ data: unknown }>(newUrl).then(res => {\n dataSource = Array.isArray(res.data) ? res.data : []\n })\n } else {\n if (Array.isArray(data)) {\n dataSource = data\n } else {\n // 将字符串变量转换为 JMESPath 查询\n const match = data?.match(STRING_VAR_REG)\n if (match) {\n const result = search(source, match[1])\n dataSource = result ?? []\n }\n }\n }\n\n const renderFooter = footer && (() => renderArray(footer))\n\n return <Table {...rest} rowKey={rowKey} columns={columns} footer={renderFooter} dataSource={dataSource} />\n})\n","import { renderArray } from '../core'\nimport { viewportSchema } from '../schemas'\nimport { withParsedData } from './base'\n\nexport const ViewportRenderer = withParsedData(viewportSchema)(({ parsedData }) => {\n const { body } = parsedData\n const children = renderArray(body)\n return <div>{children}</div>\n})\n","import type { FC } from 'react'\nimport { withErrorBoundary } from 'react-error-boundary'\nimport type { ZodError } from 'zod'\n\nimport { ViewportRenderer } from './renderers/viewport'\nimport type { ViewportSchema } from './schemas/viewport'\n\ninterface SchemaRendererProps {\n schema?: ViewportSchema\n}\n\nfunction fallbackRender({ error }: { error: ZodError }) {\n return <pre>{JSON.stringify(error, null, 2)}</pre>\n}\n\nconst Renderer: FC<SchemaRendererProps> = props => {\n const { schema } = props\n\n if (!schema) return null\n\n return (\n <div className=\"antd-schema\">\n <ViewportRenderer data={schema} />\n </div>\n )\n}\n\nconst SchemaRenderer = withErrorBoundary(Renderer, { fallbackRender })\n\nexport default SchemaRenderer\n","/**\n * 注册所有 renderers\n * 这个文件会在 SchemaRenderer 导入时自动执行\n */\n// 导入所有 renderers\nimport { registerRenderer } from './core'\nimport { ButtonRenderer } from './renderers/button'\nimport { CardRenderer } from './renderers/card'\nimport { DatePickerRenderer } from './renderers/date-picker'\nimport { DateRangeRenderer } from './renderers/date-range'\nimport { DescriptionsRenderer } from './renderers/desciptions'\nimport { DivRenderer } from './renderers/div'\nimport { FlexRenderer } from './renderers/flex'\nimport { FormRenderer } from './renderers/form'\nimport { InfiniteListRenderer } from './renderers/infinite-list'\nimport { InputNumberRenderer } from './renderers/input-number'\nimport { InputTextRenderer } from './renderers/input-text'\nimport { LinkRenderer } from './renderers/link'\nimport { QueryListRenderer } from './renderers/query-list'\nimport { SelectRenderer } from './renderers/select'\nimport { ServiceRenderer } from './renderers/service'\nimport { SpanRenderer } from './renderers/span'\nimport { TableRenderer } from './renderers/table'\nimport { ViewportRenderer } from './renderers/viewport'\n\n// 注册所有 renderers(立即执行)\nregisterRenderer('button', ButtonRenderer)\nregisterRenderer('card', CardRenderer)\nregisterRenderer('date-picker', DatePickerRenderer)\nregisterRenderer('date-range', DateRangeRenderer)\nregisterRenderer('descriptions', DescriptionsRenderer)\nregisterRenderer('div', DivRenderer)\nregisterRenderer('flex', FlexRenderer)\nregisterRenderer('form', FormRenderer)\nregisterRenderer('infinite-list', InfiniteListRenderer)\nregisterRenderer('input-number', InputNumberRenderer)\nregisterRenderer('input-text', InputTextRenderer)\nregisterRenderer('link', LinkRenderer)\nregisterRenderer('query-list', QueryListRenderer)\nregisterRenderer('select', SelectRenderer)\nregisterRenderer('service', ServiceRenderer)\nregisterRenderer('span', SpanRenderer)\nregisterRenderer('table', TableRenderer)\nregisterRenderer('viewport', ViewportRenderer)\n\n// 导出所有 renderers\nexport {\n ButtonRenderer,\n CardRenderer,\n DatePickerRenderer,\n DateRangeRenderer,\n DescriptionsRenderer,\n DivRenderer,\n FlexRenderer,\n FormRenderer,\n InfiniteListRenderer,\n InputNumberRenderer,\n InputTextRenderer,\n LinkRenderer,\n QueryListRenderer,\n SelectRenderer,\n ServiceRenderer,\n SpanRenderer,\n TableRenderer,\n ViewportRenderer,\n}\n\n// 导出核心功能\nexport { renderArray } from './core'\n\n// 导出主组件\nexport { default as SchemaRenderer } from './schema-renderer'\n\n// 导出 Schemas\nexport * from './schemas/base'\nexport * from './schemas/button'\nexport * from './schemas/card'\nexport * from './schemas/form'\nexport * from './schemas/input-number'\nexport * from './schemas/input-text'\nexport * from './schemas/service'\nexport * from './schemas/table'\nexport * from './schemas/viewport'\n"]}
|