@lytjs/ui 6.4.0 → 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +742 -174
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -38
- package/dist/index.d.ts +14 -38
- package/dist/index.mjs +742 -174
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -9
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Button.ts","../src/components/Input.ts","../src/components/Dialog.ts","../src/components/Select.ts","../src/components/Tabs.ts","../src/components/Table.ts","../src/components/Form.ts","../src/components/Transition.ts","../src/components/DatePicker.ts","../src/components/Tree.ts","../src/components/Menu.ts","../src/components/Cascader.ts","../src/components/TreeSelect.ts","../src/components/Transfer.ts","../src/components/Descriptions.ts","../src/components/Modal.ts","../src/components/Drawer.ts","../src/components/Upload.ts","../src/components/Notification.ts","../src/components/Calendar.ts","../src/components/Image.ts","../src/components/Rate.ts","../src/components/ColorPicker.ts","../src/components/Icon.ts","../src/components/Badge.ts","../src/components/Tag.ts","../src/components/Spin.ts","../src/components/Empty.ts","../src/components/Link.ts","../src/components/Container.ts","../src/components/Divider.ts","../src/components/Toast.ts","../src/components/Alert.ts","../src/components/Tooltip.ts","../src/components/Checkbox.ts","../src/components/CheckboxGroup.ts","../src/components/Radio.ts","../src/components/RadioGroup.ts","../src/components/Switch.ts","../src/components/InputNumber.ts","../src/components/Progress.ts","../src/components/Slider.ts","../src/components/Avatar.ts","../src/components/Card.ts","../src/components/Timeline.ts","../src/components/TimelineItem.ts","../src/components/Steps.ts","../src/components/Step.ts","../src/components/Carousel.ts","../src/components/CarouselItem.ts","../src/components/Popconfirm.ts","../src/components/RichTextEditor.ts","../src/index.ts"],"names":["defineComponent","isString","isObject","createVNode","mergeA11yProps","getButtonA11yProps","signal","createTextVNode","getInputControlA11yProps","getComboboxA11yProps","getDialogA11yProps","getDaysInMonth","getFirstDayOfMonth","isSameDay","reactive","watch","computed","getGroupA11yProps","isArray"],"mappings":";;;;;;;AAYO,IAAM,SAAS,eAAA,CAAgB;AAAA,EACpC,IAAA,EAAM,WAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,SAAA,EAAU;AAAA,IACzC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,QAAA,EAAS;AAAA,IACxC,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,OAAA,EAAS,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACzC,KAAA,EAAO,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACvC,KAAA,EAAO,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACvC,MAAA,EAAQ,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACxC,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,QAAA,EAAS;AAAA,IAC9C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC7C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC9C,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAClD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAA2B;AACvE,IAAA,MAAM,CAAA,GAAI,KAAA;AAEV,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAsB;AACzC,MAAA,IAAI,CAAA,CAAE,QAAA,IAAY,CAAA,CAAE,OAAA,EAAS;AAC3B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA;AAAA,MACF;AACA,MAAA,CAAA,CAAE,UAAU,KAAK,CAAA;AAAA,IACnB,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,CAAA,CAAE,QAAA,IAAY,CAAA,CAAE,OAAA,EAAS;AAC3B,QAAA;AAAA,MACF;AAGA,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,GAAA,EAAK;AAC9C,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,WAAA,CAAY,KAA8B,CAAA;AAAA,MAC5C;AAEA,MAAA,CAAA,CAAE,YAAY,KAAK,CAAA;AAAA,IACrB,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,MAAM,OAAA,GAAU,CAAC,YAAY,CAAA;AAC7B,MAAA,IAAI,CAAA,CAAE,SAAS,SAAA,EAAW,OAAA,CAAQ,KAAK,CAAA,YAAA,EAAe,CAAA,CAAE,IAAI,CAAA,CAAE,CAAA;AAC9D,MAAA,IAAI,CAAA,CAAE,SAAS,QAAA,EAAU,OAAA,CAAQ,KAAK,CAAA,YAAA,EAAe,CAAA,CAAE,IAAI,CAAA,CAAE,CAAA;AAC7D,MAAA,IAAI,CAAA,CAAE,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,mBAAmB,CAAA;AAC7C,MAAA,IAAI,CAAA,CAAE,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,mBAAmB,CAAA;AAC7C,MAAA,IAAI,CAAA,CAAE,MAAA,EAAQ,OAAA,CAAQ,IAAA,CAAK,oBAAoB,CAAA;AAC/C,MAAA,IAAI,CAAA,CAAE,QAAA,EAAU,OAAA,CAAQ,IAAA,CAAK,sBAAsB,CAAA;AACnD,MAAA,IAAI,CAAA,CAAE,OAAA,EAAS,OAAA,CAAQ,IAAA,CAAK,qBAAqB,CAAA;AACjD,MAAA,IAAI,CAAA,CAAE,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,EAAE,KAAK,CAAA;AACjC,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,IAAI,CAAC,CAAA,CAAE,KAAA,EAAO,OAAO,MAAA;AACrB,MAAA,IAAI,QAAA,CAAS,CAAA,CAAE,KAAK,CAAA,SAAU,CAAA,CAAE,KAAA;AAChC,MAAA,IAAI,QAAA,CAAS,CAAA,CAAE,KAAK,CAAA,EAAG;AACrB,QAAA,OAAO,OAAO,OAAA,CAAQ,CAAA,CAAE,KAAK,CAAA,CAC1B,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,GAAG,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE,CAAA,CACxC,KAAK,IAAI,CAAA;AAAA,MACd;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,EAAE,OAAA,EAAS;AACb,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,WAAA,CAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,uBAAsB,EAAG;AAAA,YACpD,YAAY,KAAA,EAAO,EAAE,OAAO,0BAAA,EAA4B,OAAA,EAAS,iBAAgB,EAAG;AAAA,cAClF,YAAY,MAAA,EAAQ;AAAA,gBAClB,CAAA,EAAG,+KAAA;AAAA,gBACH,IAAA,EAAM;AAAA,eACP;AAAA,aACF;AAAA,WACF;AAAA,SACH;AAAA,MACF;AAEA,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,QAAA,CAAS,IAAA,CAAK,WAAA,CAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,oBAAmB,EAAG,KAAA,CAAM,OAAA,EAAS,CAAC,CAAA;AAAA,MACnF;AAEA,MAAA,MAAM,UAAA,GAAa,CAAA,CAAE,QAAA,IAAY,CAAA,CAAE,OAAA;AACnC,MAAA,MAAM,YAAY,kBAAA,CAAmB;AAAA,QACnC,WAAW,CAAA,CAAE,SAAA;AAAA,QACb,iBAAiB,CAAA,CAAE,eAAA;AAAA,QACnB,QAAA,EAAU,UAAA;AAAA,QACV,UAAU,CAAA,CAAE;AAAA,OACb,CAAA;AAED,MAAA,OAAO,WAAA;AAAA,QACL,QAAA;AAAA,QACA,eAAe,SAAA,EAAW;AAAA,UACxB,OAAO,cAAA,EAAe;AAAA,UACtB,OAAO,cAAA,EAAe;AAAA,UACtB,MAAM,CAAA,CAAE,UAAA;AAAA,UACR,QAAA,EAAU,UAAA;AAAA,UACV,OAAA,EAAS,WAAA;AAAA,UACT,SAAA,EAAW;AAAA,SACZ,CAAA;AAAA,QACD;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EACF;AACF,CAAC;AC/GM,IAAM,QAAQA,eAAAA,CAAgB;AAAA,EACnC,IAAA,EAAM,UAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAmC,SAAS,EAAA,EAAG;AAAA,IAClF,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAO;AAAA,IACtC,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACzC,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC3C,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC9C,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC9C,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,QAAA,EAAS;AAAA,IACxC,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACxC,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACxC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,WAAA,EAAa,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC7C,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,YAAA,EAAc,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC1C,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAClC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA;AAAU,GAC/C;AAAA,EAEA,MAAM,KAAA,EAAgC;AACpC,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,eAAA,GAAkB,OAAO,KAAK,CAAA;AACpC,IAAA,MAAM,SAAA,GAAY,OAAO,KAAK,CAAA;AAE9B,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,MAAM,OAAA,GAAU,CAAC,WAAW,CAAA;AAC5B,MAAA,IAAI,CAAA,CAAE,SAAS,QAAA,EAAU,OAAA,CAAQ,KAAK,CAAA,WAAA,EAAc,CAAA,CAAE,IAAI,CAAA,CAAE,CAAA;AAC5D,MAAA,IAAI,CAAA,CAAE,QAAA,EAAU,OAAA,CAAQ,IAAA,CAAK,qBAAqB,CAAA;AAClD,MAAA,IAAI,SAAA,EAAU,EAAG,OAAA,CAAQ,IAAA,CAAK,oBAAoB,CAAA;AAClD,MAAA,IAAI,CAAA,CAAE,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,EAAE,KAAK,CAAA;AACjC,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,IAAI,CAAC,CAAA,CAAE,KAAA,EAAO,OAAO,MAAA;AACrB,MAAA,IAAIC,QAAAA,CAAS,CAAA,CAAE,KAAK,CAAA,SAAU,CAAA,CAAE,KAAA;AAChC,MAAA,IAAIC,QAAAA,CAAS,CAAA,CAAE,KAAK,CAAA,EAAG;AACrB,QAAA,OAAO,OAAO,OAAA,CAAQ,CAAA,CAAE,KAAK,CAAA,CAC1B,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,GAAG,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE,CAAA,CACxC,KAAK,IAAI,CAAA;AAAA,MACd;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,UAAA,IAAc,CAAA,CAAE,YAAA,EAAc;AAC3C,QAAA,OAAO,eAAA,KAAoB,MAAA,GAAS,UAAA;AAAA,MACtC;AACA,MAAA,OAAO,CAAA,CAAE,IAAA;AAAA,IACX,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAa;AAChC,MAAA,MAAM,SAAS,CAAA,CAAE,MAAA;AACjB,MAAA,CAAA,CAAE,OAAA,GAAU,OAAO,KAAK,CAAA;AAAA,IAC1B,CAAA;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAa;AACjC,MAAA,MAAM,SAAS,CAAA,CAAE,MAAA;AACjB,MAAA,CAAA,CAAE,QAAA,GAAW,OAAO,KAAK,CAAA;AAAA,IAC3B,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAkB;AACrC,MAAA,SAAA,CAAU,IAAI,IAAI,CAAA;AAClB,MAAA,CAAA,CAAE,UAAU,CAAC,CAAA;AAAA,IACf,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,CAAC,CAAA,KAAkB;AACpC,MAAA,SAAA,CAAU,IAAI,KAAK,CAAA;AACnB,MAAA,CAAA,CAAE,SAAS,CAAC,CAAA;AAAA,IACd,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,CAAA,CAAE,OAAA,IAAU;AACZ,MAAA,CAAA,CAAE,UAAU,EAAE,CAAA;AACd,MAAA,CAAA,CAAE,WAAW,EAAE,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAM,2BAA2B,MAAM;AACrC,MAAA,eAAA,CAAgB,GAAA,CAAI,CAAC,eAAA,EAAiB,CAAA;AAAA,IACxC,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAG3B,MAAA,IAAI,EAAE,UAAA,EAAY;AAChB,QAAA,QAAA,CAAS,IAAA;AAAA,UACPC,WAAAA,CAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,qBAAoB,EAAG;AAAA,YAClDA,WAAAA,CAAY,KAAK,EAAE,KAAA,EAAO,EAAE,UAAA,EAAW,EAAG,EAAE;AAAA,WAC7C;AAAA,SACH;AAAA,MACF;AAGA,MAAA,MAAM,YAAY,uBAAA,CAAwB;AAAA,QACxC,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,WAAW,CAAA,CAAE,SAAA;AAAA,QACb,iBAAiB,CAAA,CAAE,eAAA;AAAA,QACnB,aAAa,CAAA,CAAE,WAAA;AAAA,QACf,cAAc,CAAA,CAAE,YAAA;AAAA,QAChB,UAAU,CAAA,CAAE,QAAA;AAAA,QACZ,UAAU,CAAA,CAAE;AAAA,OACb,CAAA;AACD,MAAA,MAAM,UAAA,GAAaC,eAAe,SAAA,EAAW;AAAA,QAC3C,KAAA,EAAO,kBAAA;AAAA,QACP,OAAO,aAAA,EAAc;AAAA,QACrB,MAAM,YAAA,EAAa;AAAA,QACnB,OAAO,CAAA,CAAE,UAAA;AAAA,QACT,aAAa,CAAA,CAAE,WAAA;AAAA,QACf,UAAU,CAAA,CAAE,QAAA;AAAA,QACZ,UAAU,CAAA,CAAE,QAAA;AAAA,QACZ,WAAW,CAAA,CAAE,SAAA;AAAA,QACb,WAAW,CAAA,CAAE,SAAA;AAAA,QACb,iBAAiB,CAAA,CAAE,QAAA;AAAA,QACnB,cAAc,CAAA,CAAE,YAAA;AAAA,QAChB,MAAM,CAAA,CAAE,IAAA;AAAA,QACR,OAAA,EAAS,WAAA;AAAA,QACT,QAAA,EAAU,YAAA;AAAA,QACV,OAAA,EAAS,WAAA;AAAA,QACT,MAAA,EAAQ;AAAA,OACT,CAAA;AACD,MAAA,QAAA,CAAS,KAAKD,WAAAA,CAAY,OAAA,EAAS,UAAA,EAAY,EAAE,CAAC,CAAA;AAGlD,MAAA,MAAM,iBAA0B,EAAC;AAGjC,MAAA,IAAI,CAAA,CAAE,SAAA,IAAa,CAAA,CAAE,UAAA,EAAY;AAC/B,QAAA,MAAM,gBAAgBE,kBAAAA,CAAmB;AAAA,UACvC,SAAA,EAAW;AAAA,SACZ,CAAA;AACD,QAAA,cAAA,CAAe,IAAA;AAAA,UACbF,WAAAA,CAAY,MAAA,EAAQC,cAAAA,CAAe,aAAA,EAAe;AAAA,YAChD,KAAA,EAAO,kBAAA;AAAA,YACP,OAAA,EAAS;AAAA,WACV,CAAA,EAAG,CAAC,eAAA,CAAgB,MAAG,CAAC,CAAC;AAAA,SAC5B;AAAA,MACF;AAGA,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,UAAA,IAAc,CAAA,CAAE,YAAA,EAAc;AAC3C,QAAA,MAAM,iBAAiBC,kBAAAA,CAAmB;AAAA,UACxC,SAAA,EAAW,eAAA,EAAgB,GAAI,eAAA,GAAkB;AAAA,SAClD,CAAA;AACD,QAAA,cAAA,CAAe,IAAA;AAAA,UACbF,WAAAA,CAAY,MAAA,EAAQC,cAAAA,CAAe,cAAA,EAAgB;AAAA,YACjD,KAAA,EAAO,qBAAA;AAAA,YACP,OAAA,EAAS;AAAA,WACV,GAAG,CAAC,eAAA,CAAgB,iBAAgB,GAAI,WAAA,GAAO,iBAAK,CAAC,CAAC;AAAA,SACzD;AAAA,MACF;AAGA,MAAA,IAAI,EAAE,UAAA,EAAY;AAChB,QAAA,cAAA,CAAe,IAAA;AAAA,UACbD,WAAAA,CAAY,KAAK,EAAE,KAAA,EAAO,EAAE,UAAA,EAAW,EAAG,EAAE;AAAA,SAC9C;AAAA,MACF;AAEA,MAAA,IAAI,cAAA,CAAe,SAAS,CAAA,EAAG;AAC7B,QAAA,QAAA,CAAS,IAAA;AAAA,UACPA,YAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,mBAAA,IAAuB,cAAc;AAAA,SACpE;AAAA,MACF;AAEA,MAAA,OAAOA,YAAY,KAAA,EAAO,EAAE,OAAO,aAAA,EAAc,IAAK,QAAQ,CAAA;AAAA,IAChE,CAAA;AAAA,EACF;AACF,CAAC;AClLM,IAAM,SAASH,eAAAA,CAAgB;AAAA,EACpC,IAAA,EAAM,WAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC5C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAmC,SAAS,KAAA,EAAM;AAAA,IAChF,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC1C,iBAAA,EAAmB,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAClD,kBAAA,EAAoB,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IACnD,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC3C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC1C,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACnD,aAAA,EAAe,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACpD,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC7C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC9C,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAChD,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAClD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAA2B;AACvE,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,OAAA,GAAUM,MAAAA,CAAO,CAAA,CAAE,UAAU,CAAA;AAGnC,IAAA,KAAA,CAAM,MAAM,CAAA,CAAE,UAAA,EAAY,CAAC,MAAA,KAAW;AACpC,MAAA,OAAA,CAAQ,IAAI,MAAM,CAAA;AAClB,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,CAAA,CAAE,MAAA,IAAS;AAAA,MACb;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAM,cAAc,YAAY;AAC9B,MAAA,IAAI,EAAE,aAAA,EAAe;AACnB,QAAA,MAAM,MAAA,GAAS,MAAM,CAAA,CAAE,aAAA,EAAc;AACrC,QAAA,IAAI,WAAW,KAAA,EAAO;AAAA,MACxB;AACA,MAAA,OAAA,CAAQ,IAAI,KAAK,CAAA;AACjB,MAAA,CAAA,CAAE,OAAA,IAAU;AAAA,IACd,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAqB;AAC1C,MAAA,IAAI,CAAA,CAAE,kBAAA,IAAsB,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU;AAC9C,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,WAAA,EAAY;AAAA,MACd;AACA,MAAA,CAAA,CAAE,YAAY,CAAC,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,CAAC,SAAQ,EAAG;AACd,QAAA,OAAOH,YAAY,KAAA,EAAO,EAAE,OAAO,gBAAA,EAAiB,EAAG,EAAE,CAAA;AAAA,MAC3D;AAEA,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,UAC/B,KAAA,EAAO,oBAAA;AAAA,UACP,IAAI,CAAA,CAAE,EAAA,GAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,OAAA,CAAA,GAAY;AAAA,SAChC,EAAG,KAAA,CAAM,MAAA,EAAQ,CAAC,CAAA;AAAA,MACpB,CAAA,MAAA,IAAW,EAAE,KAAA,EAAO;AAClB,QAAA,MAAM,iBAA0B,EAAC;AACjC,QAAA,cAAA,CAAe,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UACtC,KAAA,EAAO,mBAAA;AAAA,UACP,IAAI,CAAA,CAAE,EAAA,GAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,MAAA,CAAA,GAAW;AAAA,WAC5B,CAACI,eAAAA,CAAgB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;AAC9B,QAAA,IAAI,EAAE,SAAA,EAAW;AACf,UAAA,MAAM,gBAAgBF,kBAAAA,CAAmB;AAAA,YACvC,SAAA,EAAW;AAAA,WACZ,CAAA;AACD,UAAA,cAAA,CAAe,IAAA,CAAKF,WAAAA,CAAY,QAAA,EAAUC,cAAAA,CAAe,aAAA,EAAe;AAAA,YACtE,KAAA,EAAO,mBAAA;AAAA,YACP,OAAA,EAAS;AAAA,WACV,CAAA,EAAG,CAACG,gBAAgB,MAAG,CAAC,CAAC,CAAC,CAAA;AAAA,QAC7B;AACA,QAAA,QAAA,CAAS,IAAA,CAAKJ,YAAY,KAAA,EAAO;AAAA,UAC/B,KAAA,EAAO,oBAAA;AAAA,UACP,IAAI,CAAA,CAAE,EAAA,GAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,OAAA,CAAA,GAAY;AAAA,SAChC,EAAG,cAAc,CAAC,CAAA;AAAA,MACpB;AAEA,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,UAC/B,KAAA,EAAO,kBAAA;AAAA,UACP,IAAI,CAAA,CAAE,EAAA,GAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,KAAA,CAAA,GAAU;AAAA,SAC9B,EAAG,KAAA,CAAM,OAAA,EAAS,CAAC,CAAA;AAAA,MACrB;AAEA,MAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,UAC/B,KAAA,EAAO,oBAAA;AAAA,UACP,IAAI,CAAA,CAAE,EAAA,GAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,OAAA,CAAA,GAAY;AAAA,SAChC,EAAG,KAAA,CAAM,MAAA,EAAQ,CAAC,CAAA;AAAA,MACpB;AAEA,MAAA,MAAM,WAAA,GAAc;AAAA,QAClB,YAAA;AAAA,QACA,CAAA,CAAE;AAAA,OACJ,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAE1B,MAAA,MAAM,WAAA,GAAc,CAAA,OAAA,EAAU,OAAO,CAAA,CAAE,KAAA,KAAU,QAAA,GAAW,CAAA,EAAG,CAAA,CAAE,KAAK,CAAA,EAAA,CAAA,GAAO,CAAA,CAAE,KAAK,CAAA,CAAA;AAEpF,MAAA,MAAM,kBAAkB,kBAAA,CAAmB;AAAA,QACzC,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,SAAA,EAAW,CAAA,CAAE,SAAA,IAAa,CAAA,CAAE,KAAA;AAAA,QAC5B,eAAA,EAAiB,EAAE,eAAA,KAAoB,CAAA,CAAE,KAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,KAAA,CAAA,GAAU,MAAA,CAAA;AAAA,QAC/D,UAAA,EAAY,EAAE,KAAA,IAAS,CAAA,CAAE,KAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,MAAA,CAAA,GAAW,MAAA;AAAA,QAChD,OAAO,CAAA,CAAE;AAAA,OACV,CAAA;AAED,MAAA,OAAOA,YAAY,KAAA,EAAO;AAAA,QACxB,KAAA,EAAO,qBAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb,EAAG;AAAA,QACDA,YAAY,KAAA,EAAO;AAAA,UACjB,KAAA,EAAO,qBAAA;AAAA,UACP,aAAA,EAAe,IAAA;AAAA,UACf,OAAA,EAAS,CAAA,CAAE,iBAAA,GAAoB,WAAA,GAAc;AAAA,SAC9C,CAAA;AAAA,QACDA,WAAAA,CAAY,KAAA,EAAOC,cAAAA,CAAe,eAAA,EAAiB;AAAA,UACjD,KAAA,EAAO,WAAA;AAAA,UACP,KAAA,EAAO;AAAA,SACR,GAAG,QAAQ;AAAA,OACb,CAAA;AAAA,IACH,CAAA;AAAA,EACF;AACF,CAAC;ACpIM,IAAM,SAASJ,eAAAA,CAAgB;AAAA,EACpC,IAAA,EAAM,WAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAA,EAAQ,KAAK,CAAA,EAAmC,OAAA,EAAS,EAAA,EAAG;AAAA,IACzF,SAAS,EAAE,IAAA,EAAM,OAAO,OAAA,EAAS,MAAsB,EAAC,EAAE;AAAA,IAC1D,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,oBAAA,EAAM;AAAA,IAC5C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC3C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,QAAA,EAAS;AAAA,IACxC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,WAAA,EAAa,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC7C,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC9C,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAChD,eAAA,EAAiB,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GACxD;AAAA,EAEA,MAAM,KAAA,EAAgC;AACpC,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,MAAA,GAASM,OAAO,KAAK,CAAA;AAC3B,IAAA,MAAM,aAAA,GAAgBA,MAAAA,iBAA6B,IAAI,GAAA,EAAK,CAAA;AAC5D,IAAA,MAAM,WAAA,GAAcA,OAAO,EAAE,CAAA;AAC7B,IAAA,MAAM,gBAAA,GAAmBA,OAAO,EAAE,CAAA;AAElC,IAAA,MAAA,CAAO,MAAM;AACX,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,UAAU,CAAA,EAAG;AAC/B,QAAA,aAAA,CAAc,GAAA,CAAI,IAAI,GAAA,CAAI,CAAA,CAAE,UAAU,CAAC,CAAA;AAAA,MACzC,CAAA,MAAA,IAAW,EAAE,UAAA,KAAe,EAAA,IAAM,EAAE,UAAA,KAAe,IAAA,IAAQ,CAAA,CAAE,UAAA,KAAe,MAAA,EAAW;AACrF,QAAA,aAAA,CAAc,oBAAI,IAAI,GAAA,CAAI,CAAC,CAAA,CAAE,UAAU,CAAC,CAAC,CAAA;AAAA,MAC3C;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAM,qBAAqB,MAAM;AAC/B,MAAA,MAAM,IAAA,GAAO,CAAA,CAAE,OAAA,IAAW,EAAC;AAC3B,MAAA,MAAM,QAAQ,WAAA,EAAY;AAC1B,MAAA,OAAO,KAAA,GACH,KAAK,MAAA,CAAO,CAAA,GAAA,KAAO,IAAI,KAAA,CAAM,QAAA,CAAS,KAAK,CAAC,CAAA,GAC5C,IAAA;AAAA,IACN,CAAA;AAEA,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAA,OAAO,oBAAmB,CAAE,MAAA,CAAO,CAAA,GAAA,KAAO,CAAC,IAAI,QAAQ,CAAA;AAAA,IACzD,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,IAAI,EAAE,QAAA,EAAU;AAChB,MAAA,MAAM,OAAA,GAAU,CAAC,MAAA,EAAO;AACxB,MAAA,MAAA,CAAO,IAAI,OAAO,CAAA;AAClB,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,MAAM,iBAAiB,iBAAA,EAAkB;AACzC,QAAA,IAAI,cAAA,CAAe,SAAS,CAAA,EAAG;AAC7B,UAAA,MAAM,iBAAiB,aAAA,EAAc;AACrC,UAAA,IAAI,YAAA,GAAe,CAAA;AACnB,UAAA,IAAI,cAAA,CAAe,OAAO,CAAA,EAAG;AAC3B,YAAA,MAAM,UAAA,GAAa,eAAe,SAAA,CAAU,CAAA,GAAA,KAAO,eAAe,GAAA,CAAI,GAAA,CAAI,KAAK,CAAC,CAAA;AAChF,YAAA,YAAA,GAAe,UAAA,IAAc,IAAI,UAAA,GAAa,CAAA;AAAA,UAChD;AACA,UAAA,gBAAA,CAAiB,IAAI,YAAY,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,CAAA,CAAE,kBAAkB,OAAO,CAAA;AAAA,IAC7B,CAAA;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,MAAA,KAAyB;AAC7C,MAAA,IAAI,OAAO,QAAA,EAAU;AAErB,MAAA,IAAI,EAAE,QAAA,EAAU;AACd,QAAA,MAAM,WAAA,GAAc,IAAI,GAAA,CAAI,aAAA,EAAe,CAAA;AAC3C,QAAA,IAAI,WAAA,CAAY,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA,EAAG;AACjC,UAAA,WAAA,CAAY,MAAA,CAAO,OAAO,KAAK,CAAA;AAAA,QACjC,CAAA,MAAO;AACL,UAAA,WAAA,CAAY,GAAA,CAAI,OAAO,KAAK,CAAA;AAAA,QAC9B;AACA,QAAA,aAAA,CAAc,IAAI,WAAW,CAAA;AAC7B,QAAA,CAAA,CAAE,QAAA,GAAW,KAAA,CAAM,IAAA,CAAK,WAAW,CAAC,CAAA;AAAA,MACtC,CAAA,MAAO;AACL,QAAA,aAAA,CAAc,oBAAI,IAAI,GAAA,CAAI,CAAC,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA;AACzC,QAAA,MAAA,CAAO,IAAI,KAAK,CAAA;AAChB,QAAA,CAAA,CAAE,kBAAkB,KAAK,CAAA;AACzB,QAAA,CAAA,CAAE,QAAA,GAAW,OAAO,KAAK,CAAA;AAAA,MAC3B;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAiB;AACpC,MAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,MAAA,aAAA,CAAc,GAAA,iBAAI,IAAI,GAAA,EAAK,CAAA;AAC3B,MAAA,CAAA,CAAE,OAAA,IAAU;AACZ,MAAA,CAAA,CAAE,QAAA,GAAW,CAAA,CAAE,QAAA,GAAW,KAAK,EAAE,CAAA;AAAA,IACnC,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,MAAM,iBAAiB,iBAAA,EAAkB;AACzC,MAAA,MAAM,OAAO,MAAA,EAAO;AACpB,MAAA,MAAM,SAAS,gBAAA,EAAiB;AAEhC,MAAA,QAAQ,MAAM,GAAA;AAAK,QACjB,KAAK,OAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,IAAI,IAAA,EAAM;AACR,YAAA,IAAI,MAAA,IAAU,CAAA,IAAK,MAAA,GAAS,cAAA,CAAe,MAAA,EAAQ;AACjD,cAAA,MAAM,MAAA,GAAS,eAAe,MAAM,CAAA;AACpC,cAAA,IAAI,MAAA,EAAQ;AACV,gBAAA,YAAA,CAAa,MAAM,CAAA;AAAA,cACrB;AAAA,YACF;AAAA,UACF,CAAA,MAAO;AACL,YAAA,cAAA,EAAe;AAAA,UACjB;AACA,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,IAAI,CAAC,IAAA,EAAM;AACT,YAAA,cAAA,EAAe;AAAA,UACjB,CAAA,MAAO;AACL,YAAA,IAAI,cAAA,CAAe,SAAS,CAAA,EAAG;AAC7B,cAAA,gBAAA,CAAiB,GAAA,CAAI,KAAK,GAAA,CAAI,MAAA,GAAS,GAAG,cAAA,CAAe,MAAA,GAAS,CAAC,CAAC,CAAA;AAAA,YACtE;AAAA,UACF;AACA,UAAA;AAAA,QACF,KAAK,SAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,IAAI,IAAA,EAAM;AACR,YAAA,IAAI,cAAA,CAAe,SAAS,CAAA,EAAG;AAC7B,cAAA,gBAAA,CAAiB,IAAI,IAAA,CAAK,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG,CAAC,CAAC,CAAA;AAAA,YAC9C;AAAA,UACF;AACA,UAAA;AAAA,QACF,KAAK,QAAA;AACH,UAAA,IAAI,IAAA,EAAM;AACR,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,MAAA,CAAO,IAAI,KAAK,CAAA;AAChB,YAAA,CAAA,CAAE,kBAAkB,KAAK,CAAA;AAAA,UAC3B;AACA,UAAA;AAAA,QACF,KAAK,MAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,IAAI,IAAA,IAAQ,cAAA,CAAe,MAAA,GAAS,CAAA,EAAG;AACrC,YAAA,gBAAA,CAAiB,IAAI,CAAC,CAAA;AAAA,UACxB;AACA,UAAA;AAAA,QACF,KAAK,KAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,IAAI,IAAA,IAAQ,cAAA,CAAe,MAAA,GAAS,CAAA,EAAG;AACrC,YAAA,gBAAA,CAAiB,GAAA,CAAI,cAAA,CAAe,MAAA,GAAS,CAAC,CAAA;AAAA,UAChD;AACA,UAAA;AAAA;AAGJ,MAAA,CAAA,CAAE,YAAY,KAAK,CAAA;AAAA,IACrB,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAc;AACrC,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,IAAA,CAAK,aAAA,EAAe,CAAA;AAC3C,MAAA,IAAI,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG,OAAO,EAAA;AAElC,MAAA,MAAM,IAAA,GAAO,CAAA,CAAE,OAAA,IAAW,EAAC;AAC3B,MAAA,MAAM,eAAA,GAAkB,KAAK,MAAA,CAAO,CAAA,GAAA,KAAO,SAAS,QAAA,CAAS,GAAA,CAAI,KAAK,CAAC,CAAA;AACvE,MAAA,OAAO,gBAAgB,GAAA,CAAI,CAAA,GAAA,KAAO,IAAI,KAAK,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,IACxD,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,OAAO,MAAA,EAAO;AACpB,MAAA,MAAM,WAAA,GAAc;AAAA,QAClB,YAAA;AAAA,QACA,CAAA,YAAA,EAAe,EAAE,IAAI,CAAA,CAAA;AAAA,QACrB,CAAA,CAAE,WAAW,sBAAA,GAAyB,EAAA;AAAA,QACtC,OAAO,kBAAA,GAAqB,EAAA;AAAA,QAC5B,CAAA,CAAE;AAAA,OACJ,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAE1B,MAAA,MAAM,gBAAgB,gBAAA,EAAiB;AACvC,MAAA,MAAM,YAAA,GAAe,iBAAiB,CAAA,CAAE,WAAA;AACxC,MAAA,MAAM,kBAAkB,kBAAA,EAAmB;AAC3C,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,SAAS,gBAAA,EAAiB;AAEhC,MAAA,MAAM,kBAA2B,EAAC;AAElC,MAAA,IAAI,eAAA,CAAgB,WAAW,CAAA,EAAG;AAChC,QAAA,eAAA,CAAgB,IAAA,CAAKH,WAAAA,CAAY,KAAA,EAAO,EAAE,OAAO,mBAAA,EAAoB,EAAG,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAG,gCAAO,CAAC,CAAC,CAAC,CAAA;AAAA,MAC7G,CAAA,MAAO;AACL,QAAA,eAAA,CAAgB,OAAA,CAAQ,CAAC,MAAA,EAAsB,KAAA,KAAkB;AAC/D,UAAA,MAAM,UAAA,GAAa,QAAA,CAAS,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA;AAC5C,UAAA,MAAM,aAAA,GAAgB,CAAC,MAAA,CAAO,QAAA,IAAY,KAAA,KAAU,MAAA;AACpD,UAAA,MAAM,iBAA0B,EAAC;AACjC,UAAA,IAAI,UAAA,EAAY;AACd,YAAA,cAAA,CAAe,IAAA,CAAKA,WAAAA,CAAY,MAAA,EAAQ,EAAE,OAAO,mBAAA,EAAoB,EAAG,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAG,QAAG,CAAC,CAAC,CAAC,CAAA;AAAA,UACzG;AACA,UAAA,cAAA,CAAe,KAAKA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,KAAK,CAAC,CAAA;AACzD,UAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,YACtC,GAAA,EAAK,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA;AAAA,YACxB,IAAA,EAAM,QAAA;AAAA,YACN,eAAA,EAAiB,UAAA;AAAA,YACjB,KAAA,EAAO;AAAA,cACL,oBAAA;AAAA,cACA,aAAa,8BAAA,GAAiC,EAAA;AAAA,cAC9C,MAAA,CAAO,WAAW,8BAAA,GAAiC,EAAA;AAAA,cACnD,gBAAgB,iCAAA,GAAoC;AAAA,aACtD,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,YAC1B,OAAA,EAAS,MAAM,YAAA,CAAa,MAAM,CAAA;AAAA,YAClC,cAAc,MAAM;AAClB,cAAA,IAAI,CAAC,MAAA,CAAO,QAAA,EAAU,gBAAA,CAAiB,IAAI,KAAK,CAAA;AAAA,YAClD;AAAA,WACF,EAAG,cAAc,CAAC,CAAA;AAAA,QACpB,CAAC,CAAA;AAAA,MACH;AAEA,MAAA,MAAM,kBAA2B,EAAC;AAClC,MAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,QACvC,KAAA,EAAO;AAAA,UACL,mBAAA;AAAA,UACA,CAAC,gBAAgB,gCAAA,GAAmC;AAAA,SACtD,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG;AAAA,OAC5B,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,YAAY,CAAC,CAAC,CAAC,CAAA;AAC3C,MAAA,IAAI,CAAA,CAAE,SAAA,IAAa,QAAA,CAAS,IAAA,GAAO,CAAA,EAAG;AACpC,QAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UACvC,KAAA,EAAO,mBAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAG,CAAC,CAAC,CAAC,CAAA;AAAA,MACpC;AACA,MAAA,eAAA,CAAgB,IAAA,CAAKA,WAAAA,CAAY,MAAA,EAAQ,EAAE,OAAO,mBAAA,EAAoB,EAAG,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAG,QAAG,CAAC,CAAC,CAAC,CAAA;AAExG,MAAA,MAAM,cAAA,GAA0B;AAAA,QAC9BA,YAAY,KAAA,EAAO;AAAA,UACjB,KAAA,EAAO,qBAAA;AAAA,UACP,OAAA,EAAS;AAAA,WACR,eAAe;AAAA,OACpB;AACA,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,cAAA,CAAe,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,UACrC,KAAA,EAAO,sBAAA;AAAA,UACP,IAAA,EAAM,SAAA;AAAA,UACN,wBAAwB,CAAA,CAAE;AAAA,SAC5B,EAAG,eAAe,CAAC,CAAA;AAAA,MACrB;AAEA,MAAA,MAAM,YAAY,oBAAA,CAAqB;AAAA,QACrC,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,WAAW,CAAA,CAAE,SAAA;AAAA,QACb,iBAAiB,CAAA,CAAE,eAAA;AAAA,QACnB,cAAc,CAAA,CAAE,YAAA;AAAA,QAChB,aAAa,CAAA,CAAE,WAAA;AAAA,QACf,UAAU,CAAA,CAAE,QAAA;AAAA,QACZ,UAAU,CAAA,CAAE,QAAA;AAAA,QACZ,QAAA,EAAU,IAAA;AAAA,QACV,QAAA,EAAU;AAAA,OACX,CAAA;AAED,MAAA,OAAOA,WAAAA,CAAY,KAAA,EAAOC,cAAAA,CAAe,SAAA,EAAW;AAAA,QAClD,KAAA,EAAO,WAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACZ,GAAG,cAAc,CAAA;AAAA,IACpB,CAAA;AAAA,EACF;AACF,CAAC;ACzPM,IAAM,UAAUJ,eAAAA,CAAgB;AAAA,EACrC,IAAA,EAAM,YAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAK;AAAA,IACtC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAK;AAAA,IACrC,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA;AAAM,GAC5C;AAAA,EAEA,KAAA,CAAM,MAAA,EAAiC,EAAE,KAAA,EAAM,EAA4B;AACzE,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,cAAc,KAAA,CAAM,OAAA;AAC1B,MAAA,MAAM,QAAA,GAAoB,WAAA,GAAc,WAAA,EAAY,GAAI,EAAC;AACzD,MAAA,OAAOG,YAAY,KAAA,EAAO,EAAE,KAAA,EAAO,cAAA,IAAkB,QAAQ,CAAA;AAAA,IAC/D,CAAA;AAAA,EACF;AACF,CAAC;AAEM,IAAM,OAAOH,eAAAA,CAAgB;AAAA,EAClC,IAAA,EAAM,SAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACxC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAClC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,OAAA,EAAS,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACzC,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC3C,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,UAAA,EAAY,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACjD,WAAA,EAAa,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAClD,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,cAAA,EAAgB,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACrD,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACnD,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAClD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAyB;AACrE,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,YAAYM,MAAAA,CAAkB;AAAA,MAClC,UAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,MACX,SAAA,EAAW;AAAA,KACZ,CAAA;AACD,IAAA,MAAM,WAAA,GAAcA,OAAO,CAAC,CAAA;AAE5B,IAAA,MAAM,WAAW,MAAiB;AAChC,MAAA,MAAM,cAAc,KAAA,CAAM,OAAA;AAC1B,MAAA,MAAM,kBAAA,GAAqB,WAAA,GAAc,WAAA,EAAY,GAAI,EAAC;AAC1D,MAAA,IAAI,CAAC,kBAAA,IAAsB,kBAAA,CAAmB,MAAA,KAAW,CAAA,SAAU,EAAC;AAEpE,MAAA,OAAO,kBAAA,CACJ,MAAA,CAAO,CAAC,KAAA,KAAiB,KAAA,IAAU,KAAA,CAAiD,IAAA,EAAM,IAAA,KAAS,YAAY,CAAA,CAC/G,GAAA,CAAI,CAAC,KAAA,MAAkB;AAAA,QACtB,OAAQ,KAAA,CAAkD,KAAA;AAAA,QAC1D,UAAW,KAAA,CAA2C;AAAA,OACxD,CAAE,CAAA;AAAA,IACN,CAAA;AAEA,IAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAqB;AAC5C,MAAA,OAAO,MAAM,MAAA,CAAO,CAAA,IAAA,KAAQ,CAAC,IAAA,CAAK,MAAM,QAAQ,CAAA;AAAA,IAClD,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,CAAC,IAAA,EAAe,KAAA,KAAkB;AACvD,MAAA,IAAI,IAAA,CAAK,MAAM,QAAA,EAAU;AACzB,MAAA,CAAA,CAAE,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC5B,MAAA,CAAA,CAAE,UAAA,GAAa,MAAM,KAAK,CAAA;AAC1B,MAAA,WAAA,CAAY,IAAI,KAAK,CAAA;AAAA,IACvB,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAqB;AAC1C,MAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,MAAA,MAAM,YAAA,GAAe,gBAAgB,KAAK,CAAA;AAE1C,MAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAE/B,MAAA,IAAI,WAAW,WAAA,EAAY;AAE3B,MAAA,QAAQ,EAAE,GAAA;AAAK,QACb,KAAK,YAAA;AAAA,QACL,KAAK,WAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AAEjB,UAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACtC,YAAA,MAAM,SAAA,GAAA,CAAa,WAAA,EAAY,GAAI,CAAA,IAAK,KAAA,CAAM,MAAA;AAC9C,YAAA,IAAI,KAAA,CAAM,SAAS,CAAA,IAAK,CAAC,MAAM,SAAS,CAAA,CAAE,MAAM,QAAA,EAAU;AACxD,cAAA,QAAA,GAAW,SAAA;AACX,cAAA;AAAA,YACF;AAAA,UACF;AACA,UAAA;AAAA,QACF,KAAK,WAAA;AAAA,QACL,KAAK,SAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AAEjB,UAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACtC,YAAA,MAAM,aAAa,WAAA,EAAY,GAAI,CAAA,GAAI,KAAA,CAAM,UAAU,KAAA,CAAM,MAAA;AAC7D,YAAA,IAAI,KAAA,CAAM,SAAS,CAAA,IAAK,CAAC,MAAM,SAAS,CAAA,CAAE,MAAM,QAAA,EAAU;AACxD,cAAA,QAAA,GAAW,SAAA;AACX,cAAA;AAAA,YACF;AAAA,UACF;AACA,UAAA;AAAA,QACF,KAAK,MAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AAEjB,UAAA,QAAA,GAAW,KAAA,CAAM,SAAA,CAAU,CAAA,IAAA,KAAQ,IAAA,IAAQ,IAAA,IAAQ,IAAA,CAAK,KAAA,IAAS,IAAA,IAAQ,CAAC,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAA;AAC7F,UAAA;AAAA,QACF,KAAK,KAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AAEjB,UAAA,KAAA,IAAS,IAAI,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC1C,YAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA;AACpB,YAAA,IAAI,QAAQ,IAAA,CAAK,KAAA,IAAS,CAAC,IAAA,CAAK,MAAM,QAAA,EAAU;AAC9C,cAAA,QAAA,GAAW,CAAA;AACX,cAAA;AAAA,YACF;AAAA,UACF;AACA,UAAA;AAAA,QACF,KAAK,OAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AAEjB,UAAA,MAAM,WAAA,GAAc,KAAA,CAAM,WAAA,EAAa,CAAA;AACvC,UAAA,IAAI,WAAA,IAAe,CAAC,WAAA,CAAY,KAAA,CAAM,QAAA,EAAU;AAC9C,YAAA,cAAA,CAAe,WAAA,EAAa,aAAa,CAAA;AAAA,UAC3C;AACA,UAAA;AAAA;AAGJ,MAAA,IAAI,QAAA,KAAa,aAAY,EAAG;AAC9B,QAAA,WAAA,CAAY,IAAI,QAAQ,CAAA;AACxB,QAAA,MAAM,IAAA,GAAO,MAAM,QAAQ,CAAA;AAC3B,QAAA,IAAI,IAAA,IAAQ,CAAC,IAAA,CAAK,KAAA,CAAM,QAAA,EAAU;AAChC,UAAA,cAAA,CAAe,MAAM,QAAQ,CAAA;AAAA,QAC/B;AAAA,MACF;AAEA,MAAA,CAAA,CAAE,YAAY,CAAC,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAM,eAAA,GAAkB,CAAC,IAAA,EAAe,CAAA,KAAa;AACnD,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,CAAA,CAAE,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAAA,IACjC,CAAA;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,CAAA,CAAE,QAAA,IAAW;AAAA,IACf,CAAA;AAEA,IAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAkB;AACzC,MAAA,IAAI,CAAC,EAAE,SAAA,EAAW;AAClB,MAAA,SAAA,CAAU,GAAA,CAAI;AAAA,QACZ,UAAA,EAAY,IAAA;AAAA,QACZ,SAAA,EAAW,KAAA;AAAA,QACX,SAAA,EAAW;AAAA,OACZ,CAAA;AACD,MAAA,CAAA,CAAE,iBAAiB,KAAK,CAAA;AAAA,IAC1B,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,KAAkB;AACxC,MAAA,IAAI,CAAC,SAAA,EAAU,CAAE,UAAA,EAAY;AAC7B,MAAA,SAAA,CAAU,GAAA,CAAI;AAAA,QACZ,GAAG,SAAA,EAAU;AAAA,QACb,SAAA,EAAW;AAAA,OACZ,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,MAAM,EAAE,SAAA,EAAW,SAAA,EAAU,GAAI,SAAA,EAAU;AAC3C,MAAA,IAAI,SAAA,KAAc,EAAA,IAAM,SAAA,KAAc,EAAA,IAAM,cAAc,SAAA,EAAW;AACnE,QAAA,CAAA,CAAE,YAAA,GAAe,WAAW,SAAS,CAAA;AAAA,MACvC;AACA,MAAA,SAAA,CAAU,GAAA,CAAI;AAAA,QACZ,UAAA,EAAY,KAAA;AAAA,QACZ,SAAA,EAAW,EAAA;AAAA,QACX,SAAA,EAAW;AAAA,OACZ,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,MAAA,MAAM,cAAc,CAAA,CAAE,UAAA,IAAc,KAAA,CAAM,CAAC,GAAG,KAAA,CAAM,IAAA;AAGpD,MAAA,MAAM,eAAe,KAAA,CAAM,SAAA,CAAU,UAAQ,IAAA,CAAK,KAAA,CAAM,SAAS,WAAW,CAAA;AAC5E,MAAA,IAAI,YAAA,KAAiB,EAAA,IAAM,YAAA,KAAiB,WAAA,EAAY,EAAG;AACzD,QAAA,WAAA,CAAY,IAAI,YAAY,CAAA;AAAA,MAC9B;AAEA,MAAA,MAAM,SAAA,GAAY;AAAA,QAChB,UAAA;AAAA,QACA,CAAA,UAAA,EAAa,CAAA,CAAE,IAAA,IAAQ,QAAQ,CAAA,CAAA;AAAA,QAC/B,CAAA,CAAE;AAAA,OACJ,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAE1B,MAAA,MAAM,QAAA,GAAoB,KAAA,CAAM,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AACnD,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,IAAA,KAAS,WAAA;AACrC,QAAA,MAAM,cAAc,CAAA,CAAE,SAAA;AAEtB,QAAA,MAAM,WAAA,GAAuB;AAAA,UAC3BH,WAAAA,CAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,mBAAkB,EAAG,CAACI,eAAAA,CAAgB,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,KAAK,CAAC,CAAC,CAAC;AAAA,SAC/F;AAEA,QAAA,IAAI,IAAA,CAAK,KAAA,CAAM,QAAA,IAAY,CAAA,CAAE,QAAA,EAAU;AACrC,UAAA,MAAM,gBAAgBF,kBAAAA,CAAmB;AAAA,YACvC,SAAA,EAAW,WAAA;AAAA,YACX,QAAA,EAAU,KAAK,KAAA,CAAM;AAAA,WACtB,CAAA;AACD,UAAA,WAAA,CAAY,IAAA,CAAKF,WAAAA,CAAY,MAAA,EAAQC,cAAAA,CAAe,aAAA,EAAe;AAAA,YACjE,KAAA,EAAO,iBAAA;AAAA,YACP,OAAA,EAAS,CAAC,CAAA,KAAa,eAAA,CAAgB,MAAM,CAAC;AAAA,WAC/C,CAAA,EAAG,CAACG,gBAAgB,MAAG,CAAC,CAAC,CAAC,CAAA;AAAA,QAC7B;AAEA,QAAA,MAAM,eAAe,eAAA,CAAgB;AAAA,UACnC,EAAA,EAAI,GAAG,CAAA,CAAE,EAAA,IAAM,MAAM,CAAA,KAAA,EAAQ,IAAA,CAAK,MAAM,IAAI,CAAA,CAAA;AAAA,UAC5C,QAAA,EAAU,QAAA;AAAA,UACV,QAAA,EAAU,KAAK,KAAA,CAAM,QAAA;AAAA,UACrB,QAAA,EAAU,GAAG,CAAA,CAAE,EAAA,IAAM,MAAM,CAAA,OAAA,EAAU,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,SACrD,CAAA;AAED,QAAA,OAAOJ,WAAAA,CAAY,KAAA,EAAOC,cAAAA,CAAe,YAAA,EAAc;AAAA,UACrD,GAAA,EAAK,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAAA,UAC3B,KAAA,EAAO;AAAA,YACL,gBAAA;AAAA,YACA,WAAW,wBAAA,GAA2B,EAAA;AAAA,YACtC,IAAA,CAAK,KAAA,CAAM,QAAA,GAAW,0BAAA,GAA6B,EAAA;AAAA,YACnD,SAAA,EAAU,CAAE,SAAA,KAAc,KAAA,GAAQ,sBAAA,GAAyB;AAAA,WAC7D,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,UAC1B,SAAA,EAAW,WAAA;AAAA,UACX,OAAA,EAAS,MAAM,cAAA,CAAe,IAAA,EAAM,KAAK,CAAA;AAAA,UACzC,SAAA,EAAW,aAAA;AAAA,UACX,WAAA,EAAa,MAAM,eAAA,CAAgB,KAAK,CAAA;AAAA,UACxC,UAAA,EAAY,CAAC,CAAA,KAAiB;AAAE,YAAA,CAAA,CAAE,cAAA,EAAe;AAAG,YAAA,cAAA,CAAe,KAAK,CAAA;AAAA,UAAG,CAAA;AAAA,UAC3E,SAAA,EAAW;AAAA,SACZ,GAAG,WAAW,CAAA;AAAA,MACjB,CAAC,CAAA;AAED,MAAA,IAAI,CAAA,CAAE,OAAA,IAAW,CAAA,CAAE,QAAA,EAAU;AAC3B,QAAA,MAAM,cAAcC,kBAAAA,CAAmB;AAAA,UACrC,SAAA,EAAW;AAAA,SACZ,CAAA;AACD,QAAA,QAAA,CAAS,IAAA,CAAKF,WAAAA,CAAY,KAAA,EAAOC,cAAAA,CAAe,WAAA,EAAa;AAAA,UAC3D,KAAA,EAAO,mBAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACV,CAAA,EAAG,CAACG,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAA;AAAA,MAC7B;AAEA,MAAA,MAAM,UAAU,KAAA,CAAM,IAAA,CAAK,UAAQ,IAAA,CAAK,KAAA,CAAM,SAAS,WAAW,CAAA;AAElE,MAAA,MAAM,aAAA,GAAgB,UAAU,oBAAA,CAAqB;AAAA,QACnD,EAAA,EAAI,GAAG,CAAA,CAAE,EAAA,IAAM,MAAM,CAAA,OAAA,EAAU,OAAA,CAAQ,MAAM,IAAI,CAAA,CAAA;AAAA,QACjD,UAAA,EAAY,GAAG,CAAA,CAAE,EAAA,IAAM,MAAM,CAAA,KAAA,EAAQ,OAAA,CAAQ,MAAM,IAAI,CAAA;AAAA,OACxD,IAAI,EAAC;AAEN,MAAA,MAAM,WAAA,GAAc,OAAA,GAChBJ,WAAAA,CAAY,KAAA,EAAOC,eAAe,aAAA,EAAe;AAAA,QAC/C,KAAA,EAAO;AAAA,OACR,CAAA,EAAG,OAAA,CAAQ,QAAQ,CAAA,GACpBD,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,gBAAA,EAAiB,EAAG,EAAE,CAAA;AAEtD,MAAA,MAAM,mBAAmB,mBAAA,CAAoB;AAAA,QAC3C,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,SAAA,EAAW,EAAE,SAAA,IAAa,MAAA;AAAA,QAC1B,iBAAiB,CAAA,CAAE;AAAA,OACpB,CAAA;AAED,MAAA,OAAOA,WAAAA,CAAY,KAAA,EAAOC,cAAAA,CAAe,gBAAA,EAAkB;AAAA,QACzD,KAAA,EAAO,SAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACZ,CAAA,EAAG;AAAA,QACFD,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,oBAAmB,EAAG;AAAA,UAChDA,YAAY,KAAA,EAAO,EAAE,KAAA,EAAO,eAAA,IAAmB,QAAQ;AAAA,SACxD,CAAA;AAAA,QACDA,WAAAA,CAAY,OAAO,EAAE,KAAA,EAAO,qBAAoB,EAAG,CAAC,WAAW,CAAC;AAAA,OACjE,CAAA;AAAA,IACH,CAAA;AAAA,EACF;AACF,CAAC;ACxSM,IAAM,QAAQH,eAAAA,CAAgB;AAAA,EACnC,IAAA,EAAM,UAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,MAAM,EAAE,IAAA,EAAM,OAAO,OAAA,EAAS,MAAiB,EAAC,EAAE;AAAA,IAClD,SAAS,EAAE,IAAA,EAAM,OAAO,OAAA,EAAS,MAAqB,EAAC,EAAE;AAAA,IACzD,MAAA,EAAQ,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACxC,MAAA,EAAQ,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACxC,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,IAAA,EAAK;AAAA,IACtC,aAAA,EAAe,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC/C,mBAAA,EAAqB,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACrD,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,UAAA,EAAY,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACjD,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACnD,iBAAA,EAAmB,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAC1D;AAAA,EAEA,MAAM,KAAA,EAAgC;AACpC,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,UAAA,GAAaM,OAAO,EAAE,CAAA;AAC5B,IAAA,MAAM,SAAA,GAAYA,OAAuB,EAAE,CAAA;AAC3C,IAAA,MAAM,YAAA,GAAeA,MAAAA,iBAA0B,IAAI,GAAA,EAAK,CAAA;AACxD,IAAA,MAAM,UAAA,GAAaA,OAA4B,IAAI,CAAA;AACnD,IAAA,MAAM,WAAA,GAAcA,OAAO,KAAK,CAAA;AAEhC,IAAA,MAAM,UAAA,GAAa,CAAC,MAAA,KAAwB;AAC1C,MAAA,IAAI,CAAC,MAAA,CAAO,QAAA,IAAY,CAAC,OAAO,IAAA,EAAM;AAEtC,MAAA,IAAI,QAAA;AACJ,MAAA,IAAI,UAAA,EAAW,KAAM,MAAA,CAAO,IAAA,EAAM;AAChC,QAAA,IAAI,SAAA,OAAgB,WAAA,EAAa;AAC/B,UAAA,QAAA,GAAW,YAAA;AAAA,QACb,CAAA,MAAA,IAAW,SAAA,EAAU,KAAM,YAAA,EAAc;AACvC,UAAA,QAAA,GAAW,EAAA;AAAA,QACb,CAAA,MAAO;AACL,UAAA,QAAA,GAAW,WAAA;AAAA,QACb;AAAA,MACF,CAAA,MAAO;AACL,QAAA,QAAA,GAAW,WAAA;AAAA,MACb;AAEA,MAAA,UAAA,CAAW,GAAA,CAAI,OAAO,IAAI,CAAA;AAC1B,MAAA,SAAA,CAAU,IAAI,QAAQ,CAAA;AACtB,MAAA,CAAA,CAAE,YAAA,GAAe,MAAA,EAAQ,MAAA,CAAO,IAAA,EAAM,QAAQ,CAAA;AAAA,IAChD,CAAA;AAEA,IAAA,MAAM,eAAA,GAAkB,CAAC,GAAA,EAAmB,OAAA,KAAqB;AAC/D,MAAA,MAAM,WAAA,GAAc,IAAI,GAAA,CAAI,YAAA,EAAc,CAAA;AAC1C,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,WAAA,CAAY,IAAI,GAAG,CAAA;AAAA,MACrB,CAAA,MAAO;AACL,QAAA,WAAA,CAAY,OAAO,GAAG,CAAA;AAAA,MACxB;AACA,MAAA,YAAA,CAAa,IAAI,WAAW,CAAA;AAE5B,MAAA,MAAM,IAAA,GAAO,CAAA,CAAE,IAAA,IAAQ,EAAC;AACxB,MAAA,WAAA,CAAY,GAAA,CAAI,WAAA,CAAY,IAAA,KAAS,IAAA,CAAK,MAAM,CAAA;AAEhD,MAAA,CAAA,CAAE,iBAAA,GAAoB,KAAA,CAAM,IAAA,CAAK,WAAW,CAAC,CAAA;AAAA,IAC/C,CAAA;AAEA,IAAA,MAAM,eAAA,GAAkB,CAAC,OAAA,KAAqB;AAC5C,MAAA,WAAA,CAAY,IAAI,OAAO,CAAA;AACvB,MAAA,MAAM,IAAA,GAAO,CAAA,CAAE,IAAA,IAAQ,EAAC;AAExB,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,YAAA,CAAa,GAAA,CAAI,IAAI,GAAA,CAAI,IAAI,CAAC,CAAA;AAC9B,QAAA,CAAA,CAAE,iBAAA,GAAoB,CAAC,GAAG,IAAI,CAAC,CAAA;AAAA,MACjC,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,GAAA,iBAAI,IAAI,GAAA,EAAK,CAAA;AAC1B,QAAA,CAAA,CAAE,iBAAA,GAAoB,EAAE,CAAA;AAAA,MAC1B;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,CAAC,GAAA,EAAmB,KAAA,KAAkB;AAC3D,MAAA,IAAI,EAAE,mBAAA,EAAqB;AACzB,QAAA,UAAA,CAAW,IAAI,GAAG,CAAA;AAAA,MACpB;AACA,MAAA,CAAA,CAAE,UAAA,GAAa,KAAK,KAAK,CAAA;AAAA,IAC3B,CAAA;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,GAAA,EAAmB,MAAA,KAAiC;AACxE,MAAA,IAAI,CAAC,MAAA,CAAO,IAAA,EAAM,OAAO,EAAA;AACzB,MAAA,OAAO,GAAA,CAAI,OAAO,IAAI,CAAA;AAAA,IACxB,CAAA;AAEA,IAAA,MAAM,SAAA,GAAY,CAAC,GAAA,EAAmB,KAAA,KAA0B;AAC9D,MAAA,IAAI,CAAA,CAAE,MAAA,IAAU,GAAA,CAAI,CAAA,CAAE,MAAM,CAAA,EAAG;AAC7B,QAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,MAC7B;AACA,MAAA,OAAO,OAAO,KAAK,CAAA;AAAA,IACrB,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,IAAA,GAAO,CAAA,CAAE,IAAA,IAAQ,EAAC;AACxB,MAAA,MAAM,OAAA,GAAU,CAAA,CAAE,OAAA,IAAW,EAAC;AAE9B,MAAA,MAAM,UAAA,GAAa,CAAC,WAAW,CAAA;AAC/B,MAAA,IAAI,CAAA,CAAE,MAAA,EAAQ,UAAA,CAAW,IAAA,CAAK,mBAAmB,CAAA;AACjD,MAAA,IAAI,CAAA,CAAE,MAAA,EAAQ,UAAA,CAAW,IAAA,CAAK,mBAAmB,CAAA;AACjD,MAAA,IAAI,CAAA,CAAE,KAAA,EAAO,UAAA,CAAW,IAAA,CAAK,EAAE,KAAK,CAAA;AAEpC,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,MAAM,QAAQH,WAAAA,CAAY,OAAA,EAAS,EAAE,KAAA,EAAO,qBAAoB,EAAG;AAAA,QACjEA,WAAAA,CAAY,IAAA,EAAM,EAAC,EAAG;AAAA,UACpB,GAAI,EAAE,aAAA,GAAgB;AAAA,YACpBA,WAAAA,CAAY,IAAA,EAAM,EAAE,KAAA,EAAO,8BAA6B,EAAG;AAAA,cACzDA,WAAAA,CAAY,SAASC,cAAAA,CAAe,wBAAA,CAAyB,EAAE,SAAA,EAAW,cAAA,EAAM,CAAA,EAAG;AAAA,gBACjF,IAAA,EAAM,UAAA;AAAA,gBACN,SAAS,WAAA,EAAY;AAAA,gBACrB,UAAU,CAAC,CAAA,KAAa,eAAA,CAAiB,CAAA,CAAE,OAA4B,OAAO;AAAA,eAC/E,CAAC;AAAA,aACH;AAAA,cACC,EAAC;AAAA,UACL,GAAG,OAAA,CAAQ,GAAA;AAAA,YAAI,CAAC,MAAA,KACdD,WAAAA,CAAY,IAAA,EAAM;AAAA,cAChB,KAAA,EAAO;AAAA,gBACL,iBAAA;AAAA,gBACA,MAAA,CAAO,WAAW,2BAAA,GAA8B,EAAA;AAAA,gBAChD,MAAA,CAAO,KAAA,GAAQ,CAAA,iBAAA,EAAoB,MAAA,CAAO,KAAK,CAAA,CAAA,GAAK;AAAA,eACtD,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,cAC1B,OAAA,EAAS,MAAM,UAAA,CAAW,MAAM;AAAA,aAClC,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,MAAA,CAAO,KAAK,CAAC,CAAC,CAAC;AAAA;AACpD,SACD;AAAA,OACF,CAAA;AAED,MAAA,MAAM,KAAA,GAAQA,WAAAA;AAAA,QAAY,OAAA;AAAA,QAAS,EAAE,OAAO,iBAAA,EAAkB;AAAA,QAC5D,IAAA,CAAK,WAAW,CAAA,GACZ;AAAA,UACEA,WAAAA,CAAY,IAAA,EAAM,EAAE,KAAA,EAAO,wBAAuB,EAAG;AAAA,YACnDA,YAAY,IAAA,EAAM;AAAA,cAChB,OAAA,EAAS,OAAA,CAAQ,MAAA,IAAU,CAAA,CAAE,gBAAgB,CAAA,GAAI,CAAA,CAAA;AAAA,cACjD,KAAA,EAAO;AAAA,aACT,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,0BAAM,CAAC,CAAC;AAAA,WACrC;AAAA,SACH,GACA,IAAA,CAAK,GAAA,CAAI,CAAC,KAAmB,KAAA,KAAkB;AAC7C,UAAA,MAAM,cAAuB,EAAC;AAE9B,UAAA,IAAI,EAAE,aAAA,EAAe;AACnB,YAAA,WAAA,CAAY,IAAA;AAAA,cACVA,WAAAA,CAAY,IAAA,EAAM,EAAE,KAAA,EAAO,8BAA6B,EAAG;AAAA,gBACzDA,WAAAA,CAAY,SAASC,cAAAA,CAAe,wBAAA,CAAyB,EAAE,SAAA,EAAW,oBAAA,EAAO,CAAA,EAAG;AAAA,kBAClF,IAAA,EAAM,UAAA;AAAA,kBACN,OAAA,EAAS,YAAA,EAAa,CAAE,GAAA,CAAI,GAAG,CAAA;AAAA,kBAC/B,UAAU,CAAC,CAAA,KAAa,gBAAgB,GAAA,EAAM,CAAA,CAAE,OAA4B,OAAO;AAAA,iBACpF,CAAC;AAAA,eACH;AAAA,aACH;AAAA,UACF;AAEA,UAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,KAAwB;AACvC,YAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,GAAA,EAAK,MAAM,CAAA;AACtC,YAAA,MAAM,YAAA,GAAe,MAAA,CAAO,SAAA,GACxB,MAAA,CAAO,SAAA,CAAU,GAAA,EAAK,MAAA,EAAQ,KAAK,CAAA,GACnC,MAAA,CAAO,KAAA,IAAS,EAAE,CAAA;AAEtB,YAAA,WAAA,CAAY,IAAA;AAAA,cACVD,YAAY,IAAA,EAAM;AAAA,gBAChB,KAAA,EAAO;AAAA,kBACL,iBAAA;AAAA,kBACA,MAAA,CAAO,KAAA,GAAQ,CAAA,iBAAA,EAAoB,MAAA,CAAO,KAAK,CAAA,CAAA,GAAK;AAAA,iBACtD,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG;AAAA,eAC5B,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,YAAY,CAAC,CAAC;AAAA,aAC5C;AAAA,UACF,CAAC,CAAA;AAED,UAAA,OAAOA,YAAY,IAAA,EAAM;AAAA,YACvB,GAAA,EAAK,SAAA,CAAU,GAAA,EAAK,KAAK,CAAA;AAAA,YACzB,KAAA,EAAO;AAAA,cACL,gBAAA;AAAA,cACA,UAAA,EAAW,KAAM,GAAA,GAAM,wBAAA,GAA2B;AAAA,aACpD,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,YAC1B,OAAA,EAAS,MAAM,cAAA,CAAe,GAAA,EAAK,KAAK;AAAA,aACvC,WAAW,CAAA;AAAA,QAChB,CAAC;AAAA,OACP;AAEA,MAAA,QAAA,CAAS,IAAA,CAAK,OAAO,KAAK,CAAA;AAE1B,MAAA,OAAOA,WAAAA,CAAY,SAASC,cAAAA,CAAe;AAAA,QACzC,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,cAAc,CAAA,CAAE,SAAA;AAAA,QAChB,oBAAoB,CAAA,CAAE,eAAA;AAAA,QACtB,IAAA,EAAM;AAAA,OACR,EAAG,EAAE,KAAA,EAAO,UAAA,CAAW,KAAK,GAAG,CAAA,EAAG,CAAA,EAAG,QAAQ,CAAA;AAAA,IAC/C,CAAA;AAAA,EACF;AACF,CAAC;AClMM,IAAM,OAAOJ,eAAAA,CAAgB;AAAA,EAClC,IAAA,EAAM,SAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,OAAO,EAAE,IAAA,EAAM,QAAQ,OAAA,EAAS,OAAgC,EAAC,CAAA,EAAG;AAAA,IACpE,OAAO,EAAE,IAAA,EAAM,QAAQ,OAAA,EAAS,OAAkB,EAAC,CAAA,EAAG;AAAA,IACtD,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,OAAA,EAAQ;AAAA,IAC7C,aAAA,EAAe,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,OAAA,EAAQ;AAAA,IAChD,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GACjD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAyB;AACrE,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,MAAA,GAASM,MAAAA,CAA+B,EAAE,CAAA;AAEhD,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA2B;AAChD,MAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,KAAA,CAAM,KAAK,CAAA;AAC3B,MAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,MAAA,KAAW,GAAG,OAAO,IAAA;AAEzC,MAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,KAAA,CAAM,KAAK,CAAA;AAE3B,MAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,QAAA,IAAI,IAAA,CAAK,QAAA,KAAa,CAAC,KAAA,IAAS,UAAU,EAAA,CAAA,EAAK;AAC7C,UAAA,MAAA,CAAO,GAAA,CAAI,EAAE,GAAG,MAAA,EAAO,EAAG,CAAC,KAAK,GAAG,IAAA,CAAK,OAAA,IAAW,gCAAA,EAAS,CAAA;AAC5D,UAAA,OAAO,KAAA;AAAA,QACT;AACA,QAAA,IAAI,IAAA,CAAK,OAAA,IAAW,CAAC,IAAA,CAAK,OAAA,CAAQ,KAAK,MAAA,CAAO,KAAA,IAAS,EAAE,CAAC,CAAA,EAAG;AAC3D,UAAA,MAAA,CAAO,GAAA,CAAI,EAAE,GAAG,MAAA,EAAO,EAAG,CAAC,KAAK,GAAG,IAAA,CAAK,OAAA,IAAW,gCAAA,EAAS,CAAA;AAC5D,UAAA,OAAO,KAAA;AAAA,QACT;AACA,QAAA,IAAI,KAAK,SAAA,EAAW;AAClB,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,EAAE,KAAK,CAAA;AAC5C,UAAA,IAAI,WAAW,IAAA,EAAM;AACnB,YAAA,MAAA,CAAO,GAAA,CAAI,EAAE,GAAG,MAAA,EAAO,EAAG,CAAC,KAAK,GAAG,OAAO,MAAA,KAAW,QAAA,GAAW,MAAA,GAAS,4BAAQ,CAAA;AACjF,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAEA,MAAA,MAAM,SAAA,GAAY,EAAE,GAAG,MAAA,EAAO,EAAE;AAChC,MAAA,OAAO,UAAU,KAAK,CAAA;AACtB,MAAA,MAAA,CAAO,IAAI,SAAS,CAAA;AACpB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,WAAW,MAAe;AAC9B,MAAA,IAAI,OAAA,GAAU,IAAA;AAEd,MAAA,KAAA,MAAW,KAAA,IAAS,EAAE,KAAA,EAAO;AAC3B,QAAA,IAAI,CAAC,aAAA,CAAc,KAAK,CAAA,EAAG;AACzB,UAAA,OAAA,GAAU,KAAA;AAAA,QACZ;AAAA,MACF;AAEA,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAiB;AACrC,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,IAAI,UAAS,EAAG;AACd,QAAA,CAAA,CAAE,QAAA,GAAW,EAAE,KAAK,CAAA;AAAA,MACtB;AAAA,IACF,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,SAAA,GAAY;AAAA,QAChB,UAAA;AAAA,QACA,CAAA,gBAAA,EAAmB,EAAE,aAAa,CAAA,CAAA;AAAA,QAClC,CAAA,CAAE;AAAA,OACJ,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAE1B,MAAA,MAAM,WAAoB,KAAA,CAAM,OAAA,GAAU,KAAA,CAAM,OAAA,KAAY,EAAC;AAE7D,MAAA,OAAOH,YAAY,MAAA,EAAQ;AAAA,QACzB,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,cAAc,CAAA,CAAE,SAAA;AAAA,QAChB,oBAAoB,CAAA,CAAE,eAAA;AAAA,QACtB,KAAA,EAAO,SAAA;AAAA,QACP,QAAA,EAAU;AAAA,SACT,QAAQ,CAAA;AAAA,IACb,CAAA;AAAA,EACF;AACF,CAAC;AAEM,IAAM,WAAWH,eAAAA,CAAgB;AAAA,EACtC,IAAA,EAAM,aAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAClC,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,MAAA,EAAQ,KAAK,CAAA,EAAmC,OAAA,EAAS,MAAM,EAAC,EAAE;AAAA,IAClF,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,cAAA,EAAgB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC5C,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GAC/C;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAA6B;AACzE,IAAA,MAAM,CAAA,GAAI,KAAA;AAEV,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,SAAA,GAAY;AAAA,QAChB,eAAA;AAAA,QACA,CAAA,CAAE,QAAQ,sBAAA,GAAyB,EAAA;AAAA,QACnC,CAAA,CAAE,cAAA,GAAiB,CAAA,eAAA,EAAkB,CAAA,CAAE,cAAc,CAAA,CAAA,GAAK;AAAA,OAC5D,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAE1B,MAAA,MAAM,aAAa,CAAA,CAAE,KAAA,GAAQ,EAAE,KAAA,EAAO,OAAA,KAAY,EAAC;AAEnD,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,EAAE,KAAA,EAAO;AACX,QAAA,QAAA,CAAS,IAAA,CAAKG,YAAY,OAAA,EAAS;AAAA,UACjC,KAAA,EAAO,sBAAA;AAAA,UACP,KAAA,EAAO;AAAA,SACT,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,CAAA,CAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,MAChD;AAEA,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,wBAAA,EAAyB,EAAG,WAAW,CAAC,CAAA;AAAA,MACpF;AAEA,MAAA,IAAI,EAAE,KAAA,EAAO;AACX,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,UAC/B,KAAA,EAAO,sBAAA;AAAA,UACP,IAAA,EAAM,OAAA;AAAA,UACN,WAAA,EAAa;AAAA,SACf,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,CAAA,CAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,MAChD;AAEA,MAAA,OAAOA,WAAAA,CAAY,OAAOC,cAAAA,CAAe;AAAA,QACvC,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,cAAc,CAAA,CAAE,SAAA;AAAA,QAChB,oBAAoB,CAAA,CAAE;AAAA,SACrB,EAAE,KAAA,EAAO,SAAA,EAAW,GAAG,QAAQ,CAAA;AAAA,IACpC,CAAA;AAAA,EACF;AACF,CAAC;AChJM,IAAM,aAAaJ,eAAAA,CAAgB;AAAA,EACxC,IAAA,EAAM,eAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAO;AAAA,IACtC,MAAA,EAAQ,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACxC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAClC,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,GAAA,EAAI;AAAA,IACvC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GACrC;AAAA,EAEA,KAAA,CAAM,KAAA,EAAY,EAAE,KAAA,EAAM,EAAQ;AAEhC,IAAA,MAAM,qBAAqB,MAAM;AAC/B,MAAA,MAAM,OAAA,GAAU,CAAC,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,WAAA,CAAa,CAAA;AAC3C,MAAA,IAAI,MAAM,KAAA,EAAO;AACf,QAAA,OAAA,CAAQ,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,MAC1B;AACA,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAGA,IAAA,MAAM,qBAAqB,MAAM;AAC/B,MAAA,OAAO,CAAA,qBAAA,EAAwB,MAAM,QAAQ,CAAA,GAAA,CAAA;AAAA,IAC/C,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,OAAOG,YAAY,KAAA,EAAO;AAAA,QACxB,OAAO,kBAAA,EAAmB;AAAA,QAC1B,OAAO,kBAAA;AAAmB,OAC5B,EAAG,KAAA,CAAM,OAAA,IAAW,CAAA;AAAA,IACtB,CAAA;AAAA,EACF;AACF,CAAC;AAKM,IAAM,kBAAkBH,eAAAA,CAAgB;AAAA,EAC7C,IAAA,EAAM,oBAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAO;AAAA,IACtC,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,KAAA,EAAM;AAAA,IACpC,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,GAAA,EAAI;AAAA,IACvC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GACrC;AAAA,EAEA,KAAA,CAAM,KAAA,EAAY,EAAE,KAAA,EAAM,EAAQ;AAChC,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,OAAA,IAAU,IAAK,EAAC;AAEvC,MAAA,MAAM,kBAAkB,QAAA,CAAS,GAAA;AAAA,QAAI,CAAC,KAAA,EAAY,KAAA,KAChDG,WAAAA,CAAY,KAAA,EAAO;AAAA,UACjB,GAAA,EAAK,MAAM,GAAA,IAAO,KAAA;AAAA,UAClB,KAAA,EAAO,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,KAAA,CAAA;AAAA,UACpB,KAAA,EAAO,CAAA,gBAAA,EAAmB,KAAA,CAAM,QAAQ,CAAA,QAAA;AAAA,SAC1C,EAAG,CAAC,KAAK,CAAC;AAAA,OACZ;AAEA,MAAA,OAAOA,WAAAA,CAAY,MAAM,GAAA,EAAK;AAAA,QAC5B,KAAA,EAAO,CAAA,qBAAA,EAAwB,KAAA,CAAM,KAAK,CAAA;AAAA,SACzC,eAAe,CAAA;AAAA,IACpB,CAAA;AAAA,EACF;AACF,CAAC;AClED,SAAS,cAAA,CAAe,MAAc,KAAA,EAAuB;AAC3D,EAAA,OAAO,IAAI,IAAA,CAAK,IAAA,EAAM,QAAQ,CAAA,EAAG,CAAC,EAAE,OAAA,EAAQ;AAC9C;AAEA,SAAS,kBAAA,CAAmB,MAAc,KAAA,EAAuB;AAC/D,EAAA,OAAO,IAAI,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,CAAC,EAAE,MAAA,EAAO;AACzC;AAEA,SAAS,UAAA,CAAW,IAAA,EAAY,MAAA,GAAiB,YAAA,EAAsB;AACrE,EAAA,MAAM,IAAA,GAAO,KAAK,WAAA,EAAY;AAC9B,EAAA,MAAM,KAAA,GAAQ,OAAO,IAAA,CAAK,QAAA,KAAa,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AACzD,EAAA,MAAM,GAAA,GAAM,OAAO,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAClD,EAAA,MAAM,IAAA,GAAO,OAAO,IAAA,CAAK,QAAA,EAAU,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AACpD,EAAA,MAAM,MAAA,GAAS,OAAO,IAAA,CAAK,UAAA,EAAY,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AACxD,EAAA,MAAM,MAAA,GAAS,OAAO,IAAA,CAAK,UAAA,EAAY,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAExD,EAAA,OAAO,MAAA,CACJ,OAAA,CAAQ,MAAA,EAAQ,MAAA,CAAO,IAAI,CAAC,CAAA,CAC5B,OAAA,CAAQ,IAAA,EAAM,KAAK,CAAA,CACnB,OAAA,CAAQ,MAAM,GAAG,CAAA,CACjB,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA,CAClB,OAAA,CAAQ,IAAA,EAAM,MAAM,CAAA,CACpB,OAAA,CAAQ,IAAA,EAAM,MAAM,CAAA;AACzB;AAEA,SAAS,SAAA,CAAU,OAAa,KAAA,EAAsB;AACpD,EAAA,OAAO,MAAM,WAAA,EAAY,KAAM,KAAA,CAAM,WAAA,MACnC,KAAA,CAAM,QAAA,EAAS,KAAM,KAAA,CAAM,UAAS,IACpC,KAAA,CAAM,OAAA,EAAQ,KAAM,MAAM,OAAA,EAAQ;AACtC;AAEO,IAAM,aAAaH,eAAAA,CAAgB;AAAA,EACxC,IAAA,EAAM,eAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,CAAC,QAAQ,IAAA,EAAM,KAAK,CAAA,EAAmC,OAAA,EAAS,IAAA,EAAK;AAAA,IACzF,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,0BAAA,EAAO;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC1C,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,YAAA,EAAa;AAAA,IAC9C,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAO;AAAA,IACtC,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACnD,WAAW,EAAE,IAAA,EAAM,OAAO,OAAA,EAAS,MAA4B,EAAC,EAAE;AAAA,IAClE,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC7C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAChD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAA+B;AAC3E,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,MAAA,GAASM,OAAO,KAAK,CAAA;AAC3B,IAAA,MAAM,cAAcA,MAAAA,CAAAA,iBAAO,IAAI,IAAA,EAAK,EAAE,aAAa,CAAA;AACnD,IAAA,MAAM,eAAeA,MAAAA,CAAAA,iBAAO,IAAI,IAAA,EAAK,EAAE,UAAU,CAAA;AACjD,IAAA,MAAM,UAAA,GAAaA,OAAoB,IAAI,CAAA;AAC3C,IAAA,MAAM,UAAA,GAAaA,OAAoB,IAAI,CAAA;AAC3C,IAAA,MAAM,QAAA,GAAWA,OAAoB,IAAI,CAAA;AACzC,IAAA,MAAM,QAAA,GAAWA,OAAO,KAAK,CAAA;AAC7B,IAAA,MAAM,YAAA,GAAeA,OAAO,CAAC,CAAA;AAC7B,IAAA,MAAM,cAAA,GAAiBA,OAAO,CAAC,CAAA;AAC/B,IAAA,MAAM,cAAA,GAAiBA,OAAO,CAAC,CAAA;AAE/B,IAAA,MAAM,QAAA,GAAW,CAAC,QAAA,EAAK,QAAA,EAAK,UAAK,QAAA,EAAK,QAAA,EAAK,UAAK,QAAG,CAAA;AAEnD,IAAA,MAAM,kBAAkB,MAAuB;AAC7C,MAAA,MAAM,OAAO,WAAA,EAAY;AACzB,MAAA,MAAM,QAAQ,YAAA,EAAa;AAC3B,MAAA,MAAM,QAAA,GAAW,kBAAA,CAAmB,IAAA,EAAM,KAAK,CAAA;AAC/C,MAAA,MAAM,WAAA,GAAc,cAAA,CAAe,IAAA,EAAM,KAAK,CAAA;AAE9C,MAAA,MAAM,OAAwB,EAAC;AAC/B,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,EAAU,CAAA,EAAA,EAAK;AACjC,QAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,MAChB;AACA,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,WAAA,EAAa,CAAA,EAAA,EAAK;AACrC,QAAA,IAAA,CAAK,KAAK,IAAI,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,CAAC,CAAC,CAAA;AAAA,MACpC;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAc;AAClC,MAAA,OAAO,CAAA,EAAG,WAAA,EAAa,CAAA,MAAA,EAAI,MAAA,CAAO,YAAA,EAAa,GAAI,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,MAAA,CAAA;AAAA,IACxE,CAAA;AAEA,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,IAAI,YAAA,OAAmB,CAAA,EAAG;AACxB,QAAA,YAAA,CAAa,IAAI,EAAE,CAAA;AACnB,QAAA,WAAA,CAAY,GAAA,CAAI,WAAA,EAAY,GAAI,CAAC,CAAA;AAAA,MACnC,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,GAAA,CAAI,YAAA,EAAa,GAAI,CAAC,CAAA;AAAA,MACrC;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,IAAI,YAAA,OAAmB,EAAA,EAAI;AACzB,QAAA,YAAA,CAAa,IAAI,CAAC,CAAA;AAClB,QAAA,WAAA,CAAY,GAAA,CAAI,WAAA,EAAY,GAAI,CAAC,CAAA;AAAA,MACnC,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,GAAA,CAAI,YAAA,EAAa,GAAI,CAAC,CAAA;AAAA,MACrC;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAe;AACvC,MAAA,IAAI,CAAA,CAAE,YAAA,GAAe,IAAI,CAAA,EAAG;AAE5B,MAAA,UAAA,CAAW,IAAI,IAAI,CAAA;AACnB,MAAA,YAAA,CAAa,GAAA,CAAI,IAAA,CAAK,QAAA,EAAU,CAAA;AAChC,MAAA,cAAA,CAAe,GAAA,CAAI,IAAA,CAAK,UAAA,EAAY,CAAA;AACpC,MAAA,cAAA,CAAe,GAAA,CAAI,IAAA,CAAK,UAAA,EAAY,CAAA;AAEpC,MAAA,MAAM,WAAW,CAAA,CAAE,IAAA;AACnB,MAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,QAAA,MAAM,MAAA,GAAS,UAAA,CAAW,IAAA,EAAM,CAAA,CAAE,MAAM,CAAA;AACxC,QAAA,CAAA,CAAE,WAAW,MAAM,CAAA;AACnB,QAAA,MAAA,CAAO,IAAI,KAAK,CAAA;AAAA,MAClB,CAAA,MAAA,IAAW,aAAa,UAAA,EAAY;AAClC,QAAA,QAAA,CAAS,IAAI,IAAI,CAAA;AAAA,MACnB,CAAA,MAAO;AACL,QAAA,IAAI,CAAC,YAAW,EAAG;AACjB,UAAA,UAAA,CAAW,IAAI,IAAI,CAAA;AAAA,QACrB,CAAA,MAAA,IAAW,CAAC,QAAA,EAAS,EAAG;AACtB,UAAA,QAAA,CAAS,IAAI,IAAI,CAAA;AACjB,UAAA,MAAM,QAAQ,UAAA,EAAW;AACzB,UAAA,MAAM,MAAM,QAAA,EAAS;AACrB,UAAA,MAAM,MAAA,GAAS,CAAC,UAAA,CAAW,KAAA,EAAO,CAAA,CAAE,MAAM,CAAA,EAAG,UAAA,CAAW,GAAA,EAAK,CAAA,CAAE,MAAM,CAAC,CAAA;AACtE,UAAA,CAAA,CAAE,WAAW,MAAM,CAAA;AAAA,QACrB,CAAA,MAAO;AACL,UAAA,UAAA,CAAW,IAAI,IAAI,CAAA;AACnB,UAAA,QAAA,CAAS,IAAI,IAAI,CAAA;AAAA,QACnB;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,MAAM,OAAO,UAAA,EAAW;AACxB,MAAA,IAAI,CAAC,IAAA,EAAM;AAEX,MAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,IAAI,CAAA;AAC7B,MAAA,OAAA,CAAQ,QAAA,CAAS,cAAc,CAAA;AAC/B,MAAA,OAAA,CAAQ,UAAA,CAAW,gBAAgB,CAAA;AACnC,MAAA,OAAA,CAAQ,UAAA,CAAW,gBAAgB,CAAA;AAEnC,MAAA,MAAM,MAAA,GAAS,UAAA,CAAW,OAAA,EAAS,CAAA,CAAE,MAAM,CAAA;AAC3C,MAAA,CAAA,CAAE,WAAW,MAAM,CAAA;AACnB,MAAA,MAAA,CAAO,IAAI,KAAK,CAAA;AAAA,IAClB,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAa;AAChC,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,UAAA,CAAW,IAAI,IAAI,CAAA;AACnB,MAAA,UAAA,CAAW,IAAI,IAAI,CAAA;AACnB,MAAA,QAAA,CAAS,IAAI,IAAI,CAAA;AACjB,MAAA,CAAA,CAAE,WAAW,IAAI,CAAA;AAAA,IACnB,CAAA;AAEA,IAAA,MAAM,mBAAA,GAAsB,CAAC,QAAA,KAAiC;AAC5D,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,QAAA,CAAS,OAAA,EAAQ;AAAA,MACnB,CAAA,MAAA,IAAW,QAAA,CAAS,KAAA,YAAiB,IAAA,EAAM;AACzC,QAAA,gBAAA,CAAiB,SAAS,KAAK,CAAA;AAAA,MACjC,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,KAAK,CAAA,EAAG;AACxC,QAAA,UAAA,CAAW,GAAA,CAAI,QAAA,CAAS,KAAA,CAAM,CAAC,KAAK,IAAI,CAAA;AACxC,QAAA,QAAA,CAAS,GAAA,CAAI,QAAA,CAAS,KAAA,CAAM,CAAC,KAAK,IAAI,CAAA;AAAA,MACxC;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,IAAI,EAAE,QAAA,EAAU;AAChB,MAAA,MAAA,CAAO,GAAA,CAAI,CAAC,MAAA,EAAQ,CAAA;AACpB,MAAA,IAAI,QAAO,EAAG;AACZ,QAAA,CAAA,CAAE,MAAA,IAAS;AAAA,MACb,CAAA,MAAO;AACL,QAAA,CAAA,CAAE,OAAA,IAAU;AAAA,MACd;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,CAAC,IAAA,KAAwB;AAC9C,MAAA,IAAI,YAAW,IAAK,SAAA,CAAU,MAAM,UAAA,EAAa,GAAG,OAAO,IAAA;AAC3D,MAAA,IAAI,YAAW,IAAK,SAAA,CAAU,MAAM,UAAA,EAAa,GAAG,OAAO,IAAA;AAC3D,MAAA,IAAI,UAAS,IAAK,SAAA,CAAU,MAAM,QAAA,EAAW,GAAG,OAAO,IAAA;AACvD,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,SAAA,GAAY,CAAC,IAAA,KAAwB;AACzC,MAAA,IAAI,CAAC,UAAA,EAAW,IAAK,CAAC,QAAA,IAAY,OAAO,KAAA;AACzC,MAAA,MAAM,QAAQ,UAAA,EAAW;AACzB,MAAA,MAAM,MAAM,QAAA,EAAS;AACrB,MAAA,OAAO,IAAA,GAAO,SAAS,IAAA,GAAO,GAAA;AAAA,IAChC,CAAA;AAEA,IAAA,MAAM,OAAA,GAAU,CAAC,IAAA,KAAwB;AACvC,MAAA,OAAO,SAAA,CAAU,IAAA,kBAAM,IAAI,IAAA,EAAM,CAAA;AAAA,IACnC,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAAwB;AAC1C,MAAA,OAAO,CAAA,CAAE,YAAA,GAAe,IAAI,CAAA,IAAK,KAAA;AAAA,IACnC,CAAA;AAEA,IAAA,MAAM,kBAAkB,MAAc;AACpC,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,WAAA,IAAe,CAAA,CAAE,SAAS,eAAA,EAAiB;AACxD,QAAA,IAAI,UAAA,EAAW,IAAK,QAAA,EAAS,EAAG;AAC9B,UAAA,OAAO,CAAA,EAAG,UAAA,CAAW,UAAA,EAAW,EAAI,CAAA,CAAE,MAAM,CAAC,CAAA,GAAA,EAAM,UAAA,CAAW,QAAA,EAAS,EAAI,CAAA,CAAE,MAAM,CAAC,CAAA,CAAA;AAAA,QACtF;AACA,QAAA,OAAO,EAAA;AAAA,MACT;AACA,MAAA,OAAO,YAAW,GAAI,UAAA,CAAW,YAAW,EAAI,CAAA,CAAE,MAAM,CAAA,GAAI,EAAA;AAAA,IAC9D,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAA,GAAc;AAAA,QAClB,iBAAA;AAAA,QACA,MAAA,KAAW,uBAAA,GAA0B,EAAA;AAAA,QACrC,CAAA,CAAE,WAAW,2BAAA,GAA8B,EAAA;AAAA,QAC3C,CAAA,CAAE;AAAA,OACJ,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAE1B,MAAA,MAAM,eAAe,eAAA,EAAgB;AACrC,MAAA,MAAM,eAAe,eAAA,EAAgB;AAErC,MAAA,MAAM,kBAA2B,EAAC;AAElC,MAAA,MAAM,cAAA,GAA0B;AAAA,QAC9BH,YAAY,QAAA,EAAU;AAAA,UACpB,KAAA,EAAO,0BAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,QAAG,CAAC,CAAC,CAAA;AAAA,QACjCA,WAAAA,CAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,gCAA+B,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,aAAA,EAAe,CAAC,CAAC,CAAA;AAAA,QACzGA,YAAY,QAAA,EAAU;AAAA,UACpB,KAAA,EAAO,0BAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,QAAG,CAAC,CAAC;AAAA,OACnC;AACA,MAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,yBAAA,EAA0B,EAAG,cAAc,CAAC,CAAA;AAE7F,MAAA,MAAM,qBAA8B,QAAA,CAAS,GAAA;AAAA,QAAI,CAAA,GAAA,KAC/CA,WAAAA,CAAY,MAAA,EAAQ,EAAE,OAAO,0BAAA,EAA2B,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,GAAG,CAAC,CAAC;AAAA,OAC3F;AACA,MAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,8BAAA,EAA+B,EAAG,kBAAkB,CAAC,CAAA;AAEtG,MAAA,MAAM,UAAA,GAAsB,YAAA,CAAa,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AAC5D,QAAA,IAAI,CAAC,IAAA,EAAM;AACT,UAAA,OAAOA,YAAY,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAA,MAAA,EAAS,KAAK,CAAA,CAAA,EAAI,KAAA,EAAO,kDAAA,EAAmD,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,GAAG,CAAC,CAAC,CAAA;AAAA,QACjJ;AAEA,QAAA,MAAM,QAAA,GAAW,eAAe,IAAI,CAAA;AACpC,QAAA,MAAM,OAAA,GAAU,UAAU,IAAI,CAAA;AAC9B,QAAA,MAAM,KAAA,GAAQ,QAAQ,IAAI,CAAA;AAC1B,QAAA,MAAM,QAAA,GAAW,WAAW,IAAI,CAAA;AAEhC,QAAA,OAAOA,YAAY,QAAA,EAAU;AAAA,UAC3B,GAAA,EAAK,KAAK,WAAA,EAAY;AAAA,UACtB,KAAA,EAAO;AAAA,YACL,sBAAA;AAAA,YACA,WAAW,gCAAA,GAAmC,EAAA;AAAA,YAC9C,UAAU,gCAAA,GAAmC,EAAA;AAAA,YAC7C,QAAQ,6BAAA,GAAgC,EAAA;AAAA,YACxC,WAAW,gCAAA,GAAmC;AAAA,WAChD,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,UAC1B,QAAA;AAAA,UACA,OAAA,EAAS,MAAM,gBAAA,CAAiB,IAAI;AAAA,SACtC,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,CAAC,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,CAAA;AACD,MAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,uBAAA,EAAwB,EAAG,UAAU,CAAC,CAAA;AAEvF,MAAA,IAAI,QAAA,EAAS,IAAK,CAAA,CAAE,IAAA,KAAS,UAAA,EAAY;AACvC,QAAA,QAAA,CAAS,IAAI,IAAI,CAAA;AACjB,QAAA,MAAM,YAAA,GAAwB;AAAA,UAC5BA,YAAY,OAAA,EAAS;AAAA,YACnB,IAAA,EAAM,QAAA;AAAA,YACN,KAAA,EAAO,6BAAA;AAAA,YACP,OAAO,YAAA,EAAa;AAAA,YACpB,GAAA,EAAK,CAAA;AAAA,YACL,GAAA,EAAK,EAAA;AAAA,YACL,OAAA,EAAS,CAAC,CAAA,KAAa,YAAA,CAAa,IAAI,MAAA,CAAQ,CAAA,CAAE,MAAA,CAA4B,KAAK,CAAC;AAAA,WACrF,CAAA;AAAA,UACDA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,GAAG,CAAC,CAAC,CAAA;AAAA,UACtDA,YAAY,OAAA,EAAS;AAAA,YACnB,IAAA,EAAM,QAAA;AAAA,YACN,KAAA,EAAO,6BAAA;AAAA,YACP,OAAO,cAAA,EAAe;AAAA,YACtB,GAAA,EAAK,CAAA;AAAA,YACL,GAAA,EAAK,EAAA;AAAA,YACL,OAAA,EAAS,CAAC,CAAA,KAAa,cAAA,CAAe,IAAI,MAAA,CAAQ,CAAA,CAAE,MAAA,CAA4B,KAAK,CAAC;AAAA,WACvF,CAAA;AAAA,UACDA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,GAAG,CAAC,CAAC,CAAA;AAAA,UACtDA,YAAY,OAAA,EAAS;AAAA,YACnB,IAAA,EAAM,QAAA;AAAA,YACN,KAAA,EAAO,6BAAA;AAAA,YACP,OAAO,cAAA,EAAe;AAAA,YACtB,GAAA,EAAK,CAAA;AAAA,YACL,GAAA,EAAK,EAAA;AAAA,YACL,OAAA,EAAS,CAAC,CAAA,KAAa,cAAA,CAAe,IAAI,MAAA,CAAQ,CAAA,CAAE,MAAA,CAA4B,KAAK,CAAC;AAAA,WACvF;AAAA,SACH;AACA,QAAA,eAAA,CAAgB,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,yBAAwB,EAAG;AAAA,UAC1E,GAAG,YAAA;AAAA,UACHA,YAAY,QAAA,EAAU;AAAA,YACpB,KAAA,EAAO,8BAAA;AAAA,YACP,OAAA,EAAS;AAAA,WACX,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,cAAI,CAAC,CAAC;AAAA,SACnC,CAAC,CAAA;AAAA,MACJ;AAEA,MAAA,MAAM,gBAAyB,EAAC;AAEhC,MAAA,IAAI,CAAA,CAAE,SAAA,CAAU,MAAA,GAAS,CAAA,EAAG;AAC1B,QAAA,MAAM,SAAA,GAAqB,EAAE,SAAA,CAAU,GAAA;AAAA,UAAI,CAAC,QAAA,KAC1CA,WAAAA,CAAY,QAAA,EAAU;AAAA,YACpB,KAAA,EAAO,2BAAA;AAAA,YACP,OAAA,EAAS,MAAM,mBAAA,CAAoB,QAAQ;AAAA,WAC7C,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,QAAA,CAAS,IAAI,CAAC,CAAC,CAAC;AAAA,SACrD;AACA,QAAA,aAAA,CAAc,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,4BAAA,EAA6B,EAAG,SAAS,CAAC,CAAA;AAAA,MAC3F;AAEA,MAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,QAAA,aAAA,CAAc,IAAA,CAAK,GAAG,KAAA,CAAM,MAAA,EAAQ,CAAA;AAAA,MACtC;AAEA,MAAA,IAAI,aAAA,CAAc,SAAS,CAAA,EAAG;AAC5B,QAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,yBAAA,EAA0B,EAAG,aAAa,CAAC,CAAA;AAAA,MAC9F;AAEA,MAAA,MAAM,eAAA,GAA2B;AAAA,QAC/BA,YAAY,MAAA,EAAQ;AAAA,UAClB,KAAA,EAAO,CAAC,wBAAA,EAA0B,CAAC,YAAA,GAAe,qCAAA,GAAwC,EAAE,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG;AAAA,SACxH,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,YAAA,IAAgB,MAAA,CAAO,CAAA,CAAE,WAAW,CAAC,CAAC,CAAC;AAAA,OACrE;AAEA,MAAA,IAAI,CAAA,CAAE,aAAa,YAAA,EAAc;AAC/B,QAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UACvC,KAAA,EAAO,wBAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAG,CAAC,CAAC,CAAC,CAAA;AAAA,MACpC;AAEA,MAAA,MAAM,mBAA4B,EAAC;AACnC,MAAA,IAAI,QAAO,EAAG;AACZ,QAAA,gBAAA,CAAiB,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,6BAA4B,EAAG;AAAA,UAC/EA,YAAY,KAAA,EAAO,EAAE,KAAA,EAAO,2BAAA,IAA+B,eAAe;AAAA,SAC3E,CAAC,CAAA;AAAA,MACJ;AAEA,MAAA,OAAOA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,aAAY,EAAG;AAAA,QAChDA,WAAAA,CAAY,OAAO,EAAE,KAAA,EAAO,4BAA4B,OAAA,EAAS,cAAA,IAAkB,eAAe,CAAA;AAAA,QAClG,GAAG;AAAA,OACJ,CAAA;AAAA,IACH,CAAA;AAAA,EACF;AACF,CAAC;AClVM,IAAM,OAAOH,eAAAA,CAAgB;AAAA,EAClC,IAAA,EAAM,SAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,MAAM,EAAE,IAAA,EAAM,OAAO,OAAA,EAAS,MAAkB,EAAC,EAAE;AAAA,IACnD,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC3C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC3C,gBAAA,EAAkB,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAClD,qBAAqB,EAAE,IAAA,EAAM,OAAO,OAAA,EAAS,MAA2B,EAAC,EAAE;AAAA,IAC3E,oBAAoB,EAAE,IAAA,EAAM,OAAO,OAAA,EAAS,MAA2B,EAAC,EAAE;AAAA,IAC1E,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,IAAA,EAAK;AAAA,IACvC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC9C,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,WAAA,EAAa,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAClD,WAAA,EAAa,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAClD,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAChD,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAC/C;AAAA,EAEA,MAAM,KAAA,EAAgC;AACpC,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,eAAeM,MAAAA,CAAO,IAAI,GAAA,CAAqB,CAAA,CAAE,mBAAmB,CAAC,CAAA;AAC3E,IAAA,MAAM,cAAcA,MAAAA,CAAO,IAAI,GAAA,CAAqB,CAAA,CAAE,kBAAkB,CAAC,CAAA;AACzE,IAAA,MAAM,WAAA,GAAcA,OAA+B,IAAI,CAAA;AAEvD,IAAA,MAAM,cAAc,CAAC,KAAA,EAAmB,MAAA,GAA6B,IAAA,EAAM,QAAQ,CAAA,KAAqB;AACtG,MAAA,MAAM,SAAwB,EAAC;AAE/B,MAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,QAAA,MAAM,UAAU,IAAA,CAAK,EAAA;AACrB,QAAA,MAAM,UAAA,GAAa,YAAA,EAAa,CAAE,GAAA,CAAI,OAAO,CAAA;AAC7C,QAAA,MAAM,SAAA,GAAY,WAAA,EAAY,CAAE,GAAA,CAAI,OAAO,CAAA;AAE3C,QAAA,MAAM,QAAA,GAAwB;AAAA,UAC5B,GAAG,IAAA;AAAA,UACH,MAAA;AAAA,UACA,KAAA;AAAA,UACA,QAAQ,CAAC,IAAA,CAAK,QAAA,IAAY,IAAA,CAAK,SAAS,MAAA,KAAW,CAAA;AAAA,UACnD,UAAA;AAAA,UACA,SAAA;AAAA,UACA,eAAA,EAAiB,KAAA;AAAA,UACjB,UAAA,EAAY,aAAY,KAAM;AAAA,SAChC;AAEA,QAAA,MAAA,CAAO,KAAK,QAAQ,CAAA;AAEpB,QAAA,IAAI,UAAA,IAAc,KAAK,QAAA,EAAU;AAC/B,UAAA,MAAA,CAAO,IAAA,CAAK,GAAG,WAAA,CAAY,IAAA,CAAK,UAAU,QAAA,EAAU,KAAA,GAAQ,CAAC,CAAC,CAAA;AAAA,QAChE;AAAA,MACF;AAEA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,eAAA,GAAkB,CAAC,IAAA,KAAmB;AAC1C,MAAA,WAAA,CAAY,GAAA,CAAI,KAAK,EAAE,CAAA;AACvB,MAAA,CAAA,CAAE,cAAc,IAAI,CAAA;AACpB,MAAA,CAAA,CAAE,WAAW,IAAI,CAAA;AAAA,IACnB,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,IAAA,EAAgB,OAAA,KAAqB;AACxD,MAAA,MAAM,cAAA,GAAiB,IAAI,GAAA,CAAI,WAAA,EAAa,CAAA;AAC5C,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,cAAA,CAAe,GAAA,CAAI,KAAK,EAAE,CAAA;AAAA,MAC5B,CAAA,MAAO;AACL,QAAA,cAAA,CAAe,MAAA,CAAO,KAAK,EAAE,CAAA;AAAA,MAC/B;AACA,MAAA,WAAA,CAAY,IAAI,cAAc,CAAA;AAC9B,MAAA,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,IAAA,EAAM,OAAO,CAAA;AAAA,IAC7B,CAAA;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAmB;AACvC,MAAA,MAAM,eAAA,GAAkB,IAAI,GAAA,CAAI,YAAA,EAAc,CAAA;AAC9C,MAAA,MAAM,UAAA,GAAa,YAAA,EAAa,CAAE,GAAA,CAAI,KAAK,EAAE,CAAA;AAE7C,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,eAAA,CAAgB,MAAA,CAAO,KAAK,EAAE,CAAA;AAAA,MAChC,CAAA,MAAO;AACL,QAAA,eAAA,CAAgB,GAAA,CAAI,KAAK,EAAE,CAAA;AAAA,MAC7B;AAEA,MAAA,YAAA,CAAa,IAAI,eAAe,CAAA;AAChC,MAAA,CAAA,CAAE,QAAA,GAAW,IAAA,EAAM,CAAC,UAAU,CAAA;AAAA,IAChC,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,CAAC,IAAA,KAA6B;AACnD,MAAA,MAAM,MAAA,GAAS,KAAK,KAAA,GAAQ,EAAA;AAE5B,MAAA,MAAM,cAAuB,EAAC;AAE9B,MAAA,IAAI,CAAC,KAAK,MAAA,EAAQ;AAChB,QAAA,MAAM,iBAAiBD,kBAAAA,CAAmB;AAAA,UACxC,SAAA,EAAW,IAAA,CAAK,UAAA,GAAa,cAAA,GAAO,cAAA;AAAA,UACpC,UAAU,IAAA,CAAK;AAAA,SAChB,CAAA;AAED,QAAA,WAAA,CAAY,IAAA,CAAKF,WAAAA,CAAY,MAAA,EAAQC,cAAAA,CAAe,cAAA,EAAgB;AAAA,UAClE,KAAA,EAAO,uBAAA;AAAA,UACP,OAAA,EAAS,MAAM,YAAA,CAAa,IAAI;AAAA,SACjC,CAAA,EAAG,CAACD,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,IAAA,CAAK,UAAA,GAAa,QAAA,GAAM,QAAG,CAAC,CAAC,CAAC,CAAA;AAAA,MAC7D;AAEA,MAAA,IAAI,EAAE,YAAA,EAAc;AAClB,QAAA,MAAM,gBAAgBK,wBAAAA,CAAyB;AAAA,UAC7C,SAAS,IAAA,CAAK,SAAA;AAAA,UACd,UAAU,IAAA,CAAK,QAAA;AAAA,UACf,WAAW,IAAA,CAAK;AAAA,SACjB,CAAA;AAED,QAAA,WAAA,CAAY,IAAA,CAAKL,WAAAA,CAAY,OAAA,EAASC,cAAAA,CAAe,aAAA,EAAe;AAAA,UAClE,IAAA,EAAM,UAAA;AAAA,UACN,SAAS,IAAA,CAAK,SAAA;AAAA,UACd,UAAU,CAAC,CAAA,KAAa,YAAY,IAAA,EAAO,CAAA,CAAE,OAA4B,OAAO;AAAA,SACjF,CAAC,CAAC,CAAA;AAAA,MACL;AAEA,MAAA,MAAM,gBAAgBC,kBAAAA,CAAmB;AAAA,QACvC,WAAW,IAAA,CAAK,KAAA;AAAA,QAChB,UAAU,IAAA,CAAK;AAAA,OAChB,CAAA;AAED,MAAA,WAAA,CAAY,IAAA,CAAKF,WAAAA,CAAY,MAAA,EAAQC,cAAAA,CAAe,aAAA,EAAe;AAAA,QACjE,KAAA,EAAO,iBAAA;AAAA,QACP,OAAA,EAAS,MAAM,eAAA,CAAgB,IAAI;AAAA,OACpC,CAAA,EAAG,CAACD,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,IAAA,CAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAElD,MAAA,OAAOA,YAAY,KAAA,EAAO;AAAA,QACxB,GAAA,EAAK,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA;AAAA,QACnB,KAAA,EAAO;AAAA,UACL,gBAAA;AAAA,UACA,IAAA,CAAK,aAAa,0BAAA,GAA6B,EAAA;AAAA,UAC/C,IAAA,CAAK,YAAY,yBAAA,GAA4B;AAAA,SAC/C,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,QAC1B,KAAA,EAAO,iBAAiB,MAAM,CAAA,EAAA,CAAA;AAAA,QAC9B,WAAW,CAAA,CAAE,SAAA;AAAA,QACb,aAAa,CAAC,CAAA,KAAiB,CAAA,CAAE,WAAA,GAAc,MAAM,CAAC,CAAA;AAAA,QACtD,WAAW,CAAC,CAAA,KAAiB,CAAA,CAAE,SAAA,GAAY,MAAM,CAAC;AAAA,SACjD,WAAW,CAAA;AAAA,IAChB,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,IAAA,GAAO,CAAA,CAAE,IAAA,IAAQ,EAAC;AACxB,MAAA,MAAM,QAAA,GAAW,YAAY,IAAI,CAAA;AAEjC,MAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,QAAA,OAAOA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,iBAAA,EAAkB,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,0BAAM,CAAC,CAAC,CAAA;AAAA,MAC3F;AAEA,MAAA,MAAM,SAAA,GAAY;AAAA,QAChB,UAAA;AAAA,QACA,CAAA,CAAE,WAAW,qBAAA,GAAwB,EAAA;AAAA,QACrC,CAAA,CAAE;AAAA,OACJ,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAE1B,MAAA,MAAM,SAAA,GAAiC;AAAA,QACrC,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA,QACN,cAAc,CAAA,CAAE,SAAA;AAAA,QAChB,oBAAoB,CAAA,CAAE;AAAA,OACxB;AAEA,MAAA,OAAOA,WAAAA,CAAY,KAAA,EAAO,EAAE,GAAG,WAAW,KAAA,EAAO,SAAA,EAAU,EAAG,QAAA,CAAS,GAAA,CAAI,CAAA,IAAA,KAAQ,cAAA,CAAe,IAAI,CAAC,CAAC,CAAA;AAAA,IAC1G,CAAA;AAAA,EACF;AACF,CAAC;ACpKM,IAAM,OAAOH,eAAAA,CAAgB;AAAA,EAClC,IAAA,EAAM,SAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,YAAA,EAAa;AAAA,IAC5C,aAAA,EAAe,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC3C,gBAAgB,EAAE,IAAA,EAAM,OAAO,OAAA,EAAS,MAAgB,EAAC,EAAE;AAAA,IAC3D,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC7C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAChD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAyB;AACrE,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,WAAA,GAAcM,MAAAA,CAAO,CAAA,CAAE,aAAa,CAAA;AAC1C,IAAA,MAAM,gBAAgBA,MAAAA,CAAO,IAAI,GAAA,CAAY,CAAA,CAAE,cAAc,CAAC,CAAA;AAE9D,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAkB;AACtC,MAAA,WAAA,CAAY,IAAI,KAAK,CAAA;AACrB,MAAA,CAAA,CAAE,WAAW,KAAK,CAAA;AAAA,IACpB,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAkB;AACvC,MAAA,MAAM,SAAA,GAAY,IAAI,GAAA,CAAI,aAAA,EAAe,CAAA;AAEzC,MAAA,IAAI,SAAA,CAAU,GAAA,CAAI,KAAK,CAAA,EAAG;AACxB,QAAA,SAAA,CAAU,OAAO,KAAK,CAAA;AACtB,QAAA,CAAA,CAAE,UAAU,KAAK,CAAA;AAAA,MACnB,CAAA,MAAO;AACL,QAAA,IAAI,EAAE,YAAA,EAAc;AAClB,UAAA,SAAA,CAAU,KAAA,EAAM;AAAA,QAClB;AACA,QAAA,SAAA,CAAU,IAAI,KAAK,CAAA;AACnB,QAAA,CAAA,CAAE,SAAS,KAAK,CAAA;AAAA,MAClB;AAEA,MAAA,aAAA,CAAc,IAAI,SAAS,CAAA;AAAA,IAC7B,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,SAAA,GAAY;AAAA,QAChB,UAAA;AAAA,QACA,CAAA,UAAA,EAAa,EAAE,IAAI,CAAA,CAAA;AAAA,QACnB,CAAA,CAAE;AAAA,OACJ,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAE1B,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,OAAA,IAAU,IAAK,EAAC;AAEpC,MAAA,MAAM,SAAA,GAAqB,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAgB;AACpD,QAAA,MAAM,YAAa,IAAA,CAA4H,KAAA;AAC/I,QAAA,IAAI,CAAC,WAAW,OAAO,IAAA;AAEvB,QAAA,MAAM,QAAA,GAAW,SAAA,CAAU,KAAA,KAAU,WAAA,EAAY;AACjD,QAAA,MAAM,QAAA,GAAW,aAAA,EAAc,CAAE,GAAA,CAAI,UAAU,KAAe,CAAA;AAE9D,QAAA,MAAM,eAAwB,EAAC;AAE/B,QAAA,IAAI,UAAU,IAAA,EAAM;AAClB,UAAA,YAAA,CAAa,IAAA,CAAKH,WAAAA,CAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,gBAAA,EAAiB,EAAG,CAAC,SAAA,CAAU,IAAwB,CAAC,CAAC,CAAA;AAAA,QAC1G;AACA,QAAA,YAAA,CAAa,KAAKA,WAAAA,CAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,iBAAA,IAAqB,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAG,OAAO,SAAA,CAAU,KAAA,IAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAE7H,QAAA,IAAI,SAAA,CAAU,QAAA,IAAa,SAAA,CAAU,QAAA,CAAuB,SAAS,CAAA,EAAG;AACtE,UAAA,YAAA,CAAa,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,YACpC,KAAA,EAAO,CAAC,iBAAA,EAAmB,QAAA,GAAW,yBAAA,GAA4B,EAAE,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG;AAAA,WAChG,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,QAAA,GAAW,QAAA,GAAM,QAAG,CAAC,CAAC,CAAC,CAAA;AAEnD,UAAA,MAAM,eAAA,GAA4B,SAAA,CAAU,QAAA,CAAuB,GAAA,CAAI,CAAC,KAAA,KAAmB;AACzF,YAAA,MAAM,SAAA,GAAY,KAAA;AAClB,YAAA,MAAM,gBAAgBE,kBAAAA,CAAmB;AAAA,cACvC,WAAW,SAAA,CAAU,KAAA;AAAA,cACrB,UAAU,SAAA,CAAU;AAAA,aACrB,CAAA;AAED,YAAA,OAAOF,WAAAA,CAAY,IAAA,EAAMC,cAAAA,CAAe,aAAA,EAAe;AAAA,cACrD,KAAK,SAAA,CAAU,KAAA;AAAA,cACf,KAAA,EAAO;AAAA,gBACL,gBAAA;AAAA,gBACA,SAAA,CAAU,KAAA,KAAU,WAAA,EAAY,GAAI,wBAAA,GAA2B,EAAA;AAAA,gBAC/D,SAAA,CAAU,WAAW,0BAAA,GAA6B;AAAA,eACpD,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,cAC1B,SAAS,MAAM;AACb,gBAAA,IAAI,UAAU,QAAA,EAAU;AACxB,gBAAA,YAAA,CAAa,UAAU,KAAe,CAAA;AAAA,cACxC;AAAA,aACD,CAAA,EAAG;AAAA,cACF,UAAU,IAAA,GAAOD,WAAAA,CAAY,MAAA,EAAQ,EAAE,OAAO,gBAAA,EAAiB,EAAG,CAAC,SAAA,CAAU,IAAwB,CAAC,CAAA,GAAIA,YAAY,MAAA,EAAQ,IAAI,EAAE,CAAA;AAAA,cACpIA,YAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,iBAAA,IAAqB,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,SAAA,CAAU,SAAS,EAAE,CAAC,CAAC,CAAC;AAAA,aAC3G,CAAA;AAAA,UACH,CAAC,CAAA;AAED,UAAA,YAAA,CAAa,IAAA,CAAKA,YAAY,IAAA,EAAM,EAAE,OAAO,mBAAA,EAAoB,EAAG,eAAe,CAAC,CAAA;AAAA,QACtF;AAEA,QAAA,MAAM,eAAeE,kBAAAA,CAAmB;AAAA,UACtC,WAAW,SAAA,CAAU,KAAA;AAAA,UACrB,UAAU,SAAA,CAAU;AAAA,SACrB,CAAA;AAED,QAAA,OAAOF,WAAAA,CAAY,IAAA,EAAMC,cAAAA,CAAe,YAAA,EAAc;AAAA,UACpD,KAAK,SAAA,CAAU,KAAA;AAAA,UACf,KAAA,EAAO;AAAA,YACL,gBAAA;AAAA,YACA,WAAW,wBAAA,GAA2B,EAAA;AAAA,YACtC,SAAA,CAAU,WAAW,0BAAA,GAA6B;AAAA,WACpD,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,UAC1B,SAAS,MAAM;AACb,YAAA,IAAI,UAAU,QAAA,EAAU;AACxB,YAAA,IAAI,SAAA,CAAU,QAAA,IAAa,SAAA,CAAU,QAAA,CAAuB,SAAS,CAAA,EAAG;AACtE,cAAA,aAAA,CAAc,UAAU,KAAe,CAAA;AAAA,YACzC,CAAA,MAAO;AACL,cAAA,YAAA,CAAa,UAAU,KAAe,CAAA;AAAA,YACxC;AAAA,UACF;AAAA,SACD,GAAG,YAAY,CAAA;AAAA,MAClB,CAAC,CAAA;AAED,MAAA,OAAOD,WAAAA,CAAY,IAAA,EAAM,EAAE,KAAA,EAAO,WAAW,IAAA,EAAM,SAAA,EAAW,EAAA,EAAI,CAAA,CAAE,EAAA,EAAI,YAAA,EAAc,CAAA,CAAE,SAAA,IAAa,SAAS,CAAA;AAAA,IAChH,CAAA;AAAA,EACF;AACF,CAAC;AC9IM,IAAM,WAAWH,eAAAA,CAAgB;AAAA,EACtC,IAAA,EAAM,aAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,SAAS,EAAE,IAAA,EAAM,OAAO,OAAA,EAAS,MAAwB,EAAC,EAAE;AAAA,IAC5D,YAAY,EAAE,IAAA,EAAM,OAAO,OAAA,EAAS,MAA2B,EAAC,EAAE;AAAA,IAClE,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,oBAAA,EAAM;AAAA,IAC5C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC1C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC5C,aAAA,EAAe,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC/C,aAAA,EAAe,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC9C,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,KAAA,EAAM;AAAA,IAC1C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,IAAA,EAAM,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC3C,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,cAAA,EAAgB,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACrD,eAAA,EAAiB,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACtD,WAAA,EAAa,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAClD,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAChD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAA6B;AACzE,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,cAAA,GAAiBM,OAAO,KAAK,CAAA;AACnC,IAAA,MAAM,UAAA,GAAaA,MAAAA,CAA4B,EAAE,CAAA;AACjD,IAAA,MAAM,cAAA,GAAiBA,MAAAA,CAAmC,EAAE,CAAA;AAC5D,IAAA,MAAM,UAAA,GAAaA,OAAO,EAAE,CAAA;AAC5B,IAAA,MAAM,WAAA,GAAcA,OAAO,KAAK,CAAA;AAEhC,IAAA,IAAI,CAAA,CAAE,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG;AAC3B,MAAA,IAAI,EAAE,QAAA,EAAU;AACd,QAAA,cAAA,CAAe,GAAA,CAAI,CAAC,GAAI,CAAA,CAAE,UAAyC,CAAC,CAAA;AAAA,MACtE,CAAA,MAAO;AACL,QAAA,cAAA,CAAe,GAAA,CAAI,CAAE,CAAA,CAAE,UAAkC,CAAC,CAAA;AAAA,MAC5D;AAAA,IACF;AAEA,IAAA,MAAM,cAAA,GAAiB,CAAC,OAAA,KAAsB;AAC5C,MAAA,IAAI,EAAE,QAAA,EAAU;AAEhB,MAEO;AACL,QAAA,cAAA,CAAe,GAAA,CAAI,CAAC,cAAA,EAAgB,CAAA;AAAA,MACtC;AACA,MAAA,CAAA,CAAE,eAAA,GAAkB,gBAAgB,CAAA;AAAA,IACtC,CAAA;AAEA,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,cAAA,CAAe,GAAA,CAAI,EAAE,CAAA;AACrB,MAAA,UAAA,CAAW,GAAA,CAAI,EAAE,CAAA;AACjB,MAAA,cAAA,CAAe,IAAI,KAAK,CAAA;AACxB,MAAA,CAAA,CAAE,OAAA,IAAU;AACZ,MAAA,CAAA,CAAE,QAAA,GAAW,EAAE,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAkB;AACnC,MAAA,IAAI,EAAE,QAAA,EAAU;AAEhB,MAAA,MAAM,WAAA,GAAc,CAAC,GAAG,cAAA,EAAgB,CAAA;AACxC,MAAA,WAAA,CAAY,MAAA,CAAO,OAAO,CAAC,CAAA;AAC3B,MAAA,cAAA,CAAe,IAAI,WAAW,CAAA;AAC9B,MAAA,CAAA,CAAE,cAAc,WAAW,CAAA;AAC3B,MAAA,CAAA,CAAE,WAAW,WAAW,CAAA;AAAA,IAC1B,CAAA;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,MAAA,EAAwB,KAAA,KAAkB;AAC9D,MAAA,IAAI,OAAO,QAAA,EAAU;AAErB,MAAA,MAAM,OAAA,GAAU,CAAC,GAAG,UAAA,EAAW,CAAE,MAAM,CAAA,EAAG,KAAK,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA;AAC9D,MAAA,UAAA,CAAW,IAAI,OAAO,CAAA;AAEtB,MAAA,MAAM,WAAA,GAAc,MAAA,CAAO,QAAA,IAAY,EAAC;AAExC,MAAA,IAAI,MAAA,CAAO,MAAA,IAAU,WAAA,CAAY,MAAA,KAAW,CAAA,EAAG;AAC7C,QAAA,IAAI,EAAE,QAAA,EAAU;AACd,UAAA,MAAM,MAAA,GAAS,cAAA,EAAe,CAAE,IAAA,CAAK,CAAA,IAAA,KAAQ,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,KAAM,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAC,CAAA;AACjF,UAAA,MAAM,cAAc,MAAA,GAChB,cAAA,GAAiB,MAAA,CAAO,CAAA,IAAA,KAAQ,KAAK,IAAA,CAAK,GAAG,MAAM,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAC,CAAA,GACpE,CAAC,GAAG,cAAA,IAAkB,OAAO,CAAA;AACjC,UAAA,cAAA,CAAe,IAAI,WAAW,CAAA;AAC9B,UAAA,CAAA,CAAE,WAAW,WAAW,CAAA;AAAA,QAC1B,CAAA,MAAO;AACL,UAAA,cAAA,CAAe,GAAA,CAAI,CAAC,OAAO,CAAC,CAAA;AAC5B,UAAA,cAAA,CAAe,IAAI,KAAK,CAAA;AACxB,UAAA,CAAA,CAAE,WAAW,OAAO,CAAA;AAAA,QACtB;AAAA,MACF,CAAA,MAAA,IAAW,CAAA,CAAE,IAAA,IAAQ,WAAA,CAAY,WAAW,CAAA,EAAG;AAC7C,QAAA,MAAA,CAAO,OAAA,GAAU,IAAA;AACjB,QAAA,CAAA,CAAE,IAAA,CAAK,MAAA,EAAQ,CAAC,QAAA,KAA+B;AAC7C,UAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AACjB,UAAA,MAAA,CAAO,QAAA,GAAW,QAAA;AAAA,QACpB,CAAC,CAAA;AAAA,MACH;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAoC;AAC7D,MAAA,IAAI,aAAY,EAAG;AACjB,QAAA,MAAM,OAAA,GAAU,UAAA,EAAW,CAAE,WAAA,EAAY;AACzC,QAAA,OAAO,aAAA,CAAc,CAAA,CAAE,OAAA,EAAS,OAAO,CAAA;AAAA,MACzC;AAEA,MAAA,IAAI,OAAA,GAA4B,CAAC,GAAG,CAAA,CAAE,OAAO,CAAA;AAC7C,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,EAAO,CAAA,EAAA,EAAK;AAC9B,QAAA,MAAM,KAAA,GAAQ,QAAQ,IAAA,CAAK,CAAA,GAAA,KAAO,IAAI,KAAA,KAAU,UAAA,EAAW,CAAE,CAAC,CAAC,CAAA;AAC/D,QAAA,OAAA,GAAU,KAAA,EAAO,YAAY,EAAC;AAC9B,QAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AAAA,MAC5B;AACA,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,OAAA,EAA2B,OAAA,KAAsC;AACtF,MAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,CAAC,GAAA,EAAuB,MAAA,KAAW;AACvD,QAAA,MAAM,QAAQ,MAAA,CAAO,KAAA,CAAM,WAAA,EAAY,CAAE,SAAS,OAAO,CAAA;AACzD,QAAA,MAAM,QAAA,GAAW,OAAO,QAAA,GAAW,aAAA,CAAc,OAAO,QAAA,EAAU,OAAO,IAAI,EAAC;AAE9E,QAAA,IAAI,KAAA,IAAS,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAChC,UAAA,GAAA,CAAI,IAAA,CAAK,EAAE,GAAG,MAAA,EAAQ,QAAA,EAAU,SAAS,MAAA,GAAS,CAAA,GAAI,QAAA,GAAW,MAAA,EAAW,CAAA;AAAA,QAC9E;AACA,QAAA,OAAO,GAAA;AAAA,MACT,CAAA,EAAG,EAAE,CAAA;AAAA,IACP,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAc;AACnC,MAAA,MAAM,SAAS,cAAA,EAAe;AAE9B,MAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,QAAA,OAAO,CAAA,CAAE,WAAA;AAAA,MACX;AAEA,MAAA,IAAI,CAAC,EAAE,QAAA,EAAU;AACf,QAAA,OAAO,YAAA,CAAa,MAAA,CAAO,CAAC,CAAA,IAAK,EAAE,CAAA;AAAA,MACrC;AAEA,MAAA,OAAO,CAAA,EAAG,OAAO,MAAM,CAAA,OAAA,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAsC;AAC1D,MAAA,MAAM,SAAmB,EAAC;AAC1B,MAAA,IAAI,iBAAmC,CAAA,CAAE,OAAA;AAEzC,MAAA,KAAA,MAAW,SAAS,IAAA,EAAM;AACxB,QAAA,MAAM,QAAQ,cAAA,CAAe,IAAA,CAAK,CAAA,GAAA,KAAO,GAAA,CAAI,UAAU,KAAK,CAAA;AAC5D,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,MAAA,CAAO,IAAA,CAAK,MAAM,KAAK,CAAA;AACvB,UAAA,cAAA,GAAiB,KAAA,CAAM,YAAY,EAAC;AAAA,QACtC;AAAA,MACF;AAEA,MAAA,OAAO,CAAA,CAAE,aAAA,GAAgB,MAAA,CAAO,IAAA,CAAK,CAAA,CAAE,SAAS,CAAA,GAAK,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA,IAAK,EAAA;AAAA,IACpF,CAAA;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,MAAA,EAAwB,KAAA,KAAyB;AACrE,MAAA,MAAM,QAAA,GAAW,UAAA,EAAW,CAAE,KAAK,MAAM,MAAA,CAAO,KAAA;AAChD,MAAA,MAAM,UAAA,GAAa,gBAAe,CAAE,IAAA,CAAK,UAAQ,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,KAAM,CAAC,GAAG,YAAW,CAAE,KAAA,CAAM,GAAG,KAAK,CAAA,EAAG,OAAO,KAAK,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA;AAE7H,MAAA,MAAM,iBAA0B,EAAC;AAEjC,MAAA,IAAI,OAAO,OAAA,EAAS;AAClB,QAAA,cAAA,CAAe,IAAA,CAAKH,WAAAA,CAAY,MAAA,EAAQ,EAAE,OAAO,uBAAA,EAAwB,EAAG,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAG,QAAG,CAAC,CAAC,CAAC,CAAA;AAAA,MAC7G;AAEA,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,cAAA,CAAe,IAAA,CAAK,GAAG,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA,MAC9C,CAAA,MAAO;AACL,QAAA,MAAM,gBAAgBE,kBAAAA,CAAmB;AAAA,UACvC,WAAW,MAAA,CAAO,KAAA;AAAA,UAClB,UAAU,MAAA,CAAO;AAAA,SAClB,CAAA;AACD,QAAA,cAAA,CAAe,IAAA,CAAKF,WAAAA,CAAY,MAAA,EAAQC,cAAAA,CAAe,aAAA,EAAe,EAAE,CAAA,EAAG,MAAA,CAAO,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA;AAAA,MAClG;AAEA,MAAA,IAAI,MAAA,CAAO,QAAA,IAAY,CAAC,MAAA,CAAO,MAAA,EAAQ;AACrC,QAAA,cAAA,CAAe,IAAA,CAAKD,WAAAA,CAAY,MAAA,EAAQ,EAAE,OAAO,qBAAA,EAAsB,EAAG,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAG,QAAG,CAAC,CAAC,CAAC,CAAA;AAAA,MAC3G;AAEA,MAAA,OAAOA,YAAY,KAAA,EAAO;AAAA,QACxB,GAAA,EAAK,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACxB,KAAA,EAAO;AAAA,UACL,sBAAA;AAAA,UACA,WAAW,8BAAA,GAAiC,EAAA;AAAA,UAC5C,aAAa,gCAAA,GAAmC,EAAA;AAAA,UAChD,MAAA,CAAO,WAAW,gCAAA,GAAmC;AAAA,SACvD,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,QAC1B,OAAA,EAAS,MAAM,YAAA,CAAa,MAAA,EAAQ,KAAK;AAAA,SACxC,cAAc,CAAA;AAAA,IACnB,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,aAAA,GAAgB;AAAA,QACpB,cAAA;AAAA,QACA,cAAA,KAAmB,oBAAA,GAAuB,EAAA;AAAA,QAC1C,CAAA,CAAE,WAAW,wBAAA,GAA2B,EAAA;AAAA,QACxC,CAAA,CAAE;AAAA,OACJ,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAE1B,MAAA,MAAM,UAAA,GAAa,cAAA,EAAe,CAAE,MAAA,GAAS,CAAA;AAE7C,MAAA,MAAM,YAAYM,oBAAAA,CAAqB;AAAA,QACrC,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,WAAW,CAAA,CAAE,SAAA;AAAA,QACb,iBAAiB,CAAA,CAAE,eAAA;AAAA,QACnB,UAAU,CAAA,CAAE,QAAA;AAAA,QACZ,UAAU,cAAA,EAAe;AAAA,QACzB,QAAA,EAAU;AAAA,OACX,CAAA;AAED,MAAA,MAAM,kBAA2B,EAAC;AAElC,MAAA,IAAI,CAAA,CAAE,YAAY,UAAA,EAAY;AAC5B,QAAA,cAAA,EAAe,CAAE,OAAA,CAAQ,CAAC,IAAA,EAAM,KAAA,KAAU;AACxC,UAAA,MAAM,cAAA,GAAiBJ,kBAAAA,CAAmB,EAAE,SAAA,EAAW,4BAAQ,CAAA;AAC/D,UAAA,eAAA,CAAgB,IAAA,CAAKF,YAAY,MAAA,EAAQ,EAAE,OAAO,mBAAA,EAAqB,GAAA,EAAK,OAAM,EAAG;AAAA,YACnFA,YAAY,MAAA,EAAQ,EAAC,EAAG,YAAA,CAAa,IAAI,CAAC,CAAA;AAAA,YAC1CA,WAAAA,CAAY,MAAA,EAAQC,cAAAA,CAAe,cAAA,EAAgB;AAAA,cACjD,KAAA,EAAO,yBAAA;AAAA,cACP,OAAA,EAAS,MAAM,SAAA,CAAU,KAAK;AAAA,aAC/B,GAAG,CAACD,WAAAA,CAAY,QAAQ,EAAC,EAAG,MAAG,CAAC,CAAC;AAAA,WACnC,CAAC,CAAA;AAAA,QACJ,CAAC,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UACvC,KAAA,EAAO,CAAC,qBAAA,EAAuB,CAAC,UAAA,GAAa,2BAAA,GAA8B,EAAE,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG;AAAA,SACzG,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,cAAA,EAAgB,CAAC,CAAC,CAAC,CAAA;AAAA,MACjD;AAEA,MAAA,IAAI,CAAA,CAAE,aAAa,UAAA,EAAY;AAC7B,QAAA,MAAM,aAAA,GAAgBE,kBAAAA,CAAmB,EAAE,SAAA,EAAW,gBAAM,CAAA;AAC5D,QAAA,eAAA,CAAgB,IAAA,CAAKF,WAAAA,CAAY,MAAA,EAAQC,cAAAA,CAAe,aAAA,EAAe;AAAA,UACrE,KAAA,EAAO,qBAAA;AAAA,UACP,OAAA,EAAS,CAAC,CAAA,KAAa;AAAE,YAAA,CAAA,CAAE,eAAA,EAAgB;AAAG,YAAA,KAAA,EAAM;AAAA,UAAG;AAAA,SACxD,CAAA,EAAG,CAACD,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAG,CAAC,CAAC,CAAC,CAAA;AAAA,MACrC;AAEA,MAAA,eAAA,CAAgB,IAAA,CAAKA,WAAAA,CAAY,MAAA,EAAQ,EAAE,OAAO,qBAAA,EAAsB,EAAG,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAG,QAAG,CAAC,CAAC,CAAC,CAAA;AAE1G,MAAA,MAAM,kBAA2B,EAAC;AAElC,MAAA,IAAI,EAAE,UAAA,EAAY;AAChB,QAAA,eAAA,CAAgB,IAAA,CAAKA,WAAAA,CAAY,KAAA,EAAOC,cAAAA,CAAe;AAAA,UACrD,IAAA,EAAM;AAAA,SACR,EAAG,EAAE,KAAA,EAAO,sBAAA,EAAwB,CAAA,EAAG;AAAA,UACrCD,YAAY,OAAA,EAAS;AAAA,YACnB,IAAA,EAAM,MAAA;AAAA,YACN,WAAA,EAAa,cAAA;AAAA,YACb,OAAO,UAAA,EAAW;AAAA,YAClB,OAAA,EAAS,CAAC,CAAA,KAAa;AACrB,cAAA,MAAM,KAAA,GAAS,EAAE,MAAA,CAA4B,KAAA;AAC7C,cAAA,UAAA,CAAW,IAAI,KAAK,CAAA;AACpB,cAAA,WAAA,CAAY,GAAA,CAAI,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA;AAAA,YAClC;AAAA,WACD;AAAA,SACF,CAAC,CAAA;AAAA,MACJ;AAEA,MAAA,MAAM,WAAW,WAAA,EAAY,GAAI,CAAA,GAAI,UAAA,GAAa,MAAA,GAAS,CAAA;AAC3D,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,EAAU,CAAA,EAAA,EAAK;AACjC,QAAA,MAAM,OAAA,GAAU,kBAAkB,CAAC,CAAA;AACnC,QAAA,IAAI,OAAA,CAAQ,MAAA,GAAS,CAAA,IAAK,CAAA,KAAM,CAAA,EAAG;AACjC,UAAA,MAAM,UAAA,GAAa,iBAAA,CAAkB,EAAE,IAAA,EAAM,WAAW,CAAA;AACxD,UAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,KAAA,EAAOC,cAAAA,CAAe,YAAY,EAAE,KAAA,EAAO,uBAAuB,GAAA,EAAK,CAAA,EAAG,CAAA,EAAG,OAAA,CAAQ,IAAI,CAAA,MAAA,KAAU,YAAA,CAAa,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,QAC/J;AAAA,MACF;AAEA,MAAA,MAAM,cAAA,GAA0B;AAAA,QAC9BD,WAAAA,CAAY,OAAOC,cAAAA,CAAe,SAAA,EAAW,EAAE,KAAA,EAAO,uBAAA,EAAyB,CAAA,EAAG,eAAe;AAAA,OACnG;AAEA,MAAA,IAAI,gBAAe,EAAG;AACpB,QAAA,MAAM,mBAA4B,EAAC;AACnC,QAAA,IAAI,CAAA,CAAE,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG;AAC1B,UAAA,IAAI,MAAM,KAAA,EAAO;AACf,YAAA,gBAAA,CAAiB,IAAA,CAAK,GAAG,KAAA,CAAM,KAAA,EAAO,CAAA;AAAA,UACxC,CAAA,MAAO;AACL,YAAA,gBAAA,CAAiB,KAAKD,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,0BAAM,CAAC,CAAA;AAAA,UACvD;AAAA,QACF,CAAA,MAAO;AACL,UAAA,gBAAA,CAAiB,IAAA,CAAK,GAAG,eAAe,CAAA;AAAA,QAC1C;AAEA,QAAA,cAAA,CAAe,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,wBAAA,EAAyB,EAAG,gBAAgB,CAAC,CAAA;AAAA,MAC/F;AAEA,MAAA,OAAOA,YAAY,KAAA,EAAO;AAAA,QACxB,KAAA,EAAO,aAAA;AAAA,QACP,OAAA,EAAS,MAAM,cAAA;AAAe,SAC7B,cAAc,CAAA;AAAA,IACnB,CAAA;AAAA,EACF;AACF,CAAC;AC3QM,IAAM,aAAaH,eAAAA,CAAgB;AAAA,EACxC,IAAA,EAAM,eAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,MAAM,EAAE,IAAA,EAAM,OAAiC,OAAA,EAAS,MAAM,EAAC,EAAE;AAAA,IACjE,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,oBAAA,EAAM;AAAA,IAC5C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC3C,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC5C,iBAAA,EAAmB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,4CAAA,EAAU;AAAA,IACtD,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,OAAA,EAAQ;AAAA,IAC1C,gBAAA,EAAkB,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAClD,qBAAqB,EAAE,IAAA,EAAM,OAAoC,OAAA,EAAS,MAAM,EAAC,EAAE;AAAA,IACnF,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GACjD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAO,MAAK,EAAG;AACrD,IAAA,MAAM,MAAA,GAAS,KAAA;AACf,IAAA,MAAM,OAAA,GAAUM,OAAO,KAAK,CAAA;AAC5B,IAAA,MAAM,WAAA,GAAcA,OAAO,EAAE,CAAA;AAC7B,IAAA,MAAM,YAAA,GAAeA,MAAAA;AAAA,MACnB,OAAO,gBAAA,GACH,cAAA,CAAe,MAAA,CAAO,IAAI,IAC1B,MAAA,CAAO;AAAA,KACb;AACA,IAAA,MAAM,aAAA,GAAgBA,OAAO,EAAE,CAAA;AAE/B,IAAA,SAAS,eAAe,KAAA,EAA8C;AACpE,MAAA,MAAM,OAA4B,EAAC;AACnC,MAAA,MAAM,QAAA,GAAW,CAAC,QAAA,KAA+B;AAC/C,QAAA,KAAA,MAAW,QAAQ,QAAA,EAAU;AAC3B,UAAA,MAAM,QAAA,GAAW,IAAA;AACjB,UAAA,MAAM,SAAA,GAAY,QAAA,CAAS,MAAA,CAAO,OAAO,CAAA;AACzC,UAAA,IAAI,OAAO,SAAA,KAAc,QAAA,IAAY,OAAO,cAAc,QAAA,EAAU;AAClE,YAAA,IAAA,CAAK,KAAK,SAAS,CAAA;AAAA,UACrB;AACA,UAAA,IAAI,IAAA,CAAK,QAAA,IAAY,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA,EAAG;AAC7C,YAAA,QAAA,CAAS,KAAK,QAAQ,CAAA;AAAA,UACxB;AAAA,QACF;AAAA,MACF,CAAA;AACA,MAAA,QAAA,CAAS,KAAK,CAAA;AACd,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,eAAe,MAAwB;AAC3C,MAAA,MAAM,QAAQ,WAAA,EAAY;AAC1B,MAAA,IAAI,CAAC,KAAA,EAAO,OAAO,MAAA,CAAO,IAAA;AAE1B,MAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAA8C;AACjE,QAAA,MAAM,SAA2B,EAAC;AAClC,QAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,UAAA,IAAI,gBAAA;AACJ,UAAA,IAAI,IAAA,CAAK,QAAA,IAAY,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA,EAAG;AAC7C,YAAA,gBAAA,GAAmB,WAAA,CAAY,KAAK,QAAQ,CAAA;AAAA,UAC9C;AAEA,UAAA,MAAM,UAAA,GAAa,KAAK,KAAA,CAAM,WAAA,GAAc,QAAA,CAAS,KAAA,CAAM,aAAa,CAAA;AACxE,UAAA,MAAM,mBAAA,GAAsB,gBAAA,IAAoB,gBAAA,CAAiB,MAAA,GAAS,CAAA;AAE1E,UAAA,IAAI,cAAc,mBAAA,EAAqB;AACrC,YAAA,MAAM,YAAA,GAA+B;AAAA,cACnC,GAAG,IAAA;AAAA,cACH,QAAA,EAAU,mBAAA,GAAsB,gBAAA,GAAmB,IAAA,CAAK;AAAA,aAC1D;AACA,YAAA,MAAA,CAAO,KAAK,YAAY,CAAA;AAAA,UAC1B;AAAA,QACF;AACA,QAAA,OAAO,MAAA;AAAA,MACT,CAAA;AAEA,MAAA,OAAO,WAAA,CAAY,OAAO,IAAI,CAAA;AAAA,IAChC,CAAA;AAEA,IAAA,MAAM,eAAe,MAA6B;AAChD,MAAA,MAAM,QAAA,GAAW,CAAC,KAAA,KAAmD;AACnE,QAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,UAAA,MAAM,QAAA,GAAW,IAAA;AACjB,UAAA,MAAM,SAAA,GAAY,QAAA,CAAS,MAAA,CAAO,OAAO,CAAA;AACzC,UAAA,IAAI,SAAA,KAAc,OAAO,KAAA,EAAO;AAC9B,YAAA,OAAO,IAAA;AAAA,UACT;AACA,UAAA,IAAI,IAAA,CAAK,QAAA,IAAY,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA,EAAG;AAC7C,YAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,CAAK,QAAQ,CAAA;AACpC,YAAA,IAAI,OAAO,OAAO,KAAA;AAAA,UACpB;AAAA,QACF;AACA,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AACA,MAAA,OAAO,QAAA,CAAS,OAAO,IAAI,CAAA;AAAA,IAC7B,CAAA;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,OAAA,CAAQ,MAAA,CAAO,CAAA,CAAA,KAAK,CAAC,CAAC,CAAA;AAAA,IACxB,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAA,CAAK,gBAAgB,EAAE,CAAA;AACvB,MAAA,MAAA,CAAO,QAAA,GAAW,IAAkC,IAAiC,CAAA;AAAA,IACvF,CAAA;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAyB;AAC7C,MAAA,IAAI,KAAK,QAAA,EAAU;AACnB,MAAA,MAAM,QAAA,GAAW,IAAA;AACjB,MAAA,MAAM,SAAA,GAAY,QAAA,CAAS,MAAA,CAAO,OAAO,CAAA;AACzC,MAAA,IAAA,CAAK,gBAAgB,SAAS,CAAA;AAC9B,MAAA,MAAA,CAAO,QAAA,GAAW,WAAW,IAAI,CAAA;AACjC,MAAA,aAAA,CAAc,GAAA,CAAI,KAAK,KAAK,CAAA;AAC5B,MAAA,OAAA,CAAQ,IAAI,KAAK,CAAA;AAAA,IACnB,CAAA;AAEA,IAAA,MAAM,kBAAA,GAAqB,CAAC,IAAA,EAAsB,CAAA,KAAa;AAC7D,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,MAAM,QAAA,GAAW,IAAA;AACjB,MAAA,MAAM,OAAA,GAAU,QAAA,CAAS,MAAA,CAAO,OAAO,CAAA;AACvC,MAAA,MAAM,OAAO,YAAA,EAAa;AAC1B,MAAA,IAAI,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA,EAAG;AAC1B,QAAA,YAAA,CAAa,IAAI,IAAA,CAAK,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,KAAM,OAAO,CAAC,CAAA;AAAA,MAClD,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,OAAO,CAAA,CAAA,KAAK,CAAC,GAAG,CAAA,EAAG,OAAO,CAAC,CAAA;AAAA,MAC1C;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,qBAAqB,MAAM;AAC/B,MAAA,MAAM,OAAA,GAAU,CAAC,iBAAiB,CAAA;AAClC,MAAA,IAAI,OAAA,EAAQ,EAAG,OAAA,CAAQ,IAAA,CAAK,YAAY,CAAA;AACxC,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,qBAAqB,MAAuC;AAChE,MAAA,IAAI,CAAC,MAAA,CAAO,KAAA,EAAO,OAAO,EAAC;AAC3B,MAAA,IAAIL,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,SAAU,MAAA,CAAO,KAAA;AAC1C,MAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,SAAU,MAAA,CAAO,KAAA;AAC1C,MAAA,OAAO,EAAC;AAAA,IACV,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,CAAC,IAAA,EAAsB,KAAA,GAAgB,CAAA,KAAa;AACrE,MAAA,MAAM,OAAO,YAAA,EAAa;AAC1B,MAAA,MAAM,QAAA,GAAW,IAAA;AACjB,MAAA,MAAM,OAAA,GAAU,QAAA,CAAS,MAAA,CAAO,OAAO,CAAA;AACvC,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA;AACxC,MAAA,MAAM,UAAA,GAAa,YAAY,MAAA,CAAO,KAAA;AACtC,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,QAAA,IAAY,IAAA,CAAK,SAAS,MAAA,GAAS,CAAA;AAE5D,MAAA,MAAM,eAAwB,EAAC;AAE/B,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,MAAM,iBAAiBG,kBAAAA,CAAmB;AAAA,UACxC,SAAA,EAAW,aAAa,cAAA,GAAO,cAAA;AAAA,UAC/B,UAAU,IAAA,CAAK;AAAA,SAChB,CAAA;AACD,QAAA,YAAA,CAAa,IAAA,CAAKF,WAAAA,CAAY,MAAA,EAAQC,cAAAA,CAAe,cAAA,EAAgB;AAAA,UACnE,KAAA,EAAO,CAAC,2BAAA,EAA6B,UAAA,GAAa,gBAAgB,EAAE,CAAA;AAAA,UACpE,OAAA,EAAS,CAAC,CAAA,KAAa,kBAAA,CAAmB,MAAM,CAAC;AAAA,SAClD,CAAA,EAAG,CAACD,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,UAAA,GAAa,QAAA,GAAM,QAAG,CAAC,CAAC,CAAC,CAAA;AAAA,MACxD,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,IAAA,CAAKA,WAAAA,CAAY,MAAA,EAAQ,EAAE,OAAO,2BAAA,EAA4B,EAAG,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAG,EAAE,CAAC,CAAC,CAAC,CAAA;AAAA,MAC9G;AAEA,MAAA,MAAM,gBAAgBE,kBAAAA,CAAmB;AAAA,QACvC,WAAW,IAAA,CAAK,KAAA;AAAA,QAChB,UAAU,IAAA,CAAK;AAAA,OAChB,CAAA;AACD,MAAA,YAAA,CAAa,IAAA,CAAKF,WAAAA,CAAY,MAAA,EAAQC,cAAAA,CAAe,aAAA,EAAe;AAAA,QAClE,KAAA,EAAO;AAAA,OACR,CAAA,EAAG,CAACD,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,IAAA,CAAK,KAAK,CAAC,CAAC,CAAC,CAAA;AAE1C,MAAA,MAAM,SAAA,GAAYA,YAAY,KAAA,EAAO;AAAA,QACnC,KAAA,EAAO,CAAC,eAAA,EAAiB,EAAE,aAAA,EAAe,UAAA,EAAY,aAAA,EAAe,IAAA,CAAK,QAAA,EAAU,aAAA,EAAe,UAAA,EAAY,CAAA;AAAA,QAC/G,OAAO,EAAE,WAAA,EAAa,CAAA,EAAG,KAAA,GAAQ,EAAE,CAAA,EAAA,CAAA,EAAK;AAAA,QACxC,OAAA,EAAS,MAAM,YAAA,CAAa,IAAI;AAAA,SAC/B,YAAY,CAAA;AAEf,MAAA,IAAI,WAAA,IAAe,UAAA,IAAc,IAAA,CAAK,QAAA,EAAU;AAC9C,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAC,UAA0B,UAAA,CAAW,KAAA,EAAO,KAAA,GAAQ,CAAC,CAAC,CAAA;AAC5F,QAAA,OAAOA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,uBAAA,IAA2B,CAAC,SAAA,EAAW,GAAG,UAAU,CAAC,CAAA;AAAA,MAC1F;AAEA,MAAA,OAAO,SAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,MAAM,kBAA2B,EAAC;AAElC,MAAA,MAAM,YAAYM,oBAAAA,CAAqB;AAAA,QACrC,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,iBAAiB,MAAA,CAAO,eAAA;AAAA,QACxB,QAAA,EAAU,KAAA;AAAA,QACV,UAAU,OAAA,EAAQ;AAAA,QAClB,QAAA,EAAU;AAAA,OACX,CAAA;AAED,MAAA,MAAM,cAAc,YAAA,EAAa;AACjC,MAAA,eAAA,CAAgB,IAAA,CAAKN,WAAAA;AAAA,QAAY,MAAA;AAAA,QAAQ,EAAE,OAAO,uBAAA,EAAwB;AAAA,QACxE,cAAc,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,WAAA,CAAY,KAAK,CAAC,CAAA,GAAI,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,WAAW,CAAC;AAAA,OAC1G,CAAA;AAED,MAAA,IAAI,MAAA,CAAO,aAAa,WAAA,EAAa;AACnC,QAAA,MAAM,aAAA,GAAgBE,kBAAAA,CAAmB,EAAE,SAAA,EAAW,gBAAM,CAAA;AAC5D,QAAA,eAAA,CAAgB,IAAA,CAAKF,WAAAA,CAAY,MAAA,EAAQC,cAAAA,CAAe,aAAA,EAAe;AAAA,UACrE,KAAA,EAAO,uBAAA;AAAA,UACP,OAAA,EAAS,CAAC,CAAA,KAAa;AACrB,YAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,YAAA,WAAA,EAAY;AAAA,UACd;AAAA,SACD,CAAA,EAAG,CAACD,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAG,CAAC,CAAC,CAAC,CAAA;AAAA,MACrC;AAEA,MAAA,eAAA,CAAgB,IAAA,CAAKA,WAAAA,CAAY,MAAA,EAAQ,EAAE,OAAO,uBAAA,EAAwB,EAAG,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAG,QAAG,CAAC,CAAC,CAAC,CAAA;AAE5G,MAAA,QAAA,CAAS,IAAA,CAAKA,WAAAA,CAAY,KAAA,EAAOC,cAAAA,CAAe,SAAA,EAAW;AAAA,QACzD,KAAA,EAAO,yBAAA;AAAA,QACP,OAAA,EAAS;AAAA,OACV,CAAA,EAAG,eAAe,CAAC,CAAA;AAEpB,MAAA,IAAI,SAAQ,EAAG;AACb,QAAA,MAAM,mBAA4B,EAAC;AAEnC,QAAA,IAAI,OAAO,UAAA,EAAY;AACrB,UAAA,gBAAA,CAAiB,IAAA,CAAKD,YAAY,KAAA,EAAO,EAAE,MAAM,QAAA,EAAU,KAAA,EAAO,0BAAyB,EAAG;AAAA,YAC5FA,YAAY,OAAA,EAAS;AAAA,cACnB,IAAA,EAAM,MAAA;AAAA,cACN,aAAa,MAAA,CAAO,iBAAA;AAAA,cACpB,OAAO,WAAA,EAAY;AAAA,cACnB,OAAA,EAAS,CAAC,CAAA,KAAa;AACrB,gBAAA,MAAM,SAAS,CAAA,CAAE,MAAA;AACjB,gBAAA,WAAA,CAAY,GAAA,CAAI,OAAO,KAAK,CAAA;AAAA,cAC9B;AAAA,aACD;AAAA,WACF,CAAC,CAAA;AAAA,QACJ;AAEA,QAAA,MAAM,eAAwB,EAAC;AAC/B,QAAA,MAAM,QAAQ,YAAA,EAAa;AAC3B,QAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,UAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,YAAA,YAAA,CAAa,IAAA,CAAK,UAAA,CAAW,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,UACvC;AAAA,QACF,CAAA,MAAA,IAAW,MAAM,KAAA,EAAO;AACtB,UAAA,MAAM,YAAA,GAAe,MAAM,KAAA,EAAM;AACjC,UAAA,YAAA,CAAa,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,uBAAA,EAAwB,EAAG,YAAuB,CAAC,CAAA;AAAA,QACnG,CAAA,MAAO;AACL,UAAA,YAAA,CAAa,IAAA,CAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,OAAO,uBAAA,EAAwB,EAAG,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAG,0BAAM,CAAC,CAAC,CAAC,CAAA;AAAA,QAC7G;AAEA,QAAA,gBAAA,CAAiB,IAAA,CAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,IAAA,EAAM,QAAQ,KAAA,EAAO,sBAAA,EAAuB,EAAG,YAAY,CAAC,CAAA;AAEvG,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,0BAAA,EAA2B,EAAG,gBAAgB,CAAC,CAAA;AAAA,MAC3F;AAEA,MAAA,OAAOA,YAAY,KAAA,EAAO;AAAA,QACxB,OAAO,kBAAA,EAAmB;AAAA,QAC1B,OAAO,kBAAA;AAAmB,SACzB,QAAQ,CAAA;AAAA,IACb,CAAA;AAAA,EACF;AACF,CAAC;ACtSM,IAAM,WAAWH,eAAAA,CAAgB;AAAA,EACtC,IAAA,EAAM,aAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,MAAM,EAAE,IAAA,EAAM,OAAiC,OAAA,EAAS,MAAM,EAAC,EAAE;AAAA,IACjE,OAAO,EAAE,IAAA,EAAM,OAAoC,OAAA,EAAS,MAAM,EAAC,EAAE;AAAA,IACrE,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC5C,iBAAA,EAAmB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,4CAAA,EAAU;AAAA,IACtD,MAAA,EAAQ,EAAE,IAAA,EAAM,KAAA,EAAyB,SAAS,MAAM,CAAC,oBAAA,EAAO,0BAAM,CAAA,EAAE;AAAA,IACxE,WAAA,EAAa,EAAE,IAAA,EAAM,KAAA,EAAyB,SAAS,MAAM,CAAC,EAAA,EAAI,EAAE,CAAA,EAAE;AAAA,IACtE,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GACjD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAO,MAAK,EAAG;AACrD,IAAA,MAAM,MAAA,GAAS,KAAA;AACf,IAAA,MAAM,eAAA,GAAkBM,MAAAA,CAA4B,EAAE,CAAA;AACtD,IAAA,MAAM,gBAAA,GAAmBA,MAAAA,CAA4B,EAAE,CAAA;AACvD,IAAA,MAAM,eAAA,GAAkBA,OAAO,EAAE,CAAA;AACjC,IAAA,MAAM,gBAAA,GAAmBA,OAAO,EAAE,CAAA;AAElC,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,OAAQ,MAAA,CAAO,IAAA,CAA0B,MAAA,CAAO,CAAA,IAAA,KAAQ,CAAE,OAAO,KAAA,CAA8B,QAAA,CAAS,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,IACnH,CAAA;AAEA,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,OAAQ,MAAA,CAAO,KAA0B,MAAA,CAAO,CAAA,IAAA,KAAS,OAAO,KAAA,CAA8B,QAAA,CAAS,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,IAClH,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,MAAM,QAAQ,eAAA,EAAgB;AAC9B,MAAA,MAAM,OAAO,QAAA,EAAS;AACtB,MAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AACnB,MAAA,OAAO,IAAA,CAAK,MAAA;AAAA,QAAO,CAAA,IAAA,KACjB,KAAK,KAAA,CAAM,WAAA,GAAc,QAAA,CAAS,KAAA,CAAM,aAAa;AAAA,OACvD;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAA,MAAM,QAAQ,gBAAA,EAAiB;AAC/B,MAAA,MAAM,OAAO,SAAA,EAAU;AACvB,MAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AACnB,MAAA,OAAO,IAAA,CAAK,MAAA;AAAA,QAAO,CAAA,IAAA,KACjB,KAAK,KAAA,CAAM,WAAA,GAAc,QAAA,CAAS,KAAA,CAAM,aAAa;AAAA,OACvD;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAA,MAAM,YAAY,CAAC,GAAI,OAAO,KAAA,EAA+B,GAAG,iBAAiB,CAAA;AACjF,MAAA,IAAA,CAAK,gBAAgB,SAAS,CAAA;AAC9B,MAAA,MAAA,CAAO,QAAA,GAAW,SAAA,EAAW,OAAA,EAAS,eAAA,EAAiB,CAAA;AACvD,MAAA,eAAA,CAAgB,GAAA,CAAI,EAAE,CAAA;AAAA,IACxB,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,MAAM,SAAA,GAAa,MAAA,CAAO,KAAA,CAA8B,MAAA,CAAO,CAAA,GAAA,KAAO,CAAC,gBAAA,EAAiB,CAAE,QAAA,CAAS,GAAG,CAAC,CAAA;AACvG,MAAA,IAAA,CAAK,gBAAgB,SAAS,CAAA;AAC9B,MAAA,MAAA,CAAO,QAAA,GAAW,SAAA,EAAW,MAAA,EAAQ,gBAAA,EAAkB,CAAA;AACvD,MAAA,gBAAA,CAAiB,GAAA,CAAI,EAAE,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,MAAM,OAAA,GAAU,CAAC,cAAc,CAAA;AAC/B,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIL,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,CAAC,IAAA,EAAsB,IAAA,KAA2B;AACnE,MAAA,MAAM,cAAc,eAAA,EAAgB;AACpC,MAAA,MAAM,eAAe,gBAAA,EAAiB;AACtC,MAAA,MAAM,OAAA,GAAU,IAAA,KAAS,MAAA,GACrB,WAAA,CAAY,QAAA,CAAS,IAAA,CAAK,GAAG,CAAA,GAC7B,YAAA,CAAa,QAAA,CAAS,IAAA,CAAK,GAAG,CAAA;AAElC,MAAA,MAAM,cAAc,MAAM;AACxB,QAAA,IAAI,KAAK,QAAA,EAAU;AACnB,QAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,UAAA,IAAI,OAAA,EAAS;AACX,YAAA,eAAA,CAAgB,GAAA,CAAI,YAAY,MAAA,CAAO,CAAC,MAAuB,CAAA,KAAM,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,UAChF,CAAA,MAAO;AACL,YAAA,eAAA,CAAgB,OAAO,CAAA,IAAA,KAAQ,CAAC,GAAG,IAAA,EAAM,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,UACpD;AAAA,QACF,CAAA,MAAO;AACL,UAAA,IAAI,OAAA,EAAS;AACX,YAAA,gBAAA,CAAiB,GAAA,CAAI,aAAa,MAAA,CAAO,CAAC,MAAuB,CAAA,KAAM,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,UAClF,CAAA,MAAO;AACL,YAAA,gBAAA,CAAiB,OAAO,CAAA,IAAA,KAAQ,CAAC,GAAG,IAAA,EAAM,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,UACrD;AAAA,QACF;AAAA,MACF,CAAA;AAEA,MAAA,OAAOC,YAAY,KAAA,EAAO;AAAA,QACxB,KAAA,EAAO,CAAC,yBAAA,EAA2B,EAAE,eAAe,IAAA,CAAK,QAAA,EAAU,YAAA,EAAc,OAAA,EAAS,CAAA;AAAA,QAC1F,OAAA,EAAS,WAAA;AAAA,QACT,KAAK,IAAA,CAAK;AAAA,OACZ,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,IAAA,CAAK,KAAK,CAAC,CAAC,CAAA;AAAA,IAC1C,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,MAAM,oBAA6B,EAAC;AACpC,MAAA,iBAAA,CAAkB,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,2BAAA,IAA+B,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAI,OAAO,MAAA,CAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;AAElJ,MAAA,IAAI,OAAO,UAAA,EAAY;AACrB,QAAA,MAAM,WAAA,GAAcA,YAAY,OAAA,EAAS;AAAA,UACvC,KAAA,EAAO,qBAAA;AAAA,UACP,IAAA,EAAM,MAAA;AAAA,UACN,aAAa,MAAA,CAAO,iBAAA;AAAA,UACpB,OAAO,eAAA,EAAgB;AAAA,UACvB,OAAA,EAAS,CAAC,CAAA,KAAa;AACrB,YAAA,MAAM,SAAS,CAAA,CAAE,MAAA;AACjB,YAAA,eAAA,CAAgB,GAAA,CAAI,OAAO,KAAK,CAAA;AAAA,UAClC;AAAA,SACD,CAAA;AACD,QAAA,MAAM,KAAA,GAAQ,kBAAiB,CAAE,GAAA,CAAI,CAAC,IAAA,KAAyB,UAAA,CAAW,IAAA,EAAM,MAAM,CAAC,CAAA;AACvF,QAAA,iBAAA,CAAkB,IAAA,CAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,yBAAA,EAA0B,EAAG,CAAC,WAAA,EAAa,GAAG,KAAK,CAAC,CAAC,CAAA;AAAA,MAC1G,CAAA,MAAO;AACL,QAAA,MAAM,KAAA,GAAQ,kBAAiB,CAAE,GAAA,CAAI,CAAC,IAAA,KAAyB,UAAA,CAAW,IAAA,EAAM,MAAM,CAAC,CAAA;AACvF,QAAA,iBAAA,CAAkB,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,yBAAA,EAA0B,EAAG,KAAK,CAAC,CAAA;AAAA,MACxF;AAEA,MAAA,IAAI,MAAM,UAAA,EAAY;AACpB,QAAA,MAAM,aAAA,GAAgB,MAAM,UAAA,EAAW;AACvC,QAAA,iBAAA,CAAkB,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,2BAAA,EAA4B,EAAG,aAAwB,CAAC,CAAA;AAAA,MAC7G;AAEA,MAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,oBAAA,EAAqB,EAAG,iBAAiB,CAAC,CAAA;AAEpF,MAAA,MAAM,iBAA0B,EAAC;AACjC,MAAA,MAAM,aAAA,GAAgB,eAAA,EAAgB,CAAE,MAAA,KAAW,CAAA;AACnD,MAAA,cAAA,CAAe,IAAA,CAAKA,YAAY,QAAA,EAAU;AAAA,QACxC,OAAO,CAAC,YAAA,EAAc,qBAAA,EAAuB,aAAA,GAAgB,gBAAgB,EAAE,CAAA;AAAA,QAC/E,QAAA,EAAU,aAAA;AAAA,QACV,OAAA,EAAS;AAAA,OACX,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAI,MAAA,CAAO,WAAA,CAAyB,CAAC,CAAA,IAAK,QAAG,CAAC,CAAC,CAAC,CAAA;AAEzE,MAAA,MAAM,YAAA,GAAe,gBAAA,EAAiB,CAAE,MAAA,KAAW,CAAA;AACnD,MAAA,cAAA,CAAe,IAAA,CAAKA,YAAY,QAAA,EAAU;AAAA,QACxC,OAAO,CAAC,YAAA,EAAc,qBAAA,EAAuB,YAAA,GAAe,gBAAgB,EAAE,CAAA;AAAA,QAC9E,QAAA,EAAU,YAAA;AAAA,QACV,OAAA,EAAS;AAAA,OACX,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAI,MAAA,CAAO,WAAA,CAAyB,CAAC,CAAA,IAAK,QAAG,CAAC,CAAC,CAAC,CAAA;AAEzE,MAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,sBAAA,EAAuB,EAAG,cAAc,CAAC,CAAA;AAEnF,MAAA,MAAM,qBAA8B,EAAC;AACrC,MAAA,kBAAA,CAAmB,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,2BAAA,IAA+B,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAI,OAAO,MAAA,CAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;AAEnJ,MAAA,IAAI,OAAO,UAAA,EAAY;AACrB,QAAA,MAAM,WAAA,GAAcA,YAAY,OAAA,EAAS;AAAA,UACvC,KAAA,EAAO,qBAAA;AAAA,UACP,IAAA,EAAM,MAAA;AAAA,UACN,aAAa,MAAA,CAAO,iBAAA;AAAA,UACpB,OAAO,gBAAA,EAAiB;AAAA,UACxB,OAAA,EAAS,CAAC,CAAA,KAAa;AACrB,YAAA,MAAM,SAAS,CAAA,CAAE,MAAA;AACjB,YAAA,gBAAA,CAAiB,GAAA,CAAI,OAAO,KAAK,CAAA;AAAA,UACnC;AAAA,SACD,CAAA;AACD,QAAA,MAAM,KAAA,GAAQ,mBAAkB,CAAE,GAAA,CAAI,CAAC,IAAA,KAAyB,UAAA,CAAW,IAAA,EAAM,OAAO,CAAC,CAAA;AACzF,QAAA,kBAAA,CAAmB,IAAA,CAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,yBAAA,EAA0B,EAAG,CAAC,WAAA,EAAa,GAAG,KAAK,CAAC,CAAC,CAAA;AAAA,MAC3G,CAAA,MAAO;AACL,QAAA,MAAM,KAAA,GAAQ,mBAAkB,CAAE,GAAA,CAAI,CAAC,IAAA,KAAyB,UAAA,CAAW,IAAA,EAAM,OAAO,CAAC,CAAA;AACzF,QAAA,kBAAA,CAAmB,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,yBAAA,EAA0B,EAAG,KAAK,CAAC,CAAA;AAAA,MACzF;AAEA,MAAA,IAAI,MAAM,WAAA,EAAa;AACrB,QAAA,MAAM,aAAA,GAAgB,MAAM,WAAA,EAAY;AACxC,QAAA,kBAAA,CAAmB,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,2BAAA,EAA4B,EAAG,aAAwB,CAAC,CAAA;AAAA,MAC9G;AAEA,MAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,oBAAA,EAAqB,EAAG,kBAAkB,CAAC,CAAA;AAErF,MAAA,OAAOA,YAAY,KAAA,EAAO;AAAA,QACxB,OAAO,gBAAA,EAAiB;AAAA,QACxB,OAAO,gBAAA;AAAiB,SACvB,QAAQ,CAAA;AAAA,IACb,CAAA;AAAA,EACF;AACF,CAAC;AC5LM,IAAM,eAAeH,eAAAA,CAAgB;AAAA,EAC1C,IAAA,EAAM,iBAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IACnC,MAAA,EAAQ,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACxC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,QAAA,EAAS;AAAA,IACxC,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,YAAA,EAAa;AAAA,IAC9C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GACrC;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAiC;AAC7E,IAAA,MAAM,CAAA,GAAI,KAAA;AAEV,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,iBAA0B,EAAC;AAEjC,MAAA,IAAI,CAAA,CAAE,KAAA,IAAS,KAAA,CAAM,KAAA,EAAO;AAC1B,QAAA,MAAM,eAAwB,EAAC;AAC/B,QAAA,IAAI,MAAM,KAAA,EAAO;AACf,UAAA,YAAA,CAAa,IAAA,CAAK,GAAG,KAAA,CAAM,KAAA,EAAO,CAAA;AAAA,QACpC,CAAA,MAAO;AACL,UAAA,YAAA,CAAa,IAAA,CAAKG,YAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AAAA,QAC5D;AACA,QAAA,cAAA,CAAe,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,0BAAA,EAA2B,EAAG,YAAY,CAAC,CAAA;AAAA,MAC7F;AAEA,MAAA,MAAM,eAAwB,EAAC;AAE/B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,YAAA,CAAa,IAAA,CAAK,GAAG,KAAA,CAAM,OAAA,EAAS,CAAA;AAAA,MACtC;AAEA,MAAA,cAAA,CAAe,IAAA,CAAKA,WAAAA;AAAA,QAClB,KAAA;AAAA,QACA;AAAA,UACE,OAAO,CAAA,uBAAA,EAA0B,CAAA,CAAE,MAAA,KAAW,UAAA,GAAa,qCAAqC,EAAE,CAAA,CAAA;AAAA,UAClG,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,MAAA;AAAA,YACT,mBAAA,EAAqB,CAAA,OAAA,EAAU,CAAA,CAAE,MAAM,CAAA,MAAA,CAAA;AAAA,YACvC,GAAA,EAAK,CAAA,CAAE,MAAA,GAAS,GAAA,GAAM;AAAA;AACxB,SACF;AAAA,QACA;AAAA,OACD,CAAA;AAED,MAAA,OAAOA,YAAY,KAAA,EAAO;AAAA,QACxB,KAAA,EAAO;AAAA,UACL,kBAAA;AAAA,UACA,CAAA,CAAE,SAAS,4BAAA,GAA+B,EAAA;AAAA,UAC1C,EAAE,IAAA,KAAS,QAAA,GAAW,CAAA,kBAAA,EAAqB,CAAA,CAAE,IAAI,CAAA,CAAA,GAAK,EAAA;AAAA,UACtD,CAAA,CAAE;AAAA,SACJ,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG;AAAA,SACzB,cAAc,CAAA;AAAA,IACnB,CAAA;AAAA,EACF;AACF,CAAC;AAEM,IAAM,mBAAmBH,eAAAA,CAAgB;AAAA,EAC9C,IAAA,EAAM,qBAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IACjC,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC/C,YAAA,EAAc,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA;AAAU,GACnD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAqC;AACjF,IAAA,MAAM,CAAA,GAAI,KAAA;AAEV,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,eAAwB,EAAC;AAC/B,MAAA,IAAI,MAAM,KAAA,EAAO;AACf,QAAA,YAAA,CAAa,IAAA,CAAK,GAAG,KAAA,CAAM,KAAA,EAAO,CAAA;AAAA,MACpC,CAAA,MAAA,IAAW,EAAE,KAAA,EAAO;AAClB,QAAA,YAAA,CAAa,IAAA,CAAKG,YAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AAAA,MAC5D;AAEA,MAAA,MAAM,iBAA0B,EAAC;AACjC,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,cAAA,CAAe,IAAA,CAAK,GAAG,KAAA,CAAM,OAAA,EAAS,CAAA;AAAA,MACxC;AAEA,MAAA,OAAOA,WAAAA;AAAA,QACL,KAAA;AAAA,QACA;AAAA,UACE,KAAA,EAAO,uBAAA;AAAA,UACP,OAAO,EAAE,UAAA,EAAY,CAAA,KAAA,EAAQ,CAAA,CAAE,IAAI,CAAA,CAAA;AAAG,SACxC;AAAA,QACA;AAAA,UACEA,WAAAA;AAAA,YACE,KAAA;AAAA,YACA;AAAA,cACE,KAAA,EAAO,8BAAA;AAAA,cACP,OAAO,CAAA,CAAE;AAAA,aACX;AAAA,YACA,YAAA,CAAa,MAAA,GAAS,CAAA,GAAI,YAAA,GAAe,CAACA,YAAY,MAAA,EAAQ,EAAC,EAAG,EAAE,CAAC;AAAA,WACvE;AAAA,UACAA,WAAAA;AAAA,YACE,KAAA;AAAA,YACA;AAAA,cACE,KAAA,EAAO,gCAAA;AAAA,cACP,OAAO,CAAA,CAAE;AAAA,aACX;AAAA,YACA,cAAA,CAAe,MAAA,GAAS,CAAA,GAAI,cAAA,GAAiB,CAACA,YAAY,MAAA,EAAQ,EAAC,EAAG,EAAE,CAAC;AAAA;AAC3E;AACF,OACF;AAAA,IACF,CAAA;AAAA,EACF;AACF,CAAC;ACtHM,IAAM,QAAQH,eAAAA,CAAgB;AAAA,EACnC,IAAA,EAAM,UAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC5C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAmC,SAAS,KAAA,EAAM;AAAA,IAChF,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAO;AAAA,IACrC,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC1C,iBAAA,EAAmB,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAClD,kBAAA,EAAoB,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IACnD,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC3C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC3C,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC5C,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACzC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC1C,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACnD,aAAA,EAAe,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACpD,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC7C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC9C,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAChD,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAClD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAA0B;AACtE,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,SAAA,GAAYM,OAAO,KAAK,CAAA;AAC9B,IAAA,MAAM,YAAA,GAAeA,MAAAA,CAAO,CAAA,CAAE,UAAU,CAAA;AAExC,IAAA,MAAM,QAAQ,YAAY;AACxB,MAAA,IAAI,WAAU,EAAG;AACjB,MAAA,IAAI,EAAE,aAAA,EAAe;AACnB,QAAA,MAAM,MAAA,GAAS,MAAM,CAAA,CAAE,aAAA,EAAc;AACrC,QAAA,IAAI,WAAW,KAAA,EAAO;AAAA,MACxB;AACA,MAAA,SAAA,CAAU,IAAI,IAAI,CAAA;AAClB,MAAA,CAAA,CAAE,OAAA,IAAU;AACZ,MAAA,UAAA,CAAW,MAAM;AAAE,QAAA,SAAA,CAAU,IAAI,KAAK,CAAA;AAAA,MAAG,GAAG,GAAG,CAAA;AAAA,IACjD,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,IAAI,CAAA,CAAE,mBAAmB,KAAA,EAAM;AAAA,IACjC,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAqB;AAC1C,MAAA,IAAI,CAAA,CAAE,kBAAA,IAAsB,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU;AAC9C,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,KAAA,EAAM;AAAA,MACR;AACA,MAAA,CAAA,CAAE,YAAY,CAAC,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,CAAC,EAAE,UAAA,EAAY;AACjB,QAAA,OAAOH,YAAY,KAAA,EAAO,EAAE,OAAO,gBAAA,EAAiB,EAAG,EAAE,CAAA;AAAA,MAC3D;AAEA,MAAA,MAAM,iBAA0B,EAAC;AAEjC,MAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,QAAA,cAAA,CAAe,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,UACrC,KAAA,EAAO,mBAAA;AAAA,UACP,IAAI,CAAA,CAAE,EAAA,GAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,OAAA,CAAA,GAAY;AAAA,SAChC,EAAG,KAAA,CAAM,MAAA,EAAQ,CAAC,CAAA;AAAA,MACpB,CAAA,MAAA,IAAW,EAAE,KAAA,EAAO;AAClB,QAAA,MAAM,SAAA,GAAqB;AAAA,UACzBA,YAAY,MAAA,EAAQ;AAAA,YAClB,KAAA,EAAO,kBAAA;AAAA,YACP,IAAI,CAAA,CAAE,EAAA,GAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,MAAA,CAAA,GAAW;AAAA,WAC/B,EAAG,CAACI,eAAAA,CAAgB,MAAA,CAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAAA,SACvC;AAEA,QAAA,IAAI,EAAE,SAAA,EAAW;AACf,UAAA,MAAM,gBAAgBF,kBAAAA,CAAmB;AAAA,YACvC,SAAA,EAAW;AAAA,WACZ,CAAA;AACD,UAAA,SAAA,CAAU,IAAA,CAAKF,WAAAA,CAAY,QAAA,EAAUC,cAAAA,CAAe,aAAA,EAAe;AAAA,YACjE,KAAA,EAAO,kBAAA;AAAA,YACP,OAAA,EAAS;AAAA,WACV,CAAA,EAAG,CAACG,gBAAgB,MAAG,CAAC,CAAC,CAAC,CAAA;AAAA,QAC7B;AAEA,QAAA,cAAA,CAAe,IAAA,CAAKJ,YAAY,KAAA,EAAO;AAAA,UACrC,KAAA,EAAO,mBAAA;AAAA,UACP,IAAI,CAAA,CAAE,EAAA,GAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,OAAA,CAAA,GAAY;AAAA,SAChC,EAAG,SAAS,CAAC,CAAA;AAAA,MACf;AAEA,MAAA,MAAM,eAAwB,EAAC;AAC/B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,YAAA,CAAa,IAAA,CAAK,GAAG,KAAA,CAAM,OAAA,EAAS,CAAA;AAAA,MACtC;AAEA,MAAA,MAAM,iBAA0B,EAAC;AACjC,MAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,QAAA,cAAA,CAAe,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,UACrC,KAAA,EAAO,mBAAA;AAAA,UACP,IAAI,CAAA,CAAE,EAAA,GAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,OAAA,CAAA,GAAY;AAAA,SAChC,EAAG,KAAA,CAAM,MAAA,EAAQ,CAAC,CAAA;AAAA,MACpB,CAAA,MAAO;AACL,QAAA,MAAM,iBAAiBE,kBAAAA,CAAmB;AAAA,UACxC,SAAA,EAAW;AAAA,SACZ,CAAA;AACD,QAAA,MAAM,kBAAkBA,kBAAAA,CAAmB;AAAA,UACzC,SAAA,EAAW;AAAA,SACZ,CAAA;AACD,QAAA,cAAA,CAAe,IAAA;AAAA,UACbF,YAAY,KAAA,EAAO;AAAA,YACjB,KAAA,EAAO,mBAAA;AAAA,YACP,IAAI,CAAA,CAAE,EAAA,GAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,OAAA,CAAA,GAAY;AAAA,WAChC,EAAG;AAAA,YACDA,WAAAA,CAAY,QAAA,EAAUC,cAAAA,CAAe,cAAA,EAAgB;AAAA,cACnD,KAAA,EAAO,uBAAA;AAAA,cACP,OAAA,EAAS;AAAA,aACV,CAAA,EAAG,CAACG,eAAAA,CAAgB,cAAI,CAAC,CAAC,CAAA;AAAA,YAC3BJ,WAAAA,CAAY,QAAA,EAAUC,cAAAA,CAAe,eAAA,EAAiB;AAAA,cACpD,KAAA,EAAO,wBAAA;AAAA,cACP,OAAA,EAAS,MAAM,CAAA,CAAE,SAAA;AAAY,aAC9B,CAAA,EAAG,CAACG,eAAAA,CAAgB,cAAI,CAAC,CAAC;AAAA,WAC5B;AAAA,SACH;AAAA,MACF;AAEA,MAAA,MAAM,UAAA,GAAa;AAAA,QACjB,WAAA;AAAA,QACA,SAAA,KAAc,oBAAA,GAAuB,EAAA;AAAA,QACrC,YAAA,KAAiB,uBAAA,GAA0B,EAAA;AAAA,QAC3C,CAAA,CAAE,WAAA;AAAA,QACF,CAAA,CAAE;AAAA,OACJ,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAE1B,MAAA,MAAM,UAAA,GAAa,OAAO,CAAA,CAAE,KAAA,KAAU,WAAW,CAAA,EAAG,CAAA,CAAE,KAAK,CAAA,EAAA,CAAA,GAAO,CAAA,CAAE,KAAA;AACpE,MAAA,MAAM,UAAA,GAAa,YAAA,EAAa,GAAI,EAAA,GAAK,UAAU,UAAU,CAAA,CAAA,CAAA;AAE7D,MAAA,MAAM,iBAAiBG,kBAAAA,CAAmB;AAAA,QACxC,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,SAAA,EAAW,CAAA,CAAE,SAAA,IAAa,CAAA,CAAE,KAAA;AAAA,QAC5B,eAAA,EAAiB,EAAE,eAAA,KAAoB,CAAA,CAAE,KAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,KAAA,CAAA,GAAU,MAAA,CAAA;AAAA,QAC/D,UAAA,EAAY,EAAE,KAAA,IAAS,CAAA,CAAE,KAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,MAAA,CAAA,GAAW,MAAA;AAAA,QAChD,OAAO,CAAA,CAAE;AAAA,OACV,CAAA;AAED,MAAA,OAAOP,YAAY,KAAA,EAAO;AAAA,QACxB,KAAA,EAAO,oBAAA;AAAA,QACP,aAAA,EAAe,IAAA;AAAA,QACf,OAAA,EAAS;AAAA,OACX,EAAG;AAAA,QACDA,WAAAA,CAAY,KAAA,EAAOC,cAAAA,CAAe,cAAA,EAAgB;AAAA,UAChD,KAAA,EAAO,UAAA;AAAA,UACP,KAAA,EAAO,UAAA;AAAA,UACP,SAAA,EAAW;AAAA,SACZ,CAAA,EAAG;AAAA,UACF,GAAG,cAAA;AAAA,UACHD,YAAY,KAAA,EAAO;AAAA,YACjB,KAAA,EAAO,iBAAA;AAAA,YACP,IAAI,CAAA,CAAE,EAAA,GAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,KAAA,CAAA,GAAU;AAAA,aAC3B,YAAY,CAAA;AAAA,UACf,GAAI,KAAA,CAAM,OAAA,CAAQ,cAAc,CAAA,GAAI,cAAA,GAAiB,CAAC,cAAc;AAAA,SACrE;AAAA,OACF,CAAA;AAAA,IACH,CAAA;AAAA,EACF;AACF,CAAC;ACxKM,IAAM,SAASH,eAAAA,CAAgB;AAAA,EACpC,IAAA,EAAM,WAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC5C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,IAAA,EAAM,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAmC,SAAS,KAAA,EAAM;AAAA,IAC/E,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,KAAA,EAAM;AAAA,IAC1C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC1C,iBAAA,EAAmB,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAClD,kBAAA,EAAoB,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IACnD,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC3C,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC3C,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACzC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC1C,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACnD,aAAA,EAAe,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACpD,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC7C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAChD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAA2B;AACvE,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,SAAA,GAAYM,OAAO,KAAK,CAAA;AAE9B,IAAA,MAAM,QAAQ,YAAY;AACxB,MAAA,IAAI,WAAU,EAAG;AACjB,MAAA,IAAI,EAAE,aAAA,EAAe;AACnB,QAAA,MAAM,MAAA,GAAS,MAAM,CAAA,CAAE,aAAA,EAAc;AACrC,QAAA,IAAI,WAAW,KAAA,EAAO;AAAA,MACxB;AACA,MAAA,SAAA,CAAU,IAAI,IAAI,CAAA;AAClB,MAAA,UAAA,CAAW,MAAM;AAAE,QAAA,SAAA,CAAU,IAAI,KAAK,CAAA;AAAA,MAAG,GAAG,GAAG,CAAA;AAAA,IACjD,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,IAAI,CAAA,CAAE,mBAAmB,KAAA,EAAM;AAAA,IACjC,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,MAAM,GAAA,KAAQ,QAAA,IAAY,CAAA,CAAE,kBAAA,IAAsB,EAAE,UAAA,EAAY;AAClE,QAAA,KAAA,EAAM;AAAA,MACR;AAAA,IACF,CAAA;AAEA,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,MAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAAA,IAClD;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,MAAM,OAAA,GAAU,CAAC,YAAY,CAAA;AAC7B,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,YAAA,EAAe,CAAA,CAAE,SAAS,CAAA,CAAE,CAAA;AACzC,MAAA,IAAI,CAAA,CAAE,UAAA,EAAY,OAAA,CAAQ,IAAA,CAAK,qBAAqB,CAAA;AACpD,MAAA,IAAI,SAAA,EAAU,EAAG,OAAA,CAAQ,IAAA,CAAK,qBAAqB,CAAA;AACnD,MAAA,IAAI,CAAA,CAAE,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,EAAE,KAAe,CAAA;AAC3C,MAAA,IAAI,CAAA,CAAE,WAAA,EAAa,OAAA,CAAQ,IAAA,CAAK,EAAE,WAAqB,CAAA;AACvD,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,eAAe,MAA8B;AACjD,MAAA,MAAM,IAAA,GAAO,OAAO,CAAA,CAAE,IAAA,KAAS,WAAW,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,EAAA,CAAA,GAAO,CAAA,CAAE,IAAA;AAC5D,MAAA,MAAM,QAAgC,EAAC;AAEvC,MAAA,QAAQ,EAAE,SAAA;AAAW,QACnB,KAAK,KAAA;AAAA,QACL,KAAK,KAAA;AACH,UAAA,KAAA,CAAM,KAAA,GAAQ,IAAA;AACd,UAAA;AAAA,QACF,KAAK,KAAA;AAAA,QACL,KAAK,KAAA;AACH,UAAA,KAAA,CAAM,MAAA,GAAS,IAAA;AACf,UAAA;AAAA;AAGJ,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAkC;AACrD,MAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AACnB,MAAA,OAAO,OAAO,OAAA,CAAQ,KAAK,CAAA,CACxB,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,GAAG,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE,CAAA,CACxC,KAAK,IAAI,CAAA;AAAA,IACd,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,CAAC,CAAA,CAAE,UAAA,IAAc,CAAC,WAAU,EAAG;AACjC,QAAA,OAAOH,YAAY,KAAA,EAAO,EAAE,OAAO,gBAAA,EAAiB,EAAG,EAAE,CAAA;AAAA,MAC3D;AAEA,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,qBAAA,EAAuB,OAAA,EAAS,gBAAA,EAAkB,CAAC,CAAA;AAE7F,MAAA,MAAM,iBAA0B,EAAC;AAEjC,MAAA,IAAI,EAAE,UAAA,EAAY;AAChB,QAAA,MAAM,iBAA0B,EAAC;AAEjC,QAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,UAAA,cAAA,CAAe,IAAA,CAAK,GAAG,KAAA,CAAM,MAAA,EAAQ,CAAA;AAAA,QACvC,CAAA,MAAA,IAAW,EAAE,KAAA,EAAO;AAClB,UAAA,cAAA,CAAe,IAAA,CAAKA,WAAAA,CAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,mBAAA,EAAqB,EAAA,EAAI,CAAA,CAAE,EAAA,GAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,MAAA,CAAA,GAAW,QAAU,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,CAAA,CAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,QAC7J;AAEA,QAAA,IAAI,EAAE,SAAA,EAAW;AACf,UAAA,MAAM,aAAA,GAAgBE,kBAAAA,CAAmB,EAAE,SAAA,EAAW,gBAAgB,CAAA;AACtE,UAAA,cAAA,CAAe,IAAA;AAAA,YACbF,WAAAA,CAAY,QAAA,EAAUC,cAAAA,CAAe,aAAA,EAAe,EAAE,KAAA,EAAO,mBAAA,EAAqB,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,KAAA,EAAO,CAAA,EAAG;AAAA,cACnHD,WAAAA,CAAY,OAAO,EAAE,OAAA,EAAS,iBAAiB,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAM,EAAG;AAAA,gBAC5EA,YAAY,MAAA,EAAQ;AAAA,kBAClB,CAAA,EAAG,8TAAA;AAAA,kBACH,IAAA,EAAM;AAAA,iBACP;AAAA,eACF;AAAA,aACF;AAAA,WACH;AAAA,QACF;AAEA,QAAA,IAAI,cAAA,CAAe,SAAS,CAAA,EAAG;AAC7B,UAAA,cAAA,CAAe,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,sBAAsB,EAAA,EAAI,CAAA,CAAE,EAAA,GAAK,CAAA,EAAG,EAAE,EAAE,CAAA,OAAA,CAAA,GAAY,MAAA,EAAU,EAAG,cAAc,CAAC,CAAA;AAAA,QAClI;AAAA,MACF;AAEA,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,cAAA,CAAe,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,kBAAA,EAAoB,IAAI,CAAA,CAAE,EAAA,GAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,KAAA,CAAA,GAAU,MAAA,IAAa,KAAA,CAAM,OAAA,EAAS,CAAC,CAAA;AAAA,MAC/H;AAEA,MAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,QAAA,cAAA,CAAe,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,oBAAA,EAAsB,IAAI,CAAA,CAAE,EAAA,GAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,OAAA,CAAA,GAAY,MAAA,IAAa,KAAA,CAAM,MAAA,EAAQ,CAAC,CAAA;AAAA,MAClI;AAEA,MAAA,MAAM,eAAA,GAAkBA,YAAY,KAAA,EAAO;AAAA,QACzC,KAAA,EAAO,uBAAA;AAAA,QACP,KAAA,EAAO,WAAA,CAAY,YAAA,EAAc;AAAA,SAChC,cAAc,CAAA;AACjB,MAAA,QAAA,CAAS,KAAK,eAAe,CAAA;AAE7B,MAAA,MAAM,YAAYO,kBAAAA,CAAmB;AAAA,QACnC,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,SAAA,EAAW,CAAA,CAAE,SAAA,IAAa,CAAA,CAAE,KAAA;AAAA,QAC5B,eAAA,EAAiB,EAAE,eAAA,KAAoB,CAAA,CAAE,KAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,KAAA,CAAA,GAAU,MAAA,CAAA;AAAA,QAC/D,UAAA,EAAY,EAAE,KAAA,IAAS,CAAA,CAAE,KAAK,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,MAAA,CAAA,GAAW,MAAA;AAAA,QAChD,OAAO,CAAA,CAAE;AAAA,OACV,CAAA;AAED,MAAA,OAAOP,WAAAA,CAAY,KAAA,EAAOC,cAAAA,CAAe,SAAA,EAAW,EAAE,OAAO,cAAA,EAAe,EAAG,CAAA,EAAG,QAAQ,CAAA;AAAA,IAC5F,CAAA;AAAA,EACF;AACF,CAAC;AC1JM,IAAM,SAASJ,eAAAA,CAAgB;AAAA,EACpC,IAAA,EAAM,WAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACpC,SAAS,EAAE,IAAA,EAAM,QAAQ,OAAA,EAAS,OAA+B,EAAC,CAAA,EAAG;AAAA,IACrE,MAAM,EAAE,IAAA,EAAM,QAAQ,OAAA,EAAS,OAAgC,EAAC,CAAA,EAAG;AAAA,IACnE,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACpC,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC3C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IAClC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAChD,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC9C,UAAA,EAAY,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACjD,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GACrD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAA2B;AACvE,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,KAAA,GAAQM,MAAAA,CAAqB,EAAE,CAAA;AACrC,IAAA,MAAM,QAAA,GAAWA,OAAO,KAAK,CAAA;AAC7B,IAAA,MAAM,QAAA,GAAW,EAAE,OAAA,EAAS,IAAA,EAAgC;AAE5D,IAAA,IAAI,GAAA,GAAM,CAAA;AACV,IAAA,MAAM,WAAA,GAAc,MAAM,EAAE,GAAA;AAE5B,IAAA,MAAM,gBAAA,GAAmB,OAAO,KAAA,KAAiB;AAC/C,MAAA,MAAM,QAAQ,KAAA,CAAM,MAAA;AACpB,MAAA,MAAM,WAAW,KAAA,CAAM,KAAA;AACvB,MAAA,IAAI,CAAC,QAAA,EAAU;AAEf,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,QAAA,MAAM,IAAA,GAAO,SAAS,CAAC,CAAA;AACvB,QAAA,IAAI,IAAA,EAAM,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,MACjC;AAEA,MAAA,KAAA,CAAM,KAAA,GAAQ,EAAA;AAAA,IAChB,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,OAAO,IAAA,KAAe;AACvC,MAAA,IAAI,EAAE,KAAA,GAAQ,CAAA,IAAK,OAAM,CAAE,MAAA,IAAU,EAAE,KAAA,EAAO;AAC5C,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,EAAE,YAAA,EAAc;AAClB,QAAA,MAAM,MAAA,GAAS,MAAM,CAAA,CAAE,YAAA,CAAa,IAAI,CAAA;AACxC,QAAA,IAAI,WAAW,KAAA,EAAO;AAAA,MACxB;AAEA,MAAA,MAAM,OAAA,GAAsB;AAAA,QAC1B,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,MAAA,EAAQ,SAAA;AAAA,QACR,KAAK,WAAA,EAAY;AAAA,QACjB,GAAA,EAAK;AAAA,OACP;AAEA,MAAA,KAAA,CAAM,IAAI,CAAC,GAAG,KAAA,EAAM,EAAG,OAAO,CAAC,CAAA;AAC/B,MAAA,CAAA,CAAE,QAAA,GAAW,OAAO,CAAA;AAEpB,MAAA,IAAI,CAAA,CAAE,UAAA,IAAc,CAAA,CAAE,MAAA,EAAQ;AAC5B,QAAA,MAAM,eAAe,OAAO,CAAA;AAAA,MAC9B;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,OAAO,IAAA,KAAqB;AACjD,MAAA,IAAA,CAAK,MAAA,GAAS,WAAA;AACd,MAAA,IAAA,CAAK,UAAA,GAAa,CAAA;AAClB,MAAA,KAAA,CAAM,GAAA,CAAI,CAAC,GAAG,KAAA,EAAO,CAAC,CAAA;AACtB,MAAA,CAAA,CAAE,QAAA,GAAW,OAAO,CAAA;AAEpB,MAAA,IAAI;AACF,QAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAC9B,QAAA,QAAA,CAAS,MAAA,CAAO,MAAA,EAAQ,IAAA,CAAK,GAAI,CAAA;AAEjC,QAAA,KAAA,MAAW,CAAC,KAAK,KAAK,CAAA,IAAK,OAAO,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAA,EAAG;AACjD,UAAA,QAAA,CAAS,MAAA,CAAO,GAAA,EAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,QACpC;AAEA,QAAA,MAAM,GAAA,GAAM,IAAI,cAAA,EAAe;AAE/B,QAAA,GAAA,CAAI,MAAA,CAAO,UAAA,GAAa,CAAC,CAAA,KAAM;AAC7B,UAAA,IAAI,EAAE,gBAAA,EAAkB;AACtB,YAAA,IAAA,CAAK,aAAa,IAAA,CAAK,KAAA,CAAO,EAAE,MAAA,GAAS,CAAA,CAAE,QAAS,GAAG,CAAA;AACvD,YAAA,KAAA,CAAM,GAAA,CAAI,CAAC,GAAG,KAAA,EAAO,CAAC,CAAA;AACtB,YAAA,CAAA,CAAE,UAAA,GAAa,IAAA,CAAK,UAAA,EAAa,IAAI,CAAA;AAAA,UACvC;AAAA,QACF,CAAA;AAEA,QAAA,GAAA,CAAI,SAAS,MAAM;AACjB,UAAA,IAAI,GAAA,CAAI,MAAA,IAAU,GAAA,IAAO,GAAA,CAAI,SAAS,GAAA,EAAK;AACzC,YAAA,IAAA,CAAK,MAAA,GAAS,SAAA;AACd,YAAA,IAAA,CAAK,UAAA,GAAa,GAAA;AAClB,YAAA,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,YAAY,CAAA,CAAE,GAAA;AACxC,YAAA,CAAA,CAAE,YAAY,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,YAAY,GAAG,IAAI,CAAA;AAAA,UAClD,CAAA,MAAO;AACL,YAAA,IAAA,CAAK,MAAA,GAAS,OAAA;AACd,YAAA,CAAA,CAAE,OAAA,GAAU,IAAI,KAAA,CAAM,eAAe,GAAG,IAAI,CAAA;AAAA,UAC9C;AACA,UAAA,KAAA,CAAM,GAAA,CAAI,CAAC,GAAG,KAAA,EAAO,CAAC,CAAA;AACtB,UAAA,CAAA,CAAE,QAAA,GAAW,OAAO,CAAA;AAAA,QACtB,CAAA;AAEA,QAAA,GAAA,CAAI,UAAU,MAAM;AAClB,UAAA,IAAA,CAAK,MAAA,GAAS,OAAA;AACd,UAAA,KAAA,CAAM,GAAA,CAAI,CAAC,GAAG,KAAA,EAAO,CAAC,CAAA;AACtB,UAAA,CAAA,CAAE,OAAA,GAAU,IAAI,KAAA,CAAM,eAAe,GAAG,IAAI,CAAA;AAC5C,UAAA,CAAA,CAAE,QAAA,GAAW,OAAO,CAAA;AAAA,QACtB,CAAA;AAEA,QAAA,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,CAAA,CAAE,MAAM,CAAA;AACzB,QAAA,KAAA,MAAW,CAAC,KAAK,KAAK,CAAA,IAAK,OAAO,OAAA,CAAQ,CAAA,CAAE,OAAO,CAAA,EAAG;AACpD,UAAA,GAAA,CAAI,gBAAA,CAAiB,KAAK,KAAK,CAAA;AAAA,QACjC;AACA,QAAA,GAAA,CAAI,KAAK,QAAQ,CAAA;AAAA,MAEnB,SAAS,KAAA,EAAO;AACd,QAAA,IAAA,CAAK,MAAA,GAAS,OAAA;AACd,QAAA,KAAA,CAAM,GAAA,CAAI,CAAC,GAAG,KAAA,EAAO,CAAC,CAAA;AACtB,QAAA,CAAA,CAAE,OAAA,GAAU,OAAgB,IAAI,CAAA;AAChC,QAAA,CAAA,CAAE,QAAA,GAAW,OAAO,CAAA;AAAA,MACtB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAqB;AACzC,MAAA,MAAM,QAAA,GAAW,OAAM,CAAE,MAAA,CAAO,OAAK,CAAA,CAAE,GAAA,KAAQ,KAAK,GAAG,CAAA;AACvD,MAAA,KAAA,CAAM,IAAI,QAAQ,CAAA;AAClB,MAAA,CAAA,CAAE,WAAW,IAAI,CAAA;AACjB,MAAA,CAAA,CAAE,QAAA,GAAW,OAAO,CAAA;AAAA,IACtB,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,CAAC,CAAA,KAAiB;AACvC,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,QAAA,CAAS,IAAI,IAAI,CAAA;AAAA,IACnB,CAAA;AAEA,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,QAAA,CAAS,IAAI,KAAK,CAAA;AAAA,IACpB,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,OAAO,CAAA,KAAiB;AACzC,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,QAAA,CAAS,IAAI,KAAK,CAAA;AAElB,MAAA,MAAM,QAAA,GAAW,EAAE,YAAA,EAAc,KAAA;AACjC,MAAA,IAAI,CAAC,QAAA,EAAU;AAEf,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,QAAA,MAAM,IAAA,GAAO,SAAS,CAAC,CAAA;AACvB,QAAA,IAAI,IAAA,EAAM,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,MACjC;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,EAAE,QAAA,EAAU;AAChB,MAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,IAC1B,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAA4B;AAC9C,MAAA,MAAM,WAAA,GAAc,CAAA,kBAAA,EAAqB,IAAA,CAAK,MAAM,CAAA,CAAA;AACpD,MAAA,MAAM,eAAwB,EAAC;AAE/B,MAAA,IAAI,MAAM,IAAA,EAAM;AACd,QAAA,YAAA,CAAa,IAAA,CAAK,GAAG,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,MACvC,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,KAAKH,WAAAA,CAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,uBAAA,IAA2B,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,MACzH;AAEA,MAAA,IAAI,IAAA,CAAK,WAAW,WAAA,EAAa;AAC/B,QAAA,YAAA,CAAa,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,wBAAuB,EAAG;AAAA,UACtEA,YAAY,KAAA,EAAO;AAAA,YACjB,KAAA,EAAO,0BAAA;AAAA,YACP,KAAA,EAAO,CAAA,OAAA,EAAU,IAAA,CAAK,UAAA,IAAc,CAAC,CAAA,CAAA;AAAA,WACvC,EAAG,EAAE,CAAA;AAAA,UACLA,YAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,wBAAA,IAA4B,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,CAAA,EAAG,IAAA,CAAK,cAAc,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC;AAAA,SAC/G,CAAC,CAAA;AAAA,MACJ;AAEA,MAAA,YAAA,CAAa,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,QACpC,KAAA,EAAO,oBAAA;AAAA,QACP,OAAA,EAAS,MAAM,YAAA,CAAa,IAAI;AAAA,OAClC,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAG,CAAC,CAAC,CAAC,CAAA;AAElC,MAAA,OAAOA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,iBAAA,EAAoB,WAAW,CAAA,CAAA,EAAI,GAAA,EAAK,IAAA,CAAK,GAAA,EAAI,EAAG,YAAY,CAAA;AAAA,IACrG,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAA,GAAc;AAAA,QAClB,YAAA;AAAA,QACA,CAAA,CAAE,WAAW,sBAAA,GAAyB,EAAA;AAAA,QACtC,QAAA,KAAa,sBAAA,GAAyB,EAAA;AAAA,QACtC,CAAA,CAAE;AAAA,OACJ,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAE1B,MAAA,MAAM,iBAA0B,EAAC;AAEjC,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,cAAA,CAAe,IAAA,CAAK,GAAG,KAAA,CAAM,OAAA,EAAS,CAAA;AAAA,MACxC,CAAA,MAAA,IAAW,MAAM,OAAA,EAAS;AACxB,QAAA,cAAA,CAAe,IAAA,CAAK,GAAG,KAAA,CAAM,OAAA,EAAS,CAAA;AAAA,MACxC,CAAA,MAAO;AACL,QAAA,cAAA,CAAe,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,uBAAsB,EAAG;AAAA,UACvEA,WAAAA,CAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,kBAAA,EAAmB,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,WAAI,CAAC,CAAC,CAAA;AAAA,UAClFA,WAAAA,CAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,kBAAA,EAAmB,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,wDAAW,CAAC,CAAC;AAAA,SAC1F,CAAC,CAAA;AAAA,MACJ;AAEA,MAAA,MAAM,aAAsB,EAAC;AAC7B,MAAA,IAAI,MAAM,GAAA,EAAK;AACb,QAAA,UAAA,CAAW,IAAA,CAAK,GAAG,KAAA,CAAM,GAAA,EAAK,CAAA;AAAA,MAChC;AAEA,MAAA,MAAM,kBAA2B,EAAC;AAClC,MAAA,IAAI,KAAA,EAAM,CAAE,MAAA,GAAS,CAAA,EAAG;AACtB,QAAA,eAAA,CAAgB,IAAA,CAAK,GAAG,KAAA,EAAM,CAAE,IAAI,CAAA,IAAA,KAAQ,UAAA,CAAW,IAAI,CAAC,CAAC,CAAA;AAAA,MAC/D;AAEA,MAAA,MAAM,QAAA,GAAoB;AAAA,QACxBA,YAAY,OAAA,EAAS;AAAA,UACnB,GAAA,EAAK,QAAA;AAAA,UACL,IAAA,EAAM,MAAA;AAAA,UACN,KAAA,EAAO,mBAAA;AAAA,UACP,QAAQ,CAAA,CAAE,MAAA;AAAA,UACV,UAAU,CAAA,CAAE,QAAA;AAAA,UACZ,QAAA,EAAU;AAAA,SACZ,EAAG,EAAE,CAAA;AAAA,QACLA,YAAY,KAAA,EAAO;AAAA,UACjB,KAAA,EAAO,qBAAA;AAAA,UACP,OAAA,EAAS,WAAA;AAAA,UACT,UAAA,EAAY,cAAA;AAAA,UACZ,WAAA,EAAa,eAAA;AAAA,UACb,MAAA,EAAQ;AAAA,WACP,cAAc;AAAA,OACnB;AAEA,MAAA,IAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AACzB,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,iBAAA,EAAkB,EAAG,UAAU,CAAC,CAAA;AAAA,MAC5E;AAEA,MAAA,IAAI,eAAA,CAAgB,SAAS,CAAA,EAAG;AAC9B,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,kBAAA,EAAmB,EAAG,eAAe,CAAC,CAAA;AAAA,MAClF;AAEA,MAAA,OAAOA,YAAY,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,IAAe,QAAQ,CAAA;AAAA,IAC5D,CAAA;AAAA,EACF;AACF,CAAC;AC9OD,IAAM,sBAAN,MAA0B;AAAA,EAIxB,OAAO,KAAK,OAAA,EAST;AACD,IAAA,MAAM,KAAK,IAAA,CAAK,MAAA,EAAA;AAChB,IAAA,MAAM,YAAA,GAAiC;AAAA,MACrC,EAAA;AAAA,MACA,IAAA,EAAM,QAAQ,IAAA,IAAQ,MAAA;AAAA,MACtB,OAAO,OAAA,CAAQ,KAAA;AAAA,MACf,OAAA,EAAS,QAAQ,OAAA,IAAW,EAAA;AAAA,MAC5B,QAAA,EAAU,OAAA,CAAQ,QAAA,KAAa,MAAA,GAAY,QAAQ,QAAA,GAAW,IAAA;AAAA,MAC9D,QAAA,EAAU,QAAQ,QAAA,IAAY,WAAA;AAAA,MAC9B,SAAA,EAAW,OAAA,CAAQ,SAAA,KAAc,MAAA,GAAY,QAAQ,SAAA,GAAY,IAAA;AAAA,MACjE,SAAS,OAAA,CAAQ,OAAA;AAAA,MACjB,QAAQ,OAAA,CAAQ;AAAA,KAClB;AAEA,IAAA,IAAA,CAAK,aAAA,CAAc,IAAI,CAAC,GAAG,KAAK,aAAA,EAAc,EAAG,YAAY,CAAC,CAAA;AAE9D,IAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,MAAA,YAAA,CAAa,MAAA,EAAO;AAAA,IACtB;AAEA,IAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAC7B,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,IAAA,CAAK,MAAM,EAAE,CAAA;AAAA,MACf,CAAA,EAAG,aAAa,QAAQ,CAAA;AAAA,IAC1B;AAEA,IAAA,OAAO,EAAA;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,EAAA,EAAY;AACvB,IAAA,MAAM,YAAA,GAAe,KAAK,aAAA,EAAc,CAAE,KAAK,CAAA,CAAA,KAAK,CAAA,CAAE,OAAO,EAAE,CAAA;AAC/D,IAAA,IAAI,YAAA,IAAgB,aAAa,OAAA,EAAS;AACxC,MAAA,YAAA,CAAa,OAAA,EAAQ;AAAA,IACvB;AACA,IAAA,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,IAAA,CAAK,aAAA,EAAc,CAAE,OAAO,CAAA,CAAA,KAAK,CAAA,CAAE,EAAA,KAAO,EAAE,CAAC,CAAA;AAAA,EACtE;AAAA,EAEA,OAAO,QAAQ,OAAA,EAA6J;AAC1K,IAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,MAAA,OAAO,IAAA,CAAK,KAAK,EAAE,IAAA,EAAM,WAAW,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,EAAA,EAAI,CAAA;AAAA,IACnE;AACA,IAAA,OAAO,KAAK,IAAA,CAAK,EAAE,GAAG,OAAA,EAAS,IAAA,EAAM,WAAW,CAAA;AAAA,EAClD;AAAA,EAEA,OAAO,QAAQ,OAAA,EAA6J;AAC1K,IAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,MAAA,OAAO,IAAA,CAAK,KAAK,EAAE,IAAA,EAAM,WAAW,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,EAAA,EAAI,CAAA;AAAA,IACnE;AACA,IAAA,OAAO,KAAK,IAAA,CAAK,EAAE,GAAG,OAAA,EAAS,IAAA,EAAM,WAAW,CAAA;AAAA,EAClD;AAAA,EAEA,OAAO,MAAM,OAAA,EAA6J;AACxK,IAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,MAAA,OAAO,IAAA,CAAK,KAAK,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,EAAA,EAAI,CAAA;AAAA,IACjE;AACA,IAAA,OAAO,KAAK,IAAA,CAAK,EAAE,GAAG,OAAA,EAAS,IAAA,EAAM,SAAS,CAAA;AAAA,EAChD;AAAA,EAEA,OAAO,KAAK,OAAA,EAA6J;AACvK,IAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,MAAA,OAAO,IAAA,CAAK,KAAK,EAAE,IAAA,EAAM,QAAQ,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,EAAA,EAAI,CAAA;AAAA,IAChE;AACA,IAAA,OAAO,KAAK,IAAA,CAAK,EAAE,GAAG,OAAA,EAAS,IAAA,EAAM,QAAQ,CAAA;AAAA,EAC/C;AAAA,EAEA,OAAO,QAAA,GAAW;AAChB,IAAA,MAAM,OAAA,GAAU,KAAK,aAAA,EAAc;AACnC,IAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA,KAAK;AACnB,MAAA,IAAI,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,OAAA,EAAQ;AAAA,IAC3B,CAAC,CAAA;AACD,IAAA,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,EAAE,CAAA;AAAA,EAC3B;AACF,CAAA;AArFM,mBAAA,CACG,aAAA,GAAgBG,MAAAA,CAA2B,EAAE,CAAA;AADhD,mBAAA,CAEG,MAAA,GAAS,CAAA;AAqFlB,IAAM,OAAA,GAAU,CAAC,IAAA,KAAyB;AACxC,EAAA,MAAM,KAAA,GAAgC;AAAA,IACpC,OAAA,EAAS,QAAA;AAAA,IACT,OAAA,EAAS,QAAA;AAAA,IACT,KAAA,EAAO,QAAA;AAAA,IACP,IAAA,EAAM;AAAA,GACR;AACA,EAAA,OAAO,KAAA,CAAM,IAAI,CAAA,IAAK,KAAA,CAAM,MAAM,CAAA,IAAK,QAAA;AACzC,CAAA;AAEO,IAAM,eAAeN,eAAAA,CAAgB;AAAA,EAC1C,IAAA,EAAM,iBAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,WAAA,EAAY;AAAA,IAC/C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GACrC;AAAA,EAEA,MAAM,KAAA,EAAgC;AACpC,IAAA,MAAM,CAAA,GAAI,KAAA;AAEV,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAA,MAAM,UAAU,CAAC,4BAAA,EAA8B,CAAA,4BAAA,EAA+B,CAAA,CAAE,QAAQ,CAAA,CAAE,CAAA;AAC1F,MAAA,IAAI,CAAA,CAAE,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,EAAE,KAAe,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,aAAA,GAAgB,oBAAoB,aAAA,EAAc;AAExD,MAAA,MAAM,QAAA,GAAoB,aAAA,CAAc,GAAA,CAAI,CAAC,YAAA,KAAiB;AAC5D,QAAA,MAAM,iBAAA,GAAoB;AAAA,UACxB,kBAAA;AAAA,UACA,CAAA,kBAAA,EAAqB,aAAa,IAAI,CAAA,CAAA;AAAA,UACtC,CAAA,kBAAA,EAAqB,aAAa,QAAQ,CAAA;AAAA,SAC5C,CAAE,KAAK,GAAG,CAAA;AAEV,QAAA,MAAM,YAAA,GAAwB;AAAA,UAC5BG,YAAY,MAAA,EAAQ;AAAA,YAClB,KAAA,EAAO;AAAA,WACT,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,OAAA,CAAQ,YAAA,CAAa,IAAI,CAAC,CAAC,CAAC;AAAA,SAC1D;AAEA,QAAA,MAAM,eAAA,GAA2B;AAAA,UAC/BA,YAAY,KAAA,EAAO,EAAE,KAAA,EAAO,yBAAA,IAA6B,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,YAAA,CAAa,KAAK,CAAC,CAAC,CAAC;AAAA,SAChH;AAEA,QAAA,IAAI,aAAa,OAAA,EAAS;AACxB,UAAA,eAAA,CAAgB,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,2BAAA,IAA+B,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,YAAA,CAAa,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,QAC1I;AAEA,QAAA,YAAA,CAAa,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,2BAAA,EAA4B,EAAG,eAAe,CAAC,CAAA;AAE7F,QAAA,IAAI,aAAa,SAAA,EAAW;AAC1B,UAAA,YAAA,CAAa,IAAA,CAAKA,YAAY,QAAA,EAAU;AAAA,YACtC,KAAA,EAAO,yBAAA;AAAA,YACP,OAAA,EAAS,MAAM,mBAAA,CAAoB,KAAA,CAAM,aAAa,EAAE;AAAA,WAC1D,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAG,CAAC,CAAC,CAAC,CAAA;AAAA,QACpC;AAEA,QAAA,OAAOA,YAAY,KAAA,EAAO;AAAA,UACxB,KAAA,EAAO,iBAAA;AAAA,UACP,KAAK,YAAA,CAAa;AAAA,WACjB,YAAY,CAAA;AAAA,MACjB,CAAC,CAAA;AAED,MAAA,OAAOA,YAAY,KAAA,EAAO,EAAE,OAAO,iBAAA,EAAkB,IAAK,QAAQ,CAAA;AAAA,IACpE,CAAA;AAAA,EACF;AACF,CAAC;AAEA,YAAA,CAAyC,IAAA,GAAO,mBAAA,CAAoB,IAAA,CAAK,IAAA,CAAK,mBAAmB,CAAA;AACjG,YAAA,CAAyC,OAAA,GAAU,mBAAA,CAAoB,OAAA,CAAQ,IAAA,CAAK,mBAAmB,CAAA;AACvG,YAAA,CAAyC,OAAA,GAAU,mBAAA,CAAoB,OAAA,CAAQ,IAAA,CAAK,mBAAmB,CAAA;AACvG,YAAA,CAAyC,KAAA,GAAQ,mBAAA,CAAoB,KAAA,CAAM,IAAA,CAAK,mBAAmB,CAAA;AACnG,YAAA,CAAyC,IAAA,GAAO,mBAAA,CAAoB,IAAA,CAAK,IAAA,CAAK,mBAAmB,CAAA;AACjG,YAAA,CAAyC,KAAA,GAAQ,mBAAA,CAAoB,KAAA,CAAM,IAAA,CAAK,mBAAmB,CAAA;AACnG,YAAA,CAAyC,QAAA,GAAW,mBAAA,CAAoB,QAAA,CAAS,IAAA,CAAK,mBAAmB,CAAA;ACxKnG,IAAM,WAAWH,eAAAA,CAAgB;AAAA,EACtC,IAAA,EAAM,aAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,CAAC,MAAA,EAAQ,IAAI,CAAA,EAAmC,OAAA,EAAS,sBAAY,IAAI,IAAA,EAAK,EAAE;AAAA,IACpG,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,OAAA,EAAQ;AAAA,IACvC,QAAQ,EAAE,IAAA,EAAM,OAAO,OAAA,EAAS,MAAuB,EAAC,EAAE;AAAA,IAC1D,aAAA,EAAe,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACpD,cAAA,EAAgB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IAC3C,SAAA,EAAW,EAAE,IAAA,EAAM,KAAA,EAAO,SAAS,MAAgB,CAAC,QAAA,EAAK,QAAA,EAAK,QAAA,EAAK,QAAA,EAAK,QAAA,EAAK,QAAA,EAAK,QAAG,CAAA,EAAE;AAAA,IACvF,YAAY,EAAE,IAAA,EAAM,OAAO,OAAA,EAAS,MAAgB,CAAC,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAA,EAAM,oBAAA,EAAO,oBAAK,CAAA,EAAE;AAAA,IAC/H,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACnD,WAAA,EAAa,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GACpD;AAAA,EAEA,MAAM,KAAA,EAAgC;AACpC,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,WAAA,GAAcM,MAAAA;AAAA,MAClB,EAAE,UAAA,YAAsB,IAAA,GAAO,CAAA,CAAE,UAAA,uBAAiB,IAAA;AAAK,KACzD;AACA,IAAA,MAAM,WAAA,GAAcA,MAAAA,CAAe,CAAA,CAAE,IAAI,CAAA;AAEzC,IAAA,MAAMK,eAAAA,GAAiB,CAAC,IAAA,EAAc,KAAA,KAA0B;AAC9D,MAAA,OAAO,IAAI,IAAA,CAAK,IAAA,EAAM,QAAQ,CAAA,EAAG,CAAC,EAAE,OAAA,EAAQ;AAAA,IAC9C,CAAA;AAEA,IAAA,MAAMC,mBAAAA,GAAqB,CAAC,IAAA,EAAc,KAAA,KAA0B;AAClE,MAAA,OAAO,IAAI,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,CAAC,EAAE,MAAA,EAAO;AAAA,IACzC,CAAA;AAEA,IAAA,MAAMC,UAAAA,GAAY,CAAC,EAAA,EAAU,EAAA,KAAsB;AACjD,MAAA,OAAO,GAAG,WAAA,EAAY,KAAM,EAAA,CAAG,WAAA,MAC7B,EAAA,CAAG,QAAA,EAAS,KAAM,EAAA,CAAG,UAAS,IAC9B,EAAA,CAAG,OAAA,EAAQ,KAAM,GAAG,OAAA,EAAQ;AAAA,IAChC,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,CAAC,IAAA,KAAwB;AAC9C,MAAA,IAAI,CAAC,CAAA,CAAE,aAAA,EAAe,OAAO,KAAA;AAC7B,MAAA,OAAO,CAAA,CAAE,cAAc,IAAI,CAAA;AAAA,IAC7B,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAgC;AACxD,MAAA,OAAQ,CAAA,CAAE,MAAA,CAA2B,MAAA,CAAO,CAAC,KAAA,KAAyB;AACpE,QAAA,MAAM,SAAA,GAAY,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AACtC,QAAA,OAAOA,UAAAA,CAAU,MAAM,SAAS,CAAA;AAAA,MAClC,CAAC,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,WAAA,EAAa,CAAA;AACnC,MAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,QAAA,EAAS,GAAI,CAAC,CAAA;AACjC,MAAA,WAAA,CAAY,IAAI,IAAI,CAAA;AACpB,MAAA,UAAA,CAAW,IAAI,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,WAAA,EAAa,CAAA;AACnC,MAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,QAAA,EAAS,GAAI,CAAC,CAAA;AACjC,MAAA,WAAA,CAAY,IAAI,IAAI,CAAA;AACpB,MAAA,UAAA,CAAW,IAAI,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,MAAM,KAAA,uBAAY,IAAA,EAAK;AACvB,MAAA,WAAA,CAAY,IAAI,KAAK,CAAA;AACrB,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAAe;AACjC,MAAA,IAAI,cAAA,CAAe,IAAI,CAAA,EAAG;AAC1B,MAAA,WAAA,CAAY,IAAI,IAAI,CAAA;AACpB,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,IAAI,EAAE,WAAA,EAAa;AACjB,QAAA,CAAA,CAAE,YAAY,IAAI,CAAA;AAAA,MACpB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAAe;AACjC,MAAA,IAAI,EAAE,QAAA,EAAU;AACd,QAAA,CAAA,CAAE,SAAS,IAAI,CAAA;AAAA,MACjB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,EAAsB,CAAA,KAAa;AAC3D,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,IAAI,EAAE,YAAA,EAAc;AAClB,QAAA,CAAA,CAAE,aAAa,KAAK,CAAA;AAAA,MACtB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,gBAAgB,CACpB,IAAA,EACA,gBACA,OAAA,EACA,UAAA,EACA,WAAoB,KAAA,KACV;AACV,MAAA,MAAM,MAAA,GAAS,iBAAiB,IAAI,CAAA;AAEpC,MAAA,MAAM,OAAA,GAAU;AAAA,QACd,kBAAA;AAAA,QACA,CAAC,iBAAiB,wBAAA,GAA2B,EAAA;AAAA,QAC7C,UAAU,wBAAA,GAA2B,EAAA;AAAA,QACrC,aAAa,2BAAA,GAA8B,EAAA;AAAA,QAC3C,WAAW,2BAAA,GAA8B;AAAA,OAC3C,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAE1B,MAAA,MAAM,UAAA,GAAsB,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAyB;AAC/D,QAAA,MAAM,KAAA,GAAQ,MAAM,KAAA,IAAS,SAAA;AAC7B,QAAA,OAAOV,WAAAA;AAAA,UACL,KAAA;AAAA,UACA;AAAA,YACE,KAAA,EAAO,oBAAA;AAAA,YACP,KAAA,EAAO,EAAE,eAAA,EAAiB,KAAA,EAAM;AAAA,YAChC,OAAA,EAAS,CAAC,CAAA,KAAa,gBAAA,CAAiB,OAAO,CAAC;AAAA,WAClD;AAAA,UACA,CAACA,YAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,KAAA,CAAM,KAAK,CAAC,CAAC;AAAA,SAC/C;AAAA,MACF,CAAC,CAAA;AAED,MAAA,MAAM,YAAA,GAAwB;AAAA,QAC5BA,YAAY,KAAA,EAAO,EAAE,KAAA,EAAO,yBAAA,IAA6B,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,IAAA,CAAK,SAAS,CAAC,CAAC,CAAC,CAAA;AAAA,QAC1G,GAAG;AAAA,OACL;AAEA,MAAA,OAAOA,WAAAA;AAAA,QACL,KAAA;AAAA,QACA;AAAA,UACE,KAAA,EAAO,OAAA;AAAA,UACP,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI;AAAA,SAChC;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,kBAAkB,MAAa;AACnC,MAAA,MAAM,IAAA,GAAO,WAAA,EAAY,CAAE,WAAA,EAAY;AACvC,MAAA,MAAM,KAAA,GAAQ,WAAA,EAAY,CAAE,QAAA,EAAS;AACrC,MAAA,MAAM,KAAA,uBAAY,IAAA,EAAK;AAEvB,MAAA,MAAM,QAAA,GAAWS,mBAAAA,CAAmB,IAAA,EAAM,KAAK,CAAA;AAC/C,MAAA,MAAM,WAAA,GAAcD,eAAAA,CAAe,IAAA,EAAM,KAAK,CAAA;AAC9C,MAAA,MAAM,eAAA,GAAkBA,eAAAA,CAAe,IAAA,EAAM,KAAA,GAAQ,CAAC,CAAA;AAEtD,MAAA,MAAM,QAAiB,EAAC;AACxB,MAAA,IAAI,cAAuB,EAAC;AAE5B,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,CAAE,cAAA,EAAgB,CAAA,GAAI,UAAU,CAAA,EAAA,EAAK;AAChD,QAAA,MAAM,GAAA,GAAM,eAAA,IAAmB,QAAA,GAAW,CAAA,GAAI,CAAA,CAAA;AAC9C,QAAA,MAAM,OAAO,IAAI,IAAA,CAAK,IAAA,EAAM,KAAA,GAAQ,GAAG,GAAG,CAAA;AAC1C,QAAA,WAAA,CAAY,KAAK,aAAA,CAAc,IAAA,EAAM,OAAO,KAAA,EAAO,KAAA,EAAO,KAAK,CAAC,CAAA;AAAA,MAClE;AAEA,MAAA,KAAA,IAAS,GAAA,GAAM,CAAA,EAAG,GAAA,IAAO,WAAA,EAAa,GAAA,EAAA,EAAO;AAC3C,QAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,IAAA,EAAM,OAAO,GAAG,CAAA;AACtC,QAAA,MAAM,OAAA,GAAUE,UAAAA,CAAU,IAAA,EAAM,KAAK,CAAA;AACrC,QAAA,MAAM,UAAA,GAAaA,UAAAA,CAAU,IAAA,EAAM,WAAA,EAAa,CAAA;AAChD,QAAA,MAAM,QAAA,GAAW,eAAe,IAAI,CAAA;AAEpC,QAAA,WAAA,CAAY,KAAK,aAAA,CAAc,IAAA,EAAM,MAAM,OAAA,EAAS,UAAA,EAAY,QAAQ,CAAC,CAAA;AAEzE,QAAA,IAAI,WAAA,CAAY,WAAW,CAAA,EAAG;AAC5B,UAAA,KAAA,CAAM,IAAA,CAAKV,YAAY,KAAA,EAAO,EAAE,OAAO,mBAAA,EAAoB,EAAG,WAAW,CAAC,CAAA;AAC1E,UAAA,WAAA,GAAc,EAAC;AAAA,QACjB;AAAA,MACF;AAEA,MAAA,IAAI,WAAA,CAAY,SAAS,CAAA,EAAG;AAC1B,QAAA,IAAI,OAAA,GAAU,CAAA;AACd,QAAA,OAAO,WAAA,CAAY,SAAS,CAAA,EAAG;AAC7B,UAAA,MAAM,OAAO,IAAI,IAAA,CAAK,IAAA,EAAM,KAAA,GAAQ,GAAG,OAAO,CAAA;AAC9C,UAAA,WAAA,CAAY,KAAK,aAAA,CAAc,IAAA,EAAM,OAAO,KAAA,EAAO,KAAA,EAAO,KAAK,CAAC,CAAA;AAChE,UAAA,OAAA,EAAA;AAAA,QACF;AACA,QAAA,KAAA,CAAM,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,mBAAA,EAAoB,EAAG,WAAW,CAAC,CAAA;AAAA,MAC5E;AAEA,MAAA,OAAOA,YAAY,KAAA,EAAO,EAAE,KAAA,EAAO,oBAAA,IAAwB,KAAK,CAAA;AAAA,IAClE,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAa;AAClC,MAAA,OAAOA,WAAAA;AAAA,QACL,KAAA;AAAA,QACA,EAAE,OAAO,wBAAA,EAAyB;AAAA,QAClC,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,kDAAU,CAAC;AAAA,OACtC;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAa;AACjC,MAAA,OAAOA,WAAAA;AAAA,QACL,KAAA;AAAA,QACA,EAAE,OAAO,uBAAA,EAAwB;AAAA,QACjC,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,kDAAU,CAAC;AAAA,OACtC;AAAA,IACF,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,UAAU,WAAA,EAAY;AAC5B,MAAA,MAAM,cAAA,GAA0B;AAAA,QAC9BA,WAAAA,CAAY,QAAA,EAAU,EAAE,KAAA,EAAO,wBAAwB,OAAA,EAAS,SAAA,EAAU,EAAG,CAACA,YAAY,MAAA,EAAQ,EAAC,EAAG,QAAG,CAAC,CAAC,CAAA;AAAA,QAC3GA,WAAAA,CAAY,QAAA,EAAU,EAAE,KAAA,EAAO,0BAA0B,OAAA,EAAS,SAAA,EAAU,EAAG,CAACA,YAAY,MAAA,EAAQ,EAAC,EAAG,cAAI,CAAC,CAAC,CAAA;AAAA,QAC9GA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,oBAAA,IAAwB,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,CAAA,EAAG,QAAQ,WAAA,EAAa,CAAA,OAAA,EAAM,CAAA,CAAE,UAAA,CAAwB,OAAA,CAAQ,UAAU,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,QAC5JA,WAAAA,CAAY,QAAA,EAAU,EAAE,KAAA,EAAO,wBAAwB,OAAA,EAAS,SAAA,EAAU,EAAG,CAACA,YAAY,MAAA,EAAQ,EAAC,EAAG,QAAG,CAAC,CAAC;AAAA,OAC7G;AAEA,MAAA,MAAM,kBAAA,GAA+B,EAAE,SAAA,CAAuB,GAAA;AAAA,QAAI,CAAC,IAAA,KACjEA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,sBAAA,EAAuB,EAAG,CAACA,YAAY,MAAA,EAAQ,EAAC,EAAG,IAAI,CAAC,CAAC;AAAA,OACvF;AAEA,MAAA,IAAI,WAAA;AACJ,MAAA,QAAQ,aAAY;AAAG,QACrB,KAAK,MAAA;AACH,UAAA,WAAA,GAAc,cAAA,EAAe;AAC7B,UAAA;AAAA,QACF,KAAK,KAAA;AACH,UAAA,WAAA,GAAc,aAAA,EAAc;AAC5B,UAAA;AAAA,QACF,KAAK,OAAA;AAAA,QACL;AACE,UAAA,WAAA,GAAc,eAAA,EAAgB;AAAA;AAGlC,MAAA,OAAOA,WAAAA;AAAA,QACL,KAAA;AAAA,QACA;AAAA,UACE,KAAA,EAAO;AAAA,YACL,cAAA;AAAA,YACA,CAAA,aAAA,EAAgB,aAAa,CAAA,CAAA;AAAA,YAC7B,CAAA,CAAE;AAAA,WACJ,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG;AAAA,SAC5B;AAAA,QACA;AAAA,UACEA,YAAY,KAAA,EAAO,EAAE,KAAA,EAAO,qBAAA,IAAyB,cAAc,CAAA;AAAA,UACnEA,YAAY,KAAA,EAAO,EAAE,KAAA,EAAO,uBAAA,IAA2B,kBAAkB,CAAA;AAAA,UACzE;AAAA;AACF,OACF;AAAA,IACF,CAAA;AAAA,EACF;AACF,CAAC;ACzPM,IAAM,QAAQH,eAAAA,CAAgB;AAAA,EACnC,IAAA,EAAM,UAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACjC,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACjC,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,OAAA,EAAQ;AAAA,IACtC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAmC,SAAS,EAAA,EAAG;AAAA,IAC7E,MAAA,EAAQ,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAmC,SAAS,EAAA,EAAG;AAAA,IAC9E,IAAA,EAAM,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACtC,OAAA,EAAS,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IACxC,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACtC,cAAA,EAAgB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC5C,KAAA,EAAO,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACvC,MAAA,EAAQ,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAmC,SAAS,EAAA,EAAG;AAAA,IAC9E,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC7C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAChD;AAAA,EAEA,MAAM,KAAA,EAAgC;AACpC,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,QAAA,GAAWM,OAAO,KAAK,CAAA;AAC7B,IAAA,MAAM,OAAA,GAAUA,OAAO,KAAK,CAAA;AAC5B,IAAA,MAAM,gBAAA,GAAmBA,OAAO,KAAK,CAAA;AAErC,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,QAAA,CAAS,IAAI,IAAI,CAAA;AACjB,MAAA,IAAI,EAAE,MAAA,EAAQ;AACZ,QAAA,CAAA,CAAE,MAAA,EAAO;AAAA,MACX;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,OAAA,CAAQ,IAAI,IAAI,CAAA;AAChB,MAAA,IAAI,EAAE,OAAA,EAAS;AACb,QAAA,CAAA,CAAE,OAAA,EAAQ;AAAA,MACZ;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,CAAC,CAAA,CAAE,OAAA,IAAW,OAAA,EAAQ,EAAG;AAC7B,MAAA,gBAAA,CAAiB,IAAI,IAAI,CAAA;AAAA,IAC3B,CAAA;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,gBAAA,CAAiB,IAAI,KAAK,CAAA;AAAA,IAC5B,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,UAAA,GAAa;AAAA,QACjB,WAAA;AAAA,QACA,CAAA,CAAE,KAAA;AAAA,QACF,CAAA,CAAE,QAAQ,iBAAA,GAAoB;AAAA,OAChC,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAE1B,MAAA,MAAM,aAAqC,EAAC;AAC5C,MAAA,IAAI,EAAE,KAAA,EAAO;AACX,QAAA,UAAA,CAAW,KAAA,GAAQ,OAAO,CAAA,CAAE,KAAA,KAAU,WAAW,CAAA,EAAG,CAAA,CAAE,KAAK,CAAA,EAAA,CAAA,GAAO,CAAA,CAAE,KAAA;AAAA,MACtE;AACA,MAAA,IAAI,EAAE,MAAA,EAAQ;AACZ,QAAA,UAAA,CAAW,MAAA,GAAS,OAAO,CAAA,CAAE,MAAA,KAAW,WAAW,CAAA,EAAG,CAAA,CAAE,MAAM,CAAA,EAAA,CAAA,GAAO,CAAA,CAAE,MAAA;AAAA,MACzE;AACA,MAAA,IAAI,EAAE,MAAA,EAAQ;AACZ,QAAA,UAAA,CAAW,YAAA,GAAe,OAAO,CAAA,CAAE,MAAA,KAAW,WAAW,CAAA,EAAG,CAAA,CAAE,MAAM,CAAA,EAAA,CAAA,GAAO,CAAA,CAAE,MAAA;AAAA,MAC/E;AAEA,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,CAAC,QAAA,EAAS,IAAK,CAAC,SAAQ,EAAG;AAC7B,QAAA,IAAI,EAAE,cAAA,EAAgB;AACpB,UAAA,QAAA,CAAS,IAAA,CAAKH,YAAY,KAAA,EAAO;AAAA,YAC/B,KAAA,EAAO,uBAAA;AAAA,YACP,KAAK,CAAA,CAAE,cAAA;AAAA,YACP,KAAK,CAAA,CAAE,GAAA;AAAA,YACP,KAAA,EAAO,EAAE,SAAA,EAAW,CAAA,CAAE,GAAA;AAAc,WACrC,CAAC,CAAA;AAAA,QACJ,CAAA,MAAO;AACL,UAAA,QAAA,CAAS,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,yBAAwB,EAAG;AAAA,YACnEA,YAAY,KAAA,EAAO,EAAE,SAAS,aAAA,EAAe,IAAA,EAAM,gBAAe,EAAG;AAAA,cACnEA,YAAY,MAAA,EAAQ;AAAA,gBAClB,CAAA,EAAG,uFAAA;AAAA,gBACH,OAAA,EAAS;AAAA,eACV,CAAA;AAAA,cACDA,YAAY,MAAA,EAAQ;AAAA,gBAClB,CAAA,EAAG,oIAAA;AAAA,gBACH,OAAA,EAAS;AAAA,eACV;AAAA,aACF;AAAA,WACF,CAAC,CAAA;AAAA,QACJ;AAAA,MACF;AAEA,MAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,QAC/B,KAAA,EAAO,iBAAA;AAAA,QACP,KAAK,CAAA,CAAE,GAAA;AAAA,QACP,KAAK,CAAA,CAAE,GAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,WAAW,CAAA,CAAE,GAAA;AAAA,UACb,OAAA,EAAU,QAAA,EAAS,IAAK,OAAA,KAAa,OAAA,GAAU;AAAA,SACjD;AAAA,QACA,OAAA,EAAS,CAAA,CAAE,IAAA,GAAO,MAAA,GAAS,OAAA;AAAA,QAC3B,MAAA,EAAQ,UAAA;AAAA,QACR,OAAA,EAAS,WAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACV,CAAC,CAAA;AAEF,MAAA,IAAI,SAAQ,EAAG;AACb,QAAA,IAAI,EAAE,QAAA,EAAU;AACd,UAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,YAC/B,KAAA,EAAO,iBAAA;AAAA,YACP,KAAK,CAAA,CAAE,QAAA;AAAA,YACP,KAAK,CAAA,CAAE,GAAA;AAAA,YACP,KAAA,EAAO,EAAE,SAAA,EAAW,CAAA,CAAE,GAAA;AAAc,WACrC,CAAC,CAAA;AAAA,QACJ,CAAA,MAAO;AACL,UAAA,QAAA,CAAS,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,mBAAkB,EAAG;AAAA,YAC7DA,YAAY,KAAA,EAAO,EAAE,SAAS,aAAA,EAAe,IAAA,EAAM,gBAAe,EAAG;AAAA,cACnEA,WAAAA,CAAY,QAAA,EAAU,EAAE,EAAA,EAAI,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,CAAA;AAAA,cACrEA,YAAY,MAAA,EAAQ,EAAE,EAAA,EAAI,IAAA,EAAM,IAAI,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,EAAA,EAAI,MAAM,MAAA,EAAQ,cAAA,EAAgB,aAAa,GAAA,EAAK,aAAA,EAAe,SAAS,CAAA;AAAA,cAChIA,YAAY,MAAA,EAAQ,EAAE,EAAA,EAAI,IAAA,EAAM,IAAI,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,EAAA,EAAI,MAAM,MAAA,EAAQ,cAAA,EAAgB,aAAa,GAAA,EAAK,aAAA,EAAe,SAAS;AAAA,aACjI;AAAA,WACF,CAAC,CAAA;AAAA,QACJ;AAAA,MACF;AAEA,MAAA,IAAI,EAAE,OAAA,IAAW,CAAC,OAAA,EAAQ,IAAK,UAAS,EAAG;AACzC,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,UAC/B,KAAA,EAAO,2BAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACV,CAAC,CAAA;AAAA,MACJ;AAEA,MAAA,IAAI,kBAAiB,EAAG;AACtB,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,mBAAA,EAAqB,OAAA,EAAS,cAAa,EAAG;AAAA,UACtFA,YAAY,KAAA,EAAO,EAAE,OAAO,wBAAA,EAAyB,EAAG,EAAE,CAAA;AAAA,UAC1DA,YAAY,KAAA,EAAO;AAAA,YACjB,KAAA,EAAO,2BAAA;AAAA,YACP,KAAK,CAAA,CAAE,GAAA;AAAA,YACP,KAAK,CAAA,CAAE,GAAA;AAAA,YACP,OAAA,EAAS,CAAC,CAAA,KAAa,CAAA,CAAE,eAAA;AAAgB,WAC3C,EAAG,EAAE,CAAA;AAAA,UACLA,WAAAA,CAAY,QAAA,EAAU,EAAE,KAAA,EAAO,2BAA2B,OAAA,EAAS,YAAA,EAAa,EAAG,CAACA,YAAY,MAAA,EAAQ,EAAC,EAAG,MAAG,CAAC,CAAC;AAAA,SAClH,CAAC,CAAA;AAAA,MACJ;AAEA,MAAA,OAAOA,WAAAA,CAAY,OAAO,EAAE,KAAA,EAAO,YAAY,KAAA,EAAO,UAAA,IAAc,QAAQ,CAAA;AAAA,IAC9E,CAAA;AAAA,EACF;AACF,CAAC;ACrJM,IAAM,OAAOH,eAAAA,CAAgB;AAAA,EAClC,IAAA,EAAM,SAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IACvC,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC3C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC3C,KAAA,EAAO,EAAE,IAAA,EAAM,KAAA,EAAO,OAAA,EAAS,MAAgB,CAAC,cAAA,EAAM,cAAA,EAAM,cAAA,EAAM,cAAA,EAAM,cAAI,CAAA,EAAE;AAAA,IAC9E,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,QAAA,EAAI;AAAA,IACvC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,SAAA,EAAU;AAAA,IAC9C,iBAAA,EAAmB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,SAAA,EAAU;AAAA,IACtD,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GACjD;AAAA,EAEA,MAAM,KAAA,EAAgC;AACpC,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,UAAA,GAAaM,OAAO,CAAC,CAAA;AAC3B,IAAA,MAAM,UAAA,GAAaA,OAAO,KAAK,CAAA;AAE/B,IAAA,MAAM,eAAe,MAAc,UAAA,EAAW,GAAI,UAAA,KAAe,CAAA,CAAE,UAAA;AAEnE,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAA0B;AAC9C,MAAA,MAAM,QAAQ,YAAA,EAAa;AAC3B,MAAA,IAAI,KAAA,IAAS,KAAA,GAAQ,CAAA,EAAG,OAAO,oBAAA;AAC/B,MAAA,IAAI,CAAA,CAAE,SAAA,IAAa,KAAA,IAAS,KAAA,GAAQ,KAAK,OAAO,oBAAA;AAChD,MAAA,OAAO,oBAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAA0B;AAC9C,MAAA,MAAM,OAAA,GAAU,CAAC,eAAe,CAAA;AAChC,MAAA,IAAI,YAAA,CAAa,KAAK,CAAA,EAAG;AACvB,QAAA,OAAA,CAAQ,IAAA,CAAK,YAAA,CAAa,KAAK,CAAC,CAAA;AAAA,MAClC;AACA,MAAA,IAAI,CAAA,CAAE,QAAA,IAAY,CAAA,CAAE,QAAA,EAAU;AAC5B,QAAA,OAAA,CAAQ,KAAK,wBAAwB,CAAA;AAAA,MACvC;AACA,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,EAAmB,KAAA,KAAkB;AAC5D,MAAA,IAAI,CAAA,CAAE,QAAA,IAAY,CAAA,CAAE,QAAA,EAAU;AAE9B,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,IAAI,WAAW,KAAA,GAAQ,CAAA;AAEvB,MAAA,IAAI,EAAE,SAAA,EAAW;AACf,QAAA,MAAM,IAAA,GAAO,OAAO,qBAAA,EAAsB;AAC1C,QAAA,MAAM,SAAA,GAAY,KAAK,KAAA,GAAQ,CAAA;AAC/B,QAAA,IAAI,KAAA,CAAM,OAAA,GAAU,IAAA,CAAK,IAAA,GAAO,SAAA,EAAW;AACzC,UAAA,QAAA,GAAW,KAAA,GAAQ,GAAA;AAAA,QACrB;AAAA,MACF;AAEA,MAAA,UAAA,CAAW,IAAI,QAAQ,CAAA;AACvB,MAAA,UAAA,CAAW,IAAI,IAAI,CAAA;AAAA,IACrB,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,UAAA,CAAW,IAAI,KAAK,CAAA;AAAA,IACtB,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,EAAmB,KAAA,KAAkB;AACxD,MAAA,IAAI,CAAA,CAAE,QAAA,IAAY,CAAA,CAAE,QAAA,EAAU;AAE9B,MAAA,IAAI,WAAW,KAAA,GAAQ,CAAA;AAEvB,MAAA,IAAI,EAAE,SAAA,EAAW;AACf,QAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,QAAA,MAAM,IAAA,GAAO,OAAO,qBAAA,EAAsB;AAC1C,QAAA,MAAM,SAAA,GAAY,KAAK,KAAA,GAAQ,CAAA;AAC/B,QAAA,IAAI,KAAA,CAAM,OAAA,GAAU,IAAA,CAAK,IAAA,GAAO,SAAA,EAAW;AACzC,UAAA,QAAA,GAAW,KAAA,GAAQ,GAAA;AAAA,QACrB;AAAA,MACF;AAEA,MAAA,IAAI,EAAE,QAAA,EAAU;AACd,QAAA,CAAA,CAAE,SAAS,QAAQ,CAAA;AAAA,MACrB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,UAAU,MAAc;AAC5B,MAAA,MAAM,KAAA,GAAS,CAAA,CAAE,KAAA,IAAsB,EAAC;AACxC,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,YAAA,EAAc,CAAA,GAAI,CAAA;AAC3C,MAAA,OAAO,KAAA,CAAM,KAAK,CAAA,IAAK,EAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,WAAW,MAAc;AAC7B,MAAA,OAAO,YAAA,EAAa,CAAE,OAAA,CAAQ,CAAC,CAAA;AAAA,IACjC,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,YAAqB,EAAC;AAE5B,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,KAAK,CAAA,EAAA,EAAK;AAC9B,QAAA,SAAA,CAAU,IAAA;AAAA,UACRH,YAAY,MAAA,EAAQ;AAAA,YAClB,KAAA,EAAO,aAAa,CAAC,CAAA;AAAA,YACrB,GAAA,EAAK,CAAA;AAAA,YACL,WAAA,EAAa,CAAC,CAAA,KAAkB,eAAA,CAAgB,GAAG,CAAC,CAAA;AAAA,YACpD,YAAA,EAAc,gBAAA;AAAA,YACd,OAAA,EAAS,CAAC,CAAA,KAAkB,WAAA,CAAY,GAAG,CAAC;AAAA,WAC9C,EAAG;AAAA,YACDA,YAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,qBAAA,IAAyB,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;AAAA,YACnGA,WAAAA,CAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,sBAAA,EAAuB,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,QAAG,CAAC,CAAC;AAAA,WACtF;AAAA,SACH;AAAA,MACF;AAEA,MAAA,MAAM,QAAA,GAAoB,CAAC,GAAG,SAAS,CAAA;AAEvC,MAAA,IAAI,EAAE,QAAA,EAAU;AACd,QAAA,QAAA,CAAS,KAAKA,WAAAA,CAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,iBAAgB,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,OAAA,EAAS,CAAC,CAAC,CAAC,CAAA;AAAA,MACrG;AAEA,MAAA,IAAI,EAAE,SAAA,EAAW;AACf,QAAA,QAAA,CAAS,KAAKA,WAAAA,CAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,kBAAiB,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,QAAA,EAAU,CAAC,CAAC,CAAC,CAAA;AAAA,MACvG;AAEA,MAAA,OAAOA,YAAY,KAAA,EAAO;AAAA,QACxB,KAAA,EAAO;AAAA,UACL,UAAA;AAAA,UACA,CAAA,CAAE,KAAA;AAAA,UACD,CAAA,CAAE,QAAA,IAAY,CAAA,CAAE,QAAA,GAAY,mBAAA,GAAsB;AAAA,SACrD,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG;AAAA,SACzB,QAAQ,CAAA;AAAA,IACb,CAAA;AAAA,EACF;AACF,CAAC;ACpID,IAAM,eAAA,GAAkB;AAAA,EACtB,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,SAAA;AAAA,EACjC,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,SAAA;AAAA,EACjC,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,SAAA;AAAA,EACjC,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW;AACnC,CAAA;AAEO,IAAM,cAAcH,eAAAA,CAAgB;AAAA,EACzC,IAAA,EAAM,gBAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,SAAA,EAAU;AAAA,IAC/C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC3C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC1C,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC3C,WAAA,EAAa,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC5C,SAAS,EAAE,IAAA,EAAM,KAAA,EAAO,OAAA,EAAS,MAAM,eAAA,EAAgB;AAAA,IACvD,SAAS,EAAE,IAAA,EAAM,OAAO,OAAA,EAAS,MAAM,EAAC,EAAE;AAAA,IAC1C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAChD;AAAA,EAEA,MAAM,KAAA,EAAgC;AACpC,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AACtC,IAAA,MAAM,UAAA,GAAaA,OAAO,GAAG,CAAA;AAC7B,IAAA,MAAM,iBAAA,GAAoBA,OAAO,EAAE,CAAA;AACnC,IAAA,MAAM,gBAAA,GAAmBA,OAAO,EAAE,CAAA;AAClC,IAAA,MAAM,YAAA,GAAeA,OAAO,GAAG,CAAA;AAC/B,IAAA,MAAM,YAAA,GAAeA,OAAiB,CAAC,GAAI,EAAE,OAAA,IAAW,EAAG,CAAC,CAAA;AAC5D,IAAA,MAAM,eAAA,GAAkBA,MAAAA,CAAO,CAAA,CAAE,UAAU,CAAA;AAE3C,IAAA,MAAM,QAAA,GAAW,CAAC,GAAA,KAAgB;AAChC,MAAA,IAAI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA;AAEtB,MAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG;AACpB,QAAA,CAAA,GAAI,QAAA,CAAS,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,EAAE,CAAA;AAChD,QAAA,CAAA,GAAI,QAAA,CAAS,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,EAAE,CAAA;AAChD,QAAA,CAAA,GAAI,QAAA,CAAS,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,MAClD,CAAA,MAAA,IAAW,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG;AAC3B,QAAA,CAAA,GAAI,QAAA,CAAS,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,EAAE,CAAA;AAChD,QAAA,CAAA,GAAI,QAAA,CAAS,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,EAAE,CAAA;AAChD,QAAA,CAAA,GAAI,QAAA,CAAS,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,MAClD;AAEA,MAAA,CAAA,IAAK,GAAA;AAAK,MAAA,CAAA,IAAK,GAAA;AAAK,MAAA,CAAA,IAAK,GAAA;AACzB,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAG,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACrD,MAAA,IAAI,IAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,GAAA,CAAK,MAAM,GAAA,IAAO,CAAA;AAEpC,MAAA,IAAI,QAAQ,GAAA,EAAK;AACf,QAAA,MAAM,IAAI,GAAA,GAAM,GAAA;AAChB,QAAA,CAAA,GAAI,IAAI,GAAA,GAAM,CAAA,IAAK,IAAI,GAAA,GAAM,GAAA,CAAA,GAAO,KAAK,GAAA,GAAM,GAAA,CAAA;AAC/C,QAAA,QAAQ,GAAA;AAAK,UACX,KAAK,CAAA;AAAG,YAAA,CAAA,GAAA,CAAK,CAAA,GAAI,CAAA,IAAK,CAAA,IAAK,CAAA,GAAI,IAAI,CAAA,GAAI,CAAA,CAAA;AAAI,YAAA;AAAA,UAC3C,KAAK,CAAA;AAAG,YAAA,CAAA,GAAA,CAAK,CAAA,GAAI,KAAK,CAAA,GAAI,CAAA;AAAG,YAAA;AAAA,UAC7B,KAAK,CAAA;AAAG,YAAA,CAAA,GAAA,CAAK,CAAA,GAAI,KAAK,CAAA,GAAI,CAAA;AAAG,YAAA;AAAA;AAE/B,QAAA,CAAA,IAAK,EAAA;AAAA,MACP;AAEA,MAAA,OAAO,EAAE,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,CAAC,GAAG,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,GAAG,CAAA,EAAG,CAAA,EAAG,KAAK,KAAA,CAAM,CAAA,GAAI,GAAG,CAAA,EAAE;AAAA,IAC5E,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,GAAA,KAAgB;AACxC,MAAA,IAAI;AACF,QAAA,MAAM,GAAA,GAAM,SAAS,GAAG,CAAA;AACxB,QAAA,UAAA,CAAW,GAAA,CAAI,IAAI,CAAC,CAAA;AACpB,QAAA,iBAAA,CAAkB,GAAA,CAAI,IAAI,CAAC,CAAA;AAC3B,QAAA,gBAAA,CAAiB,GAAA,CAAI,IAAI,CAAC,CAAA;AAAA,MAC5B,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,QAAA,GAAW,CAAC,CAAA,EAAW,CAAA,EAAW,CAAA,KAAwB;AAC9D,MAAA,CAAA,IAAK,GAAA;AAAK,MAAA,CAAA,IAAK,GAAA;AACf,MAAA,MAAM,CAAA,GAAI,CAAC,CAAA,KAAA,CAAe,CAAA,GAAI,IAAI,EAAA,IAAM,EAAA;AACxC,MAAA,MAAM,IAAI,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAI,CAAC,CAAA;AAC/B,MAAA,MAAM,CAAA,GAAI,CAAC,CAAA,KAAc,CAAA,GAAI,IAAI,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA,EAAG,KAAK,GAAA,CAAI,CAAA,GAAI,EAAE,CAAC,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AACvF,MAAA,OAAO;AAAA,QACL,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,CAAC,IAAI,GAAG,CAAA;AAAA,QACrB,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,CAAC,IAAI,GAAG,CAAA;AAAA,QACrB,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,CAAC,IAAI,GAAG;AAAA,OACvB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,QAAA,GAAW,CAAC,CAAA,EAAW,CAAA,EAAW,CAAA,KAAsB;AAC5D,MAAA,OAAO,GAAA,GAAM,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAc;AACxC,QAAA,MAAM,GAAA,GAAM,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA;AACzB,QAAA,OAAO,GAAA,CAAI,MAAA,KAAW,CAAA,GAAI,GAAA,GAAM,GAAA,GAAM,GAAA;AAAA,MACxC,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAAA,IACZ,CAAA;AAEA,IAAA,MAAM,kBAAkB,MAAc;AACpC,MAAA,MAAM,MAAM,QAAA,CAAS,UAAA,IAAc,iBAAA,EAAkB,EAAG,kBAAkB,CAAA;AAC1E,MAAA,MAAM,CAAA,GAAI,GAAA,CAAI,CAAC,CAAA,IAAK,CAAA;AACpB,MAAA,MAAM,CAAA,GAAI,GAAA,CAAI,CAAC,CAAA,IAAK,CAAA;AACpB,MAAA,MAAM,CAAA,GAAI,GAAA,CAAI,CAAC,CAAA,IAAK,CAAA;AACpB,MAAA,IAAI,EAAE,SAAA,EAAW;AACf,QAAA,OAAO,CAAA,KAAA,EAAQ,CAAC,CAAA,EAAA,EAAK,CAAC,KAAK,CAAC,CAAA,EAAA,EAAK,YAAA,EAAa,GAAI,GAAG,CAAA,CAAA,CAAA;AAAA,MACvD;AACA,MAAA,OAAO,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAkB;AACtC,MAAA,MAAM,OAAA,GAAU,CAAC,GAAG,YAAA,EAAc,CAAA;AAClC,MAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA;AACnC,MAAA,IAAI,KAAA,GAAQ,EAAA,EAAI,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAC,CAAA;AACvC,MAAA,OAAA,CAAQ,QAAQ,KAAK,CAAA;AACrB,MAAA,IAAI,OAAA,CAAQ,MAAA,GAAS,EAAA,EAAI,OAAA,CAAQ,GAAA,EAAI;AACrC,MAAA,YAAA,CAAa,IAAI,OAAO,CAAA;AAAA,IAC1B,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAAkB;AAC1C,MAAA,iBAAA,CAAkB,IAAI,KAAK,CAAA;AAC3B,MAAA,eAAA,CAAgB,IAAI,KAAK,CAAA;AACzB,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB,CAAA;AAEA,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAkB;AAC3C,MAAA,gBAAA,CAAiB,KAAK,CAAA;AACtB,MAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,IACxB,CAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,iBAAA,CAAkB,IAAI,KAAK,CAAA;AAC3B,MAAA,IAAI,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,OAAA,EAAQ;AAAA,IAC3B,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,IAAI,CAAC,CAAA,CAAE,SAAA,IAAa,iBAAA,EAAkB,EAAG;AACvC,QAAA,iBAAA,CAAkB,GAAA,CAAI,CAAC,iBAAA,EAAmB,CAAA;AAAA,MAC5C;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAAiB;AACzC,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,eAAA,CAAgB,GAAA,CAAI,OAAO,KAAK,CAAA;AAAA,IAClC,CAAA;AAEA,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAiB;AAC1C,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,MAAM,QAAQ,MAAA,CAAO,KAAA;AACrB,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,MACxB;AAAA,IACF,CAAA;AAEA,IAAA,IAAI,UAAA,GAAa,KAAA;AAEjB,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,EAAmB,IAAA,KAAyC;AACrF,MAAA,UAAA,GAAa,IAAA;AACb,MAAA,gBAAA,CAAiB,OAAO,IAAI,CAAA;AAAA,IAC9B,CAAA;AAEA,IAAA,MAAM,qBAAA,GAAwB,CAAC,KAAA,EAAmB,IAAA,KAAyC;AACzF,MAAA,IAAI,CAAC,UAAA,EAAY;AACjB,MAAA,gBAAA,CAAiB,OAAO,IAAI,CAAA;AAAA,IAC9B,CAAA;AAEA,IAAA,MAAM,sBAAsB,MAAM;AAChC,MAAA,UAAA,GAAa,KAAA;AAAA,IACf,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,EAAmB,IAAA,KAAyC;AACpF,MAAA,MAAM,IAAA,GAAQ,KAAA,CAAM,MAAA,CAAuB,qBAAA,EAAsB;AACjE,MAAA,IAAI,CAAA,GAAI,KAAA,CAAM,OAAA,GAAU,IAAA,CAAK,IAAA;AAC7B,MAAA,CAAA,GAAI,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,CAAK,IAAI,IAAA,CAAK,KAAA,EAAO,CAAC,CAAC,CAAA;AAEvC,MAAA,IAAI,SAAS,KAAA,EAAO;AAClB,QAAA,MAAM,SAAS,IAAA,CAAK,KAAA,CAAO,CAAA,GAAI,IAAA,CAAK,QAAS,GAAG,CAAA;AAChD,QAAA,UAAA,CAAW,IAAI,MAAM,CAAA;AACrB,QAAA,eAAA,CAAgB,GAAA,CAAI,iBAAiB,CAAA;AAAA,MACvC,CAAA,MAAA,IAAW,SAAS,OAAA,EAAS;AAC3B,QAAA,MAAM,WAAW,IAAA,CAAK,KAAA,CAAO,CAAA,GAAI,IAAA,CAAK,QAAS,GAAG,CAAA;AAClD,QAAA,YAAA,CAAa,IAAI,QAAQ,CAAA;AACzB,QAAA,eAAA,CAAgB,GAAA,CAAI,iBAAiB,CAAA;AAAA,MACvC,CAAA,MAAA,IAAW,SAAS,YAAA,EAAc;AAChC,QAAA,IAAI,CAAA,GAAI,KAAA,CAAM,OAAA,GAAU,IAAA,CAAK,GAAA;AAC7B,QAAA,CAAA,GAAI,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,CAAK,IAAI,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAC,CAAA;AACxC,QAAA,MAAM,SAAS,IAAA,CAAK,KAAA,CAAO,CAAA,GAAI,IAAA,CAAK,QAAS,GAAG,CAAA;AAChD,QAAA,MAAM,WAAW,IAAA,CAAK,KAAA,CAAM,MAAO,CAAA,GAAI,IAAA,CAAK,SAAU,GAAG,CAAA;AACzD,QAAA,iBAAA,CAAkB,IAAI,MAAM,CAAA;AAC5B,QAAA,gBAAA,CAAiB,IAAI,QAAQ,CAAA;AAC7B,QAAA,eAAA,CAAgB,GAAA,CAAI,iBAAiB,CAAA;AAAA,MACvC;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,sBAAsB,MAAc;AACxC,MAAA,MAAM,OAAA,GAAU,CAAC,kBAAkB,CAAA;AACnC,MAAA,IAAI,CAAA,CAAE,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,EAAE,KAAe,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,oBAA6B,EAAC;AACpC,MAAA,iBAAA,CAAkB,IAAA,CAAKH,YAAY,KAAA,EAAO;AAAA,QACxC,KAAA,EAAO,0BAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,IAAA,EAAM,CAAA,EAAG,iBAAA,EAAmB,CAAA,CAAA,CAAA;AAAA,UAC5B,GAAA,EAAK,CAAA,EAAG,GAAA,GAAM,gBAAA,EAAkB,CAAA,CAAA;AAAA;AAClC,OACD,CAAC,CAAA;AAEF,MAAA,MAAM,cAAuB,EAAC;AAC9B,MAAA,WAAA,CAAY,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,QAClC,KAAA,EAAO,0BAAA;AAAA,QACP,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAI,YAAW,GAAI,GAAA,GAAO,GAAG,CAAA,CAAA,CAAA;AAAI,OACjD,CAAC,CAAA;AAEF,MAAA,MAAM,mBAA4B,EAAC;AACnC,MAAA,gBAAA,CAAiB,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,QACvC,KAAA,EAAO,6BAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,UAAA,EAAY,CAAA;AAAA,wEAAA,EACoD,YAAY,CAAA,aAAA;AAAA,SAC9E;AAAA,QACA,WAAA,EAAa,CAAC,CAAA,KAAkB,iBAAA,CAAkB,GAAG,YAAY,CAAA;AAAA,QACjE,WAAA,EAAa,CAAC,CAAA,KAAkB,qBAAA,CAAsB,GAAG,YAAY,CAAA;AAAA,QACrE,SAAA,EAAW,mBAAA;AAAA,QACX,YAAA,EAAc;AAAA,OAChB,EAAG,iBAAiB,CAAC,CAAA;AAErB,MAAA,MAAM,YAAqB,EAAC;AAC5B,MAAA,SAAA,CAAU,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,QAChC,KAAA,EAAO,6BAAA;AAAA,QACP,WAAA,EAAa,CAAC,CAAA,KAAkB,iBAAA,CAAkB,GAAG,KAAK,CAAA;AAAA,QAC1D,WAAA,EAAa,CAAC,CAAA,KAAkB,qBAAA,CAAsB,GAAG,KAAK,CAAA;AAAA,QAC9D,SAAA,EAAW,mBAAA;AAAA,QACX,YAAA,EAAc;AAAA,OAChB,EAAG,WAAW,CAAC,CAAA;AAEf,MAAA,MAAM,gBAAyB,EAAC;AAChC,MAAA,aAAA,CAAc,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,QACpC,KAAA,EAAO,0BAAA;AAAA,QACP,OAAO,EAAE,IAAA,EAAM,CAAA,EAAG,YAAA,EAAc,CAAA,CAAA,CAAA;AAAI,OACrC,CAAC,CAAA;AAEF,MAAA,MAAM,cAAuB,EAAC;AAC9B,MAAA,WAAA,CAAY,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,QAClC,KAAA,EAAO,+BAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,YAAY,CAAA,uCAAA,EAA0C,QAAA,CAAS,YAAW,EAAG,iBAAA,IAAqB,gBAAA,EAAkB,EAAE,GAAA,CAAI,CAAC,MAAc,CAAA,IAAA,EAAO,CAAC,GAAG,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAAA,SACjK;AAAA,QACA,WAAA,EAAa,CAAC,CAAA,KAAkB,iBAAA,CAAkB,GAAG,OAAO,CAAA;AAAA,QAC5D,WAAA,EAAa,CAAC,CAAA,KAAkB,qBAAA,CAAsB,GAAG,OAAO,CAAA;AAAA,QAChE,SAAA,EAAW,mBAAA;AAAA,QACX,YAAA,EAAc;AAAA,OAChB,EAAG,aAAa,CAAC,CAAA;AAEjB,MAAA,MAAM,eAAwB,EAAC;AAC/B,MAAA,MAAM,OAAA,GAAW,EAAE,OAAA,IAAW,eAAA;AAC9B,MAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,EAAe,KAAA,KAAkB;AAChD,QAAA,YAAA,CAAa,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UACpC,KAAA,EAAO,wBAAA;AAAA,UACP,GAAA,EAAK,KAAA;AAAA,UACL,KAAA,EAAO,EAAE,eAAA,EAAiB,KAAA,EAAM;AAAA,UAChC,OAAA,EAAS,MAAM,iBAAA,CAAkB,KAAK;AAAA,SACvC,CAAC,CAAA;AAAA,MACJ,CAAC,CAAA;AAED,MAAA,MAAM,gBAAyB,EAAC;AAChC,MAAA,MAAM,UAAU,YAAA,EAAa;AAC7B,MAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,EAAe,KAAA,KAAkB;AAChD,QAAA,aAAA,CAAc,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UACrC,KAAA,EAAO,wBAAA;AAAA,UACP,GAAA,EAAK,KAAA;AAAA,UACL,KAAA,EAAO,EAAE,eAAA,EAAiB,KAAA,EAAM;AAAA,UAChC,OAAA,EAAS,MAAM,gBAAA,CAAiB,KAAK;AAAA,SACtC,CAAC,CAAA;AAAA,MACJ,CAAC,CAAA;AAED,MAAA,MAAM,iBAA0B,EAAC;AAEjC,MAAA,MAAM,gBAAyB,EAAC;AAChC,MAAA,aAAA,CAAc,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,QACpC,KAAA,EAAO;AAAA,OACT,EAAG,gBAAgB,CAAC,CAAA;AACpB,MAAA,aAAA,CAAc,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,sBAAA,EAAuB,EAAG,SAAS,CAAC,CAAA;AACnF,MAAA,IAAI,EAAE,SAAA,EAAW;AACf,QAAA,aAAA,CAAc,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,wBAAA,EAAyB,EAAG,WAAW,CAAC,CAAA;AAAA,MACzF;AAEA,MAAA,cAAA,CAAe,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,wBAAA,EAAyB,EAAG,aAAa,CAAC,CAAA;AAE1F,MAAA,MAAM,gBAAyB,EAAC;AAChC,MAAA,aAAA,CAAc,IAAA,CAAKA,YAAY,OAAA,EAAS;AAAA,QACtC,IAAA,EAAM,MAAA;AAAA,QACN,OAAO,eAAA,EAAgB;AAAA,QACvB,OAAA,EAAS,gBAAA;AAAA,QACT,QAAA,EAAU,iBAAA;AAAA,QACV,WAAA,EAAa;AAAA,OACd,CAAC,CAAA;AACF,MAAA,aAAA,CAAc,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,QACrC,KAAA,EAAO,0BAAA;AAAA,QACP,KAAA,EAAO,EAAE,eAAA,EAAiB,eAAA,EAAgB;AAAE,OAC7C,CAAC,CAAA;AACF,MAAA,aAAA,CAAc,IAAA,CAAKA,YAAY,QAAA,EAAU;AAAA,QACvC,KAAA,EAAO,0BAAA;AAAA,QACP,OAAA,EAAS,MAAM,gBAAA,CAAiB,eAAA,EAAiB;AAAA,OACnD,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,cAAI,CAAC,CAAC,CAAC,CAAA;AAEnC,MAAA,cAAA,CAAe,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,wBAAA,EAAyB,EAAG,aAAa,CAAC,CAAA;AAE1F,MAAA,IAAI,EAAE,UAAA,EAAY;AAChB,QAAA,MAAM,iBAA0B,EAAC;AACjC,QAAA,cAAA,CAAe,IAAA,CAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,OAAO,wBAAA,EAAyB,EAAG,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAG,0BAAM,CAAC,CAAC,CAAC,CAAA;AAC9G,QAAA,cAAA,CAAe,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,0BAAA,EAA2B,EAAG,YAAY,CAAC,CAAA;AAC3F,QAAA,cAAA,CAAe,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,0BAAA,EAA2B,EAAG,cAAc,CAAC,CAAA;AAAA,MAC/F;AAEA,MAAA,IAAI,CAAA,CAAE,WAAA,IAAe,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AACvC,QAAA,MAAM,kBAA2B,EAAC;AAClC,QAAA,eAAA,CAAgB,IAAA,CAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,OAAO,wBAAA,EAAyB,EAAG,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAG,0BAAM,CAAC,CAAC,CAAC,CAAA;AAC/G,QAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,0BAAA,EAA2B,EAAG,aAAa,CAAC,CAAA;AAC7F,QAAA,cAAA,CAAe,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,0BAAA,EAA2B,EAAG,eAAe,CAAC,CAAA;AAAA,MAChG;AAEA,MAAA,MAAM,kBAA2B,EAAC;AAClC,MAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,QACtC,KAAA,EAAO,0BAAA;AAAA,QACP,KAAA,EAAO,EAAE,eAAA,EAAiB,CAAA,CAAE,cAAc,aAAA;AAAc,OACzD,CAAC,CAAA;AAEF,MAAA,IAAI,CAAA,CAAE,SAAA,IAAa,CAAA,CAAE,UAAA,EAAY;AAC/B,QAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UACvC,KAAA,EAAO,wBAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAG,CAAC,CAAC,CAAC,CAAA;AAAA,MACpC;AAEA,MAAA,eAAA,CAAgB,IAAA,CAAKA,WAAAA,CAAY,MAAA,EAAQ,EAAE,OAAO,wBAAA,EAAyB,EAAG,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAG,QAAG,CAAC,CAAC,CAAC,CAAA;AAE7G,MAAA,MAAM,UAAmB,EAAC;AAC1B,MAAA,OAAA,CAAQ,IAAA,CAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,4BAA4B,OAAA,EAAS,cAAA,EAAe,EAAG,eAAe,CAAC,CAAA;AAEhH,MAAA,IAAI,mBAAkB,EAAG;AACvB,QAAA,OAAA,CAAQ,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,2BAAA,EAA4B,EAAG,cAAc,CAAC,CAAA;AAAA,MACzF;AAEA,MAAA,OAAOA,YAAY,KAAA,EAAO,EAAE,OAAO,mBAAA,EAAoB,IAAK,OAAO,CAAA;AAAA,IACrE,CAAA;AAAA,EACF;AACF,CAAC;ACpVM,IAAM,OAAOH,eAAAA,CAAgB;AAAA,EAClC,IAAA,EAAM,SAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAClC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAO;AAAA,IACtC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,IAAA,EAAM,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACtC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GAC/C;AAAA,EAEA,KAAA,CAAM,KAAA,EAAY,EAAE,KAAA,EAAM,EAAQ;AAChC,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,MAAM,OAAA,GAAU,CAAC,UAAU,CAAA;AAC3B,MAAA,IAAI,MAAM,IAAA,EAAM,OAAA,CAAQ,KAAK,CAAA,UAAA,EAAa,KAAA,CAAM,IAAI,CAAA,CAAE,CAAA;AACtD,MAAA,IAAI,KAAA,CAAM,IAAA,EAAM,OAAA,CAAQ,IAAA,CAAK,gBAAgB,CAAA;AAC7C,MAAA,IAAI,KAAA,CAAM,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,KAAK,CAAA;AACzC,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,KAAA,CAAM,IAAA,EAAM,KAAA,CAAM,QAAA,GAAW,KAAA,CAAM,IAAA;AACvC,MAAA,IAAI,KAAA,CAAM,KAAA,EAAO,KAAA,CAAM,KAAA,GAAQ,KAAA,CAAM,KAAA;AACrC,MAAA,IAAI,MAAM,KAAA,EAAO;AACf,QAAA,IAAIC,QAAAA,CAAS,KAAA,CAAM,KAAK,CAAA,EAAG;AAEzB,UAAA,OAAO,KAAA,CAAM,KAAA;AAAA,QACf;AACA,QAAA,IAAIC,QAAAA,CAAS,KAAA,CAAM,KAAK,CAAA,EAAG;AACzB,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,KAAA,CAAM,KAAK,CAAA;AAAA,QAClC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,QAAA,CAAS,IAAA,CAAK,GAAG,KAAA,CAAM,OAAA,EAAS,CAAA;AAAA,MAClC;AAEA,MAAA,OAAOC,WAAAA,CAAY,KAAKC,cAAAA,CAAe;AAAA,QACrC,IAAI,KAAA,CAAM,EAAA;AAAA,QACV,cAAc,KAAA,CAAM,SAAA;AAAA,QACpB,oBAAoB,KAAA,CAAM;AAAA,OAC5B,EAAG;AAAA,QACD,OAAO,YAAA,EAAa;AAAA,QACpB,OAAO,YAAA;AAAa,OACrB,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;AC7DM,IAAM,QAAQJ,eAAAA,CAAgB;AAAA,EACnC,IAAA,EAAM,UAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IAClC,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACtC,GAAA,EAAK,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACrC,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,QAAA,EAAS;AAAA,IACxC,MAAA,EAAQ,EAAE,IAAA,EAAM,KAAA,EAAO,SAAS,MAAA,EAAU;AAAA,IAC1C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GAC/C;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAA0B;AACtE,IAAA,MAAM,CAAA,GAAI,KAAA;AAEV,IAAA,MAAM,eAAe,MAAc;AACjC,MAAA,IAAI,CAAA,CAAE,KAAK,OAAO,EAAA;AAClB,MAAA,IAAI,EAAE,KAAA,GAAQ,CAAA,CAAE,UAAU,OAAO,CAAA,EAAG,EAAE,QAAQ,CAAA,CAAA,CAAA;AAC9C,MAAA,OAAO,MAAA,CAAO,EAAE,KAAK,CAAA;AAAA,IACvB,CAAA;AAEA,IAAA,MAAM,YAAY,MAAe;AAC/B,MAAA,IAAI,CAAA,CAAE,KAAK,OAAO,IAAA;AAClB,MAAA,IAAI,CAAA,CAAE,KAAA,KAAU,CAAA,EAAG,OAAO,CAAA,CAAE,QAAA;AAC5B,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAA8B;AAClD,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,EAAE,MAAA,EAAQ;AACZ,QAAA,KAAA,CAAM,GAAA,GAAM,CAAA,EAAG,CAAA,CAAE,MAAA,CAAO,CAAC,CAAC,CAAA,EAAA,CAAA;AAC1B,QAAA,KAAA,CAAM,KAAA,GAAQ,CAAA,EAAG,CAAA,CAAE,MAAA,CAAO,CAAC,CAAC,CAAA,EAAA,CAAA;AAAA,MAC9B;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,QAAA,CAAS,IAAA,CAAK,GAAG,KAAA,CAAM,OAAA,EAAS,CAAA;AAAA,MAClC;AAEA,MAAA,IAAI,WAAU,EAAG;AACf,QAAA,QAAA,CAAS,IAAA,CAAKG,YAAY,KAAA,EAAO;AAAA,UAC/B,KAAA,EAAO;AAAA,YACL,kBAAA;AAAA,YACA,CAAA,kBAAA,EAAqB,EAAE,IAAI,CAAA,CAAA;AAAA,YAC3B,CAAA,CAAE,MAAM,uBAAA,GAA0B;AAAA,WACpC,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,UAC1B,OAAO,aAAA;AAAc,SACvB,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,CAAA,CAAE,GAAA,GAAM,EAAA,GAAK,YAAA,EAAc,CAAC,CAAC,CAAC,CAAA;AAAA,MAC5D;AAEA,MAAA,OAAOA,WAAAA,CAAY,QAAQC,cAAAA,CAAe;AAAA,QACxC,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,cAAc,CAAA,CAAE,SAAA;AAAA,QAChB,oBAAoB,CAAA,CAAE;AAAA,OACxB,EAAG;AAAA,QACD,KAAA,EAAO;AAAA,UACL,WAAA;AAAA,UACA,CAAA,CAAE;AAAA,SACJ,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG;AAAA,OAC3B,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;AClEM,IAAM,MAAMJ,eAAAA,CAAgB;AAAA,EACjC,IAAA,EAAM,QAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,SAAA,EAAU;AAAA,IACzC,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,QAAA,EAAS;AAAA,IACxC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAChD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAO,MAAK,EAAG;AACrD,IAAA,MAAM,MAAA,GAAS,KAAA;AACf,IAAA,MAAM,QAAQ,QAAA,CAAS;AAAA,MACrB,OAAA,EAAS;AAAA,KACV,CAAA;AAED,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAa;AAChC,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,KAAA,CAAM,OAAA,GAAU,KAAA;AAChB,MAAA,IAAA,CAAK,OAAO,CAAA;AACZ,MAAA,MAAA,CAAO,OAAA,IAAU;AAAA,IACnB,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,MAAM,OAAA,GAAU,CAAC,SAAS,CAAA;AAC1B,MAAA,IAAI,MAAA,CAAO,SAAS,SAAA,EAAW,OAAA,CAAQ,KAAK,CAAA,SAAA,EAAY,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AACrE,MAAA,IAAI,MAAA,CAAO,SAAS,QAAA,EAAU,OAAA,CAAQ,KAAK,CAAA,SAAA,EAAY,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AACpE,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,iBAAiB,CAAA;AAChD,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,KAAA,CAAM,eAAA,GAAkB,OAAO,KAAA,GAAQ,IAAA;AACvC,QAAA,KAAA,CAAM,cAAc,MAAA,CAAO,KAAA;AAC3B,QAAA,KAAA,CAAM,QAAQ,MAAA,CAAO,KAAA;AAAA,MACvB;AACA,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,CAAC,KAAA,CAAM,OAAA,EAAS,OAAOC,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,gBAAA,EAAiB,EAAG,EAAE,CAAA;AAE7E,MAAA,MAAM,WAAoB,EAAC;AAG3B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,QAAA,CAAS,IAAA,CAAK,GAAI,WAAuB,CAAA;AAAA,QAC3C;AAAA,MACF;AAGA,MAAA,IAAI,OAAO,QAAA,EAAU;AACnB,QAAA,MAAM,aAAA,GAAgBE,kBAAAA,CAAmB,EAAE,SAAA,EAAW,4BAAQ,CAAA;AAC9D,QAAA,QAAA,CAAS,IAAA,CAAKF,WAAAA,CAAY,MAAA,EAAQC,cAAAA,CAAe,aAAA,EAAe;AAAA,UAC9D,KAAA,EAAO,gBAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACV,CAAA,EAAG,CAACD,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,SAAS,CAAC,CAAC,CAAC,CAAA;AAAA,MAC3C;AAEA,MAAA,OAAOA,WAAAA,CAAY,QAAQC,cAAAA,CAAe;AAAA,QACxC,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,cAAc,MAAA,CAAO,SAAA;AAAA,QACrB,oBAAoB,MAAA,CAAO;AAAA,OAC7B,EAAG;AAAA,QACD,OAAO,WAAA,EAAY;AAAA,QACnB,OAAO,WAAA;AAAY,OACpB,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;ACxFM,IAAM,OAAOJ,eAAAA,CAAgB;AAAA,EAClC,IAAA,EAAM,SAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IACzC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,SAAA,EAAU;AAAA,IACzC,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACjC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IAClC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GAC/C;AAAA,EAEA,KAAA,CAAM,KAAA,EAAY,EAAE,KAAA,EAAM,EAAQ;AAChC,IAAA,MAAM,QAAQc,QAAAA,CAAS;AAAA,MACrB,SAAS,KAAA,CAAM;AAAA,KAChB,CAAA;AAED,IAAA,IAAI,UAAA,GAAmD,IAAA;AAGvD,IAAAC,KAAAA,CAAM,MAAM,KAAA,CAAM,QAAA,EAAU,CAAC,GAAA,KAAa;AACxC,MAAA,IAAI,UAAA,eAAyB,UAAU,CAAA;AACvC,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,IAAI,KAAA,CAAM,QAAQ,CAAA,EAAG;AACnB,UAAA,UAAA,GAAa,WAAW,MAAM;AAC5B,YAAA,KAAA,CAAM,OAAA,GAAU,IAAA;AAAA,UAClB,CAAA,EAAG,MAAM,KAAK,CAAA;AAAA,QAChB,CAAA,MAAO;AACL,UAAA,KAAA,CAAM,OAAA,GAAU,IAAA;AAAA,QAClB;AAAA,MACF,CAAA,MAAO;AACL,QAAA,KAAA,CAAM,OAAA,GAAU,KAAA;AAAA,MAClB;AAAA,IACF,CAAC,CAAA;AAED,IAAA,WAAA,CAAY,MAAM;AAChB,MAAA,IAAI,UAAA,eAAyB,UAAU,CAAA;AAAA,IACzC,CAAC,CAAA;AAED,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,MAAM,OAAA,GAAU,CAAC,UAAU,CAAA;AAC3B,MAAA,IAAI,KAAA,CAAM,OAAA,EAAS,OAAA,CAAQ,IAAA,CAAK,oBAAoB,CAAA;AACpD,MAAA,IAAI,KAAA,CAAM,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,KAAK,CAAA;AACzC,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,IAAI,CAAC,KAAA,CAAM,KAAA,EAAO,OAAO,MAAA;AACzB,MAAA,IAAId,QAAAA,CAAS,KAAA,CAAM,KAAK,CAAA,SAAU,KAAA,CAAM,KAAA;AACxC,MAAA,IAAIC,QAAAA,CAAS,KAAA,CAAM,KAAK,CAAA,EAAG;AACzB,QAAA,OAAO,OAAO,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,CAC9B,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,GAAG,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE,CAAA,CACxC,KAAK,IAAI,CAAA;AAAA,MACd;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAG3B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,MAAM,kBAA2B,EAAC;AAGlC,QAAA,eAAA,CAAgB,IAAA,CAAKC,YAAY,KAAA,EAAO,EAAE,OAAO,CAAA,+BAAA,EAAkC,KAAA,CAAM,IAAI,CAAA,CAAA,EAAG,EAAG;AAAA,UACjGA,YAAY,KAAA,EAAO,EAAE,SAAS,eAAA,EAAiB,KAAA,EAAO,iBAAgB,EAAG;AAAA,YACvEA,YAAY,MAAA,EAAQ;AAAA,cAClB,CAAA,EAAG;AAAA,aACJ;AAAA,WACF;AAAA,SACF,CAAC,CAAA;AAGF,QAAA,IAAI,KAAA,CAAM,GAAA,IAAO,KAAA,CAAM,GAAA,EAAK;AAC1B,UAAA,eAAA,CAAgB,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,iBAAgB,EAAG,KAAA,CAAM,GAAA,GAAM,KAAA,CAAM,KAAI,GAAI,CAAC,KAAA,CAAM,GAAG,CAAC,CAAC,CAAA;AAAA,QAC5G;AAEA,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,mBAAA,EAAoB,EAAG,eAAe,CAAC,CAAA;AAAA,MACnF;AAGA,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,UAC/B,KAAA,EAAO,KAAA,CAAM,OAAA,GAAU,6CAAA,GAAgD;AAAA,SACzE,EAAG,KAAA,CAAM,OAAA,EAAS,CAAC,CAAA;AAAA,MACrB;AAEA,MAAA,OAAOA,WAAAA,CAAY,OAAOC,cAAAA,CAAe;AAAA,QACvC,IAAI,KAAA,CAAM,EAAA;AAAA,QACV,cAAc,KAAA,CAAM,SAAA;AAAA,QACpB,oBAAoB,KAAA,CAAM,eAAA;AAAA,QAC1B,IAAA,EAAM,OAAA;AAAA,QACN,WAAA,EAAa;AAAA,OACf,EAAG;AAAA,QACD,OAAO,YAAA,EAAa;AAAA,QACpB,OAAO,YAAA;AAAa,OACrB,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;ACxGM,IAAM,QAAQJ,eAAAA,CAAgB;AAAA,EACnC,IAAA,EAAM,UAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,0BAAA,EAAO;AAAA,IAC7C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,GAAA,EAAI;AAAA,IACxC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GAC/C;AAAA,EAEA,KAAA,CAAM,KAAA,EAAY,EAAE,KAAA,EAAM,EAAQ;AAChC,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,MAAM,OAAA,GAAU,CAAC,WAAW,CAAA;AAC5B,MAAA,IAAI,KAAA,CAAM,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,KAAK,CAAA;AACzC,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,IAAI,CAAC,KAAA,CAAM,KAAA,EAAO,OAAO,MAAA;AACzB,MAAA,IAAIC,QAAAA,CAAS,KAAA,CAAM,KAAK,CAAA,SAAU,KAAA,CAAM,KAAA;AACxC,MAAA,IAAIC,QAAAA,CAAS,KAAA,CAAM,KAAK,CAAA,EAAG;AACzB,QAAA,OAAO,OAAO,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,CAC9B,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,GAAG,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE,CAAA,CACxC,KAAK,IAAI,CAAA;AAAA,MACd;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAG3B,MAAA,IAAI,MAAM,KAAA,EAAO;AACf,QAAA,QAAA,CAAS,IAAA,CAAKC,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,oBAAmB,EAAG,KAAA,CAAM,KAAA,EAAO,CAAC,CAAA;AAAA,MAChF,CAAA,MAAA,IAAW,MAAM,KAAA,EAAO;AACtB,QAAA,QAAA,CAAS,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,oBAAmB,EAAG;AAAA,UAC9DA,YAAY,KAAA,EAAO;AAAA,YACjB,KAAK,KAAA,CAAM,KAAA;AAAA,YACX,GAAA,EAAK,OAAA;AAAA,YACL,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,CAAM,SAAS,CAAA,EAAA,CAAA,EAAM,MAAA,EAAQ,CAAA,EAAG,KAAA,CAAM,SAAS,CAAA,EAAA,CAAA;AAAK,WACxE;AAAA,SACF,CAAC,CAAA;AAAA,MACJ,CAAA,MAAO;AAEL,QAAA,QAAA,CAAS,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,oBAAmB,EAAG;AAAA,UAC9DA,YAAY,KAAA,EAAO;AAAA,YACjB,OAAA,EAAS,aAAA;AAAA,YACT,KAAA,EAAO,gBAAA;AAAA,YACP,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,CAAM,SAAS,CAAA,EAAA,CAAA,EAAM,MAAA,EAAQ,CAAA,EAAG,KAAA,CAAM,SAAA,GAAY,GAAG,CAAA,EAAA,CAAA;AAAK,WAC/E,EAAG;AAAA,YACDA,YAAY,GAAA,EAAK,EAAE,MAAM,MAAA,EAAQ,WAAA,EAAa,WAAU,EAAG;AAAA,cACzDA,WAAAA,CAAY,GAAA,EAAK,EAAE,SAAA,EAAW,oBAAmB,EAAG;AAAA,gBAClDA,WAAAA,CAAY,SAAA,EAAW,EAAE,IAAA,EAAM,yBAAyB,OAAA,EAAS,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,IAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,OAAO,CAAA;AAAA,gBACpHA,WAAAA,CAAY,QAAQ,EAAE,CAAA,EAAG,+EAA+E,IAAA,EAAM,uBAAA,EAAyB,OAAA,EAAS,MAAA,EAAQ,CAAA;AAAA,gBACxJA,WAAAA,CAAY,GAAA,EAAK,EAAE,IAAA,EAAM,yBAAwB,EAAG;AAAA,kBAClDA,YAAY,MAAA,EAAQ,EAAE,GAAG,6DAAA,EAA+D,OAAA,EAAS,OAAO,CAAA;AAAA,kBACxGA,YAAY,MAAA,EAAQ,EAAE,GAAG,6DAAA,EAA+D,OAAA,EAAS,OAAO,CAAA;AAAA,kBACxGA,YAAY,MAAA,EAAQ,EAAE,GAAG,kFAAA,EAAoF,OAAA,EAAS,OAAO;AAAA,iBAC9H;AAAA,eACF;AAAA,aACF;AAAA,WACF;AAAA,SACF,CAAC,CAAA;AAAA,MACJ;AAGA,MAAA,IAAI,MAAM,WAAA,EAAa;AACrB,QAAA,QAAA,CAAS,IAAA,CAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,0BAAyB,EAAG,KAAA,CAAM,WAAA,EAAa,CAAC,CAAA;AAAA,MAC5F,CAAA,MAAA,IAAW,MAAM,WAAA,EAAa;AAC5B,QAAA,QAAA,CAAS,IAAA,CAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,wBAAA,EAAyB,EAAG,CAAC,KAAA,CAAM,WAAW,CAAC,CAAC,CAAA;AAAA,MAC5F;AAGA,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,QAAA,CAAS,IAAA,CAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,qBAAoB,EAAG,KAAA,CAAM,OAAA,EAAS,CAAC,CAAA;AAAA,MACnF;AAEA,MAAA,OAAOA,WAAAA,CAAY,OAAOC,cAAAA,CAAe;AAAA,QACvC,IAAI,KAAA,CAAM,EAAA;AAAA,QACV,cAAc,KAAA,CAAM,SAAA;AAAA,QACpB,oBAAoB,KAAA,CAAM,eAAA;AAAA,QAC1B,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EAAa;AAAA,OACf,EAAG;AAAA,QACD,OAAO,aAAA,EAAc;AAAA,QACrB,OAAO,aAAA;AAAc,OACtB,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;AC7FM,IAAM,OAAOJ,eAAAA,CAAgB;AAAA,EAClC,IAAA,EAAM,SAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,SAAA,EAAU;AAAA,IACzC,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC1C,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAClC,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,OAAA,EAAQ;AAAA,IACzC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAChD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAG;AAC/C,IAAA,MAAM,MAAA,GAAS,KAAA;AACf,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAsB;AACzC,MAAA,IAAI,OAAO,QAAA,EAAU;AACnB,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA;AAAA,MACF;AACA,MAAA,MAAA,CAAO,UAAU,KAAK,CAAA;AAAA,IACxB,CAAA;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,MAAM,OAAA,GAAU,CAAC,UAAU,CAAA;AAC3B,MAAA,IAAI,MAAA,CAAO,SAAS,SAAA,EAAW;AAC7B,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,UAAA,EAAa,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AAAA,MACzC;AACA,MAAA,IAAI,CAAC,OAAO,SAAA,EAAW;AACrB,QAAA,OAAA,CAAQ,KAAK,wBAAwB,CAAA;AAAA,MACvC;AACA,MAAA,IAAI,OAAO,QAAA,EAAU;AACnB,QAAA,OAAA,CAAQ,KAAK,oBAAoB,CAAA;AAAA,MACnC;AACA,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAAA,MAC3B;AACA,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,IAAI,CAAC,MAAA,CAAO,KAAA,EAAO,OAAO,MAAA;AAC1B,MAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,SAAU,MAAA,CAAO,KAAA;AAC1C,MAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,QAAA,OAAO,OAAO,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA,CAC/B,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,GAAG,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE,CAAA,CACxC,KAAK,IAAI,CAAA;AAAA,MACd;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAC3B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,QAAA,CAAS,IAAA,CAAK,GAAI,WAAuB,CAAA;AAAA,QAC3C;AAAA,MACF;AAEA,MAAA,IAAI,OAAO,IAAA,EAAM;AACf,QAAA,OAAOC,WAAAA,CAAY,KAAKC,cAAAA,CAAe;AAAA,UACrC,IAAI,MAAA,CAAO,EAAA;AAAA,UACX,cAAc,MAAA,CAAO,SAAA;AAAA,UACrB,oBAAoB,MAAA,CAAO;AAAA,SAC7B,EAAG;AAAA,UACD,OAAO,YAAA,EAAa;AAAA,UACpB,OAAO,YAAA,EAAa;AAAA,UACpB,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,QAAQ,MAAA,CAAO,MAAA;AAAA,UACf,OAAA,EAAS;AAAA,SACV,GAAG,QAAQ,CAAA;AAAA,MACd,CAAA,MAAO;AACL,QAAA,OAAOD,WAAAA,CAAY,QAAQC,cAAAA,CAAe;AAAA,UACxC,IAAI,MAAA,CAAO,EAAA;AAAA,UACX,cAAc,MAAA,CAAO,SAAA;AAAA,UACrB,oBAAoB,MAAA,CAAO,eAAA;AAAA,UAC3B,IAAA,EAAM;AAAA,SACR,EAAG;AAAA,UACD,OAAO,YAAA,EAAa;AAAA,UACpB,OAAO,YAAA,EAAa;AAAA,UACpB,OAAA,EAAS;AAAA,SACV,GAAG,QAAQ,CAAA;AAAA,MACd;AAAA,IACF,CAAA;AAAA,EACF;AACF,CAAC;AC3FM,IAAM,YAAYJ,eAAAA,CAAgB;AAAA,EACvC,IAAA,EAAM,cAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACvC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GACrC;AAAA,EAEA,KAAA,CAAM,KAAA,EAAY,EAAE,KAAA,EAAM,EAAQ;AAChC,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAA,MAAM,OAAA,GAAU,CAAC,eAAe,CAAA;AAChC,MAAA,IAAI,MAAM,KAAA,EAAO;AACf,QAAA,OAAA,CAAQ,KAAK,sBAAsB,CAAA;AAAA,MACrC;AACA,MAAA,IAAI,MAAM,KAAA,EAAO;AACf,QAAA,OAAA,CAAQ,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,MAC1B;AACA,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAA,IAAI,CAAC,KAAA,CAAM,KAAA,EAAO,OAAO,MAAA;AACzB,MAAA,IAAIC,QAAAA,CAAS,KAAA,CAAM,KAAK,CAAA,SAAU,KAAA,CAAM,KAAA;AACxC,MAAA,IAAIC,QAAAA,CAAS,KAAA,CAAM,KAAK,CAAA,EAAG;AACzB,QAAA,OAAO,OAAO,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,CAC9B,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,GAAG,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE,CAAA,CACxC,KAAK,IAAI,CAAA;AAAA,MACd;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAC3B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,QAAA,CAAS,IAAA,CAAK,GAAG,KAAA,CAAM,OAAA,EAAS,CAAA;AAAA,MAClC;AAEA,MAAA,OAAOC,YAAY,KAAA,EAAO;AAAA,QACxB,OAAO,iBAAA,EAAkB;AAAA,QACzB,OAAO,iBAAA;AAAkB,SACxB,QAAQ,CAAA;AAAA,IACb,CAAA;AAAA,EACF;AACF,CAAC;AC3CM,IAAM,UAAUH,eAAAA,CAAgB;AAAA,EACrC,IAAA,EAAM,YAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,YAAA,EAAa;AAAA,IAC5C,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,QAAA,EAAS;AAAA,IACnD,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GAC/C;AAAA,EAEA,KAAA,CAAM,KAAA,EAAY,EAAE,KAAA,EAAM,EAAQ;AAChC,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,MAAM,OAAA,GAAU,CAAC,aAAa,CAAA;AAC9B,MAAA,IAAI,KAAA,CAAM,SAAS,YAAA,EAAc;AAC/B,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,aAAA,EAAgB,KAAA,CAAM,IAAI,CAAA,CAAE,CAAA;AAAA,MAC3C;AACA,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,aAAA,EAAgB,KAAA,CAAM,eAAe,CAAA,CAAE,CAAA;AAAA,MACtD;AACA,MAAA,IAAI,MAAM,KAAA,EAAO;AACf,QAAA,OAAA,CAAQ,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,MAC1B;AACA,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,IAAI,CAAC,KAAA,CAAM,KAAA,EAAO,OAAO,MAAA;AACzB,MAAA,IAAIC,QAAAA,CAAS,KAAA,CAAM,KAAK,CAAA,SAAU,KAAA,CAAM,KAAA;AACxC,MAAA,IAAIC,QAAAA,CAAS,KAAA,CAAM,KAAK,CAAA,EAAG;AACzB,QAAA,OAAO,OAAO,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,CAC9B,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,GAAG,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE,CAAA,CACxC,KAAK,IAAI,CAAA;AAAA,MACd;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,QAAA,CAAS,IAAA,CAAKC,WAAAA,CAAY,MAAA,EAAQ,EAAE,KAAA,EAAO,qBAAoB,EAAG,KAAA,CAAM,OAAA,EAAS,CAAC,CAAA;AAAA,MACpF;AAEA,MAAA,OAAOA,WAAAA,CAAY,OAAOC,cAAAA,CAAe;AAAA,QACvC,IAAI,KAAA,CAAM,EAAA;AAAA,QACV,cAAc,KAAA,CAAM,SAAA;AAAA,QACpB,oBAAoB,KAAA,CAAM,eAAA;AAAA,QAC1B,IAAA,EAAM;AAAA,OACR,EAAG;AAAA,QACD,OAAO,eAAA,EAAgB;AAAA,QACvB,OAAO,eAAA;AAAgB,OACxB,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;ACzDM,IAAM,QAAQJ,eAAAA,CAAgB;AAAA,EACnC,IAAA,EAAM,UAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACrC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAO;AAAA,IACtC,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,GAAA,EAAK;AAAA,IACxC,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,KAAA,EAAM;AAAA,IACzC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAClC,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAChD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAO,MAAK,EAAG;AACrD,IAAA,MAAM,MAAA,GAAS,KAAA;AACf,IAAA,MAAM,QAAQc,QAAAA,CAAS;AAAA,MACrB,OAAA,EAAS,IAAA;AAAA,MACT,KAAA,EAAO;AAAA,KACR,CAAA;AAED,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,QAAA,KAAA,CAAM,KAAA,GAAQ,WAAW,MAAM;AAC7B,UAAA,KAAA,EAAM;AAAA,QACR,CAAA,EAAG,OAAO,QAAQ,CAAA;AAAA,MACpB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,IAAI,MAAM,KAAA,EAAO;AACf,QAAA,YAAA,CAAa,MAAM,KAAK,CAAA;AACxB,QAAA,KAAA,CAAM,KAAA,GAAQ,IAAA;AAAA,MAChB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,KAAA,CAAM,OAAA,GAAU,KAAA;AAChB,MAAA,IAAA,CAAK,OAAO,CAAA;AACZ,MAAA,MAAA,CAAO,OAAA,IAAU;AAAA,IACnB,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAa;AAChC,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,KAAA,EAAM;AAAA,IACR,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,MAAM,OAAA,GAAU,CAAC,WAAW,CAAA;AAC5B,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,WAAA,EAAc,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AACxC,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,WAAA,EAAc,MAAA,CAAO,QAAQ,CAAA,CAAE,CAAA;AAC5C,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIb,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAGA,IAAA,UAAA,EAAW;AAEX,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,CAAC,KAAA,CAAM,OAAA,EAAS,OAAOC,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,gBAAA,EAAiB,EAAG,EAAE,CAAA;AAE7E,MAAA,MAAM,WAAoB,EAAC;AAG3B,MAAA,IAAI,OAAO,IAAA,EAAM;AACf,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UAChC,KAAA,EAAO;AAAA,SACT,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MAC5C,CAAA,MAAA,IAAW,MAAM,IAAA,EAAM;AACrB,QAAA,MAAM,QAAA,GAAW,MAAM,IAAA,EAAK;AAC5B,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAC3B,UAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,YAChC,KAAA,EAAO;AAAA,WACT,EAAG,QAAmB,CAAC,CAAA;AAAA,QACzB;AAAA,MACF;AAGA,MAAA,IAAI,OAAO,OAAA,EAAS;AAClB,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UAChC,KAAA,EAAO;AAAA,SACT,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,OAAO,CAAC,CAAC,CAAC,CAAA;AAAA,MAC/C,CAAA,MAAA,IAAW,MAAM,OAAA,EAAS;AACxB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,YAChC,KAAA,EAAO;AAAA,WACT,EAAG,WAAsB,CAAC,CAAA;AAAA,QAC5B;AAAA,MACF;AAGA,MAAA,IAAI,OAAO,QAAA,EAAU;AACnB,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UAChC,KAAA,EAAO,kBAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACX,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,SAAS,CAAC,CAAC,CAAC,CAAA;AAAA,MAC1C;AAEA,MAAA,OAAOA,YAAY,KAAA,EAAO;AAAA,QACxB,OAAO,aAAA,EAAc;AAAA,QACrB,OAAO,aAAA,EAAc;AAAA,QACrB,YAAA,EAAc,UAAA;AAAA,QACd,YAAA,EAAc;AAAA,SACb,QAAQ,CAAA;AAAA,IACb,CAAA;AAAA,EACF;AACF,CAAC;AC7HM,IAAM,QAAQH,eAAAA,CAAgB;AAAA,EACnC,IAAA,EAAM,UAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACzC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAO;AAAA,IACtC,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IACzC,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,OAAA,EAAQ;AAAA,IACzC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAChD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAO,MAAK,EAAG;AACrD,IAAA,MAAM,MAAA,GAAS,KAAA;AACf,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAA,CAAK,OAAO,CAAA;AACZ,MAAA,MAAA,CAAO,OAAA,IAAU;AAAA,IACnB,CAAA;AAEA,IAAA,MAAM,aAAa,OAAkC;AAAA,MACnD,OAAA,EAAS,QAAA;AAAA,MACT,OAAA,EAAS,QAAA;AAAA,MACT,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO;AAAA,KACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,UAAA,GAAa;AAAA,QACjB,WAAA;AAAA,QACA,CAAA,WAAA,EAAc,OAAO,IAAI,CAAA,CAAA;AAAA,QACzB,CAAA,WAAA,EAAc,OAAO,MAAM,CAAA,CAAA;AAAA,QAC3B,MAAA,CAAO;AAAA,OACT,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAE1B,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,OAAO,QAAA,EAAU;AACnB,QAAA,MAAM,IAAA,GAAO,UAAA,EAAW,CAAE,MAAA,CAAO,IAAiB,CAAA,IAAK,QAAA;AACvD,QAAA,QAAA,CAAS,IAAA,CAAKG,WAAAA,CAAY,MAAA,EAAQ,EAAE,OAAO,iBAAA,EAAkB,EAAG,CAACA,WAAAA,CAAY,QAAQ,EAAC,EAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MAClG;AAEA,MAAA,MAAM,kBAA2B,EAAC;AAGlC,MAAA,IAAI,KAAA,CAAM,KAAA,IAAS,MAAA,CAAO,KAAA,EAAO;AAC/B,QAAA,MAAM,gBAAyB,EAAC;AAChC,QAAA,IAAI,MAAM,KAAA,EAAO;AACf,UAAA,MAAM,WAAA,GAAc,MAAM,KAAA,EAAM;AAChC,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,YAAA,aAAA,CAAc,IAAA,CAAK,GAAI,WAAuB,CAAA;AAAA,UAChD;AAAA,QACF,CAAA,MAAA,IAAW,OAAO,KAAA,EAAO;AACvB,UAAA,aAAA,CAAc,KAAKA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,QAC1D;AACA,QAAA,IAAI,aAAA,CAAc,SAAS,CAAA,EAAG;AAC5B,UAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,kBAAA,EAAmB,EAAG,aAAa,CAAC,CAAA;AAAA,QACvF;AAAA,MACF;AAGA,MAAA,IAAI,OAAO,WAAA,EAAa;AACtB,QAAA,eAAA,CAAgB,KAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,0BAAyB,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,WAAW,CAAC,CAAC,CAAC,CAAA;AAAA,MAC7H;AAGA,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,oBAAA,EAAqB,EAAG,WAAsB,CAAC,CAAA;AAAA,QAClG;AAAA,MACF;AAEA,MAAA,IAAI,eAAA,CAAgB,SAAS,CAAA,EAAG;AAC9B,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,oBAAA,EAAqB,EAAG,eAAe,CAAC,CAAA;AAAA,MACpF;AAEA,MAAA,IAAI,OAAO,QAAA,EAAU;AACnB,QAAA,MAAM,aAAA,GAAgBE,kBAAAA,CAAmB,EAAE,SAAA,EAAW,4BAAQ,CAAA;AAC9D,QAAA,QAAA,CAAS,IAAA,CAAKF,WAAAA,CAAY,QAAA,EAAUC,cAAAA,CAAe,aAAA,EAAe;AAAA,UAChE,KAAA,EAAO,kBAAA;AAAA,UACP,OAAA,EAAS;AAAA,SACV,CAAA,EAAG,CAACD,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAG,CAAC,CAAC,CAAC,CAAA;AAAA,MACrC;AAEA,MAAA,OAAOA,YAAY,KAAA,EAAO;AAAA,QACxB,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,YAAA,EAAc,MAAA,CAAO,SAAA,IAAa,MAAA,CAAO,KAAA,IAAS,OAAA;AAAA,QAClD,oBAAoB,MAAA,CAAO,eAAA;AAAA,QAC3B,MAAA,EAAQ,OAAA;AAAA,QACR,KAAA,EAAO;AAAA,SACN,QAAQ,CAAA;AAAA,IACb,CAAA;AAAA,EACF;AACF,CAAC;AC7FM,IAAM,UAAUH,eAAAA,CAAgB;AAAA,EACrC,IAAA,EAAM,YAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACrC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,KAAA,EAAM;AAAA,IAC1C,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,OAAA,EAAQ;AAAA,IAC1C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IACtC,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IACvC,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC1C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GAC/C;AAAA,EAEA,KAAA,CAAM,KAAA,EAAY,EAAE,KAAA,EAAM,EAAQ;AAChC,IAAA,MAAM,QAAQc,QAAAA,CAAS;AAAA,MACrB,OAAA,EAAS,KAAA;AAAA,MACT,SAAA,EAAW,IAAA;AAAA,MACX,UAAA,EAAY;AAAA,KACb,CAAA;AAED,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,IAAI,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,OAAA,KAAY,OAAA,EAAS;AACjD,MAAA,YAAA,CAAa,MAAM,UAAU,CAAA;AAC7B,MAAA,IAAI,KAAA,CAAM,YAAY,CAAA,EAAG;AACvB,QAAA,KAAA,CAAM,SAAA,GAAY,WAAW,MAAM;AACjC,UAAA,KAAA,CAAM,OAAA,GAAU,IAAA;AAAA,QAClB,CAAA,EAAG,MAAM,SAAS,CAAA;AAAA,MACpB,CAAA,MAAO;AACL,QAAA,KAAA,CAAM,OAAA,GAAU,IAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,IAAI,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,OAAA,KAAY,OAAA,EAAS;AACjD,MAAA,YAAA,CAAa,MAAM,SAAS,CAAA;AAC5B,MAAA,IAAI,KAAA,CAAM,aAAa,CAAA,EAAG;AACxB,QAAA,KAAA,CAAM,UAAA,GAAa,WAAW,MAAM;AAClC,UAAA,KAAA,CAAM,OAAA,GAAU,KAAA;AAAA,QAClB,CAAA,EAAG,MAAM,UAAU,CAAA;AAAA,MACrB,CAAA,MAAO;AACL,QAAA,KAAA,CAAM,OAAA,GAAU,KAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,OAAA,KAAY,OAAA,EAAS;AACjD,MAAA,KAAA,CAAM,OAAA,GAAU,CAAC,KAAA,CAAM,OAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,OAAA,KAAY,OAAA,EAAS;AACjD,MAAA,KAAA,CAAM,OAAA,GAAU,IAAA;AAAA,IAClB,CAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,IAAI,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,OAAA,KAAY,OAAA,EAAS;AACjD,MAAA,KAAA,CAAM,OAAA,GAAU,KAAA;AAAA,IAClB,CAAA;AAEA,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,MAAM,OAAA,GAAU,CAAC,aAAa,CAAA;AAC9B,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,aAAA,EAAgB,KAAA,CAAM,SAAS,CAAA,CAAE,CAAA;AAC9C,MAAA,IAAI,KAAA,CAAM,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,KAAK,CAAA;AACzC,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,MAAM,KAAA,EAAO;AACf,QAAA,IAAIb,QAAAA,CAAS,KAAA,CAAM,KAAK,CAAA,EAAG;AACzB,UAAA,OAAO,KAAA,CAAM,KAAA;AAAA,QACf;AACA,QAAA,IAAIC,QAAAA,CAAS,KAAA,CAAM,KAAK,CAAA,EAAG;AACzB,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,KAAA,CAAM,KAAK,CAAA;AAAA,QAClC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAG3B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,QAAA,CAAS,IAAA,CAAKC,YAAY,KAAA,EAAO;AAAA,UAC/B,KAAA,EAAO,sBAAA;AAAA,UACP,YAAA,EAAc,gBAAA;AAAA,UACd,YAAA,EAAc,gBAAA;AAAA,UACd,OAAA,EAAS,WAAA;AAAA,UACT,OAAA,EAAS,WAAA;AAAA,UACT,MAAA,EAAQ;AAAA,SACV,EAAG,KAAA,CAAM,OAAA,EAAS,CAAC,CAAA;AAAA,MACrB;AAGA,MAAA,IAAI,KAAA,CAAM,OAAA,IAAW,CAAC,KAAA,CAAM,QAAA,EAAU;AACpC,QAAA,MAAM,kBAA2B,EAAC;AAGlC,QAAA,IAAI,MAAM,SAAA,EAAW;AACnB,UAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,YACtC,KAAA,EAAO;AAAA,WACT,EAAG,EAAE,CAAC,CAAA;AAAA,QACR;AAGA,QAAA,IAAI,MAAM,OAAA,EAAS;AACjB,UAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,YACtC,KAAA,EAAO;AAAA,WACT,EAAG,CAAC,KAAA,CAAM,OAAO,CAAC,CAAC,CAAA;AAAA,QACrB,CAAA,MAAA,IAAW,MAAM,OAAA,EAAS;AACxB,UAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,YACtC,KAAA,EAAO;AAAA,WACT,EAAG,KAAA,CAAM,OAAA,EAAS,CAAC,CAAA;AAAA,QACrB;AAEA,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,UAC/B,OAAO,eAAA,EAAgB;AAAA,UACvB,OAAO,eAAA;AAAgB,SACzB,EAAG,eAAe,CAAC,CAAA;AAAA,MACrB;AAEA,MAAA,OAAOA,WAAAA,CAAY,OAAOC,cAAAA,CAAe;AAAA,QACvC,IAAI,KAAA,CAAM,EAAA;AAAA,QACV,cAAc,KAAA,CAAM,SAAA;AAAA,QACpB,oBAAoB,KAAA,CAAM;AAAA,OAC5B,EAAG;AAAA,QACD,KAAA,EAAO;AAAA,OACR,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;AC3IM,IAAM,WAAWJ,eAAAA,CAAgB;AAAA,EACtC,IAAA,EAAM,aAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC5C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC9C,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC/C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,OAAA,EAAS,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACzC,aAAA,EAAe,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC/C,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAClC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,WAAA,EAAa,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC7C,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAClD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAO,MAAK,EAAG;AACrD,IAAA,MAAM,MAAA,GAAS,KAAA;AACf,IAAA,MAAM,QAAQc,QAAAA,CAAS;AAAA,MACrB,KAAA,EAAO;AAAA,KACR,CAAA;AAED,IAAA,MAAM,SAAA,GAAY,SAAS,MAAM;AAC/B,MAAA,IAAI,OAAA,CAAQ,MAAA,CAAO,UAAU,CAAA,EAAG;AAC9B,QAAA,OAAQ,OAAO,UAAA,CAAyB,QAAA,CAAS,MAAA,CAAO,KAAA,IAAS,OAAO,SAAS,CAAA;AAAA,MACnF;AACA,MAAA,OAAO,MAAA,CAAO,cAAc,MAAA,CAAO,OAAA;AAAA,IACrC,CAAC,CAAA;AAED,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAa;AACjC,MAAA,IAAI,OAAO,QAAA,EAAU;AAErB,MAAA,MAAM,SAAS,CAAA,CAAE,MAAA;AACjB,MAAA,IAAI,QAAA;AAEJ,MAAA,IAAI,OAAA,CAAQ,MAAA,CAAO,UAAU,CAAA,EAAG;AAC9B,QAAA,QAAA,GAAW,CAAC,GAAI,MAAA,CAAO,UAAwB,CAAA;AAC/C,QAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,IAAS,MAAA,CAAO,SAAA;AACrC,QAAA,IAAI,OAAO,OAAA,EAAS;AAClB,UAAA,IAAI,CAAC,QAAA,CAAS,QAAA,CAAS,KAAK,CAAA,EAAG;AAC7B,YAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AAAA,UACrB;AAAA,QACF,CAAA,MAAO;AACL,UAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAA;AACpC,UAAA,IAAI,QAAQ,EAAA,EAAI;AACd,YAAA,QAAA,CAAS,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,UAC1B;AAAA,QACF;AAAA,MACF,CAAA,MAAO;AACL,QAAA,QAAA,GAAW,MAAA,CAAO,OAAA;AAAA,MACpB;AAEA,MAAA,IAAA,CAAK,qBAAqB,QAAQ,CAAA;AAClC,MAAA,IAAA,CAAK,UAAU,QAAQ,CAAA;AACvB,MAAA,MAAA,CAAO,WAAW,QAAmB,CAAA;AAAA,IACvC,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,KAAA,CAAM,KAAA,GAAQ,IAAA;AAAA,IAChB,CAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,KAAA,CAAM,KAAA,GAAQ,KAAA;AAAA,IAChB,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,MAAM,OAAA,GAAU,CAAC,cAAc,CAAA;AAC/B,MAAA,IAAI,SAAA,CAAU,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,uBAAuB,CAAA;AACzD,MAAA,IAAI,MAAA,CAAO,QAAA,EAAU,OAAA,CAAQ,IAAA,CAAK,wBAAwB,CAAA;AAC1D,MAAA,IAAI,MAAA,CAAO,aAAA,EAAe,OAAA,CAAQ,IAAA,CAAK,6BAA6B,CAAA;AACpE,MAAA,IAAI,KAAA,CAAM,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,qBAAqB,CAAA;AACnD,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIb,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAC3B,MAAA,MAAM,UAAU,SAAA,CAAU,KAAA;AAE1B,MAAA,MAAM,YAAYM,wBAAAA,CAAyB;AAAA,QACzC,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,iBAAiB,MAAA,CAAO,eAAA;AAAA,QACxB,aAAa,MAAA,CAAO,WAAA;AAAA,QACpB,cAAc,MAAA,CAAO,YAAA;AAAA,QACrB,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,OAAA,EAAS,OAAA,GAAU,IAAA,GAAO,MAAA,CAAO,gBAAgB,OAAA,GAAmB;AAAA,OACrE,CAAA;AAED,MAAA,QAAA,CAAS,IAAA,CAAKL,WAAAA,CAAY,OAAA,EAASC,cAAAA,CAAe,SAAA,EAAW;AAAA,QAC3D,IAAA,EAAM,UAAA;AAAA,QACN,KAAA,EAAO,qBAAA;AAAA,QACP,OAAA;AAAA,QACA,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,QAAA,EAAU,YAAA;AAAA,QACV,OAAA,EAAS,WAAA;AAAA,QACT,MAAA,EAAQ;AAAA,OACT,CAAA,EAAG,EAAE,CAAC,CAAA;AAEP,MAAA,QAAA,CAAS,IAAA,CAAKD,YAAY,MAAA,EAAQ;AAAA,QAChC,KAAA,EAAO;AAAA,OACT,EAAG,EAAE,CAAC,CAAA;AAEN,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UAChC,KAAA,EAAO;AAAA,SACT,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,KAAK,CAAC,CAAC,CAAC,CAAA;AAAA,MAC7C,CAAA,MAAA,IAAW,MAAM,OAAA,EAAS;AACxB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,YAChC,KAAA,EAAO;AAAA,WACT,EAAG,WAAsB,CAAC,CAAA;AAAA,QAC5B;AAAA,MACF;AAEA,MAAA,OAAOA,YAAY,OAAA,EAAS;AAAA,QAC1B,OAAO,gBAAA,EAAiB;AAAA,QACxB,OAAO,gBAAA;AAAiB,SACvB,QAAQ,CAAA;AAAA,IACb,CAAA;AAAA,EACF;AACF,CAAC;AChJM,IAAM,gBAAgBH,eAAAA,CAAgB;AAAA,EAC3C,IAAA,EAAM,kBAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,KAAA,EAAO,SAAS,MAAA,EAAU;AAAA,IAC9C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IACxC,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IACxC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,SAAA,EAAU;AAAA,IACzC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GACjD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAG;AAC/C,IAAA,MAAM,MAAA,GAAS,KAAA;AAEf,IAAA,MAAM,wBAAwB,MAAM;AAClC,MAAA,MAAM,OAAA,GAAU,CAAC,oBAAoB,CAAA;AACrC,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAe,CAAA;AACrD,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,wBAAwB,MAAM;AAClC,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,QAAA,CAAS,IAAA,CAAK,GAAI,WAAuB,CAAA;AAAA,QAC3C,WAAW,WAAA,EAAa;AACtB,UAAA,QAAA,CAAS,KAAK,WAAoB,CAAA;AAAA,QACpC;AAAA,MACF;AAEA,MAAA,OAAOC,WAAAA,CAAY,OAAOC,cAAAA,CAAe;AAAA,QACvC,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,cAAc,MAAA,CAAO,SAAA;AAAA,QACrB,oBAAoB,MAAA,CAAO,eAAA;AAAA,QAC3B,eAAA,EAAiB,MAAA,CAAO,YAAA,GAAe,MAAA,GAAS,MAAA;AAAA,QAChD,IAAA,EAAM;AAAA,OACR,EAAG;AAAA,QACD,OAAO,qBAAA,EAAsB;AAAA,QAC7B,OAAO,qBAAA,EAAsB;AAAA,QAC7B,eAAA,EAAiB,MAAA,CAAO,QAAA,GAAW,MAAA,GAAS;AAAA,OAC7C,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;ACnEM,IAAM,QAAQJ,eAAAA,CAAgB;AAAA,EACnC,IAAA,EAAM,UAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC/C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC1C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAClC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,WAAA,EAAa,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC7C,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAClD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAO,MAAK,EAAG;AACrD,IAAA,MAAM,MAAA,GAAS,KAAA;AACf,IAAA,MAAM,QAAQc,QAAAA,CAAS;AAAA,MACrB,KAAA,EAAO;AAAA,KACR,CAAA;AAED,IAAA,MAAM,SAAA,GAAYE,SAAS,MAAM;AAC/B,MAAA,OAAO,MAAA,CAAO,eAAe,MAAA,CAAO,KAAA;AAAA,IACtC,CAAC,CAAA;AAED,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,IAAI,OAAO,QAAA,EAAU;AAErB,MAAA,MAAM,WAAW,MAAA,CAAO,KAAA;AACxB,MAAA,IAAA,CAAK,qBAAqB,QAAQ,CAAA;AAClC,MAAA,IAAA,CAAK,UAAU,QAAQ,CAAA;AACvB,MAAA,MAAA,CAAO,WAAW,QAAqC,CAAA;AAAA,IACzD,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,KAAA,CAAM,KAAA,GAAQ,IAAA;AAAA,IAChB,CAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,KAAA,CAAM,KAAA,GAAQ,KAAA;AAAA,IAChB,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,MAAM,OAAA,GAAU,CAAC,WAAW,CAAA;AAC5B,MAAA,IAAI,SAAA,CAAU,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,oBAAoB,CAAA;AACtD,MAAA,IAAI,MAAA,CAAO,QAAA,EAAU,OAAA,CAAQ,IAAA,CAAK,qBAAqB,CAAA;AACvD,MAAA,IAAI,KAAA,CAAM,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,kBAAkB,CAAA;AAChD,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIf,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAC3B,MAAA,MAAM,UAAU,SAAA,CAAU,KAAA;AAE1B,MAAA,MAAM,YAAYM,wBAAAA,CAAyB;AAAA,QACzC,OAAA;AAAA,QACA,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,iBAAiB,MAAA,CAAO,eAAA;AAAA,QACxB,aAAa,MAAA,CAAO,WAAA;AAAA,QACpB,cAAc,MAAA,CAAO,YAAA;AAAA,QACrB,UAAU,MAAA,CAAO;AAAA,OAClB,CAAA;AAED,MAAA,QAAA,CAAS,IAAA,CAAKL,WAAAA,CAAY,OAAA,EAASC,cAAAA,CAAe,SAAA,EAAW;AAAA,QAC3D,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,kBAAA;AAAA,QACP,OAAA;AAAA,QACA,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,QAAA,EAAU,YAAA;AAAA,QACV,OAAA,EAAS,WAAA;AAAA,QACT,MAAA,EAAQ;AAAA,OACT,CAAA,EAAG,EAAE,CAAC,CAAA;AAEP,MAAA,QAAA,CAAS,IAAA,CAAKD,YAAY,MAAA,EAAQ;AAAA,QAChC,KAAA,EAAO;AAAA,OACT,EAAG,EAAE,CAAC,CAAA;AAEN,MAAA,IAAI,MAAA,CAAO,UAAU,MAAA,EAAW;AAC9B,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UAChC,KAAA,EAAO;AAAA,SACT,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,MAAA,CAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,MACrD,CAAA,MAAA,IAAW,MAAM,OAAA,EAAS;AACxB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,YAChC,KAAA,EAAO;AAAA,WACT,EAAG,WAAsB,CAAC,CAAA;AAAA,QAC5B;AAAA,MACF;AAEA,MAAA,OAAOA,YAAY,OAAA,EAAS;AAAA,QAC1B,OAAO,aAAA,EAAc;AAAA,QACrB,OAAO,aAAA;AAAc,SACpB,QAAQ,CAAA;AAAA,IACb,CAAA;AAAA,EACF;AACF,CAAC;ACxHM,IAAM,aAAaH,eAAAA,CAAgB;AAAA,EACxC,IAAA,EAAM,eAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAA,EAAQ,OAAO,CAAA,EAAU,OAAA,EAAS,MAAA,EAAU;AAAA,IACzE,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,SAAA,EAAU;AAAA,IACzC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GACjD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAG;AAC/C,IAAA,MAAM,MAAA,GAAS,KAAA;AAEf,IAAA,MAAM,qBAAqB,MAAM;AAC/B,MAAA,MAAM,OAAA,GAAU,CAAC,iBAAiB,CAAA;AAClC,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAe,CAAA;AACrD,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,qBAAqB,MAAM;AAC/B,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,QAAA,CAAS,IAAA,CAAK,GAAI,WAAuB,CAAA;AAAA,QAC3C,WAAW,WAAA,EAAa;AACtB,UAAA,QAAA,CAAS,KAAK,WAAoB,CAAA;AAAA,QACpC;AAAA,MACF;AAEA,MAAA,MAAM,YAAYe,iBAAAA,CAAkB;AAAA,QAClC,IAAA,EAAM,YAAA;AAAA,QACN,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,iBAAiB,MAAA,CAAO,eAAA;AAAA,QACxB,cAAc,MAAA,CAAO;AAAA,OACtB,CAAA;AAED,MAAA,OAAOd,WAAAA,CAAY,KAAA,EAAOC,cAAAA,CAAe,SAAA,EAAW;AAAA,QAClD,OAAO,kBAAA,EAAmB;AAAA,QAC1B,OAAO,kBAAA,EAAmB;AAAA,QAC1B,eAAA,EAAiB,MAAA,CAAO,QAAA,GAAW,MAAA,GAAS;AAAA,OAC7C,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;AC7DM,IAAM,SAASJ,eAAAA,CAAgB;AAAA,EACpC,IAAA,EAAM,WAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC5C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,OAAA,EAAS,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACzC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,SAAA,EAAU;AAAA,IACzC,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACxC,YAAA,EAAc,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC1C,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACzC,aAAA,EAAe,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC3C,WAAA,EAAa,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC5C,aAAA,EAAe,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC/C,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAClC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,WAAA,EAAa,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC7C,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAClD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAO,MAAK,EAAG;AACrD,IAAA,MAAM,MAAA,GAAS,KAAA;AACf,IAAA,MAAM,QAAQc,QAAAA,CAAS;AAAA,MACrB,KAAA,EAAO;AAAA,KACR,CAAA;AAED,IAAA,MAAM,SAAA,GAAYE,SAAS,MAAM;AAC/B,MAAA,OAAO,MAAA,CAAO,eAAe,MAAA,CAAO,WAAA;AAAA,IACtC,CAAC,CAAA;AAED,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,OAAA,EAAS;AAEvC,MAAA,MAAM,QAAA,GAAW,SAAA,CAAU,KAAA,GAAQ,MAAA,CAAO,gBAAgB,MAAA,CAAO,WAAA;AACjE,MAAA,IAAA,CAAK,qBAAqB,QAAQ,CAAA;AAClC,MAAA,IAAA,CAAK,UAAU,QAAQ,CAAA;AACvB,MAAA,MAAA,CAAO,WAAW,QAAmB,CAAA;AAAA,IACvC,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,OAAA,EAAS;AAEvC,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,GAAA,EAAK;AAC9C,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,MAAM,QAAA,GAAW,SAAA,CAAU,KAAA,GAAQ,MAAA,CAAO,gBAAgB,MAAA,CAAO,WAAA;AACjE,QAAA,IAAA,CAAK,qBAAqB,QAAQ,CAAA;AAClC,QAAA,IAAA,CAAK,UAAU,QAAQ,CAAA;AACvB,QAAA,MAAA,CAAO,WAAW,QAAmB,CAAA;AAAA,MACvC;AAEA,MAAA,MAAA,CAAO,YAAY,KAAK,CAAA;AAAA,IAC1B,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,KAAA,CAAM,KAAA,GAAQ,IAAA;AAAA,IAChB,CAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,KAAA,CAAM,KAAA,GAAQ,KAAA;AAAA,IAChB,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,MAAM,OAAA,GAAU,CAAC,YAAY,CAAA;AAC7B,MAAA,IAAI,SAAA,CAAU,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,qBAAqB,CAAA;AACvD,MAAA,IAAI,MAAA,CAAO,QAAA,EAAU,OAAA,CAAQ,IAAA,CAAK,sBAAsB,CAAA;AACxD,MAAA,IAAI,MAAA,CAAO,OAAA,EAAS,OAAA,CAAQ,IAAA,CAAK,qBAAqB,CAAA;AACtD,MAAA,IAAI,MAAA,CAAO,SAAS,SAAA,EAAW,OAAA,CAAQ,KAAK,CAAA,YAAA,EAAe,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AACxE,MAAA,IAAI,KAAA,CAAM,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,mBAAmB,CAAA;AACjD,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,MAAA,CAAO,WAAA,IAAe,SAAA,CAAU,KAAA,EAAO;AACzC,QAAA,KAAA,CAAM,kBAAkB,MAAA,CAAO,WAAA;AAAA,MACjC;AACA,MAAA,IAAI,MAAA,CAAO,aAAA,IAAiB,CAAC,SAAA,CAAU,KAAA,EAAO;AAC5C,QAAA,KAAA,CAAM,kBAAkB,MAAA,CAAO,aAAA;AAAA,MACjC;AACA,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIf,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,MAAM,eAAwB,EAAC;AAE/B,MAAA,IAAI,SAAA,CAAU,KAAA,IAAS,MAAA,CAAO,UAAA,EAAY;AACxC,QAAA,YAAA,CAAa,IAAA,CAAKC,YAAY,MAAA,EAAQ;AAAA,UACpC,KAAA,EAAO;AAAA,SACT,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,UAAU,CAAC,CAAC,CAAC,CAAA;AAAA,MAClD,CAAA,MAAA,IAAW,CAAC,SAAA,CAAU,KAAA,IAAS,OAAO,YAAA,EAAc;AAClD,QAAA,YAAA,CAAa,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UACpC,KAAA,EAAO;AAAA,SACT,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,YAAY,CAAC,CAAC,CAAC,CAAA;AAAA,MACpD,CAAA,MAAA,IAAW,KAAA,CAAM,MAAA,IAAU,SAAA,CAAU,KAAA,EAAO;AAC1C,QAAA,MAAM,WAAA,GAAc,MAAM,MAAA,EAAO;AACjC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,YAAA,CAAa,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,YACpC,KAAA,EAAO;AAAA,WACT,EAAG,WAAsB,CAAC,CAAA;AAAA,QAC5B;AAAA,MACF,CAAA,MAAA,IAAW,KAAA,CAAM,QAAA,IAAY,CAAC,UAAU,KAAA,EAAO;AAC7C,QAAA,MAAM,WAAA,GAAc,MAAM,QAAA,EAAS;AACnC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,YAAA,CAAa,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,YACpC,KAAA,EAAO;AAAA,WACT,EAAG,WAAsB,CAAC,CAAA;AAAA,QAC5B;AAAA,MACF;AAEA,MAAA,MAAM,iBAA0B,EAAC;AACjC,MAAA,IAAI,OAAO,OAAA,EAAS;AAClB,QAAA,cAAA,CAAe,KAAKA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,QAAG,CAAC,CAAA;AAAA,MAClD;AACA,MAAA,YAAA,CAAa,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,QACpC,KAAA,EAAO;AAAA,OACT,EAAG;AAAA,QACDA,YAAY,MAAA,EAAQ;AAAA,UAClB,KAAA,EAAO;AAAA,WACN,cAAc;AAAA,OAClB,CAAC,CAAA;AAEF,MAAA,IAAI,SAAA,CAAU,KAAA,IAAS,MAAA,CAAO,UAAA,EAAY;AACxC,QAAA,YAAA,CAAa,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UACpC,KAAA,EAAO;AAAA,SACT,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,UAAU,CAAC,CAAC,CAAC,CAAA;AAAA,MAClD,CAAA,MAAA,IAAW,CAAC,SAAA,CAAU,KAAA,IAAS,OAAO,YAAA,EAAc;AAClD,QAAA,YAAA,CAAa,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UACpC,KAAA,EAAO;AAAA,SACT,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,MAAA,CAAO,YAAY,CAAC,CAAC,CAAC,CAAA;AAAA,MACpD;AAEA,MAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,QAC/B,KAAA,EAAO;AAAA,OACT,EAAG,YAAY,CAAC,CAAA;AAEhB,MAAA,MAAM,YAAY,kBAAA,CAAmB;AAAA,QACnC,SAAS,SAAA,CAAU,KAAA;AAAA,QACnB,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,iBAAiB,MAAA,CAAO,eAAA;AAAA,QACxB,aAAa,MAAA,CAAO,WAAA;AAAA,QACpB,cAAc,MAAA,CAAO,YAAA;AAAA,QACrB,UAAU,MAAA,CAAO;AAAA,OAClB,CAAA;AAED,MAAA,OAAOA,WAAAA,CAAY,KAAA,EAAOC,cAAAA,CAAe,SAAA,EAAW;AAAA,QAClD,OAAO,cAAA,EAAe;AAAA,QACtB,OAAO,cAAA,EAAe;AAAA,QACtB,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAW,aAAA;AAAA,QACX,OAAA,EAAS,WAAA;AAAA,QACT,MAAA,EAAQ;AAAA,OACT,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;AC9KM,IAAM,cAAcJ,eAAAA,CAAgB;AAAA,EACzC,IAAA,EAAM,gBAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC/C,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,QAAA,EAAU;AAAA,IACxC,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,QAAA,EAAS;AAAA,IACvC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IACjC,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC9C,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,SAAA,EAAU;AAAA,IACzC,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IACzC,gBAAA,EAAkB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC9C,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAClC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACzC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,WAAA,EAAa,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC9C,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAClD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,IAAA,EAAK,EAAG;AAC9C,IAAA,MAAM,MAAA,GAAS,KAAA;AACf,IAAA,MAAM,QAAQc,QAAAA,CAAS;AAAA,MACrB,YAAY,MAAA,CAAO,UAAA;AAAA,MACnB,KAAA,EAAO;AAAA,KACR,CAAA;AAED,IAAA,MAAM,YAAA,GAAeE,SAAS,MAAM;AAClC,MAAA,IAAI,KAAA,CAAM,UAAA,KAAe,MAAA,IAAa,KAAA,CAAM,eAAe,IAAA,EAAM;AAC/D,QAAA,OAAO,EAAA;AAAA,MACT;AACA,MAAA,IAAI,MAAA,CAAO,cAAc,MAAA,EAAW;AAClC,QAAA,OAAO,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,MAAA,CAAO,SAAS,CAAA;AAAA,MAClD;AACA,MAAA,OAAO,MAAA,CAAO,MAAM,UAAU,CAAA;AAAA,IAChC,CAAC,CAAA;AAED,IAAA,MAAM,OAAA,GAAUA,SAAS,MAAM;AAC7B,MAAA,OAAO,KAAA,CAAM,UAAA,KAAe,MAAA,IAAa,KAAA,CAAM,cAAc,MAAA,CAAO,GAAA;AAAA,IACtE,CAAC,CAAA;AAED,IAAA,MAAM,OAAA,GAAUA,SAAS,MAAM;AAC7B,MAAA,OAAO,KAAA,CAAM,UAAA,KAAe,MAAA,IAAa,KAAA,CAAM,cAAc,MAAA,CAAO,GAAA;AAAA,IACtE,CAAC,CAAA;AAED,IAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAA0B;AACjD,MAAA,IAAI,MAAA,CAAO,cAAc,MAAA,EAAW;AAClC,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,OAAO,SAAS,CAAA;AAC5C,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,MAAM,CAAA,GAAI,MAAA;AAAA,MACtC;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAA0B;AAC5C,MAAA,IAAI,OAAO,YAAA,EAAc;AACvB,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,OAAO,IAAI,CAAA;AAC5C,QAAA,OAAO,eAAA,CAAgB,KAAA,GAAQ,MAAA,CAAO,IAAI,CAAA;AAAA,MAC5C;AACA,MAAA,OAAO,gBAAgB,KAAK,CAAA;AAAA,IAC9B,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAA0B;AAC5C,MAAA,IAAI,MAAA,GAAS,KAAA;AACb,MAAA,IAAI,MAAA,GAAS,MAAA,CAAO,GAAA,EAAK,MAAA,GAAS,MAAA,CAAO,GAAA;AACzC,MAAA,IAAI,MAAA,GAAS,MAAA,CAAO,GAAA,EAAK,MAAA,GAAS,MAAA,CAAO,GAAA;AACzC,MAAA,OAAO,WAAW,MAAM,CAAA;AAAA,IAC1B,CAAA;AAEA,IAAA,MAAM,QAAA,GAAW,CAAC,KAAA,KAA8B;AAC9C,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,KAAA,CAAM,UAAA,GAAa,MAAA;AACnB,QAAA,IAAA,CAAK,qBAAqB,MAAS,CAAA;AACnC,QAAA,IAAA,CAAK,UAAU,MAAS,CAAA;AACxB,QAAA,MAAA,CAAO,WAAW,MAAS,CAAA;AAC3B,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,QAAA,GAAW,WAAW,KAAK,CAAA;AACjC,MAAA,KAAA,CAAM,UAAA,GAAa,QAAA;AACnB,MAAA,IAAA,CAAK,qBAAqB,QAAQ,CAAA;AAClC,MAAA,IAAA,CAAK,UAAU,QAAQ,CAAA;AACvB,MAAA,MAAA,CAAO,WAAW,QAAQ,CAAA;AAAA,IAC5B,CAAA;AAEA,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,IAAI,MAAA,CAAO,QAAA,IAAY,OAAA,CAAQ,KAAA,EAAO;AACtC,MAAA,MAAM,QAAA,GAAA,CAAY,KAAA,CAAM,UAAA,IAAc,CAAA,IAAK,MAAA,CAAO,IAAA;AAClD,MAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,IACnB,CAAA;AAEA,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,IAAI,MAAA,CAAO,QAAA,IAAY,OAAA,CAAQ,KAAA,EAAO;AACtC,MAAA,MAAM,QAAA,GAAA,CAAY,KAAA,CAAM,UAAA,IAAc,CAAA,IAAK,MAAA,CAAO,IAAA;AAClD,MAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,IACnB,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAa;AAChC,MAAA,MAAM,SAAS,CAAA,CAAE,MAAA;AACjB,MAAA,MAAM,QAAQ,MAAA,CAAO,KAAA;AAErB,MAAA,IAAI,UAAU,EAAA,EAAI;AAChB,QAAA,KAAA,CAAM,UAAA,GAAa,MAAA;AACnB,QAAA,IAAA,CAAK,qBAAqB,MAAS,CAAA;AACnC,QAAA,IAAA,CAAK,SAAS,MAAS,CAAA;AACvB,QAAA,MAAA,CAAO,UAAU,MAAS,CAAA;AAC1B,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,QAAA,GAAW,WAAW,KAAK,CAAA;AACjC,MAAA,IAAI,CAAC,KAAA,CAAM,QAAQ,CAAA,EAAG;AACpB,QAAA,KAAA,CAAM,UAAA,GAAa,QAAA;AACnB,QAAA,IAAA,CAAK,SAAS,QAAQ,CAAA;AACtB,QAAA,MAAA,CAAO,UAAU,QAAQ,CAAA;AAAA,MAC3B;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,CAAC,CAAA,KAAa;AAC/B,MAAA,KAAA,CAAM,KAAA,GAAQ,KAAA;AACd,MAAA,MAAM,SAAS,CAAA,CAAE,MAAA;AACjB,MAAA,MAAM,QAAQ,MAAA,CAAO,KAAA;AAErB,MAAA,IAAI,UAAU,EAAA,EAAI;AAChB,QAAA,QAAA,CAAS,MAAS,CAAA;AAAA,MACpB,CAAA,MAAO;AACL,QAAA,MAAM,QAAA,GAAW,WAAW,KAAK,CAAA;AACjC,QAAA,IAAI,CAAC,KAAA,CAAM,QAAQ,CAAA,EAAG;AACpB,UAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,QACnB;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,KAAA,CAAM,KAAA,GAAQ,IAAA;AAAA,IAChB,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAqB;AAC1C,MAAA,QAAQ,EAAE,GAAA;AAAK,QACb,KAAK,SAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,eAAA,EAAgB;AAChB,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,eAAA,EAAgB;AAChB,UAAA;AAAA,QACF,KAAK,MAAA;AACH,UAAA,IAAI,MAAA,CAAO,QAAQ,CAAA,QAAA,EAAW;AAC5B,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,QAAA,CAAS,OAAO,GAAG,CAAA;AAAA,UACrB;AACA,UAAA;AAAA,QACF,KAAK,KAAA;AACH,UAAA,IAAI,MAAA,CAAO,QAAQ,QAAA,EAAU;AAC3B,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,QAAA,CAAS,OAAO,GAAG,CAAA;AAAA,UACrB;AACA,UAAA;AAAA;AAEJ,MAAA,MAAA,CAAO,YAAY,CAAC,CAAA;AAAA,IACtB,CAAA;AAEA,IAAAD,KAAAA,CAAM,MAAM,MAAA,CAAO,UAAA,EAAY,CAAC,QAAA,KAAa;AAC3C,MAAA,IAAI,QAAA,KAAa,MAAM,UAAA,EAAY;AACjC,QAAA,KAAA,CAAM,UAAA,GAAa,QAAA;AAAA,MACrB;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAM,sBAAsB,MAAM;AAChC,MAAA,MAAM,OAAA,GAAU,CAAC,kBAAkB,CAAA;AACnC,MAAA,IAAI,MAAA,CAAO,SAAS,SAAA,EAAW,OAAA,CAAQ,KAAK,CAAA,kBAAA,EAAqB,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AAC9E,MAAA,IAAI,MAAA,CAAO,QAAA,EAAU,OAAA,CAAQ,IAAA,CAAK,4BAA4B,CAAA;AAC9D,MAAA,IAAI,KAAA,CAAM,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,yBAAyB,CAAA;AACvD,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,sBAAsB,MAAM;AAChC,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAId,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAG3B,MAAA,IAAI,OAAO,QAAA,EAAU;AACnB,QAAA,MAAM,mBAAmBG,kBAAAA,CAAmB;AAAA,UAC1C,SAAA,EAAW,cAAA;AAAA,UACX,QAAA,EAAU,MAAA,CAAO,QAAA,IAAY,OAAA,CAAQ;AAAA,SACtC,CAAA;AACD,QAAA,QAAA,CAAS,IAAA,CAAKF,WAAAA,CAAY,MAAA,EAAQC,cAAAA,CAAe,gBAAA,EAAkB;AAAA,UACjE,KAAA,EAAO,CAAA,2BAAA,EAA8B,OAAA,CAAQ,KAAA,GAAQ,gBAAgB,EAAE,CAAA,CAAA;AAAA,UACvE,OAAA,EAAS;AAAA,SACV,CAAA,EAAG,CAACG,gBAAgB,QAAG,CAAC,CAAC,CAAC,CAAA;AAAA,MAC7B;AAGA,MAAA,IAAI,OAAO,QAAA,EAAU;AACnB,QAAA,MAAM,mBAAmBF,kBAAAA,CAAmB;AAAA,UAC1C,SAAA,EAAW,cAAA;AAAA,UACX,QAAA,EAAU,MAAA,CAAO,QAAA,IAAY,OAAA,CAAQ;AAAA,SACtC,CAAA;AACD,QAAA,QAAA,CAAS,IAAA,CAAKF,WAAAA,CAAY,MAAA,EAAQC,cAAAA,CAAe,gBAAA,EAAkB;AAAA,UACjE,KAAA,EAAO,CAAA,2BAAA,EAA8B,OAAA,CAAQ,KAAA,GAAQ,gBAAgB,EAAE,CAAA,CAAA;AAAA,UACvE,OAAA,EAAS;AAAA,SACV,CAAA,EAAG,CAACG,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAA;AAAA,MAC7B;AAGA,MAAA,MAAM,kBAAkB,sBAAA,CAAuB;AAAA,QAC7C,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,iBAAiB,MAAA,CAAO,eAAA;AAAA,QACxB,cAAc,MAAA,CAAO,YAAA;AAAA,QACrB,aAAa,MAAA,CAAO,WAAA;AAAA,QACpB,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,OAAO,KAAA,CAAM,UAAA;AAAA,QACb,GAAA,EAAK,MAAA,CAAO,GAAA,KAAQ,CAAA,QAAA,GAAY,SAAY,MAAA,CAAO,GAAA;AAAA,QACnD,GAAA,EAAK,MAAA,CAAO,GAAA,KAAQ,QAAA,GAAW,SAAY,MAAA,CAAO;AAAA,OACnD,CAAA;AACD,MAAA,QAAA,CAAS,IAAA,CAAKJ,WAAAA,CAAY,OAAA,EAASC,cAAAA,CAAe,eAAA,EAAiB;AAAA,QACjE,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,yBAAA;AAAA,QACP,OAAO,YAAA,CAAa,KAAA;AAAA,QACpB,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,aAAa,MAAA,CAAO,WAAA;AAAA,QACpB,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,OAAA,EAAS,WAAA;AAAA,QACT,MAAA,EAAQ,UAAA;AAAA,QACR,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAW;AAAA,OACZ,CAAA,EAAG,EAAE,CAAC,CAAA;AAEP,MAAA,OAAOD,YAAY,KAAA,EAAO;AAAA,QACxB,OAAO,mBAAA,EAAoB;AAAA,QAC3B,OAAO,mBAAA;AAAoB,SAC1B,QAAQ,CAAA;AAAA,IACb,CAAA;AAAA,EACF;AACF,CAAC;ACtQM,IAAM,WAAWH,eAAAA,CAAgB;AAAA,EACtC,IAAA,EAAM,aAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IACvC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAO;AAAA,IACtC,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACpC,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IACxC,UAAA,EAAY,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC5C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IACzC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,KAAA,EAAO,MAAM,CAAA,EAAU,OAAA,EAAS,EAAA,EAAG;AAAA,IAC3D,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,GAAA,EAAI;AAAA,IACpC,aAAA,EAAe,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,OAAA,EAAQ;AAAA,IAChD,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC7C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GAC/C;AAAA,EAEA,MAAM,KAAA,EAAgC;AACpC,IAAA,MAAM,MAAA,GAAS,KAAA;AAEf,IAAA,MAAM,eAAA,GAAkBgB,SAAS,MAAM;AACrC,MAAA,IAAI,IAAI,MAAA,CAAO,UAAA;AACf,MAAA,IAAI,CAAA,GAAI,GAAG,CAAA,GAAI,CAAA;AACf,MAAA,IAAI,CAAA,GAAI,KAAK,CAAA,GAAI,GAAA;AACjB,MAAA,OAAO,CAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,MAAM,SAAA,GAAYA,SAAS,MAAM;AAC/B,MAAA,IAAI,MAAA,CAAO,MAAA,EAAQ,OAAO,MAAA,CAAO,MAAA;AACjC,MAAA,IAAI,eAAA,CAAgB,KAAA,KAAU,GAAA,EAAK,OAAO,SAAA;AAC1C,MAAA,OAAO,EAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,MAAM,WAAA,GAAcA,SAAS,MAAM;AACjC,MAAA,MAAM,KAAA,GAAgC;AAAA,QACpC,KAAA,EAAO,CAAA,EAAG,eAAA,CAAgB,KAAK,CAAA,CAAA;AAAA,OACjC;AAEA,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIf,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,KAAA,CAAM,kBAAkB,MAAA,CAAO,KAAA;AAAA,QACjC,CAAA,MAAA,IAAWC,SAAS,MAAA,CAAO,KAAK,KAAK,CAACgB,OAAAA,CAAQ,MAAA,CAAO,KAAK,CAAA,EAAG;AAC3D,UAAA,MAAM,WAAW,MAAA,CAAO,KAAA;AACxB,UAAA,KAAA,MAAW,OAAO,QAAA,EAAU;AAC1B,YAAA,MAAM,UAAA,GAAa,SAAS,GAAG,CAAA;AAC/B,YAAA,IAAI,eAAA,CAAgB,SAAS,UAAA,EAAY;AACvC,cAAA,MAAM,UAAA,GAAa,SAAS,GAAG,CAAA;AAC/B,cAAA,IAAI,UAAA,EAAY;AACd,gBAAA,KAAA,CAAM,eAAA,GAAkB,UAAA;AAAA,cAC1B;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,MAAA,OAAO,KAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,MAAM,OAAA,GAAU,CAAC,cAAc,CAAA;AAC/B,MAAA,IAAI,OAAO,IAAA,EAAM,OAAA,CAAQ,KAAK,CAAA,cAAA,EAAiB,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AAC5D,MAAA,MAAM,SAAS,SAAA,CAAU,KAAA;AACzB,MAAA,IAAI,MAAA,EAAQ,OAAA,CAAQ,IAAA,CAAK,CAAA,cAAA,EAAiB,MAAM,CAAA,CAAE,CAAA;AAClD,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAe,CAAA;AACrD,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIjB,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,QAAA,OAAO,MAAA,CAAO,MAAA,CAAO,eAAA,CAAgB,KAAK,CAAA;AAAA,MAC5C;AACA,MAAA,OAAO,CAAA,EAAG,gBAAgB,KAAK,CAAA,CAAA,CAAA;AAAA,IACjC,CAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,MAAM,WAAW,WAAA,CAAY,KAAA;AAC7B,MAAA,MAAM,eAAwB,EAAC;AAC/B,MAAA,IAAI,MAAA,CAAO,UAAA,IAAc,MAAA,CAAO,QAAA,EAAU;AACxC,QAAA,YAAA,CAAa,KAAKC,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,4BAA2B,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,UAAA,EAAY,CAAC,CAAC,CAAC,CAAA;AAAA,MACtH;AAEA,MAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,QAC/B,KAAA,EAAO;AAAA,OACT,EAAG;AAAA,QACDA,YAAY,KAAA,EAAO;AAAA,UACjB,KAAA,EAAO,qBAAA;AAAA,UACP,KAAA,EAAO;AAAA,WACN,YAAY;AAAA,OAChB,CAAC,CAAA;AAEF,MAAA,IAAI,MAAA,CAAO,QAAA,IAAY,CAAC,MAAA,CAAO,UAAA,EAAY;AACzC,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,UAC/B,KAAA,EAAO;AAAA,SACT,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,UAAA,EAAY,CAAC,CAAC,CAAC,CAAA;AAAA,MAC7C;AAEA,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,MAAM,MAAA,GAAS,EAAA,GAAK,MAAA,CAAO,WAAA,GAAc,CAAA;AACzC,MAAA,MAAM,aAAA,GAAgB,CAAA,GAAI,IAAA,CAAK,EAAA,GAAK,MAAA;AACpC,MAAA,MAAM,gBAAA,GAAmB,aAAA,GAAiB,eAAA,CAAgB,KAAA,GAAQ,GAAA,GAAO,aAAA;AACzE,MAAA,MAAM,WAAW,WAAA,CAAY,KAAA;AAE7B,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,QAC/B,KAAA,EAAO,sBAAA;AAAA,QACP,OAAA,EAAS,aAAA;AAAA,QACT,OAAO,MAAA,CAAO,KAAA;AAAA,QACd,QAAQ,MAAA,CAAO;AAAA,OACjB,EAAG;AAAA,QACDA,YAAY,MAAA,EAAQ;AAAA,UAClB,KAAA,EAAO,4BAAA;AAAA,UACP,GAAG,CAAA,aAAA,EAAgB,MAAM,CAAA,GAAA,EAAM,MAAM,IAAI,MAAM,CAAA,SAAA,EAAY,MAAA,GAAS,CAAC,MAAM,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,UAAA,EAAa,SAAS,CAAC,CAAA,CAAA;AAAA,UAClH,MAAA,EAAQ,SAAA;AAAA,UACR,aAAa,MAAA,CAAO,WAAA;AAAA,UACpB,IAAA,EAAM;AAAA,SACR,EAAG,EAAE,CAAA;AAAA,QACLA,YAAY,MAAA,EAAQ;AAAA,UAClB,KAAA,EAAO,2BAAA;AAAA,UACP,GAAG,CAAA,aAAA,EAAgB,MAAM,CAAA,GAAA,EAAM,MAAM,IAAI,MAAM,CAAA,SAAA,EAAY,MAAA,GAAS,CAAC,MAAM,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,UAAA,EAAa,SAAS,CAAC,CAAA,CAAA;AAAA,UAClH,MAAA,EAAQ,SAAS,eAAA,IAAmB,SAAA;AAAA,UACpC,aAAa,MAAA,CAAO,WAAA;AAAA,UACpB,IAAA,EAAM,MAAA;AAAA,UACN,eAAA,EAAiB,CAAA,EAAG,aAAa,CAAA,IAAA,EAAO,aAAa,CAAA,EAAA,CAAA;AAAA,UACrD,gBAAA,EAAkB,GAAG,gBAAgB,CAAA,EAAA,CAAA;AAAA,UACrC,eAAe,MAAA,CAAO;AAAA,SACxB,EAAG,EAAE;AAAA,OACN,CAAC,CAAA;AAEF,MAAA,IAAI,OAAO,QAAA,EAAU;AACnB,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,UAC/B,KAAA,EAAO;AAAA,SACT,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,IAAI,UAAA,EAAY,CAAC,CAAC,CAAC,CAAA;AAAA,MAC7C;AAEA,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,OAAA;AAEJ,MAAA,IAAI,MAAA,CAAO,IAAA,KAAS,QAAA,IAAY,MAAA,CAAO,SAAS,WAAA,EAAa;AAC3D,QAAA,OAAA,GAAU,YAAA,EAAa;AAAA,MACzB,CAAA,MAAO;AACL,QAAA,OAAA,GAAU,UAAA,EAAW;AAAA,MACvB;AAEA,MAAA,OAAOA,YAAY,KAAA,EAAO;AAAA,QACxB,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,YAAA,EAAc,OAAO,SAAA,IAAuB,UAAA;AAAA,QAC5C,oBAAoB,MAAA,CAAO,eAAA;AAAA,QAC3B,IAAA,EAAM,aAAA;AAAA,QACN,eAAA,EAAiB,MAAA,CAAO,eAAA,CAAgB,KAAK,CAAA;AAAA,QAC7C,eAAA,EAAiB,GAAA;AAAA,QACjB,eAAA,EAAiB,KAAA;AAAA,QACjB,OAAO,gBAAA,EAAiB;AAAA,QACxB,OAAO,gBAAA;AAAiB,SACvB,OAAO,CAAA;AAAA,IACZ,CAAA;AAAA,EACF;AACF,CAAC;ACrLM,IAAM,SAASH,eAAAA,CAAgB;AAAA,EACpC,IAAA,EAAM,WAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IACvC,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IAChC,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,GAAA,EAAI;AAAA,IAClC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IACjC,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC3C,iBAAA,EAAmB,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAClD,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,SAAA,EAAU;AAAA,IAC9C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC3C,WAAA,EAAa,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IAC5C,aAAA,EAAe,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IACpD,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,KAAA,EAAO,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACvC,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACpC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC9C,WAAA,EAAa,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,EAAU;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC/C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAC9C,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAClD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,IAAA,EAAK,EAAG;AAC9C,IAAA,MAAM,MAAA,GAAS,KAAA;AAEf,IAAA,MAAM,QAAQc,QAAAA,CAAS;AAAA,MACrB,UAAA,EAAY,CAAA;AAAA,MACZ,WAAA,EAAa,CAAA;AAAA,MACb,QAAA,EAAU,KAAA;AAAA,MACV,WAAA,EAAa;AAAA,KACd,CAAA;AAED,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,UAAU,CAAA,EAAG;AACpC,UAAA,KAAA,CAAM,UAAA,GAAa,MAAA,CAAO,UAAA,CAAW,CAAC,KAAK,MAAA,CAAO,GAAA;AAClD,UAAA,KAAA,CAAM,WAAA,GAAc,MAAA,CAAO,UAAA,CAAW,CAAC,KAAK,MAAA,CAAO,GAAA;AAAA,QACrD,CAAA,MAAO;AACL,UAAA,KAAA,CAAM,aAAa,MAAA,CAAO,GAAA;AAC1B,UAAA,KAAA,CAAM,cAAc,MAAA,CAAO,GAAA;AAAA,QAC7B;AAAA,MACF,CAAA,MAAO;AACL,QAAA,IAAI,OAAO,MAAA,CAAO,UAAA,KAAe,QAAA,EAAU;AACzC,UAAA,KAAA,CAAM,aAAa,MAAA,CAAO,UAAA;AAAA,QAC5B,CAAA,MAAO;AACL,UAAA,KAAA,CAAM,aAAa,MAAA,CAAO,GAAA;AAAA,QAC5B;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,UAAA,EAAW;AAEX,IAAAC,KAAAA,CAAM,MAAM,MAAA,CAAO,UAAA,EAAY,MAAM;AACnC,MAAA,UAAA,EAAW;AAAA,IACb,CAAC,CAAA;AAED,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAkB;AACrC,MAAA,IAAI,OAAO,aAAA,EAAe;AACxB,QAAA,OAAO,MAAA,CAAO,cAAc,KAAK,CAAA;AAAA,MACnC;AACA,MAAA,OAAO,OAAO,KAAK,CAAA;AAAA,IACrB,CAAA;AAEA,IAAA,MAAM,iBAAA,GAAoB,CAAC,OAAA,KAAoB;AAC7C,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,GAAA,GAAM,MAAA,CAAO,GAAA;AAClC,MAAA,IAAI,KAAA,GAAS,OAAA,GAAU,GAAA,GAAO,KAAA,GAAQ,MAAA,CAAO,GAAA;AAE7C,MAAA,IAAI,MAAA,CAAO,OAAO,CAAA,EAAG;AACnB,QAAA,KAAA,GAAQ,KAAK,KAAA,CAAM,KAAA,GAAQ,MAAA,CAAO,IAAI,IAAI,MAAA,CAAO,IAAA;AAAA,MACnD;AAEA,MAAA,KAAA,GAAQ,IAAA,CAAK,IAAI,MAAA,CAAO,GAAA,EAAK,KAAK,GAAA,CAAI,MAAA,CAAO,GAAA,EAAK,KAAK,CAAC,CAAA;AACxD,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAkB;AAC3C,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,GAAA,GAAM,MAAA,CAAO,GAAA;AAClC,MAAA,OAAA,CAAS,KAAA,GAAQ,MAAA,CAAO,GAAA,IAAO,KAAA,GAAS,GAAA;AAAA,IAC1C,CAAA;AAEA,IAAA,MAAM,eAAeC,QAAAA,CAAS,MAAM,iBAAA,CAAkB,KAAA,CAAM,UAAU,CAAC,CAAA;AACvE,IAAA,MAAM,gBAAgBA,QAAAA,CAAS,MAAM,iBAAA,CAAkB,KAAA,CAAM,WAAW,CAAC,CAAA;AAEzE,IAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAAkB;AACpC,MAAA,OAAO,IAAA,CAAK,IAAI,MAAA,CAAO,GAAA,EAAK,KAAK,GAAA,CAAI,MAAA,CAAO,GAAA,EAAK,KAAK,CAAC,CAAA;AAAA,IACzD,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,OAAO,QAAA,EAAU;AAErB,MAAA,IAAI,QAAA;AAEJ,MAAA,QAAQ,MAAM,GAAA;AAAK,QACjB,KAAK,WAAA;AAAA,QACL,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAW,UAAA,CAAW,KAAA,CAAM,UAAA,GAAa,MAAA,CAAO,IAAI,CAAA;AACpD,UAAA;AAAA,QACF,KAAK,YAAA;AAAA,QACL,KAAK,SAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAW,UAAA,CAAW,KAAA,CAAM,UAAA,GAAa,MAAA,CAAO,IAAI,CAAA;AACpD,UAAA;AAAA,QACF,KAAK,MAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAW,MAAA,CAAO,GAAA;AAClB,UAAA;AAAA,QACF,KAAK,KAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAW,MAAA,CAAO,GAAA;AAClB,UAAA;AAAA,QACF;AACE,UAAA,MAAA,CAAO,YAAY,KAAK,CAAA;AACxB,UAAA;AAAA;AAGJ,MAAA,IAAI,QAAA,KAAa,MAAM,UAAA,EAAY;AACjC,QAAA,KAAA,CAAM,UAAA,GAAa,QAAA;AACnB,QAAA,KAAA,CAAM,WAAA,GAAc,IAAA;AAEpB,QAAA,IAAI,CAAC,OAAO,KAAA,EAAO;AACjB,UAAA,IAAA,CAAK,mBAAA,EAAqB,MAAM,UAAU,CAAA;AAC1C,UAAA,IAAA,CAAK,OAAA,EAAS,MAAM,UAAU,CAAA;AAC9B,UAAA,MAAA,CAAO,OAAA,GAAU,MAAM,UAAU,CAAA;AAAA,QACnC;AAEA,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,KAAA,CAAM,WAAA,GAAc,KAAA;AAAA,QACtB,GAAG,IAAI,CAAA;AAAA,MACT;AAEA,MAAA,MAAA,CAAO,YAAY,KAAK,CAAA;AAAA,IAC1B,CAAA;AAEA,IAAA,MAAM,eAAA,GAAkB,CAAC,MAAA,KAAuB;AAC9C,MAAA,IAAI,OAAO,QAAA,EAAU;AACrB,MAAA,KAAA,CAAM,QAAA,GAAW,IAAA;AACjB,MAAA,KAAA,CAAM,WAAA,GAAc,IAAA;AACpB,MAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,eAAe,CAAA;AACtD,MAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAAA,IACpD,CAAA;AAEA,IAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAsB;AAC7C,MAAA,IAAI,CAAC,MAAM,QAAA,EAAU;AAErB,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,aAAa,CAAA;AACnD,MAAA,IAAI,CAAC,MAAA,EAAQ;AAEb,MAAA,MAAM,IAAA,GAAO,OAAO,qBAAA,EAAsB;AAC1C,MAAA,IAAI,OAAA;AAEJ,MAAA,IAAI,OAAO,QAAA,EAAU;AACnB,QAAA,OAAA,GAAA,CAAY,IAAA,CAAK,MAAA,GAAS,KAAA,CAAM,OAAA,IAAW,KAAK,MAAA,GAAU,GAAA;AAAA,MAC5D,CAAA,MAAO;AACL,QAAA,OAAA,GAAA,CAAY,KAAA,CAAM,OAAA,GAAU,IAAA,CAAK,IAAA,IAAQ,KAAK,KAAA,GAAS,GAAA;AAAA,MACzD;AAEA,MAAA,OAAA,GAAU,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,GAAA,EAAK,OAAO,CAAC,CAAA;AAC5C,MAAA,MAAM,QAAA,GAAW,kBAAkB,OAAO,CAAA;AAE1C,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,QAAA,GAAW,MAAM,UAAU,CAAA;AAClD,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,QAAA,GAAW,MAAM,WAAW,CAAA;AAEnD,QAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,UAAA,KAAA,CAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,QAAA,EAAU,MAAM,WAAW,CAAA;AAAA,QACzD,CAAA,MAAO;AACL,UAAA,KAAA,CAAM,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,QAAA,EAAU,MAAM,UAAU,CAAA;AAAA,QACzD;AAEA,QAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,CAAM,UAAA,EAAY,MAAM,WAAW,CAAA;AAC1D,QAAA,IAAA,CAAK,qBAAqB,aAAoB,CAAA;AAC9C,QAAA,IAAA,CAAK,SAAS,aAAoB,CAAA;AAClC,QAAA,MAAA,CAAO,UAAU,aAAoB,CAAA;AAAA,MACvC,CAAA,MAAO;AACL,QAAA,KAAA,CAAM,UAAA,GAAa,QAAA;AACnB,QAAA,IAAA,CAAK,mBAAA,EAAqB,MAAM,UAAU,CAAA;AAC1C,QAAA,IAAA,CAAK,OAAA,EAAS,MAAM,UAAU,CAAA;AAC9B,QAAA,MAAA,CAAO,OAAA,GAAU,MAAM,UAAU,CAAA;AAAA,MACnC;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,IAAI,CAAC,MAAM,QAAA,EAAU;AACrB,MAAA,KAAA,CAAM,QAAA,GAAW,KAAA;AACjB,MAAA,KAAA,CAAM,WAAA,GAAc,KAAA;AACpB,MAAA,QAAA,CAAS,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACzD,MAAA,QAAA,CAAS,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAErD,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,CAAM,UAAA,EAAY,MAAM,WAAW,CAAA;AAC1D,QAAA,IAAA,CAAK,UAAU,aAAoB,CAAA;AACnC,QAAA,MAAA,CAAO,WAAW,aAAoB,CAAA;AAAA,MACxC,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,QAAA,EAAU,MAAM,UAAU,CAAA;AAC/B,QAAA,MAAA,CAAO,QAAA,GAAW,MAAM,UAAU,CAAA;AAAA,MACpC;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,MAAM,OAAA,GAAU,CAAC,YAAY,CAAA;AAC7B,MAAA,IAAI,MAAA,CAAO,QAAA,EAAU,OAAA,CAAQ,IAAA,CAAK,sBAAsB,CAAA;AACxD,MAAA,IAAI,MAAA,CAAO,QAAA,EAAU,OAAA,CAAQ,IAAA,CAAK,sBAAsB,CAAA;AACxD,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,MAAA,EAAQ;AACpC,QAAA,KAAA,CAAM,SAAS,MAAA,CAAO,MAAA;AAAA,MACxB;AACA,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIf,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,IAAI,CAAC,MAAA,CAAO,SAAA,EAAW,OAAO,EAAC;AAE/B,MAAA,MAAM,QAAiB,EAAC;AACxB,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,GAAA,GAAM,MAAA,CAAO,GAAA;AAClC,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,OAAO,IAAI,CAAA;AAEhD,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,SAAA,EAAW,CAAA,EAAA,EAAK;AACnC,QAAA,MAAM,OAAA,GAAW,IAAI,SAAA,GAAa,GAAA;AAClC,QAAA,KAAA,CAAM,IAAA,CAAKC,YAAY,KAAA,EAAO;AAAA,UAC5B,KAAA,EAAO,kBAAA;AAAA,UACP,KAAA,EAAO,MAAA,CAAO,QAAA,GACV,EAAE,MAAA,EAAQ,CAAA,EAAG,OAAO,CAAA,CAAA,CAAA,EAAI,GACxB,EAAE,IAAA,EAAM,CAAA,EAAG,OAAO,CAAA,CAAA,CAAA;AAAI,SAC5B,EAAG,EAAE,CAAC,CAAA;AAAA,MACR;AAEA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAW,YAAA,CAAa,KAAA;AAC9B,MAAA,MAAM,YAAY,aAAA,CAAc,KAAA;AAChC,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,MAAM,iBAA0B,EAAC;AAEjC,MAAA,cAAA,CAAe,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,QACrC,KAAA,EAAO,iBAAA;AAAA,QACP,OAAO,MAAA,CAAO,KAAA,GACT,OAAO,QAAA,GACJ,EAAE,QAAQ,CAAA,EAAG,QAAQ,KAAK,MAAA,EAAQ,CAAA,EAAG,YAAY,QAAQ,CAAA,CAAA,CAAA,KACzD,EAAE,IAAA,EAAM,GAAG,QAAQ,CAAA,CAAA,CAAA,EAAK,OAAO,CAAA,EAAG,SAAA,GAAY,QAAQ,CAAA,CAAA,CAAA,EAAI,GAC7D,OAAO,QAAA,GACJ,EAAE,QAAQ,IAAA,EAAM,MAAA,EAAQ,GAAG,QAAQ,CAAA,CAAA,CAAA,KACnC,EAAE,IAAA,EAAM,MAAM,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAA;AAAI,OAC9C,EAAG,EAAE,CAAC,CAAA;AAEN,MAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,MAAA,cAAA,CAAe,IAAA,CAAK,GAAG,KAAK,CAAA;AAE5B,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,MAAM,QAAA,GAAW,OAAO,WAAA,GACpBA,WAAAA,CAAY,OAAO,EAAE,KAAA,EAAO,uBAAsB,EAAG,CAACA,YAAY,MAAA,EAAQ,IAAI,WAAA,CAAY,KAAA,CAAM,UAAU,CAAC,CAAC,CAAC,CAAA,GAC7G,IAAA;AACJ,QAAA,MAAM,QAAA,GAAW,OAAO,WAAA,GACpBA,WAAAA,CAAY,OAAO,EAAE,KAAA,EAAO,uBAAsB,EAAG,CAACA,YAAY,MAAA,EAAQ,IAAI,WAAA,CAAY,KAAA,CAAM,WAAW,CAAC,CAAC,CAAC,CAAA,GAC9G,IAAA;AAEJ,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,cAAA,CAAe,IAAA,CAAKA,WAAAA,CAAY,KAAA,EAAOC,cAAAA,CAAe,kBAAA,CAAmB;AAAA,YACvE,SAAA,EAAW,OAAO,SAAA,IAAa,YAAA;AAAA,YAC/B,UAAU,MAAA,CAAO,QAAA;AAAA,YACjB,OAAO,KAAA,CAAM,UAAA;AAAA,YACb,KAAK,MAAA,CAAO,GAAA;AAAA,YACZ,KAAK,MAAA,CAAO;AAAA,WACb,CAAA,EAAG;AAAA,YACF,KAAA,EAAO,oBAAA;AAAA,YACP,KAAA,EAAO,MAAA,CAAO,QAAA,GACV,EAAE,MAAA,EAAQ,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAA,EAAI,GACzB,EAAE,IAAA,EAAM,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAA,EAAI;AAAA,YAC3B,SAAA,EAAW;AAAA,WACZ,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;AAAA,QACjB;AAEA,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,cAAA,CAAe,IAAA,CAAKD,WAAAA,CAAY,KAAA,EAAOC,cAAAA,CAAe,kBAAA,CAAmB;AAAA,YACvE,SAAA,EAAW,aAAA;AAAA,YACX,UAAU,MAAA,CAAO,QAAA;AAAA,YACjB,OAAO,KAAA,CAAM,WAAA;AAAA,YACb,KAAK,MAAA,CAAO,GAAA;AAAA,YACZ,KAAK,MAAA,CAAO;AAAA,WACb,CAAA,EAAG;AAAA,YACF,KAAA,EAAO,oBAAA;AAAA,YACP,KAAA,EAAO,MAAA,CAAO,QAAA,GACV,EAAE,MAAA,EAAQ,CAAA,EAAG,SAAS,CAAA,CAAA,CAAA,EAAI,GAC1B,EAAE,IAAA,EAAM,CAAA,EAAG,SAAS,CAAA,CAAA,CAAA,EAAI;AAAA,YAC5B,SAAA,EAAW;AAAA,WACZ,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;AAAA,QACjB;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAM,OAAA,GAAU,OAAO,WAAA,GACnBD,WAAAA,CAAY,OAAO,EAAE,KAAA,EAAO,uBAAsB,EAAG,CAACA,YAAY,MAAA,EAAQ,IAAI,WAAA,CAAY,KAAA,CAAM,UAAU,CAAC,CAAC,CAAC,CAAA,GAC7G,IAAA;AAEJ,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,cAAA,CAAe,IAAA,CAAKA,WAAAA,CAAY,KAAA,EAAOC,cAAAA,CAAe,kBAAA,CAAmB;AAAA,YACvE,SAAA,EAAW,OAAO,SAAA,IAAa,OAAA;AAAA,YAC/B,iBAAiB,MAAA,CAAO,eAAA;AAAA,YACxB,cAAc,MAAA,CAAO,YAAA;AAAA,YACrB,aAAa,MAAA,CAAO,WAAA;AAAA,YACpB,UAAU,MAAA,CAAO,QAAA;AAAA,YACjB,UAAU,MAAA,CAAO,QAAA;AAAA,YACjB,OAAO,KAAA,CAAM,UAAA;AAAA,YACb,KAAK,MAAA,CAAO,GAAA;AAAA,YACZ,KAAK,MAAA,CAAO;AAAA,WACb,CAAA,EAAG;AAAA,YACF,KAAA,EAAO,oBAAA;AAAA,YACP,KAAA,EAAO,MAAA,CAAO,QAAA,GACV,EAAE,MAAA,EAAQ,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAA,EAAI,GACzB,EAAE,IAAA,EAAM,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAA,EAAI;AAAA,YAC3B,SAAA,EAAW;AAAA,WACZ,CAAA,EAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AAAA,QAChB;AAAA,MACF;AAEA,MAAA,QAAA,CAAS,IAAA,CAAKD,YAAY,KAAA,EAAO;AAAA,QAC/B,KAAA,EAAO,oBAAA;AAAA,QACP,WAAA,EAAa;AAAA,OACf,EAAG,cAAc,CAAC,CAAA;AAElB,MAAA,IAAI,MAAA,CAAO,SAAA,IAAa,CAAC,MAAA,CAAO,KAAA,EAAO;AACrC,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,UAC/B,KAAA,EAAO;AAAA,SACT,EAAG;AAAA,UACDA,YAAY,OAAA,EAAS;AAAA,YACnB,IAAA,EAAM,QAAA;AAAA,YACN,KAAA,EAAO,CAAA,qBAAA,EAAwB,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,YAC/C,OAAO,KAAA,CAAM,UAAA;AAAA,YACb,KAAK,MAAA,CAAO,GAAA;AAAA,YACZ,KAAK,MAAA,CAAO,GAAA;AAAA,YACZ,MAAM,MAAA,CAAO,IAAA;AAAA,YACb,UAAU,MAAA,CAAO,QAAA;AAAA,YACjB,OAAA,EAAS,CAAC,CAAA,KAAa;AACrB,cAAA,MAAM,QAAQ,CAAA,CAAE,MAAA;AAChB,cAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AACpC,cAAA,IAAI,CAAC,KAAA,CAAM,KAAK,CAAA,EAAG;AACjB,gBAAA,KAAA,CAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,GAAA,EAAK,KAAK,GAAA,CAAI,MAAA,CAAO,GAAA,EAAK,KAAK,CAAC,CAAA;AACnE,gBAAA,IAAA,CAAK,mBAAA,EAAqB,MAAM,UAAU,CAAA;AAAA,cAC5C;AAAA,YACF;AAAA,WACD;AAAA,SACF,CAAC,CAAA;AAAA,MACJ;AAEA,MAAA,OAAOA,YAAY,KAAA,EAAO;AAAA,QACxB,OAAO,cAAA,EAAe;AAAA,QACtB,OAAO,cAAA,EAAe;AAAA,QACtB,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,SAAA,EAAW;AAAA,SACV,QAAQ,CAAA;AAAA,IACb,CAAA;AAAA,EACF;AACF,CAAC;ACxXM,IAAM,SAASH,eAAAA,CAAgB;AAAA,EACpC,IAAA,EAAM,WAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,SAAA,EAAU;AAAA,IAC1D,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,QAAA,EAAS;AAAA,IACzC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAClC,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACjC,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACpC,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACjC,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,OAAA,EAAQ;AAAA,IACtC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GAChD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAG;AAC/C,IAAA,MAAM,MAAA,GAAS,KAAA;AACf,IAAA,MAAM,YAAA,GAAeM,OAAO,IAAI,CAAA;AAEhC,IAAA,MAAM,UAAU,MAAM;AACpB,MAAA,IAAI,OAAO,MAAA,CAAO,IAAA,KAAS,QAAA,EAAU;AACnC,QAAA,OAAO,CAAA,EAAG,OAAO,IAAI,CAAA,EAAA,CAAA;AAAA,MACvB;AACA,MAAA,MAAM,OAAA,GAAkC;AAAA,QACtC,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO;AAAA,OACT;AACA,MAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA,IAAK,MAAA;AAAA,IACjC,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,OAAO,OAAA,EAAS;AAClB,QAAA,MAAM,MAAA,GAAS,OAAO,OAAA,EAAQ;AAC9B,QAAA,IAAI,WAAW,KAAA,EAAO;AACpB,UAAA;AAAA,QACF;AAAA,MACF;AACA,MAAA,YAAA,CAAa,IAAI,KAAK,CAAA;AAAA,IACxB,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,MAAM,OAAA,GAAU,CAAC,YAAY,CAAA;AAC7B,MAAA,IAAI,OAAO,KAAA,EAAO,OAAA,CAAQ,KAAK,CAAA,YAAA,EAAe,MAAA,CAAO,KAAK,CAAA,CAAE,CAAA;AAC5D,MAAA,IAAI,OAAO,MAAA,CAAO,IAAA,KAAS,QAAA,EAAU;AACnC,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,YAAA,EAAe,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AAAA,MAC3C;AACA,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,MAAM,KAAA,GAAgC;AAAA,QACpC,QAAQ,OAAA,EAAQ;AAAA,QAChB,OAAO,OAAA;AAAQ,OACjB;AACA,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIL,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,MAAA,CAAO,GAAA,IAAO,YAAA,EAAa,EAAG;AAChC,QAAA,QAAA,CAAS,IAAA,CAAKC,YAAY,KAAA,EAAO;AAAA,UAC/B,KAAA,EAAO,iBAAA;AAAA,UACP,KAAK,MAAA,CAAO,GAAA;AAAA,UACZ,MAAA,EAAQ,OAAO,MAAA,IAAU,MAAA;AAAA,UACzB,GAAA,EAAK,OAAO,GAAA,IAAO,MAAA;AAAA,UACnB,KAAA,EAAO;AAAA,YACL,WAAW,MAAA,CAAO;AAAA,WACpB;AAAA,UACA,OAAA,EAAS;AAAA,SACX,EAAG,EAAE,CAAC,CAAA;AAAA,MACR,CAAA,MAAA,IAAW,OAAO,IAAA,EAAM;AACtB,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UAChC,KAAA,EAAO,CAAC,kBAAA,EAAoB,MAAA,CAAO,IAAI;AAAA,SACzC,EAAG,EAAE,CAAC,CAAA;AAAA,MACR,CAAA,MAAA,IAAW,MAAM,OAAA,EAAS;AACxB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,QAAA,CAAS,IAAA,CAAK,GAAI,WAAuB,CAAA;AAAA,QAC3C,WAAW,WAAA,EAAa;AACtB,UAAA,QAAA,CAAS,KAAK,WAAoB,CAAA;AAAA,QACpC;AAAA,MACF;AAEA,MAAA,OAAOA,WAAAA,CAAY,QAAQC,cAAAA,CAAe;AAAA,QACxC,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,cAAc,MAAA,CAAO,SAAA;AAAA,QACrB,oBAAoB,MAAA,CAAO;AAAA,OAC7B,EAAG;AAAA,QACD,OAAO,cAAA,EAAe;AAAA,QACtB,OAAO,cAAA;AAAe,OACvB,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;AC7GM,IAAM,OAAOJ,eAAAA,CAAgB;AAAA,EAClC,IAAA,EAAM,SAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACpC,WAAW,EAAE,IAAA,EAAM,QAAe,OAAA,EAAS,OAAO,EAAC,CAAA,EAAG;AAAA,IACtD,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,QAAA,EAAS;AAAA,IAC1C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GAC/C;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAG;AAC/C,IAAA,MAAM,MAAA,GAAS,KAAA;AAEf,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,MAAM,OAAA,GAAU,CAAC,UAAU,CAAA;AAC3B,MAAA,IAAI,OAAO,MAAA,EAAQ,OAAA,CAAQ,KAAK,CAAA,iBAAA,EAAoB,MAAA,CAAO,MAAM,CAAA,CAAE,CAAA;AACnE,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,MAAA,CAAO,MAAA,IAAU,KAAA,CAAM,MAAA,EAAQ;AACjC,QAAA,MAAM,gBAAyB,EAAC;AAChC,QAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,UAAA,MAAM,WAAA,GAAc,MAAM,MAAA,EAAO;AACjC,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,YAAA,aAAA,CAAc,IAAA,CAAK,GAAI,WAAuB,CAAA;AAAA,UAChD,WAAW,WAAA,EAAa;AACtB,YAAA,aAAA,CAAc,KAAK,WAAoB,CAAA;AAAA,UACzC;AAAA,QACF,CAAA,MAAA,IAAW,OAAO,MAAA,EAAQ;AACxB,UAAA,aAAA,CAAc,KAAKC,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,QAC3D;AACA,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,UAC/B,KAAA,EAAO;AAAA,SACT,EAAG,aAAa,CAAC,CAAA;AAAA,MACnB;AAEA,MAAA,MAAM,cAAuB,EAAC;AAC9B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,WAAA,CAAY,IAAA,CAAK,GAAI,WAAuB,CAAA;AAAA,QAC9C,WAAW,WAAA,EAAa;AACtB,UAAA,WAAA,CAAY,KAAK,WAAoB,CAAA;AAAA,QACvC;AAAA,MACF;AACA,MAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,QAC/B,KAAA,EAAO,gBAAA;AAAA,QACP,OAAO,MAAA,CAAO;AAAA,OAChB,EAAG,WAAW,CAAC,CAAA;AAEf,MAAA,OAAOA,WAAAA,CAAY,OAAOC,cAAAA,CAAe;AAAA,QACvC,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,cAAc,MAAA,CAAO,SAAA;AAAA,QACrB,oBAAoB,MAAA,CAAO;AAAA,OAC7B,EAAG;AAAA,QACD,OAAO,YAAA,EAAa;AAAA,QACpB,OAAO,YAAA;AAAa,OACrB,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;AC9EM,IAAM,WAAWJ,eAAAA,CAAgB;AAAA,EACtC,IAAA,EAAM,aAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACzC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAgD,SAAS,MAAA,EAAO;AAAA,IAC9E,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GAC/C;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAG;AAC/C,IAAA,MAAM,MAAA,GAAS,KAAA;AAEf,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,MAAM,OAAA,GAAU,CAAC,cAAc,CAAA;AAC/B,MAAA,IAAI,MAAA,CAAO,OAAA,EAAS,OAAA,CAAQ,IAAA,CAAK,uBAAuB,CAAA;AACxD,MAAA,IAAI,OAAO,IAAA,EAAM,OAAA,CAAQ,KAAK,CAAA,cAAA,EAAiB,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AAC5D,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,QAAA,CAAS,IAAA,CAAK,GAAI,WAAuB,CAAA;AAAA,QAC3C;AAAA,MACF;AAEA,MAAA,OAAOC,WAAAA,CAAY,OAAOC,cAAAA,CAAe;AAAA,QACvC,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,cAAc,MAAA,CAAO,SAAA;AAAA,QACrB,oBAAoB,MAAA,CAAO;AAAA,OAC7B,EAAG;AAAA,QACD,OAAO,gBAAA,EAAiB;AAAA,QACxB,OAAO,gBAAA;AAAiB,OACzB,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;ACzDM,IAAM,eAAeJ,eAAAA,CAAgB;AAAA,EAC1C,IAAA,EAAM,iBAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAuE,SAAS,EAAA,EAAG;AAAA,IACjG,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAA+C,SAAS,SAAA,EAAU;AAAA,IAChF,GAAA,EAAK,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IAClD,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAkC,SAAS,QAAA,EAAS;AAAA,IACvE,aAAA,EAAe,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC/C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GAC/C;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAG;AAC/C,IAAA,MAAM,MAAA,GAAS,KAAA;AAEf,IAAA,MAAM,uBAAuB,MAAM;AACjC,MAAA,MAAM,OAAA,GAAU,CAAC,mBAAmB,CAAA;AACpC,MAAA,IAAI,OAAO,IAAA,EAAM,OAAA,CAAQ,KAAK,CAAA,mBAAA,EAAsB,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AACjE,MAAA,IAAI,MAAA,CAAO,IAAA,IAAQ,MAAA,CAAO,IAAA,KAAS,SAAA,UAAmB,IAAA,CAAK,CAAA,mBAAA,EAAsB,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AAC9F,MAAA,IAAI,OAAO,SAAA,EAAW,OAAA,CAAQ,KAAK,CAAA,mBAAA,EAAsB,MAAA,CAAO,SAAS,CAAA,CAAE,CAAA;AAC3E,MAAA,IAAI,MAAA,CAAO,aAAA,EAAe,OAAA,CAAQ,IAAA,CAAK,mCAAmC,CAAA;AAC1E,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,uBAAuB,MAAM;AACjC,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,KAAA,CAAM,2BAA2B,IAAI,MAAA,CAAO,KAAA;AAAA,MAC9C;AACA,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,IAAI,MAAM,GAAA,EAAK;AACb,QAAA,MAAM,UAAA,GAAa,MAAM,GAAA,EAAI;AAC7B,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA,EAAG;AAC7B,UAAA,OAAOC,YAAY,KAAA,EAAO,EAAE,KAAA,EAAO,wBAAA,IAA4B,UAAqB,CAAA;AAAA,QACtF;AAAA,MACF;AACA,MAAA,IAAI,OAAO,GAAA,EAAK;AACd,QAAA,IAAI,OAAO,MAAA,CAAO,GAAA,KAAQ,QAAA,EAAU;AAClC,UAAA,OAAOA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,wBAAA,EAAyB,EAAG,CAACI,eAAAA,CAAgB,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAAA,QAC9F;AACA,QAAA,OAAOJ,WAAAA,CAAY,OAAO,EAAE,KAAA,EAAO,0BAAyB,EAAG,CAAC,MAAA,CAAO,GAAY,CAAC,CAAA;AAAA,MACtF;AACA,MAAA,OAAOA,YAAY,KAAA,EAAO,EAAE,KAAA,EAAO,wBAAA,IAA4B,IAAI,CAAA;AAAA,IACrE,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,yBAAA,EAA0B,EAAG,IAAI,CAAC,CAAA;AAC5E,MAAA,QAAA,CAAS,IAAA,CAAK,WAAW,CAAA;AAEzB,MAAA,MAAM,kBAA2B,EAAC;AAElC,MAAA,IAAI,MAAA,CAAO,SAAA,IAAa,CAAC,MAAA,CAAO,aAAA,EAAe;AAC7C,QAAA,eAAA,CAAgB,IAAA,CAAKA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,8BAAA,EAA+B,EAAG,CAACI,eAAAA,CAAgB,MAAA,CAAO,SAAS,CAAC,CAAC,CAAC,CAAA;AAAA,MACzH;AAEA,MAAA,MAAM,kBAA2B,EAAC;AAClC,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,eAAA,CAAgB,IAAA,CAAK,GAAI,WAAuB,CAAA;AAAA,QAClD;AAAA,MACF;AACA,MAAA,eAAA,CAAgB,IAAA,CAAKJ,YAAY,KAAA,EAAO,EAAE,OAAO,4BAAA,EAA6B,EAAG,eAAe,CAAC,CAAA;AAEjG,MAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,4BAAA,EAA6B,EAAG,eAAe,CAAC,CAAA;AAE1F,MAAA,OAAOA,WAAAA,CAAY,OAAOC,cAAAA,CAAe;AAAA,QACvC,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,cAAc,MAAA,CAAO,SAAA;AAAA,QACrB,oBAAoB,MAAA,CAAO;AAAA,OAC7B,EAAG;AAAA,QACD,OAAO,oBAAA,EAAqB;AAAA,QAC5B,OAAO,oBAAA;AAAqB,OAC7B,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;AChGM,IAAM,QAAQJ,eAAAA,CAAgB;AAAA,EACnC,IAAA,EAAM,UAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IACnC,aAAA,EAAe,EAAE,IAAA,EAAM,MAAA,EAA4D,SAAS,SAAA,EAAU;AAAA,IACtG,YAAA,EAAc,EAAE,IAAA,EAAM,MAAA,EAAqE,SAAS,SAAA,EAAU;AAAA,IAC9G,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAA2C,SAAS,YAAA,EAAa;AAAA,IACpF,WAAA,EAAa,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC7C,MAAA,EAAQ,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IACxC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GACjD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAG;AAC/C,IAAA,MAAM,MAAA,GAAS,KAAA;AAEf,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,MAAM,OAAA,GAAU,CAAC,WAAW,CAAA;AAC5B,MAAA,IAAI,OAAO,SAAA,EAAW,OAAA,CAAQ,KAAK,CAAA,WAAA,EAAc,MAAA,CAAO,SAAS,CAAA,CAAE,CAAA;AACnE,MAAA,IAAI,MAAA,CAAO,MAAA,EAAQ,OAAA,CAAQ,IAAA,CAAK,mBAAmB,CAAA;AACnD,MAAA,IAAI,MAAA,CAAO,WAAA,EAAa,OAAA,CAAQ,IAAA,CAAK,yBAAyB,CAAA;AAC9D,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,QAAA,CAAS,IAAA,CAAK,GAAI,WAAuB,CAAA;AAAA,QAC3C;AAAA,MACF;AAEA,MAAA,OAAOC,WAAAA,CAAY,OAAOC,cAAAA,CAAe;AAAA,QACvC,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,cAAc,MAAA,CAAO,SAAA;AAAA,QACrB,oBAAoB,MAAA,CAAO,eAAA;AAAA,QAC3B,IAAA,EAAM;AAAA,OACR,EAAG;AAAA,QACD,OAAO,aAAA,EAAc;AAAA,QACrB,OAAO,aAAA;AAAc,OACtB,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;AChEM,IAAM,OAAOJ,eAAAA,CAAgB;AAAA,EAClC,IAAA,EAAM,SAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACzC,IAAA,EAAM,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACnD,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAqE,SAAS,EAAA,EAAG;AAAA,IACjG,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GAC/C;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAG;AAC/C,IAAA,MAAM,MAAA,GAAS,KAAA;AAEf,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,MAAM,OAAA,GAAU,CAAC,UAAU,CAAA;AAC3B,MAAA,IAAI,OAAO,MAAA,EAAQ,OAAA,CAAQ,KAAK,CAAA,UAAA,EAAa,MAAA,CAAO,MAAM,CAAA,CAAE,CAAA;AAC5D,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,IAAI,MAAM,IAAA,EAAM;AACd,QAAA,MAAM,WAAA,GAAc,MAAM,IAAA,EAAK;AAC/B,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,OAAOC,YAAY,KAAA,EAAO,EAAE,KAAA,EAAO,gBAAA,IAAoB,WAAsB,CAAA;AAAA,QAC/E;AAAA,MACF;AACA,MAAA,IAAI,OAAO,IAAA,EAAM;AACf,QAAA,IAAI,OAAO,MAAA,CAAO,IAAA,KAAS,QAAA,EAAU;AACnC,UAAA,OAAOA,WAAAA,CAAY,KAAA,EAAO,EAAE,KAAA,EAAO,gBAAA,EAAiB,EAAG,CAACI,eAAAA,CAAgB,MAAA,CAAO,IAAI,CAAC,CAAC,CAAA;AAAA,QACvF;AACA,QAAA,OAAOJ,WAAAA,CAAY,OAAO,EAAE,KAAA,EAAO,kBAAiB,EAAG,CAAC,MAAA,CAAO,IAAa,CAAC,CAAA;AAAA,MAC/E;AACA,MAAA,OAAOA,YAAY,KAAA,EAAO,EAAE,KAAA,EAAO,gBAAA,IAAoB,IAAI,CAAA;AAAA,IAC7D,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,QAAA,CAAS,IAAA,CAAK,YAAY,CAAA;AAE1B,MAAA,MAAM,kBAA2B,EAAC;AAElC,MAAA,IAAI,KAAA,CAAM,KAAA,IAAS,MAAA,CAAO,KAAA,EAAO;AAC/B,QAAA,MAAM,gBAAyB,EAAC;AAChC,QAAA,IAAI,MAAM,KAAA,EAAO;AACf,UAAA,MAAM,YAAA,GAAe,MAAM,KAAA,EAAM;AACjC,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,EAAG;AAC/B,YAAA,aAAA,CAAc,IAAA,CAAK,GAAI,YAAwB,CAAA;AAAA,UACjD;AAAA,QACF,CAAA,MAAO;AACL,UAAA,aAAA,CAAc,IAAA,CAAKI,eAAAA,CAAgB,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,QAClD;AACA,QAAA,eAAA,CAAgB,IAAA,CAAKJ,YAAY,KAAA,EAAO,EAAE,OAAO,iBAAA,EAAkB,EAAG,aAAa,CAAC,CAAA;AAAA,MACtF;AAEA,MAAA,IAAI,KAAA,CAAM,WAAA,IAAe,MAAA,CAAO,WAAA,EAAa;AAC3C,QAAA,MAAM,eAAwB,EAAC;AAC/B,QAAA,IAAI,MAAM,WAAA,EAAa;AACrB,UAAA,MAAM,WAAA,GAAc,MAAM,WAAA,EAAY;AACtC,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,YAAA,YAAA,CAAa,IAAA,CAAK,GAAI,WAAuB,CAAA;AAAA,UAC/C;AAAA,QACF,CAAA,MAAO;AACL,UAAA,YAAA,CAAa,IAAA,CAAKI,eAAAA,CAAgB,MAAA,CAAO,WAAW,CAAC,CAAA;AAAA,QACvD;AACA,QAAA,eAAA,CAAgB,IAAA,CAAKJ,YAAY,KAAA,EAAO,EAAE,OAAO,uBAAA,EAAwB,EAAG,YAAY,CAAC,CAAA;AAAA,MAC3F;AAEA,MAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,mBAAA,EAAoB,EAAG,eAAe,CAAC,CAAA;AAEjF,MAAA,OAAOA,WAAAA,CAAY,OAAOC,cAAAA,CAAe;AAAA,QACvC,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,YAAA,EAAc,MAAA,CAAO,SAAA,IAAa,MAAA,CAAO,KAAA;AAAA,QACzC,oBAAoB,MAAA,CAAO;AAAA,OAC7B,EAAG;AAAA,QACD,OAAO,YAAA,EAAa;AAAA,QACpB,OAAO,YAAA;AAAa,OACrB,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;ACtGM,IAAM,WAAWJ,eAAAA,CAAgB;AAAA,EACtC,IAAA,EAAM,aAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,YAAA,EAAc,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IACzC,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,OAAA,EAAQ;AAAA,IACzC,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAmC,SAAS,OAAA,EAAQ;AAAA,IACrE,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IACzC,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,GAAA,EAAK;AAAA,IACxC,iBAAA,EAAmB,EAAE,IAAA,EAAM,MAAA,EAAoC,SAAS,EAAA,EAAG;AAAA,IAC3E,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAA8C,SAAS,OAAA,EAAQ;AAAA,IAC9E,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAA6B,SAAS,EAAA,EAAG;AAAA,IACvD,IAAA,EAAM,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,IACrC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAA2C,SAAS,YAAA,EAAa;AAAA,IACpF,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GACjD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAG;AAC/C,IAAA,MAAM,MAAA,GAAS,KAAA;AAEf,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,MAAM,oBAA6B,EAAC;AACpC,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,iBAAA,CAAkB,IAAA,CAAK,GAAI,WAAuB,CAAA;AAAA,QACpD,WAAW,WAAA,EAAa;AACtB,UAAA,iBAAA,CAAkB,KAAK,WAAoB,CAAA;AAAA,QAC7C;AAAA,MACF;AACA,MAAA,QAAA,CAAS,IAAA,CAAKG,YAAY,KAAA,EAAO,EAAE,OAAO,yBAAA,EAA0B,EAAG,iBAAiB,CAAC,CAAA;AAEzF,MAAA,MAAM,mBAAmB,MAAM;AAC7B,QAAA,MAAM,OAAA,GAAU,CAAC,cAAc,CAAA;AAC/B,QAAA,IAAI,OAAO,IAAA,EAAM,OAAA,CAAQ,KAAK,CAAA,cAAA,EAAiB,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AAC5D,QAAA,IAAI,OAAO,SAAA,EAAW,OAAA,CAAQ,KAAK,CAAA,cAAA,EAAiB,MAAA,CAAO,SAAS,CAAA,CAAE,CAAA;AACtE,QAAA,IAAI,OAAO,iBAAA,EAAmB,OAAA,CAAQ,KAAK,CAAA,wBAAA,EAA2B,MAAA,CAAO,iBAAiB,CAAA,CAAE,CAAA;AAChG,QAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,QAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,MACzB,CAAA;AAEA,MAAA,MAAM,mBAAmB,MAAM;AAC7B,QAAA,MAAM,QAAgC,EAAC;AACvC,QAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,UAAA,KAAA,CAAM,SAAS,MAAA,CAAO,MAAA;AAAA,QACxB;AACA,QAAA,IAAI,OAAO,KAAA,EAAO;AAChB,UAAA,IAAIF,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,YAAA,OAAO,MAAA,CAAO,KAAA;AAAA,UAChB;AACA,UAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,YAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,UACnC;AAAA,QACF;AACA,QAAA,OAAO,KAAA;AAAA,MACT,CAAA;AAEA,MAAA,OAAOC,WAAAA,CAAY,OAAOC,cAAAA,CAAe;AAAA,QACvC,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,cAAc,MAAA,CAAO,SAAA;AAAA,QACrB,oBAAoB,MAAA,CAAO,eAAA;AAAA,QAC3B,IAAA,EAAM;AAAA,OACR,EAAG;AAAA,QACD,OAAO,gBAAA,EAAiB;AAAA,QACxB,OAAO,gBAAA;AAAiB,OACzB,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;ACxEM,IAAM,eAAeJ,eAAAA,CAAgB;AAAA,EAC1C,IAAA,EAAM,iBAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACnD,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA;AAAG,GAC/C;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAM,EAAG;AAC/C,IAAA,MAAM,MAAA,GAAS,KAAA;AAEf,IAAA,MAAM,uBAAuB,MAAM;AACjC,MAAA,MAAM,OAAA,GAAU,CAAC,mBAAmB,CAAA;AACpC,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAe,CAAA;AACrD,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,uBAAuB,MAAM;AACjC,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,EAAQ;AAClC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,UAAA,QAAA,CAAS,IAAA,CAAK,GAAI,WAAuB,CAAA;AAAA,QAC3C,WAAW,WAAA,EAAa;AACtB,UAAA,QAAA,CAAS,KAAK,WAAoB,CAAA;AAAA,QACpC;AAAA,MACF;AAEA,MAAA,OAAOC,WAAAA,CAAY,OAAOC,cAAAA,CAAe;AAAA,QACvC,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,YAAA,EAAe,MAAA,CAAO,SAAA,IAAyB,MAAA,CAAO,KAAA;AAAA,QACtD,oBAAoB,MAAA,CAAO;AAAA,OAC7B,EAAG;AAAA,QACD,OAAO,oBAAA,EAAqB;AAAA,QAC5B,OAAO,oBAAA;AAAqB,OAC7B,GAAG,QAAQ,CAAA;AAAA,IACd,CAAA;AAAA,EACF;AACF,CAAC;AC3DM,IAAM,aAAaJ,eAAAA,CAAgB;AAAA,EACxC,IAAA,EAAM,eAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,iBAAA,EAAmB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,cAAA,EAAK;AAAA,IACjD,gBAAA,EAAkB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,cAAA,EAAK;AAAA,IAChD,iBAAA,EAAmB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,SAAA,EAAU;AAAA,IACtD,gBAAA,EAAkB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC9C,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAClC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,IAClC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAChC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACvC,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IAC7C,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA,EAAU;AAAA,IAChD,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GACjD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAO,MAAK,EAAG;AACrD,IAAA,MAAM,MAAA,GAAS,KAAA;AACf,IAAA,MAAM,OAAA,GAAUM,OAAO,KAAK,CAAA;AAE5B,IAAA,MAAM,qBAAqB,MAAM;AAC/B,MAAA,MAAM,OAAA,GAAU,CAAC,gBAAgB,CAAA;AACjC,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAe,CAAA;AACrD,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,qBAAqB,MAAM;AAC/B,MAAA,MAAM,QAAgC,EAAC;AACvC,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,KAAA,CAAM,KAAA,GAAQ,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,EAAA,CAAA;AAAA,MAC/B;AACA,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIL,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB;AACA,QAAA,IAAIC,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,OAAA,CAAQ,IAAI,KAAK,CAAA;AACjB,MAAA,IAAA,CAAK,SAAS,CAAA;AACd,MAAA,MAAA,CAAO,SAAA,IAAY;AAAA,IACrB,CAAA;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,OAAA,CAAQ,IAAI,KAAK,CAAA;AACjB,MAAA,IAAA,CAAK,QAAQ,CAAA;AACb,MAAA,MAAA,CAAO,QAAA,IAAW;AAAA,IACpB,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,IAAI,MAAM,SAAA,EAAW;AACnB,QAAA,MAAM,UAAA,GAAa,MAAM,SAAA,EAAU;AACnC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA,EAAG;AAC7B,UAAA,QAAA,CAAS,IAAA,CAAKC,YAAY,KAAA,EAAO,EAAE,OAAO,2BAAA,EAA4B,EAAG,UAAqB,CAAC,CAAA;AAAA,QACjG;AAAA,MACF;AAEA,MAAA,MAAM,gBAAyB,EAAC;AAEhC,MAAA,MAAM,kBAA2B,EAAC;AAElC,MAAA,IAAI,CAAC,OAAO,QAAA,EAAU;AACpB,QAAA,MAAM,eAAwB,EAAC;AAC/B,QAAA,IAAI,MAAM,IAAA,EAAM;AACd,UAAA,MAAM,WAAA,GAAc,MAAM,IAAA,EAAK;AAC/B,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,YAAA,YAAA,CAAa,IAAA,CAAK,GAAG,WAAsB,CAAA;AAAA,UAC7C;AAAA,QACF;AACA,QAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,MAAA,EAAQ,EAAE,OAAO,sBAAA,EAAuB,EAAG,YAAY,CAAC,CAAA;AAAA,MAC3F;AAEA,MAAA,MAAM,UAAU,MAAA,CAAO,EAAA,GAAK,CAAA,EAAG,MAAA,CAAO,EAAE,CAAA,MAAA,CAAA,GAAW,MAAA;AACnD,MAAA,IAAI,KAAA,CAAM,OAAA,IAAW,MAAA,CAAO,KAAA,EAAO;AACjC,QAAA,MAAM,gBAAyB,EAAC;AAChC,QAAA,IAAI,MAAM,OAAA,EAAS;AACjB,UAAA,MAAM,YAAA,GAAe,MAAM,OAAA,EAAQ;AACnC,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,EAAG;AAC/B,YAAA,aAAA,CAAc,IAAA,CAAK,GAAG,YAAuB,CAAA;AAAA,UAC/C;AAAA,QACF,CAAA,MAAO;AACL,UAAA,aAAA,CAAc,KAAKA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,KAAe,CAAC,CAAA;AAAA,QACpE;AACA,QAAA,eAAA,CAAgB,IAAA,CAAKA,YAAY,MAAA,EAAQ;AAAA,UACvC,KAAA,EAAO,uBAAA;AAAA,UACP,EAAA,EAAI;AAAA,SACN,EAAG,aAAa,CAAC,CAAA;AAAA,MACnB;AAEA,MAAA,aAAA,CAAc,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,yBAAA,EAA0B,EAAG,eAAe,CAAC,CAAA;AAE5F,MAAA,MAAM,iBAA0B,EAAC;AACjC,MAAA,MAAM,iBAAiBE,kBAAAA,CAAmB,EAAE,SAAA,EAAW,MAAA,CAAO,kBAA4B,CAAA;AAC1F,MAAA,cAAA,CAAe,IAAA,CAAKF,WAAAA,CAAY,QAAA,EAAUC,cAAAA,CAAe,cAAA,EAAgB;AAAA,QACvE,KAAA,EAAO,8BAAA;AAAA,QACP,OAAA,EAAS;AAAA,OACV,CAAA,EAAG,CAACD,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,gBAA0B,CAAC,CAAC,CAAC,CAAA;AAEjE,MAAA,MAAM,kBAAkBE,kBAAAA,CAAmB,EAAE,SAAA,EAAW,MAAA,CAAO,mBAA6B,CAAA;AAC5F,MAAA,cAAA,CAAe,IAAA,CAAKF,WAAAA,CAAY,QAAA,EAAUC,cAAAA,CAAe,eAAA,EAAiB;AAAA,QACxE,KAAA,EAAO,CAAA,yCAAA,EAA4C,MAAA,CAAO,iBAAiB,CAAA,CAAA;AAAA,QAC3E,OAAA,EAAS;AAAA,OACV,CAAA,EAAG,CAACD,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,MAAA,CAAO,iBAA2B,CAAC,CAAC,CAAC,CAAA;AAClE,MAAA,aAAA,CAAc,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,yBAAA,EAA0B,EAAG,cAAc,CAAC,CAAA;AAE3F,MAAA,MAAM,YAAYO,kBAAAA,CAAmB;AAAA,QACnC,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,SAAA,EAAY,MAAA,CAAO,SAAA,IAAyB,MAAA,CAAO,KAAA;AAAA,QACnD,eAAA,EAAkB,OAAO,eAAA,IAA8B,OAAA;AAAA,QACvD,UAAA,EAAY,OAAA;AAAA,QACZ,KAAA,EAAO;AAAA,OACR,CAAA;AAED,MAAA,QAAA,CAAS,IAAA,CAAKP,WAAAA,CAAY,KAAA,EAAOC,cAAAA,CAAe,SAAA,EAAW,EAAE,KAAA,EAAO,uBAAA,EAAyB,CAAA,EAAG,aAAa,CAAC,CAAA;AAE9G,MAAA,OAAOD,YAAY,KAAA,EAAO;AAAA,QACxB,OAAO,kBAAA,EAAmB;AAAA,QAC1B,OAAO,kBAAA;AAAmB,SACzB,QAAQ,CAAA;AAAA,IACb,CAAA;AAAA,EACF;AACF,CAAC;AC3HM,IAAM,iBAAiBH,eAAAA,CAAgB;AAAA,EAC5C,IAAA,EAAM,mBAAA;AAAA,EAEN,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACxC,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,gCAAA,EAAQ;AAAA,IAC9C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,KAAA,EAAM;AAAA,IAC1C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,EAAG;AAAA,IACnC,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,QAAQ,MAAM,CAAA,EAAU,SAAS,EAAA,EAAG;AAAA,IACpD,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,MAAA;AAAU,GACjD;AAAA,EAEA,KAAA,CAAM,KAAA,EAAgC,EAAE,KAAA,EAAO,MAAK,EAAG;AACrD,IAAA,MAAM,MAAA,GAAS,KAAA;AAUf,IAAA,MAAM,SAAA,GAAYM,OAAO,KAAK,CAAA;AAC9B,IAAA,MAAM,SAAA,GAAY,EAAE,OAAA,EAAS,IAAA,EAA2B;AAExD,IAAA,MAAM,WAAA,GAAc,CAAC,OAAA,KAA2B;AAC9C,MAAA,IAAI,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,QAAA,EAAU;AAExC,MAAA,MAAM,SAAA,GAAY,OAAO,YAAA,EAAa;AACtC,MAAA,IAAI,CAAC,SAAA,IAAa,SAAA,CAAU,UAAA,KAAe,CAAA,EAAG;AAE9C,MAAA,QAAA,CAAS,WAAA,CAAY,SAAS,KAAK,CAAA;AACnC,MAAA,WAAA,EAAY;AAAA,IACd,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,QAAA,EAAU;AACxC,MAAA,MAAM,OAAA,GAAU,SAAA,CAAU,OAAA,EAAS,SAAA,IAAa,EAAA;AAChD,MAAA,IAAA,CAAK,qBAAqB,OAAO,CAAA;AACjC,MAAA,MAAA,CAAO,WAAW,OAAO,CAAA;AAAA,IAC3B,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,MAAM,OAAA,GAAU,CAAC,sBAAsB,CAAA;AACvC,MAAA,IAAI,SAAA,EAAU,EAAG,OAAA,CAAQ,IAAA,CAAK,YAAY,CAAA;AAC1C,MAAA,IAAI,MAAA,CAAO,QAAA,EAAU,OAAA,CAAQ,IAAA,CAAK,aAAa,CAAA;AAC/C,MAAA,IAAI,MAAA,CAAO,QAAA,EAAU,OAAA,CAAQ,IAAA,CAAK,aAAa,CAAA;AAC/C,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAK,CAAA;AAC3C,MAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,YAAA,GAA0E;AAAA,MAC9E,EAAE,OAAA,EAAS,MAAA,EAAQ,IAAA,EAAM,GAAA,EAAK,OAAO,cAAA,EAAK;AAAA,MAC1C,EAAE,OAAA,EAAS,QAAA,EAAU,IAAA,EAAM,GAAA,EAAK,OAAO,cAAA,EAAK;AAAA,MAC5C,EAAE,OAAA,EAAS,WAAA,EAAa,IAAA,EAAM,GAAA,EAAK,OAAO,oBAAA,EAAM;AAAA,MAChD,EAAE,OAAA,EAAS,eAAA,EAAiB,IAAA,EAAM,GAAA,EAAK,OAAO,oBAAA,EAAM;AAAA,MACpD,EAAE,OAAA,EAAS,aAAA,EAAe,IAAA,EAAM,QAAA,EAAK,OAAO,oBAAA,EAAM;AAAA,MAClD,EAAE,OAAA,EAAS,eAAA,EAAiB,IAAA,EAAM,QAAA,EAAK,OAAO,cAAA,EAAK;AAAA,MACnD,EAAE,OAAA,EAAS,cAAA,EAAgB,IAAA,EAAM,QAAA,EAAK,OAAO,oBAAA,EAAM;AAAA,MACnD,EAAE,OAAA,EAAS,qBAAA,EAAuB,IAAA,EAAM,QAAA,EAAK,OAAO,0BAAA,EAAO;AAAA,MAC3D,EAAE,OAAA,EAAS,mBAAA,EAAqB,IAAA,EAAM,IAAA,EAAM,OAAO,0BAAA,EAAO;AAAA,MAC1D,EAAE,OAAA,EAAS,QAAA,EAAU,IAAA,EAAM,SAAA,EAAM,OAAO,cAAA,EAAK;AAAA,MAC7C,EAAE,OAAA,EAAS,SAAA,EAAW,IAAA,EAAM,SAAA,EAAM,OAAO,0BAAA,EAAO;AAAA,MAChD,EAAE,OAAA,EAAS,cAAA,EAAgB,IAAA,EAAM,MAAA,EAAK,OAAO,0BAAA;AAAO,KACtD;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAoB,EAAC;AAE3B,MAAA,MAAM,eAAA,GAA2B,YAAA,CAAa,GAAA,CAAI,CAAA,IAAA,KAAQ;AACxD,QAAA,MAAM,GAAA,GAAMH,YAAY,QAAA,EAAU;AAAA,UAChC,IAAA,EAAM,QAAA;AAAA,UACN,KAAA,EAAO,mCAAA;AAAA,UACP,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,QAAA,EAAU,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,QAAA;AAAA,UACpC,OAAA,EAAS,MAAM,WAAA,CAAY,IAAA,CAAK,OAAO;AAAA,SACzC,EAAG,CAACA,WAAAA,CAAY,MAAA,EAAQ,EAAC,EAAG,IAAA,CAAK,IAAI,CAAC,CAAC,CAAA;AACvC,QAAA,OAAO,GAAA;AAAA,MACT,CAAC,CAAA;AAED,MAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,+BAAA,EAAgC,EAAG,eAAe,CAAC,CAAA;AAE7F,MAAA,MAAM,aAAA,GAAgB,OAAO,UAAA,IAAc,EAAA;AAC3C,MAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO;AAAA,QAC/B,GAAA,EAAK,SAAA;AAAA,QACL,KAAA,EAAO,+BAAA;AAAA,QACP,eAAA,EAAiB,CAAC,MAAA,CAAO,QAAA,IAAY,CAAC,MAAA,CAAO,QAAA;AAAA,QAC7C,oBAAoB,MAAA,CAAO,WAAA;AAAA,QAC3B,OAAA,EAAS,WAAA;AAAA,QACT,OAAA,EAAS,MAAM,SAAA,CAAU,GAAA,CAAI,IAAI,CAAA;AAAA,QACjC,MAAA,EAAQ,MAAM,SAAA,CAAU,GAAA,CAAI,KAAK,CAAA;AAAA,QACjC,SAAA,EAAW;AAAA,OACZ,CAAC,CAAA;AAEF,MAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,QAAA,MAAM,aAAA,GAAgB,MAAM,MAAA,EAAO;AACnC,QAAA,QAAA,CAAS,IAAA,CAAKA,YAAY,KAAA,EAAO,EAAE,OAAO,8BAAA,EAA+B,EAAG,aAAwB,CAAC,CAAA;AAAA,MACvG;AAEA,MAAA,MAAM,cAAsC,EAAC;AAC7C,MAAA,IAAI,OAAO,KAAA,EAAO;AAChB,QAAA,IAAIF,QAAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,UAAA,MAAA,CAAO,OAAO,WAAA,EAAa,EAAE,OAAA,EAAS,MAAA,CAAO,OAAO,CAAA;AAAA,QACtD,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,MAAA,CAAO,WAAA,EAAa,MAAA,CAAO,KAAK,CAAA;AAAA,QACzC;AAAA,MACF;AAEA,MAAA,OAAOE,YAAY,KAAA,EAAO;AAAA,QACxB,OAAO,cAAA,EAAe;AAAA,QACtB,KAAA,EAAO;AAAA,SACN,QAAQ,CAAA;AAAA,IACb,CAAA;AAAA,EACF;AACF,CAAC;;;ACiJM,SAAS,QAAQ,GAAA,EAAuB;AAC7C,EAAA,GAAA,CAAI,UAAA,CAAW,WAAW,CAAA,GAAI,MAAA;AAC9B,EAAA,GAAA,CAAI,UAAA,CAAW,UAAU,CAAA,GAAI,KAAA;AAC7B,EAAA,GAAA,CAAI,UAAA,CAAW,WAAW,CAAA,GAAI,MAAA;AAC9B,EAAA,GAAA,CAAI,UAAA,CAAW,WAAW,CAAA,GAAI,MAAA;AAC9B,EAAA,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,GAAI,IAAA;AAC5B,EAAA,GAAA,CAAI,UAAA,CAAW,YAAY,CAAA,GAAI,OAAA;AAC/B,EAAA,GAAA,CAAI,UAAA,CAAW,UAAU,CAAA,GAAI,KAAA;AAC7B,EAAA,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,GAAI,IAAA;AAC5B,EAAA,GAAA,CAAI,UAAA,CAAW,aAAa,CAAA,GAAI,QAAA;AAChC,EAAA,GAAA,CAAI,UAAA,CAAW,eAAe,CAAA,GAAI,UAAA;AAClC,EAAA,GAAA,CAAI,UAAA,CAAW,oBAAoB,CAAA,GAAI,eAAA;AACvC,EAAA,GAAA,CAAI,UAAA,CAAW,eAAe,CAAA,GAAI,UAAA;AAClC,EAAA,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,GAAI,IAAA;AAC5B,EAAA,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,GAAI,IAAA;AAC5B,EAAA,GAAA,CAAI,UAAA,CAAW,aAAa,CAAA,GAAI,QAAA;AAChC,EAAA,GAAA,CAAI,UAAA,CAAW,eAAe,CAAA,GAAI,UAAA;AAClC,EAAA,GAAA,CAAI,UAAA,CAAW,aAAa,CAAA,GAAI,QAAA;AAChC,EAAA,GAAA,CAAI,UAAA,CAAW,iBAAiB,CAAA,GAAI,YAAA;AACpC,EAAA,GAAA,CAAI,UAAA,CAAW,qBAAqB,CAAA,GAAI,gBAAA;AACxC,EAAA,GAAA,CAAI,UAAA,CAAW,UAAU,CAAA,GAAI,KAAA;AAC7B,EAAA,GAAA,CAAI,UAAA,CAAW,WAAW,CAAA,GAAI,MAAA;AAC9B,EAAA,GAAA,CAAI,UAAA,CAAW,WAAW,CAAA,GAAI,MAAA;AAC9B,EAAA,GAAA,CAAI,UAAA,CAAW,iBAAiB,CAAA,GAAI,YAAA;AACpC,EAAA,GAAA,CAAI,UAAA,CAAW,aAAa,CAAA,GAAI,QAAA;AAChC,EAAA,GAAA,CAAI,UAAA,CAAW,UAAU,CAAA,GAAI,KAAA;AAC7B,EAAA,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,GAAI,IAAA;AAC5B,EAAA,GAAA,CAAI,UAAA,CAAW,gBAAgB,CAAA,GAAI,WAAA;AAEnC,EAAA,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,GAAI,IAAA;AAC5B,EAAA,GAAA,CAAI,UAAA,CAAW,UAAU,CAAA,GAAI,KAAA;AAC7B,EAAA,GAAA,CAAI,UAAA,CAAW,QAAQ,CAAA,GAAI,GAAA;AAC3B,EAAA,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,GAAI,IAAA;AAC5B,EAAA,GAAA,CAAI,UAAA,CAAW,UAAU,CAAA,GAAI,KAAA;AAC7B,EAAA,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,GAAI,IAAA;AAC5B,EAAA,GAAA,CAAI,UAAA,CAAW,cAAc,CAAA,GAAI,SAAA;AACjC,EAAA,GAAA,CAAI,UAAA,CAAW,YAAY,CAAA,GAAI,OAAA;AAC/B,EAAA,GAAA,CAAI,UAAA,CAAW,UAAU,CAAA,GAAI,KAAA;AAC7B,EAAA,GAAA,CAAI,UAAA,CAAW,UAAU,CAAA,GAAI,KAAA;AAC7B,EAAA,GAAA,CAAI,UAAA,CAAW,YAAY,CAAA,GAAI,OAAA;AAC/B,EAAA,GAAA,CAAI,UAAA,CAAW,aAAa,CAAA,GAAI,QAAA;AAChC,EAAA,GAAA,CAAI,UAAA,CAAW,kBAAkB,CAAA,GAAI,aAAA;AACrC,EAAA,GAAA,CAAI,UAAA,CAAW,UAAU,CAAA,GAAI,KAAA;AAC7B,EAAA,GAAA,CAAI,UAAA,CAAW,eAAe,CAAA,GAAI,UAAA;AAClC,EAAA,GAAA,CAAI,UAAA,CAAW,WAAW,CAAA,GAAI,MAAA;AAC9B,EAAA,GAAA,CAAI,UAAA,CAAW,gBAAgB,CAAA,GAAI,WAAA;AACnC,EAAA,GAAA,CAAI,UAAA,CAAW,aAAa,CAAA,GAAI,QAAA;AAChC,EAAA,GAAA,CAAI,UAAA,CAAW,WAAW,CAAA,GAAI,MAAA;AAC9B,EAAA,GAAA,CAAI,UAAA,CAAW,WAAW,CAAA,GAAI,MAAA;AAC9B,EAAA,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,GAAI,IAAA;AAC9B;AAEA,IAAO,aAAA,GAAQ;AAAA,EACb;AACF","file":"index.mjs","sourcesContent":["/**\r\n * @lytjs/ui - Button 组件\r\n *\r\n * 基础按钮组件,支持多种类型、尺寸和状态\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { ButtonSetupProps, ButtonSlots } from './types';\r\n\r\nexport const Button = defineComponent({\r\n name: 'LytButton',\r\n\r\n props: {\r\n type: { type: String, default: 'default' },\r\n size: { type: String, default: 'medium' },\r\n disabled: { type: Boolean, default: false },\r\n loading: { type: Boolean, default: false },\r\n plain: { type: Boolean, default: false },\r\n round: { type: Boolean, default: false },\r\n circle: { type: Boolean, default: false },\r\n nativeType: { type: String, default: 'button' },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n tabIndex: { type: Number, default: undefined },\r\n onClick: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: ButtonSlots }) {\r\n const p = props as ButtonSetupProps;\r\n \r\n const handleClick = (event: MouseEvent) => {\r\n if (p.disabled || p.loading) {\r\n event.preventDefault();\r\n return;\r\n }\r\n p.onClick?.(event);\r\n };\r\n\r\n const handleKeydown = (event: KeyboardEvent) => {\r\n if (p.disabled || p.loading) {\r\n return;\r\n }\r\n \r\n // 支持Enter和Space键触发按钮\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n handleClick(event as unknown as MouseEvent);\r\n }\r\n \r\n p.onKeydown?.(event);\r\n };\r\n\r\n const getButtonClass = () => {\r\n const classes = ['lyt-button'];\r\n if (p.type !== 'default') classes.push(`lyt-button--${p.type}`);\r\n if (p.size !== 'medium') classes.push(`lyt-button--${p.size}`);\r\n if (p.plain) classes.push('lyt-button--plain');\r\n if (p.round) classes.push('lyt-button--round');\r\n if (p.circle) classes.push('lyt-button--circle');\r\n if (p.disabled) classes.push('lyt-button--disabled');\r\n if (p.loading) classes.push('lyt-button--loading');\r\n if (p.class) classes.push(p.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getButtonStyle = () => {\r\n if (!p.style) return undefined;\r\n if (isString(p.style)) return p.style;\r\n if (isObject(p.style)) {\r\n return Object.entries(p.style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n }\r\n return undefined;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n if (p.loading) {\r\n children.push(\r\n createVNode('span', { class: 'lyt-button__loading' }, [\r\n createVNode('svg', { class: 'lyt-button__loading-icon', viewBox: '0 0 1024 1024' }, [\r\n createVNode('path', {\r\n d: 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z',\r\n fill: 'currentColor',\r\n }),\r\n ]),\r\n ]),\r\n );\r\n }\r\n\r\n if (slots.default) {\r\n children.push(createVNode('span', { class: 'lyt-button__text' }, slots.default()));\r\n }\r\n\r\n const isDisabled = p.disabled || p.loading;\r\n const a11yProps = getButtonA11yProps({\r\n ariaLabel: p.ariaLabel,\r\n ariaDescribedBy: p.ariaDescribedBy,\r\n disabled: isDisabled,\r\n tabIndex: p.tabIndex,\r\n });\r\n\r\n return createVNode(\r\n 'button',\r\n mergeA11yProps(a11yProps, {\r\n class: getButtonClass(),\r\n style: getButtonStyle(),\r\n type: p.nativeType,\r\n disabled: isDisabled,\r\n onClick: handleClick,\r\n onKeydown: handleKeydown,\r\n }),\r\n children,\r\n );\r\n };\r\n },\r\n});\r\n\r\nexport type { ButtonProps, ButtonSlots, ButtonSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Input 组件\r\n *\r\n * 基础输入框组件,支持多种类型和状态\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { getFormControlA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { InputSetupProps } from './types';\r\n\r\nexport const Input = defineComponent({\r\n name: 'LytInput',\r\n\r\n props: {\r\n modelValue: { type: [String, Number] as unknown as StringConstructor, default: '' },\r\n type: { type: String, default: 'text' },\r\n placeholder: { type: String, default: '' },\r\n disabled: { type: Boolean, default: false },\r\n readonly: { type: Boolean, default: false },\r\n clearable: { type: Boolean, default: false },\r\n showPassword: { type: Boolean, default: false },\r\n maxlength: { type: Number, default: undefined },\r\n minlength: { type: Number, default: undefined },\r\n size: { type: String, default: 'medium' },\r\n prefixIcon: { type: String, default: '' },\r\n suffixIcon: { type: String, default: '' },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaInvalid: { type: Boolean, default: false },\r\n ariaRequired: { type: Boolean, default: false },\r\n autocomplete: { type: String, default: '' },\r\n name: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n tabIndex: { type: Number, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as InputSetupProps;\r\n const passwordVisible = signal(false);\r\n const isFocused = signal(false);\r\n\r\n const getInputClass = () => {\r\n const classes = ['lyt-input'];\r\n if (p.size !== 'medium') classes.push(`lyt-input--${p.size}`);\r\n if (p.disabled) classes.push('lyt-input--disabled');\r\n if (isFocused()) classes.push('lyt-input--focused');\r\n if (p.class) classes.push(p.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getInputStyle = () => {\r\n if (!p.style) return undefined;\r\n if (isString(p.style)) return p.style;\r\n if (isObject(p.style)) {\r\n return Object.entries(p.style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n }\r\n return undefined;\r\n };\r\n\r\n const getInputType = () => {\r\n if (p.type === 'password' && p.showPassword) {\r\n return passwordVisible() ? 'text' : 'password';\r\n }\r\n return p.type;\r\n };\r\n\r\n const handleInput = (e: Event) => {\r\n const target = e.target as HTMLInputElement;\r\n p.onInput?.(target.value);\r\n };\r\n\r\n const handleChange = (e: Event) => {\r\n const target = e.target as HTMLInputElement;\r\n p.onChange?.(target.value);\r\n };\r\n\r\n const handleFocus = (e: FocusEvent) => {\r\n isFocused.set(true);\r\n p.onFocus?.(e);\r\n };\r\n\r\n const handleBlur = (e: FocusEvent) => {\r\n isFocused.set(false);\r\n p.onBlur?.(e);\r\n };\r\n\r\n const handleClear = () => {\r\n p.onClear?.();\r\n p.onInput?.('');\r\n p.onChange?.('');\r\n };\r\n\r\n const togglePasswordVisibility = () => {\r\n passwordVisible.set(!passwordVisible());\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n // 前缀图标\r\n if (p.prefixIcon) {\r\n children.push(\r\n createVNode('span', { class: 'lyt-input__prefix' }, [\r\n createVNode('i', { class: p.prefixIcon }, [])\r\n ])\r\n );\r\n }\r\n\r\n // 输入框\r\n const a11yProps = getFormControlA11yProps({\r\n id: p.id,\r\n ariaLabel: p.ariaLabel,\r\n ariaDescribedBy: p.ariaDescribedBy,\r\n ariaInvalid: p.ariaInvalid,\r\n ariaRequired: p.ariaRequired,\r\n disabled: p.disabled,\r\n tabIndex: p.tabIndex,\r\n });\r\n const inputProps = mergeA11yProps(a11yProps, {\r\n class: 'lyt-input__inner',\r\n style: getInputStyle(),\r\n type: getInputType(),\r\n value: p.modelValue,\r\n placeholder: p.placeholder,\r\n disabled: p.disabled,\r\n readonly: p.readonly,\r\n maxlength: p.maxlength,\r\n minlength: p.minlength,\r\n 'aria-readonly': p.readonly,\r\n autocomplete: p.autocomplete,\r\n name: p.name,\r\n onInput: handleInput,\r\n onChange: handleChange,\r\n onFocus: handleFocus,\r\n onBlur: handleBlur,\r\n });\r\n children.push(createVNode('input', inputProps, []));\r\n\r\n // 后缀图标或清除按钮\r\n const suffixChildren: VNode[] = [];\r\n \r\n // 清除按钮\r\n if (p.clearable && p.modelValue) {\r\n const clearBtnProps = getButtonA11yProps({\r\n ariaLabel: 'Clear input',\r\n });\r\n suffixChildren.push(\r\n createVNode('span', mergeA11yProps(clearBtnProps, {\r\n class: 'lyt-input__clear', \r\n onClick: handleClear \r\n }), [createTextVNode('×')])\r\n );\r\n }\r\n \r\n // 密码显示切换按钮\r\n if (p.type === 'password' && p.showPassword) {\r\n const toggleBtnProps = getButtonA11yProps({\r\n ariaLabel: passwordVisible() ? 'Hide password' : 'Show password',\r\n });\r\n suffixChildren.push(\r\n createVNode('span', mergeA11yProps(toggleBtnProps, {\r\n class: 'lyt-input__password', \r\n onClick: togglePasswordVisibility \r\n }), [createTextVNode(passwordVisible() ? '🙈' : '👁️')])\r\n );\r\n }\r\n \r\n // 后缀图标\r\n if (p.suffixIcon) {\r\n suffixChildren.push(\r\n createVNode('i', { class: p.suffixIcon }, [])\r\n );\r\n }\r\n \r\n if (suffixChildren.length > 0) {\r\n children.push(\r\n createVNode('span', { class: 'lyt-input__suffix' }, suffixChildren)\r\n );\r\n }\r\n\r\n return createVNode('div', { class: getInputClass() }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { InputProps, InputSlots, InputSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Dialog 组件\r\n *\r\n * 对话框组件,支持全屏、拖拽等高级功能\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal, watch } from '@lytjs/reactivity';\r\nimport { getDialogA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { DialogSetupProps, DialogSlots } from './types';\r\n\r\nexport const Dialog = defineComponent({\r\n name: 'LytDialog',\r\n\r\n props: {\r\n modelValue: { type: Boolean, default: false },\r\n title: { type: String, default: '' },\r\n width: { type: [String, Number] as unknown as StringConstructor, default: '50%' },\r\n showClose: { type: Boolean, default: true },\r\n closeOnClickModal: { type: Boolean, default: true },\r\n closeOnPressEscape: { type: Boolean, default: true },\r\n lockScroll: { type: Boolean, default: true },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaModal: { type: Boolean, default: true },\r\n onBeforeOpen: { type: Function, default: undefined },\r\n onBeforeClose: { type: Function, default: undefined },\r\n onOpen: { type: Function, default: undefined },\r\n onClose: { type: Function, default: undefined },\r\n onConfirm: { type: Function, default: undefined },\r\n onCancel: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: DialogSlots }) {\r\n const p = props as DialogSetupProps;\r\n const visible = signal(p.modelValue);\r\n\r\n // 监听 modelValue 变化\r\n watch(() => p.modelValue, (newVal) => {\r\n visible.set(newVal);\r\n if (newVal) {\r\n p.onOpen?.();\r\n }\r\n });\r\n\r\n const handleClose = async () => {\r\n if (p.onBeforeClose) {\r\n const result = await p.onBeforeClose();\r\n if (result === false) return;\r\n }\r\n visible.set(false);\r\n p.onClose?.();\r\n };\r\n\r\n const handleKeydown = (e: KeyboardEvent) => {\r\n if (p.closeOnPressEscape && e.key === 'Escape') {\r\n e.preventDefault();\r\n handleClose();\r\n }\r\n p.onKeydown?.(e);\r\n };\r\n\r\n return () => {\r\n if (!visible()) {\r\n return createVNode('div', { style: 'display: none;' }, []);\r\n }\r\n\r\n const children: VNode[] = [];\r\n\r\n if (slots.header) {\r\n children.push(createVNode('div', { \r\n class: 'lyt-dialog__header',\r\n id: p.id ? `${p.id}-header` : undefined,\r\n }, slots.header()));\r\n } else if (p.title) {\r\n const headerChildren: VNode[] = [];\r\n headerChildren.push(createVNode('span', { \r\n class: 'lyt-dialog__title',\r\n id: p.id ? `${p.id}-title` : undefined,\r\n }, [createTextVNode(p.title)]));\r\n if (p.showClose) {\r\n const closeBtnProps = getButtonA11yProps({\r\n ariaLabel: 'Close dialog',\r\n });\r\n headerChildren.push(createVNode('button', mergeA11yProps(closeBtnProps, {\r\n class: 'lyt-dialog__close',\r\n onClick: handleClose,\r\n }), [createTextVNode('×')]));\r\n }\r\n children.push(createVNode('div', { \r\n class: 'lyt-dialog__header',\r\n id: p.id ? `${p.id}-header` : undefined,\r\n }, headerChildren));\r\n }\r\n\r\n if (slots.default) {\r\n children.push(createVNode('div', { \r\n class: 'lyt-dialog__body',\r\n id: p.id ? `${p.id}-body` : undefined,\r\n }, slots.default()));\r\n }\r\n\r\n if (slots.footer) {\r\n children.push(createVNode('div', { \r\n class: 'lyt-dialog__footer',\r\n id: p.id ? `${p.id}-footer` : undefined,\r\n }, slots.footer()));\r\n }\r\n\r\n const dialogClass = [\r\n 'lyt-dialog',\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const dialogStyle = `width: ${typeof p.width === 'number' ? `${p.width}px` : p.width}`;\r\n\r\n const dialogA11yProps = getDialogA11yProps({\r\n id: p.id,\r\n ariaLabel: p.ariaLabel || p.title,\r\n ariaDescribedBy: p.ariaDescribedBy || (p.id ? `${p.id}-body` : undefined),\r\n labelledBy: p.title && p.id ? `${p.id}-title` : undefined,\r\n modal: p.ariaModal,\r\n });\r\n\r\n return createVNode('div', { \r\n class: 'lyt-dialog__wrapper',\r\n onKeydown: handleKeydown,\r\n }, [\r\n createVNode('div', {\r\n class: 'lyt-dialog__overlay',\r\n 'aria-hidden': true,\r\n onClick: p.closeOnClickModal ? handleClose : undefined,\r\n }),\r\n createVNode('div', mergeA11yProps(dialogA11yProps, {\r\n class: dialogClass,\r\n style: dialogStyle,\r\n }), children),\r\n ]);\r\n };\r\n },\r\n});\r\n\r\nexport type { DialogProps, DialogSlots } from './types';\r\n","/**\r\n * @lytjs/ui - Select 组件\r\n *\r\n * 选择器组件,支持单选、多选、搜索等功能\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal, effect } from '@lytjs/reactivity';\r\nimport { getComboboxA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { SelectOption, SelectSetupProps } from './types';\r\n\r\nexport const Select = defineComponent({\r\n name: 'LytSelect',\r\n\r\n props: {\r\n modelValue: { type: [String, Number, Array] as unknown as StringConstructor, default: '' },\r\n options: { type: Array, default: (): SelectOption[] => [] },\r\n placeholder: { type: String, default: '请选择' },\r\n disabled: { type: Boolean, default: false },\r\n clearable: { type: Boolean, default: false },\r\n multiple: { type: Boolean, default: false },\r\n size: { type: String, default: 'medium' },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaInvalid: { type: Boolean, default: false },\r\n ariaRequired: { type: Boolean, default: false },\r\n tabIndex: { type: Number, default: undefined },\r\n onChange: { type: Function, default: undefined },\r\n onClear: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n onVisibleChange: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as SelectSetupProps;\r\n const isOpen = signal(false);\r\n const selectedValue = signal<Set<string | number>>(new Set());\r\n const searchValue = signal('');\r\n const highlightedIndex = signal(-1);\r\n\r\n effect(() => {\r\n if (Array.isArray(p.modelValue)) {\r\n selectedValue.set(new Set(p.modelValue));\r\n } else if (p.modelValue !== '' && p.modelValue !== null && p.modelValue !== undefined) {\r\n selectedValue.set(new Set([p.modelValue]));\r\n }\r\n });\r\n\r\n const getFilteredOptions = () => {\r\n const opts = p.options || [];\r\n const query = searchValue();\r\n return query\r\n ? opts.filter(opt => opt.label.includes(query))\r\n : opts;\r\n };\r\n\r\n const getEnabledOptions = () => {\r\n return getFilteredOptions().filter(opt => !opt.disabled);\r\n };\r\n\r\n const toggleDropdown = () => {\r\n if (p.disabled) return;\r\n const newOpen = !isOpen();\r\n isOpen.set(newOpen);\r\n if (newOpen) {\r\n const enabledOptions = getEnabledOptions();\r\n if (enabledOptions.length > 0) {\r\n const selectedValues = selectedValue();\r\n let currentValue = 0;\r\n if (selectedValues.size > 0) {\r\n const foundIndex = enabledOptions.findIndex(opt => selectedValues.has(opt.value));\r\n currentValue = foundIndex >= 0 ? foundIndex : 0;\r\n }\r\n highlightedIndex.set(currentValue);\r\n }\r\n }\r\n p.onVisibleChange?.(newOpen);\r\n };\r\n\r\n const handleSelect = (option: SelectOption) => {\r\n if (option.disabled) return;\r\n\r\n if (p.multiple) {\r\n const newSelected = new Set(selectedValue());\r\n if (newSelected.has(option.value)) {\r\n newSelected.delete(option.value);\r\n } else {\r\n newSelected.add(option.value);\r\n }\r\n selectedValue.set(newSelected);\r\n p.onChange?.(Array.from(newSelected));\r\n } else {\r\n selectedValue.set(new Set([option.value]));\r\n isOpen.set(false);\r\n p.onVisibleChange?.(false);\r\n p.onChange?.(option.value);\r\n }\r\n };\r\n\r\n const handleClear = (event: Event) => {\r\n event.stopPropagation();\r\n selectedValue.set(new Set());\r\n p.onClear?.();\r\n p.onChange?.(p.multiple ? [] : '');\r\n };\r\n\r\n const handleKeydown = (event: KeyboardEvent) => {\r\n const enabledOptions = getEnabledOptions();\r\n const open = isOpen();\r\n const hIndex = highlightedIndex();\r\n\r\n switch (event.key) {\r\n case 'Enter':\r\n case ' ':\r\n event.preventDefault();\r\n if (open) {\r\n if (hIndex >= 0 && hIndex < enabledOptions.length) {\r\n const option = enabledOptions[hIndex];\r\n if (option) {\r\n handleSelect(option);\r\n }\r\n }\r\n } else {\r\n toggleDropdown();\r\n }\r\n break;\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n if (!open) {\r\n toggleDropdown();\r\n } else {\r\n if (enabledOptions.length > 0) {\r\n highlightedIndex.set(Math.min(hIndex + 1, enabledOptions.length - 1));\r\n }\r\n }\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n if (open) {\r\n if (enabledOptions.length > 0) {\r\n highlightedIndex.set(Math.max(hIndex - 1, 0));\r\n }\r\n }\r\n break;\r\n case 'Escape':\r\n if (open) {\r\n event.preventDefault();\r\n isOpen.set(false);\r\n p.onVisibleChange?.(false);\r\n }\r\n break;\r\n case 'Home':\r\n event.preventDefault();\r\n if (open && enabledOptions.length > 0) {\r\n highlightedIndex.set(0);\r\n }\r\n break;\r\n case 'End':\r\n event.preventDefault();\r\n if (open && enabledOptions.length > 0) {\r\n highlightedIndex.set(enabledOptions.length - 1);\r\n }\r\n break;\r\n }\r\n\r\n p.onKeydown?.(event);\r\n };\r\n\r\n const getSelectedLabel = (): string => {\r\n const selected = Array.from(selectedValue());\r\n if (selected.length === 0) return '';\r\n\r\n const opts = p.options || [];\r\n const selectedOptions = opts.filter(opt => selected.includes(opt.value));\r\n return selectedOptions.map(opt => opt.label).join(', ');\r\n };\r\n\r\n return () => {\r\n const open = isOpen();\r\n const selectClass = [\r\n 'lyt-select',\r\n `lyt-select--${p.size}`,\r\n p.disabled ? 'lyt-select--disabled' : '',\r\n open ? 'lyt-select--open' : '',\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const selectedLabel = getSelectedLabel();\r\n const displayValue = selectedLabel || p.placeholder;\r\n const filteredOptions = getFilteredOptions();\r\n const selected = selectedValue();\r\n const hIndex = highlightedIndex();\r\n\r\n const dropdownContent: VNode[] = [];\r\n\r\n if (filteredOptions.length === 0) {\r\n dropdownContent.push(createVNode('div', { class: 'lyt-select__empty' }, [createVNode('span', {}, '无匹配选项')]));\r\n } else {\r\n filteredOptions.forEach((option: SelectOption, index: number) => {\r\n const isSelected = selected.has(option.value);\r\n const isHighlighted = !option.disabled && index === hIndex;\r\n const optionChildren: VNode[] = [];\r\n if (isSelected) {\r\n optionChildren.push(createVNode('span', { class: 'lyt-select__check' }, [createVNode('span', {}, '✓')]));\r\n }\r\n optionChildren.push(createVNode('span', {}, option.label));\r\n dropdownContent.push(createVNode('div', {\r\n key: String(option.value),\r\n role: 'option',\r\n 'aria-selected': isSelected,\r\n class: [\r\n 'lyt-select__option',\r\n isSelected ? 'lyt-select__option--selected' : '',\r\n option.disabled ? 'lyt-select__option--disabled' : '',\r\n isHighlighted ? 'lyt-select__option--highlighted' : '',\r\n ].filter(Boolean).join(' '),\r\n onClick: () => handleSelect(option),\r\n onMouseenter: () => {\r\n if (!option.disabled) highlightedIndex.set(index);\r\n },\r\n }, optionChildren));\r\n });\r\n }\r\n\r\n const triggerChildren: VNode[] = [];\r\n triggerChildren.push(createVNode('span', {\r\n class: [\r\n 'lyt-select__value',\r\n !selectedLabel ? 'lyt-select__value--placeholder' : '',\r\n ].filter(Boolean).join(' '),\r\n }, [createVNode('span', {}, displayValue)]));\r\n if (p.clearable && selected.size > 0) {\r\n triggerChildren.push(createVNode('span', {\r\n class: 'lyt-select__clear',\r\n onClick: handleClear,\r\n }, [createVNode('span', {}, '×')]));\r\n }\r\n triggerChildren.push(createVNode('span', { class: 'lyt-select__arrow' }, [createVNode('span', {}, '▼')]));\r\n\r\n const resultChildren: VNode[] = [\r\n createVNode('div', {\r\n class: 'lyt-select__trigger',\r\n onClick: toggleDropdown,\r\n }, triggerChildren),\r\n ];\r\n if (open) {\r\n resultChildren.push(createVNode('div', {\r\n class: 'lyt-select__dropdown',\r\n role: 'listbox',\r\n 'aria-multiselectable': p.multiple,\r\n }, dropdownContent));\r\n }\r\n\r\n const a11yProps = getComboboxA11yProps({\r\n id: p.id,\r\n ariaLabel: p.ariaLabel,\r\n ariaDescribedBy: p.ariaDescribedBy,\r\n ariaRequired: p.ariaRequired,\r\n ariaInvalid: p.ariaInvalid,\r\n disabled: p.disabled,\r\n tabIndex: p.tabIndex,\r\n expanded: open,\r\n controls: undefined,\r\n });\r\n\r\n return createVNode('div', mergeA11yProps(a11yProps, {\r\n class: selectClass,\r\n onKeydown: handleKeydown,\r\n }), resultChildren);\r\n };\r\n },\r\n});\r\n\r\nexport type { SelectProps, SelectSlots, SelectOption } from './types';\r\n","/**\r\n * @lytjs/ui - Tabs 组件\r\n *\r\n * 标签页组件,支持卡片式和边框卡片式,可拖拽,支持标签关闭和新增\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport { getTablistA11yProps, getTabA11yProps, getTabpanelA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { TabPaneSetupProps, TabsSetupProps, TabPaneSlots, TabsSlots } from './types';\r\n\r\nexport type TabsType = '' | 'card' | 'border-card';\r\n\r\nexport interface TabPane {\r\n props: TabPaneSetupProps;\r\n children: VNode[];\r\n}\r\n\r\nexport interface DragState {\r\n isDragging: boolean;\r\n dragIndex: number;\r\n dropIndex: number;\r\n}\r\n\r\nexport const TabPane = defineComponent({\r\n name: 'LytTabPane',\r\n\r\n props: {\r\n label: { type: String, required: true },\r\n name: { type: String, required: true },\r\n disabled: { type: Boolean, default: false },\r\n closable: { type: Boolean, default: false },\r\n },\r\n\r\n setup(_props: Record<string, unknown>, { slots }: { slots: TabPaneSlots }) {\r\n return () => {\r\n const defaultSlot = slots.default;\r\n const children: VNode[] = defaultSlot ? defaultSlot() : [];\r\n return createVNode('div', { class: 'lyt-tab-pane' }, children);\r\n };\r\n },\r\n});\r\n\r\nexport const Tabs = defineComponent({\r\n name: 'LytTabs',\r\n\r\n props: {\r\n modelValue: { type: String, default: '' },\r\n type: { type: String, default: '' },\r\n class: { type: String, default: '' },\r\n closable: { type: Boolean, default: false },\r\n addable: { type: Boolean, default: false },\r\n editable: { type: Boolean, default: false },\r\n draggable: { type: Boolean, default: false },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n onTabClick: { type: Function, default: undefined },\r\n onTabRemove: { type: Function, default: undefined },\r\n onTabAdd: { type: Function, default: undefined },\r\n onTabDragStart: { type: Function, default: undefined },\r\n onTabDragEnd: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: TabsSlots }) {\r\n const p = props as TabsSetupProps;\r\n const dragState = signal<DragState>({\r\n isDragging: false,\r\n dragIndex: -1,\r\n dropIndex: -1,\r\n });\r\n const activeIndex = signal(0);\r\n\r\n const getPanes = (): TabPane[] => {\r\n const defaultSlot = slots.default;\r\n const defaultSlotContent = defaultSlot ? defaultSlot() : [];\r\n if (!defaultSlotContent || defaultSlotContent.length === 0) return [];\r\n\r\n return defaultSlotContent\r\n .filter((vnode: VNode) => vnode && (vnode as unknown as { type: { name?: string } }).type?.name === 'LytTabPane')\r\n .map((vnode: VNode) => ({\r\n props: (vnode as unknown as { props: TabPaneSetupProps }).props,\r\n children: (vnode as unknown as { children: VNode[] }).children,\r\n }));\r\n };\r\n\r\n const getEnabledPanes = (panes: TabPane[]) => {\r\n return panes.filter(pane => !pane.props.disabled);\r\n };\r\n\r\n const handleTabClick = (pane: TabPane, index: number) => {\r\n if (pane.props.disabled) return;\r\n p.onChange?.(pane.props.name);\r\n p.onTabClick?.(pane, index);\r\n activeIndex.set(index);\r\n };\r\n\r\n const handleKeydown = (e: KeyboardEvent) => {\r\n const panes = getPanes();\r\n const enabledPanes = getEnabledPanes(panes);\r\n \r\n if (enabledPanes.length === 0) return;\r\n\r\n let newIndex = activeIndex();\r\n \r\n switch (e.key) {\r\n case 'ArrowRight':\r\n case 'ArrowDown':\r\n e.preventDefault();\r\n // 找到下一个启用的标签页\r\n for (let i = 1; i <= panes.length; i++) {\r\n const nextIndex = (activeIndex() + i) % panes.length;\r\n if (panes[nextIndex] && !panes[nextIndex].props.disabled) {\r\n newIndex = nextIndex;\r\n break;\r\n }\r\n }\r\n break;\r\n case 'ArrowLeft':\r\n case 'ArrowUp':\r\n e.preventDefault();\r\n // 找到上一个启用的标签页\r\n for (let i = 1; i <= panes.length; i++) {\r\n const prevIndex = (activeIndex() - i + panes.length) % panes.length;\r\n if (panes[prevIndex] && !panes[prevIndex].props.disabled) {\r\n newIndex = prevIndex;\r\n break;\r\n }\r\n }\r\n break;\r\n case 'Home':\r\n e.preventDefault();\r\n // 找到第一个启用的标签页\r\n newIndex = panes.findIndex(pane => pane != null && pane.props != null && !pane.props.disabled);\r\n break;\r\n case 'End':\r\n e.preventDefault();\r\n // 找到最后一个启用的标签页\r\n for (let i = panes.length - 1; i >= 0; i--) {\r\n const pane = panes[i];\r\n if (pane && pane.props && !pane.props.disabled) {\r\n newIndex = i;\r\n break;\r\n }\r\n }\r\n break;\r\n case 'Enter':\r\n case ' ':\r\n e.preventDefault();\r\n // 激活当前标签页\r\n const currentPane = panes[activeIndex()];\r\n if (currentPane && !currentPane.props.disabled) {\r\n handleTabClick(currentPane, activeIndex());\r\n }\r\n break;\r\n }\r\n\r\n if (newIndex !== activeIndex()) {\r\n activeIndex.set(newIndex);\r\n const pane = panes[newIndex];\r\n if (pane && !pane.props.disabled) {\r\n handleTabClick(pane, newIndex);\r\n }\r\n }\r\n\r\n p.onKeydown?.(e);\r\n };\r\n\r\n const handleTabRemove = (pane: TabPane, e: Event) => {\r\n e.stopPropagation();\r\n p.onTabRemove?.(pane.props.name);\r\n };\r\n\r\n const handleTabAdd = () => {\r\n p.onTabAdd?.();\r\n };\r\n\r\n const handleDragStart = (index: number) => {\r\n if (!p.draggable) return;\r\n dragState.set({\r\n isDragging: true,\r\n dragIndex: index,\r\n dropIndex: -1,\r\n });\r\n p.onTabDragStart?.(index);\r\n };\r\n\r\n const handleDragOver = (index: number) => {\r\n if (!dragState().isDragging) return;\r\n dragState.set({\r\n ...dragState(),\r\n dropIndex: index,\r\n });\r\n };\r\n\r\n const handleDragEnd = () => {\r\n const { dragIndex, dropIndex } = dragState();\r\n if (dragIndex !== -1 && dropIndex !== -1 && dragIndex !== dropIndex) {\r\n p.onTabDragEnd?.(dragIndex, dropIndex);\r\n }\r\n dragState.set({\r\n isDragging: false,\r\n dragIndex: -1,\r\n dropIndex: -1,\r\n });\r\n };\r\n\r\n return () => {\r\n const panes = getPanes();\r\n const currentName = p.modelValue || panes[0]?.props.name;\r\n\r\n // 同步 activeIndex 与当前激活的标签页\r\n const currentIndex = panes.findIndex(pane => pane.props.name === currentName);\r\n if (currentIndex !== -1 && currentIndex !== activeIndex()) {\r\n activeIndex.set(currentIndex);\r\n }\r\n\r\n const tabsClass = [\r\n 'lyt-tabs',\r\n `lyt-tabs--${p.type || 'normal'}`,\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const tabItems: VNode[] = panes.map((pane, index) => {\r\n const isActive = pane.props.name === currentName;\r\n const isDraggable = p.draggable;\r\n\r\n const tabChildren: VNode[] = [\r\n createVNode('span', { class: 'lyt-tabs__label' }, [createTextVNode(String(pane.props.label))]),\r\n ];\r\n\r\n if (pane.props.closable || p.closable) {\r\n const closeBtnProps = getButtonA11yProps({\r\n ariaLabel: 'Close tab',\r\n disabled: pane.props.disabled,\r\n });\r\n tabChildren.push(createVNode('span', mergeA11yProps(closeBtnProps, {\r\n class: 'lyt-tabs__close',\r\n onClick: (e: Event) => handleTabRemove(pane, e),\r\n }), [createTextVNode('×')]));\r\n }\r\n\r\n const tabA11yProps = getTabA11yProps({\r\n id: `${p.id || 'tabs'}-tab-${pane.props.name}`,\r\n selected: isActive,\r\n disabled: pane.props.disabled,\r\n controls: `${p.id || 'tabs'}-panel-${pane.props.name}`,\r\n });\r\n\r\n return createVNode('div', mergeA11yProps(tabA11yProps, {\r\n key: String(pane.props.name),\r\n class: [\r\n 'lyt-tabs__item',\r\n isActive ? 'lyt-tabs__item--active' : '',\r\n pane.props.disabled ? 'lyt-tabs__item--disabled' : '',\r\n dragState().dropIndex === index ? 'lyt-tabs__item--drop' : '',\r\n ].filter(Boolean).join(' '),\r\n draggable: isDraggable,\r\n onClick: () => handleTabClick(pane, index),\r\n onKeydown: handleKeydown,\r\n onDragStart: () => handleDragStart(index),\r\n onDragOver: (e: DragEvent) => { e.preventDefault(); handleDragOver(index); },\r\n onDragEnd: handleDragEnd,\r\n }), tabChildren);\r\n });\r\n\r\n if (p.addable || p.editable) {\r\n const addBtnProps = getButtonA11yProps({\r\n ariaLabel: 'Add tab',\r\n });\r\n tabItems.push(createVNode('div', mergeA11yProps(addBtnProps, {\r\n class: 'lyt-tabs__add-btn',\r\n onClick: handleTabAdd,\r\n }), [createTextVNode('+')]));\r\n }\r\n\r\n const content = panes.find(pane => pane.props.name === currentName);\r\n\r\n const tabpanelProps = content ? getTabpanelA11yProps({\r\n id: `${p.id || 'tabs'}-panel-${content.props.name}`,\r\n labelledBy: `${p.id || 'tabs'}-tab-${content.props.name}`,\r\n }) : {};\r\n\r\n const contentPane = content\r\n ? createVNode('div', mergeA11yProps(tabpanelProps, { \r\n class: 'lyt-tabs__pane',\r\n }), content.children)\r\n : createVNode('div', { style: 'display: none;' }, []);\r\n\r\n const tablistA11yProps = getTablistA11yProps({\r\n id: p.id,\r\n ariaLabel: p.ariaLabel || 'Tabs',\r\n ariaDescribedBy: p.ariaDescribedBy,\r\n });\r\n\r\n return createVNode('div', mergeA11yProps(tablistA11yProps, { \r\n class: tabsClass,\r\n onKeydown: handleKeydown,\r\n }), [\r\n createVNode('div', { class: 'lyt-tabs__header' }, [\r\n createVNode('div', { class: 'lyt-tabs__nav' }, tabItems),\r\n ]),\r\n createVNode('div', { class: 'lyt-tabs__content' }, [contentPane]),\r\n ]);\r\n };\r\n },\r\n});\r\n\r\nexport type { TabsProps, TabsSlots, TabPaneProps, TabPaneSlots } from './types';\r\n","/**\r\n * @lytjs/ui - Table 组件\r\n *\r\n * 表格组件,支持排序、斑马纹、边框、固定列、选择等功能\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { TableData, TableRowData, TableColumn, TableSortOrder, TableSetupProps } from './types';\r\nimport { getInputControlA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nexport type { TableSlots } from './types';\r\n\r\nexport const Table = defineComponent({\r\n name: 'LytTable',\r\n\r\n props: {\r\n data: { type: Array, default: (): TableData => [] },\r\n columns: { type: Array, default: (): TableColumn[] => [] },\r\n stripe: { type: Boolean, default: false },\r\n border: { type: Boolean, default: false },\r\n rowKey: { type: String, default: 'id' },\r\n showSelection: { type: Boolean, default: false },\r\n highlightCurrentRow: { type: Boolean, default: false },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onRowClick: { type: Function, default: undefined },\r\n onSortChange: { type: Function, default: undefined },\r\n onSelectionChange: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as TableSetupProps;\r\n const sortColumn = signal('');\r\n const sortOrder = signal<TableSortOrder>('');\r\n const selectedRows = signal<Set<TableRowData>>(new Set());\r\n const currentRow = signal<TableRowData | null>(null);\r\n const allSelected = signal(false);\r\n\r\n const handleSort = (column: TableColumn) => {\r\n if (!column.sortable || !column.prop) return;\r\n\r\n let newOrder: TableSortOrder;\r\n if (sortColumn() === column.prop) {\r\n if (sortOrder() === 'ascending') {\r\n newOrder = 'descending';\r\n } else if (sortOrder() === 'descending') {\r\n newOrder = '';\r\n } else {\r\n newOrder = 'ascending';\r\n }\r\n } else {\r\n newOrder = 'ascending';\r\n }\r\n\r\n sortColumn.set(column.prop);\r\n sortOrder.set(newOrder);\r\n p.onSortChange?.(column, column.prop, newOrder);\r\n };\r\n\r\n const handleRowSelect = (row: TableRowData, checked: boolean) => {\r\n const newSelected = new Set(selectedRows());\r\n if (checked) {\r\n newSelected.add(row);\r\n } else {\r\n newSelected.delete(row);\r\n }\r\n selectedRows.set(newSelected);\r\n \r\n const data = p.data || [];\r\n allSelected.set(newSelected.size === data.length);\r\n \r\n p.onSelectionChange?.(Array.from(newSelected));\r\n };\r\n\r\n const handleSelectAll = (checked: boolean) => {\r\n allSelected.set(checked);\r\n const data = p.data || [];\r\n \r\n if (checked) {\r\n selectedRows.set(new Set(data));\r\n p.onSelectionChange?.([...data]);\r\n } else {\r\n selectedRows.set(new Set());\r\n p.onSelectionChange?.([]);\r\n }\r\n };\r\n\r\n const handleRowClick = (row: TableRowData, index: number) => {\r\n if (p.highlightCurrentRow) {\r\n currentRow.set(row);\r\n }\r\n p.onRowClick?.(row, index);\r\n };\r\n\r\n const getCellValue = (row: TableRowData, column: TableColumn): unknown => {\r\n if (!column.prop) return '';\r\n return row[column.prop];\r\n };\r\n\r\n const getRowKey = (row: TableRowData, index: number): string => {\r\n if (p.rowKey && row[p.rowKey]) {\r\n return String(row[p.rowKey]);\r\n }\r\n return String(index);\r\n };\r\n\r\n return () => {\r\n const data = p.data || [];\r\n const columns = p.columns || [];\r\n \r\n const tableClass = ['lyt-table'];\r\n if (p.stripe) tableClass.push('lyt-table--stripe');\r\n if (p.border) tableClass.push('lyt-table--border');\r\n if (p.class) tableClass.push(p.class);\r\n\r\n const children: VNode[] = [];\r\n\r\n const thead = createVNode('thead', { class: 'lyt-table__header' }, [\r\n createVNode('tr', {}, [\r\n ...(p.showSelection ? [\r\n createVNode('th', { class: 'lyt-table__cell--selection' }, [\r\n createVNode('input', mergeA11yProps(getInputControlA11yProps({ ariaLabel: '全选' }), {\r\n type: 'checkbox',\r\n checked: allSelected(),\r\n onChange: (e: Event) => handleSelectAll((e.target as HTMLInputElement).checked),\r\n })),\r\n ]),\r\n ] : []),\r\n ...columns.map((column: TableColumn) => \r\n createVNode('th', {\r\n class: [\r\n 'lyt-table__cell',\r\n column.sortable ? 'lyt-table__cell--sortable' : '',\r\n column.align ? `lyt-table__cell--${column.align}` : '',\r\n ].filter(Boolean).join(' '),\r\n onClick: () => handleSort(column),\r\n }, [createVNode('span', {}, String(column.label))])\r\n ),\r\n ]),\r\n ]);\r\n\r\n const tbody = createVNode('tbody', { class: 'lyt-table__body' }, \r\n data.length === 0 \r\n ? [\r\n createVNode('tr', { class: 'lyt-table__empty-row' }, [\r\n createVNode('td', {\r\n colspan: columns.length + (p.showSelection ? 1 : 0),\r\n class: 'lyt-table__empty-cell',\r\n }, [createVNode('span', {}, '暂无数据')]),\r\n ]),\r\n ]\r\n : data.map((row: TableRowData, index: number) => {\r\n const rowChildren: VNode[] = [];\r\n \r\n if (p.showSelection) {\r\n rowChildren.push(\r\n createVNode('td', { class: 'lyt-table__cell--selection' }, [\r\n createVNode('input', mergeA11yProps(getInputControlA11yProps({ ariaLabel: '选择行' }), {\r\n type: 'checkbox',\r\n checked: selectedRows().has(row),\r\n onChange: (e: Event) => handleRowSelect(row, (e.target as HTMLInputElement).checked),\r\n })),\r\n ])\r\n );\r\n }\r\n \r\n columns.forEach((column: TableColumn) => {\r\n const value = getCellValue(row, column);\r\n const displayValue = column.formatter \r\n ? column.formatter(row, column, value)\r\n : String(value ?? '');\r\n \r\n rowChildren.push(\r\n createVNode('td', {\r\n class: [\r\n 'lyt-table__cell',\r\n column.align ? `lyt-table__cell--${column.align}` : '',\r\n ].filter(Boolean).join(' '),\r\n }, [createVNode('span', {}, displayValue)])\r\n );\r\n });\r\n \r\n return createVNode('tr', {\r\n key: getRowKey(row, index),\r\n class: [\r\n 'lyt-table__row',\r\n currentRow() === row ? 'lyt-table__row--active' : '',\r\n ].filter(Boolean).join(' '),\r\n onClick: () => handleRowClick(row, index),\r\n }, rowChildren);\r\n })\r\n );\r\n\r\n children.push(thead, tbody);\r\n\r\n return createVNode('table', mergeA11yProps({\r\n id: p.id,\r\n 'aria-label': p.ariaLabel,\r\n 'aria-describedby': p.ariaDescribedBy,\r\n role: 'grid',\r\n }, { class: tableClass.join(' ') }), children);\r\n };\r\n },\r\n});\r\n","/**\r\n * @lytjs/ui - Form 组件\r\n *\r\n * 表单组件,支持表单验证和布局\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { FormRules, FormSetupProps, FormSlots, FormItemSetupProps, FormItemSlots } from './types';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Form = defineComponent({\r\n name: 'LytForm',\r\n\r\n props: {\r\n model: { type: Object, default: (): Record<string, unknown> => ({}) },\r\n rules: { type: Object, default: (): FormRules => ({}) },\r\n labelWidth: { type: String, default: '100px' },\r\n labelPosition: { type: String, default: 'right' },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onSubmit: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: FormSlots }) {\r\n const p = props as FormSetupProps;\r\n const errors = signal<Record<string, string>>({});\r\n\r\n const validateField = (field: string): boolean => {\r\n const rules = p.rules[field];\r\n if (!rules || rules.length === 0) return true;\r\n\r\n const value = p.model[field];\r\n\r\n for (const rule of rules) {\r\n if (rule.required && (!value || value === '')) {\r\n errors.set({ ...errors(), [field]: rule.message || '此字段必填' });\r\n return false;\r\n }\r\n if (rule.pattern && !rule.pattern.test(String(value || ''))) {\r\n errors.set({ ...errors(), [field]: rule.message || '格式不正确' });\r\n return false;\r\n }\r\n if (rule.validator) {\r\n const result = rule.validator(value, p.model);\r\n if (result !== true) {\r\n errors.set({ ...errors(), [field]: typeof result === 'string' ? result : '验证失败' });\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n const newErrors = { ...errors() };\r\n delete newErrors[field];\r\n errors.set(newErrors);\r\n return true;\r\n };\r\n\r\n const validate = (): boolean => {\r\n let isValid = true;\r\n\r\n for (const field in p.rules) {\r\n if (!validateField(field)) {\r\n isValid = false;\r\n }\r\n }\r\n\r\n return isValid;\r\n };\r\n\r\n const handleSubmit = (event: Event) => {\r\n event.preventDefault();\r\n if (validate()) {\r\n p.onSubmit?.(p.model);\r\n }\r\n };\r\n\r\n return () => {\r\n const formClass = [\r\n 'lyt-form',\r\n `lyt-form--label-${p.labelPosition}`,\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const children: VNode[] = slots.default ? slots.default() : [];\r\n\r\n return createVNode('form', {\r\n id: p.id,\r\n 'aria-label': p.ariaLabel,\r\n 'aria-describedby': p.ariaDescribedBy,\r\n class: formClass,\r\n onSubmit: handleSubmit,\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport const FormItem = defineComponent({\r\n name: 'LytFormItem',\r\n\r\n props: {\r\n label: { type: String, default: '' },\r\n prop: { type: String, default: '' },\r\n required: { type: Boolean, default: false },\r\n rules: { type: [Object, Array] as unknown as StringConstructor, default: () => [] },\r\n error: { type: String, default: '' },\r\n validateStatus: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: FormItemSlots }) {\r\n const p = props as FormItemSetupProps;\r\n\r\n return () => {\r\n const itemClass = [\r\n 'lyt-form-item',\r\n p.error ? 'lyt-form-item--error' : '',\r\n p.validateStatus ? `lyt-form-item--${p.validateStatus}` : '',\r\n ].filter(Boolean).join(' ');\r\n\r\n const labelStyle = p.label ? { width: '100px' } : {};\r\n\r\n const children: VNode[] = [];\r\n\r\n if (p.label) {\r\n children.push(createVNode('label', {\r\n class: 'lyt-form-item__label',\r\n style: labelStyle,\r\n }, [createVNode('span', {}, String(p.label))]));\r\n }\r\n\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n children.push(createVNode('div', { class: 'lyt-form-item__content' }, slotContent));\r\n }\r\n\r\n if (p.error) {\r\n children.push(createVNode('div', { \r\n class: 'lyt-form-item__error',\r\n role: 'alert',\r\n 'aria-live': 'polite'\r\n }, [createVNode('span', {}, String(p.error))]));\r\n }\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: p.id,\r\n 'aria-label': p.ariaLabel,\r\n 'aria-describedby': p.ariaDescribedBy,\r\n }, { class: itemClass }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { FormSlots, FormItemSlots } from './types';\r\nexport type { FormProps, FormRules, FormSetupProps, FormItemProps, FormItemSetupProps, FormRule, FormValidateStatus } from './types';\r\n","/**\r\n * @lytjs/ui - Transition 组件\r\n *\r\n * 过渡动画组件,支持进入/离开动画\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode } from '@lytjs/vdom';\r\n\r\n/**\r\n * Transition 组件\r\n */\r\nexport const Transition = defineComponent({\r\n name: 'LytTransition',\r\n\r\n props: {\r\n name: { type: String, default: 'fade' },\r\n appear: { type: Boolean, default: false },\r\n mode: { type: String, default: '' },\r\n duration: { type: Number, default: 300 },\r\n class: { type: String, default: '' },\r\n },\r\n\r\n setup(props: any, { slots }: any) {\r\n // 生成类名\r\n const getTransitionClass = () => {\r\n const classes = [`${props.name}-transition`];\r\n if (props.class) {\r\n classes.push(props.class);\r\n }\r\n return classes.join(' ');\r\n };\r\n\r\n // 生成样式\r\n const getTransitionStyle = () => {\r\n return `transition-duration: ${props.duration}ms;`;\r\n };\r\n\r\n return () => {\r\n return createVNode('div', {\r\n class: getTransitionClass(),\r\n style: getTransitionStyle(),\r\n }, slots.default?.());\r\n };\r\n },\r\n});\r\n\r\n/**\r\n * TransitionGroup 组件\r\n */\r\nexport const TransitionGroup = defineComponent({\r\n name: 'LytTransitionGroup',\r\n\r\n props: {\r\n name: { type: String, default: 'list' },\r\n tag: { type: String, default: 'div' },\r\n duration: { type: Number, default: 300 },\r\n class: { type: String, default: '' },\r\n },\r\n\r\n setup(props: any, { slots }: any) {\r\n return () => {\r\n const children = slots.default?.() || [];\r\n \r\n const wrappedChildren = children.map((child: any, index: number) =>\r\n createVNode('div', {\r\n key: child.key || index,\r\n class: `${props.name}-item`,\r\n style: `transition: all ${props.duration}ms ease;`,\r\n }, [child])\r\n );\r\n\r\n return createVNode(props.tag, {\r\n class: `lyt-transition-group ${props.class}`,\r\n }, wrappedChildren);\r\n };\r\n },\r\n});\r\n\r\nexport default { Transition, TransitionGroup };\r\n","/**\r\n * @lytjs/ui - DatePicker 组件\r\n *\r\n * 日期选择器组件,支持范围选择、时间选择、禁用日期、快捷选项,自研日期处理逻辑(零依赖)\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { DatePickerShortcut, DatePickerSetupProps, DatePickerSlots } from './types';\r\n\r\nfunction getDaysInMonth(year: number, month: number): number {\r\n return new Date(year, month + 1, 0).getDate();\r\n}\r\n\r\nfunction getFirstDayOfMonth(year: number, month: number): number {\r\n return new Date(year, month, 1).getDay();\r\n}\r\n\r\nfunction formatDate(date: Date, format: string = 'YYYY-MM-DD'): string {\r\n const year = date.getFullYear();\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const hour = String(date.getHours()).padStart(2, '0');\r\n const minute = String(date.getMinutes()).padStart(2, '0');\r\n const second = String(date.getSeconds()).padStart(2, '0');\r\n\r\n return format\r\n .replace('YYYY', String(year))\r\n .replace('MM', month)\r\n .replace('DD', day)\r\n .replace('HH', hour)\r\n .replace('mm', minute)\r\n .replace('ss', second);\r\n}\r\n\r\nfunction isSameDay(date1: Date, date2: Date): boolean {\r\n return date1.getFullYear() === date2.getFullYear() &&\r\n date1.getMonth() === date2.getMonth() &&\r\n date1.getDate() === date2.getDate();\r\n}\r\n\r\nexport const DatePicker = defineComponent({\r\n name: 'LytDatePicker',\r\n\r\n props: {\r\n modelValue: { type: [String, Date, Array] as unknown as StringConstructor, default: null },\r\n placeholder: { type: String, default: '选择日期' },\r\n disabled: { type: Boolean, default: false },\r\n clearable: { type: Boolean, default: true },\r\n format: { type: String, default: 'YYYY-MM-DD' },\r\n type: { type: String, default: 'date' },\r\n disabledDate: { type: Function, default: undefined },\r\n shortcuts: { type: Array, default: (): DatePickerShortcut[] => [] },\r\n class: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n onOpen: { type: Function, default: undefined },\r\n onClose: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: DatePickerSlots }) {\r\n const p = props as DatePickerSetupProps;\r\n const isOpen = signal(false);\r\n const currentYear = signal(new Date().getFullYear());\r\n const currentMonth = signal(new Date().getMonth());\r\n const selectDate = signal<Date | null>(null);\r\n const rangeStart = signal<Date | null>(null);\r\n const rangeEnd = signal<Date | null>(null);\r\n const showTime = signal(false);\r\n const currentHours = signal(0);\r\n const currentMinutes = signal(0);\r\n const currentSeconds = signal(0);\r\n\r\n const weekDays = ['日', '一', '二', '三', '四', '五', '六'];\r\n\r\n const getCalendarDays = (): (Date | null)[] => {\r\n const year = currentYear();\r\n const month = currentMonth();\r\n const firstDay = getFirstDayOfMonth(year, month);\r\n const daysInMonth = getDaysInMonth(year, month);\r\n\r\n const days: (Date | null)[] = [];\r\n for (let i = 0; i < firstDay; i++) {\r\n days.push(null);\r\n }\r\n for (let i = 1; i <= daysInMonth; i++) {\r\n days.push(new Date(year, month, i));\r\n }\r\n return days;\r\n };\r\n\r\n const getMonthLabel = (): string => {\r\n return `${currentYear()}年${String(currentMonth() + 1).padStart(2, '0')}月`;\r\n };\r\n\r\n const prevMonth = () => {\r\n if (currentMonth() === 0) {\r\n currentMonth.set(11);\r\n currentYear.set(currentYear() - 1);\r\n } else {\r\n currentMonth.set(currentMonth() - 1);\r\n }\r\n };\r\n\r\n const nextMonth = () => {\r\n if (currentMonth() === 11) {\r\n currentMonth.set(0);\r\n currentYear.set(currentYear() + 1);\r\n } else {\r\n currentMonth.set(currentMonth() + 1);\r\n }\r\n };\r\n\r\n const handleSelectDate = (date: Date) => {\r\n if (p.disabledDate?.(date)) return;\r\n\r\n selectDate.set(date);\r\n currentHours.set(date.getHours());\r\n currentMinutes.set(date.getMinutes());\r\n currentSeconds.set(date.getSeconds());\r\n\r\n const dateType = p.type;\r\n if (dateType === 'date') {\r\n const result = formatDate(date, p.format);\r\n p.onChange?.(result);\r\n isOpen.set(false);\r\n } else if (dateType === 'datetime') {\r\n showTime.set(true);\r\n } else {\r\n if (!rangeStart()) {\r\n rangeStart.set(date);\r\n } else if (!rangeEnd()) {\r\n rangeEnd.set(date);\r\n const start = rangeStart()!;\r\n const end = rangeEnd()!;\r\n const result = [formatDate(start, p.format), formatDate(end, p.format)];\r\n p.onChange?.(result);\r\n } else {\r\n rangeStart.set(date);\r\n rangeEnd.set(null);\r\n }\r\n }\r\n };\r\n\r\n const handleTimeChange = () => {\r\n const date = selectDate();\r\n if (!date) return;\r\n\r\n const newDate = new Date(date);\r\n newDate.setHours(currentHours());\r\n newDate.setMinutes(currentMinutes());\r\n newDate.setSeconds(currentSeconds());\r\n\r\n const result = formatDate(newDate, p.format);\r\n p.onChange?.(result);\r\n isOpen.set(false);\r\n };\r\n\r\n const handleClear = (e: Event) => {\r\n e.stopPropagation();\r\n selectDate.set(null);\r\n rangeStart.set(null);\r\n rangeEnd.set(null);\r\n p.onChange?.(null);\r\n };\r\n\r\n const handleShortcutClick = (shortcut: DatePickerShortcut) => {\r\n if (shortcut.onClick) {\r\n shortcut.onClick();\r\n } else if (shortcut.value instanceof Date) {\r\n handleSelectDate(shortcut.value);\r\n } else if (Array.isArray(shortcut.value)) {\r\n rangeStart.set(shortcut.value[0] ?? null);\r\n rangeEnd.set(shortcut.value[1] ?? null);\r\n }\r\n };\r\n\r\n const toggleDropdown = () => {\r\n if (p.disabled) return;\r\n isOpen.set(!isOpen());\r\n if (isOpen()) {\r\n p.onOpen?.();\r\n } else {\r\n p.onClose?.();\r\n }\r\n };\r\n\r\n const isDateSelected = (date: Date): boolean => {\r\n if (selectDate() && isSameDay(date, selectDate()!)) return true;\r\n if (rangeStart() && isSameDay(date, rangeStart()!)) return true;\r\n if (rangeEnd() && isSameDay(date, rangeEnd()!)) return true;\r\n return false;\r\n };\r\n\r\n const isInRange = (date: Date): boolean => {\r\n if (!rangeStart() || !rangeEnd()) return false;\r\n const start = rangeStart()!;\r\n const end = rangeEnd()!;\r\n return date > start && date < end;\r\n };\r\n\r\n const isToday = (date: Date): boolean => {\r\n return isSameDay(date, new Date());\r\n };\r\n\r\n const isDisabled = (date: Date): boolean => {\r\n return p.disabledDate?.(date) ?? false;\r\n };\r\n\r\n const getDisplayValue = (): string => {\r\n if (p.type === 'daterange' || p.type === 'datetimerange') {\r\n if (rangeStart() && rangeEnd()) {\r\n return `${formatDate(rangeStart()!, p.format)} - ${formatDate(rangeEnd()!, p.format)}`;\r\n }\r\n return '';\r\n }\r\n return selectDate() ? formatDate(selectDate()!, p.format) : '';\r\n };\r\n\r\n return () => {\r\n const pickerClass = [\r\n 'lyt-date-picker',\r\n isOpen() ? 'lyt-date-picker--open' : '',\r\n p.disabled ? 'lyt-date-picker--disabled' : '',\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const calendarDays = getCalendarDays();\r\n const displayValue = getDisplayValue();\r\n\r\n const calendarContent: VNode[] = [];\r\n\r\n const headerChildren: VNode[] = [\r\n createVNode('button', {\r\n class: 'lyt-date-picker__nav-btn',\r\n onClick: prevMonth,\r\n }, [createVNode('span', {}, '◀')]),\r\n createVNode('span', { class: 'lyt-date-picker__month-label' }, [createVNode('span', {}, getMonthLabel())]),\r\n createVNode('button', {\r\n class: 'lyt-date-picker__nav-btn',\r\n onClick: nextMonth,\r\n }, [createVNode('span', {}, '▶')]),\r\n ];\r\n calendarContent.push(createVNode('div', { class: 'lyt-date-picker__header' }, headerChildren));\r\n\r\n const weekHeaderChildren: VNode[] = weekDays.map(day =>\r\n createVNode('span', { class: 'lyt-date-picker__weekday' }, [createVNode('span', {}, day)])\r\n );\r\n calendarContent.push(createVNode('div', { class: 'lyt-date-picker__week-header' }, weekHeaderChildren));\r\n\r\n const dayButtons: VNode[] = calendarDays.map((date, index) => {\r\n if (!date) {\r\n return createVNode('span', { key: `empty-${index}`, class: 'lyt-date-picker__day lyt-date-picker__day--empty' }, [createVNode('span', {}, ' ')]);\r\n }\r\n\r\n const selected = isDateSelected(date);\r\n const inRange = isInRange(date);\r\n const today = isToday(date);\r\n const disabled = isDisabled(date);\r\n\r\n return createVNode('button', {\r\n key: date.toISOString(),\r\n class: [\r\n 'lyt-date-picker__day',\r\n selected ? 'lyt-date-picker__day--selected' : '',\r\n inRange ? 'lyt-date-picker__day--in-range' : '',\r\n today ? 'lyt-date-picker__day--today' : '',\r\n disabled ? 'lyt-date-picker__day--disabled' : '',\r\n ].filter(Boolean).join(' '),\r\n disabled: disabled,\r\n onClick: () => handleSelectDate(date),\r\n }, [createVNode('span', {}, String(date.getDate()))]);\r\n });\r\n calendarContent.push(createVNode('div', { class: 'lyt-date-picker__days' }, dayButtons));\r\n\r\n if (showTime() || p.type === 'datetime') {\r\n showTime.set(true);\r\n const timeControls: VNode[] = [\r\n createVNode('input', {\r\n type: 'number',\r\n class: 'lyt-date-picker__time-input',\r\n value: currentHours(),\r\n min: 0,\r\n max: 23,\r\n onInput: (e: Event) => currentHours.set(Number((e.target as HTMLInputElement).value)),\r\n }),\r\n createVNode('span', {}, [createVNode('span', {}, ':')]),\r\n createVNode('input', {\r\n type: 'number',\r\n class: 'lyt-date-picker__time-input',\r\n value: currentMinutes(),\r\n min: 0,\r\n max: 59,\r\n onInput: (e: Event) => currentMinutes.set(Number((e.target as HTMLInputElement).value)),\r\n }),\r\n createVNode('span', {}, [createVNode('span', {}, ':')]),\r\n createVNode('input', {\r\n type: 'number',\r\n class: 'lyt-date-picker__time-input',\r\n value: currentSeconds(),\r\n min: 0,\r\n max: 59,\r\n onInput: (e: Event) => currentSeconds.set(Number((e.target as HTMLInputElement).value)),\r\n }),\r\n ];\r\n calendarContent.push(createVNode('div', { class: 'lyt-date-picker__time' }, [\r\n ...timeControls,\r\n createVNode('button', {\r\n class: 'lyt-date-picker__confirm-btn',\r\n onClick: handleTimeChange,\r\n }, [createVNode('span', {}, '确定')]),\r\n ]));\r\n }\r\n\r\n const footerContent: VNode[] = [];\r\n\r\n if (p.shortcuts.length > 0) {\r\n const shortcuts: VNode[] = p.shortcuts.map((shortcut: DatePickerShortcut) =>\r\n createVNode('button', {\r\n class: 'lyt-date-picker__shortcut',\r\n onClick: () => handleShortcutClick(shortcut),\r\n }, [createVNode('span', {}, String(shortcut.text))])\r\n );\r\n footerContent.push(createVNode('div', { class: 'lyt-date-picker__shortcuts' }, shortcuts));\r\n }\r\n\r\n if (slots.footer) {\r\n footerContent.push(...slots.footer());\r\n }\r\n\r\n if (footerContent.length > 0) {\r\n calendarContent.push(createVNode('div', { class: 'lyt-date-picker__footer' }, footerContent));\r\n }\r\n\r\n const triggerChildren: VNode[] = [\r\n createVNode('span', {\r\n class: ['lyt-date-picker__input', !displayValue ? 'lyt-date-picker__input--placeholder' : ''].filter(Boolean).join(' '),\r\n }, [createVNode('span', {}, displayValue || String(p.placeholder))]),\r\n ];\r\n\r\n if (p.clearable && displayValue) {\r\n triggerChildren.push(createVNode('span', {\r\n class: 'lyt-date-picker__clear',\r\n onClick: handleClear,\r\n }, [createVNode('span', {}, '×')]));\r\n }\r\n\r\n const dropdownChildren: VNode[] = [];\r\n if (isOpen()) {\r\n dropdownChildren.push(createVNode('div', { class: 'lyt-date-picker__dropdown' }, [\r\n createVNode('div', { class: 'lyt-date-picker__calendar' }, calendarContent),\r\n ]));\r\n }\r\n\r\n return createVNode('div', { class: pickerClass }, [\r\n createVNode('div', { class: 'lyt-date-picker__trigger', onClick: toggleDropdown }, triggerChildren),\r\n ...dropdownChildren,\r\n ]);\r\n };\r\n },\r\n});\r\n\r\nexport type { DatePickerProps, DatePickerSlots, DatePickerShortcut, DatePickerType } from './types';\r\n","/**\r\n * @lytjs/ui - Tree 组件\r\n *\r\n * 树形控件组件,支持勾选、拖拽、连接线等高级功能\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport { getButtonA11yProps, getInputControlA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { TreeNode, TreeSetupProps } from './types';\r\n\r\nexport interface FlattenNode extends TreeNode {\r\n parent: FlattenNode | null;\r\n level: number;\r\n isLeaf: boolean;\r\n isExpanded: boolean;\r\n isChecked: boolean;\r\n isIndeterminate: boolean;\r\n isSelected: boolean;\r\n}\r\n\r\nexport const Tree = defineComponent({\r\n name: 'LytTree',\r\n\r\n props: {\r\n data: { type: Array, default: (): TreeNode[] => [] },\r\n showLine: { type: Boolean, default: false },\r\n showCheckbox: { type: Boolean, default: false },\r\n checkable: { type: Boolean, default: false },\r\n draggable: { type: Boolean, default: false },\r\n defaultExpandAll: { type: Boolean, default: false },\r\n defaultExpandedKeys: { type: Array, default: (): (string | number)[] => [] },\r\n defaultCheckedKeys: { type: Array, default: (): (string | number)[] => [] },\r\n nodeKey: { type: String, default: 'id' },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onCheck: { type: Function, default: undefined },\r\n onSelect: { type: Function, default: undefined },\r\n onExpand: { type: Function, default: undefined },\r\n onNodeClick: { type: Function, default: undefined },\r\n onDragStart: { type: Function, default: undefined },\r\n onDragEnd: { type: Function, default: undefined },\r\n onDrop: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as TreeSetupProps;\r\n const expandedKeys = signal(new Set<string | number>(p.defaultExpandedKeys));\r\n const checkedKeys = signal(new Set<string | number>(p.defaultCheckedKeys));\r\n const selectedKey = signal<string | number | null>(null);\r\n\r\n const flattenTree = (nodes: TreeNode[], parent: FlattenNode | null = null, level = 0): FlattenNode[] => {\r\n const result: FlattenNode[] = [];\r\n\r\n for (const node of nodes) {\r\n const nodeKey = node.id;\r\n const isExpanded = expandedKeys().has(nodeKey);\r\n const isChecked = checkedKeys().has(nodeKey);\r\n\r\n const flatNode: FlattenNode = {\r\n ...node,\r\n parent,\r\n level,\r\n isLeaf: !node.children || node.children.length === 0,\r\n isExpanded,\r\n isChecked,\r\n isIndeterminate: false,\r\n isSelected: selectedKey() === nodeKey,\r\n };\r\n\r\n result.push(flatNode);\r\n\r\n if (isExpanded && node.children) {\r\n result.push(...flattenTree(node.children, flatNode, level + 1));\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n const handleNodeClick = (node: TreeNode) => {\r\n selectedKey.set(node.id);\r\n p.onNodeClick?.(node);\r\n p.onSelect?.(node);\r\n };\r\n\r\n const handleCheck = (node: TreeNode, checked: boolean) => {\r\n const newCheckedKeys = new Set(checkedKeys());\r\n if (checked) {\r\n newCheckedKeys.add(node.id);\r\n } else {\r\n newCheckedKeys.delete(node.id);\r\n }\r\n checkedKeys.set(newCheckedKeys);\r\n p.onCheck?.(p.data, checked);\r\n };\r\n\r\n const handleExpand = (node: TreeNode) => {\r\n const newExpandedKeys = new Set(expandedKeys());\r\n const isExpanded = expandedKeys().has(node.id);\r\n\r\n if (isExpanded) {\r\n newExpandedKeys.delete(node.id);\r\n } else {\r\n newExpandedKeys.add(node.id);\r\n }\r\n\r\n expandedKeys.set(newExpandedKeys);\r\n p.onExpand?.(node, !isExpanded);\r\n };\r\n\r\n const renderTreeNode = (node: FlattenNode): VNode => {\r\n const indent = node.level * 20;\r\n\r\n const nodeContent: VNode[] = [];\r\n\r\n if (!node.isLeaf) {\r\n const expandBtnProps = getButtonA11yProps({ \r\n ariaLabel: node.isExpanded ? '收起' : '展开', \r\n disabled: node.disabled \r\n });\r\n \r\n nodeContent.push(createVNode('span', mergeA11yProps(expandBtnProps, {\r\n class: 'lyt-tree__expand-icon',\r\n onClick: () => handleExpand(node),\r\n }), [createVNode('span', {}, node.isExpanded ? '▼' : '▶')]));\r\n }\r\n\r\n if (p.showCheckbox) {\r\n const checkboxProps = getInputControlA11yProps({ \r\n checked: node.isChecked, \r\n disabled: node.disabled, \r\n ariaLabel: node.label \r\n });\r\n \r\n nodeContent.push(createVNode('input', mergeA11yProps(checkboxProps, {\r\n type: 'checkbox',\r\n checked: node.isChecked,\r\n onChange: (e: Event) => handleCheck(node, (e.target as HTMLInputElement).checked),\r\n })));\r\n }\r\n\r\n const labelBtnProps = getButtonA11yProps({ \r\n ariaLabel: node.label, \r\n disabled: node.disabled \r\n });\r\n \r\n nodeContent.push(createVNode('span', mergeA11yProps(labelBtnProps, {\r\n class: 'lyt-tree__label',\r\n onClick: () => handleNodeClick(node),\r\n }), [createVNode('span', {}, String(node.label))]));\r\n\r\n return createVNode('div', {\r\n key: String(node.id),\r\n class: [\r\n 'lyt-tree__node',\r\n node.isSelected ? 'lyt-tree__node--selected' : '',\r\n node.isChecked ? 'lyt-tree__node--checked' : '',\r\n ].filter(Boolean).join(' '),\r\n style: `padding-left: ${indent}px`,\r\n draggable: p.draggable,\r\n onDragStart: (e: DragEvent) => p.onDragStart?.(node, e),\r\n onDragEnd: (e: DragEvent) => p.onDragEnd?.(node, e),\r\n }, nodeContent);\r\n };\r\n\r\n return () => {\r\n const data = p.data || [];\r\n const flatData = flattenTree(data);\r\n\r\n if (flatData.length === 0) {\r\n return createVNode('div', { class: 'lyt-tree__empty' }, [createVNode('span', {}, '暂无数据')]);\r\n }\r\n\r\n const treeClass = [\r\n 'lyt-tree',\r\n p.showLine ? 'lyt-tree--show-line' : '',\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const a11yProps: Record<string, any> = {\r\n id: p.id,\r\n role: 'tree',\r\n 'aria-label': p.ariaLabel,\r\n 'aria-describedby': p.ariaDescribedBy,\r\n };\r\n\r\n return createVNode('div', { ...a11yProps, class: treeClass }, flatData.map(node => renderTreeNode(node)));\r\n };\r\n },\r\n});\r\n\r\nexport type { TreeProps, TreeSlots, TreeNode, TreeSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Menu 组件\r\n *\r\n * 导航菜单组件,支持垂直和水平模式,子菜单可折叠\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport { getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport interface MenuSetupProps {\r\n mode: string;\r\n defaultActive: string;\r\n defaultOpeneds: string[];\r\n uniqueOpened: boolean;\r\n class: string;\r\n id: string;\r\n ariaLabel: string;\r\n ariaDescribedBy: string;\r\n onSelect: ((index: string) => void) | undefined;\r\n onOpen: ((index: string) => void) | undefined;\r\n onClose: ((index: string) => void) | undefined;\r\n}\r\n\r\nexport interface MenuSlots {\r\n default?: () => VNode[];\r\n}\r\n\r\nexport const Menu = defineComponent({\r\n name: 'LytMenu',\r\n\r\n props: {\r\n mode: { type: String, default: 'horizontal' },\r\n defaultActive: { type: String, default: '' },\r\n defaultOpeneds: { type: Array, default: (): string[] => [] },\r\n uniqueOpened: { type: Boolean, default: false },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onSelect: { type: Function, default: undefined },\r\n onOpen: { type: Function, default: undefined },\r\n onClose: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: MenuSlots }) {\r\n const p = props as unknown as MenuSetupProps;\r\n const activeIndex = signal(p.defaultActive);\r\n const openedIndexes = signal(new Set<string>(p.defaultOpeneds));\r\n\r\n const handleSelect = (index: string) => {\r\n activeIndex.set(index);\r\n p.onSelect?.(index);\r\n };\r\n\r\n const toggleSubmenu = (index: string) => {\r\n const newOpened = new Set(openedIndexes());\r\n\r\n if (newOpened.has(index)) {\r\n newOpened.delete(index);\r\n p.onClose?.(index);\r\n } else {\r\n if (p.uniqueOpened) {\r\n newOpened.clear();\r\n }\r\n newOpened.add(index);\r\n p.onOpen?.(index);\r\n }\r\n\r\n openedIndexes.set(newOpened);\r\n };\r\n\r\n return () => {\r\n const menuClass = [\r\n 'lyt-menu',\r\n `lyt-menu--${p.mode}`,\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const items = slots.default?.() || [];\r\n\r\n const menuItems: VNode[] = items.map((item: VNode) => {\r\n const itemProps = (item as unknown as { props: { index?: string; label?: string; icon?: unknown; children?: unknown[]; disabled?: boolean } }).props;\r\n if (!itemProps) return item;\r\n\r\n const isActive = itemProps.index === activeIndex();\r\n const isOpened = openedIndexes().has(itemProps.index as string);\r\n\r\n const itemChildren: VNode[] = [];\r\n\r\n if (itemProps.icon) {\r\n itemChildren.push(createVNode('span', { class: 'lyt-menu__icon' }, [itemProps.icon as unknown as VNode]));\r\n }\r\n itemChildren.push(createVNode('span', { class: 'lyt-menu__title' }, [createVNode('span', {}, String(itemProps.label || ''))]));\r\n\r\n if (itemProps.children && (itemProps.children as unknown[]).length > 0) {\r\n itemChildren.push(createVNode('span', {\r\n class: ['lyt-menu__arrow', isOpened ? 'lyt-menu__arrow--opened' : ''].filter(Boolean).join(' '),\r\n }, [createVNode('span', {}, isOpened ? '▲' : '▼')]));\r\n\r\n const submenuChildren: VNode[] = (itemProps.children as unknown[]).map((child: unknown) => {\r\n const childItem = child as { index?: string; label?: string; icon?: unknown; disabled?: boolean };\r\n const childBtnProps = getButtonA11yProps({\r\n ariaLabel: childItem.label,\r\n disabled: childItem.disabled,\r\n });\r\n\r\n return createVNode('li', mergeA11yProps(childBtnProps, {\r\n key: childItem.index,\r\n class: [\r\n 'lyt-menu__item',\r\n childItem.index === activeIndex() ? 'lyt-menu__item--active' : '',\r\n childItem.disabled ? 'lyt-menu__item--disabled' : '',\r\n ].filter(Boolean).join(' '),\r\n onClick: () => {\r\n if (childItem.disabled) return;\r\n handleSelect(childItem.index as string);\r\n },\r\n }), [\r\n childItem.icon ? createVNode('span', { class: 'lyt-menu__icon' }, [childItem.icon as unknown as VNode]) : createVNode('span', {}, ''),\r\n createVNode('span', { class: 'lyt-menu__title' }, [createVNode('span', {}, String(childItem.label || ''))]),\r\n ]);\r\n });\r\n\r\n itemChildren.push(createVNode('ul', { class: 'lyt-menu__submenu' }, submenuChildren));\r\n }\r\n\r\n const itemBtnProps = getButtonA11yProps({\r\n ariaLabel: itemProps.label,\r\n disabled: itemProps.disabled,\r\n });\r\n\r\n return createVNode('li', mergeA11yProps(itemBtnProps, {\r\n key: itemProps.index,\r\n class: [\r\n 'lyt-menu__item',\r\n isActive ? 'lyt-menu__item--active' : '',\r\n itemProps.disabled ? 'lyt-menu__item--disabled' : '',\r\n ].filter(Boolean).join(' '),\r\n onClick: () => {\r\n if (itemProps.disabled) return;\r\n if (itemProps.children && (itemProps.children as unknown[]).length > 0) {\r\n toggleSubmenu(itemProps.index as string);\r\n } else {\r\n handleSelect(itemProps.index as string);\r\n }\r\n },\r\n }), itemChildren);\r\n });\r\n\r\n return createVNode('ul', { class: menuClass, role: 'menubar', id: p.id, 'aria-label': p.ariaLabel }, menuItems);\r\n };\r\n },\r\n});\r\n\r\nexport type { MenuProps } from './types';\r\n","/**\r\n * @lytjs/ui - Cascader 组件\r\n *\r\n * 级联选择器组件,支持多选、懒加载、数据回显等功能\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { CascaderOption, CascaderSetupProps, CascaderSlots } from './types';\r\nimport { getComboboxA11yProps, getButtonA11yProps, getGroupA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Cascader = defineComponent({\r\n name: 'LytCascader',\r\n\r\n props: {\r\n options: { type: Array, default: (): CascaderOption[] => [] },\r\n modelValue: { type: Array, default: (): (string | number)[] => [] },\r\n placeholder: { type: String, default: '请选择' },\r\n disabled: { type: Boolean, default: false },\r\n clearable: { type: Boolean, default: true },\r\n multiple: { type: Boolean, default: false },\r\n filterable: { type: Boolean, default: false },\r\n checkStrictly: { type: Boolean, default: false },\r\n showAllLevels: { type: Boolean, default: true },\r\n collapseTags: { type: Boolean, default: false },\r\n separator: { type: String, default: ' / ' },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n load: { type: Function, default: undefined },\r\n onChange: { type: Function, default: undefined },\r\n onExpandChange: { type: Function, default: undefined },\r\n onVisibleChange: { type: Function, default: undefined },\r\n onRemoveTag: { type: Function, default: undefined },\r\n onClear: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: CascaderSlots }) {\r\n const p = props as CascaderSetupProps;\r\n const isDropdownOpen = signal(false);\r\n const activePath = signal<(string | number)[]>([]);\r\n const selectedValues = signal<Array<(string | number)[]>>([]);\r\n const searchText = signal('');\r\n const isFiltering = signal(false);\r\n\r\n if (p.modelValue.length > 0) {\r\n if (p.multiple) {\r\n selectedValues.set([...(p.modelValue as Array<(string | number)[]>)]);\r\n } else {\r\n selectedValues.set([(p.modelValue as (string | number)[])]);\r\n }\r\n }\r\n\r\n const toggleDropdown = (visible?: boolean) => {\r\n if (p.disabled) return;\r\n\r\n if (typeof visible === 'boolean') {\r\n isDropdownOpen.set(visible);\r\n } else {\r\n isDropdownOpen.set(!isDropdownOpen());\r\n }\r\n p.onVisibleChange?.(isDropdownOpen());\r\n };\r\n\r\n const clear = () => {\r\n selectedValues.set([]);\r\n activePath.set([]);\r\n isDropdownOpen.set(false);\r\n p.onClear?.();\r\n p.onChange?.([]);\r\n };\r\n\r\n const removeTag = (index: number) => {\r\n if (p.disabled) return;\r\n\r\n const newSelected = [...selectedValues()];\r\n newSelected.splice(index, 1);\r\n selectedValues.set(newSelected);\r\n p.onRemoveTag?.(newSelected);\r\n p.onChange?.(newSelected);\r\n };\r\n\r\n const selectOption = (option: CascaderOption, level: number) => {\r\n if (option.disabled) return;\r\n\r\n const newPath = [...activePath().slice(0, level), option.value];\r\n activePath.set(newPath);\r\n\r\n const nextOptions = option.children || [];\r\n\r\n if (option.isLeaf || nextOptions.length === 0) {\r\n if (p.multiple) {\r\n const exists = selectedValues().some(item => item.join('-') === newPath.join('-'));\r\n const newSelected = exists\r\n ? selectedValues().filter(item => item.join('-') !== newPath.join('-'))\r\n : [...selectedValues(), newPath];\r\n selectedValues.set(newSelected);\r\n p.onChange?.(newSelected);\r\n } else {\r\n selectedValues.set([newPath]);\r\n isDropdownOpen.set(false);\r\n p.onChange?.(newPath);\r\n }\r\n } else if (p.load && nextOptions.length === 0) {\r\n option.loading = true;\r\n p.load(option, (children: CascaderOption[]) => {\r\n option.loading = false;\r\n option.children = children;\r\n });\r\n }\r\n };\r\n\r\n const getOptionsAtLevel = (level: number): CascaderOption[] => {\r\n if (isFiltering()) {\r\n const keyword = searchText().toLowerCase();\r\n return filterOptions(p.options, keyword);\r\n }\r\n\r\n let options: CascaderOption[] = [...p.options];\r\n for (let i = 0; i < level; i++) {\r\n const found = options.find(opt => opt.value === activePath()[i]);\r\n options = found?.children || [];\r\n if (options.length === 0) break;\r\n }\r\n return options;\r\n };\r\n\r\n const filterOptions = (options: CascaderOption[], keyword: string): CascaderOption[] => {\r\n return options.reduce((acc: CascaderOption[], option) => {\r\n const match = option.label.toLowerCase().includes(keyword);\r\n const children = option.children ? filterOptions(option.children, keyword) : [];\r\n\r\n if (match || children.length > 0) {\r\n acc.push({ ...option, children: children.length > 0 ? children : undefined });\r\n }\r\n return acc;\r\n }, []);\r\n };\r\n\r\n const getDisplayText = (): string => {\r\n const values = selectedValues();\r\n\r\n if (values.length === 0) {\r\n return p.placeholder;\r\n }\r\n\r\n if (!p.multiple) {\r\n return getPathLabel(values[0] || []);\r\n }\r\n\r\n return `${values.length} 项`;\r\n };\r\n\r\n const getPathLabel = (path: (string | number)[]): string => {\r\n const labels: string[] = [];\r\n let currentOptions: CascaderOption[] = p.options;\r\n\r\n for (const value of path) {\r\n const found = currentOptions.find(opt => opt.value === value);\r\n if (found) {\r\n labels.push(found.label);\r\n currentOptions = found.children || [];\r\n }\r\n }\r\n\r\n return p.showAllLevels ? labels.join(p.separator) : (labels[labels.length - 1] || '');\r\n };\r\n\r\n const renderOption = (option: CascaderOption, level: number): VNode => {\r\n const isActive = activePath()[level] === option.value;\r\n const isSelected = selectedValues().some(path => path.join('-') === [...activePath().slice(0, level), option.value].join('-'));\r\n\r\n const optionChildren: VNode[] = [];\r\n\r\n if (option.loading) {\r\n optionChildren.push(createVNode('span', { class: 'lyt-cascader__loading' }, [createVNode('span', {}, '⏳')]));\r\n }\r\n\r\n if (slots.default) {\r\n optionChildren.push(...slots.default(option));\r\n } else {\r\n const labelBtnProps = getButtonA11yProps({ \r\n ariaLabel: option.label, \r\n disabled: option.disabled \r\n });\r\n optionChildren.push(createVNode('span', mergeA11yProps(labelBtnProps, {}), String(option.label)));\r\n }\r\n\r\n if (option.children && !option.isLeaf) {\r\n optionChildren.push(createVNode('span', { class: 'lyt-cascader__arrow' }, [createVNode('span', {}, '▶')]));\r\n }\r\n\r\n return createVNode('div', {\r\n key: String(option.value),\r\n class: [\r\n 'lyt-cascader__option',\r\n isActive ? 'lyt-cascader__option--active' : '',\r\n isSelected ? 'lyt-cascader__option--selected' : '',\r\n option.disabled ? 'lyt-cascader__option--disabled' : '',\r\n ].filter(Boolean).join(' '),\r\n onClick: () => selectOption(option, level),\r\n }, optionChildren);\r\n };\r\n\r\n return () => {\r\n const cascaderClass = [\r\n 'lyt-cascader',\r\n isDropdownOpen() ? 'lyt-cascader--open' : '',\r\n p.disabled ? 'lyt-cascader--disabled' : '',\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const isValueSet = selectedValues().length > 0;\r\n \r\n const a11yProps = getComboboxA11yProps({\r\n id: p.id,\r\n ariaLabel: p.ariaLabel,\r\n ariaDescribedBy: p.ariaDescribedBy,\r\n disabled: p.disabled,\r\n expanded: isDropdownOpen(),\r\n controls: undefined,\r\n });\r\n\r\n const contentChildren: VNode[] = [];\r\n\r\n if (p.multiple && isValueSet) {\r\n selectedValues().forEach((path, index) => {\r\n const removeBtnProps = getButtonA11yProps({ ariaLabel: '移除标签' });\r\n contentChildren.push(createVNode('span', { class: 'lyt-cascader__tag', key: index }, [\r\n createVNode('span', {}, getPathLabel(path)),\r\n createVNode('span', mergeA11yProps(removeBtnProps, { \r\n class: 'lyt-cascader__tag-close', \r\n onClick: () => removeTag(index) \r\n }), [createVNode('span', {}, '×')]),\r\n ]));\r\n });\r\n } else {\r\n contentChildren.push(createVNode('span', {\r\n class: ['lyt-cascader__value', !isValueSet ? 'lyt-cascader__placeholder' : ''].filter(Boolean).join(' '),\r\n }, [createVNode('span', {}, getDisplayText())]));\r\n }\r\n\r\n if (p.clearable && isValueSet) {\r\n const clearBtnProps = getButtonA11yProps({ ariaLabel: '清除' });\r\n contentChildren.push(createVNode('span', mergeA11yProps(clearBtnProps, {\r\n class: 'lyt-cascader__clear',\r\n onClick: (e: Event) => { e.stopPropagation(); clear(); },\r\n }), [createVNode('span', {}, '×')]));\r\n }\r\n\r\n contentChildren.push(createVNode('span', { class: 'lyt-cascader__arrow' }, [createVNode('span', {}, '▼')]));\r\n\r\n const dropdownContent: VNode[] = [];\r\n\r\n if (p.filterable) {\r\n dropdownContent.push(createVNode('div', mergeA11yProps({\r\n role: 'search',\r\n }, { class: 'lyt-cascader__search' }), [\r\n createVNode('input', {\r\n type: 'text',\r\n placeholder: '搜索',\r\n value: searchText(),\r\n onInput: (e: Event) => {\r\n const value = (e.target as HTMLInputElement).value;\r\n searchText.set(value);\r\n isFiltering.set(value.length > 0);\r\n },\r\n }),\r\n ]));\r\n }\r\n\r\n const maxLevel = isFiltering() ? 1 : activePath().length + 1;\r\n for (let i = 0; i < maxLevel; i++) {\r\n const options = getOptionsAtLevel(i);\r\n if (options.length > 0 || i === 0) {\r\n const panelProps = getGroupA11yProps({ role: 'listbox' });\r\n dropdownContent.push(createVNode('div', mergeA11yProps(panelProps, { class: 'lyt-cascader__panel', key: i }), options.map(option => renderOption(option, i))));\r\n }\r\n }\r\n\r\n const resultChildren: VNode[] = [\r\n createVNode('div', mergeA11yProps(a11yProps, { class: 'lyt-cascader__trigger' }), contentChildren),\r\n ];\r\n\r\n if (isDropdownOpen()) {\r\n const dropdownChildren: VNode[] = [];\r\n if (p.options.length === 0) {\r\n if (slots.empty) {\r\n dropdownChildren.push(...slots.empty());\r\n } else {\r\n dropdownChildren.push(createVNode('span', {}, '暂无数据'));\r\n }\r\n } else {\r\n dropdownChildren.push(...dropdownContent);\r\n }\r\n\r\n resultChildren.push(createVNode('div', { class: 'lyt-cascader__dropdown' }, dropdownChildren));\r\n }\r\n\r\n return createVNode('div', {\r\n class: cascaderClass,\r\n onClick: () => toggleDropdown(),\r\n }, resultChildren);\r\n };\r\n },\r\n});\r\n\r\nexport type { CascaderProps, CascaderSlots, CascaderOption, CascaderSetupProps } from './types';\r\n","/**\n * @lytjs/ui - TreeSelect 树形选择器组件\n *\n * 树形选择器组件,结合了 Select 和 Tree 功能\n */\n\nimport { defineComponent } from '@lytjs/component';\nimport { createVNode, type VNode } from '@lytjs/vdom';\nimport { isString, isObject } from '@lytjs/common-is';\nimport { signal } from '@lytjs/reactivity';\nimport { getComboboxA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\n\nexport interface TreeSelectNode {\n value: string | number;\n label: string;\n children?: TreeSelectNode[];\n disabled?: boolean;\n}\n\nexport interface TreeSelectSetupProps {\n data: TreeSelectNode[];\n value: string | number;\n placeholder: string;\n multiple: boolean;\n clearable: boolean;\n filterable: boolean;\n filterPlaceholder: string;\n nodeKey: string;\n defaultExpandAll: boolean;\n defaultExpandedKeys: (string | number)[];\n class: string;\n style: string | Record<string, string>;\n id: string;\n ariaLabel: string;\n ariaDescribedBy: string;\n onChange: ((value: string | number, node: TreeSelectNode) => void) | undefined;\n}\n\ntype NodeDict = Record<string, unknown>;\n\nexport const TreeSelect = defineComponent({\n name: 'LytTreeSelect',\n\n props: {\n data: { type: Array as () => TreeSelectNode[], default: () => [] },\n value: { type: [String, Number] as any, default: '' },\n placeholder: { type: String, default: '请选择' },\n multiple: { type: Boolean, default: false },\n clearable: { type: Boolean, default: false },\n filterable: { type: Boolean, default: false },\n filterPlaceholder: { type: String, default: '请输入搜索内容' },\n nodeKey: { type: String, default: 'value' },\n defaultExpandAll: { type: Boolean, default: false },\n defaultExpandedKeys: { type: Array as () => (string | number)[], default: () => [] },\n class: { type: String, default: '' },\n style: { type: [String, Object] as any, default: '' },\n id: { type: String, default: '' },\n ariaLabel: { type: String, default: '' },\n ariaDescribedBy: { type: String, default: '' },\n onChange: { type: Function, default: undefined },\n },\n\n setup(props: Record<string, unknown>, { slots, emit }) {\n const _props = props as unknown as TreeSelectSetupProps;\n const visible = signal(false);\n const filterQuery = signal('');\n const expandedKeys = signal<(string | number)[]>(\n _props.defaultExpandAll\n ? getAllNodeKeys(_props.data)\n : _props.defaultExpandedKeys\n );\n const selectedLabel = signal('');\n\n function getAllNodeKeys(nodes: TreeSelectNode[]): (string | number)[] {\n const keys: (string | number)[] = [];\n const traverse = (nodeList: TreeSelectNode[]) => {\n for (const node of nodeList) {\n const nodeDict = node as unknown as NodeDict;\n const nodeValue = nodeDict[_props.nodeKey];\n if (typeof nodeValue === 'string' || typeof nodeValue === 'number') {\n keys.push(nodeValue);\n }\n if (node.children && node.children.length > 0) {\n traverse(node.children);\n }\n }\n };\n traverse(nodes);\n return keys;\n }\n\n const filteredData = (): TreeSelectNode[] => {\n const query = filterQuery();\n if (!query) return _props.data;\n\n const filterNodes = (nodes: TreeSelectNode[]): TreeSelectNode[] => {\n const result: TreeSelectNode[] = [];\n for (const node of nodes) {\n let filteredChildren: TreeSelectNode[] | undefined;\n if (node.children && node.children.length > 0) {\n filteredChildren = filterNodes(node.children);\n }\n\n const labelMatch = node.label.toLowerCase().includes(query.toLowerCase());\n const hasMatchingChildren = filteredChildren && filteredChildren.length > 0;\n\n if (labelMatch || hasMatchingChildren) {\n const filteredNode: TreeSelectNode = {\n ...node,\n children: hasMatchingChildren ? filteredChildren : node.children,\n };\n result.push(filteredNode);\n }\n }\n return result;\n };\n\n return filterNodes(_props.data);\n };\n\n const selectedNode = (): TreeSelectNode | null => {\n const findNode = (nodes: TreeSelectNode[]): TreeSelectNode | null => {\n for (const node of nodes) {\n const nodeDict = node as unknown as NodeDict;\n const nodeValue = nodeDict[_props.nodeKey];\n if (nodeValue === _props.value) {\n return node;\n }\n if (node.children && node.children.length > 0) {\n const found = findNode(node.children);\n if (found) return found;\n }\n }\n return null;\n };\n return findNode(_props.data);\n };\n\n const handleToggle = () => {\n visible.update(v => !v);\n };\n\n const handleClear = () => {\n emit('update:value', '');\n _props.onChange?.('' as unknown as string | number, null as unknown as TreeSelectNode);\n };\n\n const handleSelect = (node: TreeSelectNode) => {\n if (node.disabled) return;\n const nodeDict = node as unknown as NodeDict;\n const nodeValue = nodeDict[_props.nodeKey] as string | number;\n emit('update:value', nodeValue);\n _props.onChange?.(nodeValue, node);\n selectedLabel.set(node.label);\n visible.set(false);\n };\n\n const handleToggleExpand = (node: TreeSelectNode, e: Event) => {\n e.stopPropagation();\n const nodeDict = node as unknown as NodeDict;\n const nodeKey = nodeDict[_props.nodeKey] as string | number;\n const keys = expandedKeys();\n if (keys.includes(nodeKey)) {\n expandedKeys.set(keys.filter(k => k !== nodeKey));\n } else {\n expandedKeys.update(k => [...k, nodeKey]);\n }\n };\n\n const getTreeSelectClass = () => {\n const classes = ['lyt-tree-select'];\n if (visible()) classes.push('is-visible');\n if (_props.class) classes.push(_props.class);\n return classes.join(' ');\n };\n\n const getTreeSelectStyle = (): string | Record<string, string> => {\n if (!_props.style) return {};\n if (isString(_props.style)) return _props.style;\n if (isObject(_props.style)) return _props.style;\n return {};\n };\n\n const renderNode = (node: TreeSelectNode, level: number = 0): VNode => {\n const keys = expandedKeys();\n const nodeDict = node as unknown as NodeDict;\n const nodeKey = nodeDict[_props.nodeKey] as string | number;\n const isExpanded = keys.includes(nodeKey);\n const isSelected = nodeKey === _props.value;\n const hasChildren = node.children && node.children.length > 0;\n\n const nodeChildren: VNode[] = [];\n\n if (hasChildren) {\n const expandBtnProps = getButtonA11yProps({\n ariaLabel: isExpanded ? '收起' : '展开',\n disabled: node.disabled\n });\n nodeChildren.push(createVNode('span', mergeA11yProps(expandBtnProps, {\n class: ['lyt-tree-node-expand-icon', isExpanded ? 'is-expanded' : ''],\n onClick: (e: Event) => handleToggleExpand(node, e),\n }), [createVNode('span', {}, isExpanded ? '▼' : '▶')]));\n } else {\n nodeChildren.push(createVNode('span', { class: 'lyt-tree-node-expand-icon' }, [createVNode('span', {}, '')]));\n }\n\n const labelBtnProps = getButtonA11yProps({\n ariaLabel: node.label,\n disabled: node.disabled\n });\n nodeChildren.push(createVNode('span', mergeA11yProps(labelBtnProps, {\n class: 'lyt-tree-node-label',\n }), [createVNode('span', {}, node.label)]));\n\n const nodeVNode = createVNode('div', {\n class: ['lyt-tree-node', { 'is-selected': isSelected, 'is-disabled': node.disabled, 'is-expanded': isExpanded }],\n style: { paddingLeft: `${level * 20}px` },\n onClick: () => handleSelect(node),\n }, nodeChildren);\n\n if (hasChildren && isExpanded && node.children) {\n const childNodes = node.children.map((child: TreeSelectNode) => renderNode(child, level + 1));\n return createVNode('div', { class: 'lyt-tree-node-wrapper' }, [nodeVNode, ...childNodes]);\n }\n\n return nodeVNode;\n };\n\n return () => {\n const children: VNode[] = [];\n\n const triggerChildren: VNode[] = [];\n\n const a11yProps = getComboboxA11yProps({\n id: _props.id,\n ariaLabel: _props.ariaLabel,\n ariaDescribedBy: _props.ariaDescribedBy,\n disabled: false,\n expanded: visible(),\n controls: undefined,\n });\n\n const currentNode = selectedNode();\n triggerChildren.push(createVNode('span', { class: 'lyt-tree-select-value' },\n currentNode ? [createVNode('span', {}, currentNode.label)] : [createVNode('span', {}, _props.placeholder)]\n ));\n\n if (_props.clearable && currentNode) {\n const clearBtnProps = getButtonA11yProps({ ariaLabel: '清除' });\n triggerChildren.push(createVNode('span', mergeA11yProps(clearBtnProps, {\n class: 'lyt-tree-select-clear',\n onClick: (e: Event) => {\n e.stopPropagation();\n handleClear();\n },\n }), [createVNode('span', {}, '×')]));\n }\n\n triggerChildren.push(createVNode('span', { class: 'lyt-tree-select-arrow' }, [createVNode('span', {}, '▼')]));\n\n children.push(createVNode('div', mergeA11yProps(a11yProps, {\n class: 'lyt-tree-select-trigger',\n onClick: handleToggle,\n }), triggerChildren));\n\n if (visible()) {\n const dropdownChildren: VNode[] = [];\n\n if (_props.filterable) {\n dropdownChildren.push(createVNode('div', { role: 'search', class: 'lyt-tree-select-search' }, [\n createVNode('input', {\n type: 'text',\n placeholder: _props.filterPlaceholder,\n value: filterQuery(),\n onInput: (e: Event) => {\n const target = e.target as HTMLInputElement;\n filterQuery.set(target.value);\n },\n }),\n ]));\n }\n\n const treeChildren: VNode[] = [];\n const nodes = filteredData();\n if (nodes.length > 0) {\n for (const node of nodes) {\n treeChildren.push(renderNode(node, 0));\n }\n } else if (slots.empty) {\n const emptyContent = slots.empty();\n treeChildren.push(createVNode('div', { class: 'lyt-tree-select-empty' }, emptyContent as VNode[]));\n } else {\n treeChildren.push(createVNode('div', { class: 'lyt-tree-select-empty' }, [createVNode('span', {}, '暂无数据')]));\n }\n\n dropdownChildren.push(createVNode('div', { role: 'tree', class: 'lyt-tree-select-tree' }, treeChildren));\n\n children.push(createVNode('div', { class: 'lyt-tree-select-dropdown' }, dropdownChildren));\n }\n\n return createVNode('div', {\n class: getTreeSelectClass(),\n style: getTreeSelectStyle(),\n }, children);\n };\n },\n});\n","/**\n * @lytjs/ui - Transfer 穿梭框组件\n *\n * 穿梭框组件,用于将数据从一侧移动到另一侧\n */\n\nimport type { TransferProps, TransferSlots, TransferSetupProps, TransferOption } from './types';\nimport { defineComponent } from '@lytjs/component';\nimport { createVNode, type VNode } from '@lytjs/vdom';\nimport { isString, isObject } from '@lytjs/common-is';\nimport { signal } from '@lytjs/reactivity';\n\nexport const Transfer = defineComponent({\n name: 'LytTransfer',\n\n props: {\n data: { type: Array as () => TransferOption[], default: () => [] },\n value: { type: Array as () => (string | number)[], default: () => [] },\n filterable: { type: Boolean, default: false },\n filterPlaceholder: { type: String, default: '请输入搜索内容' },\n titles: { type: Array as () => string[], default: () => ['源列表', '目标列表'] },\n buttonTexts: { type: Array as () => string[], default: () => ['', ''] },\n class: { type: String, default: '' },\n style: { type: [String, Object] as any, default: '' },\n onChange: { type: Function, default: undefined },\n },\n\n setup(props: Record<string, unknown>, { slots, emit }) {\n const _props = props as TransferSetupProps;\n const leftCheckedKeys = signal<(string | number)[]>([]);\n const rightCheckedKeys = signal<(string | number)[]>([]);\n const leftFilterQuery = signal('');\n const rightFilterQuery = signal('');\n\n const leftData = () => {\n return (_props.data as TransferOption[]).filter(item => !(_props.value as (string | number)[]).includes(item.key));\n };\n\n const rightData = () => {\n return (_props.data as TransferOption[]).filter(item => (_props.value as (string | number)[]).includes(item.key));\n };\n\n const filteredLeftData = () => {\n const query = leftFilterQuery();\n const data = leftData();\n if (!query) return data;\n return data.filter(item =>\n item.label.toLowerCase().includes(query.toLowerCase())\n );\n };\n\n const filteredRightData = () => {\n const query = rightFilterQuery();\n const data = rightData();\n if (!query) return data;\n return data.filter(item =>\n item.label.toLowerCase().includes(query.toLowerCase())\n );\n };\n\n const handleMoveToRight = () => {\n const newValues = [...(_props.value as (string | number)[]), ...leftCheckedKeys()];\n emit('update:value', newValues);\n _props.onChange?.(newValues, 'right', leftCheckedKeys());\n leftCheckedKeys.set([]);\n };\n\n const handleMoveToLeft = () => {\n const newValues = (_props.value as (string | number)[]).filter(key => !rightCheckedKeys().includes(key));\n emit('update:value', newValues);\n _props.onChange?.(newValues, 'left', rightCheckedKeys());\n rightCheckedKeys.set([]);\n };\n\n const getTransferClass = () => {\n const classes = ['lyt-transfer'];\n if (_props.class) classes.push(_props.class);\n return classes.join(' ');\n };\n\n const getTransferStyle = () => {\n const style: Record<string, string> = {};\n if (_props.style) {\n if (isString(_props.style)) {\n return _props.style;\n }\n if (isObject(_props.style)) {\n Object.assign(style, _props.style);\n }\n }\n return style;\n };\n\n const renderItem = (item: TransferOption, list: 'left' | 'right') => {\n const leftChecked = leftCheckedKeys();\n const rightChecked = rightCheckedKeys();\n const checked = list === 'left'\n ? leftChecked.includes(item.key)\n : rightChecked.includes(item.key);\n\n const handleCheck = () => {\n if (item.disabled) return;\n if (list === 'left') {\n if (checked) {\n leftCheckedKeys.set(leftChecked.filter((k: string | number) => k !== item.key));\n } else {\n leftCheckedKeys.update(keys => [...keys, item.key]);\n }\n } else {\n if (checked) {\n rightCheckedKeys.set(rightChecked.filter((k: string | number) => k !== item.key));\n } else {\n rightCheckedKeys.update(keys => [...keys, item.key]);\n }\n }\n };\n\n return createVNode('div', {\n class: ['lyt-transfer-panel-item', { 'is-disabled': item.disabled, 'is-checked': checked }],\n onClick: handleCheck,\n key: item.key,\n }, [createVNode('span', {}, item.label)]);\n };\n\n return () => {\n const children: VNode[] = [];\n\n const leftPanelChildren: VNode[] = [];\n leftPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-header' }, [createVNode('span', {}, (_props.titles as string[])[0] || '')]));\n\n if (_props.filterable) {\n const filterInput = createVNode('input', {\n class: 'lyt-transfer-filter',\n type: 'text',\n placeholder: _props.filterPlaceholder,\n value: leftFilterQuery(),\n onInput: (e: Event) => {\n const target = e.target as HTMLInputElement;\n leftFilterQuery.set(target.value);\n },\n });\n const items = filteredLeftData().map((item: TransferOption) => renderItem(item, 'left'));\n leftPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-body' }, [filterInput, ...items]));\n } else {\n const items = filteredLeftData().map((item: TransferOption) => renderItem(item, 'left'));\n leftPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-body' }, items));\n }\n\n if (slots.leftFooter) {\n const footerContent = slots.leftFooter();\n leftPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-footer' }, footerContent as VNode[]));\n }\n\n children.push(createVNode('div', { class: 'lyt-transfer-panel' }, leftPanelChildren));\n\n const buttonChildren: VNode[] = [];\n const rightDisabled = leftCheckedKeys().length === 0;\n buttonChildren.push(createVNode('button', {\n class: ['lyt-button', 'lyt-button--default', rightDisabled ? 'is-disabled' : ''],\n disabled: rightDisabled,\n onClick: handleMoveToRight,\n }, [createVNode('span', {}, (_props.buttonTexts as string[])[0] || '→')]));\n\n const leftDisabled = rightCheckedKeys().length === 0;\n buttonChildren.push(createVNode('button', {\n class: ['lyt-button', 'lyt-button--default', leftDisabled ? 'is-disabled' : ''],\n disabled: leftDisabled,\n onClick: handleMoveToLeft,\n }, [createVNode('span', {}, (_props.buttonTexts as string[])[1] || '←')]));\n\n children.push(createVNode('div', { class: 'lyt-transfer-buttons' }, buttonChildren));\n\n const rightPanelChildren: VNode[] = [];\n rightPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-header' }, [createVNode('span', {}, (_props.titles as string[])[1] || '')]));\n\n if (_props.filterable) {\n const filterInput = createVNode('input', {\n class: 'lyt-transfer-filter',\n type: 'text',\n placeholder: _props.filterPlaceholder,\n value: rightFilterQuery(),\n onInput: (e: Event) => {\n const target = e.target as HTMLInputElement;\n rightFilterQuery.set(target.value);\n },\n });\n const items = filteredRightData().map((item: TransferOption) => renderItem(item, 'right'));\n rightPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-body' }, [filterInput, ...items]));\n } else {\n const items = filteredRightData().map((item: TransferOption) => renderItem(item, 'right'));\n rightPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-body' }, items));\n }\n\n if (slots.rightFooter) {\n const footerContent = slots.rightFooter();\n rightPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-footer' }, footerContent as VNode[]));\n }\n\n children.push(createVNode('div', { class: 'lyt-transfer-panel' }, rightPanelChildren));\n\n return createVNode('div', {\n class: getTransferClass(),\n style: getTransferStyle(),\n }, children);\n };\n },\n});\n\nexport type { TransferProps, TransferSlots };\n","/**\r\n * @lytjs/ui - Descriptions 组件\r\n *\r\n * 描述列表组件,支持行列合并、垂直/水平布局、自适应、插槽自定义\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport type { DescriptionsSetupProps, DescriptionsSlots, DescriptionsItemSetupProps, DescriptionsItemSlots } from './types';\r\n\r\ninterface DescriptionsItemData {\r\n label: string;\r\n value: string;\r\n span?: number;\r\n labelStyle?: Record<string, string>;\r\n contentStyle?: Record<string, string>;\r\n}\r\n\r\nexport const Descriptions = defineComponent({\r\n name: 'LytDescriptions',\r\n\r\n props: {\r\n title: { type: String, default: '' },\r\n column: { type: Number, default: 3 },\r\n border: { type: Boolean, default: false },\r\n size: { type: String, default: 'medium' },\r\n layout: { type: String, default: 'horizontal' },\r\n class: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: DescriptionsSlots }) {\r\n const p = props as DescriptionsSetupProps;\r\n\r\n return () => {\r\n const resultChildren: VNode[] = [];\r\n\r\n if (p.title || slots.title) {\r\n const titleContent: VNode[] = [];\r\n if (slots.title) {\r\n titleContent.push(...slots.title());\r\n } else {\r\n titleContent.push(createVNode('span', {}, String(p.title)));\r\n }\r\n resultChildren.push(createVNode('div', { class: 'lyt-descriptions__header' }, titleContent));\r\n }\r\n\r\n const bodyChildren: VNode[] = [];\r\n\r\n if (slots.default) {\r\n bodyChildren.push(...slots.default());\r\n }\r\n\r\n resultChildren.push(createVNode(\r\n 'div',\r\n {\r\n class: `lyt-descriptions__body ${p.layout === 'vertical' ? 'lyt-descriptions__body--vertical' : ''}`,\r\n style: {\r\n display: 'grid',\r\n gridTemplateColumns: `repeat(${p.column}, 1fr)`,\r\n gap: p.border ? '0' : '16px 24px',\r\n },\r\n },\r\n bodyChildren\r\n ));\r\n\r\n return createVNode('div', {\r\n class: [\r\n 'lyt-descriptions',\r\n p.border ? 'lyt-descriptions--bordered' : '',\r\n p.size !== 'medium' ? `lyt-descriptions--${p.size}` : '',\r\n p.class,\r\n ].filter(Boolean).join(' '),\r\n }, resultChildren);\r\n };\r\n },\r\n});\r\n\r\nexport const DescriptionsItem = defineComponent({\r\n name: 'LytDescriptionsItem',\r\n\r\n props: {\r\n label: { type: String, default: '' },\r\n span: { type: Number, default: 1 },\r\n labelStyle: { type: Object, default: undefined },\r\n contentStyle: { type: Object, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: DescriptionsItemSlots }) {\r\n const p = props as DescriptionsItemSetupProps;\r\n\r\n return () => {\r\n const labelContent: VNode[] = [];\r\n if (slots.label) {\r\n labelContent.push(...slots.label());\r\n } else if (p.label) {\r\n labelContent.push(createVNode('span', {}, String(p.label)));\r\n }\r\n\r\n const contentContent: VNode[] = [];\r\n if (slots.default) {\r\n contentContent.push(...slots.default());\r\n }\r\n\r\n return createVNode(\r\n 'div',\r\n {\r\n class: 'lyt-descriptions-item',\r\n style: { gridColumn: `span ${p.span}` },\r\n },\r\n [\r\n createVNode(\r\n 'div',\r\n {\r\n class: 'lyt-descriptions-item__label',\r\n style: p.labelStyle,\r\n },\r\n labelContent.length > 0 ? labelContent : [createVNode('span', {}, '')]\r\n ),\r\n createVNode(\r\n 'div',\r\n {\r\n class: 'lyt-descriptions-item__content',\r\n style: p.contentStyle,\r\n },\r\n contentContent.length > 0 ? contentContent : [createVNode('span', {}, '')]\r\n ),\r\n ]\r\n );\r\n };\r\n },\r\n});\r\n\r\nexport default Descriptions;\r\nexport type { DescriptionsItemData };\r\nexport type { DescriptionsProps, DescriptionsSlots, DescriptionsSetupProps, DescriptionsItemProps, DescriptionsItemSlots, DescriptionsItemSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Modal 组件\r\n *\r\n * 对话框组件,支持拖拽移动、全屏显示、自定义页脚、层级管理、动画优化\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport { getDialogA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { ModalSetupProps, ModalSlots } from './types';\r\n\r\nexport const Modal = defineComponent({\r\n name: 'LytModal',\r\n\r\n props: {\r\n modelValue: { type: Boolean, default: false },\r\n title: { type: String, default: '' },\r\n width: { type: [String, Number] as unknown as StringConstructor, default: '50%' },\r\n top: { type: String, default: '15vh' },\r\n showClose: { type: Boolean, default: true },\r\n closeOnClickModal: { type: Boolean, default: true },\r\n closeOnPressEscape: { type: Boolean, default: true },\r\n lockScroll: { type: Boolean, default: true },\r\n draggable: { type: Boolean, default: false },\r\n fullscreen: { type: Boolean, default: false },\r\n appendToBody: { type: Boolean, default: false },\r\n customClass: { type: String, default: '' },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaModal: { type: Boolean, default: true },\r\n onBeforeOpen: { type: Function, default: undefined },\r\n onBeforeClose: { type: Function, default: undefined },\r\n onOpen: { type: Function, default: undefined },\r\n onClose: { type: Function, default: undefined },\r\n onConfirm: { type: Function, default: undefined },\r\n onCancel: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: ModalSlots }) {\r\n const p = props as ModalSetupProps;\r\n const isClosing = signal(false);\r\n const isFullscreen = signal(p.fullscreen);\r\n\r\n const close = async () => {\r\n if (isClosing()) return;\r\n if (p.onBeforeClose) {\r\n const result = await p.onBeforeClose();\r\n if (result === false) return;\r\n }\r\n isClosing.set(true);\r\n p.onClose?.();\r\n setTimeout(() => { isClosing.set(false); }, 300);\r\n };\r\n\r\n const handleModalClick = () => {\r\n if (p.closeOnClickModal) close();\r\n };\r\n\r\n const handleKeydown = (e: KeyboardEvent) => {\r\n if (p.closeOnPressEscape && e.key === 'Escape') {\r\n e.preventDefault();\r\n close();\r\n }\r\n p.onKeydown?.(e);\r\n };\r\n\r\n return () => {\r\n if (!p.modelValue) {\r\n return createVNode('div', { style: 'display: none;' }, []);\r\n }\r\n\r\n const headerChildren: VNode[] = [];\r\n\r\n if (slots.header) {\r\n headerChildren.push(createVNode('div', { \r\n class: 'lyt-modal__header',\r\n id: p.id ? `${p.id}-header` : undefined,\r\n }, slots.header()));\r\n } else if (p.title) {\r\n const titlePart: VNode[] = [\r\n createVNode('span', { \r\n class: 'lyt-modal__title',\r\n id: p.id ? `${p.id}-title` : undefined,\r\n }, [createTextVNode(String(p.title))]),\r\n ];\r\n\r\n if (p.showClose) {\r\n const closeBtnProps = getButtonA11yProps({\r\n ariaLabel: 'Close dialog',\r\n });\r\n titlePart.push(createVNode('button', mergeA11yProps(closeBtnProps, {\r\n class: 'lyt-modal__close',\r\n onClick: close,\r\n }), [createTextVNode('×')]));\r\n }\r\n\r\n headerChildren.push(createVNode('div', { \r\n class: 'lyt-modal__header',\r\n id: p.id ? `${p.id}-header` : undefined,\r\n }, titlePart));\r\n }\r\n\r\n const bodyChildren: VNode[] = [];\r\n if (slots.default) {\r\n bodyChildren.push(...slots.default());\r\n }\r\n\r\n const footerChildren: VNode[] = [];\r\n if (slots.footer) {\r\n footerChildren.push(createVNode('div', { \r\n class: 'lyt-modal__footer',\r\n id: p.id ? `${p.id}-footer` : undefined,\r\n }, slots.footer()));\r\n } else {\r\n const cancelBtnProps = getButtonA11yProps({\r\n ariaLabel: 'Cancel',\r\n });\r\n const confirmBtnProps = getButtonA11yProps({\r\n ariaLabel: 'Confirm',\r\n });\r\n footerChildren.push(\r\n createVNode('div', { \r\n class: 'lyt-modal__footer',\r\n id: p.id ? `${p.id}-footer` : undefined,\r\n }, [\r\n createVNode('button', mergeA11yProps(cancelBtnProps, {\r\n class: 'lyt-modal__cancel-btn',\r\n onClick: close,\r\n }), [createTextVNode('取消')]),\r\n createVNode('button', mergeA11yProps(confirmBtnProps, {\r\n class: 'lyt-modal__confirm-btn',\r\n onClick: () => p.onConfirm?.(),\r\n }), [createTextVNode('确定')]),\r\n ])\r\n );\r\n }\r\n\r\n const modalClass = [\r\n 'lyt-modal',\r\n isClosing() ? 'lyt-modal--closing' : '',\r\n isFullscreen() ? 'lyt-modal--fullscreen' : '',\r\n p.customClass as string,\r\n p.class as string,\r\n ].filter(Boolean).join(' ');\r\n\r\n const modalWidth = typeof p.width === 'number' ? `${p.width}px` : p.width as string;\r\n const modalStyle = isFullscreen() ? '' : `width: ${modalWidth};`;\r\n\r\n const modalA11yProps = getDialogA11yProps({\r\n id: p.id,\r\n ariaLabel: p.ariaLabel || p.title,\r\n ariaDescribedBy: p.ariaDescribedBy || (p.id ? `${p.id}-body` : undefined),\r\n labelledBy: p.title && p.id ? `${p.id}-title` : undefined,\r\n modal: p.ariaModal,\r\n });\r\n\r\n return createVNode('div', {\r\n class: 'lyt-modal__overlay',\r\n 'aria-hidden': true,\r\n onClick: handleModalClick,\r\n }, [\r\n createVNode('div', mergeA11yProps(modalA11yProps, {\r\n class: modalClass,\r\n style: modalStyle,\r\n onKeydown: handleKeydown,\r\n }), [\r\n ...headerChildren,\r\n createVNode('div', { \r\n class: 'lyt-modal__body',\r\n id: p.id ? `${p.id}-body` : undefined,\r\n }, bodyChildren),\r\n ...(Array.isArray(footerChildren) ? footerChildren : [footerChildren]),\r\n ]),\r\n ]);\r\n };\r\n },\r\n});\r\n\r\nexport type { ModalProps, ModalSlots, ModalSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Drawer 组件\r\n *\r\n * 抽屉组件,支持上下左右弹出、遮罩控制、宽度自适应、嵌套弹窗功能\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport { getDialogA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { DrawerSetupProps, DrawerSlots } from './types';\r\n\r\nexport const Drawer = defineComponent({\r\n name: 'LytDrawer',\r\n\r\n props: {\r\n modelValue: { type: Boolean, default: false },\r\n title: { type: String, default: '' },\r\n size: { type: [String, Number] as unknown as StringConstructor, default: '30%' },\r\n direction: { type: String, default: 'rtl' },\r\n showClose: { type: Boolean, default: true },\r\n closeOnClickModal: { type: Boolean, default: true },\r\n closeOnPressEscape: { type: Boolean, default: true },\r\n lockScroll: { type: Boolean, default: true },\r\n appendToBody: { type: Boolean, default: false },\r\n withHeader: { type: Boolean, default: true },\r\n customClass: { type: String, default: '' },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaModal: { type: Boolean, default: true },\r\n onBeforeOpen: { type: Function, default: undefined },\r\n onBeforeClose: { type: Function, default: undefined },\r\n onOpen: { type: Function, default: undefined },\r\n onClose: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: DrawerSlots }) {\r\n const p = props as DrawerSetupProps;\r\n const isClosing = signal(false);\r\n\r\n const close = async () => {\r\n if (isClosing()) return;\r\n if (p.onBeforeClose) {\r\n const result = await p.onBeforeClose();\r\n if (result === false) return;\r\n }\r\n isClosing.set(true);\r\n setTimeout(() => { isClosing.set(false); }, 300);\r\n };\r\n\r\n const handleModalClick = () => {\r\n if (p.closeOnClickModal) close();\r\n };\r\n\r\n const handleKeydown = (event: KeyboardEvent) => {\r\n if (event.key === 'Escape' && p.closeOnPressEscape && p.modelValue) {\r\n close();\r\n }\r\n };\r\n\r\n if (typeof window !== 'undefined') {\r\n window.addEventListener('keydown', handleKeydown);\r\n }\r\n\r\n const getDrawerClass = () => {\r\n const classes = ['lyt-drawer'];\r\n classes.push(`lyt-drawer--${p.direction}`);\r\n if (p.modelValue) classes.push('lyt-drawer--visible');\r\n if (isClosing()) classes.push('lyt-drawer--closing');\r\n if (p.class) classes.push(p.class as string);\r\n if (p.customClass) classes.push(p.customClass as string);\r\n return classes.join(' ');\r\n };\r\n\r\n const getSizeStyle = (): Record<string, string> => {\r\n const size = typeof p.size === 'number' ? `${p.size}px` : p.size as string;\r\n const style: Record<string, string> = {};\r\n\r\n switch (p.direction) {\r\n case 'ltr':\r\n case 'rtl':\r\n style.width = size;\r\n break;\r\n case 'ttb':\r\n case 'btt':\r\n style.height = size;\r\n break;\r\n }\r\n\r\n return style;\r\n };\r\n\r\n const formatStyle = (style: Record<string, string>) => {\r\n if (!style) return '';\r\n return Object.entries(style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n };\r\n\r\n return () => {\r\n if (!p.modelValue && !isClosing()) {\r\n return createVNode('div', { style: 'display: none;' }, []);\r\n }\r\n\r\n const children: VNode[] = [];\r\n\r\n children.push(createVNode('div', { class: 'lyt-drawer__overlay', onClick: handleModalClick }));\r\n\r\n const drawerChildren: VNode[] = [];\r\n\r\n if (p.withHeader) {\r\n const headerChildren: VNode[] = [];\r\n\r\n if (slots.header) {\r\n headerChildren.push(...slots.header());\r\n } else if (p.title) {\r\n headerChildren.push(createVNode('span', { class: 'lyt-drawer__title', id: p.id ? `${p.id}-title` : undefined }, [createVNode('span', {}, String(p.title))]));\r\n }\r\n\r\n if (p.showClose) {\r\n const closeBtnProps = getButtonA11yProps({ ariaLabel: 'Close drawer' });\r\n headerChildren.push(\r\n createVNode('button', mergeA11yProps(closeBtnProps, { class: 'lyt-drawer__close', type: 'button', onClick: close }), [\r\n createVNode('svg', { viewBox: '0 0 1024 1024', width: '1em', height: '1em' }, [\r\n createVNode('path', {\r\n d: 'M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9c-4.4 5.2-.7 13.1 6.1 13.1h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z',\r\n fill: 'currentColor',\r\n }),\r\n ]),\r\n ])\r\n );\r\n }\r\n\r\n if (headerChildren.length > 0) {\r\n drawerChildren.push(createVNode('div', { class: 'lyt-drawer__header', id: p.id ? `${p.id}-header` : undefined }, headerChildren));\r\n }\r\n }\r\n\r\n if (slots.default) {\r\n drawerChildren.push(createVNode('div', { class: 'lyt-drawer__body', id: p.id ? `${p.id}-body` : undefined }, slots.default()));\r\n }\r\n\r\n if (slots.footer) {\r\n drawerChildren.push(createVNode('div', { class: 'lyt-drawer__footer', id: p.id ? `${p.id}-footer` : undefined }, slots.footer()));\r\n }\r\n\r\n const drawerContainer = createVNode('div', {\r\n class: 'lyt-drawer__container',\r\n style: formatStyle(getSizeStyle()),\r\n }, drawerChildren);\r\n children.push(drawerContainer);\r\n\r\n const a11yProps = getDialogA11yProps({\r\n id: p.id,\r\n ariaLabel: p.ariaLabel || p.title,\r\n ariaDescribedBy: p.ariaDescribedBy || (p.id ? `${p.id}-body` : undefined),\r\n labelledBy: p.title && p.id ? `${p.id}-title` : undefined,\r\n modal: p.ariaModal,\r\n });\r\n\r\n return createVNode('div', mergeA11yProps(a11yProps, { class: getDrawerClass() }), children);\r\n };\r\n },\r\n});\r\n\r\nexport default Drawer;\r\nexport type { DrawerProps, DrawerSlots, DrawerDirection, DrawerSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Upload 组件\r\n *\r\n * 文件上传组件,支持拖拽上传、文件预览、进度显示、分片上传\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { UploadFile, UploadSetupProps, UploadSlots } from './types';\r\n\r\nexport const Upload = defineComponent({\r\n name: 'LytUpload',\r\n\r\n props: {\r\n action: { type: String, default: '' },\r\n headers: { type: Object, default: (): Record<string, string> => ({}) },\r\n data: { type: Object, default: (): Record<string, unknown> => ({}) },\r\n multiple: { type: Boolean, default: false },\r\n accept: { type: String, default: '' },\r\n autoUpload: { type: Boolean, default: true },\r\n disabled: { type: Boolean, default: false },\r\n limit: { type: Number, default: 0 },\r\n class: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n onSuccess: { type: Function, default: undefined },\r\n onError: { type: Function, default: undefined },\r\n onProgress: { type: Function, default: undefined },\r\n onRemove: { type: Function, default: undefined },\r\n beforeUpload: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: UploadSlots }) {\r\n const p = props as UploadSetupProps;\r\n const files = signal<UploadFile[]>([]);\r\n const dragOver = signal(false);\r\n const inputRef = { current: null as HTMLInputElement | null };\r\n\r\n let uid = 0;\r\n const generateUid = () => ++uid;\r\n\r\n const handleFileChange = async (event: Event) => {\r\n const input = event.target as HTMLInputElement;\r\n const fileList = input.files;\r\n if (!fileList) return;\r\n\r\n for (let i = 0; i < fileList.length; i++) {\r\n const file = fileList[i];\r\n if (file) await uploadFile(file);\r\n }\r\n\r\n input.value = '';\r\n };\r\n\r\n const uploadFile = async (file: File) => {\r\n if (p.limit > 0 && files().length >= p.limit) {\r\n return;\r\n }\r\n\r\n if (p.beforeUpload) {\r\n const result = await p.beforeUpload(file);\r\n if (result === false) return;\r\n }\r\n\r\n const newFile: UploadFile = {\r\n name: file.name,\r\n size: file.size,\r\n status: 'pending',\r\n uid: generateUid(),\r\n raw: file,\r\n };\r\n\r\n files.set([...files(), newFile]);\r\n p.onChange?.(files());\r\n\r\n if (p.autoUpload && p.action) {\r\n await uploadToServer(newFile);\r\n }\r\n };\r\n\r\n const uploadToServer = async (file: UploadFile) => {\r\n file.status = 'uploading';\r\n file.percentage = 0;\r\n files.set([...files()]);\r\n p.onChange?.(files());\r\n\r\n try {\r\n const formData = new FormData();\r\n formData.append('file', file.raw!);\r\n\r\n for (const [key, value] of Object.entries(p.data)) {\r\n formData.append(key, String(value));\r\n }\r\n\r\n const xhr = new XMLHttpRequest();\r\n\r\n xhr.upload.onprogress = (e) => {\r\n if (e.lengthComputable) {\r\n file.percentage = Math.round((e.loaded / e.total) * 100);\r\n files.set([...files()]);\r\n p.onProgress?.(file.percentage!, file);\r\n }\r\n };\r\n\r\n xhr.onload = () => {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n file.status = 'success';\r\n file.percentage = 100;\r\n file.url = JSON.parse(xhr.responseText).url;\r\n p.onSuccess?.(JSON.parse(xhr.responseText), file);\r\n } else {\r\n file.status = 'error';\r\n p.onError?.(new Error('Upload failed'), file);\r\n }\r\n files.set([...files()]);\r\n p.onChange?.(files());\r\n };\r\n\r\n xhr.onerror = () => {\r\n file.status = 'error';\r\n files.set([...files()]);\r\n p.onError?.(new Error('Network error'), file);\r\n p.onChange?.(files());\r\n };\r\n\r\n xhr.open('POST', p.action);\r\n for (const [key, value] of Object.entries(p.headers)) {\r\n xhr.setRequestHeader(key, value);\r\n }\r\n xhr.send(formData);\r\n\r\n } catch (error) {\r\n file.status = 'error';\r\n files.set([...files()]);\r\n p.onError?.(error as Error, file);\r\n p.onChange?.(files());\r\n }\r\n };\r\n\r\n const handleRemove = (file: UploadFile) => {\r\n const newFiles = files().filter(f => f.uid !== file.uid);\r\n files.set(newFiles);\r\n p.onRemove?.(file);\r\n p.onChange?.(files());\r\n };\r\n\r\n const handleDragOver = (e: DragEvent) => {\r\n e.preventDefault();\r\n dragOver.set(true);\r\n };\r\n\r\n const handleDragLeave = () => {\r\n dragOver.set(false);\r\n };\r\n\r\n const handleDrop = async (e: DragEvent) => {\r\n e.preventDefault();\r\n dragOver.set(false);\r\n\r\n const fileList = e.dataTransfer?.files;\r\n if (!fileList) return;\r\n\r\n for (let i = 0; i < fileList.length; i++) {\r\n const file = fileList[i];\r\n if (file) await uploadFile(file);\r\n }\r\n };\r\n\r\n const handleClick = () => {\r\n if (p.disabled) return;\r\n inputRef.current?.click();\r\n };\r\n\r\n const renderFile = (file: UploadFile): VNode => {\r\n const statusClass = `lyt-upload__file--${file.status}`;\r\n const fileChildren: VNode[] = [];\r\n\r\n if (slots.file) {\r\n fileChildren.push(...slots.file(file));\r\n } else {\r\n fileChildren.push(createVNode('span', { class: 'lyt-upload__file-name' }, [createVNode('span', {}, String(file.name))]));\r\n }\r\n\r\n if (file.status === 'uploading') {\r\n fileChildren.push(createVNode('div', { class: 'lyt-upload__progress' }, [\r\n createVNode('div', {\r\n class: 'lyt-upload__progress-bar',\r\n style: `width: ${file.percentage || 0}%`,\r\n }, []),\r\n createVNode('span', { class: 'lyt-upload__percentage' }, [createVNode('span', {}, `${file.percentage || 0}%`)]),\r\n ]));\r\n }\r\n\r\n fileChildren.push(createVNode('span', {\r\n class: 'lyt-upload__remove',\r\n onClick: () => handleRemove(file),\r\n }, [createVNode('span', {}, '×')]));\r\n\r\n return createVNode('div', { class: `lyt-upload__file ${statusClass}`, key: file.uid }, fileChildren);\r\n };\r\n\r\n return () => {\r\n const uploadClass = [\r\n 'lyt-upload',\r\n p.disabled ? 'lyt-upload--disabled' : '',\r\n dragOver() ? 'lyt-upload--dragover' : '',\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const triggerContent: VNode[] = [];\r\n\r\n if (slots.trigger) {\r\n triggerContent.push(...slots.trigger());\r\n } else if (slots.default) {\r\n triggerContent.push(...slots.default());\r\n } else {\r\n triggerContent.push(createVNode('div', { class: 'lyt-upload__content' }, [\r\n createVNode('span', { class: 'lyt-upload__icon' }, [createVNode('span', {}, '📤')]),\r\n createVNode('span', { class: 'lyt-upload__text' }, [createVNode('span', {}, '点击上传或拖拽文件')]),\r\n ]));\r\n }\r\n\r\n const tipContent: VNode[] = [];\r\n if (slots.tip) {\r\n tipContent.push(...slots.tip());\r\n }\r\n\r\n const fileListContent: VNode[] = [];\r\n if (files().length > 0) {\r\n fileListContent.push(...files().map(file => renderFile(file)));\r\n }\r\n\r\n const children: VNode[] = [\r\n createVNode('input', {\r\n ref: inputRef,\r\n type: 'file',\r\n class: 'lyt-upload__input',\r\n accept: p.accept,\r\n multiple: p.multiple,\r\n onChange: handleFileChange,\r\n }, []),\r\n createVNode('div', {\r\n class: 'lyt-upload__trigger',\r\n onClick: handleClick,\r\n onDragOver: handleDragOver,\r\n onDragLeave: handleDragLeave,\r\n onDrop: handleDrop,\r\n }, triggerContent),\r\n ];\r\n\r\n if (tipContent.length > 0) {\r\n children.push(createVNode('div', { class: 'lyt-upload__tip' }, tipContent));\r\n }\r\n\r\n if (fileListContent.length > 0) {\r\n children.push(createVNode('div', { class: 'lyt-upload__list' }, fileListContent));\r\n }\r\n\r\n return createVNode('div', { class: uploadClass }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { UploadProps, UploadSlots, UploadFile, UploadSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Notification 组件\r\n *\r\n * 通知组件,支持多位置弹出、停留时长、手动关闭、堆叠管理功能,适配主题切换\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { NotificationSetupProps } from './types';\r\n\r\ninterface NotificationItem {\r\n id: number;\r\n type: string;\r\n title: string;\r\n message: string;\r\n duration: number;\r\n position: string;\r\n showClose: boolean;\r\n onClose?: () => void;\r\n onOpen?: () => void;\r\n}\r\n\r\nclass NotificationManager {\r\n static notifications = signal<NotificationItem[]>([]);\r\n static nextId = 1;\r\n\r\n static open(options: {\r\n type?: string;\r\n title: string;\r\n message?: string;\r\n duration?: number;\r\n position?: string;\r\n showClose?: boolean;\r\n onClose?: () => void;\r\n onOpen?: () => void;\r\n }) {\r\n const id = this.nextId++;\r\n const notification: NotificationItem = {\r\n id,\r\n type: options.type || 'info',\r\n title: options.title,\r\n message: options.message || '',\r\n duration: options.duration !== undefined ? options.duration : 4500,\r\n position: options.position || 'top-right',\r\n showClose: options.showClose !== undefined ? options.showClose : true,\r\n onClose: options.onClose,\r\n onOpen: options.onOpen,\r\n };\r\n\r\n this.notifications.set([...this.notifications(), notification]);\r\n\r\n if (notification.onOpen) {\r\n notification.onOpen();\r\n }\r\n\r\n if (notification.duration > 0) {\r\n setTimeout(() => {\r\n this.close(id);\r\n }, notification.duration);\r\n }\r\n\r\n return id;\r\n }\r\n\r\n static close(id: number) {\r\n const notification = this.notifications().find(n => n.id === id);\r\n if (notification && notification.onClose) {\r\n notification.onClose();\r\n }\r\n this.notifications.set(this.notifications().filter(n => n.id !== id));\r\n }\r\n\r\n static success(options: string | { title: string; message?: string; duration?: number; position?: string; showClose?: boolean; onClose?: () => void; onOpen?: () => void }) {\r\n if (typeof options === 'string') {\r\n return this.open({ type: 'success', title: options, message: '' });\r\n }\r\n return this.open({ ...options, type: 'success' });\r\n }\r\n\r\n static warning(options: string | { title: string; message?: string; duration?: number; position?: string; showClose?: boolean; onClose?: () => void; onOpen?: () => void }) {\r\n if (typeof options === 'string') {\r\n return this.open({ type: 'warning', title: options, message: '' });\r\n }\r\n return this.open({ ...options, type: 'warning' });\r\n }\r\n\r\n static error(options: string | { title: string; message?: string; duration?: number; position?: string; showClose?: boolean; onClose?: () => void; onOpen?: () => void }) {\r\n if (typeof options === 'string') {\r\n return this.open({ type: 'error', title: options, message: '' });\r\n }\r\n return this.open({ ...options, type: 'error' });\r\n }\r\n\r\n static info(options: string | { title: string; message?: string; duration?: number; position?: string; showClose?: boolean; onClose?: () => void; onOpen?: () => void }) {\r\n if (typeof options === 'string') {\r\n return this.open({ type: 'info', title: options, message: '' });\r\n }\r\n return this.open({ ...options, type: 'info' });\r\n }\r\n\r\n static closeAll() {\r\n const current = this.notifications();\r\n current.forEach(n => {\r\n if (n.onClose) n.onClose();\r\n });\r\n this.notifications.set([]);\r\n }\r\n}\r\n\r\nconst getIcon = (type: string): string => {\r\n const icons: Record<string, string> = {\r\n success: '✓',\r\n warning: '⚠',\r\n error: '✕',\r\n info: 'ℹ',\r\n };\r\n return icons[type] || icons['info'] || 'ℹ';\r\n};\r\n\r\nexport const Notification = defineComponent({\r\n name: 'LytNotification',\r\n\r\n props: {\r\n position: { type: String, default: 'top-right' },\r\n class: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as NotificationSetupProps;\r\n\r\n const getContainerClass = () => {\r\n const classes = ['lyt-notification-container', `lyt-notification-container--${p.position}`];\r\n if (p.class) classes.push(p.class as string);\r\n return classes.join(' ');\r\n };\r\n\r\n return () => {\r\n const notifications = NotificationManager.notifications();\r\n\r\n const children: VNode[] = notifications.map((notification) => {\r\n const notificationClass = [\r\n 'lyt-notification',\r\n `lyt-notification--${notification.type}`,\r\n `lyt-notification--${notification.position}`,\r\n ].join(' ');\r\n\r\n const itemChildren: VNode[] = [\r\n createVNode('span', {\r\n class: 'lyt-notification__icon',\r\n }, [createVNode('span', {}, getIcon(notification.type))]),\r\n ];\r\n\r\n const contentChildren: VNode[] = [\r\n createVNode('div', { class: 'lyt-notification__title' }, [createVNode('span', {}, String(notification.title))]),\r\n ];\r\n\r\n if (notification.message) {\r\n contentChildren.push(createVNode('div', { class: 'lyt-notification__message' }, [createVNode('span', {}, String(notification.message))]));\r\n }\r\n\r\n itemChildren.push(createVNode('div', { class: 'lyt-notification__content' }, contentChildren));\r\n\r\n if (notification.showClose) {\r\n itemChildren.push(createVNode('button', {\r\n class: 'lyt-notification__close',\r\n onClick: () => NotificationManager.close(notification.id),\r\n }, [createVNode('span', {}, '×')]));\r\n }\r\n\r\n return createVNode('div', {\r\n class: notificationClass,\r\n key: notification.id,\r\n }, itemChildren);\r\n });\r\n\r\n return createVNode('div', { class: getContainerClass() }, children);\r\n };\r\n },\r\n});\r\n\r\n(Notification as Record<string, unknown>).open = NotificationManager.open.bind(NotificationManager);\r\n(Notification as Record<string, unknown>).success = NotificationManager.success.bind(NotificationManager);\r\n(Notification as Record<string, unknown>).warning = NotificationManager.warning.bind(NotificationManager);\r\n(Notification as Record<string, unknown>).error = NotificationManager.error.bind(NotificationManager);\r\n(Notification as Record<string, unknown>).info = NotificationManager.info.bind(NotificationManager);\r\n(Notification as Record<string, unknown>).close = NotificationManager.close.bind(NotificationManager);\r\n(Notification as Record<string, unknown>).closeAll = NotificationManager.closeAll.bind(NotificationManager);\r\n\r\nexport default Notification;\r\nexport { NotificationManager };\r\nexport type { NotificationProps, NotificationSlots, NotificationSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Calendar 组件\r\n *\r\n * 日历组件,支持月/周视图、事件标记、日期禁用功能,原生实现日期渲染\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { CalendarSetupProps } from './types';\r\n\r\ninterface CalendarEvent {\r\n title: string;\r\n start: Date;\r\n end?: Date;\r\n color?: string;\r\n data?: unknown;\r\n}\r\n\r\nexport const Calendar = defineComponent({\r\n name: 'LytCalendar',\r\n\r\n props: {\r\n modelValue: { type: [String, Date] as unknown as StringConstructor, default: (): Date => new Date() },\r\n view: { type: String, default: 'month' },\r\n events: { type: Array, default: (): CalendarEvent[] => [] },\r\n disabledDates: { type: Function, default: undefined },\r\n firstDayOfWeek: { type: Number, default: 0 },\r\n weekNames: { type: Array, default: (): string[] => ['日', '一', '二', '三', '四', '五', '六'] },\r\n monthNames: { type: Array, default: (): string[] => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'] },\r\n class: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n onEventClick: { type: Function, default: undefined },\r\n onDateClick: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as CalendarSetupProps;\r\n const currentDate = signal<Date>(\r\n p.modelValue instanceof Date ? p.modelValue : new Date()\r\n );\r\n const currentView = signal<string>(p.view);\r\n\r\n const getDaysInMonth = (year: number, month: number): number => {\r\n return new Date(year, month + 1, 0).getDate();\r\n };\r\n\r\n const getFirstDayOfMonth = (year: number, month: number): number => {\r\n return new Date(year, month, 1).getDay();\r\n };\r\n\r\n const isSameDay = (d1: Date, d2: Date): boolean => {\r\n return d1.getFullYear() === d2.getFullYear() &&\r\n d1.getMonth() === d2.getMonth() &&\r\n d1.getDate() === d2.getDate();\r\n };\r\n\r\n const isDisabledDate = (date: Date): boolean => {\r\n if (!p.disabledDates) return false;\r\n return p.disabledDates(date);\r\n };\r\n\r\n const getEventsForDate = (date: Date): CalendarEvent[] => {\r\n return (p.events as CalendarEvent[]).filter((event: CalendarEvent) => {\r\n const eventDate = new Date(event.start);\r\n return isSameDay(date, eventDate);\r\n });\r\n };\r\n\r\n const prevMonth = () => {\r\n const date = new Date(currentDate());\r\n date.setMonth(date.getMonth() - 1);\r\n currentDate.set(date);\r\n emitChange(date);\r\n };\r\n\r\n const nextMonth = () => {\r\n const date = new Date(currentDate());\r\n date.setMonth(date.getMonth() + 1);\r\n currentDate.set(date);\r\n emitChange(date);\r\n };\r\n\r\n const goToToday = () => {\r\n const today = new Date();\r\n currentDate.set(today);\r\n emitChange(today);\r\n };\r\n\r\n const selectDate = (date: Date) => {\r\n if (isDisabledDate(date)) return;\r\n currentDate.set(date);\r\n emitChange(date);\r\n if (p.onDateClick) {\r\n p.onDateClick(date);\r\n }\r\n };\r\n\r\n const emitChange = (date: Date) => {\r\n if (p.onChange) {\r\n p.onChange(date);\r\n }\r\n };\r\n\r\n const handleEventClick = (event: CalendarEvent, e: Event) => {\r\n e.stopPropagation();\r\n if (p.onEventClick) {\r\n p.onEventClick(event);\r\n }\r\n };\r\n\r\n const renderDayCell = (\r\n date: Date,\r\n isCurrentMonth: boolean,\r\n isToday: boolean,\r\n isSelected: boolean,\r\n disabled: boolean = false\r\n ): VNode => {\r\n const events = getEventsForDate(date);\r\n\r\n const classes = [\r\n 'lyt-calendar-day',\r\n !isCurrentMonth ? 'lyt-calendar-day-other' : '',\r\n isToday ? 'lyt-calendar-day-today' : '',\r\n isSelected ? 'lyt-calendar-day-selected' : '',\r\n disabled ? 'lyt-calendar-day-disabled' : '',\r\n ].filter(Boolean).join(' ');\r\n\r\n const eventNodes: VNode[] = events.map((event: CalendarEvent) => {\r\n const color = event.color || '#3b82f6';\r\n return createVNode(\r\n 'div',\r\n {\r\n class: 'lyt-calendar-event',\r\n style: { backgroundColor: color },\r\n onClick: (e: Event) => handleEventClick(event, e),\r\n },\r\n [createVNode('span', {}, String(event.title))]\r\n );\r\n });\r\n\r\n const cellChildren: VNode[] = [\r\n createVNode('div', { class: 'lyt-calendar-day-number' }, [createVNode('span', {}, String(date.getDate()))]),\r\n ...eventNodes,\r\n ];\r\n\r\n return createVNode(\r\n 'div',\r\n {\r\n class: classes,\r\n onClick: () => selectDate(date),\r\n },\r\n cellChildren\r\n );\r\n };\r\n\r\n const renderMonthView = (): VNode => {\r\n const year = currentDate().getFullYear();\r\n const month = currentDate().getMonth();\r\n const today = new Date();\r\n\r\n const firstDay = getFirstDayOfMonth(year, month);\r\n const daysInMonth = getDaysInMonth(year, month);\r\n const daysInPrevMonth = getDaysInMonth(year, month - 1);\r\n\r\n const weeks: VNode[] = [];\r\n let currentWeek: VNode[] = [];\r\n\r\n for (let i = p.firstDayOfWeek; i < firstDay; i++) {\r\n const day = daysInPrevMonth - (firstDay - i - 1);\r\n const date = new Date(year, month - 1, day);\r\n currentWeek.push(renderDayCell(date, false, false, false, false));\r\n }\r\n\r\n for (let day = 1; day <= daysInMonth; day++) {\r\n const date = new Date(year, month, day);\r\n const isToday = isSameDay(date, today);\r\n const isSelected = isSameDay(date, currentDate());\r\n const disabled = isDisabledDate(date);\r\n\r\n currentWeek.push(renderDayCell(date, true, isToday, isSelected, disabled));\r\n\r\n if (currentWeek.length === 7) {\r\n weeks.push(createVNode('div', { class: 'lyt-calendar-week' }, currentWeek));\r\n currentWeek = [];\r\n }\r\n }\r\n\r\n if (currentWeek.length > 0) {\r\n let nextDay = 1;\r\n while (currentWeek.length < 7) {\r\n const date = new Date(year, month + 1, nextDay);\r\n currentWeek.push(renderDayCell(date, false, false, false, false));\r\n nextDay++;\r\n }\r\n weeks.push(createVNode('div', { class: 'lyt-calendar-week' }, currentWeek));\r\n }\r\n\r\n return createVNode('div', { class: 'lyt-calendar-month' }, weeks);\r\n };\r\n\r\n const renderWeekView = (): VNode => {\r\n return createVNode(\r\n 'div',\r\n { class: 'lyt-calendar-week-view' },\r\n [createVNode('span', {}, '周视图(开发中)')]\r\n );\r\n };\r\n\r\n const renderDayView = (): VNode => {\r\n return createVNode(\r\n 'div',\r\n { class: 'lyt-calendar-day-view' },\r\n [createVNode('span', {}, '日视图(开发中)')]\r\n );\r\n };\r\n\r\n return () => {\r\n const current = currentDate();\r\n const headerChildren: VNode[] = [\r\n createVNode('button', { class: 'lyt-calendar-nav-btn', onClick: prevMonth }, [createVNode('span', {}, '‹')]),\r\n createVNode('button', { class: 'lyt-calendar-today-btn', onClick: goToToday }, [createVNode('span', {}, '今天')]),\r\n createVNode('div', { class: 'lyt-calendar-title' }, [createVNode('span', {}, `${current.getFullYear()}年 ${(p.monthNames as string[])[current.getMonth()]}`)]),\r\n createVNode('button', { class: 'lyt-calendar-nav-btn', onClick: nextMonth }, [createVNode('span', {}, '›')]),\r\n ];\r\n\r\n const weekHeaderChildren: VNode[] = (p.weekNames as string[]).map((name: string) =>\r\n createVNode('div', { class: 'lyt-calendar-weekday' }, [createVNode('span', {}, name)])\r\n );\r\n\r\n let viewContent: VNode;\r\n switch (currentView()) {\r\n case 'week':\r\n viewContent = renderWeekView();\r\n break;\r\n case 'day':\r\n viewContent = renderDayView();\r\n break;\r\n case 'month':\r\n default:\r\n viewContent = renderMonthView();\r\n }\r\n\r\n return createVNode(\r\n 'div',\r\n {\r\n class: [\r\n 'lyt-calendar',\r\n `lyt-calendar-${currentView()}`,\r\n p.class as string,\r\n ].filter(Boolean).join(' '),\r\n },\r\n [\r\n createVNode('div', { class: 'lyt-calendar-header' }, headerChildren),\r\n createVNode('div', { class: 'lyt-calendar-weekdays' }, weekHeaderChildren),\r\n viewContent,\r\n ]\r\n );\r\n };\r\n },\r\n});\r\n\r\nexport default Calendar;\r\nexport type { CalendarEvent };\r\nexport type { CalendarProps, CalendarSlots, CalendarSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Image 组件\r\n *\r\n * 图片组件,支持懒加载、预览弹窗、错误兜底、自适应功能,适配主题样式\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { ImageSetupProps } from './types';\r\n\r\nexport const Image = defineComponent({\r\n name: 'LytImage',\r\n\r\n props: {\r\n src: { type: String, default: '' },\r\n alt: { type: String, default: '' },\r\n fit: { type: String, default: 'cover' },\r\n width: { type: [String, Number] as unknown as StringConstructor, default: '' },\r\n height: { type: [String, Number] as unknown as StringConstructor, default: '' },\r\n lazy: { type: Boolean, default: false },\r\n preview: { type: Boolean, default: true },\r\n errorSrc: { type: String, default: '' },\r\n placeholderSrc: { type: String, default: '' },\r\n round: { type: Boolean, default: false },\r\n radius: { type: [String, Number] as unknown as StringConstructor, default: '' },\r\n class: { type: String, default: '' },\r\n onLoad: { type: Function, default: undefined },\r\n onError: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as ImageSetupProps;\r\n const isLoaded = signal(false);\r\n const isError = signal(false);\r\n const isPreviewVisible = signal(false);\r\n\r\n const handleLoad = () => {\r\n isLoaded.set(true);\r\n if (p.onLoad) {\r\n p.onLoad();\r\n }\r\n };\r\n\r\n const handleError = () => {\r\n isError.set(true);\r\n if (p.onError) {\r\n p.onError();\r\n }\r\n };\r\n\r\n const openPreview = () => {\r\n if (!p.preview || isError()) return;\r\n isPreviewVisible.set(true);\r\n };\r\n\r\n const closePreview = () => {\r\n isPreviewVisible.set(false);\r\n };\r\n\r\n return () => {\r\n const imageClass = [\r\n 'lyt-image',\r\n p.class as string,\r\n p.round ? 'lyt-image-round' : '',\r\n ].filter(Boolean).join(' ');\r\n\r\n const imageStyle: Record<string, string> = {};\r\n if (p.width) {\r\n imageStyle.width = typeof p.width === 'number' ? `${p.width}px` : p.width as string;\r\n }\r\n if (p.height) {\r\n imageStyle.height = typeof p.height === 'number' ? `${p.height}px` : p.height as string;\r\n }\r\n if (p.radius) {\r\n imageStyle.borderRadius = typeof p.radius === 'number' ? `${p.radius}px` : p.radius as string;\r\n }\r\n\r\n const children: VNode[] = [];\r\n\r\n if (!isLoaded() && !isError()) {\r\n if (p.placeholderSrc) {\r\n children.push(createVNode('img', {\r\n class: 'lyt-image-placeholder',\r\n src: p.placeholderSrc as string,\r\n alt: p.alt as string,\r\n style: { objectFit: p.fit as string },\r\n }));\r\n } else {\r\n children.push(createVNode('div', { class: 'lyt-image-placeholder' }, [\r\n createVNode('svg', { viewBox: '0 0 100 100', fill: 'currentColor' }, [\r\n createVNode('path', {\r\n d: 'M50 10a40 40 0 1 0 40 40A40 40 0 0 0 50 10zm0 70a30 30 0 1 1 30-30 30 30 0 0 1-30 30z',\r\n opacity: '0.3',\r\n }),\r\n createVNode('path', {\r\n d: 'M50 40a10 10 0 1 0 10 10 10 10 0 0 0-10-10zm30 35a24.9 24.9 0 0 0-7.7-18.3l-11.2-9.4a10 10 0 0 0-12.8 0L34.3 54A25 25 0 0 0 25 75z',\r\n opacity: '0.6',\r\n }),\r\n ]),\r\n ]));\r\n }\r\n }\r\n\r\n children.push(createVNode('img', {\r\n class: 'lyt-image-inner',\r\n src: p.src as string,\r\n alt: p.alt as string,\r\n style: {\r\n objectFit: p.fit as string,\r\n display: (isLoaded() || isError()) ? 'block' : 'none',\r\n },\r\n loading: p.lazy ? 'lazy' : 'eager',\r\n onLoad: handleLoad,\r\n onError: handleError,\r\n onClick: openPreview,\r\n }));\r\n\r\n if (isError()) {\r\n if (p.errorSrc) {\r\n children.push(createVNode('img', {\r\n class: 'lyt-image-error',\r\n src: p.errorSrc as string,\r\n alt: p.alt as string,\r\n style: { objectFit: p.fit as string },\r\n }));\r\n } else {\r\n children.push(createVNode('div', { class: 'lyt-image-error' }, [\r\n createVNode('svg', { viewBox: '0 0 100 100', fill: 'currentColor' }, [\r\n createVNode('circle', { cx: '50', cy: '50', r: '40', opacity: '0.2' }),\r\n createVNode('line', { x1: '30', y1: '30', x2: '70', y2: '70', stroke: 'currentColor', strokeWidth: '6', strokeLinecap: 'round' }),\r\n createVNode('line', { x1: '70', y1: '30', x2: '30', y2: '70', stroke: 'currentColor', strokeWidth: '6', strokeLinecap: 'round' }),\r\n ]),\r\n ]));\r\n }\r\n }\r\n\r\n if (p.preview && !isError() && isLoaded()) {\r\n children.push(createVNode('div', {\r\n class: 'lyt-image-preview-trigger',\r\n onClick: openPreview,\r\n }));\r\n }\r\n\r\n if (isPreviewVisible()) {\r\n children.push(createVNode('div', { class: 'lyt-image-preview', onClick: closePreview }, [\r\n createVNode('div', { class: 'lyt-image-preview-mask' }, []),\r\n createVNode('img', {\r\n class: 'lyt-image-preview-content',\r\n src: p.src as string,\r\n alt: p.alt as string,\r\n onClick: (e: Event) => e.stopPropagation(),\r\n }, []),\r\n createVNode('button', { class: 'lyt-image-preview-close', onClick: closePreview }, [createVNode('span', {}, '×')]),\r\n ]));\r\n }\r\n\r\n return createVNode('div', { class: imageClass, style: imageStyle }, children);\r\n };\r\n },\r\n});\r\n\r\nexport default Image;\r\nexport type { ImageProps, ImageSlots, ImageSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Rate 组件\r\n *\r\n * 评分组件,支持半星、只读、自定义图标、数量配置功能,统一组件API\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { RateSetupProps } from './types';\r\n\r\nexport const Rate = defineComponent({\r\n name: 'LytRate',\r\n\r\n props: {\r\n modelValue: { type: Number, default: 0 },\r\n max: { type: Number, default: 5 },\r\n allowHalf: { type: Boolean, default: false },\r\n readonly: { type: Boolean, default: false },\r\n disabled: { type: Boolean, default: false },\r\n showText: { type: Boolean, default: false },\r\n showScore: { type: Boolean, default: false },\r\n texts: { type: Array, default: (): string[] => ['极差', '失望', '一般', '满意', '惊喜'] },\r\n voidIcon: { type: String, default: '☆' },\r\n voidColor: { type: String, default: '#c6d1de' },\r\n disabledVoidColor: { type: String, default: '#e8e8e8' },\r\n class: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as RateSetupProps;\r\n const hoverValue = signal(0);\r\n const isHovering = signal(false);\r\n\r\n const displayValue = (): number => isHovering() ? hoverValue() : p.modelValue;\r\n\r\n const getStarClass = (index: number): string => {\r\n const value = displayValue();\r\n if (value >= index + 1) return 'lyt-rate-star-full';\r\n if (p.allowHalf && value >= index + 0.5) return 'lyt-rate-star-half';\r\n return 'lyt-rate-star-void';\r\n };\r\n\r\n const getStarStyle = (index: number): string => {\r\n const classes = ['lyt-rate-star'];\r\n if (getStarClass(index)) {\r\n classes.push(getStarClass(index));\r\n }\r\n if (p.disabled || p.readonly) {\r\n classes.push('lyt-rate-star-disabled');\r\n }\r\n return classes.join(' ');\r\n };\r\n\r\n const handleMouseMove = (event: MouseEvent, index: number) => {\r\n if (p.disabled || p.readonly) return;\r\n\r\n const target = event.target as HTMLElement;\r\n let newValue = index + 1;\r\n\r\n if (p.allowHalf) {\r\n const rect = target.getBoundingClientRect();\r\n const halfWidth = rect.width / 2;\r\n if (event.clientX - rect.left < halfWidth) {\r\n newValue = index + 0.5;\r\n }\r\n }\r\n\r\n hoverValue.set(newValue);\r\n isHovering.set(true);\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n isHovering.set(false);\r\n };\r\n\r\n const handleClick = (event: MouseEvent, index: number) => {\r\n if (p.disabled || p.readonly) return;\r\n\r\n let newValue = index + 1;\r\n\r\n if (p.allowHalf) {\r\n const target = event.target as HTMLElement;\r\n const rect = target.getBoundingClientRect();\r\n const halfWidth = rect.width / 2;\r\n if (event.clientX - rect.left < halfWidth) {\r\n newValue = index + 0.5;\r\n }\r\n }\r\n\r\n if (p.onChange) {\r\n p.onChange(newValue);\r\n }\r\n };\r\n\r\n const getText = (): string => {\r\n const texts = (p.texts as string[]) || [];\r\n const index = Math.round(displayValue()) - 1;\r\n return texts[index] || '';\r\n };\r\n\r\n const getScore = (): string => {\r\n return displayValue().toFixed(1);\r\n };\r\n\r\n return () => {\r\n const starNodes: VNode[] = [];\r\n\r\n for (let i = 0; i < p.max; i++) {\r\n starNodes.push(\r\n createVNode('span', {\r\n class: getStarStyle(i),\r\n key: i,\r\n onMousemove: (e: MouseEvent) => handleMouseMove(e, i),\r\n onMouseleave: handleMouseLeave,\r\n onClick: (e: MouseEvent) => handleClick(e, i),\r\n }, [\r\n createVNode('span', { class: 'lyt-rate-star-first' }, [createVNode('span', {}, String(p.voidIcon))]),\r\n createVNode('span', { class: 'lyt-rate-star-second' }, [createVNode('span', {}, '★')]),\r\n ])\r\n );\r\n }\r\n\r\n const children: VNode[] = [...starNodes];\r\n\r\n if (p.showText) {\r\n children.push(createVNode('span', { class: 'lyt-rate-text' }, [createVNode('span', {}, getText())]));\r\n }\r\n\r\n if (p.showScore) {\r\n children.push(createVNode('span', { class: 'lyt-rate-score' }, [createVNode('span', {}, getScore())]));\r\n }\r\n\r\n return createVNode('div', {\r\n class: [\r\n 'lyt-rate',\r\n p.class as string,\r\n (p.disabled || p.readonly) ? 'lyt-rate-disabled' : '',\r\n ].filter(Boolean).join(' '),\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport default Rate;\r\nexport type { RateProps, RateSlots, RateSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - ColorPicker 组件\r\n *\r\n * 颜色选择器组件,取色器、预设色、hex/rgb转换功能,零第三方依赖\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { ColorPickerSetupProps } from './types';\r\n\r\nconst DEFAULT_PRESETS = [\r\n '#ff4500', '#ff6600', '#ff8c00', '#ff9900',\r\n '#ffcc00', '#ffff00', '#9acd32', '#32cd32',\r\n '#3cb371', '#00fa9a', '#00ced1', '#1e90ff',\r\n '#4169e1', '#8a2be2', '#da70d6', '#ff1493'\r\n];\r\n\r\nexport const ColorPicker = defineComponent({\r\n name: 'LytColorPicker',\r\n\r\n props: {\r\n modelValue: { type: String, default: '#409eff' },\r\n showAlpha: { type: Boolean, default: false },\r\n showClear: { type: Boolean, default: true },\r\n showPreset: { type: Boolean, default: true },\r\n showHistory: { type: Boolean, default: true },\r\n presets: { type: Array, default: () => DEFAULT_PRESETS },\r\n history: { type: Array, default: () => [] },\r\n class: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n onClear: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as ColorPickerSetupProps;\r\n const isDropdownVisible = signal(false);\r\n const currentHue = signal(200);\r\n const currentSaturation = signal(80);\r\n const currentLightness = signal(50);\r\n const currentAlpha = signal(100);\r\n const localHistory = signal<string[]>([...(p.history || [])]);\r\n const colorInputValue = signal(p.modelValue);\r\n\r\n const hexToHsl = (hex: string) => {\r\n let r = 0, g = 0, b = 0;\r\n\r\n if (hex.length === 4) {\r\n r = parseInt(String(hex[1]) + String(hex[1]), 16);\r\n g = parseInt(String(hex[2]) + String(hex[2]), 16);\r\n b = parseInt(String(hex[3]) + String(hex[3]), 16);\r\n } else if (hex.length === 7) {\r\n r = parseInt(String(hex[1]) + String(hex[2]), 16);\r\n g = parseInt(String(hex[3]) + String(hex[4]), 16);\r\n b = parseInt(String(hex[5]) + String(hex[6]), 16);\r\n }\r\n\r\n r /= 255; g /= 255; b /= 255;\r\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\r\n let h = 0, s = 0, l = (max + min) / 2;\r\n\r\n if (max !== min) {\r\n const d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\r\n case g: h = (b - r) / d + 2; break;\r\n case b: h = (r - g) / d + 4; break;\r\n }\r\n h *= 60;\r\n }\r\n\r\n return { h: Math.round(h), s: Math.round(s * 100), l: Math.round(l * 100) };\r\n };\r\n\r\n const updateHslFromHex = (hex: string) => {\r\n try {\r\n const hsl = hexToHsl(hex);\r\n currentHue.set(hsl.h);\r\n currentSaturation.set(hsl.s);\r\n currentLightness.set(hsl.l);\r\n } catch {\r\n // 保持原样\r\n }\r\n };\r\n\r\n const hslToRgb = (h: number, s: number, l: number): number[] => {\r\n s /= 100; l /= 100;\r\n const k = (n: number) => (n + h / 30) % 12;\r\n const a = s * Math.min(l, 1 - l);\r\n const f = (n: number) => l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));\r\n return [\r\n Math.round(f(0) * 255),\r\n Math.round(f(8) * 255),\r\n Math.round(f(4) * 255)\r\n ];\r\n };\r\n\r\n const rgbToHex = (r: number, g: number, b: number): string => {\r\n return '#' + [r, g, b].map((x: number) => {\r\n const hex = x.toString(16);\r\n return hex.length === 1 ? '0' + hex : hex;\r\n }).join('');\r\n };\r\n\r\n const getCurrentColor = (): string => {\r\n const rgb = hslToRgb(currentHue(), currentSaturation(), currentLightness());\r\n const r = rgb[0] ?? 0;\r\n const g = rgb[1] ?? 0;\r\n const b = rgb[2] ?? 0;\r\n if (p.showAlpha) {\r\n return `rgba(${r}, ${g}, ${b}, ${currentAlpha() / 100})`;\r\n }\r\n return rgbToHex(r, g, b);\r\n };\r\n\r\n const addToHistory = (color: string) => {\r\n const history = [...localHistory()];\r\n const index = history.indexOf(color);\r\n if (index > -1) history.splice(index, 1);\r\n history.unshift(color);\r\n if (history.length > 10) history.pop();\r\n localHistory.set(history);\r\n };\r\n\r\n const handleColorClick = (color: string) => {\r\n isDropdownVisible.set(false);\r\n colorInputValue.set(color);\r\n addToHistory(color);\r\n };\r\n\r\n const handlePresetClick = (color: string) => {\r\n updateHslFromHex(color);\r\n handleColorClick(color);\r\n };\r\n\r\n const clearColor = () => {\r\n isDropdownVisible.set(false);\r\n if (p.onClear) p.onClear();\r\n };\r\n\r\n const toggleDropdown = () => {\r\n if (!p.showClear || isDropdownVisible()) {\r\n isDropdownVisible.set(!isDropdownVisible());\r\n }\r\n };\r\n\r\n const handleColorInput = (event: Event) => {\r\n const target = event.target as HTMLInputElement;\r\n colorInputValue.set(target.value);\r\n };\r\n\r\n const handleColorChange = (event: Event) => {\r\n const target = event.target as HTMLInputElement;\r\n const color = target.value;\r\n if (color) {\r\n handleColorClick(color);\r\n }\r\n };\r\n\r\n let isDragging = false;\r\n\r\n const handlePickerClick = (event: MouseEvent, type: 'saturation' | 'hue' | 'alpha') => {\r\n isDragging = true;\r\n handlePickerDrag(event, type);\r\n };\r\n\r\n const handlePickerMouseMove = (event: MouseEvent, type: 'saturation' | 'hue' | 'alpha') => {\r\n if (!isDragging) return;\r\n handlePickerDrag(event, type);\r\n };\r\n\r\n const handlePickerMouseUp = () => {\r\n isDragging = false;\r\n };\r\n\r\n const handlePickerDrag = (event: MouseEvent, type: 'saturation' | 'hue' | 'alpha') => {\r\n const rect = (event.target as HTMLElement).getBoundingClientRect();\r\n let x = event.clientX - rect.left;\r\n x = Math.max(0, Math.min(rect.width, x));\r\n\r\n if (type === 'hue') {\r\n const newHue = Math.round((x / rect.width) * 360);\r\n currentHue.set(newHue);\r\n colorInputValue.set(getCurrentColor());\r\n } else if (type === 'alpha') {\r\n const newAlpha = Math.round((x / rect.width) * 100);\r\n currentAlpha.set(newAlpha);\r\n colorInputValue.set(getCurrentColor());\r\n } else if (type === 'saturation') {\r\n let y = event.clientY - rect.top;\r\n y = Math.max(0, Math.min(rect.height, y));\r\n const newSat = Math.round((x / rect.width) * 100);\r\n const newLight = Math.round(100 - (y / rect.height) * 100);\r\n currentSaturation.set(newSat);\r\n currentLightness.set(newLight);\r\n colorInputValue.set(getCurrentColor());\r\n }\r\n };\r\n\r\n const getColorPickerClass = (): string => {\r\n const classes = ['lyt-color-picker'];\r\n if (p.class) classes.push(p.class as string);\r\n return classes.join(' ');\r\n };\r\n\r\n return () => {\r\n const saturationPointer: VNode[] = [];\r\n saturationPointer.push(createVNode('div', {\r\n class: 'lyt-color-picker-pointer',\r\n style: {\r\n left: `${currentSaturation()}%`,\r\n top: `${100 - currentLightness()}%`\r\n }\r\n }));\r\n\r\n const hueChildren: VNode[] = [];\r\n hueChildren.push(createVNode('div', {\r\n class: 'lyt-color-picker-pointer',\r\n style: { left: `${(currentHue() / 360) * 100}%` }\r\n }));\r\n\r\n const saturationPicker: VNode[] = [];\r\n saturationPicker.push(createVNode('div', {\r\n class: 'lyt-color-picker-saturation',\r\n style: {\r\n background: `linear-gradient(to top, rgb(0, 0, 0), transparent),\r\n linear-gradient(to right, rgb(255, 255, 255), hsl(${currentHue()}, 100%, 50%))`\r\n },\r\n onMousedown: (e: MouseEvent) => handlePickerClick(e, 'saturation'),\r\n onMousemove: (e: MouseEvent) => handlePickerMouseMove(e, 'saturation'),\r\n onMouseup: handlePickerMouseUp,\r\n onMouseleave: handlePickerMouseUp\r\n }, saturationPointer));\r\n\r\n const huePicker: VNode[] = [];\r\n huePicker.push(createVNode('div', {\r\n class: 'lyt-color-picker-hue-slider',\r\n onMousedown: (e: MouseEvent) => handlePickerClick(e, 'hue'),\r\n onMousemove: (e: MouseEvent) => handlePickerMouseMove(e, 'hue'),\r\n onMouseup: handlePickerMouseUp,\r\n onMouseleave: handlePickerMouseUp\r\n }, hueChildren));\r\n\r\n const alphaChildren: VNode[] = [];\r\n alphaChildren.push(createVNode('div', {\r\n class: 'lyt-color-picker-pointer',\r\n style: { left: `${currentAlpha()}%` }\r\n }));\r\n\r\n const alphaPicker: VNode[] = [];\r\n alphaPicker.push(createVNode('div', {\r\n class: 'lyt-color-picker-alpha-slider',\r\n style: {\r\n background: `linear-gradient(to right, transparent, ${hslToRgb(currentHue(), currentSaturation(), currentLightness()).map((v: number) => `rgb(${v})`).join(',')})`\r\n },\r\n onMousedown: (e: MouseEvent) => handlePickerClick(e, 'alpha'),\r\n onMousemove: (e: MouseEvent) => handlePickerMouseMove(e, 'alpha'),\r\n onMouseup: handlePickerMouseUp,\r\n onMouseleave: handlePickerMouseUp\r\n }, alphaChildren));\r\n\r\n const presetColors: VNode[] = [];\r\n const presets = (p.presets || DEFAULT_PRESETS) as string[];\r\n presets.forEach((color: string, index: number) => {\r\n presetColors.push(createVNode('span', {\r\n class: 'lyt-color-picker-color',\r\n key: index,\r\n style: { backgroundColor: color },\r\n onClick: () => handlePresetClick(color)\r\n }));\r\n });\r\n\r\n const historyColors: VNode[] = [];\r\n const history = localHistory() as string[];\r\n history.forEach((color: string, index: number) => {\r\n historyColors.push(createVNode('span', {\r\n class: 'lyt-color-picker-color',\r\n key: index,\r\n style: { backgroundColor: color },\r\n onClick: () => handleColorClick(color)\r\n }));\r\n });\r\n\r\n const pickerDropdown: VNode[] = [];\r\n\r\n const panelChildren: VNode[] = [];\r\n panelChildren.push(createVNode('div', {\r\n class: 'lyt-color-picker-saturation'\r\n }, saturationPicker));\r\n panelChildren.push(createVNode('div', { class: 'lyt-color-picker-hue' }, huePicker));\r\n if (p.showAlpha) {\r\n panelChildren.push(createVNode('div', { class: 'lyt-color-picker-alpha' }, alphaPicker));\r\n }\r\n\r\n pickerDropdown.push(createVNode('div', { class: 'lyt-color-picker-panel' }, panelChildren));\r\n\r\n const inputChildren: VNode[] = [];\r\n inputChildren.push(createVNode('input', {\r\n type: 'text',\r\n value: colorInputValue(),\r\n onInput: handleColorInput,\r\n onChange: handleColorChange,\r\n placeholder: '请输入颜色'\r\n }));\r\n inputChildren.push(createVNode('span', {\r\n class: 'lyt-color-picker-preview',\r\n style: { backgroundColor: getCurrentColor() }\r\n }));\r\n inputChildren.push(createVNode('button', {\r\n class: 'lyt-color-picker-confirm',\r\n onClick: () => handleColorClick(getCurrentColor())\r\n }, [createVNode('span', {}, '确认')]));\r\n\r\n pickerDropdown.push(createVNode('div', { class: 'lyt-color-picker-input' }, inputChildren));\r\n\r\n if (p.showPreset) {\r\n const presetChildren: VNode[] = [];\r\n presetChildren.push(createVNode('div', { class: 'lyt-color-picker-title' }, [createVNode('span', {}, '预设颜色')]));\r\n presetChildren.push(createVNode('div', { class: 'lyt-color-picker-palette' }, presetColors));\r\n pickerDropdown.push(createVNode('div', { class: 'lyt-color-picker-presets' }, presetChildren));\r\n }\r\n\r\n if (p.showHistory && history.length > 0) {\r\n const historyChildren: VNode[] = [];\r\n historyChildren.push(createVNode('div', { class: 'lyt-color-picker-title' }, [createVNode('span', {}, '历史颜色')]));\r\n historyChildren.push(createVNode('div', { class: 'lyt-color-picker-palette' }, historyColors));\r\n pickerDropdown.push(createVNode('div', { class: 'lyt-color-picker-history' }, historyChildren));\r\n }\r\n\r\n const triggerChildren: VNode[] = [];\r\n triggerChildren.push(createVNode('div', {\r\n class: 'lyt-color-picker-display',\r\n style: { backgroundColor: p.modelValue || 'transparent' }\r\n }));\r\n\r\n if (p.showClear && p.modelValue) {\r\n triggerChildren.push(createVNode('span', {\r\n class: 'lyt-color-picker-clear',\r\n onClick: clearColor\r\n }, [createVNode('span', {}, '×')]));\r\n }\r\n\r\n triggerChildren.push(createVNode('span', { class: 'lyt-color-picker-arrow' }, [createVNode('span', {}, '▼')]));\r\n\r\n const trigger: VNode[] = [];\r\n trigger.push(createVNode('div', { class: 'lyt-color-picker-trigger', onClick: toggleDropdown }, triggerChildren));\r\n\r\n if (isDropdownVisible()) {\r\n trigger.push(createVNode('div', { class: 'lyt-color-picker-dropdown' }, pickerDropdown));\r\n }\r\n\r\n return createVNode('div', { class: getColorPickerClass() }, trigger);\r\n };\r\n },\r\n});\r\n\r\nexport default ColorPicker;\r\nexport type { ColorPickerProps, ColorPickerSlots, ColorPickerSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Icon 组件\r\n *\r\n * 基础图标组件,支持多种尺寸和颜色\r\n */\r\n\r\nimport type { IconProps, IconSlots } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * Icon 组件\r\n */\r\nexport const Icon = defineComponent({\r\n name: 'LytIcon',\r\n\r\n props: {\r\n name: { type: String, default: '' },\r\n size: { type: String, default: '16px' },\r\n color: { type: String, default: '' },\r\n spin: { type: Boolean, default: false },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: any, { slots }: any) {\r\n const getIconClass = () => {\r\n const classes = ['lyt-icon'];\r\n if (props.name) classes.push(`lyt-icon--${props.name}`);\r\n if (props.spin) classes.push('lyt-icon--spin');\r\n if (props.class) classes.push(props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getIconStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (props.size) style.fontSize = props.size;\r\n if (props.color) style.color = props.color;\r\n if (props.style) {\r\n if (isString(props.style)) {\r\n // 简单处理字符串风格\r\n return props.style;\r\n }\r\n if (isObject(props.style)) {\r\n Object.assign(style, props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n if (slots.default) {\r\n children.push(...slots.default());\r\n }\r\n\r\n return createVNode('i', mergeA11yProps({\r\n id: props.id,\r\n 'aria-label': props.ariaLabel,\r\n 'aria-describedby': props.ariaDescribedBy,\r\n }, {\r\n class: getIconClass(),\r\n style: getIconStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { IconProps, IconSlots };\r\n","/**\r\n * @lytjs/ui - Badge 组件\r\n *\r\n * 徽标组件,用于展示数字或点标记\r\n */\r\n\r\nimport type { BadgeSetupProps, BadgeSlots, BadgeProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Badge = defineComponent({\r\n name: 'LytBadge',\r\n\r\n props: {\r\n count: { type: Number, default: 0 },\r\n maxCount: { type: Number, default: 99 },\r\n dot: { type: Boolean, default: false },\r\n showZero: { type: Boolean, default: false },\r\n type: { type: String, default: 'danger' },\r\n offset: { type: Array, default: undefined },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: BadgeSlots }) {\r\n const p = props as BadgeSetupProps;\r\n\r\n const displayCount = (): string => {\r\n if (p.dot) return '';\r\n if (p.count > p.maxCount) return `${p.maxCount}+`;\r\n return String(p.count);\r\n };\r\n\r\n const showBadge = (): boolean => {\r\n if (p.dot) return true;\r\n if (p.count === 0) return p.showZero;\r\n return true;\r\n };\r\n\r\n const getCountStyle = (): Record<string, string> => {\r\n const style: Record<string, string> = {};\r\n if (p.offset) {\r\n style.top = `${p.offset[0]}px`;\r\n style.right = `${p.offset[1]}px`;\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n if (slots.default) {\r\n children.push(...slots.default());\r\n }\r\n\r\n if (showBadge()) {\r\n children.push(createVNode('sup', {\r\n class: [\r\n 'lyt-badge__count',\r\n `lyt-badge__count--${p.type}`,\r\n p.dot ? 'lyt-badge__count--dot' : '',\r\n ].filter(Boolean).join(' '),\r\n style: getCountStyle(),\r\n }, [createVNode('span', {}, p.dot ? '' : displayCount())]));\r\n }\r\n\r\n return createVNode('span', mergeA11yProps({\r\n id: p.id,\r\n 'aria-label': p.ariaLabel,\r\n 'aria-describedby': p.ariaDescribedBy,\r\n }, {\r\n class: [\r\n 'lyt-badge',\r\n p.class as string,\r\n ].filter(Boolean).join(' '),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { BadgeProps, BadgeSlots, BadgeSetupProps };\r\n","/**\r\n * @lytjs/ui - Tag 组件\r\n *\r\n * 标签组件,支持多种类型和可关闭功能\r\n */\r\n\r\nimport type { TagProps, TagSlots, TagSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { reactive } from '@lytjs/reactivity';\r\nimport { getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * Tag 组件\r\n */\r\nexport const Tag = defineComponent({\r\n name: 'LytTag',\r\n\r\n props: {\r\n type: { type: String, default: 'default' },\r\n closable: { type: Boolean, default: false },\r\n color: { type: String, default: '' },\r\n size: { type: String, default: 'medium' },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onClose: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots, emit }) {\r\n const _props = props as TagSetupProps;\r\n const state = reactive({\r\n visible: true,\r\n });\r\n\r\n const handleClose = (e: Event) => {\r\n e.stopPropagation();\r\n state.visible = false;\r\n emit('close');\r\n _props.onClose?.();\r\n };\r\n\r\n const getTagClass = () => {\r\n const classes = ['lyt-tag'];\r\n if (_props.type !== 'default') classes.push(`lyt-tag--${_props.type}`);\r\n if (_props.size !== 'medium') classes.push(`lyt-tag--${_props.size}`);\r\n if (_props.color) classes.push('lyt-tag--custom');\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getTagStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.color) {\r\n style.backgroundColor = _props.color + '15';\r\n style.borderColor = _props.color;\r\n style.color = _props.color;\r\n }\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n if (!state.visible) return createVNode('div', { style: 'display: none;' }, []);\r\n\r\n const children: VNode[] = [];\r\n \r\n // 内容插槽\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n children.push(...(slotContent as VNode[]));\r\n }\r\n }\r\n\r\n // 关闭按钮\r\n if (_props.closable) {\r\n const closeBtnProps = getButtonA11yProps({ ariaLabel: '关闭标签' });\r\n children.push(createVNode('span', mergeA11yProps(closeBtnProps, {\r\n class: 'lyt-tag__close',\r\n onClick: handleClose,\r\n }), [createVNode('span', {}, '×')]));\r\n }\r\n\r\n return createVNode('span', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n }, {\r\n class: getTagClass(),\r\n style: getTagStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { TagProps, TagSlots };\r\n","/**\r\n * @lytjs/ui - Spin 组件\r\n *\r\n * 加载中组件,用于展示加载状态\r\n */\r\n\r\nimport type { SpinProps, SpinSlots } from './types';\r\nimport { defineComponent, onUnmounted } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { reactive, watch } from '@lytjs/reactivity';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * Spin 组件\r\n */\r\nexport const Spin = defineComponent({\r\n name: 'LytSpin',\r\n\r\n props: {\r\n spinning: { type: Boolean, default: true },\r\n size: { type: String, default: 'default' },\r\n tip: { type: String, default: '' },\r\n delay: { type: Number, default: 0 },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: any, { slots }: any) {\r\n const state = reactive({\r\n visible: props.spinning,\r\n });\r\n\r\n let delayTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n watch(() => props.spinning, (val: any) => {\r\n if (delayTimer) clearTimeout(delayTimer);\r\n if (val) {\r\n if (props.delay > 0) {\r\n delayTimer = setTimeout(() => {\r\n state.visible = true;\r\n }, props.delay);\r\n } else {\r\n state.visible = true;\r\n }\r\n } else {\r\n state.visible = false;\r\n }\r\n });\r\n\r\n onUnmounted(() => {\r\n if (delayTimer) clearTimeout(delayTimer);\r\n });\r\n\r\n const getSpinClass = () => {\r\n const classes = ['lyt-spin'];\r\n if (state.visible) classes.push('lyt-spin--spinning');\r\n if (props.class) classes.push(props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getSpinStyle = () => {\r\n if (!props.style) return undefined;\r\n if (isString(props.style)) return props.style;\r\n if (isObject(props.style)) {\r\n return Object.entries(props.style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n }\r\n return undefined;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n // 加载图标\r\n if (state.visible) {\r\n const loadingChildren: VNode[] = [];\r\n \r\n // SVG 旋转图标\r\n loadingChildren.push(createVNode('div', { class: `lyt-spin__icon lyt-spin__icon--${props.size}` }, [\r\n createVNode('svg', { viewBox: '0 0 1024 1024', class: 'lyt-spin__svg' }, [\r\n createVNode('path', {\r\n d: 'M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V736a32 32 0 0 1 32-32zm-448-192a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H96a32 32 0 0 1-32-32zm640 0a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H736a32 32 0 0 1-32-32z',\r\n }),\r\n ]),\r\n ]));\r\n \r\n // 提示文字\r\n if (props.tip || slots.tip) {\r\n loadingChildren.push(createVNode('div', { class: 'lyt-spin__tip' }, slots.tip ? slots.tip() : [props.tip]));\r\n }\r\n\r\n children.push(createVNode('div', { class: 'lyt-spin__loading' }, loadingChildren));\r\n }\r\n\r\n // 内容插槽\r\n if (slots.default) {\r\n children.push(createVNode('div', {\r\n class: state.visible ? 'lyt-spin__content lyt-spin__content--hidden' : 'lyt-spin__content',\r\n }, slots.default()));\r\n }\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: props.id,\r\n 'aria-label': props.ariaLabel,\r\n 'aria-describedby': props.ariaDescribedBy,\r\n role: 'alert',\r\n 'aria-live': 'polite',\r\n }, {\r\n class: getSpinClass(),\r\n style: getSpinStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { SpinProps, SpinSlots };\r\n","/**\r\n * @lytjs/ui - Empty 组件\r\n *\r\n * 空状态组件,用于展示无数据的状态\r\n */\r\n\r\nimport type { EmptyProps, EmptySlots } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * Empty 组件\r\n */\r\nexport const Empty = defineComponent({\r\n name: 'LytEmpty',\r\n\r\n props: {\r\n description: { type: String, default: '暂无数据' },\r\n image: { type: String, default: '' },\r\n imageSize: { type: Number, default: 160 },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: any, { slots }: any) {\r\n const getEmptyClass = () => {\r\n const classes = ['lyt-empty'];\r\n if (props.class) classes.push(props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getEmptyStyle = () => {\r\n if (!props.style) return undefined;\r\n if (isString(props.style)) return props.style;\r\n if (isObject(props.style)) {\r\n return Object.entries(props.style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n }\r\n return undefined;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n // 图片区域\r\n if (slots.image) {\r\n children.push(createVNode('div', { class: 'lyt-empty__image' }, slots.image()));\r\n } else if (props.image) {\r\n children.push(createVNode('div', { class: 'lyt-empty__image' }, [\r\n createVNode('img', {\r\n src: props.image,\r\n alt: 'empty',\r\n style: { width: `${props.imageSize}px`, height: `${props.imageSize}px` },\r\n }),\r\n ]));\r\n } else {\r\n // 默认 SVG 图标\r\n children.push(createVNode('div', { class: 'lyt-empty__image' }, [\r\n createVNode('svg', {\r\n viewBox: '0 0 400 320',\r\n class: 'lyt-empty__svg',\r\n style: { width: `${props.imageSize}px`, height: `${props.imageSize * 0.8}px` },\r\n }, [\r\n createVNode('g', { fill: 'none', 'fill-rule': 'evenodd' }, [\r\n createVNode('g', { transform: 'translate(40 40)' }, [\r\n createVNode('ellipse', { fill: 'var(--lyt-color-info)', opacity: '0.2', cx: '160', cy: '140', rx: '160', ry: '140' }),\r\n createVNode('path', { d: 'M160 0C71.6 0 0 62.7 0 140s71.6 140 160 140 160-62.7 160-140S248.4 0 160 0z', fill: 'var(--lyt-color-info)', opacity: '0.15' }),\r\n createVNode('g', { fill: 'var(--lyt-color-info)' }, [\r\n createVNode('path', { d: 'M184 104a8 8 0 0 1 8 8v24a8 8 0 0 1-16 0v-24a8 8 0 0 1 8-8z', opacity: '0.3' }),\r\n createVNode('path', { d: 'M128 104a8 8 0 0 1 8 8v24a8 8 0 0 1-16 0v-24a8 8 0 0 1 8-8z', opacity: '0.3' }),\r\n createVNode('path', { d: 'M216 184H104a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h112a8 8 0 0 1 8 8v16a8 8 0 0 1-8 8z', opacity: '0.2' }),\r\n ]),\r\n ]),\r\n ]),\r\n ]),\r\n ]));\r\n }\r\n\r\n // 描述区域\r\n if (slots.description) {\r\n children.push(createVNode('div', { class: 'lyt-empty__description' }, slots.description()));\r\n } else if (props.description) {\r\n children.push(createVNode('div', { class: 'lyt-empty__description' }, [props.description]));\r\n }\r\n\r\n // 底部内容\r\n if (slots.default) {\r\n children.push(createVNode('div', { class: 'lyt-empty__bottom' }, slots.default()));\r\n }\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: props.id,\r\n 'aria-label': props.ariaLabel,\r\n 'aria-describedby': props.ariaDescribedBy,\r\n role: 'status',\r\n 'aria-live': 'polite',\r\n }, {\r\n class: getEmptyClass(),\r\n style: getEmptyStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { EmptyProps, EmptySlots };\r\n","/**\r\n * @lytjs/ui - Link 组件\r\n *\r\n * 链接组件,支持多种类型和样式\r\n */\r\n\r\nimport type { LinkProps, LinkSlots } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * Link 组件\r\n */\r\nexport const Link = defineComponent({\r\n name: 'LytLink',\r\n\r\n props: {\r\n type: { type: String, default: 'default' },\r\n disabled: { type: Boolean, default: false },\r\n underline: { type: Boolean, default: true },\r\n href: { type: String, default: '' },\r\n target: { type: String, default: '_self' },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onClick: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }) {\r\n const _props = props as any;\r\n const handleClick = (event: MouseEvent) => {\r\n if (_props.disabled) {\r\n event.preventDefault();\r\n return;\r\n }\r\n _props.onClick?.(event);\r\n };\r\n\r\n const getLinkClass = () => {\r\n const classes = ['lyt-link'];\r\n if (_props.type !== 'default') {\r\n classes.push(`lyt-link--${_props.type}`);\r\n }\r\n if (!_props.underline) {\r\n classes.push('lyt-link--no-underline');\r\n }\r\n if (_props.disabled) {\r\n classes.push('lyt-link--disabled');\r\n }\r\n if (_props.class) {\r\n classes.push(_props.class);\r\n }\r\n return classes.join(' ');\r\n };\r\n\r\n const getLinkStyle = () => {\r\n if (!_props.style) return undefined;\r\n if (isString(_props.style)) return _props.style;\r\n if (isObject(_props.style)) {\r\n return Object.entries(_props.style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n }\r\n return undefined;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n children.push(...(slotContent as VNode[]));\r\n }\r\n }\r\n\r\n if (_props.href) {\r\n return createVNode('a', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n }, {\r\n class: getLinkClass(),\r\n style: getLinkStyle(),\r\n href: _props.href,\r\n target: _props.target,\r\n onClick: handleClick,\r\n }), children);\r\n } else {\r\n return createVNode('span', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n role: 'link',\r\n }, {\r\n class: getLinkClass(),\r\n style: getLinkStyle(),\r\n onClick: handleClick,\r\n }), children);\r\n }\r\n };\r\n },\r\n});\r\n\r\nexport type { LinkProps, LinkSlots };\r\n","/**\r\n * @lytjs/ui - Container 组件\r\n *\r\n * 容器组件,用于布局\r\n */\r\n\r\nimport type { ContainerProps, ContainerSlots } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\n\r\n/**\r\n * Container 组件\r\n */\r\nexport const Container = defineComponent({\r\n name: 'LytContainer',\r\n\r\n props: {\r\n fluid: { type: Boolean, default: false },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n },\r\n\r\n setup(props: any, { slots }: any) {\r\n const getContainerClass = () => {\r\n const classes = ['lyt-container'];\r\n if (props.fluid) {\r\n classes.push('lyt-container--fluid');\r\n }\r\n if (props.class) {\r\n classes.push(props.class);\r\n }\r\n return classes.join(' ');\r\n };\r\n\r\n const getContainerStyle = () => {\r\n if (!props.style) return undefined;\r\n if (isString(props.style)) return props.style;\r\n if (isObject(props.style)) {\r\n return Object.entries(props.style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n }\r\n return undefined;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n if (slots.default) {\r\n children.push(...slots.default());\r\n }\r\n\r\n return createVNode('div', {\r\n class: getContainerClass(),\r\n style: getContainerStyle(),\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { ContainerProps, ContainerSlots };\r\n","/**\r\n * @lytjs/ui - Divider 组件\r\n *\r\n * 分割线组件\r\n */\r\n\r\nimport type { DividerProps, DividerSlots } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * Divider 组件\r\n */\r\nexport const Divider = defineComponent({\r\n name: 'LytDivider',\r\n\r\n props: {\r\n type: { type: String, default: 'horizontal' },\r\n contentPosition: { type: String, default: 'center' },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: any, { slots }: any) {\r\n const getDividerClass = () => {\r\n const classes = ['lyt-divider'];\r\n if (props.type !== 'horizontal') {\r\n classes.push(`lyt-divider--${props.type}`);\r\n }\r\n if (slots.default) {\r\n classes.push(`lyt-divider--${props.contentPosition}`);\r\n }\r\n if (props.class) {\r\n classes.push(props.class);\r\n }\r\n return classes.join(' ');\r\n };\r\n\r\n const getDividerStyle = () => {\r\n if (!props.style) return undefined;\r\n if (isString(props.style)) return props.style;\r\n if (isObject(props.style)) {\r\n return Object.entries(props.style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n }\r\n return undefined;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n if (slots.default) {\r\n children.push(createVNode('span', { class: 'lyt-divider__text' }, slots.default()));\r\n }\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: props.id,\r\n 'aria-label': props.ariaLabel,\r\n 'aria-describedby': props.ariaDescribedBy,\r\n role: 'separator',\r\n }, {\r\n class: getDividerClass(),\r\n style: getDividerStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { DividerProps, DividerSlots };\r\n","/**\r\n * @lytjs/ui - Toast 组件\r\n *\r\n * 轻提示组件,用于显示简短的消息提示\r\n */\r\n\r\nimport type { ToastProps, ToastSlots, ToastSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { reactive } from '@lytjs/reactivity';\r\n\r\n/**\r\n * Toast 组件\r\n */\r\nexport const Toast = defineComponent({\r\n name: 'LytToast',\r\n\r\n props: {\r\n message: { type: String, default: '' },\r\n type: { type: String, default: 'info' },\r\n duration: { type: Number, default: 3000 },\r\n position: { type: String, default: 'top' },\r\n icon: { type: String, default: '' },\r\n closable: { type: Boolean, default: false },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n onClose: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots, emit }) {\r\n const _props = props as ToastSetupProps;\r\n const state = reactive({\r\n visible: true,\r\n timer: null as any,\r\n });\r\n\r\n const startTimer = () => {\r\n if (_props.duration > 0) {\r\n state.timer = setTimeout(() => {\r\n close();\r\n }, _props.duration);\r\n }\r\n };\r\n\r\n const clearTimer = () => {\r\n if (state.timer) {\r\n clearTimeout(state.timer);\r\n state.timer = null;\r\n }\r\n };\r\n\r\n const close = () => {\r\n state.visible = false;\r\n emit('close');\r\n _props.onClose?.();\r\n };\r\n\r\n const handleClose = (e: Event) => {\r\n e.stopPropagation();\r\n close();\r\n };\r\n\r\n const getToastClass = () => {\r\n const classes = ['lyt-toast'];\r\n classes.push(`lyt-toast--${_props.type}`);\r\n classes.push(`lyt-toast--${_props.position}`);\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getToastStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n // 启动定时器\r\n startTimer();\r\n\r\n return () => {\r\n if (!state.visible) return createVNode('div', { style: 'display: none;' }, []);\r\n\r\n const children: VNode[] = [];\r\n \r\n // 图标\r\n if (_props.icon) {\r\n children.push(createVNode('span', {\r\n class: 'lyt-toast__icon',\r\n }, [createVNode('span', {}, _props.icon)]));\r\n } else if (slots.icon) {\r\n const slotIcon = slots.icon();\r\n if (Array.isArray(slotIcon)) {\r\n children.push(createVNode('span', {\r\n class: 'lyt-toast__icon',\r\n }, slotIcon as VNode[]));\r\n }\r\n }\r\n\r\n // 消息内容\r\n if (_props.message) {\r\n children.push(createVNode('span', {\r\n class: 'lyt-toast__message',\r\n }, [createVNode('span', {}, _props.message)]));\r\n } else if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n children.push(createVNode('span', {\r\n class: 'lyt-toast__message',\r\n }, slotContent as VNode[]));\r\n }\r\n }\r\n\r\n // 关闭按钮\r\n if (_props.closable) {\r\n children.push(createVNode('span', {\r\n class: 'lyt-toast__close',\r\n onClick: handleClose,\r\n }, [createVNode('span', {}, '×')]));\r\n }\r\n\r\n return createVNode('div', {\r\n class: getToastClass(),\r\n style: getToastStyle(),\r\n onMouseenter: clearTimer,\r\n onMouseleave: startTimer,\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { ToastProps, ToastSlots };\r\n","/**\r\n * @lytjs/ui - Alert 组件\r\n *\r\n * 警告提示组件,用于展示重要的提示信息\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport type { AlertType, AlertSetupProps } from './types';\r\nimport { getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Alert = defineComponent({\r\n name: 'LytAlert',\r\n\r\n props: {\r\n title: { type: String, default: '' },\r\n description: { type: String, default: '' },\r\n type: { type: String, default: 'info' },\r\n closable: { type: Boolean, default: false },\r\n showIcon: { type: Boolean, default: true },\r\n effect: { type: String, default: 'light' },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onClose: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots, emit }) {\r\n const _props = props as AlertSetupProps;\r\n const handleClose = () => {\r\n emit('close');\r\n _props.onClose?.();\r\n };\r\n\r\n const getIconMap = (): Record<AlertType, string> => ({\r\n success: '✓',\r\n warning: '⚠',\r\n info: 'ℹ',\r\n error: '✕',\r\n });\r\n\r\n return () => {\r\n const alertClass = [\r\n 'lyt-alert',\r\n `lyt-alert--${_props.type}`,\r\n `lyt-alert--${_props.effect}`,\r\n _props.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const children: VNode[] = [];\r\n\r\n if (_props.showIcon) {\r\n const icon = getIconMap()[_props.type as AlertType] || 'ℹ';\r\n children.push(createVNode('span', { class: 'lyt-alert__icon' }, [createVNode('span', {}, icon)]));\r\n }\r\n\r\n const contentChildren: VNode[] = [];\r\n \r\n // Title\r\n if (slots.title || _props.title) {\r\n const titleChildren: VNode[] = [];\r\n if (slots.title) {\r\n const slotContent = slots.title();\r\n if (Array.isArray(slotContent)) {\r\n titleChildren.push(...(slotContent as VNode[]));\r\n }\r\n } else if (_props.title) {\r\n titleChildren.push(createVNode('span', {}, _props.title));\r\n }\r\n if (titleChildren.length > 0) {\r\n contentChildren.push(createVNode('div', { class: 'lyt-alert__title' }, titleChildren));\r\n }\r\n }\r\n\r\n // Description\r\n if (_props.description) {\r\n contentChildren.push(createVNode('div', { class: 'lyt-alert__description' }, [createVNode('span', {}, _props.description)]));\r\n }\r\n\r\n // Default slot\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n contentChildren.push(createVNode('div', { class: 'lyt-alert__message' }, slotContent as VNode[]));\r\n }\r\n }\r\n\r\n if (contentChildren.length > 0) {\r\n children.push(createVNode('div', { class: 'lyt-alert__content' }, contentChildren));\r\n }\r\n\r\n if (_props.closable) {\r\n const closeBtnProps = getButtonA11yProps({ ariaLabel: '关闭提示' });\r\n children.push(createVNode('button', mergeA11yProps(closeBtnProps, {\r\n class: 'lyt-alert__close',\r\n onClick: handleClose,\r\n }), [createVNode('span', {}, '×')]));\r\n }\r\n\r\n return createVNode('div', {\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel || _props.title || 'Alert',\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n 'role': 'alert',\r\n class: alertClass,\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { AlertProps, AlertSlots, AlertType, AlertEffect } from './types';\r\n","/**\r\n * @lytjs/ui - Tooltip 组件\r\n *\r\n * 文字提示组件,用于显示额外的提示信息\r\n */\r\n\r\nimport type { TooltipProps, TooltipSlots } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { reactive } from '@lytjs/reactivity';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * Tooltip 组件\r\n */\r\nexport const Tooltip = defineComponent({\r\n name: 'LytTooltip',\r\n\r\n props: {\r\n content: { type: String, default: '' },\r\n placement: { type: String, default: 'top' },\r\n trigger: { type: String, default: 'hover' },\r\n disabled: { type: Boolean, default: false },\r\n openDelay: { type: Number, default: 0 },\r\n closeDelay: { type: Number, default: 0 },\r\n showArrow: { type: Boolean, default: true },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: any, { slots }: any) {\r\n const state = reactive({\r\n visible: false,\r\n openTimer: null as any,\r\n closeTimer: null as any,\r\n });\r\n\r\n const handleMouseEnter = () => {\r\n if (props.disabled || props.trigger !== 'hover') return;\r\n clearTimeout(state.closeTimer);\r\n if (props.openDelay > 0) {\r\n state.openTimer = setTimeout(() => {\r\n state.visible = true;\r\n }, props.openDelay);\r\n } else {\r\n state.visible = true;\r\n }\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n if (props.disabled || props.trigger !== 'hover') return;\r\n clearTimeout(state.openTimer);\r\n if (props.closeDelay > 0) {\r\n state.closeTimer = setTimeout(() => {\r\n state.visible = false;\r\n }, props.closeDelay);\r\n } else {\r\n state.visible = false;\r\n }\r\n };\r\n\r\n const handleClick = () => {\r\n if (props.disabled || props.trigger !== 'click') return;\r\n state.visible = !state.visible;\r\n };\r\n\r\n const handleFocus = () => {\r\n if (props.disabled || props.trigger !== 'focus') return;\r\n state.visible = true;\r\n };\r\n\r\n const handleBlur = () => {\r\n if (props.disabled || props.trigger !== 'focus') return;\r\n state.visible = false;\r\n };\r\n\r\n const getTooltipClass = () => {\r\n const classes = ['lyt-tooltip'];\r\n classes.push(`lyt-tooltip--${props.placement}`);\r\n if (props.class) classes.push(props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getTooltipStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (props.style) {\r\n if (isString(props.style)) {\r\n return props.style;\r\n }\r\n if (isObject(props.style)) {\r\n Object.assign(style, props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n // 触发元素\r\n if (slots.default) {\r\n children.push(createVNode('div', {\r\n class: 'lyt-tooltip__trigger',\r\n onMouseenter: handleMouseEnter,\r\n onMouseleave: handleMouseLeave,\r\n onClick: handleClick,\r\n onFocus: handleFocus,\r\n onBlur: handleBlur,\r\n }, slots.default()));\r\n }\r\n\r\n // 提示内容\r\n if (state.visible && !props.disabled) {\r\n const contentChildren: VNode[] = [];\r\n \r\n // 箭头\r\n if (props.showArrow) {\r\n contentChildren.push(createVNode('div', {\r\n class: 'lyt-tooltip__arrow',\r\n }, []));\r\n }\r\n\r\n // 内容\r\n if (props.content) {\r\n contentChildren.push(createVNode('div', {\r\n class: 'lyt-tooltip__content',\r\n }, [props.content]));\r\n } else if (slots.content) {\r\n contentChildren.push(createVNode('div', {\r\n class: 'lyt-tooltip__content',\r\n }, slots.content()));\r\n }\r\n\r\n children.push(createVNode('div', {\r\n class: getTooltipClass(),\r\n style: getTooltipStyle(),\r\n }, contentChildren));\r\n }\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: props.id,\r\n 'aria-label': props.ariaLabel,\r\n 'aria-describedby': props.ariaDescribedBy,\r\n }, {\r\n class: 'lyt-tooltip-wrapper',\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { TooltipProps, TooltipSlots };\r\n","/**\n * @lytjs/ui - Checkbox 组件\n *\n * 复选框组件,用于多选场景\n */\n\nimport type { CheckboxProps, CheckboxSlots, CheckboxSetupProps } from './types';\nimport { defineComponent } from '@lytjs/component';\nimport { createVNode, type VNode } from '@lytjs/vdom';\nimport { isString, isObject, isArray } from '@lytjs/common-is';\nimport { reactive, computed } from '@lytjs/reactivity';\nimport { getInputControlA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\n\nexport const Checkbox = defineComponent({\n name: 'LytCheckbox',\n\n props: {\n modelValue: { type: Boolean, default: false },\n label: { type: String, default: '' },\n trueLabel: { type: String, default: undefined },\n falseLabel: { type: String, default: undefined },\n disabled: { type: Boolean, default: false },\n checked: { type: Boolean, default: false },\n indeterminate: { type: Boolean, default: false },\n name: { type: String, default: '' },\n id: { type: String, default: '' },\n class: { type: String, default: '' },\n style: { type: String, default: '' },\n ariaLabel: { type: String, default: '' },\n ariaDescribedBy: { type: String, default: '' },\n ariaInvalid: { type: Boolean, default: false },\n ariaRequired: { type: Boolean, default: false },\n tabIndex: { type: Number, default: undefined },\n onChange: { type: Function, default: undefined },\n onKeydown: { type: Function, default: undefined },\n },\n\n setup(props: Record<string, unknown>, { slots, emit }) {\n const _props = props as CheckboxSetupProps;\n const state = reactive({\n focus: false,\n });\n\n const isChecked = computed(() => {\n if (isArray(_props.modelValue)) {\n return (_props.modelValue as unknown[]).includes(_props.label || _props.trueLabel);\n }\n return _props.modelValue || _props.checked;\n });\n\n const handleChange = (e: Event) => {\n if (_props.disabled) return;\n\n const target = e.target as HTMLInputElement;\n let newValue;\n\n if (isArray(_props.modelValue)) {\n newValue = [...(_props.modelValue as unknown[])];\n const value = _props.label || _props.trueLabel;\n if (target.checked) {\n if (!newValue.includes(value)) {\n newValue.push(value);\n }\n } else {\n const index = newValue.indexOf(value);\n if (index > -1) {\n newValue.splice(index, 1);\n }\n }\n } else {\n newValue = target.checked;\n }\n\n emit('update:modelValue', newValue);\n emit('change', newValue);\n _props.onChange?.(newValue as boolean);\n };\n\n const handleFocus = () => {\n state.focus = true;\n };\n\n const handleBlur = () => {\n state.focus = false;\n };\n\n const getCheckboxClass = () => {\n const classes = ['lyt-checkbox'];\n if (isChecked.value) classes.push('lyt-checkbox--checked');\n if (_props.disabled) classes.push('lyt-checkbox--disabled');\n if (_props.indeterminate) classes.push('lyt-checkbox--indeterminate');\n if (state.focus) classes.push('lyt-checkbox--focus');\n if (_props.class) classes.push(_props.class);\n return classes.join(' ');\n };\n\n const getCheckboxStyle = () => {\n const style: Record<string, string> = {};\n if (_props.style) {\n if (isString(_props.style)) {\n return _props.style;\n }\n if (isObject(_props.style)) {\n Object.assign(style, _props.style);\n }\n }\n return style;\n };\n\n return () => {\n const children: VNode[] = [];\n const checked = isChecked.value;\n\n const a11yProps = getInputControlA11yProps({\n id: _props.id,\n ariaLabel: _props.ariaLabel,\n ariaDescribedBy: _props.ariaDescribedBy,\n ariaInvalid: _props.ariaInvalid,\n ariaRequired: _props.ariaRequired,\n disabled: _props.disabled,\n tabIndex: _props.tabIndex,\n checked: checked ? true : _props.indeterminate ? 'mixed' as const : false,\n });\n\n children.push(createVNode('input', mergeA11yProps(a11yProps, {\n type: 'checkbox',\n class: 'lyt-checkbox__input',\n checked: checked,\n disabled: _props.disabled,\n name: _props.name,\n onKeydown: _props.onKeydown,\n onChange: handleChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n }), []));\n\n children.push(createVNode('span', {\n class: 'lyt-checkbox__inner',\n }, []));\n\n if (_props.label) {\n children.push(createVNode('span', {\n class: 'lyt-checkbox__label',\n }, [createVNode('span', {}, _props.label)]));\n } else if (slots.default) {\n const slotContent = slots.default();\n if (Array.isArray(slotContent)) {\n children.push(createVNode('span', {\n class: 'lyt-checkbox__label',\n }, slotContent as VNode[]));\n }\n }\n\n return createVNode('label', {\n class: getCheckboxClass(),\n style: getCheckboxStyle(),\n }, children);\n };\n },\n});\n\nexport type { CheckboxProps, CheckboxSlots };\n","/**\n * @lytjs/ui - CheckboxGroup 组件\n *\n * 复选框组组件,用于多选场景\n */\n\nimport type { CheckboxGroupProps, CheckboxGroupSlots, CheckboxGroupSetupProps } from './types';\nimport { defineComponent } from '@lytjs/component';\nimport { createVNode, type VNode } from '@lytjs/vdom';\nimport { isString, isObject } from '@lytjs/common-is';\nimport { mergeA11yProps } from '@lytjs/common-a11y';\n\n/**\n * CheckboxGroup 组件\n */\nexport const CheckboxGroup = defineComponent({\n name: 'LytCheckboxGroup',\n\n props: {\n modelValue: { type: Array, default: undefined },\n disabled: { type: Boolean, default: false },\n min: { type: Number, default: undefined },\n max: { type: Number, default: undefined },\n size: { type: String, default: 'default' },\n class: { type: String, default: '' },\n style: { type: [String, Object] as any, default: '' },\n ariaLabel: { type: String, default: '' },\n ariaDescribedBy: { type: String, default: '' },\n ariaRequired: { type: Boolean, default: false },\n id: { type: String, default: '' },\n onChange: { type: Function, default: undefined },\n },\n\n setup(props: Record<string, unknown>, { slots }) {\n const _props = props as CheckboxGroupSetupProps;\n\n const getCheckboxGroupClass = () => {\n const classes = ['lyt-checkbox-group'];\n if (_props.class) classes.push(_props.class as string);\n return classes.join(' ');\n };\n\n const getCheckboxGroupStyle = () => {\n const style: Record<string, string> = {};\n if (_props.style) {\n if (isString(_props.style)) {\n return _props.style;\n }\n if (isObject(_props.style)) {\n Object.assign(style, _props.style);\n }\n }\n return style;\n };\n\n return () => {\n const children: VNode[] = [];\n\n if (slots.default) {\n const slotContent = slots.default();\n if (Array.isArray(slotContent)) {\n children.push(...(slotContent as VNode[]));\n } else if (slotContent) {\n children.push(slotContent as VNode);\n }\n }\n\n return createVNode('div', mergeA11yProps({\n id: _props.id as string,\n 'aria-label': _props.ariaLabel as string,\n 'aria-describedby': _props.ariaDescribedBy as string,\n 'aria-required': _props.ariaRequired ? 'true' : undefined,\n role: 'group',\n }, {\n class: getCheckboxGroupClass(),\n style: getCheckboxGroupStyle(),\n 'aria-disabled': _props.disabled ? 'true' : undefined,\n }), children);\n };\n },\n});\n\nexport type { CheckboxGroupProps, CheckboxGroupSlots };\n","/**\n * @lytjs/ui - Radio 组件\n *\n * 单选框组件,用于单选场景\n */\n\nimport type { RadioProps, RadioSlots, RadioSetupProps } from './types';\nimport { defineComponent } from '@lytjs/component';\nimport { createVNode, type VNode } from '@lytjs/vdom';\nimport { isString, isObject } from '@lytjs/common-is';\nimport { reactive, computed } from '@lytjs/reactivity';\nimport { getInputControlA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\n\nexport const Radio = defineComponent({\n name: 'LytRadio',\n\n props: {\n modelValue: { type: String, default: undefined },\n label: { type: String, default: undefined },\n disabled: { type: Boolean, default: false },\n name: { type: String, default: '' },\n id: { type: String, default: '' },\n class: { type: String, default: '' },\n style: { type: String, default: '' },\n ariaLabel: { type: String, default: '' },\n ariaDescribedBy: { type: String, default: '' },\n ariaInvalid: { type: Boolean, default: false },\n ariaRequired: { type: Boolean, default: false },\n tabIndex: { type: Number, default: undefined },\n onChange: { type: Function, default: undefined },\n onKeydown: { type: Function, default: undefined },\n },\n\n setup(props: Record<string, unknown>, { slots, emit }) {\n const _props = props as RadioSetupProps;\n const state = reactive({\n focus: false,\n });\n\n const isChecked = computed(() => {\n return _props.modelValue === _props.label;\n });\n\n const handleChange = () => {\n if (_props.disabled) return;\n\n const newValue = _props.label;\n emit('update:modelValue', newValue);\n emit('change', newValue);\n _props.onChange?.(newValue as string | number | boolean);\n };\n\n const handleFocus = () => {\n state.focus = true;\n };\n\n const handleBlur = () => {\n state.focus = false;\n };\n\n const getRadioClass = () => {\n const classes = ['lyt-radio'];\n if (isChecked.value) classes.push('lyt-radio--checked');\n if (_props.disabled) classes.push('lyt-radio--disabled');\n if (state.focus) classes.push('lyt-radio--focus');\n if (_props.class) classes.push(_props.class);\n return classes.join(' ');\n };\n\n const getRadioStyle = () => {\n const style: Record<string, string> = {};\n if (_props.style) {\n if (isString(_props.style)) {\n return _props.style;\n }\n if (isObject(_props.style)) {\n Object.assign(style, _props.style);\n }\n }\n return style;\n };\n\n return () => {\n const children: VNode[] = [];\n const checked = isChecked.value;\n\n const a11yProps = getInputControlA11yProps({\n checked: checked,\n disabled: _props.disabled,\n id: _props.id,\n ariaLabel: _props.ariaLabel,\n ariaDescribedBy: _props.ariaDescribedBy,\n ariaInvalid: _props.ariaInvalid,\n ariaRequired: _props.ariaRequired,\n tabIndex: _props.tabIndex,\n });\n\n children.push(createVNode('input', mergeA11yProps(a11yProps, {\n type: 'radio',\n class: 'lyt-radio__input',\n checked: checked,\n disabled: _props.disabled,\n name: _props.name,\n onKeydown: _props.onKeydown,\n onChange: handleChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n }), []));\n\n children.push(createVNode('span', {\n class: 'lyt-radio__inner',\n }, []));\n\n if (_props.label !== undefined) {\n children.push(createVNode('span', {\n class: 'lyt-radio__label',\n }, [createVNode('span', {}, String(_props.label))]));\n } else if (slots.default) {\n const slotContent = slots.default();\n if (Array.isArray(slotContent)) {\n children.push(createVNode('span', {\n class: 'lyt-radio__label',\n }, slotContent as VNode[]));\n }\n }\n\n return createVNode('label', {\n class: getRadioClass(),\n style: getRadioStyle(),\n }, children);\n };\n },\n});\n\nexport type { RadioProps, RadioSlots };\n","/**\n * @lytjs/ui - RadioGroup 组件\n *\n * 单选框组组件,用于单选场景\n */\n\nimport type { RadioGroupProps, RadioGroupSlots, RadioGroupSetupProps } from './types';\nimport { defineComponent } from '@lytjs/component';\nimport { createVNode, type VNode } from '@lytjs/vdom';\nimport { isString, isObject } from '@lytjs/common-is';\nimport { getGroupA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\n\nexport const RadioGroup = defineComponent({\n name: 'LytRadioGroup',\n\n props: {\n modelValue: { type: [String, Number, Boolean] as any, default: undefined },\n disabled: { type: Boolean, default: false },\n size: { type: String, default: 'default' },\n class: { type: String, default: '' },\n style: { type: [String, Object] as any, default: '' },\n ariaLabel: { type: String, default: '' },\n ariaDescribedBy: { type: String, default: '' },\n ariaRequired: { type: Boolean, default: false },\n id: { type: String, default: '' },\n onChange: { type: Function, default: undefined },\n },\n\n setup(props: Record<string, unknown>, { slots }) {\n const _props = props as RadioGroupSetupProps;\n\n const getRadioGroupClass = () => {\n const classes = ['lyt-radio-group'];\n if (_props.class) classes.push(_props.class as string);\n return classes.join(' ');\n };\n\n const getRadioGroupStyle = () => {\n const style: Record<string, string> = {};\n if (_props.style) {\n if (isString(_props.style)) {\n return _props.style;\n }\n if (isObject(_props.style)) {\n Object.assign(style, _props.style);\n }\n }\n return style;\n };\n\n return () => {\n const children: VNode[] = [];\n\n if (slots.default) {\n const slotContent = slots.default();\n if (Array.isArray(slotContent)) {\n children.push(...(slotContent as VNode[]));\n } else if (slotContent) {\n children.push(slotContent as VNode);\n }\n }\n\n const a11yProps = getGroupA11yProps({\n role: 'radiogroup',\n id: _props.id as string,\n ariaLabel: _props.ariaLabel as string,\n ariaDescribedBy: _props.ariaDescribedBy as string,\n ariaRequired: _props.ariaRequired,\n });\n\n return createVNode('div', mergeA11yProps(a11yProps, {\n class: getRadioGroupClass(),\n style: getRadioGroupStyle(),\n 'aria-disabled': _props.disabled ? 'true' : undefined,\n }), children);\n };\n },\n});\n\nexport type { RadioGroupProps, RadioGroupSlots };\n","/**\n * @lytjs/ui - Switch 组件\n *\n * 开关组件,用于表示两种状态的切换\n */\n\nimport type { SwitchProps, SwitchSlots, SwitchSetupProps } from './types';\nimport { defineComponent } from '@lytjs/component';\nimport { createVNode, type VNode } from '@lytjs/vdom';\nimport { isString, isObject } from '@lytjs/common-is';\nimport { reactive, computed } from '@lytjs/reactivity';\nimport { getSwitchA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\n\n/**\n * Switch 组件\n */\nexport const Switch = defineComponent({\n name: 'LytSwitch',\n\n props: {\n modelValue: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n loading: { type: Boolean, default: false },\n size: { type: String, default: 'default' },\n activeText: { type: String, default: '' },\n inactiveText: { type: String, default: '' },\n activeColor: { type: String, default: '' },\n inactiveColor: { type: String, default: '' },\n activeValue: { type: Boolean, default: true },\n inactiveValue: { type: Boolean, default: false },\n name: { type: String, default: '' },\n id: { type: String, default: '' },\n class: { type: String, default: '' },\n style: { type: String, default: '' },\n ariaLabel: { type: String, default: '' },\n ariaDescribedBy: { type: String, default: '' },\n ariaInvalid: { type: Boolean, default: false },\n ariaRequired: { type: Boolean, default: false },\n tabIndex: { type: Number, default: undefined },\n onChange: { type: Function, default: undefined },\n onKeydown: { type: Function, default: undefined },\n },\n\n setup(props: Record<string, unknown>, { slots, emit }) {\n const _props = props as SwitchSetupProps;\n const state = reactive({\n focus: false,\n });\n\n const isChecked = computed(() => {\n return _props.modelValue === _props.activeValue;\n });\n\n const handleClick = () => {\n if (_props.disabled || _props.loading) return;\n\n const newValue = isChecked.value ? _props.inactiveValue : _props.activeValue;\n emit('update:modelValue', newValue);\n emit('change', newValue);\n _props.onChange?.(newValue as boolean);\n };\n\n const handleKeydown = (event: KeyboardEvent) => {\n if (_props.disabled || _props.loading) return;\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n const newValue = isChecked.value ? _props.inactiveValue : _props.activeValue;\n emit('update:modelValue', newValue);\n emit('change', newValue);\n _props.onChange?.(newValue as boolean);\n }\n\n _props.onKeydown?.(event);\n };\n\n const handleFocus = () => {\n state.focus = true;\n };\n\n const handleBlur = () => {\n state.focus = false;\n };\n\n const getSwitchClass = () => {\n const classes = ['lyt-switch'];\n if (isChecked.value) classes.push('lyt-switch--checked');\n if (_props.disabled) classes.push('lyt-switch--disabled');\n if (_props.loading) classes.push('lyt-switch--loading');\n if (_props.size !== 'default') classes.push(`lyt-switch--${_props.size}`);\n if (state.focus) classes.push('lyt-switch--focus');\n if (_props.class) classes.push(_props.class);\n return classes.join(' ');\n };\n\n const getSwitchStyle = () => {\n const style: Record<string, string> = {};\n if (_props.activeColor && isChecked.value) {\n style.backgroundColor = _props.activeColor;\n }\n if (_props.inactiveColor && !isChecked.value) {\n style.backgroundColor = _props.inactiveColor;\n }\n if (_props.style) {\n if (isString(_props.style)) {\n return _props.style;\n }\n if (isObject(_props.style)) {\n Object.assign(style, _props.style);\n }\n }\n return style;\n };\n\n return () => {\n const children: VNode[] = [];\n\n const coreChildren: VNode[] = [];\n\n if (isChecked.value && _props.activeText) {\n coreChildren.push(createVNode('span', {\n class: 'lyt-switch__label lyt-switch__label--left',\n }, [createVNode('span', {}, _props.activeText)]));\n } else if (!isChecked.value && _props.inactiveText) {\n coreChildren.push(createVNode('span', {\n class: 'lyt-switch__label lyt-switch__label--left',\n }, [createVNode('span', {}, _props.inactiveText)]));\n } else if (slots.active && isChecked.value) {\n const slotContent = slots.active();\n if (Array.isArray(slotContent)) {\n coreChildren.push(createVNode('span', {\n class: 'lyt-switch__label lyt-switch__label--left',\n }, slotContent as VNode[]));\n }\n } else if (slots.inactive && !isChecked.value) {\n const slotContent = slots.inactive();\n if (Array.isArray(slotContent)) {\n coreChildren.push(createVNode('span', {\n class: 'lyt-switch__label lyt-switch__label--left',\n }, slotContent as VNode[]));\n }\n }\n\n const buttonChildren: VNode[] = [];\n if (_props.loading) {\n buttonChildren.push(createVNode('span', {}, '◌'));\n }\n coreChildren.push(createVNode('span', {\n class: 'lyt-switch__core',\n }, [\n createVNode('span', {\n class: 'lyt-switch__button',\n }, buttonChildren),\n ]));\n\n if (isChecked.value && _props.activeText) {\n coreChildren.push(createVNode('span', {\n class: 'lyt-switch__label lyt-switch__label--right',\n }, [createVNode('span', {}, _props.activeText)]));\n } else if (!isChecked.value && _props.inactiveText) {\n coreChildren.push(createVNode('span', {\n class: 'lyt-switch__label lyt-switch__label--right',\n }, [createVNode('span', {}, _props.inactiveText)]));\n }\n\n children.push(createVNode('div', {\n class: 'lyt-switch__wrapper',\n }, coreChildren));\n\n const a11yProps = getSwitchA11yProps({\n checked: isChecked.value,\n disabled: _props.disabled,\n id: _props.id,\n ariaLabel: _props.ariaLabel,\n ariaDescribedBy: _props.ariaDescribedBy,\n ariaInvalid: _props.ariaInvalid,\n ariaRequired: _props.ariaRequired,\n tabIndex: _props.tabIndex,\n });\n\n return createVNode('div', mergeA11yProps(a11yProps, {\n class: getSwitchClass(),\n style: getSwitchStyle(),\n onClick: handleClick,\n onKeydown: handleKeydown,\n onFocus: handleFocus,\n onBlur: handleBlur,\n }), children);\n };\n },\n});\n\nexport type { SwitchProps, SwitchSlots };\n","/**\r\n * @lytjs/ui - InputNumber 组件\r\n *\r\n * 数字输入框组件,用于数值输入\r\n */\r\n\r\nimport type { InputNumberProps, InputNumberSlots, InputNumberSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { reactive, computed, watch } from '@lytjs/reactivity';\r\nimport { getSpinbuttonA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * InputNumber 组件\r\n */\r\nexport const InputNumber = defineComponent({\r\n name: 'LytInputNumber',\r\n\r\n props: {\r\n modelValue: { type: Number, default: undefined },\r\n min: { type: Number, default: -Infinity },\r\n max: { type: Number, default: Infinity },\r\n step: { type: Number, default: 1 },\r\n stepStrictly: { type: Boolean, default: false },\r\n precision: { type: Number, default: undefined },\r\n size: { type: String, default: 'default' },\r\n disabled: { type: Boolean, default: false },\r\n controls: { type: Boolean, default: true },\r\n controlsPosition: { type: String, default: '' },\r\n name: { type: String, default: '' },\r\n label: { type: String, default: '' },\r\n placeholder: { type: String, default: '' },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaRequired: { type: Boolean, default: false },\r\n ariaInvalid: { type: Boolean, default: false },\r\n tabIndex: { type: Number, default: undefined },\r\n onChange: { type: Function, default: undefined },\r\n onInput: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { emit }) {\r\n const _props = props as InputNumberSetupProps;\r\n const state = reactive({\r\n inputValue: _props.modelValue,\r\n focus: false,\r\n });\r\n\r\n const displayValue = computed(() => {\r\n if (state.inputValue === undefined || state.inputValue === null) {\r\n return '';\r\n }\r\n if (_props.precision !== undefined) {\r\n return state.inputValue.toFixed(_props.precision);\r\n }\r\n return String(state.inputValue);\r\n });\r\n\r\n const isAtMin = computed(() => {\r\n return state.inputValue !== undefined && state.inputValue <= _props.min;\r\n });\r\n\r\n const isAtMax = computed(() => {\r\n return state.inputValue !== undefined && state.inputValue >= _props.max;\r\n });\r\n\r\n const ensurePrecision = (value: number): number => {\r\n if (_props.precision !== undefined) {\r\n const factor = Math.pow(10, _props.precision);\r\n return Math.round(value * factor) / factor;\r\n }\r\n return value;\r\n };\r\n\r\n const ensureStep = (value: number): number => {\r\n if (_props.stepStrictly) {\r\n const steps = Math.round(value / _props.step);\r\n return ensurePrecision(steps * _props.step);\r\n }\r\n return ensurePrecision(value);\r\n };\r\n\r\n const clampValue = (value: number): number => {\r\n let result = value;\r\n if (result < _props.min) result = _props.min;\r\n if (result > _props.max) result = _props.max;\r\n return ensureStep(result);\r\n };\r\n\r\n const setValue = (value: number | undefined) => {\r\n if (value === undefined) {\r\n state.inputValue = undefined;\r\n emit('update:modelValue', undefined);\r\n emit('change', undefined);\r\n _props.onChange?.(undefined);\r\n return;\r\n }\r\n \r\n const newValue = clampValue(value);\r\n state.inputValue = newValue;\r\n emit('update:modelValue', newValue);\r\n emit('change', newValue);\r\n _props.onChange?.(newValue);\r\n };\r\n\r\n const handleIncrement = () => {\r\n if (_props.disabled || isAtMax.value) return;\r\n const newValue = (state.inputValue || 0) + _props.step;\r\n setValue(newValue);\r\n };\r\n\r\n const handleDecrement = () => {\r\n if (_props.disabled || isAtMin.value) return;\r\n const newValue = (state.inputValue || 0) - _props.step;\r\n setValue(newValue);\r\n };\r\n\r\n const handleInput = (e: Event) => {\r\n const target = e.target as HTMLInputElement;\r\n const value = target.value;\r\n \r\n if (value === '') {\r\n state.inputValue = undefined;\r\n emit('update:modelValue', undefined);\r\n emit('input', undefined);\r\n _props.onInput?.(undefined);\r\n return;\r\n }\r\n \r\n const numValue = parseFloat(value);\r\n if (!isNaN(numValue)) {\r\n state.inputValue = numValue;\r\n emit('input', numValue);\r\n _props.onInput?.(numValue);\r\n }\r\n };\r\n\r\n const handleBlur = (e: Event) => {\r\n state.focus = false;\r\n const target = e.target as HTMLInputElement;\r\n const value = target.value;\r\n \r\n if (value === '') {\r\n setValue(undefined);\r\n } else {\r\n const numValue = parseFloat(value);\r\n if (!isNaN(numValue)) {\r\n setValue(numValue);\r\n }\r\n }\r\n };\r\n\r\n const handleFocus = () => {\r\n state.focus = true;\r\n };\r\n\r\n const handleKeydown = (e: KeyboardEvent) => {\r\n switch (e.key) {\r\n case 'ArrowUp':\r\n e.preventDefault();\r\n handleIncrement();\r\n break;\r\n case 'ArrowDown':\r\n e.preventDefault();\r\n handleDecrement();\r\n break;\r\n case 'Home':\r\n if (_props.min !== -Infinity) {\r\n e.preventDefault();\r\n setValue(_props.min);\r\n }\r\n break;\r\n case 'End':\r\n if (_props.max !== Infinity) {\r\n e.preventDefault();\r\n setValue(_props.max);\r\n }\r\n break;\r\n }\r\n _props.onKeydown?.(e);\r\n };\r\n\r\n watch(() => _props.modelValue, (newValue) => {\r\n if (newValue !== state.inputValue) {\r\n state.inputValue = newValue;\r\n }\r\n });\r\n\r\n const getInputNumberClass = () => {\r\n const classes = ['lyt-input-number'];\r\n if (_props.size !== 'default') classes.push(`lyt-input-number--${_props.size}`);\r\n if (_props.disabled) classes.push('lyt-input-number--disabled');\r\n if (state.focus) classes.push('lyt-input-number--focus');\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getInputNumberStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n // 减号按钮\r\n if (_props.controls) {\r\n const decreaseBtnProps = getButtonA11yProps({\r\n ariaLabel: '减少',\r\n disabled: _props.disabled || isAtMin.value,\r\n });\r\n children.push(createVNode('span', mergeA11yProps(decreaseBtnProps, {\r\n class: `lyt-input-number__decrease ${isAtMin.value ? 'is-disabled' : ''}`,\r\n onClick: handleDecrement,\r\n }), [createTextVNode('−')]));\r\n }\r\n\r\n // 加号按钮\r\n if (_props.controls) {\r\n const increaseBtnProps = getButtonA11yProps({\r\n ariaLabel: '增加',\r\n disabled: _props.disabled || isAtMax.value,\r\n });\r\n children.push(createVNode('span', mergeA11yProps(increaseBtnProps, {\r\n class: `lyt-input-number__increase ${isAtMax.value ? 'is-disabled' : ''}`,\r\n onClick: handleIncrement,\r\n }), [createTextVNode('+')]));\r\n }\r\n\r\n // 输入框\r\n const spinbuttonProps = getSpinbuttonA11yProps({\r\n id: _props.id,\r\n ariaLabel: _props.ariaLabel,\r\n ariaDescribedBy: _props.ariaDescribedBy,\r\n ariaRequired: _props.ariaRequired,\r\n ariaInvalid: _props.ariaInvalid,\r\n disabled: _props.disabled,\r\n tabIndex: _props.tabIndex,\r\n value: state.inputValue,\r\n min: _props.min === -Infinity ? undefined : _props.min,\r\n max: _props.max === Infinity ? undefined : _props.max,\r\n });\r\n children.push(createVNode('input', mergeA11yProps(spinbuttonProps, {\r\n type: 'text',\r\n class: 'lyt-input-number__input',\r\n value: displayValue.value,\r\n disabled: _props.disabled,\r\n placeholder: _props.placeholder,\r\n name: _props.name,\r\n onInput: handleInput,\r\n onBlur: handleBlur,\r\n onFocus: handleFocus,\r\n onKeydown: handleKeydown,\r\n }), []));\r\n\r\n return createVNode('div', {\r\n class: getInputNumberClass(),\r\n style: getInputNumberStyle(),\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { InputNumberProps, InputNumberSlots };\r\n","/**\n * @lytjs/ui - Progress 组件\n *\n * 进度条组件,用于显示操作进度\n */\n\nimport type { ProgressProps, ProgressSlots, ProgressSetupProps } from './types';\nimport { defineComponent } from '@lytjs/component';\nimport { createVNode, type VNode } from '@lytjs/vdom';\nimport { isString, isObject, isArray } from '@lytjs/common-is';\nimport { computed } from '@lytjs/reactivity';\n\nexport const Progress = defineComponent({\n name: 'LytProgress',\n\n props: {\n percentage: { type: Number, default: 0 },\n type: { type: String, default: 'line' },\n status: { type: String, default: '' },\n strokeWidth: { type: Number, default: 6 },\n textInside: { type: Boolean, default: false },\n showText: { type: Boolean, default: true },\n color: { type: [String, Array, Object] as any, default: '' },\n width: { type: Number, default: 126 },\n strokeLinecap: { type: String, default: 'round' },\n format: { type: Function, default: undefined },\n class: { type: String, default: '' },\n style: { type: [String, Object] as any, default: '' },\n id: { type: String, default: '' },\n ariaLabel: { type: String, default: '' },\n ariaDescribedBy: { type: String, default: '' },\n },\n\n setup(props: Record<string, unknown>) {\n const _props = props as ProgressSetupProps;\n\n const validPercentage = computed(() => {\n let p = _props.percentage;\n if (p < 0) p = 0;\n if (p > 100) p = 100;\n return p;\n });\n\n const getStatus = computed(() => {\n if (_props.status) return _props.status;\n if (validPercentage.value === 100) return 'success';\n return '';\n });\n\n const getBarStyle = computed(() => {\n const style: Record<string, string> = {\n width: `${validPercentage.value}%`,\n };\n\n if (_props.color) {\n if (isString(_props.color)) {\n style.backgroundColor = _props.color;\n } else if (isObject(_props.color) && !isArray(_props.color)) {\n const colorObj = _props.color as Record<string, string>;\n for (const key in colorObj) {\n const percentage = parseInt(key);\n if (validPercentage.value >= percentage) {\n const colorValue = colorObj[key];\n if (colorValue) {\n style.backgroundColor = colorValue;\n }\n }\n }\n }\n }\n\n return style;\n });\n\n const getProgressClass = () => {\n const classes = ['lyt-progress'];\n if (_props.type) classes.push(`lyt-progress--${_props.type}`);\n const status = getStatus.value;\n if (status) classes.push(`lyt-progress--${status}`);\n if (_props.class) classes.push(_props.class as string);\n return classes.join(' ');\n };\n\n const getProgressStyle = () => {\n const style: Record<string, string> = {};\n if (_props.style) {\n if (isString(_props.style)) {\n return _props.style;\n }\n if (isObject(_props.style)) {\n Object.assign(style, _props.style);\n }\n }\n return style;\n };\n\n const formatText = () => {\n if (_props.format) {\n return _props.format(validPercentage.value);\n }\n return `${validPercentage.value}%`;\n };\n\n const renderLine = () => {\n const children: VNode[] = [];\n\n const barStyle = getBarStyle.value;\n const innerContent: VNode[] = [];\n if (_props.textInside && _props.showText) {\n innerContent.push(createVNode('div', { class: 'lyt-progress__inner-text' }, [createVNode('span', {}, formatText())]));\n }\n\n children.push(createVNode('div', {\n class: 'lyt-progress__outer',\n }, [\n createVNode('div', {\n class: 'lyt-progress__inner',\n style: barStyle,\n }, innerContent),\n ]));\n\n if (_props.showText && !_props.textInside) {\n children.push(createVNode('div', {\n class: 'lyt-progress__text',\n }, [createVNode('span', {}, formatText())]));\n }\n\n return children;\n };\n\n const renderCircle = () => {\n const radius = 50 - _props.strokeWidth / 2;\n const circumference = 2 * Math.PI * radius;\n const strokeDashoffset = circumference - (validPercentage.value / 100) * circumference;\n const barStyle = getBarStyle.value;\n\n const children: VNode[] = [];\n\n children.push(createVNode('svg', {\n class: 'lyt-progress__circle',\n viewBox: '0 0 100 100',\n width: _props.width,\n height: _props.width,\n }, [\n createVNode('path', {\n class: 'lyt-progress__circle-trail',\n d: `M 50 50 m 0,-${radius} a ${radius},${radius} 0 1 1 0,${radius * 2} a ${radius},${radius} 0 1 1 0,-${radius * 2}`,\n stroke: '#e5e9f2',\n strokeWidth: _props.strokeWidth,\n fill: 'none',\n }, []),\n createVNode('path', {\n class: 'lyt-progress__circle-path',\n d: `M 50 50 m 0,-${radius} a ${radius},${radius} 0 1 1 0,${radius * 2} a ${radius},${radius} 0 1 1 0,-${radius * 2}`,\n stroke: barStyle.backgroundColor || '#409eff',\n strokeWidth: _props.strokeWidth,\n fill: 'none',\n strokeDasharray: `${circumference}px, ${circumference}px`,\n strokeDashoffset: `${strokeDashoffset}px`,\n strokeLinecap: _props.strokeLinecap,\n }, []),\n ]));\n\n if (_props.showText) {\n children.push(createVNode('div', {\n class: 'lyt-progress__text',\n }, [createVNode('span', {}, formatText())]));\n }\n\n return children;\n };\n\n return () => {\n let content: VNode[];\n\n if (_props.type === 'circle' || _props.type === 'dashboard') {\n content = renderCircle();\n } else {\n content = renderLine();\n }\n\n return createVNode('div', {\n id: _props.id as string,\n 'aria-label': _props.ariaLabel as string || 'Progress',\n 'aria-describedby': _props.ariaDescribedBy as string,\n role: 'progressbar',\n 'aria-valuenow': String(validPercentage.value),\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n class: getProgressClass(),\n style: getProgressStyle(),\n }, content);\n };\n },\n});\n\nexport type { ProgressProps, ProgressSlots };\n","/**\n * @lytjs/ui - Slider 组件\n *\n * 滑块组件,用于在给定范围内选择一个值\n */\n\nimport type { SliderProps, SliderSlots, SliderSetupProps } from './types';\nimport { defineComponent } from '@lytjs/component';\nimport { createVNode, type VNode } from '@lytjs/vdom';\nimport { isString, isObject } from '@lytjs/common-is';\nimport { reactive, computed, watch } from '@lytjs/reactivity';\nimport { getSliderA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\n\nexport const Slider = defineComponent({\n name: 'LytSlider',\n\n props: {\n modelValue: { type: Number, default: 0 },\n min: { type: Number, default: 0 },\n max: { type: Number, default: 100 },\n step: { type: Number, default: 1 },\n showInput: { type: Boolean, default: false },\n showInputControls: { type: Boolean, default: true },\n inputSize: { type: String, default: 'default' },\n showStops: { type: Boolean, default: false },\n showTooltip: { type: Boolean, default: true },\n formatTooltip: { type: Function, default: undefined },\n disabled: { type: Boolean, default: false },\n range: { type: Boolean, default: false },\n vertical: { type: Boolean, default: false },\n height: { type: String, default: '' },\n label: { type: String, default: '' },\n class: { type: String, default: '' },\n style: { type: [String, Object] as any, default: '' },\n id: { type: String, default: '' },\n ariaLabel: { type: String, default: '' },\n ariaDescribedBy: { type: String, default: '' },\n ariaRequired: { type: Boolean, default: false },\n ariaInvalid: { type: Boolean, default: false },\n tabIndex: { type: Number, default: undefined },\n onChange: { type: Function, default: undefined },\n onInput: { type: Function, default: undefined },\n onKeydown: { type: Function, default: undefined },\n },\n\n setup(props: Record<string, unknown>, { emit }) {\n const _props = props as SliderSetupProps;\n\n const state = reactive({\n firstValue: 0,\n secondValue: 0,\n dragging: false,\n showTooltip: false,\n });\n\n const initValues = () => {\n if (_props.range) {\n if (Array.isArray(_props.modelValue)) {\n state.firstValue = _props.modelValue[0] || _props.min;\n state.secondValue = _props.modelValue[1] || _props.max;\n } else {\n state.firstValue = _props.min;\n state.secondValue = _props.max;\n }\n } else {\n if (typeof _props.modelValue === 'number') {\n state.firstValue = _props.modelValue;\n } else {\n state.firstValue = _props.min;\n }\n }\n };\n\n initValues();\n\n watch(() => _props.modelValue, () => {\n initValues();\n });\n\n const formatValue = (value: number) => {\n if (_props.formatTooltip) {\n return _props.formatTooltip(value);\n }\n return String(value);\n };\n\n const getValueByPercent = (percent: number) => {\n const range = _props.max - _props.min;\n let value = (percent / 100) * range + _props.min;\n\n if (_props.step > 0) {\n value = Math.round(value / _props.step) * _props.step;\n }\n\n value = Math.max(_props.min, Math.min(_props.max, value));\n return value;\n };\n\n const getPercentByValue = (value: number) => {\n const range = _props.max - _props.min;\n return ((value - _props.min) / range) * 100;\n };\n\n const firstPercent = computed(() => getPercentByValue(state.firstValue));\n const secondPercent = computed(() => getPercentByValue(state.secondValue));\n\n const clampValue = (value: number) => {\n return Math.max(_props.min, Math.min(_props.max, value));\n };\n\n const handleKeydown = (event: KeyboardEvent) => {\n if (_props.disabled) return;\n \n let newValue: number;\n \n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowDown':\n event.preventDefault();\n newValue = clampValue(state.firstValue - _props.step);\n break;\n case 'ArrowRight':\n case 'ArrowUp':\n event.preventDefault();\n newValue = clampValue(state.firstValue + _props.step);\n break;\n case 'Home':\n event.preventDefault();\n newValue = _props.min;\n break;\n case 'End':\n event.preventDefault();\n newValue = _props.max;\n break;\n default:\n _props.onKeydown?.(event);\n return;\n }\n \n if (newValue !== state.firstValue) {\n state.firstValue = newValue;\n state.showTooltip = true;\n\n if (!_props.range) {\n emit('update:modelValue', state.firstValue);\n emit('input', state.firstValue);\n _props.onInput?.(state.firstValue);\n }\n\n setTimeout(() => {\n state.showTooltip = false;\n }, 1500);\n }\n\n _props.onKeydown?.(event);\n };\n\n const handleMouseDown = (_event: MouseEvent) => {\n if (_props.disabled) return;\n state.dragging = true;\n state.showTooltip = true;\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n };\n\n const handleMouseMove = (event: MouseEvent) => {\n if (!state.dragging) return;\n\n const slider = document.querySelector('.lyt-slider');\n if (!slider) return;\n\n const rect = slider.getBoundingClientRect();\n let percent;\n\n if (_props.vertical) {\n percent = ((rect.bottom - event.clientY) / rect.height) * 100;\n } else {\n percent = ((event.clientX - rect.left) / rect.width) * 100;\n }\n\n percent = Math.max(0, Math.min(100, percent));\n const newValue = getValueByPercent(percent);\n\n if (_props.range) {\n const diff1 = Math.abs(newValue - state.firstValue);\n const diff2 = Math.abs(newValue - state.secondValue);\n\n if (diff1 < diff2) {\n state.firstValue = Math.min(newValue, state.secondValue);\n } else {\n state.secondValue = Math.max(newValue, state.firstValue);\n }\n\n const newModelValue = [state.firstValue, state.secondValue];\n emit('update:modelValue', newModelValue as any);\n emit('input', newModelValue as any);\n _props.onInput?.(newModelValue as any);\n } else {\n state.firstValue = newValue;\n emit('update:modelValue', state.firstValue);\n emit('input', state.firstValue);\n _props.onInput?.(state.firstValue);\n }\n };\n\n const handleMouseUp = () => {\n if (!state.dragging) return;\n state.dragging = false;\n state.showTooltip = false;\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n\n if (_props.range) {\n const newModelValue = [state.firstValue, state.secondValue];\n emit('change', newModelValue as any);\n _props.onChange?.(newModelValue as any);\n } else {\n emit('change', state.firstValue);\n _props.onChange?.(state.firstValue);\n }\n };\n\n const getSliderClass = () => {\n const classes = ['lyt-slider'];\n if (_props.vertical) classes.push('lyt-slider--vertical');\n if (_props.disabled) classes.push('lyt-slider--disabled');\n if (_props.class) classes.push(_props.class);\n return classes.join(' ');\n };\n\n const getSliderStyle = () => {\n const style: Record<string, string> = {};\n if (_props.vertical && _props.height) {\n style.height = _props.height;\n }\n if (_props.style) {\n if (isString(_props.style)) {\n return _props.style;\n }\n if (isObject(_props.style)) {\n Object.assign(style, _props.style);\n }\n }\n return style;\n };\n\n const getStops = () => {\n if (!_props.showStops) return [];\n\n const stops: VNode[] = [];\n const range = _props.max - _props.min;\n const stepCount = Math.floor(range / _props.step);\n\n for (let i = 0; i <= stepCount; i++) {\n const percent = (i / stepCount) * 100;\n stops.push(createVNode('div', {\n class: 'lyt-slider__stop',\n style: _props.vertical\n ? { bottom: `${percent}%` }\n : { left: `${percent}%` },\n }, []));\n }\n\n return stops;\n };\n\n return () => {\n const firstPct = firstPercent.value;\n const secondPct = secondPercent.value;\n const children: VNode[] = [];\n\n const runwayChildren: VNode[] = [];\n\n runwayChildren.push(createVNode('div', {\n class: 'lyt-slider__bar',\n style: _props.range\n ? (_props.vertical\n ? { bottom: `${firstPct}%`, height: `${secondPct - firstPct}%` }\n : { left: `${firstPct}%`, width: `${secondPct - firstPct}%` })\n : (_props.vertical\n ? { bottom: '0%', height: `${firstPct}%` }\n : { left: '0%', width: `${firstPct}%` }),\n }, []));\n\n const stops = getStops();\n runwayChildren.push(...stops);\n\n if (_props.range) {\n const tooltip1 = _props.showTooltip\n ? createVNode('div', { class: 'lyt-slider__tooltip' }, [createVNode('span', {}, formatValue(state.firstValue))])\n : null;\n const tooltip2 = _props.showTooltip\n ? createVNode('div', { class: 'lyt-slider__tooltip' }, [createVNode('span', {}, formatValue(state.secondValue))])\n : null;\n\n if (tooltip1) {\n runwayChildren.push(createVNode('div', mergeA11yProps(getSliderA11yProps({\n ariaLabel: _props.ariaLabel || 'Left value',\n disabled: _props.disabled,\n value: state.firstValue,\n min: _props.min,\n max: _props.max,\n }), {\n class: 'lyt-slider__button',\n style: _props.vertical\n ? { bottom: `${firstPct}%` }\n : { left: `${firstPct}%` },\n onKeydown: handleKeydown,\n }), [tooltip1]));\n }\n\n if (tooltip2) {\n runwayChildren.push(createVNode('div', mergeA11yProps(getSliderA11yProps({\n ariaLabel: 'Right value',\n disabled: _props.disabled,\n value: state.secondValue,\n min: _props.min,\n max: _props.max,\n }), {\n class: 'lyt-slider__button',\n style: _props.vertical\n ? { bottom: `${secondPct}%` }\n : { left: `${secondPct}%` },\n onKeydown: handleKeydown,\n }), [tooltip2]));\n }\n } else {\n const tooltip = _props.showTooltip\n ? createVNode('div', { class: 'lyt-slider__tooltip' }, [createVNode('span', {}, formatValue(state.firstValue))])\n : null;\n\n if (tooltip) {\n runwayChildren.push(createVNode('div', mergeA11yProps(getSliderA11yProps({\n ariaLabel: _props.ariaLabel || 'Value',\n ariaDescribedBy: _props.ariaDescribedBy,\n ariaRequired: _props.ariaRequired,\n ariaInvalid: _props.ariaInvalid,\n disabled: _props.disabled,\n tabIndex: _props.tabIndex,\n value: state.firstValue,\n min: _props.min,\n max: _props.max,\n }), {\n class: 'lyt-slider__button',\n style: _props.vertical\n ? { bottom: `${firstPct}%` }\n : { left: `${firstPct}%` },\n onKeydown: handleKeydown,\n }), [tooltip]));\n }\n }\n\n children.push(createVNode('div', {\n class: 'lyt-slider__runway',\n onMousedown: handleMouseDown,\n }, runwayChildren));\n\n if (_props.showInput && !_props.range) {\n children.push(createVNode('div', {\n class: 'lyt-slider__input',\n }, [\n createVNode('input', {\n type: 'number',\n class: `lyt-input lyt-input--${_props.inputSize}`,\n value: state.firstValue,\n min: _props.min,\n max: _props.max,\n step: _props.step,\n disabled: _props.disabled,\n onInput: (e: Event) => {\n const input = e.target as HTMLInputElement;\n const value = parseFloat(input.value);\n if (!isNaN(value)) {\n state.firstValue = Math.max(_props.min, Math.min(_props.max, value));\n emit('update:modelValue', state.firstValue);\n }\n },\n }),\n ]));\n }\n\n return createVNode('div', {\n class: getSliderClass(),\n style: getSliderStyle(),\n id: _props.id,\n onKeydown: handleKeydown,\n }, children);\n };\n },\n});\n\nexport type { SliderProps, SliderSlots };\n","/**\n * @lytjs/ui - Avatar 组件\n *\n * 头像组件,用于显示用户头像\n */\n\nimport type { AvatarProps, AvatarSlots, AvatarSetupProps } from './types';\nimport { defineComponent } from '@lytjs/component';\nimport { createVNode, type VNode } from '@lytjs/vdom';\nimport { isString, isObject } from '@lytjs/common-is';\nimport { signal } from '@lytjs/reactivity';\nimport { mergeA11yProps } from '@lytjs/common-a11y';\n\nexport const Avatar = defineComponent({\n name: 'LytAvatar',\n\n props: {\n size: { type: [Number, String] as any, default: 'default' },\n shape: { type: String, default: 'circle' },\n icon: { type: String, default: '' },\n src: { type: String, default: '' },\n srcSet: { type: String, default: '' },\n alt: { type: String, default: '' },\n fit: { type: String, default: 'cover' },\n class: { type: String, default: '' },\n style: { type: [String, Object] as any, default: '' },\n id: { type: String, default: '' },\n ariaLabel: { type: String, default: '' },\n ariaDescribedBy: { type: String, default: '' },\n onError: { type: Function, default: undefined },\n },\n\n setup(props: Record<string, unknown>, { slots }) {\n const _props = props as AvatarSetupProps;\n const isImageExist = signal(true);\n\n const getSize = () => {\n if (typeof _props.size === 'number') {\n return `${_props.size}px`;\n }\n const sizeMap: Record<string, string> = {\n small: '32px',\n default: '40px',\n large: '48px',\n };\n return sizeMap[_props.size] || '40px';\n };\n\n const handleError = () => {\n if (_props.onError) {\n const result = _props.onError();\n if (result === false) {\n return;\n }\n }\n isImageExist.set(false);\n };\n\n const getAvatarClass = () => {\n const classes = ['lyt-avatar'];\n if (_props.shape) classes.push(`lyt-avatar--${_props.shape}`);\n if (typeof _props.size === 'string') {\n classes.push(`lyt-avatar--${_props.size}`);\n }\n if (_props.class) classes.push(_props.class);\n return classes.join(' ');\n };\n\n const getAvatarStyle = () => {\n const style: Record<string, string> = {\n height: getSize(),\n width: getSize(),\n };\n if (_props.style) {\n if (isString(_props.style)) {\n return _props.style;\n }\n if (isObject(_props.style)) {\n Object.assign(style, _props.style);\n }\n }\n return style;\n };\n\n return () => {\n const children: VNode[] = [];\n\n if (_props.src && isImageExist()) {\n children.push(createVNode('img', {\n class: 'lyt-avatar__img',\n src: _props.src,\n srcset: _props.srcSet || undefined,\n alt: _props.alt || undefined,\n style: {\n objectFit: _props.fit,\n },\n onError: handleError,\n }, []));\n } else if (_props.icon) {\n children.push(createVNode('span', {\n class: ['lyt-avatar__icon', _props.icon],\n }, []));\n } else if (slots.default) {\n const slotContent = slots.default();\n if (Array.isArray(slotContent)) {\n children.push(...(slotContent as VNode[]));\n } else if (slotContent) {\n children.push(slotContent as VNode);\n }\n }\n\n return createVNode('span', mergeA11yProps({\n id: _props.id,\n 'aria-label': _props.ariaLabel,\n 'aria-describedby': _props.ariaDescribedBy,\n }, {\n class: getAvatarClass(),\n style: getAvatarStyle(),\n }), children);\n };\n },\n});\n\nexport type { AvatarProps, AvatarSlots };\n","/**\n * @lytjs/ui - Card 组件\n *\n * 卡片组件,用于包裹内容\n */\n\nimport type { CardProps, CardSlots, CardSetupProps } from './types';\nimport { defineComponent } from '@lytjs/component';\nimport { createVNode, type VNode } from '@lytjs/vdom';\nimport { isString, isObject } from '@lytjs/common-is';\nimport { mergeA11yProps } from '@lytjs/common-a11y';\n\nexport const Card = defineComponent({\n name: 'LytCard',\n\n props: {\n header: { type: String, default: '' },\n bodyStyle: { type: Object as any, default: () => ({}) },\n shadow: { type: String, default: 'always' },\n class: { type: String, default: '' },\n style: { type: [String, Object] as any, default: '' },\n id: { type: String, default: '' },\n ariaLabel: { type: String, default: '' },\n ariaDescribedBy: { type: String, default: '' },\n },\n\n setup(props: Record<string, unknown>, { slots }) {\n const _props = props as CardSetupProps;\n\n const getCardClass = () => {\n const classes = ['lyt-card'];\n if (_props.shadow) classes.push(`lyt-card--shadow-${_props.shadow}`);\n if (_props.class) classes.push(_props.class);\n return classes.join(' ');\n };\n\n const getCardStyle = () => {\n const style: Record<string, string> = {};\n if (_props.style) {\n if (isString(_props.style)) {\n return _props.style;\n }\n if (isObject(_props.style)) {\n Object.assign(style, _props.style);\n }\n }\n return style;\n };\n\n return () => {\n const children: VNode[] = [];\n\n if (_props.header || slots.header) {\n const headerContent: VNode[] = [];\n if (slots.header) {\n const slotContent = slots.header();\n if (Array.isArray(slotContent)) {\n headerContent.push(...(slotContent as VNode[]));\n } else if (slotContent) {\n headerContent.push(slotContent as VNode);\n }\n } else if (_props.header) {\n headerContent.push(createVNode('span', {}, _props.header));\n }\n children.push(createVNode('div', {\n class: 'lyt-card__header',\n }, headerContent));\n }\n\n const bodyContent: VNode[] = [];\n if (slots.default) {\n const slotContent = slots.default();\n if (Array.isArray(slotContent)) {\n bodyContent.push(...(slotContent as VNode[]));\n } else if (slotContent) {\n bodyContent.push(slotContent as VNode);\n }\n }\n children.push(createVNode('div', {\n class: 'lyt-card__body',\n style: _props.bodyStyle as any,\n }, bodyContent));\n\n return createVNode('div', mergeA11yProps({\n id: _props.id,\n 'aria-label': _props.ariaLabel,\n 'aria-describedby': _props.ariaDescribedBy,\n }, {\n class: getCardClass(),\n style: getCardStyle(),\n }), children);\n };\n },\n});\n\nexport type { CardProps, CardSlots };\n","/**\r\n * @lytjs/ui - Timeline 时间轴组件\r\n *\r\n * 时间轴组件,用于按时间顺序展示事件\r\n */\r\n\r\nimport type { TimelineProps, TimelineSlots, TimelineSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * Timeline 时间轴组件\r\n */\r\nexport const Timeline = defineComponent({\r\n name: 'LytTimeline',\r\n\r\n props: {\r\n reverse: { type: Boolean, default: false },\r\n mode: { type: String as () => 'left' | 'right' | 'alternate', default: 'left' },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as any, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }) {\r\n const _props = props as TimelineSetupProps;\r\n\r\n const getTimelineClass = () => {\r\n const classes = ['lyt-timeline'];\r\n if (_props.reverse) classes.push('lyt-timeline--reverse');\r\n if (_props.mode) classes.push(`lyt-timeline--${_props.mode}`);\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getTimelineStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n children.push(...(slotContent as VNode[]));\r\n }\r\n }\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n }, {\r\n class: getTimelineClass(),\r\n style: getTimelineStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { TimelineProps, TimelineSlots };\r\n","/**\r\n * @lytjs/ui - TimelineItem 时间轴项组件\r\n *\r\n * 时间轴项组件,与 Timeline 配合使用\r\n */\r\n\r\nimport type { TimelineItemProps, TimelineItemSlots, TimelineItemSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * TimelineItem 时间轴项组件\r\n */\r\nexport const TimelineItem = defineComponent({\r\n name: 'LytTimelineItem',\r\n\r\n props: {\r\n color: { type: String, default: '' },\r\n type: { type: String as () => 'primary' | 'success' | 'warning' | 'danger' | 'info', default: '' },\r\n size: { type: String as () => 'large' | 'default' | 'small', default: 'default' },\r\n dot: { type: [String, Object] as any, default: '' },\r\n timestamp: { type: String, default: '' },\r\n placement: { type: String as () => 'top' | 'bottom', default: 'bottom' },\r\n hideTimestamp: { type: Boolean, default: false },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as any, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }) {\r\n const _props = props as TimelineItemSetupProps;\r\n\r\n const getTimelineItemClass = () => {\r\n const classes = ['lyt-timeline-item'];\r\n if (_props.type) classes.push(`lyt-timeline-item--${_props.type}`);\r\n if (_props.size && _props.size !== 'default') classes.push(`lyt-timeline-item--${_props.size}`);\r\n if (_props.placement) classes.push(`lyt-timeline-item--${_props.placement}`);\r\n if (_props.hideTimestamp) classes.push('lyt-timeline-item--hide-timestamp');\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getTimelineItemStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.color) {\r\n style['--lyt-timeline-item-color'] = _props.color;\r\n }\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n const renderDot = () => {\r\n if (slots.dot) {\r\n const dotContent = slots.dot();\r\n if (Array.isArray(dotContent)) {\r\n return createVNode('div', { class: 'lyt-timeline-item__dot' }, dotContent as VNode[]);\r\n }\r\n }\r\n if (_props.dot) {\r\n if (typeof _props.dot === 'string') {\r\n return createVNode('div', { class: 'lyt-timeline-item__dot' }, [createTextVNode(_props.dot)]);\r\n }\r\n return createVNode('div', { class: 'lyt-timeline-item__dot' }, [_props.dot as VNode]);\r\n }\r\n return createVNode('div', { class: 'lyt-timeline-item__dot' }, null);\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n children.push(createVNode('div', { class: 'lyt-timeline-item__tail' }, null));\r\n children.push(renderDot());\r\n \r\n const wrapperChildren: VNode[] = [];\r\n \r\n if (_props.timestamp && !_props.hideTimestamp) {\r\n wrapperChildren.push(createVNode('div', { class: 'lyt-timeline-item__timestamp' }, [createTextVNode(_props.timestamp)]));\r\n }\r\n \r\n const contentChildren: VNode[] = [];\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n contentChildren.push(...(slotContent as VNode[]));\r\n }\r\n }\r\n wrapperChildren.push(createVNode('div', { class: 'lyt-timeline-item__content' }, contentChildren));\r\n \r\n children.push(createVNode('div', { class: 'lyt-timeline-item__wrapper' }, wrapperChildren));\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n }, {\r\n class: getTimelineItemClass(),\r\n style: getTimelineItemStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { TimelineItemProps, TimelineItemSlots };\r\n","/**\n * @lytjs/ui - Steps 步骤条组件\n *\n * 步骤条组件,用于引导用户按照流程完成任务\n */\n\nimport type { StepsProps, StepsSlots, StepsSetupProps } from './types';\nimport { defineComponent } from '@lytjs/component';\nimport { createVNode, type VNode } from '@lytjs/vdom';\nimport { isString, isObject } from '@lytjs/common-is';\nimport { mergeA11yProps } from '@lytjs/common-a11y';\n\n/**\n * Steps 步骤条组件\n */\nexport const Steps = defineComponent({\n name: 'LytSteps',\n\n props: {\n active: { type: Number, default: 0 },\n processStatus: { type: String as () => 'process' | 'finish' | 'error' | 'success', default: 'process' },\n finishStatus: { type: String as () => 'wait' | 'process' | 'finish' | 'error' | 'success', default: 'success' },\n direction: { type: String as () => 'horizontal' | 'vertical', default: 'horizontal' },\n alignCenter: { type: Boolean, default: false },\n simple: { type: Boolean, default: false },\n class: { type: String, default: '' },\n style: { type: [String, Object] as any, default: '' },\n id: { type: String, default: '' },\n ariaLabel: { type: String, default: '' },\n ariaDescribedBy: { type: String, default: '' },\n onChange: { type: Function, default: undefined },\n },\n\n setup(props: Record<string, unknown>, { slots }) {\n const _props = props as StepsSetupProps;\n\n const getStepsClass = () => {\n const classes = ['lyt-steps'];\n if (_props.direction) classes.push(`lyt-steps--${_props.direction}`);\n if (_props.simple) classes.push('lyt-steps--simple');\n if (_props.alignCenter) classes.push('lyt-steps--align-center');\n if (_props.class) classes.push(_props.class);\n return classes.join(' ');\n };\n\n const getStepsStyle = () => {\n const style: Record<string, string> = {};\n if (_props.style) {\n if (isString(_props.style)) {\n return _props.style;\n }\n if (isObject(_props.style)) {\n Object.assign(style, _props.style);\n }\n }\n return style;\n };\n\n return () => {\n const children: VNode[] = [];\n\n if (slots.default) {\n const slotContent = slots.default();\n if (Array.isArray(slotContent)) {\n children.push(...(slotContent as VNode[]));\n }\n }\n\n return createVNode('div', mergeA11yProps({\n id: _props.id,\n 'aria-label': _props.ariaLabel,\n 'aria-describedby': _props.ariaDescribedBy,\n role: 'navigation',\n }, {\n class: getStepsClass(),\n style: getStepsStyle(),\n }), children);\n };\n },\n});\n\nexport type { StepsProps, StepsSlots };\n","/**\r\n * @lytjs/ui - Step 步骤项组件\r\n *\r\n * 步骤项组件,与 Steps 配合使用\r\n */\r\n\r\nimport type { StepProps, StepSlots, StepSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * Step 步骤项组件\r\n */\r\nexport const Step = defineComponent({\r\n name: 'LytStep',\r\n\r\n props: {\r\n title: { type: String, default: '' },\r\n description: { type: String, default: '' },\r\n icon: { type: [String, Object] as any, default: '' },\r\n status: { type: String as () => 'wait' | 'process' | 'finish' | 'error' | 'success', default: '' },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as any, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }) {\r\n const _props = props as StepSetupProps;\r\n\r\n const getStepClass = () => {\r\n const classes = ['lyt-step'];\r\n if (_props.status) classes.push(`lyt-step--${_props.status}`);\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getStepStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n const renderIcon = () => {\r\n if (slots.icon) {\r\n const iconContent = slots.icon();\r\n if (Array.isArray(iconContent)) {\r\n return createVNode('div', { class: 'lyt-step__icon' }, iconContent as VNode[]);\r\n }\r\n }\r\n if (_props.icon) {\r\n if (typeof _props.icon === 'string') {\r\n return createVNode('div', { class: 'lyt-step__icon' }, [createTextVNode(_props.icon)]);\r\n }\r\n return createVNode('div', { class: 'lyt-step__icon' }, [_props.icon as VNode]);\r\n }\r\n return createVNode('div', { class: 'lyt-step__icon' }, null);\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n children.push(renderIcon());\r\n \r\n const contentChildren: VNode[] = [];\r\n \r\n if (slots.title || _props.title) {\r\n const titleChildren: VNode[] = [];\r\n if (slots.title) {\r\n const titleContent = slots.title();\r\n if (Array.isArray(titleContent)) {\r\n titleChildren.push(...(titleContent as VNode[]));\r\n }\r\n } else {\r\n titleChildren.push(createTextVNode(_props.title));\r\n }\r\n contentChildren.push(createVNode('div', { class: 'lyt-step__title' }, titleChildren));\r\n }\r\n \r\n if (slots.description || _props.description) {\r\n const descChildren: VNode[] = [];\r\n if (slots.description) {\r\n const descContent = slots.description();\r\n if (Array.isArray(descContent)) {\r\n descChildren.push(...(descContent as VNode[]));\r\n }\r\n } else {\r\n descChildren.push(createTextVNode(_props.description));\r\n }\r\n contentChildren.push(createVNode('div', { class: 'lyt-step__description' }, descChildren));\r\n }\r\n \r\n children.push(createVNode('div', { class: 'lyt-step__content' }, contentChildren));\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel || _props.title,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n }, {\r\n class: getStepClass(),\r\n style: getStepStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { StepProps, StepSlots };\r\n","/**\n * @lytjs/ui - Carousel 走马灯组件\n *\n * 走马灯组件,用于展示轮播内容\n */\n\nimport type { CarouselProps, CarouselSlots, CarouselSetupProps } from './types';\nimport { defineComponent } from '@lytjs/component';\nimport { createVNode, type VNode } from '@lytjs/vdom';\nimport { isString, isObject } from '@lytjs/common-is';\nimport { mergeA11yProps } from '@lytjs/common-a11y';\n\nexport const Carousel = defineComponent({\n name: 'LytCarousel',\n\n props: {\n initialIndex: { type: Number, default: 0 },\n height: { type: String, default: '300px' },\n trigger: { type: String as () => 'click' | 'hover', default: 'hover' },\n autoplay: { type: Boolean, default: true },\n interval: { type: Number, default: 3000 },\n indicatorPosition: { type: String as () => 'outside' | 'none', default: '' },\n arrow: { type: String as () => 'always' | 'hover' | 'never', default: 'hover' },\n type: { type: String as () => '' | 'card', default: '' },\n loop: { type: Boolean, default: true },\n direction: { type: String as () => 'horizontal' | 'vertical', default: 'horizontal' },\n class: { type: String, default: '' },\n style: { type: [String, Object] as any, default: '' },\n id: { type: String, default: '' },\n ariaLabel: { type: String, default: '' },\n ariaDescribedBy: { type: String, default: '' },\n onChange: { type: Function, default: undefined },\n },\n\n setup(props: Record<string, unknown>, { slots }) {\n const _props = props as CarouselSetupProps;\n\n return () => {\n const children: VNode[] = [];\n\n const containerChildren: VNode[] = [];\n if (slots.default) {\n const slotContent = slots.default();\n if (Array.isArray(slotContent)) {\n containerChildren.push(...(slotContent as VNode[]));\n } else if (slotContent) {\n containerChildren.push(slotContent as VNode);\n }\n }\n children.push(createVNode('div', { class: 'lyt-carousel__container' }, containerChildren));\n\n const getCarouselClass = () => {\n const classes = ['lyt-carousel'];\n if (_props.type) classes.push(`lyt-carousel--${_props.type}`);\n if (_props.direction) classes.push(`lyt-carousel--${_props.direction}`);\n if (_props.indicatorPosition) classes.push(`lyt-carousel--indicator-${_props.indicatorPosition}`);\n if (_props.class) classes.push(_props.class);\n return classes.join(' ');\n };\n\n const getCarouselStyle = () => {\n const style: Record<string, string> = {};\n if (_props.height) {\n style.height = _props.height;\n }\n if (_props.style) {\n if (isString(_props.style)) {\n return _props.style;\n }\n if (isObject(_props.style)) {\n Object.assign(style, _props.style);\n }\n }\n return style;\n };\n\n return createVNode('div', mergeA11yProps({\n id: _props.id,\n 'aria-label': _props.ariaLabel,\n 'aria-describedby': _props.ariaDescribedBy,\n role: 'region',\n }, {\n class: getCarouselClass(),\n style: getCarouselStyle(),\n }), children);\n };\n },\n});\n\nexport type { CarouselProps, CarouselSlots };\n","/**\n * @lytjs/ui - CarouselItem 走马灯项组件\n *\n * 走马灯项组件,与 Carousel 配合使用\n */\n\nimport type { CarouselItemProps, CarouselItemSlots, CarouselItemSetupProps } from './types';\nimport { defineComponent } from '@lytjs/component';\nimport { createVNode, type VNode } from '@lytjs/vdom';\nimport { isString, isObject } from '@lytjs/common-is';\nimport { mergeA11yProps } from '@lytjs/common-a11y';\n\n/**\n * CarouselItem 走马灯项组件\n */\nexport const CarouselItem = defineComponent({\n name: 'LytCarouselItem',\n\n props: {\n name: { type: [String, Number] as any, default: '' },\n label: { type: String, default: '' },\n class: { type: String, default: '' },\n style: { type: [String, Object] as any, default: '' },\n id: { type: String, default: '' },\n ariaLabel: { type: String, default: '' },\n ariaDescribedBy: { type: String, default: '' },\n },\n\n setup(props: Record<string, unknown>, { slots }) {\n const _props = props as CarouselItemSetupProps;\n\n const getCarouselItemClass = () => {\n const classes = ['lyt-carousel-item'];\n if (_props.class) classes.push(_props.class as string);\n return classes.join(' ');\n };\n\n const getCarouselItemStyle = () => {\n const style: Record<string, string> = {};\n if (_props.style) {\n if (isString(_props.style)) {\n return _props.style;\n }\n if (isObject(_props.style)) {\n Object.assign(style, _props.style);\n }\n }\n return style;\n };\n\n return () => {\n const children: VNode[] = [];\n\n if (slots.default) {\n const slotContent = slots.default();\n if (Array.isArray(slotContent)) {\n children.push(...(slotContent as VNode[]));\n } else if (slotContent) {\n children.push(slotContent as VNode);\n }\n }\n\n return createVNode('div', mergeA11yProps({\n id: _props.id as string,\n 'aria-label': (_props.ariaLabel as string) || (_props.label as string),\n 'aria-describedby': _props.ariaDescribedBy as string,\n }, {\n class: getCarouselItemClass(),\n style: getCarouselItemStyle(),\n }), children);\n };\n },\n});\n\nexport type { CarouselItemProps, CarouselItemSlots };\n","/**\n * @lytjs/ui - Popconfirm 气泡确认框组件\n *\n * 气泡确认框组件,用于操作确认\n */\n\nimport type { PopconfirmProps, PopconfirmSlots, PopconfirmSetupProps } from './types';\nimport { defineComponent } from '@lytjs/component';\nimport { createVNode, type VNode } from '@lytjs/vdom';\nimport { isString, isObject } from '@lytjs/common-is';\nimport { signal } from '@lytjs/reactivity';\nimport { getDialogA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\n\nexport const Popconfirm = defineComponent({\n name: 'LytPopconfirm',\n\n props: {\n title: { type: String, default: '' },\n confirmButtonText: { type: String, default: '确定' },\n cancelButtonText: { type: String, default: '取消' },\n confirmButtonType: { type: String, default: 'primary' },\n cancelButtonType: { type: String, default: '' },\n icon: { type: String, default: '' },\n iconColor: { type: String, default: '' },\n hideIcon: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n width: { type: Number, default: 0 },\n class: { type: String, default: '' },\n style: { type: [String, Object] as any, default: '' },\n id: { type: String, default: '' },\n ariaLabel: { type: String, default: '' },\n ariaDescribedBy: { type: String, default: '' },\n onConfirm: { type: Function, default: undefined },\n onCancel: { type: Function, default: undefined },\n },\n\n setup(props: Record<string, unknown>, { slots, emit }) {\n const _props = props as PopconfirmSetupProps;\n const visible = signal(false);\n\n const getPopconfirmClass = () => {\n const classes = ['lyt-popconfirm'];\n if (_props.class) classes.push(_props.class as string);\n return classes.join(' ');\n };\n\n const getPopconfirmStyle = () => {\n const style: Record<string, string> = {};\n if (_props.width) {\n style.width = `${_props.width}px`;\n }\n if (_props.style) {\n if (isString(_props.style)) {\n return _props.style;\n }\n if (isObject(_props.style)) {\n Object.assign(style, _props.style);\n }\n }\n return style;\n };\n\n const handleConfirm = () => {\n visible.set(false);\n emit('confirm');\n _props.onConfirm?.();\n };\n\n const handleCancel = () => {\n visible.set(false);\n emit('cancel');\n _props.onCancel?.();\n };\n\n return () => {\n const children: VNode[] = [];\n\n if (slots.reference) {\n const refContent = slots.reference();\n if (Array.isArray(refContent)) {\n children.push(createVNode('div', { class: 'lyt-popconfirm__reference' }, refContent as VNode[]));\n }\n }\n\n const popupChildren: VNode[] = [];\n\n const contentChildren: VNode[] = [];\n\n if (!_props.hideIcon) {\n const iconChildren: VNode[] = [];\n if (slots.icon) {\n const iconContent = slots.icon();\n if (Array.isArray(iconContent)) {\n iconChildren.push(...iconContent as VNode[]);\n }\n }\n contentChildren.push(createVNode('span', { class: 'lyt-popconfirm__icon' }, iconChildren));\n }\n\n const titleId = _props.id ? `${_props.id}-title` : undefined;\n if (slots.default || _props.title) {\n const titleChildren: VNode[] = [];\n if (slots.default) {\n const titleContent = slots.default();\n if (Array.isArray(titleContent)) {\n titleChildren.push(...titleContent as VNode[]);\n }\n } else {\n titleChildren.push(createVNode('span', {}, _props.title as string));\n }\n contentChildren.push(createVNode('span', {\n class: 'lyt-popconfirm__title',\n id: titleId,\n }, titleChildren));\n }\n\n popupChildren.push(createVNode('div', { class: 'lyt-popconfirm__content' }, contentChildren));\n\n const buttonChildren: VNode[] = [];\n const cancelBtnProps = getButtonA11yProps({ ariaLabel: _props.cancelButtonText as string });\n buttonChildren.push(createVNode('button', mergeA11yProps(cancelBtnProps, {\n class: 'lyt-button lyt-button--small',\n onClick: handleCancel,\n }), [createVNode('span', {}, _props.cancelButtonText as string)]));\n\n const confirmBtnProps = getButtonA11yProps({ ariaLabel: _props.confirmButtonText as string });\n buttonChildren.push(createVNode('button', mergeA11yProps(confirmBtnProps, {\n class: `lyt-button lyt-button--small lyt-button--${_props.confirmButtonType}`,\n onClick: handleConfirm,\n }), [createVNode('span', {}, _props.confirmButtonText as string)]));\n popupChildren.push(createVNode('div', { class: 'lyt-popconfirm__buttons' }, buttonChildren));\n\n const a11yProps = getDialogA11yProps({\n id: _props.id as string,\n ariaLabel: (_props.ariaLabel as string) || (_props.title as string),\n ariaDescribedBy: (_props.ariaDescribedBy as string) || titleId,\n labelledBy: titleId,\n modal: true,\n });\n\n children.push(createVNode('div', mergeA11yProps(a11yProps, { class: 'lyt-popconfirm__popup' }), popupChildren));\n\n return createVNode('div', {\n class: getPopconfirmClass(),\n style: getPopconfirmStyle(),\n }, children);\n };\n },\n});\n\nexport type { PopconfirmProps, PopconfirmSlots };\n","/**\r\n * @lytjs/ui - RichTextEditor 组件\r\n *\r\n * 轻量级富文本编辑器,使用原生 API 实现,零第三方依赖\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString } from '@lytjs/common-is';\r\nimport { signal } from '@lytjs/reactivity';\r\n\r\ntype FormatCommand =\r\n | 'bold'\r\n | 'italic'\r\n | 'underline'\r\n | 'strikeThrough'\r\n | 'justifyLeft'\r\n | 'justifyCenter'\r\n | 'justifyRight'\r\n | 'insertUnorderedList'\r\n | 'insertOrderedList'\r\n | 'indent'\r\n | 'outdent'\r\n | 'removeFormat';\r\n\r\nexport const RichTextEditor = defineComponent({\r\n name: 'LytRichTextEditor',\r\n\r\n props: {\r\n modelValue: { type: String, default: '' },\r\n placeholder: { type: String, default: '请输入内容' },\r\n disabled: { type: Boolean, default: false },\r\n readonly: { type: Boolean, default: false },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as any, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots, emit }) {\r\n const _props = props as {\r\n modelValue?: string;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n readonly?: boolean;\r\n class?: string;\r\n style?: string | Record<string, string>;\r\n onChange?: (value: string) => void;\r\n };\r\n\r\n const isFocused = signal(false);\r\n const editorRef = { current: null as HTMLElement | null };\r\n\r\n const execCommand = (command: FormatCommand) => {\r\n if (_props.disabled || _props.readonly) return;\r\n\r\n const selection = window.getSelection();\r\n if (!selection || selection.rangeCount === 0) return;\r\n\r\n document.execCommand(command, false);\r\n handleInput();\r\n };\r\n\r\n const handleInput = () => {\r\n if (_props.disabled || _props.readonly) return;\r\n const content = editorRef.current?.innerHTML || '';\r\n emit('update:modelValue', content);\r\n _props.onChange?.(content);\r\n };\r\n\r\n const getEditorClass = () => {\r\n const classes = ['lyt-rich-text-editor'];\r\n if (isFocused()) classes.push('is-focused');\r\n if (_props.disabled) classes.push('is-disabled');\r\n if (_props.readonly) classes.push('is-readonly');\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const toolbarItems: { command: FormatCommand; icon: string; title: string }[] = [\r\n { command: 'bold', icon: 'B', title: '粗体' },\r\n { command: 'italic', icon: 'I', title: '斜体' },\r\n { command: 'underline', icon: 'U', title: '下划线' },\r\n { command: 'strikeThrough', icon: 'S', title: '删除线' },\r\n { command: 'justifyLeft', icon: '◢', title: '左对齐' },\r\n { command: 'justifyCenter', icon: '◤', title: '居中' },\r\n { command: 'justifyRight', icon: '◣', title: '右对齐' },\r\n { command: 'insertUnorderedList', icon: '•', title: '无序列表' },\r\n { command: 'insertOrderedList', icon: '1.', title: '有序列表' },\r\n { command: 'indent', icon: '→|', title: '缩进' },\r\n { command: 'outdent', icon: '|←', title: '取消缩进' },\r\n { command: 'removeFormat', icon: '×', title: '清除格式' },\r\n ];\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n const toolbarChildren: VNode[] = toolbarItems.map(item => {\r\n const btn = createVNode('button', {\r\n type: 'button',\r\n class: 'lyt-rich-text-editor__toolbar-btn',\r\n title: item.title,\r\n disabled: _props.disabled || _props.readonly,\r\n onClick: () => execCommand(item.command),\r\n }, [createVNode('span', {}, item.icon)]);\r\n return btn;\r\n });\r\n\r\n children.push(createVNode('div', { class: 'lyt-rich-text-editor__toolbar' }, toolbarChildren));\r\n\r\n const editorContent = _props.modelValue || '';\r\n children.push(createVNode('div', {\r\n ref: editorRef,\r\n class: 'lyt-rich-text-editor__content',\r\n contentEditable: !_props.disabled && !_props.readonly,\r\n 'data-placeholder': _props.placeholder,\r\n onInput: handleInput,\r\n onFocus: () => isFocused.set(true),\r\n onBlur: () => isFocused.set(false),\r\n innerHTML: editorContent,\r\n }));\r\n\r\n if (slots.footer) {\r\n const footerContent = slots.footer();\r\n children.push(createVNode('div', { class: 'lyt-rich-text-editor__footer' }, footerContent as VNode[]));\r\n }\r\n\r\n const editorStyle: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n Object.assign(editorStyle, { cssText: _props.style });\r\n } else {\r\n Object.assign(editorStyle, _props.style);\r\n }\r\n }\r\n\r\n return createVNode('div', {\r\n class: getEditorClass(),\r\n style: editorStyle,\r\n }, children);\r\n };\r\n },\r\n});\r\n","/**\r\n * @lytjs/ui - 入口文件\r\n *\r\n * LytJS UI 组件库\r\n */\r\n\r\n// 导入样式\r\nimport './styles/index.css';\r\n\r\n// 组件导出\r\nexport { Button } from './components/Button';\r\nexport { Input } from './components/Input';\r\nexport { Dialog } from './components/Dialog';\r\nexport { Select } from './components/Select';\r\nexport { Tabs, TabPane } from './components/Tabs';\r\nexport { Table } from './components/Table';\r\nexport { Form, FormItem } from './components/Form';\r\nexport { Transition, TransitionGroup } from './components/Transition';\r\nexport { DatePicker } from './components/DatePicker';\r\nexport { Tree } from './components/Tree';\r\nexport { Menu } from './components/Menu';\r\nexport { Cascader } from './components/Cascader';\r\nexport { TreeSelect } from './components/TreeSelect';\r\nexport { Transfer } from './components/Transfer';\r\nexport { Descriptions, DescriptionsItem } from './components/Descriptions';\r\nexport { Modal } from './components/Modal';\r\nexport { Drawer } from './components/Drawer';\r\nexport { Upload } from './components/Upload';\r\nexport { Notification } from './components/Notification';\r\nexport { Calendar } from './components/Calendar';\r\nexport { Image } from './components/Image';\r\nexport { Rate } from './components/Rate';\r\nexport { ColorPicker } from './components/ColorPicker';\r\n\r\n// 新组件导出\r\nexport { Icon } from './components/Icon';\r\nexport { Badge } from './components/Badge';\r\nexport { Tag } from './components/Tag';\r\nexport { Spin } from './components/Spin';\r\nexport { Empty } from './components/Empty';\r\nexport { Link } from './components/Link';\r\nexport { Container } from './components/Container';\r\nexport { Divider } from './components/Divider';\r\nexport { Toast } from './components/Toast';\r\nexport { Alert } from './components/Alert';\r\nexport { Tooltip } from './components/Tooltip';\r\nexport { Checkbox } from './components/Checkbox';\r\nexport { CheckboxGroup } from './components/CheckboxGroup';\r\nexport { Radio } from './components/Radio';\r\nexport { RadioGroup } from './components/RadioGroup';\r\nexport { Switch } from './components/Switch';\r\nexport { InputNumber } from './components/InputNumber';\r\nexport { Progress } from './components/Progress';\r\nexport { Slider } from './components/Slider';\r\nexport { Avatar } from './components/Avatar';\r\nexport { Card } from './components/Card';\r\nexport { Timeline } from './components/Timeline';\r\nexport { TimelineItem } from './components/TimelineItem';\r\nexport { Steps } from './components/Steps';\r\nexport { Step } from './components/Step';\r\nexport { Carousel } from './components/Carousel';\r\nexport { CarouselItem } from './components/CarouselItem';\r\nexport { Popconfirm } from './components/Popconfirm';\r\nexport { RichTextEditor } from './components/RichTextEditor';\r\n\r\n// 类型导出\r\nexport type {\r\n ComponentSize,\r\n ComponentStatus,\r\n ButtonProps,\r\n ButtonSlots,\r\n InputProps,\r\n InputSlots,\r\n DialogProps,\r\n DialogSlots,\r\n DialogSetupProps,\r\n SelectProps,\r\n SelectSlots,\r\n SelectOption,\r\n SelectSetupProps,\r\n CascaderProps,\r\n CascaderSlots,\r\n CascaderOption,\r\n CascaderSetupProps,\r\n TabsProps,\r\n TabsSlots,\r\n TabPaneProps,\r\n TableProps,\r\n TableSlots,\r\n TableSetupProps,\r\n TableColumn,\r\n TableData,\r\n TableRowData,\r\n IconProps,\r\n IconSlots,\r\n BadgeProps,\r\n BadgeSlots,\r\n BadgeSetupProps,\r\n TagProps,\r\n TagSlots,\r\n TagSetupProps,\r\n SpinProps,\r\n SpinSlots,\r\n EmptyProps,\r\n EmptySlots,\r\n LinkProps,\r\n LinkSlots,\r\n ContainerProps,\r\n ContainerSlots,\r\n DividerProps,\r\n DividerSlots,\r\n ToastProps,\r\n ToastSlots,\r\n ToastSetupProps,\r\n AlertProps,\r\n AlertSlots,\r\n AlertType,\r\n AlertEffect,\r\n AlertSetupProps,\r\n TooltipProps,\r\n TooltipSlots,\r\n CheckboxProps,\r\n CheckboxSlots,\r\n CheckboxSetupProps,\r\n RadioProps,\r\n RadioSlots,\r\n RadioSetupProps,\r\n SwitchProps,\r\n SwitchSlots,\r\n SwitchSetupProps,\r\n InputNumberProps,\r\n InputNumberSlots,\r\n InputNumberSetupProps,\r\n CheckboxGroupProps,\r\n CheckboxGroupSlots,\r\n CheckboxGroupSetupProps,\r\n RadioGroupProps,\r\n RadioGroupSlots,\r\n RadioGroupSetupProps,\r\n ProgressProps,\r\n ProgressSlots,\r\n ProgressSetupProps,\r\n SliderProps,\r\n SliderSlots,\r\n SliderSetupProps,\r\n AvatarProps,\r\n AvatarSlots,\r\n AvatarSetupProps,\r\n CardProps,\r\n CardSlots,\r\n CardSetupProps,\r\n TimelineProps,\r\n TimelineSlots,\r\n TimelineSetupProps,\r\n TimelineItemProps,\r\n TimelineItemSlots,\r\n TimelineItemSetupProps,\r\n StepsProps,\r\n StepsSlots,\r\n StepsSetupProps,\r\n StepProps,\r\n StepSlots,\r\n StepSetupProps,\r\n CarouselProps,\r\n CarouselSlots,\r\n CarouselSetupProps,\r\n CarouselItemProps,\r\n CarouselItemSlots,\r\n CarouselItemSetupProps,\r\n PopconfirmProps,\r\n PopconfirmSlots,\r\n PopconfirmSetupProps,\r\n ImageProps,\r\n ImageSlots,\r\n ImageFit,\r\n NotificationProps,\r\n NotificationSlots,\r\n NotificationOptions,\r\n NotificationType,\r\n NotificationPosition,\r\n CalendarProps,\r\n CalendarSlots,\r\n CalendarEvent,\r\n CalendarView,\r\n ColorPickerProps,\r\n ColorPickerSlots,\r\n DescriptionsProps,\r\n DescriptionsSlots,\r\n DescriptionsItemProps,\r\n DescriptionsItemSlots,\r\n DescriptionsItemData,\r\n DrawerProps,\r\n DrawerSlots,\r\n DrawerDirection,\r\n RateProps,\r\n RateSlots,\r\n TransferProps,\r\n TransferSlots,\r\n TransferOption,\r\n TransferSetupProps,\r\n TreeProps,\r\n TreeSlots,\r\n TreeNode,\r\n TreeSetupProps,\r\n TreeSelectProps,\r\n TreeSelectSlots,\r\n TreeSelectNode,\r\n TreeSelectSetupProps,\r\n UploadProps,\r\n UploadSlots,\r\n UploadFile,\r\n UploadFileStatus,\r\n UploadSetupProps,\r\n DatePickerProps,\r\n DatePickerSlots,\r\n DatePickerType,\r\n DatePickerShortcut,\r\n DatePickerSetupProps,\r\n FormProps,\r\n FormSlots,\r\n FormRule,\r\n FormRules,\r\n FormSetupProps,\r\n FormItemProps,\r\n FormItemSlots,\r\n FormItemSetupProps,\r\n FormValidateStatus,\r\n MenuProps,\r\n MenuSlots,\r\n MenuItem,\r\n MenuSetupProps,\r\n RichTextEditorProps,\r\n RichTextEditorSlots,\r\n RichTextEditorSetupProps,\r\n} from './components/types';\r\n\r\n// 组件安装\r\nimport type { AppContext } from '@lytjs/component';\r\nimport { Button } from './components/Button';\r\nimport { Input } from './components/Input';\r\nimport { Dialog } from './components/Dialog';\r\nimport { Select } from './components/Select';\r\nimport { Tabs, TabPane } from './components/Tabs';\r\nimport { Table } from './components/Table';\r\nimport { Form, FormItem } from './components/Form';\r\nimport { Transition, TransitionGroup } from './components/Transition';\r\nimport { DatePicker } from './components/DatePicker';\r\nimport { Tree } from './components/Tree';\r\nimport { Menu } from './components/Menu';\r\nimport { Cascader } from './components/Cascader';\r\nimport { TreeSelect } from './components/TreeSelect';\r\nimport { Transfer } from './components/Transfer';\r\nimport { Descriptions, DescriptionsItem } from './components/Descriptions';\r\nimport { Modal } from './components/Modal';\r\nimport { Drawer } from './components/Drawer';\r\nimport { Upload } from './components/Upload';\r\nimport { Notification } from './components/Notification';\r\nimport { Calendar } from './components/Calendar';\r\nimport { Image } from './components/Image';\r\nimport { Rate } from './components/Rate';\r\nimport { ColorPicker } from './components/ColorPicker';\r\nimport { Icon } from './components/Icon';\r\nimport { Badge } from './components/Badge';\r\nimport { Tag } from './components/Tag';\r\nimport { Spin } from './components/Spin';\r\nimport { Empty } from './components/Empty';\r\nimport { Link } from './components/Link';\r\nimport { Container } from './components/Container';\r\nimport { Divider } from './components/Divider';\r\nimport { Toast } from './components/Toast';\r\nimport { Alert } from './components/Alert';\r\nimport { Tooltip } from './components/Tooltip';\r\nimport { Checkbox } from './components/Checkbox';\r\nimport { CheckboxGroup } from './components/CheckboxGroup';\r\nimport { Radio } from './components/Radio';\r\nimport { RadioGroup } from './components/RadioGroup';\r\nimport { Switch } from './components/Switch';\r\nimport { InputNumber } from './components/InputNumber';\r\nimport { Progress } from './components/Progress';\r\nimport { Slider } from './components/Slider';\r\nimport { Avatar } from './components/Avatar';\r\nimport { Card } from './components/Card';\r\n\r\n/**\r\n * 安装所有组件\r\n */\r\nexport function install(app: AppContext): void {\r\n app.components['LytButton'] = Button;\r\n app.components['LytInput'] = Input;\r\n app.components['LytDialog'] = Dialog;\r\n app.components['LytSelect'] = Select;\r\n app.components['LytTabs'] = Tabs;\r\n app.components['LytTabPane'] = TabPane;\r\n app.components['LytTable'] = Table;\r\n app.components['LytForm'] = Form;\r\n app.components['LytFormItem'] = FormItem;\r\n app.components['LytTransition'] = Transition;\r\n app.components['LytTransitionGroup'] = TransitionGroup;\r\n app.components['LytDatePicker'] = DatePicker;\r\n app.components['LytTree'] = Tree;\r\n app.components['LytMenu'] = Menu;\r\n app.components['LytCascader'] = Cascader;\r\n app.components['LytTreeSelect'] = TreeSelect;\r\n app.components['LytTransfer'] = Transfer;\r\n app.components['LytDescriptions'] = Descriptions;\r\n app.components['LytDescriptionsItem'] = DescriptionsItem;\r\n app.components['LytModal'] = Modal;\r\n app.components['LytDrawer'] = Drawer;\r\n app.components['LytUpload'] = Upload;\r\n app.components['LytNotification'] = Notification;\r\n app.components['LytCalendar'] = Calendar;\r\n app.components['LytImage'] = Image;\r\n app.components['LytRate'] = Rate;\r\n app.components['LytColorPicker'] = ColorPicker;\r\n // 新组件\r\n app.components['LytIcon'] = Icon;\r\n app.components['LytBadge'] = Badge;\r\n app.components['LytTag'] = Tag;\r\n app.components['LytSpin'] = Spin;\r\n app.components['LytEmpty'] = Empty;\r\n app.components['LytLink'] = Link;\r\n app.components['LytContainer'] = Container;\r\n app.components['LytDivider'] = Divider;\r\n app.components['LytToast'] = Toast;\r\n app.components['LytAlert'] = Alert;\r\n app.components['LytTooltip'] = Tooltip;\r\n app.components['LytCheckbox'] = Checkbox;\r\n app.components['LytCheckboxGroup'] = CheckboxGroup;\r\n app.components['LytRadio'] = Radio;\r\n app.components['LytRadioGroup'] = RadioGroup;\r\n app.components['LytSwitch'] = Switch;\r\n app.components['LytInputNumber'] = InputNumber;\r\n app.components['LytProgress'] = Progress;\r\n app.components['LytSlider'] = Slider;\r\n app.components['LytAvatar'] = Avatar;\r\n app.components['LytCard'] = Card;\r\n}\r\n\r\nexport default {\r\n install,\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Button.ts","../src/components/Input.ts","../src/components/Dialog.ts","../src/components/Select.ts","../src/components/Tabs.ts","../src/components/Table.ts","../src/components/Form.ts","../src/components/Transition.ts","../src/components/DatePicker.ts","../src/components/Tree.ts","../src/components/Menu.ts","../src/components/Cascader.ts","../src/components/TreeSelect.ts","../src/components/Transfer.ts","../src/components/Descriptions.ts","../src/components/Modal.ts","../src/components/Drawer.ts","../src/components/Upload.ts","../src/components/Notification.ts","../src/components/Calendar.ts","../src/components/Image.ts","../src/components/Rate.ts","../src/components/ColorPicker.ts","../src/components/Icon.ts","../src/components/Badge.ts","../src/components/Tag.ts","../src/components/Spin.ts","../src/components/Empty.ts","../src/components/Link.ts","../src/components/Container.ts","../src/components/Divider.ts","../src/components/Toast.ts","../src/components/Alert.ts","../src/components/Tooltip.ts","../src/components/Checkbox.ts","../src/components/CheckboxGroup.ts","../src/components/Radio.ts","../src/components/RadioGroup.ts","../src/components/Switch.ts","../src/components/InputNumber.ts","../src/components/Progress.ts","../src/components/Slider.ts","../src/components/Avatar.ts","../src/components/Card.ts","../src/components/Timeline.ts","../src/components/TimelineItem.ts","../src/components/Steps.ts","../src/components/Step.ts","../src/components/Carousel.ts","../src/components/CarouselItem.ts","../src/components/Popconfirm.ts","../src/components/RichTextEditor.ts","../src/index.ts"],"names":["defineComponent","isString","isObject","createVNode","mergeA11yProps","getButtonA11yProps","signal","createTextVNode","FOCUSABLE_SELECTORS","effect","p","panelId","getInputControlA11yProps","getComboboxA11yProps","getDialogA11yProps","getDaysInMonth","getFirstDayOfMonth","isSameDay","reactive","watch","computed","getGroupA11yProps","isArray"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\r\n * @lytjs/ui - Button 组件\r\n *\r\n * 基础按钮组件,支持多种类型、尺寸和状态\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { ButtonSetupProps, ButtonSlots } from './types';\r\n\r\nexport const Button = defineComponent({\r\n name: 'LytButton',\r\n\r\n props: {\r\n type: { type: String, default: 'default' },\r\n size: { type: String, default: 'medium' },\r\n disabled: { type: Boolean, default: false },\r\n loading: { type: Boolean, default: false },\r\n plain: { type: Boolean, default: false },\r\n round: { type: Boolean, default: false },\r\n circle: { type: Boolean, default: false },\r\n nativeType: { type: String, default: 'button' },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n tabIndex: { type: Number, default: undefined },\r\n onClick: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: ButtonSlots }) {\r\n const p = props as ButtonSetupProps;\r\n \r\n const handleClick = (event: MouseEvent) => {\r\n if (p.disabled || p.loading) {\r\n event.preventDefault();\r\n return;\r\n }\r\n p.onClick?.(event);\r\n };\r\n\r\n const handleKeydown = (event: KeyboardEvent) => {\r\n if (p.disabled || p.loading) {\r\n return;\r\n }\r\n \r\n // 支持Enter和Space键触发按钮\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n handleClick(event as unknown as MouseEvent);\r\n }\r\n \r\n p.onKeydown?.(event);\r\n };\r\n\r\n const getButtonClass = () => {\r\n const classes = ['lyt-button'];\r\n if (p.type !== 'default') classes.push(`lyt-button--${p.type}`);\r\n if (p.size !== 'medium') classes.push(`lyt-button--${p.size}`);\r\n if (p.plain) classes.push('lyt-button--plain');\r\n if (p.round) classes.push('lyt-button--round');\r\n if (p.circle) classes.push('lyt-button--circle');\r\n if (p.disabled) classes.push('lyt-button--disabled');\r\n if (p.loading) classes.push('lyt-button--loading');\r\n if (p.class) classes.push(p.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getButtonStyle = () => {\r\n if (!p.style) return undefined;\r\n if (isString(p.style)) return p.style;\r\n if (isObject(p.style)) {\r\n return Object.entries(p.style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n }\r\n return undefined;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n if (p.loading) {\r\n children.push(\r\n createVNode('span', { class: 'lyt-button__loading' }, [\r\n createVNode('svg', { class: 'lyt-button__loading-icon', viewBox: '0 0 1024 1024' }, [\r\n createVNode('path', {\r\n d: 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z',\r\n fill: 'currentColor',\r\n }),\r\n ]),\r\n ]),\r\n );\r\n }\r\n\r\n if (slots.default) {\r\n children.push(createVNode('span', { class: 'lyt-button__text' }, slots.default()));\r\n }\r\n\r\n const isDisabled = p.disabled || p.loading;\r\n const a11yProps = getButtonA11yProps({\r\n ariaLabel: p.ariaLabel,\r\n ariaDescribedBy: p.ariaDescribedBy,\r\n disabled: isDisabled,\r\n tabIndex: p.tabIndex,\r\n });\r\n\r\n return createVNode(\r\n 'button',\r\n mergeA11yProps(a11yProps, {\r\n class: getButtonClass(),\r\n style: getButtonStyle(),\r\n type: p.nativeType,\r\n disabled: isDisabled,\r\n onClick: handleClick,\r\n onKeydown: handleKeydown,\r\n }),\r\n children,\r\n );\r\n };\r\n },\r\n});\r\n\r\nexport type { ButtonProps, ButtonSlots, ButtonSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Input 组件\r\n *\r\n * 基础输入框组件,支持多种类型和状态\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { getFormControlA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { InputSetupProps } from './types';\r\n\r\nexport const Input = defineComponent({\r\n name: 'LytInput',\r\n\r\n props: {\r\n modelValue: { type: [String, Number] as unknown as StringConstructor, default: '' },\r\n type: { type: String, default: 'text' },\r\n placeholder: { type: String, default: '' },\r\n disabled: { type: Boolean, default: false },\r\n readonly: { type: Boolean, default: false },\r\n clearable: { type: Boolean, default: false },\r\n showPassword: { type: Boolean, default: false },\r\n maxlength: { type: Number, default: undefined },\r\n minlength: { type: Number, default: undefined },\r\n size: { type: String, default: 'medium' },\r\n prefixIcon: { type: String, default: '' },\r\n suffixIcon: { type: String, default: '' },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaInvalid: { type: Boolean, default: false },\r\n ariaRequired: { type: Boolean, default: false },\r\n autocomplete: { type: String, default: '' },\r\n name: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n tabIndex: { type: Number, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as InputSetupProps;\r\n const passwordVisible = signal(false);\r\n const isFocused = signal(false);\r\n\r\n const getInputClass = () => {\r\n const classes = ['lyt-input'];\r\n if (p.size !== 'medium') classes.push(`lyt-input--${p.size}`);\r\n if (p.disabled) classes.push('lyt-input--disabled');\r\n if (isFocused()) classes.push('lyt-input--focused');\r\n if (p.class) classes.push(p.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getInputStyle = () => {\r\n if (!p.style) return undefined;\r\n if (isString(p.style)) return p.style;\r\n if (isObject(p.style)) {\r\n return Object.entries(p.style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n }\r\n return undefined;\r\n };\r\n\r\n const getInputType = () => {\r\n if (p.type === 'password' && p.showPassword) {\r\n return passwordVisible() ? 'text' : 'password';\r\n }\r\n return p.type;\r\n };\r\n\r\n const handleInput = (e: Event) => {\r\n const target = e.target as HTMLInputElement;\r\n p.onInput?.(target.value);\r\n };\r\n\r\n const handleChange = (e: Event) => {\r\n const target = e.target as HTMLInputElement;\r\n p.onChange?.(target.value);\r\n };\r\n\r\n const handleFocus = (e: FocusEvent) => {\r\n isFocused.set(true);\r\n p.onFocus?.(e);\r\n };\r\n\r\n const handleBlur = (e: FocusEvent) => {\r\n isFocused.set(false);\r\n p.onBlur?.(e);\r\n };\r\n\r\n const handleClear = () => {\r\n p.onClear?.();\r\n p.onInput?.('');\r\n p.onChange?.('');\r\n };\r\n\r\n const togglePasswordVisibility = () => {\r\n passwordVisible.set(!passwordVisible());\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n // 前缀图标\r\n if (p.prefixIcon) {\r\n children.push(\r\n createVNode('span', { class: 'lyt-input__prefix' }, [\r\n createVNode('i', { class: p.prefixIcon }, [])\r\n ])\r\n );\r\n }\r\n\r\n // 输入框\r\n const a11yProps = getFormControlA11yProps({\r\n id: p.id,\r\n ariaLabel: p.ariaLabel,\r\n ariaDescribedBy: p.ariaDescribedBy,\r\n ariaInvalid: p.ariaInvalid,\r\n ariaRequired: p.ariaRequired,\r\n disabled: p.disabled,\r\n tabIndex: p.tabIndex,\r\n });\r\n const inputProps = mergeA11yProps(a11yProps, {\r\n class: 'lyt-input__inner',\r\n style: getInputStyle(),\r\n type: getInputType(),\r\n value: p.modelValue,\r\n placeholder: p.placeholder,\r\n disabled: p.disabled,\r\n readonly: p.readonly,\r\n maxlength: p.maxlength,\r\n minlength: p.minlength,\r\n 'aria-readonly': p.readonly,\r\n autocomplete: p.autocomplete,\r\n name: p.name,\r\n onInput: handleInput,\r\n onChange: handleChange,\r\n onFocus: handleFocus,\r\n onBlur: handleBlur,\r\n });\r\n children.push(createVNode('input', inputProps, []));\r\n\r\n // 后缀图标或清除按钮\r\n const suffixChildren: VNode[] = [];\r\n \r\n // 清除按钮\r\n if (p.clearable && p.modelValue) {\r\n const clearBtnProps = getButtonA11yProps({\r\n ariaLabel: 'Clear input',\r\n });\r\n suffixChildren.push(\r\n createVNode('span', mergeA11yProps(clearBtnProps, {\r\n class: 'lyt-input__clear', \r\n onClick: handleClear \r\n }), [createTextVNode('×')])\r\n );\r\n }\r\n \r\n // 密码显示切换按钮\r\n if (p.type === 'password' && p.showPassword) {\r\n const toggleBtnProps = getButtonA11yProps({\r\n ariaLabel: passwordVisible() ? 'Hide password' : 'Show password',\r\n });\r\n suffixChildren.push(\r\n createVNode('span', mergeA11yProps(toggleBtnProps, {\r\n class: 'lyt-input__password', \r\n onClick: togglePasswordVisibility \r\n }), [createTextVNode(passwordVisible() ? '🙈' : '👁️')])\r\n );\r\n }\r\n \r\n // 后缀图标\r\n if (p.suffixIcon) {\r\n suffixChildren.push(\r\n createVNode('i', { class: p.suffixIcon }, [])\r\n );\r\n }\r\n \r\n if (suffixChildren.length > 0) {\r\n children.push(\r\n createVNode('span', { class: 'lyt-input__suffix' }, suffixChildren)\r\n );\r\n }\r\n\r\n return createVNode('div', { class: getInputClass() }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { InputProps, InputSlots, InputSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Dialog 组件(增强版)\r\n *\r\n * 对话框组件,增强 Accessibility 支持\r\n * - 焦点陷阱(Focus Trap)\r\n * - 焦点管理(打开聚焦,关闭返回)\r\n * - ESC 键关闭支持\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal, watch, effect } from '@lytjs/reactivity';\r\nimport { getDialogA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { DialogSetupProps, DialogSlots } from './types';\r\n\r\nconst FOCUSABLE_SELECTORS = [\r\n 'a[href]',\r\n 'button:not([disabled])',\r\n 'input:not([disabled])',\r\n 'select:not([disabled])',\r\n 'textarea:not([disabled])',\r\n '[tabindex]:not([tabindex=\"-1\"])',\r\n].join(', ');\r\n\r\nexport const Dialog = defineComponent({\r\n name: 'LytDialog',\r\n\r\n props: {\r\n modelValue: { type: Boolean, default: false },\r\n title: { type: String, default: '' },\r\n width: { type: [String, Number] as unknown as StringConstructor, default: '50%' },\r\n showClose: { type: Boolean, default: true },\r\n closeOnClickModal: { type: Boolean, default: true },\r\n closeOnPressEscape: { type: Boolean, default: true },\r\n lockScroll: { type: Boolean, default: true },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaModal: { type: Boolean, default: true },\r\n initialFocus: { type: [String, Object] as unknown as StringConstructor, default: undefined },\r\n returnFocusOnClose: { type: Boolean, default: true },\r\n onBeforeOpen: { type: Function, default: undefined },\r\n onBeforeClose: { type: Function, default: undefined },\r\n onOpen: { type: Function, default: undefined },\r\n onClose: { type: Function, default: undefined },\r\n onConfirm: { type: Function, default: undefined },\r\n onCancel: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: DialogSlots }) {\r\n const p = props as DialogSetupProps;\r\n const visible = signal(p.modelValue);\r\n const dialogRef = signal<HTMLElement | null>(null);\r\n const previousActiveElement = signal<HTMLElement | null>(null);\r\n\r\n watch(() => p.modelValue, (newVal) => {\r\n visible.set(newVal);\r\n if (newVal) {\r\n p.onOpen?.();\r\n }\r\n });\r\n\r\n const handleClose = async () => {\r\n if (p.onBeforeClose) {\r\n const result = await p.onBeforeClose();\r\n if (result === false) return;\r\n }\r\n visible.set(false);\r\n p.onClose?.();\r\n\r\n if (p.returnFocusOnClose) {\r\n const prevEl = previousActiveElement();\r\n if (prevEl && prevEl.focus) {\r\n prevEl.focus();\r\n }\r\n }\r\n };\r\n\r\n const handleKeydown = (e: KeyboardEvent) => {\r\n if (p.closeOnPressEscape && e.key === 'Escape') {\r\n e.preventDefault();\r\n handleClose();\r\n }\r\n p.onKeydown?.(e);\r\n };\r\n\r\n const getFocusableElements = (container: HTMLElement): HTMLElement[] => {\r\n return Array.from(\r\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTORS)\r\n ).filter(el => {\r\n return el.offsetParent !== null && !el.hasAttribute('aria-hidden');\r\n });\r\n };\r\n\r\n const handleTabKey = (e: KeyboardEvent) => {\r\n const dialog = dialogRef();\r\n if (!dialog) return;\r\n\r\n const focusableElements = getFocusableElements(dialog);\r\n if (focusableElements.length === 0) return;\r\n\r\n const firstElement = focusableElements[0]!;\r\n const lastElement = focusableElements[focusableElements.length - 1]!;\r\n\r\n if (e.shiftKey) {\r\n if (document.activeElement === firstElement) {\r\n e.preventDefault();\r\n lastElement.focus();\r\n }\r\n } else {\r\n if (document.activeElement === lastElement) {\r\n e.preventDefault();\r\n firstElement.focus();\r\n }\r\n }\r\n };\r\n\r\n effect(() => {\r\n if (visible()) {\r\n previousActiveElement.set(document.activeElement as HTMLElement);\r\n\r\n setTimeout(() => {\r\n const dialog = dialogRef();\r\n if (dialog) {\r\n if (p.initialFocus) {\r\n const initialEl = typeof p.initialFocus === 'string'\r\n ? dialog.querySelector<HTMLElement>(p.initialFocus)\r\n : p.initialFocus as HTMLElement;\r\n if (initialEl && initialEl.focus) {\r\n initialEl.focus();\r\n } else {\r\n const focusableElements = getFocusableElements(dialog);\r\n if (focusableElements.length > 0) {\r\n (focusableElements[0] as HTMLElement).focus();\r\n }\r\n }\r\n } else {\r\n const focusableElements = getFocusableElements(dialog);\r\n if (focusableElements.length > 0) {\r\n (focusableElements[0] as HTMLElement).focus();\r\n }\r\n }\r\n }\r\n }, 0);\r\n }\r\n });\r\n\r\n return () => {\r\n if (!visible()) {\r\n return createVNode('div', { style: 'display: none;' }, []);\r\n }\r\n\r\n const children: VNode[] = [];\r\n\r\n if (slots.header) {\r\n children.push(createVNode('div', {\r\n class: 'lyt-dialog__header',\r\n id: p.id ? `${p.id}-header` : undefined,\r\n }, slots.header()));\r\n } else if (p.title) {\r\n const headerChildren: VNode[] = [];\r\n headerChildren.push(createVNode('span', {\r\n class: 'lyt-dialog__title',\r\n id: p.id ? `${p.id}-title` : undefined,\r\n }, [createTextVNode(p.title)]));\r\n if (p.showClose) {\r\n const closeBtnProps = getButtonA11yProps({\r\n ariaLabel: 'Close dialog',\r\n });\r\n headerChildren.push(createVNode('button', mergeA11yProps(closeBtnProps, {\r\n class: 'lyt-dialog__close',\r\n onClick: handleClose,\r\n }), [createTextVNode('×')]));\r\n }\r\n children.push(createVNode('div', {\r\n class: 'lyt-dialog__header',\r\n id: p.id ? `${p.id}-header` : undefined,\r\n }, headerChildren));\r\n }\r\n\r\n if (slots.default) {\r\n children.push(createVNode('div', {\r\n class: 'lyt-dialog__body',\r\n id: p.id ? `${p.id}-body` : undefined,\r\n }, slots.default()));\r\n }\r\n\r\n if (slots.footer) {\r\n children.push(createVNode('div', {\r\n class: 'lyt-dialog__footer',\r\n id: p.id ? `${p.id}-footer` : undefined,\r\n }, slots.footer()));\r\n }\r\n\r\n const dialogClass = [\r\n 'lyt-dialog',\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const dialogStyle = `width: ${typeof p.width === 'number' ? `${p.width}px` : p.width}`;\r\n\r\n const dialogA11yProps = getDialogA11yProps({\r\n id: p.id,\r\n ariaLabel: p.ariaLabel || p.title,\r\n ariaDescribedBy: p.ariaDescribedBy || (p.id ? `${p.id}-body` : undefined),\r\n labelledBy: p.title && p.id ? `${p.id}-title` : undefined,\r\n modal: p.ariaModal,\r\n });\r\n\r\n return createVNode('div', {\r\n class: 'lyt-dialog__wrapper',\r\n onKeydown: (e: KeyboardEvent) => {\r\n if (e.key === 'Tab') {\r\n handleTabKey(e);\r\n }\r\n handleKeydown(e);\r\n },\r\n ref: (el: HTMLElement | null) => {\r\n dialogRef.set(el);\r\n },\r\n }, [\r\n createVNode('div', {\r\n class: 'lyt-dialog__overlay',\r\n 'aria-hidden': true,\r\n onClick: p.closeOnClickModal ? handleClose : undefined,\r\n }),\r\n createVNode('div', mergeA11yProps(dialogA11yProps, {\r\n class: dialogClass,\r\n style: dialogStyle,\r\n role: 'dialog',\r\n 'aria-modal': p.ariaModal,\r\n }), children),\r\n ]);\r\n };\r\n },\r\n});\r\n\r\nexport type { DialogProps, DialogSlots } from './types';\r\n","/**\r\n * @lytjs/ui - Select 组件(增强版)\r\n *\r\n * 选择器组件,支持单选、多选、搜索等功能\r\n * 增强 Accessibility 支持:\r\n * - 焦点管理(打开聚焦到下拉框,关闭返回)\r\n * - 焦点陷阱(Tab 键循环)\r\n * - 屏幕阅读器支持(Live regions)\r\n * - aria-activedescendant 支持\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal, effect } from '@lytjs/reactivity';\r\nimport { getComboboxA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { SelectOption, SelectSetupProps } from './types';\r\n\r\nconst FOCUSABLE_SELECTORS = [\r\n 'a[href]',\r\n 'button:not([disabled])',\r\n 'input:not([disabled])',\r\n 'select:not([disabled])',\r\n 'textarea:not([disabled])',\r\n '[tabindex]:not([tabindex=\"-1\"])',\r\n].join(', ');\r\n\r\nexport const Select = defineComponent({\r\n name: 'LytSelect',\r\n\r\n props: {\r\n modelValue: { type: [String, Number, Array] as unknown as StringConstructor, default: '' },\r\n options: { type: Array, default: (): SelectOption[] => [] },\r\n placeholder: { type: String, default: '请选择' },\r\n disabled: { type: Boolean, default: false },\r\n clearable: { type: Boolean, default: false },\r\n multiple: { type: Boolean, default: false },\r\n size: { type: String, default: 'medium' },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaInvalid: { type: Boolean, default: false },\r\n ariaRequired: { type: Boolean, default: false },\r\n tabIndex: { type: Number, default: undefined },\r\n closeOnSelect: { type: Boolean, default: true },\r\n filterable: { type: Boolean, default: false },\r\n onChange: { type: Function, default: undefined },\r\n onClear: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n onVisibleChange: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as SelectSetupProps;\r\n const isOpen = signal(false);\r\n const selectedValue = signal<Set<string | number>>(new Set());\r\n const searchValue = signal('');\r\n const highlightedIndex = signal(-1);\r\n const triggerRef = signal<HTMLElement | null>(null);\r\n const dropdownRef = signal<HTMLElement | null>(null);\r\n const previousActiveElement = signal<HTMLElement | null>(null);\r\n const listboxId = signal(`lyt-select-listbox-${Math.random().toString(36).substr(2, 9)}`);\r\n const activeDescendant = signal('');\r\n\r\n effect(() => {\r\n if (Array.isArray(p.modelValue)) {\r\n selectedValue.set(new Set(p.modelValue));\r\n } else if (p.modelValue !== '' && p.modelValue !== null && p.modelValue !== undefined) {\r\n selectedValue.set(new Set([p.modelValue]));\r\n }\r\n });\r\n\r\n const getFilteredOptions = () => {\r\n const opts = p.options || [];\r\n const query = searchValue();\r\n if (!p.filterable || !query) return opts;\r\n const lowerQuery = query.toLowerCase();\r\n return opts.filter(opt => \r\n opt.label.toLowerCase().includes(lowerQuery)\r\n );\r\n };\r\n\r\n const getEnabledOptions = () => {\r\n return getFilteredOptions().filter(opt => !opt.disabled);\r\n };\r\n\r\n const getFocusableElements = (container: HTMLElement): HTMLElement[] => {\r\n return Array.from(\r\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTORS)\r\n ).filter(el => {\r\n return el.offsetParent !== null && !el.hasAttribute('aria-hidden');\r\n });\r\n };\r\n\r\n const toggleDropdown = () => {\r\n if (p.disabled) return;\r\n const newOpen = !isOpen();\r\n isOpen.set(newOpen);\r\n\r\n if (newOpen) {\r\n const enabledOptions = getEnabledOptions();\r\n if (enabledOptions.length > 0) {\r\n const selectedValues = selectedValue();\r\n let currentValue = 0;\r\n if (selectedValues.size > 0) {\r\n const foundIndex = enabledOptions.findIndex(opt => selectedValues.has(opt.value));\r\n currentValue = foundIndex >= 0 ? foundIndex : 0;\r\n }\r\n highlightedIndex.set(currentValue);\r\n \r\n const option = enabledOptions[currentValue];\r\n if (option) {\r\n activeDescendant.set(`lyt-select-option-${option.value}`);\r\n }\r\n }\r\n \r\n previousActiveElement.set(document.activeElement as HTMLElement);\r\n setTimeout(() => {\r\n const dropdown = dropdownRef();\r\n if (dropdown) {\r\n const focusable = getFocusableElements(dropdown);\r\n if (focusable.length > 0) {\r\n focusable[0]?.focus();\r\n }\r\n }\r\n }, 10);\r\n } else {\r\n const prevEl = previousActiveElement();\r\n if (prevEl && prevEl.focus) {\r\n setTimeout(() => prevEl.focus(), 10);\r\n }\r\n }\r\n p.onVisibleChange?.(newOpen);\r\n };\r\n\r\n const handleSelect = (option: SelectOption) => {\r\n if (option.disabled) return;\r\n\r\n if (p.multiple) {\r\n const newSelected = new Set(selectedValue());\r\n if (newSelected.has(option.value)) {\r\n newSelected.delete(option.value);\r\n } else {\r\n newSelected.add(option.value);\r\n }\r\n selectedValue.set(newSelected);\r\n p.onChange?.(Array.from(newSelected));\r\n } else {\r\n selectedValue.set(new Set([option.value]));\r\n if (p.closeOnSelect) {\r\n isOpen.set(false);\r\n p.onVisibleChange?.(false);\r\n }\r\n p.onChange?.(option.value);\r\n \r\n const prevEl = previousActiveElement();\r\n if (prevEl && prevEl.focus) {\r\n setTimeout(() => prevEl.focus(), 10);\r\n }\r\n }\r\n };\r\n\r\n const handleClear = (event: Event) => {\r\n event.stopPropagation();\r\n selectedValue.set(new Set());\r\n p.onClear?.();\r\n p.onChange?.(p.multiple ? [] : '');\r\n };\r\n\r\n const handleKeydown = (event: KeyboardEvent) => {\r\n const enabledOptions = getEnabledOptions();\r\n const open = isOpen();\r\n const hIndex = highlightedIndex();\r\n\r\n switch (event.key) {\r\n case 'Enter':\r\n case ' ':\r\n if (!p.filterable || !open) {\r\n event.preventDefault();\r\n }\r\n if (open) {\r\n if (hIndex >= 0 && hIndex < enabledOptions.length) {\r\n const option = enabledOptions[hIndex];\r\n if (option) {\r\n handleSelect(option);\r\n }\r\n }\r\n } else {\r\n toggleDropdown();\r\n }\r\n break;\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n if (!open) {\r\n toggleDropdown();\r\n } else {\r\n if (enabledOptions.length > 0) {\r\n const nextIndex = Math.min(hIndex + 1, enabledOptions.length - 1);\r\n highlightedIndex.set(nextIndex);\r\n const option = enabledOptions[nextIndex];\r\n if (option) {\r\n activeDescendant.set(`lyt-select-option-${option.value}`);\r\n }\r\n }\r\n }\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n if (open) {\r\n if (enabledOptions.length > 0) {\r\n const prevIndex = Math.max(hIndex - 1, 0);\r\n highlightedIndex.set(prevIndex);\r\n const option = enabledOptions[prevIndex];\r\n if (option) {\r\n activeDescendant.set(`lyt-select-option-${option.value}`);\r\n }\r\n }\r\n }\r\n break;\r\n case 'Escape':\r\n if (open) {\r\n event.preventDefault();\r\n isOpen.set(false);\r\n p.onVisibleChange?.(false);\r\n const prevEl = previousActiveElement();\r\n if (prevEl && prevEl.focus) {\r\n prevEl.focus();\r\n }\r\n }\r\n break;\r\n case 'Home':\r\n event.preventDefault();\r\n if (open && enabledOptions.length > 0) {\r\n highlightedIndex.set(0);\r\n const option = enabledOptions[0];\r\n if (option) {\r\n activeDescendant.set(`lyt-select-option-${option.value}`);\r\n }\r\n }\r\n break;\r\n case 'End':\r\n event.preventDefault();\r\n if (open && enabledOptions.length > 0) {\r\n const lastIndex = enabledOptions.length - 1;\r\n highlightedIndex.set(lastIndex);\r\n const option = enabledOptions[lastIndex];\r\n if (option) {\r\n activeDescendant.set(`lyt-select-option-${option.value}`);\r\n }\r\n }\r\n break;\r\n case 'Tab':\r\n if (open) {\r\n isOpen.set(false);\r\n p.onVisibleChange?.(false);\r\n }\r\n break;\r\n }\r\n\r\n p.onKeydown?.(event);\r\n };\r\n\r\n const handleTriggerKeydown = (event: KeyboardEvent) => {\r\n if (event.key === 'ArrowDown' && !isOpen()) {\r\n event.preventDefault();\r\n toggleDropdown();\r\n } else if (event.key === 'ArrowUp' && !isOpen()) {\r\n event.preventDefault();\r\n toggleDropdown();\r\n }\r\n };\r\n\r\n const handleOptionKeydown = (event: KeyboardEvent, option: SelectOption) => {\r\n if (event.key === 'Tab') {\r\n isOpen.set(false);\r\n p.onVisibleChange?.(false);\r\n return;\r\n }\r\n\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n handleSelect(option);\r\n return;\r\n }\r\n\r\n handleKeydown(event);\r\n };\r\n\r\n const getSelectedLabel = (): string => {\r\n const selected = Array.from(selectedValue());\r\n if (selected.length === 0) return '';\r\n\r\n const opts = p.options || [];\r\n const selectedOptions = opts.filter(opt => selected.includes(opt.value));\r\n return selectedOptions.map(opt => opt.label).join(', ');\r\n };\r\n\r\n return () => {\r\n const open = isOpen();\r\n const selectClass = [\r\n 'lyt-select',\r\n `lyt-select--${p.size}`,\r\n p.disabled ? 'lyt-select--disabled' : '',\r\n open ? 'lyt-select--open' : '',\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const selectedLabel = getSelectedLabel();\r\n const displayValue = selectedLabel || p.placeholder;\r\n const filteredOptions = getFilteredOptions();\r\n const selected = selectedValue();\r\n const hIndex = highlightedIndex();\r\n const listId = listboxId();\r\n const activeId = activeDescendant();\r\n\r\n const dropdownContent: VNode[] = [];\r\n\r\n if (filteredOptions.length === 0) {\r\n dropdownContent.push(createVNode('div', { \r\n class: 'lyt-select__empty',\r\n role: 'status',\r\n }, [createVNode('span', {}, '无匹配选项')]));\r\n } else {\r\n filteredOptions.forEach((option: SelectOption, index: number) => {\r\n const isSelected = selected.has(option.value);\r\n const isHighlighted = !option.disabled && index === hIndex;\r\n const optionId = `lyt-select-option-${option.value}`;\r\n const optionChildren: VNode[] = [];\r\n if (isSelected) {\r\n optionChildren.push(createVNode('span', { class: 'lyt-select__check' }, [createVNode('span', {}, '✓')]));\r\n }\r\n optionChildren.push(createVNode('span', {}, option.label));\r\n dropdownContent.push(createVNode('div', {\r\n key: String(option.value),\r\n id: optionId,\r\n role: 'option',\r\n 'aria-selected': isSelected,\r\n 'aria-disabled': option.disabled,\r\n class: [\r\n 'lyt-select__option',\r\n isSelected ? 'lyt-select__option--selected' : '',\r\n option.disabled ? 'lyt-select__option--disabled' : '',\r\n isHighlighted ? 'lyt-select__option--highlighted' : '',\r\n ].filter(Boolean).join(' '),\r\n onClick: () => handleSelect(option),\r\n onMouseenter: () => {\r\n if (!option.disabled) {\r\n highlightedIndex.set(index);\r\n activeDescendant.set(optionId);\r\n }\r\n },\r\n onKeydown: (e: KeyboardEvent) => handleOptionKeydown(e, option),\r\n }, optionChildren));\r\n });\r\n }\r\n\r\n const triggerChildren: VNode[] = [];\r\n triggerChildren.push(createVNode('span', {\r\n class: [\r\n 'lyt-select__value',\r\n !selectedLabel ? 'lyt-select__value--placeholder' : '',\r\n ].filter(Boolean).join(' '),\r\n }, [createVNode('span', {}, displayValue)]));\r\n if (p.clearable && selected.size > 0) {\r\n triggerChildren.push(createVNode('span', {\r\n class: 'lyt-select__clear',\r\n onClick: handleClear,\r\n role: 'button',\r\n 'aria-label': '清除选择',\r\n tabIndex: 0,\r\n }, [createVNode('span', {}, '×')]));\r\n }\r\n triggerChildren.push(createVNode('span', { class: 'lyt-select__arrow' }, [createVNode('span', {}, '▼')]));\r\n\r\n const resultChildren: VNode[] = [];\r\n\r\n if (p.filterable) {\r\n resultChildren.push(createVNode('input', {\r\n class: 'lyt-select__search',\r\n type: 'text',\r\n placeholder: '搜索...',\r\n value: searchValue(),\r\n onInput: (e: Event) => {\r\n searchValue.set((e.target as HTMLInputElement).value);\r\n },\r\n onKeydown: handleTriggerKeydown,\r\n 'aria-label': '搜索选项',\r\n 'aria-controls': listId,\r\n }));\r\n }\r\n\r\n resultChildren.push(createVNode('div', {\r\n ref: (el: HTMLElement) => triggerRef.set(el),\r\n class: 'lyt-select__trigger',\r\n onClick: toggleDropdown,\r\n onKeydown: handleTriggerKeydown,\r\n tabIndex: p.disabled ? -1 : (p.tabIndex ?? 0),\r\n role: 'combobox',\r\n 'aria-haspopup': 'listbox',\r\n 'aria-expanded': open,\r\n 'aria-controls': listId,\r\n 'aria-activedescendant': open ? activeId : undefined,\r\n }, triggerChildren));\r\n \r\n if (open) {\r\n resultChildren.push(createVNode('div', {\r\n ref: (el: HTMLElement) => dropdownRef.set(el),\r\n id: listId,\r\n class: 'lyt-select__dropdown',\r\n role: 'listbox',\r\n 'aria-multiselectable': p.multiple,\r\n 'aria-label': p.ariaLabel || '选择选项',\r\n }, dropdownContent));\r\n \r\n resultChildren.push(createVNode('div', {\r\n class: 'lyt-select__sro',\r\n role: 'status',\r\n 'aria-live': 'polite',\r\n }, `已选择 ${selected.size} 个选项`));\r\n }\r\n\r\n const a11yProps = getComboboxA11yProps({\r\n id: p.id,\r\n ariaLabel: p.ariaLabel || '选择器',\r\n ariaDescribedBy: p.ariaDescribedBy,\r\n ariaRequired: p.ariaRequired,\r\n ariaInvalid: p.ariaInvalid,\r\n disabled: p.disabled,\r\n tabIndex: p.tabIndex,\r\n expanded: open,\r\n controls: listId,\r\n });\r\n\r\n return createVNode('div', mergeA11yProps(a11yProps, {\r\n class: selectClass,\r\n onKeydown: handleKeydown,\r\n }), resultChildren);\r\n };\r\n },\r\n});\r\n\r\nexport type { SelectProps, SelectSlots, SelectOption } from './types';\r\n","/**\r\n * @lytjs/ui - Tabs 组件(增强版)\r\n *\r\n * 标签页组件,支持卡片式和边框卡片式,可拖拽,支持标签关闭和新增\r\n * 增强 Accessibility 支持:\r\n * - Roving tabindex(只有一个标签页有 tabindex=\"0\")\r\n * - 焦点管理(激活时聚焦到标签页)\r\n * - 屏幕阅读器支持(Live regions)\r\n * - 完整的 ARIA 属性\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport { getTablistA11yProps, getTabA11yProps, getTabpanelA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { TabPaneSetupProps, TabsSetupProps, TabPaneSlots, TabsSlots } from './types';\r\n\r\nexport type TabsType = '' | 'card' | 'border-card';\r\n\r\nexport interface TabPane {\r\n props: TabPaneSetupProps;\r\n children: VNode[];\r\n}\r\n\r\nexport interface DragState {\r\n isDragging: boolean;\r\n dragIndex: number;\r\n dropIndex: number;\r\n}\r\n\r\nexport const TabPane = defineComponent({\r\n name: 'LytTabPane',\r\n\r\n props: {\r\n label: { type: String, required: true },\r\n name: { type: String, required: true },\r\n disabled: { type: Boolean, default: false },\r\n closable: { type: Boolean, default: false },\r\n },\r\n\r\n setup(_props: Record<string, unknown>, { slots }: { slots: TabPaneSlots }) {\r\n return () => {\r\n const defaultSlot = slots.default;\r\n const children: VNode[] = defaultSlot ? defaultSlot() : [];\r\n return createVNode('div', { class: 'lyt-tab-pane' }, children);\r\n };\r\n },\r\n});\r\n\r\nexport const Tabs = defineComponent({\r\n name: 'LytTabs',\r\n\r\n props: {\r\n modelValue: { type: String, default: '' },\r\n type: { type: String, default: '' },\r\n class: { type: String, default: '' },\r\n closable: { type: Boolean, default: false },\r\n addable: { type: Boolean, default: false },\r\n editable: { type: Boolean, default: false },\r\n draggable: { type: Boolean, default: false },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n onTabClick: { type: Function, default: undefined },\r\n onTabRemove: { type: Function, default: undefined },\r\n onTabAdd: { type: Function, default: undefined },\r\n onTabDragStart: { type: Function, default: undefined },\r\n onTabDragEnd: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: TabsSlots }) {\r\n const p = props as TabsSetupProps;\r\n const dragState = signal<DragState>({\r\n isDragging: false,\r\n dragIndex: -1,\r\n dropIndex: -1,\r\n });\r\n const activeIndex = signal(0);\r\n const tabListRef = signal<HTMLElement | null>(null);\r\n const previousActiveElement = signal<HTMLElement | null>(null);\r\n const announcement = signal('');\r\n const tablistId = signal(`lyt-tabs-${Math.random().toString(36).substr(2, 9)}`);\r\n\r\n const getPanes = (): TabPane[] => {\r\n const defaultSlot = slots.default;\r\n const defaultSlotContent = defaultSlot ? defaultSlot() : [];\r\n if (!defaultSlotContent || defaultSlotContent.length === 0) return [];\r\n\r\n return defaultSlotContent\r\n .filter((vnode: VNode) => vnode && (vnode as unknown as { type: { name?: string } }).type?.name === 'LytTabPane')\r\n .map((vnode: VNode) => ({\r\n props: (vnode as unknown as { props: TabPaneSetupProps }).props,\r\n children: (vnode as unknown as { children: VNode[] }).children,\r\n }));\r\n };\r\n\r\n const getEnabledPanes = (panes: TabPane[]) => {\r\n return panes.filter(pane => !pane.props.disabled);\r\n };\r\n\r\n const announce = (message: string) => {\r\n announcement.set(message);\r\n setTimeout(() => announcement.set(''), 1000);\r\n };\r\n\r\n const handleTabClick = (pane: TabPane, index: number) => {\r\n if (pane.props.disabled) return;\r\n \r\n const oldIndex = activeIndex();\r\n activeIndex.set(index);\r\n \r\n if (oldIndex !== index) {\r\n const panes = getPanes();\r\n announce(`已切换到标签页 ${index + 1}:${pane.props.label},共 ${panes.length} 个标签页`);\r\n }\r\n \r\n p.onChange?.(pane.props.name);\r\n p.onTabClick?.(pane, index);\r\n\r\n previousActiveElement.set(document.activeElement as HTMLElement);\r\n setTimeout(() => {\r\n const tabList = tabListRef();\r\n if (tabList) {\r\n const activeTab = tabList.querySelector('[role=\"tab\"][aria-selected=\"true\"]') as HTMLElement;\r\n activeTab?.focus();\r\n }\r\n }, 10);\r\n };\r\n\r\n const handleKeydown = (e: KeyboardEvent) => {\r\n const panes = getPanes();\r\n const enabledPanes = getEnabledPanes(panes);\r\n \r\n if (enabledPanes.length === 0) return;\r\n\r\n let newIndex = activeIndex();\r\n \r\n switch (e.key) {\r\n case 'ArrowRight':\r\n case 'ArrowDown':\r\n e.preventDefault();\r\n for (let i = 1; i <= panes.length; i++) {\r\n const nextIndex = (activeIndex() + i) % panes.length;\r\n if (panes[nextIndex] && !panes[nextIndex].props.disabled) {\r\n newIndex = nextIndex;\r\n break;\r\n }\r\n }\r\n break;\r\n case 'ArrowLeft':\r\n case 'ArrowUp':\r\n e.preventDefault();\r\n for (let i = 1; i <= panes.length; i++) {\r\n const prevIndex = (activeIndex() - i + panes.length) % panes.length;\r\n if (panes[prevIndex] && !panes[prevIndex].props.disabled) {\r\n newIndex = prevIndex;\r\n break;\r\n }\r\n }\r\n break;\r\n case 'Home':\r\n e.preventDefault();\r\n newIndex = panes.findIndex(pane => pane != null && pane.props != null && !pane.props.disabled);\r\n break;\r\n case 'End':\r\n e.preventDefault();\r\n for (let i = panes.length - 1; i >= 0; i--) {\r\n const pane = panes[i];\r\n if (pane && pane.props && !pane.props.disabled) {\r\n newIndex = i;\r\n break;\r\n }\r\n }\r\n break;\r\n case 'Enter':\r\n case ' ': {\r\n e.preventDefault();\r\n const currentPane = panes[activeIndex()];\r\n if (currentPane && !currentPane.props.disabled) {\r\n handleTabClick(currentPane, activeIndex());\r\n }\r\n break;\r\n }\r\n case 'Delete':\r\n case 'Backspace':\r\n if (p.closable) {\r\n const currentPane = panes[activeIndex()];\r\n if (currentPane && currentPane.props.closable) {\r\n e.preventDefault();\r\n handleTabRemove(currentPane, new Event('keydown') as unknown as Event);\r\n }\r\n }\r\n break;\r\n }\r\n\r\n if (newIndex !== activeIndex()) {\r\n const pane = panes[newIndex];\r\n if (pane && !pane.props.disabled) {\r\n activeIndex.set(newIndex);\r\n announce(`已切换到标签页 ${newIndex + 1}:${pane.props.label}`);\r\n handleTabClick(pane, newIndex);\r\n }\r\n }\r\n\r\n p.onKeydown?.(e);\r\n };\r\n\r\n const handleTabRemove = (pane: TabPane, e: Event) => {\r\n e.stopPropagation();\r\n const panes = getPanes();\r\n const index = panes.findIndex(p => p.props.name === pane.props.name);\r\n \r\n if (index > 0) {\r\n const prevPane = panes[index - 1];\r\n activeIndex.set(index - 1);\r\n if (prevPane) {\r\n announce(`已关闭标签页 ${pane.props.label},现在显示标签页 ${prevPane.props.label}`);\r\n }\r\n } else if (panes.length > 1) {\r\n const nextPane = panes[index + 1];\r\n activeIndex.set(0);\r\n if (nextPane) {\r\n announce(`已关闭标签页 ${pane.props.label},现在显示标签页 ${nextPane.props.label}`);\r\n }\r\n } else {\r\n announce(`已关闭标签页 ${pane.props.label},现在没有标签页`);\r\n }\r\n \r\n p.onTabRemove?.(pane.props.name);\r\n };\r\n\r\n const handleTabAdd = () => {\r\n announce('正在添加新标签页');\r\n p.onTabAdd?.();\r\n };\r\n\r\n const handleDragStart = (index: number) => {\r\n if (!p.draggable) return;\r\n dragState.set({\r\n isDragging: true,\r\n dragIndex: index,\r\n dropIndex: -1,\r\n });\r\n p.onTabDragStart?.(index);\r\n };\r\n\r\n const handleDragOver = (index: number) => {\r\n if (!dragState().isDragging) return;\r\n dragState.set({\r\n ...dragState(),\r\n dropIndex: index,\r\n });\r\n };\r\n\r\n const handleDragEnd = () => {\r\n const { dragIndex, dropIndex } = dragState();\r\n if (dragIndex !== -1 && dropIndex !== -1 && dragIndex !== dropIndex) {\r\n announce(`标签页已从位置 ${dragIndex + 1} 移动到位置 ${dropIndex + 1}`);\r\n p.onTabDragEnd?.(dragIndex, dropIndex);\r\n }\r\n dragState.set({\r\n isDragging: false,\r\n dragIndex: -1,\r\n dropIndex: -1,\r\n });\r\n };\r\n\r\n return () => {\r\n const panes = getPanes();\r\n const currentName = p.modelValue || panes[0]?.props.name;\r\n const currentIndex = panes.findIndex(pane => pane.props.name === currentName);\r\n \r\n if (currentIndex !== -1 && currentIndex !== activeIndex()) {\r\n activeIndex.set(currentIndex);\r\n }\r\n\r\n const tabsClass = [\r\n 'lyt-tabs',\r\n `lyt-tabs--${p.type || 'normal'}`,\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const tabListId = tablistId();\r\n\r\n const tabItems: VNode[] = panes.map((pane, index) => {\r\n const isActive = pane.props.name === currentName;\r\n const isDraggable = p.draggable;\r\n\r\n const tabChildren: VNode[] = [\r\n createVNode('span', { class: 'lyt-tabs__label' }, [createTextVNode(String(pane.props.label))]),\r\n ];\r\n\r\n if (pane.props.closable || p.closable) {\r\n const closeBtnProps = getButtonA11yProps({\r\n ariaLabel: `关闭标签页 ${pane.props.label}`,\r\n disabled: pane.props.disabled,\r\n });\r\n tabChildren.push(createVNode('span', mergeA11yProps(closeBtnProps, {\r\n class: 'lyt-tabs__close',\r\n onClick: (e: Event) => handleTabRemove(pane, e),\r\n }), [createTextVNode('×')]));\r\n }\r\n\r\n const tabId = `${p.id || tabListId}-tab-${pane.props.name}`;\r\n const panelId = `${p.id || tabListId}-panel-${pane.props.name}`;\r\n\r\n const tabA11yProps = getTabA11yProps({\r\n id: tabId,\r\n selected: isActive,\r\n disabled: pane.props.disabled,\r\n controls: panelId,\r\n });\r\n\r\n return createVNode('div', mergeA11yProps(tabA11yProps, {\r\n key: String(pane.props.name),\r\n class: [\r\n 'lyt-tabs__item',\r\n isActive ? 'lyt-tabs__item--active' : '',\r\n pane.props.disabled ? 'lyt-tabs__item--disabled' : '',\r\n dragState().dropIndex === index ? 'lyt-tabs__item--drop' : '',\r\n ].filter(Boolean).join(' '),\r\n draggable: isDraggable,\r\n onClick: () => handleTabClick(pane, index),\r\n onKeydown: handleKeydown,\r\n onDragStart: () => handleDragStart(index),\r\n onDragOver: (e: DragEvent) => { e.preventDefault(); handleDragOver(index); },\r\n onDragEnd: handleDragEnd,\r\n }), tabChildren);\r\n });\r\n\r\n if (p.addable || p.editable) {\r\n const addBtnProps = getButtonA11yProps({\r\n ariaLabel: '添加新标签页',\r\n });\r\n tabItems.push(createVNode('div', mergeA11yProps(addBtnProps, {\r\n class: 'lyt-tabs__add-btn',\r\n onClick: handleTabAdd,\r\n }), [createTextVNode('+')]));\r\n }\r\n\r\n const content = panes.find(pane => pane.props.name === currentName);\r\n const panelId = `${p.id || tabListId}-panel-${content?.props.name || 'default'}`;\r\n\r\n const tabpanelProps = content ? getTabpanelA11yProps({\r\n id: panelId,\r\n labelledBy: `${p.id || tabListId}-tab-${content.props.name}`,\r\n }) : {};\r\n\r\n const contentPane = content\r\n ? createVNode('div', mergeA11yProps(tabpanelProps, { \r\n class: 'lyt-tabs__pane',\r\n id: panelId,\r\n role: 'tabpanel',\r\n }), content.children)\r\n : createVNode('div', { style: 'display: none;', id: panelId }, []);\r\n\r\n const tablistA11yProps = getTablistA11yProps({\r\n id: p.id || tabListId,\r\n ariaLabel: p.ariaLabel || '标签页导航',\r\n ariaDescribedBy: p.ariaDescribedBy,\r\n });\r\n\r\n return createVNode('div', mergeA11yProps(tablistA11yProps, { \r\n class: tabsClass,\r\n onKeydown: handleKeydown,\r\n }), [\r\n createVNode('div', {\r\n ref: (el: HTMLElement) => tabListRef.set(el),\r\n class: 'lyt-tabs__header',\r\n role: 'tablist',\r\n 'aria-label': p.ariaLabel || '标签页',\r\n }, [\r\n createVNode('div', { class: 'lyt-tabs__nav' }, tabItems),\r\n ]),\r\n createVNode('div', { class: 'lyt-tabs__content' }, [contentPane]),\r\n createVNode('div', {\r\n class: 'lyt-tabs__sro',\r\n role: 'status',\r\n 'aria-live': 'polite',\r\n 'aria-atomic': 'true',\r\n }, announcement()),\r\n ]);\r\n };\r\n },\r\n});\r\n\r\nexport type { TabsProps, TabsSlots, TabPaneProps, TabPaneSlots } from './types';\r\n","/**\r\n * @lytjs/ui - Table 组件\r\n *\r\n * 表格组件,支持排序、斑马纹、边框、固定列、选择等功能\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { TableData, TableRowData, TableColumn, TableSortOrder, TableSetupProps } from './types';\r\nimport { getInputControlA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nexport type { TableSlots } from './types';\r\n\r\nexport const Table = defineComponent({\r\n name: 'LytTable',\r\n\r\n props: {\r\n data: { type: Array, default: (): TableData => [] },\r\n columns: { type: Array, default: (): TableColumn[] => [] },\r\n stripe: { type: Boolean, default: false },\r\n border: { type: Boolean, default: false },\r\n rowKey: { type: String, default: 'id' },\r\n showSelection: { type: Boolean, default: false },\r\n highlightCurrentRow: { type: Boolean, default: false },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onRowClick: { type: Function, default: undefined },\r\n onSortChange: { type: Function, default: undefined },\r\n onSelectionChange: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as TableSetupProps;\r\n const sortColumn = signal('');\r\n const sortOrder = signal<TableSortOrder>('');\r\n const selectedRows = signal<Set<TableRowData>>(new Set());\r\n const currentRow = signal<TableRowData | null>(null);\r\n const allSelected = signal(false);\r\n\r\n const handleSort = (column: TableColumn) => {\r\n if (!column.sortable || !column.prop) return;\r\n\r\n let newOrder: TableSortOrder;\r\n if (sortColumn() === column.prop) {\r\n if (sortOrder() === 'ascending') {\r\n newOrder = 'descending';\r\n } else if (sortOrder() === 'descending') {\r\n newOrder = '';\r\n } else {\r\n newOrder = 'ascending';\r\n }\r\n } else {\r\n newOrder = 'ascending';\r\n }\r\n\r\n sortColumn.set(column.prop);\r\n sortOrder.set(newOrder);\r\n p.onSortChange?.(column, column.prop, newOrder);\r\n };\r\n\r\n const handleRowSelect = (row: TableRowData, checked: boolean) => {\r\n const newSelected = new Set(selectedRows());\r\n if (checked) {\r\n newSelected.add(row);\r\n } else {\r\n newSelected.delete(row);\r\n }\r\n selectedRows.set(newSelected);\r\n \r\n const data = p.data || [];\r\n allSelected.set(newSelected.size === data.length);\r\n \r\n p.onSelectionChange?.(Array.from(newSelected));\r\n };\r\n\r\n const handleSelectAll = (checked: boolean) => {\r\n allSelected.set(checked);\r\n const data = p.data || [];\r\n \r\n if (checked) {\r\n selectedRows.set(new Set(data));\r\n p.onSelectionChange?.([...data]);\r\n } else {\r\n selectedRows.set(new Set());\r\n p.onSelectionChange?.([]);\r\n }\r\n };\r\n\r\n const handleRowClick = (row: TableRowData, index: number) => {\r\n if (p.highlightCurrentRow) {\r\n currentRow.set(row);\r\n }\r\n p.onRowClick?.(row, index);\r\n };\r\n\r\n const getCellValue = (row: TableRowData, column: TableColumn): unknown => {\r\n if (!column.prop) return '';\r\n return row[column.prop];\r\n };\r\n\r\n const getRowKey = (row: TableRowData, index: number): string => {\r\n if (p.rowKey && row[p.rowKey]) {\r\n return String(row[p.rowKey]);\r\n }\r\n return String(index);\r\n };\r\n\r\n return () => {\r\n const data = p.data || [];\r\n const columns = p.columns || [];\r\n \r\n const tableClass = ['lyt-table'];\r\n if (p.stripe) tableClass.push('lyt-table--stripe');\r\n if (p.border) tableClass.push('lyt-table--border');\r\n if (p.class) tableClass.push(p.class);\r\n\r\n const children: VNode[] = [];\r\n\r\n const thead = createVNode('thead', { class: 'lyt-table__header' }, [\r\n createVNode('tr', {}, [\r\n ...(p.showSelection ? [\r\n createVNode('th', { class: 'lyt-table__cell--selection' }, [\r\n createVNode('input', mergeA11yProps(getInputControlA11yProps({ ariaLabel: '全选' }), {\r\n type: 'checkbox',\r\n checked: allSelected(),\r\n onChange: (e: Event) => handleSelectAll((e.target as HTMLInputElement).checked),\r\n })),\r\n ]),\r\n ] : []),\r\n ...columns.map((column: TableColumn) => \r\n createVNode('th', {\r\n class: [\r\n 'lyt-table__cell',\r\n column.sortable ? 'lyt-table__cell--sortable' : '',\r\n column.align ? `lyt-table__cell--${column.align}` : '',\r\n ].filter(Boolean).join(' '),\r\n onClick: () => handleSort(column),\r\n }, [createVNode('span', {}, String(column.label))])\r\n ),\r\n ]),\r\n ]);\r\n\r\n const tbody = createVNode('tbody', { class: 'lyt-table__body' }, \r\n data.length === 0 \r\n ? [\r\n createVNode('tr', { class: 'lyt-table__empty-row' }, [\r\n createVNode('td', {\r\n colspan: columns.length + (p.showSelection ? 1 : 0),\r\n class: 'lyt-table__empty-cell',\r\n }, [createVNode('span', {}, '暂无数据')]),\r\n ]),\r\n ]\r\n : data.map((row: TableRowData, index: number) => {\r\n const rowChildren: VNode[] = [];\r\n \r\n if (p.showSelection) {\r\n rowChildren.push(\r\n createVNode('td', { class: 'lyt-table__cell--selection' }, [\r\n createVNode('input', mergeA11yProps(getInputControlA11yProps({ ariaLabel: '选择行' }), {\r\n type: 'checkbox',\r\n checked: selectedRows().has(row),\r\n onChange: (e: Event) => handleRowSelect(row, (e.target as HTMLInputElement).checked),\r\n })),\r\n ])\r\n );\r\n }\r\n \r\n columns.forEach((column: TableColumn) => {\r\n const value = getCellValue(row, column);\r\n const displayValue = column.formatter \r\n ? column.formatter(row, column, value)\r\n : String(value ?? '');\r\n \r\n rowChildren.push(\r\n createVNode('td', {\r\n class: [\r\n 'lyt-table__cell',\r\n column.align ? `lyt-table__cell--${column.align}` : '',\r\n ].filter(Boolean).join(' '),\r\n }, [createVNode('span', {}, displayValue)])\r\n );\r\n });\r\n \r\n return createVNode('tr', {\r\n key: getRowKey(row, index),\r\n class: [\r\n 'lyt-table__row',\r\n currentRow() === row ? 'lyt-table__row--active' : '',\r\n ].filter(Boolean).join(' '),\r\n onClick: () => handleRowClick(row, index),\r\n }, rowChildren);\r\n })\r\n );\r\n\r\n children.push(thead, tbody);\r\n\r\n return createVNode('table', mergeA11yProps({\r\n id: p.id,\r\n 'aria-label': p.ariaLabel,\r\n 'aria-describedby': p.ariaDescribedBy,\r\n role: 'grid',\r\n }, { class: tableClass.join(' ') }), children);\r\n };\r\n },\r\n});\r\n","/**\r\n * @lytjs/ui - Form 组件\r\n *\r\n * 表单组件,支持表单验证和布局\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { FormRules, FormSetupProps, FormSlots, FormItemSetupProps, FormItemSlots } from './types';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport interface FormLocale {\r\n required: string;\r\n pattern: string;\r\n min: string;\r\n max: string;\r\n type: string;\r\n validator: string;\r\n default: string;\r\n}\r\n\r\nconst DEFAULT_LOCALE: FormLocale = {\r\n required: '此字段必填',\r\n pattern: '格式不正确',\r\n min: '长度不能少于 {min} 个字符',\r\n max: '长度不能超过 {max} 个字符',\r\n type: '类型不正确',\r\n validator: '验证失败',\r\n default: '验证失败',\r\n};\r\n\r\nexport function createFormLocale(locale: Partial<FormLocale>): FormLocale {\r\n return { ...DEFAULT_LOCALE, ...locale };\r\n}\r\n\r\nfunction formatMessage(template: string, params: Record<string, string | number>): string {\r\n let message = template;\r\n for (const [key, value] of Object.entries(params)) {\r\n message = message.replace(new RegExp(`\\\\{${key}\\\\}`, 'g'), String(value));\r\n }\r\n return message;\r\n}\r\n\r\nexport const Form = defineComponent({\r\n name: 'LytForm',\r\n\r\n props: {\r\n model: { type: Object, default: (): Record<string, unknown> => ({}) },\r\n rules: { type: Object, default: (): FormRules => ({}) },\r\n labelWidth: { type: String, default: '100px' },\r\n labelPosition: { type: String, default: 'right' },\r\n locale: { type: Object, default: (): FormLocale => DEFAULT_LOCALE },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onSubmit: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: FormSlots }) {\r\n const p = props as FormSetupProps;\r\n const errors = signal<Record<string, string>>({});\r\n const validating = signal<Record<string, boolean>>({});\r\n const locale = (p.locale || DEFAULT_LOCALE) as FormLocale;\r\n\r\n const validateField = async (field: string): Promise<boolean> => {\r\n const rules = p.rules[field];\r\n if (!rules || rules.length === 0) return true;\r\n\r\n const value = p.model[field];\r\n const fieldErrors: string[] = [];\r\n\r\n for (const rule of rules) {\r\n if (rule.required && (!value || value === '')) {\r\n const message = rule.message || formatMessage(locale.required, { field });\r\n fieldErrors.push(message);\r\n continue;\r\n }\r\n\r\n if (value !== undefined && value !== null && value !== '') {\r\n if (rule.type) {\r\n const typeValid = validateType(value, rule.type);\r\n if (!typeValid) {\r\n fieldErrors.push(rule.message || formatMessage(locale.type, { type: rule.type, field }));\r\n continue;\r\n }\r\n }\r\n\r\n if (rule.pattern && !rule.pattern.test(String(value))) {\r\n fieldErrors.push(rule.message || formatMessage(locale.pattern, { field }));\r\n continue;\r\n }\r\n\r\n if (typeof value === 'string') {\r\n if (rule.min !== undefined && value.length < rule.min) {\r\n fieldErrors.push(rule.message || formatMessage(locale.min, { min: rule.min, field }));\r\n continue;\r\n }\r\n if (rule.max !== undefined && value.length > rule.max) {\r\n fieldErrors.push(rule.message || formatMessage(locale.max, { max: rule.max, field }));\r\n continue;\r\n }\r\n }\r\n }\r\n\r\n if (rule.validator) {\r\n validating.set({ ...validating(), [field]: true });\r\n\r\n try {\r\n const result = await Promise.resolve(rule.validator(value, p.model));\r\n\r\n if (result !== true) {\r\n const errorMessage = typeof result === 'string' ? result : formatMessage(locale.validator, { field });\r\n fieldErrors.push(errorMessage);\r\n }\r\n } catch (_error) {\r\n fieldErrors.push(rule.message || formatMessage(locale.validator, { field }));\r\n } finally {\r\n validating.set({ ...validating(), [field]: false });\r\n }\r\n }\r\n }\r\n\r\n if (fieldErrors.length > 0) {\r\n errors.set({ ...errors(), [field]: fieldErrors[0]! });\r\n return false;\r\n }\r\n\r\n const newErrors = { ...errors() };\r\n delete newErrors[field];\r\n errors.set(newErrors);\r\n return true;\r\n };\r\n\r\n const validate = async (): Promise<boolean> => {\r\n let isValid = true;\r\n const fieldNames = Object.keys(p.rules);\r\n\r\n for (const field of fieldNames) {\r\n const fieldValid = await validateField(field);\r\n if (!fieldValid) {\r\n isValid = false;\r\n }\r\n }\r\n\r\n return isValid;\r\n };\r\n\r\n const validateAll = async (): Promise<boolean> => {\r\n const fieldNames = Object.keys(p.rules);\r\n const results = await Promise.all(fieldNames.map(field => validateField(field)));\r\n return results.every(result => result);\r\n };\r\n\r\n const clearValidate = (field?: string) => {\r\n if (field) {\r\n const newErrors = { ...errors() };\r\n delete newErrors[field];\r\n errors.set(newErrors);\r\n } else {\r\n errors.set({});\r\n }\r\n };\r\n\r\n void validateAll;\r\n void clearValidate;\r\n\r\n const handleSubmit = async (event: Event) => {\r\n event.preventDefault();\r\n const isValid = await validate();\r\n if (isValid) {\r\n p.onSubmit?.(p.model);\r\n }\r\n };\r\n\r\n return () => {\r\n const formClass = [\r\n 'lyt-form',\r\n `lyt-form--label-${p.labelPosition}`,\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const children: VNode[] = slots.default ? slots.default() : [];\r\n\r\n return createVNode('form', {\r\n id: p.id,\r\n 'aria-label': p.ariaLabel,\r\n 'aria-describedby': p.ariaDescribedBy,\r\n class: formClass,\r\n onSubmit: handleSubmit,\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nfunction validateType(value: unknown, type: string): boolean {\r\n switch (type) {\r\n case 'string':\r\n return typeof value === 'string';\r\n case 'number':\r\n return typeof value === 'number' && !isNaN(value);\r\n case 'boolean':\r\n return typeof value === 'boolean';\r\n case 'array':\r\n return Array.isArray(value);\r\n case 'date':\r\n return value instanceof Date || !isNaN(Date.parse(String(value)));\r\n case 'email': {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n return typeof value === 'string' && emailRegex.test(value);\r\n }\r\n case 'url':\r\n try {\r\n new URL(String(value));\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n default:\r\n return true;\r\n }\r\n}\r\n\r\nexport const FormItem = defineComponent({\r\n name: 'LytFormItem',\r\n\r\n props: {\r\n label: { type: String, default: '' },\r\n prop: { type: String, default: '' },\r\n required: { type: Boolean, default: false },\r\n rules: { type: [Object, Array] as unknown as StringConstructor, default: () => [] },\r\n error: { type: String, default: '' },\r\n validateStatus: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: FormItemSlots }) {\r\n const p = props as FormItemSetupProps;\r\n\r\n return () => {\r\n const itemClass = [\r\n 'lyt-form-item',\r\n p.error ? 'lyt-form-item--error' : '',\r\n p.validateStatus ? `lyt-form-item--${p.validateStatus}` : '',\r\n ].filter(Boolean).join(' ');\r\n\r\n const labelStyle = p.label ? { width: '100px' } : {};\r\n\r\n const children: VNode[] = [];\r\n\r\n if (p.label) {\r\n children.push(createVNode('label', {\r\n class: 'lyt-form-item__label',\r\n style: labelStyle,\r\n }, [createVNode('span', {}, String(p.label))]));\r\n }\r\n\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n children.push(createVNode('div', { class: 'lyt-form-item__content' }, slotContent));\r\n }\r\n\r\n if (p.error) {\r\n children.push(createVNode('div', {\r\n class: 'lyt-form-item__error',\r\n role: 'alert',\r\n 'aria-live': 'polite'\r\n }, [createVNode('span', {}, String(p.error))]));\r\n }\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: p.id,\r\n 'aria-label': p.ariaLabel,\r\n 'aria-describedby': p.ariaDescribedBy,\r\n }, { class: itemClass }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { FormSlots, FormItemSlots } from './types';\r\nexport type { FormProps, FormRules, FormSetupProps, FormItemProps, FormItemSetupProps, FormRule, FormValidateStatus } from './types';\r\n","/**\r\n * @lytjs/ui - Transition 组件\r\n *\r\n * 过渡动画组件,支持进入/离开动画\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\n\r\nexport interface TransitionSetupProps {\r\n name: string;\r\n appear: boolean;\r\n mode: string;\r\n duration: number;\r\n class: string;\r\n}\r\n\r\nexport interface TransitionSlots {\r\n default?: () => VNode[];\r\n}\r\n\r\nexport const Transition = defineComponent({\r\n name: 'LytTransition',\r\n\r\n props: {\r\n name: { type: String, default: 'fade' },\r\n appear: { type: Boolean, default: false },\r\n mode: { type: String, default: '' },\r\n duration: { type: Number, default: 300 },\r\n class: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: TransitionSlots }) {\r\n const p = props as unknown as TransitionSetupProps;\r\n\r\n const getTransitionClass = () => {\r\n const classes = [`${p.name}-transition`];\r\n if (p.class) {\r\n classes.push(p.class);\r\n }\r\n return classes.join(' ');\r\n };\r\n\r\n const getTransitionStyle = () => {\r\n return `transition-duration: ${p.duration}ms;`;\r\n };\r\n\r\n return () => {\r\n return createVNode('div', {\r\n class: getTransitionClass(),\r\n style: getTransitionStyle(),\r\n }, slots.default?.());\r\n };\r\n },\r\n});\r\n\r\nexport interface TransitionGroupSetupProps {\r\n name: string;\r\n tag: string;\r\n duration: number;\r\n class: string;\r\n}\r\n\r\nexport interface TransitionGroupSlots {\r\n default?: () => VNode[];\r\n}\r\n\r\nexport const TransitionGroup = defineComponent({\r\n name: 'LytTransitionGroup',\r\n\r\n props: {\r\n name: { type: String, default: 'list' },\r\n tag: { type: String, default: 'div' },\r\n duration: { type: Number, default: 300 },\r\n class: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: TransitionGroupSlots }) {\r\n const p = props as unknown as TransitionGroupSetupProps;\r\n\r\n return () => {\r\n const children = slots.default?.() || [];\r\n \r\n const wrappedChildren: VNode[] = children.map((child: VNode, index: number) =>\r\n createVNode('div', {\r\n key: (child as unknown as { key?: string | number }).key || index,\r\n class: `${p.name}-item`,\r\n style: `transition: all ${p.duration}ms ease;`,\r\n }, [child])\r\n );\r\n\r\n return createVNode(p.tag as string, {\r\n class: `lyt-transition-group ${p.class}`,\r\n }, wrappedChildren);\r\n };\r\n },\r\n});\r\n\r\nexport default { Transition, TransitionGroup };\r\n","/**\r\n * @lytjs/ui - DatePicker 组件\r\n *\r\n * 日期选择器组件,支持范围选择、时间选择、禁用日期、快捷选项,自研日期处理逻辑(零依赖)\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { DatePickerShortcut, DatePickerSetupProps, DatePickerSlots } from './types';\r\n\r\nfunction getDaysInMonth(year: number, month: number): number {\r\n return new Date(year, month + 1, 0).getDate();\r\n}\r\n\r\nfunction getFirstDayOfMonth(year: number, month: number): number {\r\n return new Date(year, month, 1).getDay();\r\n}\r\n\r\nfunction formatDate(date: Date, format: string = 'YYYY-MM-DD'): string {\r\n const year = date.getFullYear();\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const hour = String(date.getHours()).padStart(2, '0');\r\n const minute = String(date.getMinutes()).padStart(2, '0');\r\n const second = String(date.getSeconds()).padStart(2, '0');\r\n\r\n return format\r\n .replace('YYYY', String(year))\r\n .replace('MM', month)\r\n .replace('DD', day)\r\n .replace('HH', hour)\r\n .replace('mm', minute)\r\n .replace('ss', second);\r\n}\r\n\r\nfunction isSameDay(date1: Date, date2: Date): boolean {\r\n return date1.getFullYear() === date2.getFullYear() &&\r\n date1.getMonth() === date2.getMonth() &&\r\n date1.getDate() === date2.getDate();\r\n}\r\n\r\nexport const DatePicker = defineComponent({\r\n name: 'LytDatePicker',\r\n\r\n props: {\r\n modelValue: { type: [String, Date, Array] as unknown as StringConstructor, default: null },\r\n placeholder: { type: String, default: '选择日期' },\r\n disabled: { type: Boolean, default: false },\r\n clearable: { type: Boolean, default: true },\r\n format: { type: String, default: 'YYYY-MM-DD' },\r\n type: { type: String, default: 'date' },\r\n disabledDate: { type: Function, default: undefined },\r\n shortcuts: { type: Array, default: (): DatePickerShortcut[] => [] },\r\n class: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n onOpen: { type: Function, default: undefined },\r\n onClose: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: DatePickerSlots }) {\r\n const p = props as DatePickerSetupProps;\r\n const isOpen = signal(false);\r\n const currentYear = signal(new Date().getFullYear());\r\n const currentMonth = signal(new Date().getMonth());\r\n const selectDate = signal<Date | null>(null);\r\n const rangeStart = signal<Date | null>(null);\r\n const rangeEnd = signal<Date | null>(null);\r\n const showTime = signal(false);\r\n const currentHours = signal(0);\r\n const currentMinutes = signal(0);\r\n const currentSeconds = signal(0);\r\n\r\n const weekDays = ['日', '一', '二', '三', '四', '五', '六'];\r\n\r\n const getCalendarDays = (): (Date | null)[] => {\r\n const year = currentYear();\r\n const month = currentMonth();\r\n const firstDay = getFirstDayOfMonth(year, month);\r\n const daysInMonth = getDaysInMonth(year, month);\r\n\r\n const days: (Date | null)[] = [];\r\n for (let i = 0; i < firstDay; i++) {\r\n days.push(null);\r\n }\r\n for (let i = 1; i <= daysInMonth; i++) {\r\n days.push(new Date(year, month, i));\r\n }\r\n return days;\r\n };\r\n\r\n const getMonthLabel = (): string => {\r\n return `${currentYear()}年${String(currentMonth() + 1).padStart(2, '0')}月`;\r\n };\r\n\r\n const prevMonth = () => {\r\n if (currentMonth() === 0) {\r\n currentMonth.set(11);\r\n currentYear.set(currentYear() - 1);\r\n } else {\r\n currentMonth.set(currentMonth() - 1);\r\n }\r\n };\r\n\r\n const nextMonth = () => {\r\n if (currentMonth() === 11) {\r\n currentMonth.set(0);\r\n currentYear.set(currentYear() + 1);\r\n } else {\r\n currentMonth.set(currentMonth() + 1);\r\n }\r\n };\r\n\r\n const handleSelectDate = (date: Date) => {\r\n if (p.disabledDate?.(date)) return;\r\n\r\n selectDate.set(date);\r\n currentHours.set(date.getHours());\r\n currentMinutes.set(date.getMinutes());\r\n currentSeconds.set(date.getSeconds());\r\n\r\n const dateType = p.type;\r\n if (dateType === 'date') {\r\n const result = formatDate(date, p.format);\r\n p.onChange?.(result);\r\n isOpen.set(false);\r\n } else if (dateType === 'datetime') {\r\n showTime.set(true);\r\n } else {\r\n if (!rangeStart()) {\r\n rangeStart.set(date);\r\n } else if (!rangeEnd()) {\r\n rangeEnd.set(date);\r\n const start = rangeStart()!;\r\n const end = rangeEnd()!;\r\n const result = [formatDate(start, p.format), formatDate(end, p.format)];\r\n p.onChange?.(result);\r\n } else {\r\n rangeStart.set(date);\r\n rangeEnd.set(null);\r\n }\r\n }\r\n };\r\n\r\n const handleTimeChange = () => {\r\n const date = selectDate();\r\n if (!date) return;\r\n\r\n const newDate = new Date(date);\r\n newDate.setHours(currentHours());\r\n newDate.setMinutes(currentMinutes());\r\n newDate.setSeconds(currentSeconds());\r\n\r\n const result = formatDate(newDate, p.format);\r\n p.onChange?.(result);\r\n isOpen.set(false);\r\n };\r\n\r\n const handleClear = (e: Event) => {\r\n e.stopPropagation();\r\n selectDate.set(null);\r\n rangeStart.set(null);\r\n rangeEnd.set(null);\r\n p.onChange?.(null);\r\n };\r\n\r\n const handleShortcutClick = (shortcut: DatePickerShortcut) => {\r\n if (shortcut.onClick) {\r\n shortcut.onClick();\r\n } else if (shortcut.value instanceof Date) {\r\n handleSelectDate(shortcut.value);\r\n } else if (Array.isArray(shortcut.value)) {\r\n rangeStart.set(shortcut.value[0] ?? null);\r\n rangeEnd.set(shortcut.value[1] ?? null);\r\n }\r\n };\r\n\r\n const toggleDropdown = () => {\r\n if (p.disabled) return;\r\n isOpen.set(!isOpen());\r\n if (isOpen()) {\r\n p.onOpen?.();\r\n } else {\r\n p.onClose?.();\r\n }\r\n };\r\n\r\n const isDateSelected = (date: Date): boolean => {\r\n if (selectDate() && isSameDay(date, selectDate()!)) return true;\r\n if (rangeStart() && isSameDay(date, rangeStart()!)) return true;\r\n if (rangeEnd() && isSameDay(date, rangeEnd()!)) return true;\r\n return false;\r\n };\r\n\r\n const isInRange = (date: Date): boolean => {\r\n if (!rangeStart() || !rangeEnd()) return false;\r\n const start = rangeStart()!;\r\n const end = rangeEnd()!;\r\n return date > start && date < end;\r\n };\r\n\r\n const isToday = (date: Date): boolean => {\r\n return isSameDay(date, new Date());\r\n };\r\n\r\n const isDisabled = (date: Date): boolean => {\r\n return p.disabledDate?.(date) ?? false;\r\n };\r\n\r\n const getDisplayValue = (): string => {\r\n if (p.type === 'daterange' || p.type === 'datetimerange') {\r\n if (rangeStart() && rangeEnd()) {\r\n return `${formatDate(rangeStart()!, p.format)} - ${formatDate(rangeEnd()!, p.format)}`;\r\n }\r\n return '';\r\n }\r\n return selectDate() ? formatDate(selectDate()!, p.format) : '';\r\n };\r\n\r\n return () => {\r\n const pickerClass = [\r\n 'lyt-date-picker',\r\n isOpen() ? 'lyt-date-picker--open' : '',\r\n p.disabled ? 'lyt-date-picker--disabled' : '',\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const calendarDays = getCalendarDays();\r\n const displayValue = getDisplayValue();\r\n\r\n const calendarContent: VNode[] = [];\r\n\r\n const headerChildren: VNode[] = [\r\n createVNode('button', {\r\n class: 'lyt-date-picker__nav-btn',\r\n onClick: prevMonth,\r\n }, [createVNode('span', {}, '◀')]),\r\n createVNode('span', { class: 'lyt-date-picker__month-label' }, [createVNode('span', {}, getMonthLabel())]),\r\n createVNode('button', {\r\n class: 'lyt-date-picker__nav-btn',\r\n onClick: nextMonth,\r\n }, [createVNode('span', {}, '▶')]),\r\n ];\r\n calendarContent.push(createVNode('div', { class: 'lyt-date-picker__header' }, headerChildren));\r\n\r\n const weekHeaderChildren: VNode[] = weekDays.map(day =>\r\n createVNode('span', { class: 'lyt-date-picker__weekday' }, [createVNode('span', {}, day)])\r\n );\r\n calendarContent.push(createVNode('div', { class: 'lyt-date-picker__week-header' }, weekHeaderChildren));\r\n\r\n const dayButtons: VNode[] = calendarDays.map((date, index) => {\r\n if (!date) {\r\n return createVNode('span', { key: `empty-${index}`, class: 'lyt-date-picker__day lyt-date-picker__day--empty' }, [createVNode('span', {}, ' ')]);\r\n }\r\n\r\n const selected = isDateSelected(date);\r\n const inRange = isInRange(date);\r\n const today = isToday(date);\r\n const disabled = isDisabled(date);\r\n\r\n return createVNode('button', {\r\n key: date.toISOString(),\r\n class: [\r\n 'lyt-date-picker__day',\r\n selected ? 'lyt-date-picker__day--selected' : '',\r\n inRange ? 'lyt-date-picker__day--in-range' : '',\r\n today ? 'lyt-date-picker__day--today' : '',\r\n disabled ? 'lyt-date-picker__day--disabled' : '',\r\n ].filter(Boolean).join(' '),\r\n disabled: disabled,\r\n onClick: () => handleSelectDate(date),\r\n }, [createVNode('span', {}, String(date.getDate()))]);\r\n });\r\n calendarContent.push(createVNode('div', { class: 'lyt-date-picker__days' }, dayButtons));\r\n\r\n if (showTime() || p.type === 'datetime') {\r\n showTime.set(true);\r\n const timeControls: VNode[] = [\r\n createVNode('input', {\r\n type: 'number',\r\n class: 'lyt-date-picker__time-input',\r\n value: currentHours(),\r\n min: 0,\r\n max: 23,\r\n onInput: (e: Event) => currentHours.set(Number((e.target as HTMLInputElement).value)),\r\n }),\r\n createVNode('span', {}, [createVNode('span', {}, ':')]),\r\n createVNode('input', {\r\n type: 'number',\r\n class: 'lyt-date-picker__time-input',\r\n value: currentMinutes(),\r\n min: 0,\r\n max: 59,\r\n onInput: (e: Event) => currentMinutes.set(Number((e.target as HTMLInputElement).value)),\r\n }),\r\n createVNode('span', {}, [createVNode('span', {}, ':')]),\r\n createVNode('input', {\r\n type: 'number',\r\n class: 'lyt-date-picker__time-input',\r\n value: currentSeconds(),\r\n min: 0,\r\n max: 59,\r\n onInput: (e: Event) => currentSeconds.set(Number((e.target as HTMLInputElement).value)),\r\n }),\r\n ];\r\n calendarContent.push(createVNode('div', { class: 'lyt-date-picker__time' }, [\r\n ...timeControls,\r\n createVNode('button', {\r\n class: 'lyt-date-picker__confirm-btn',\r\n onClick: handleTimeChange,\r\n }, [createVNode('span', {}, '确定')]),\r\n ]));\r\n }\r\n\r\n const footerContent: VNode[] = [];\r\n\r\n if (p.shortcuts.length > 0) {\r\n const shortcuts: VNode[] = p.shortcuts.map((shortcut: DatePickerShortcut) =>\r\n createVNode('button', {\r\n class: 'lyt-date-picker__shortcut',\r\n onClick: () => handleShortcutClick(shortcut),\r\n }, [createVNode('span', {}, String(shortcut.text))])\r\n );\r\n footerContent.push(createVNode('div', { class: 'lyt-date-picker__shortcuts' }, shortcuts));\r\n }\r\n\r\n if (slots.footer) {\r\n footerContent.push(...slots.footer());\r\n }\r\n\r\n if (footerContent.length > 0) {\r\n calendarContent.push(createVNode('div', { class: 'lyt-date-picker__footer' }, footerContent));\r\n }\r\n\r\n const triggerChildren: VNode[] = [\r\n createVNode('span', {\r\n class: ['lyt-date-picker__input', !displayValue ? 'lyt-date-picker__input--placeholder' : ''].filter(Boolean).join(' '),\r\n }, [createVNode('span', {}, displayValue || String(p.placeholder))]),\r\n ];\r\n\r\n if (p.clearable && displayValue) {\r\n triggerChildren.push(createVNode('span', {\r\n class: 'lyt-date-picker__clear',\r\n onClick: handleClear,\r\n }, [createVNode('span', {}, '×')]));\r\n }\r\n\r\n const dropdownChildren: VNode[] = [];\r\n if (isOpen()) {\r\n dropdownChildren.push(createVNode('div', { class: 'lyt-date-picker__dropdown' }, [\r\n createVNode('div', { class: 'lyt-date-picker__calendar' }, calendarContent),\r\n ]));\r\n }\r\n\r\n return createVNode('div', { class: pickerClass }, [\r\n createVNode('div', { class: 'lyt-date-picker__trigger', onClick: toggleDropdown }, triggerChildren),\r\n ...dropdownChildren,\r\n ]);\r\n };\r\n },\r\n});\r\n\r\nexport type { DatePickerProps, DatePickerSlots, DatePickerShortcut, DatePickerType } from './types';\r\n","/**\r\n * @lytjs/ui - Tree 组件\r\n *\r\n * 树形控件组件,支持勾选、拖拽、连接线等高级功能\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport { getButtonA11yProps, getInputControlA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { TreeNode, TreeSetupProps } from './types';\r\n\r\nexport interface FlattenNode extends TreeNode {\r\n parent: FlattenNode | null;\r\n level: number;\r\n isLeaf: boolean;\r\n isExpanded: boolean;\r\n isChecked: boolean;\r\n isIndeterminate: boolean;\r\n isSelected: boolean;\r\n}\r\n\r\nexport const Tree = defineComponent({\r\n name: 'LytTree',\r\n\r\n props: {\r\n data: { type: Array, default: (): TreeNode[] => [] },\r\n showLine: { type: Boolean, default: false },\r\n showCheckbox: { type: Boolean, default: false },\r\n checkable: { type: Boolean, default: false },\r\n draggable: { type: Boolean, default: false },\r\n defaultExpandAll: { type: Boolean, default: false },\r\n defaultExpandedKeys: { type: Array, default: (): (string | number)[] => [] },\r\n defaultCheckedKeys: { type: Array, default: (): (string | number)[] => [] },\r\n nodeKey: { type: String, default: 'id' },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onCheck: { type: Function, default: undefined },\r\n onSelect: { type: Function, default: undefined },\r\n onExpand: { type: Function, default: undefined },\r\n onNodeClick: { type: Function, default: undefined },\r\n onDragStart: { type: Function, default: undefined },\r\n onDragEnd: { type: Function, default: undefined },\r\n onDrop: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as TreeSetupProps;\r\n const expandedKeys = signal(new Set<string | number>(p.defaultExpandedKeys));\r\n const checkedKeys = signal(new Set<string | number>(p.defaultCheckedKeys));\r\n const selectedKey = signal<string | number | null>(null);\r\n\r\n const flattenTree = (nodes: TreeNode[], parent: FlattenNode | null = null, level = 0): FlattenNode[] => {\r\n const result: FlattenNode[] = [];\r\n\r\n for (const node of nodes) {\r\n const nodeKey = node.id;\r\n const isExpanded = expandedKeys().has(nodeKey);\r\n const isChecked = checkedKeys().has(nodeKey);\r\n\r\n const flatNode: FlattenNode = {\r\n ...node,\r\n parent,\r\n level,\r\n isLeaf: !node.children || node.children.length === 0,\r\n isExpanded,\r\n isChecked,\r\n isIndeterminate: false,\r\n isSelected: selectedKey() === nodeKey,\r\n };\r\n\r\n result.push(flatNode);\r\n\r\n if (isExpanded && node.children) {\r\n result.push(...flattenTree(node.children, flatNode, level + 1));\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n const handleNodeClick = (node: TreeNode) => {\r\n selectedKey.set(node.id);\r\n p.onNodeClick?.(node);\r\n p.onSelect?.(node);\r\n };\r\n\r\n const handleCheck = (node: TreeNode, checked: boolean) => {\r\n const newCheckedKeys = new Set(checkedKeys());\r\n if (checked) {\r\n newCheckedKeys.add(node.id);\r\n } else {\r\n newCheckedKeys.delete(node.id);\r\n }\r\n checkedKeys.set(newCheckedKeys);\r\n p.onCheck?.(p.data, checked);\r\n };\r\n\r\n const handleExpand = (node: TreeNode) => {\r\n const newExpandedKeys = new Set(expandedKeys());\r\n const isExpanded = expandedKeys().has(node.id);\r\n\r\n if (isExpanded) {\r\n newExpandedKeys.delete(node.id);\r\n } else {\r\n newExpandedKeys.add(node.id);\r\n }\r\n\r\n expandedKeys.set(newExpandedKeys);\r\n p.onExpand?.(node, !isExpanded);\r\n };\r\n\r\n const renderTreeNode = (node: FlattenNode): VNode => {\r\n const indent = node.level * 20;\r\n\r\n const nodeContent: VNode[] = [];\r\n\r\n if (!node.isLeaf) {\r\n const expandBtnProps = getButtonA11yProps({ \r\n ariaLabel: node.isExpanded ? '收起' : '展开', \r\n disabled: node.disabled \r\n });\r\n \r\n nodeContent.push(createVNode('span', mergeA11yProps(expandBtnProps, {\r\n class: 'lyt-tree__expand-icon',\r\n onClick: () => handleExpand(node),\r\n }), [createVNode('span', {}, node.isExpanded ? '▼' : '▶')]));\r\n }\r\n\r\n if (p.showCheckbox) {\r\n const checkboxProps = getInputControlA11yProps({ \r\n checked: node.isChecked, \r\n disabled: node.disabled, \r\n ariaLabel: node.label \r\n });\r\n \r\n nodeContent.push(createVNode('input', mergeA11yProps(checkboxProps, {\r\n type: 'checkbox',\r\n checked: node.isChecked,\r\n onChange: (e: Event) => handleCheck(node, (e.target as HTMLInputElement).checked),\r\n })));\r\n }\r\n\r\n const labelBtnProps = getButtonA11yProps({ \r\n ariaLabel: node.label, \r\n disabled: node.disabled \r\n });\r\n \r\n nodeContent.push(createVNode('span', mergeA11yProps(labelBtnProps, {\r\n class: 'lyt-tree__label',\r\n onClick: () => handleNodeClick(node),\r\n }), [createVNode('span', {}, String(node.label))]));\r\n\r\n return createVNode('div', {\r\n key: String(node.id),\r\n class: [\r\n 'lyt-tree__node',\r\n node.isSelected ? 'lyt-tree__node--selected' : '',\r\n node.isChecked ? 'lyt-tree__node--checked' : '',\r\n ].filter(Boolean).join(' '),\r\n style: `padding-left: ${indent}px`,\r\n draggable: p.draggable,\r\n onDragStart: (e: DragEvent) => p.onDragStart?.(node, e),\r\n onDragEnd: (e: DragEvent) => p.onDragEnd?.(node, e),\r\n }, nodeContent);\r\n };\r\n\r\n return () => {\r\n const data = p.data || [];\r\n const flatData = flattenTree(data);\r\n\r\n if (flatData.length === 0) {\r\n return createVNode('div', { class: 'lyt-tree__empty' }, [createVNode('span', {}, '暂无数据')]);\r\n }\r\n\r\n const treeClass = [\r\n 'lyt-tree',\r\n p.showLine ? 'lyt-tree--show-line' : '',\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const a11yProps: Record<string, string | undefined> = {\r\n id: p.id,\r\n role: 'tree',\r\n 'aria-label': p.ariaLabel,\r\n 'aria-describedby': p.ariaDescribedBy,\r\n };\r\n\r\n return createVNode('div', { ...a11yProps, class: treeClass }, flatData.map(node => renderTreeNode(node)));\r\n };\r\n },\r\n});\r\n\r\nexport type { TreeProps, TreeSlots, TreeNode, TreeSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Menu 组件(增强版)\r\n *\r\n * 导航菜单组件,支持垂直和水平模式,子菜单可折叠\r\n * 增强 Accessibility 支持:\r\n * - 完整的 ARIA 属性(menu, menuitem, menubar)\r\n * - 键盘导航改进(方向键导航,Enter 激活,Escape 关闭子菜单)\r\n * - 焦点管理(打开子菜单时聚焦,关闭后返回)\r\n * - 屏幕阅读器支持(Announcements)\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport interface MenuSetupProps {\r\n mode: string;\r\n defaultActive: string;\r\n defaultOpeneds: string[];\r\n uniqueOpened: boolean;\r\n class: string;\r\n id: string;\r\n ariaLabel: string;\r\n ariaDescribedBy: string;\r\n onSelect: ((index: string) => void) | undefined;\r\n onOpen: ((index: string) => void) | undefined;\r\n onClose: ((index: string) => void) | undefined;\r\n}\r\n\r\nexport interface MenuSlots {\r\n default?: () => VNode[];\r\n}\r\n\r\ninterface MenuItemInfo {\r\n index: string;\r\n label: string;\r\n disabled: boolean;\r\n hasChildren: boolean;\r\n element: HTMLElement | null;\r\n}\r\n\r\nexport const Menu = defineComponent({\r\n name: 'LytMenu',\r\n\r\n props: {\r\n mode: { type: String, default: 'horizontal' },\r\n defaultActive: { type: String, default: '' },\r\n defaultOpeneds: { type: Array, default: (): string[] => [] },\r\n uniqueOpened: { type: Boolean, default: false },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onSelect: { type: Function, default: undefined },\r\n onOpen: { type: Function, default: undefined },\r\n onClose: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: MenuSlots }) {\r\n const p = props as unknown as MenuSetupProps;\r\n const activeIndex = signal(p.defaultActive);\r\n const openedIndexes = signal(new Set<string>(p.defaultOpeneds));\r\n const menuRef = signal<HTMLElement | null>(null);\r\n const currentSubmenu = signal<string | null>(null);\r\n const focusedIndex = signal(-1);\r\n const announcement = signal('');\r\n const previousActiveElement = signal<HTMLElement | null>(null);\r\n const menuId = signal(`lyt-menu-${Math.random().toString(36).substr(2, 9)}`);\r\n\r\n const announce = (message: string) => {\r\n announcement.set(message);\r\n setTimeout(() => announcement.set(''), 1000);\r\n };\r\n\r\n const getMenuItems = (): MenuItemInfo[] => {\r\n const items = slots.default?.() || [];\r\n const menuItems: MenuItemInfo[] = [];\r\n\r\n items.forEach((item: VNode) => {\r\n const itemProps = (item as unknown as { props: { index?: string; label?: string; icon?: unknown; children?: unknown[]; disabled?: boolean } }).props;\r\n if (!itemProps || !itemProps.index) return;\r\n\r\n const hasChildren = !!(itemProps.children && (itemProps.children as unknown[]).length > 0);\r\n menuItems.push({\r\n index: itemProps.index,\r\n label: itemProps.label || '',\r\n disabled: !!itemProps.disabled,\r\n hasChildren,\r\n element: null,\r\n });\r\n });\r\n\r\n return menuItems;\r\n };\r\n\r\n const handleSelect = (index: string) => {\r\n activeIndex.set(index);\r\n announce(`已选择菜单项:${index}`);\r\n p.onSelect?.(index);\r\n };\r\n\r\n const toggleSubmenu = (index: string, itemLabel: string) => {\r\n const newOpened = new Set(openedIndexes());\r\n\r\n if (newOpened.has(index)) {\r\n newOpened.delete(index);\r\n announce(`已关闭子菜单:${itemLabel}`);\r\n p.onClose?.(index);\r\n currentSubmenu.set(null);\r\n\r\n const prevEl = previousActiveElement();\r\n if (prevEl && prevEl.focus) {\r\n prevEl.focus();\r\n }\r\n } else {\r\n if (p.uniqueOpened) {\r\n newOpened.clear();\r\n if (currentSubmenu()) {\r\n announce('已关闭其他子菜单');\r\n }\r\n }\r\n newOpened.add(index);\r\n announce(`已打开子菜单:${itemLabel}`);\r\n p.onOpen?.(index);\r\n currentSubmenu.set(index);\r\n\r\n previousActiveElement.set(document.activeElement as HTMLElement);\r\n setTimeout(() => {\r\n const menu = menuRef();\r\n if (menu) {\r\n const submenu = menu.querySelector(`[data-submenu-id=\"${index}\"] ul`);\r\n if (submenu) {\r\n const firstItem = submenu.querySelector('[role=\"menuitem\"]') as HTMLElement;\r\n firstItem?.focus();\r\n }\r\n }\r\n }, 10);\r\n }\r\n\r\n openedIndexes.set(newOpened);\r\n };\r\n\r\n const handleKeydown = (e: KeyboardEvent, itemIndex: string, hasChildren: boolean, itemLabel: string) => {\r\n const menuItems = getMenuItems();\r\n const currentIndex = menuItems.findIndex(item => item.index === itemIndex);\r\n\r\n switch (e.key) {\r\n case 'ArrowDown':\r\n e.preventDefault();\r\n if (hasChildren && !openedIndexes().has(itemIndex)) {\r\n toggleSubmenu(itemIndex, itemLabel);\r\n } else {\r\n for (let i = 1; i <= menuItems.length; i++) {\r\n const nextIndex = (currentIndex + i) % menuItems.length;\r\n const nextItem = menuItems[nextIndex];\r\n if (nextItem && !nextItem.disabled) {\r\n announce(`导航到菜单项:${nextItem.label}`);\r\n focusedIndex.set(nextIndex);\r\n break;\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case 'ArrowUp':\r\n e.preventDefault();\r\n for (let i = 1; i <= menuItems.length; i++) {\r\n const prevIndex = (currentIndex - i + menuItems.length) % menuItems.length;\r\n const prevItem = menuItems[prevIndex];\r\n if (prevItem && !prevItem.disabled) {\r\n announce(`导航到菜单项:${prevItem.label}`);\r\n focusedIndex.set(prevIndex);\r\n break;\r\n }\r\n }\r\n break;\r\n\r\n case 'ArrowRight':\r\n e.preventDefault();\r\n for (let i = 1; i <= menuItems.length; i++) {\r\n const nextIndex = (currentIndex + i) % menuItems.length;\r\n const nextItem = menuItems[nextIndex];\r\n if (nextItem && !nextItem.disabled) {\r\n announce(`导航到菜单项:${nextItem.label}`);\r\n focusedIndex.set(nextIndex);\r\n break;\r\n }\r\n }\r\n break;\r\n\r\n case 'ArrowLeft':\r\n e.preventDefault();\r\n for (let i = 1; i <= menuItems.length; i++) {\r\n const prevIndex = (currentIndex - i + menuItems.length) % menuItems.length;\r\n const prevItem = menuItems[prevIndex];\r\n if (prevItem && !prevItem.disabled) {\r\n announce(`导航到菜单项:${prevItem.label}`);\r\n focusedIndex.set(prevIndex);\r\n break;\r\n }\r\n }\r\n break;\r\n\r\n case 'Enter':\r\n case ' ':\r\n e.preventDefault();\r\n if (hasChildren) {\r\n toggleSubmenu(itemIndex, itemLabel);\r\n } else {\r\n handleSelect(itemIndex);\r\n }\r\n break;\r\n\r\n case 'Escape':\r\n if (openedIndexes().has(itemIndex)) {\r\n e.preventDefault();\r\n toggleSubmenu(itemIndex, itemLabel);\r\n }\r\n break;\r\n\r\n case 'Home': {\r\n e.preventDefault();\r\n const firstEnabled = menuItems.find(item => !item.disabled);\r\n if (firstEnabled) {\r\n announce(`导航到第一个菜单项:${firstEnabled.label}`);\r\n focusedIndex.set(menuItems.indexOf(firstEnabled));\r\n }\r\n break;\r\n }\r\n\r\n case 'End':\r\n e.preventDefault();\r\n for (let i = menuItems.length - 1; i >= 0; i--) {\r\n const item = menuItems[i];\r\n if (item && !item.disabled) {\r\n announce(`导航到最后一个菜单项:${item.label}`);\r\n focusedIndex.set(i);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n };\r\n\r\n return () => {\r\n const menuClass = [\r\n 'lyt-menu',\r\n `lyt-menu--${p.mode}`,\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const items = slots.default?.() || [];\r\n const menuListId = menuId();\r\n\r\n const menuItems: VNode[] = items.map((item: VNode, index: number) => {\r\n const itemProps = (item as unknown as { props: { index?: string; label?: string; icon?: unknown; children?: unknown[]; disabled?: boolean } }).props;\r\n if (!itemProps) return item;\r\n\r\n const isActive = itemProps.index === activeIndex();\r\n const isOpened = openedIndexes().has(itemProps.index as string);\r\n const isFocused = focusedIndex() === index;\r\n\r\n const itemChildren: VNode[] = [];\r\n\r\n if (itemProps.icon) {\r\n itemChildren.push(createVNode('span', { class: 'lyt-menu__icon' }, [itemProps.icon as unknown as VNode]));\r\n }\r\n itemChildren.push(createVNode('span', { class: 'lyt-menu__title' }, [createVNode('span', {}, String(itemProps.label || ''))]));\r\n\r\n const hasChildren = !!(itemProps.children && (itemProps.children as unknown[]).length > 0);\r\n const itemId = `${menuListId}-item-${itemProps.index}`;\r\n\r\n if (hasChildren) {\r\n itemChildren.push(createVNode('span', {\r\n class: ['lyt-menu__arrow', isOpened ? 'lyt-menu__arrow--opened' : ''].filter(Boolean).join(' '),\r\n 'aria-hidden': 'true',\r\n }, [createVNode('span', {}, isOpened ? '▲' : '▼')]));\r\n\r\n const submenuChildren: VNode[] = (itemProps.children as unknown[]).map((child: unknown) => {\r\n const childItem = child as { index?: string; label?: string; icon?: unknown; disabled?: boolean };\r\n const childItemId = `${itemId}-child-${childItem.index}`;\r\n const isChildActive = childItem.index === activeIndex();\r\n\r\n return createVNode('li', {\r\n key: childItem.index,\r\n id: childItemId,\r\n class: [\r\n 'lyt-menu__item',\r\n 'lyt-menu__submenu-item',\r\n isChildActive ? 'lyt-menu__item--active' : '',\r\n childItem.disabled ? 'lyt-menu__item--disabled' : '',\r\n ].filter(Boolean).join(' '),\r\n role: 'menuitem',\r\n 'aria-disabled': childItem.disabled,\r\n onClick: () => {\r\n if (childItem.disabled) return;\r\n handleSelect(childItem.index as string);\r\n },\r\n }, [\r\n childItem.icon ? createVNode('span', { class: 'lyt-menu__icon' }, [childItem.icon as unknown as VNode]) : createVNode('span', {}, ''),\r\n createVNode('span', { class: 'lyt-menu__title' }, [createVNode('span', {}, String(childItem.label || ''))]),\r\n ]);\r\n });\r\n\r\n itemChildren.push(createVNode('div', {\r\n 'data-submenu-id': itemProps.index,\r\n class: ['lyt-menu__submenu', isOpened ? 'lyt-menu__submenu--opened' : ''].filter(Boolean).join(' '),\r\n 'aria-label': itemProps.label,\r\n }, [\r\n createVNode('ul', {\r\n class: 'lyt-menu__submenu-list',\r\n role: 'menu',\r\n }, submenuChildren),\r\n ]));\r\n }\r\n\r\n const itemMenuitemProps = {\r\n id: itemId,\r\n 'aria-disabled': itemProps.disabled ? true : undefined,\r\n 'aria-expanded': hasChildren ? isOpened : undefined,\r\n 'aria-haspopup': hasChildren ? true : undefined,\r\n };\r\n\r\n return createVNode('li', mergeA11yProps(itemMenuitemProps, {\r\n key: itemProps.index,\r\n class: [\r\n 'lyt-menu__item',\r\n isActive ? 'lyt-menu__item--active' : '',\r\n isFocused ? 'lyt-menu__item--focused' : '',\r\n itemProps.disabled ? 'lyt-menu__item--disabled' : '',\r\n ].filter(Boolean).join(' '),\r\n role: 'menuitem',\r\n tabIndex: isFocused ? 0 : -1,\r\n 'aria-haspopup': hasChildren,\r\n 'aria-expanded': hasChildren ? isOpened : undefined,\r\n onClick: () => {\r\n if (itemProps.disabled) return;\r\n if (hasChildren) {\r\n toggleSubmenu(itemProps.index as string, itemProps.label || '');\r\n } else {\r\n handleSelect(itemProps.index as string);\r\n }\r\n },\r\n onKeydown: (e: KeyboardEvent) => handleKeydown(e, itemProps.index as string, hasChildren, itemProps.label || ''),\r\n }), itemChildren);\r\n });\r\n\r\n return createVNode('div', {\r\n ref: (el: HTMLElement) => menuRef.set(el),\r\n }, [\r\n createVNode('ul', {\r\n class: menuClass,\r\n role: 'menubar',\r\n id: p.id || menuListId,\r\n 'aria-label': p.ariaLabel || '主菜单',\r\n }, menuItems),\r\n createVNode('div', {\r\n class: 'lyt-menu__sro',\r\n role: 'status',\r\n 'aria-live': 'polite',\r\n 'aria-atomic': 'true',\r\n }, announcement()),\r\n ]);\r\n };\r\n },\r\n});\r\n\r\nexport type { MenuProps } from './types';\r\n","/**\r\n * @lytjs/ui - Cascader 组件\r\n *\r\n * 级联选择器组件,支持多选、懒加载、数据回显等功能\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { CascaderOption, CascaderSetupProps, CascaderSlots } from './types';\r\nimport { getComboboxA11yProps, getButtonA11yProps, getGroupA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Cascader = defineComponent({\r\n name: 'LytCascader',\r\n\r\n props: {\r\n options: { type: Array, default: (): CascaderOption[] => [] },\r\n modelValue: { type: Array, default: (): (string | number)[] => [] },\r\n placeholder: { type: String, default: '请选择' },\r\n disabled: { type: Boolean, default: false },\r\n clearable: { type: Boolean, default: true },\r\n multiple: { type: Boolean, default: false },\r\n filterable: { type: Boolean, default: false },\r\n checkStrictly: { type: Boolean, default: false },\r\n showAllLevels: { type: Boolean, default: true },\r\n collapseTags: { type: Boolean, default: false },\r\n separator: { type: String, default: ' / ' },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n load: { type: Function, default: undefined },\r\n onChange: { type: Function, default: undefined },\r\n onExpandChange: { type: Function, default: undefined },\r\n onVisibleChange: { type: Function, default: undefined },\r\n onRemoveTag: { type: Function, default: undefined },\r\n onClear: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: CascaderSlots }) {\r\n const p = props as CascaderSetupProps;\r\n const isDropdownOpen = signal(false);\r\n const activePath = signal<(string | number)[]>([]);\r\n const selectedValues = signal<Array<(string | number)[]>>([]);\r\n const searchText = signal('');\r\n const isFiltering = signal(false);\r\n\r\n if (p.modelValue.length > 0) {\r\n if (p.multiple) {\r\n selectedValues.set([...(p.modelValue as Array<(string | number)[]>)]);\r\n } else {\r\n selectedValues.set([(p.modelValue as (string | number)[])]);\r\n }\r\n }\r\n\r\n const toggleDropdown = (visible?: boolean) => {\r\n if (p.disabled) return;\r\n\r\n if (typeof visible === 'boolean') {\r\n isDropdownOpen.set(visible);\r\n } else {\r\n isDropdownOpen.set(!isDropdownOpen());\r\n }\r\n p.onVisibleChange?.(isDropdownOpen());\r\n };\r\n\r\n const clear = () => {\r\n selectedValues.set([]);\r\n activePath.set([]);\r\n isDropdownOpen.set(false);\r\n p.onClear?.();\r\n p.onChange?.([]);\r\n };\r\n\r\n const removeTag = (index: number) => {\r\n if (p.disabled) return;\r\n\r\n const newSelected = [...selectedValues()];\r\n newSelected.splice(index, 1);\r\n selectedValues.set(newSelected);\r\n p.onRemoveTag?.(newSelected);\r\n p.onChange?.(newSelected);\r\n };\r\n\r\n const selectOption = (option: CascaderOption, level: number) => {\r\n if (option.disabled) return;\r\n\r\n const newPath = [...activePath().slice(0, level), option.value];\r\n activePath.set(newPath);\r\n\r\n const nextOptions = option.children || [];\r\n\r\n if (option.isLeaf) {\r\n if (p.multiple) {\r\n const exists = selectedValues().some(item => item.join('-') === newPath.join('-'));\r\n const newSelected = exists\r\n ? selectedValues().filter(item => item.join('-') !== newPath.join('-'))\r\n : [...selectedValues(), newPath];\r\n selectedValues.set(newSelected);\r\n p.onChange?.(newSelected);\r\n } else {\r\n selectedValues.set([newPath]);\r\n isDropdownOpen.set(false);\r\n p.onChange?.(newPath);\r\n }\r\n } else if (nextOptions.length === 0 && p.load) {\r\n option.loading = true;\r\n p.load(option, (children: CascaderOption[]) => {\r\n option.loading = false;\r\n option.children = children;\r\n });\r\n }\r\n };\r\n\r\n const getOptionsAtLevel = (level: number): CascaderOption[] => {\r\n if (isFiltering()) {\r\n const keyword = searchText().toLowerCase();\r\n return filterOptions(p.options, keyword);\r\n }\r\n\r\n let options: CascaderOption[] = [...p.options];\r\n for (let i = 0; i < level; i++) {\r\n const found = options.find(opt => opt.value === activePath()[i]);\r\n options = found?.children || [];\r\n if (options.length === 0) break;\r\n }\r\n return options;\r\n };\r\n\r\n const filterOptions = (options: CascaderOption[], keyword: string): CascaderOption[] => {\r\n return options.reduce((acc: CascaderOption[], option) => {\r\n const match = option.label.toLowerCase().includes(keyword);\r\n const children = option.children ? filterOptions(option.children, keyword) : [];\r\n\r\n if (match || children.length > 0) {\r\n acc.push({ ...option, children: children.length > 0 ? children : undefined });\r\n }\r\n return acc;\r\n }, []);\r\n };\r\n\r\n const getDisplayText = (): string => {\r\n const values = selectedValues();\r\n\r\n if (values.length === 0) {\r\n return p.placeholder;\r\n }\r\n\r\n if (!p.multiple) {\r\n return getPathLabel(values[0] || []);\r\n }\r\n\r\n return `${values.length} 项`;\r\n };\r\n\r\n const getPathLabel = (path: (string | number)[]): string => {\r\n const labels: string[] = [];\r\n let currentOptions: CascaderOption[] = p.options;\r\n\r\n for (const value of path) {\r\n const found = currentOptions.find(opt => opt.value === value);\r\n if (found) {\r\n labels.push(found.label);\r\n currentOptions = found.children || [];\r\n }\r\n }\r\n\r\n return p.showAllLevels ? labels.join(p.separator) : (labels[labels.length - 1] || '');\r\n };\r\n\r\n const renderOption = (option: CascaderOption, level: number): VNode => {\r\n const isActive = activePath()[level] === option.value;\r\n const isSelected = selectedValues().some(path => path.join('-') === [...activePath().slice(0, level), option.value].join('-'));\r\n\r\n const optionChildren: VNode[] = [];\r\n\r\n if (option.loading) {\r\n optionChildren.push(createVNode('span', { class: 'lyt-cascader__loading' }, [createVNode('span', {}, '⏳')]));\r\n }\r\n\r\n if (slots.default) {\r\n optionChildren.push(...slots.default(option));\r\n } else {\r\n const labelBtnProps = getButtonA11yProps({ \r\n ariaLabel: option.label, \r\n disabled: option.disabled \r\n });\r\n optionChildren.push(createVNode('span', mergeA11yProps(labelBtnProps, {}), String(option.label)));\r\n }\r\n\r\n if (option.children && !option.isLeaf) {\r\n optionChildren.push(createVNode('span', { class: 'lyt-cascader__arrow' }, [createVNode('span', {}, '▶')]));\r\n }\r\n\r\n return createVNode('div', {\r\n key: String(option.value),\r\n class: [\r\n 'lyt-cascader__option',\r\n isActive ? 'lyt-cascader__option--active' : '',\r\n isSelected ? 'lyt-cascader__option--selected' : '',\r\n option.disabled ? 'lyt-cascader__option--disabled' : '',\r\n ].filter(Boolean).join(' '),\r\n onClick: () => selectOption(option, level),\r\n }, optionChildren);\r\n };\r\n\r\n return () => {\r\n const cascaderClass = [\r\n 'lyt-cascader',\r\n isDropdownOpen() ? 'lyt-cascader--open' : '',\r\n p.disabled ? 'lyt-cascader--disabled' : '',\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const isValueSet = selectedValues().length > 0;\r\n \r\n const a11yProps = getComboboxA11yProps({\r\n id: p.id,\r\n ariaLabel: p.ariaLabel,\r\n ariaDescribedBy: p.ariaDescribedBy,\r\n disabled: p.disabled,\r\n expanded: isDropdownOpen(),\r\n controls: undefined,\r\n });\r\n\r\n const contentChildren: VNode[] = [];\r\n\r\n if (p.multiple && isValueSet) {\r\n selectedValues().forEach((path, index) => {\r\n const removeBtnProps = getButtonA11yProps({ ariaLabel: '移除标签' });\r\n contentChildren.push(createVNode('span', { class: 'lyt-cascader__tag', key: index }, [\r\n createVNode('span', {}, getPathLabel(path)),\r\n createVNode('span', mergeA11yProps(removeBtnProps, { \r\n class: 'lyt-cascader__tag-close', \r\n onClick: () => removeTag(index) \r\n }), [createVNode('span', {}, '×')]),\r\n ]));\r\n });\r\n } else {\r\n contentChildren.push(createVNode('span', {\r\n class: ['lyt-cascader__value', !isValueSet ? 'lyt-cascader__placeholder' : ''].filter(Boolean).join(' '),\r\n }, [createVNode('span', {}, getDisplayText())]));\r\n }\r\n\r\n if (p.clearable && isValueSet) {\r\n const clearBtnProps = getButtonA11yProps({ ariaLabel: '清除' });\r\n contentChildren.push(createVNode('span', mergeA11yProps(clearBtnProps, {\r\n class: 'lyt-cascader__clear',\r\n onClick: (e: Event) => { e.stopPropagation(); clear(); },\r\n }), [createVNode('span', {}, '×')]));\r\n }\r\n\r\n contentChildren.push(createVNode('span', { class: 'lyt-cascader__arrow' }, [createVNode('span', {}, '▼')]));\r\n\r\n const dropdownContent: VNode[] = [];\r\n\r\n if (p.filterable) {\r\n dropdownContent.push(createVNode('div', mergeA11yProps({\r\n role: 'search',\r\n }, { class: 'lyt-cascader__search' }), [\r\n createVNode('input', {\r\n type: 'text',\r\n placeholder: '搜索',\r\n value: searchText(),\r\n onInput: (e: Event) => {\r\n const value = (e.target as HTMLInputElement).value;\r\n searchText.set(value);\r\n isFiltering.set(value.length > 0);\r\n },\r\n }),\r\n ]));\r\n }\r\n\r\n const maxLevel = isFiltering() ? 1 : activePath().length + 1;\r\n for (let i = 0; i < maxLevel; i++) {\r\n const options = getOptionsAtLevel(i);\r\n if (options.length > 0 || i === 0) {\r\n const panelProps = getGroupA11yProps({ role: 'listbox' });\r\n dropdownContent.push(createVNode('div', mergeA11yProps(panelProps, { class: 'lyt-cascader__panel', key: i }), options.map(option => renderOption(option, i))));\r\n }\r\n }\r\n\r\n const resultChildren: VNode[] = [\r\n createVNode('div', mergeA11yProps(a11yProps, { class: 'lyt-cascader__trigger' }), contentChildren),\r\n ];\r\n\r\n if (isDropdownOpen()) {\r\n const dropdownChildren: VNode[] = [];\r\n if (p.options.length === 0) {\r\n if (slots.empty) {\r\n dropdownChildren.push(...slots.empty());\r\n } else {\r\n dropdownChildren.push(createVNode('span', {}, '暂无数据'));\r\n }\r\n } else {\r\n dropdownChildren.push(...dropdownContent);\r\n }\r\n\r\n resultChildren.push(createVNode('div', { class: 'lyt-cascader__dropdown' }, dropdownChildren));\r\n }\r\n\r\n return createVNode('div', {\r\n class: cascaderClass,\r\n onClick: () => toggleDropdown(),\r\n }, resultChildren);\r\n };\r\n },\r\n});\r\n\r\nexport type { CascaderProps, CascaderSlots, CascaderOption, CascaderSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - TreeSelect 树形选择器组件\r\n *\r\n * 树形选择器组件,结合了 Select 和 Tree 功能\r\n */\r\n\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport { getComboboxA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport interface TreeSelectNode {\r\n value: string | number;\r\n label: string;\r\n children?: TreeSelectNode[];\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface TreeSelectSetupProps {\r\n data: TreeSelectNode[];\r\n value: string | number;\r\n placeholder: string;\r\n multiple: boolean;\r\n clearable: boolean;\r\n filterable: boolean;\r\n filterPlaceholder: string;\r\n nodeKey: string;\r\n defaultExpandAll: boolean;\r\n defaultExpandedKeys: (string | number)[];\r\n class: string;\r\n style: string | Record<string, string>;\r\n id: string;\r\n ariaLabel: string;\r\n ariaDescribedBy: string;\r\n onChange: ((value: string | number, node: TreeSelectNode) => void) | undefined;\r\n}\r\n\r\ntype NodeDict = Record<string, unknown>;\r\n\r\nexport const TreeSelect = defineComponent({\r\n name: 'LytTreeSelect',\r\n\r\n props: {\r\n data: { type: Array as () => TreeSelectNode[], default: () => [] },\r\n value: { type: [String, Number] as unknown as PropType<string | number>, default: '' },\r\n placeholder: { type: String, default: '请选择' },\r\n multiple: { type: Boolean, default: false },\r\n clearable: { type: Boolean, default: false },\r\n filterable: { type: Boolean, default: false },\r\n filterPlaceholder: { type: String, default: '请输入搜索内容' },\r\n nodeKey: { type: String, default: 'value' },\r\n defaultExpandAll: { type: Boolean, default: false },\r\n defaultExpandedKeys: { type: Array as () => (string | number)[], default: () => [] },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots, emit }) {\r\n const _props = props as unknown as TreeSelectSetupProps;\r\n const visible = signal(false);\r\n const filterQuery = signal('');\r\n const expandedKeys = signal<(string | number)[]>(\r\n _props.defaultExpandAll\r\n ? getAllNodeKeys(_props.data)\r\n : _props.defaultExpandedKeys\r\n );\r\n const selectedLabel = signal('');\r\n\r\n function getAllNodeKeys(nodes: TreeSelectNode[]): (string | number)[] {\r\n const keys: (string | number)[] = [];\r\n const traverse = (nodeList: TreeSelectNode[]) => {\r\n for (const node of nodeList) {\r\n const nodeDict = node as unknown as NodeDict;\r\n const nodeValue = nodeDict[_props.nodeKey];\r\n if (typeof nodeValue === 'string' || typeof nodeValue === 'number') {\r\n keys.push(nodeValue);\r\n }\r\n if (node.children && node.children.length > 0) {\r\n traverse(node.children);\r\n }\r\n }\r\n };\r\n traverse(nodes);\r\n return keys;\r\n }\r\n\r\n const filteredData = (): TreeSelectNode[] => {\r\n const query = filterQuery();\r\n if (!query) return _props.data;\r\n\r\n const filterNodes = (nodes: TreeSelectNode[]): TreeSelectNode[] => {\r\n const result: TreeSelectNode[] = [];\r\n for (const node of nodes) {\r\n let filteredChildren: TreeSelectNode[] | undefined;\r\n if (node.children && node.children.length > 0) {\r\n filteredChildren = filterNodes(node.children);\r\n }\r\n\r\n const labelMatch = node.label.toLowerCase().includes(query.toLowerCase());\r\n const hasMatchingChildren = filteredChildren && filteredChildren.length > 0;\r\n\r\n if (labelMatch || hasMatchingChildren) {\r\n const filteredNode: TreeSelectNode = {\r\n ...node,\r\n children: hasMatchingChildren ? filteredChildren : node.children,\r\n };\r\n result.push(filteredNode);\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n return filterNodes(_props.data);\r\n };\r\n\r\n const selectedNode = (): TreeSelectNode | null => {\r\n const findNode = (nodes: TreeSelectNode[]): TreeSelectNode | null => {\r\n for (const node of nodes) {\r\n const nodeDict = node as unknown as NodeDict;\r\n const nodeValue = nodeDict[_props.nodeKey];\r\n if (nodeValue === _props.value) {\r\n return node;\r\n }\r\n if (node.children && node.children.length > 0) {\r\n const found = findNode(node.children);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n return findNode(_props.data);\r\n };\r\n\r\n const handleToggle = () => {\r\n visible.update(v => !v);\r\n };\r\n\r\n const handleClear = () => {\r\n emit('update:value', '');\r\n _props.onChange?.('' as unknown as string | number, null as unknown as TreeSelectNode);\r\n };\r\n\r\n const handleSelect = (node: TreeSelectNode) => {\r\n if (node.disabled) return;\r\n const nodeDict = node as unknown as NodeDict;\r\n const nodeValue = nodeDict[_props.nodeKey] as string | number;\r\n emit('update:value', nodeValue);\r\n _props.onChange?.(nodeValue, node);\r\n selectedLabel.set(node.label);\r\n visible.set(false);\r\n };\r\n\r\n const handleToggleExpand = (node: TreeSelectNode, e: Event) => {\r\n e.stopPropagation();\r\n const nodeDict = node as unknown as NodeDict;\r\n const nodeKey = nodeDict[_props.nodeKey] as string | number;\r\n const keys = expandedKeys();\r\n if (keys.includes(nodeKey)) {\r\n expandedKeys.set(keys.filter(k => k !== nodeKey));\r\n } else {\r\n expandedKeys.update(k => [...k, nodeKey]);\r\n }\r\n };\r\n\r\n const getTreeSelectClass = () => {\r\n const classes = ['lyt-tree-select'];\r\n if (visible()) classes.push('is-visible');\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getTreeSelectStyle = (): string | Record<string, string> => {\r\n if (!_props.style) return {};\r\n if (isString(_props.style)) return _props.style;\r\n if (isObject(_props.style)) return _props.style;\r\n return {};\r\n };\r\n\r\n const renderNode = (node: TreeSelectNode, level: number = 0): VNode => {\r\n const keys = expandedKeys();\r\n const nodeDict = node as unknown as NodeDict;\r\n const nodeKey = nodeDict[_props.nodeKey] as string | number;\r\n const isExpanded = keys.includes(nodeKey);\r\n const isSelected = nodeKey === _props.value;\r\n const hasChildren = node.children && node.children.length > 0;\r\n\r\n const nodeChildren: VNode[] = [];\r\n\r\n if (hasChildren) {\r\n const expandBtnProps = getButtonA11yProps({\r\n ariaLabel: isExpanded ? '收起' : '展开',\r\n disabled: node.disabled\r\n });\r\n nodeChildren.push(createVNode('span', mergeA11yProps(expandBtnProps, {\r\n class: ['lyt-tree-node-expand-icon', isExpanded ? 'is-expanded' : ''],\r\n onClick: (e: Event) => handleToggleExpand(node, e),\r\n }), [createVNode('span', {}, isExpanded ? '▼' : '▶')]));\r\n } else {\r\n nodeChildren.push(createVNode('span', { class: 'lyt-tree-node-expand-icon' }, [createVNode('span', {}, '')]));\r\n }\r\n\r\n const labelBtnProps = getButtonA11yProps({\r\n ariaLabel: node.label,\r\n disabled: node.disabled\r\n });\r\n nodeChildren.push(createVNode('span', mergeA11yProps(labelBtnProps, {\r\n class: 'lyt-tree-node-label',\r\n }), [createVNode('span', {}, node.label)]));\r\n\r\n const nodeVNode = createVNode('div', {\r\n class: ['lyt-tree-node', { 'is-selected': isSelected, 'is-disabled': node.disabled, 'is-expanded': isExpanded }],\r\n style: { paddingLeft: `${level * 20}px` },\r\n onClick: () => handleSelect(node),\r\n }, nodeChildren);\r\n\r\n if (hasChildren && isExpanded && node.children) {\r\n const childNodes = node.children.map((child: TreeSelectNode) => renderNode(child, level + 1));\r\n return createVNode('div', { class: 'lyt-tree-node-wrapper' }, [nodeVNode, ...childNodes]);\r\n }\r\n\r\n return nodeVNode;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n const triggerChildren: VNode[] = [];\r\n\r\n const a11yProps = getComboboxA11yProps({\r\n id: _props.id,\r\n ariaLabel: _props.ariaLabel,\r\n ariaDescribedBy: _props.ariaDescribedBy,\r\n disabled: false,\r\n expanded: visible(),\r\n controls: undefined,\r\n });\r\n\r\n const currentNode = selectedNode();\r\n triggerChildren.push(createVNode('span', { class: 'lyt-tree-select-value' },\r\n currentNode ? [createVNode('span', {}, currentNode.label)] : [createVNode('span', {}, _props.placeholder)]\r\n ));\r\n\r\n if (_props.clearable && currentNode) {\r\n const clearBtnProps = getButtonA11yProps({ ariaLabel: '清除' });\r\n triggerChildren.push(createVNode('span', mergeA11yProps(clearBtnProps, {\r\n class: 'lyt-tree-select-clear',\r\n onClick: (e: Event) => {\r\n e.stopPropagation();\r\n handleClear();\r\n },\r\n }), [createVNode('span', {}, '×')]));\r\n }\r\n\r\n triggerChildren.push(createVNode('span', { class: 'lyt-tree-select-arrow' }, [createVNode('span', {}, '▼')]));\r\n\r\n children.push(createVNode('div', mergeA11yProps(a11yProps, {\r\n class: 'lyt-tree-select-trigger',\r\n onClick: handleToggle,\r\n }), triggerChildren));\r\n\r\n if (visible()) {\r\n const dropdownChildren: VNode[] = [];\r\n\r\n if (_props.filterable) {\r\n dropdownChildren.push(createVNode('div', { role: 'search', class: 'lyt-tree-select-search' }, [\r\n createVNode('input', {\r\n type: 'text',\r\n placeholder: _props.filterPlaceholder,\r\n value: filterQuery(),\r\n onInput: (e: Event) => {\r\n const target = e.target as HTMLInputElement;\r\n filterQuery.set(target.value);\r\n },\r\n }),\r\n ]));\r\n }\r\n\r\n const treeChildren: VNode[] = [];\r\n const nodes = filteredData();\r\n if (nodes.length > 0) {\r\n for (const node of nodes) {\r\n treeChildren.push(renderNode(node, 0));\r\n }\r\n } else if (slots.empty) {\r\n const emptyContent = slots.empty();\r\n treeChildren.push(createVNode('div', { class: 'lyt-tree-select-empty' }, emptyContent as VNode[]));\r\n } else {\r\n treeChildren.push(createVNode('div', { class: 'lyt-tree-select-empty' }, [createVNode('span', {}, '暂无数据')]));\r\n }\r\n\r\n dropdownChildren.push(createVNode('div', { role: 'tree', class: 'lyt-tree-select-tree' }, treeChildren));\r\n\r\n children.push(createVNode('div', { class: 'lyt-tree-select-dropdown' }, dropdownChildren));\r\n }\r\n\r\n return createVNode('div', {\r\n class: getTreeSelectClass(),\r\n style: getTreeSelectStyle(),\r\n }, children);\r\n };\r\n },\r\n});\r\n","/**\r\n * @lytjs/ui - Transfer 穿梭框组件\r\n *\r\n * 穿梭框组件,用于将数据从一侧移动到另一侧\r\n */\r\n\r\nimport type { TransferProps, TransferSlots, TransferSetupProps, TransferOption } from './types';\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { signal } from '@lytjs/reactivity';\r\n\r\nexport const Transfer = defineComponent({\r\n name: 'LytTransfer',\r\n\r\n props: {\r\n data: { type: Array as () => TransferOption[], default: () => [] },\r\n value: { type: Array as () => (string | number)[], default: () => [] },\r\n filterable: { type: Boolean, default: false },\r\n filterPlaceholder: { type: String, default: '请输入搜索内容' },\r\n titles: { type: Array as () => string[], default: () => ['源列表', '目标列表'] },\r\n buttonTexts: { type: Array as () => string[], default: () => ['', ''] },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots, emit }) {\r\n const _props = props as TransferSetupProps;\r\n const leftCheckedKeys = signal<(string | number)[]>([]);\r\n const rightCheckedKeys = signal<(string | number)[]>([]);\r\n const leftFilterQuery = signal('');\r\n const rightFilterQuery = signal('');\r\n\r\n const leftData = () => {\r\n return (_props.data as TransferOption[]).filter(item => !(_props.value as (string | number)[]).includes(item.key));\r\n };\r\n\r\n const rightData = () => {\r\n return (_props.data as TransferOption[]).filter(item => (_props.value as (string | number)[]).includes(item.key));\r\n };\r\n\r\n const filteredLeftData = () => {\r\n const query = leftFilterQuery();\r\n const data = leftData();\r\n if (!query) return data;\r\n return data.filter(item =>\r\n item.label.toLowerCase().includes(query.toLowerCase())\r\n );\r\n };\r\n\r\n const filteredRightData = () => {\r\n const query = rightFilterQuery();\r\n const data = rightData();\r\n if (!query) return data;\r\n return data.filter(item =>\r\n item.label.toLowerCase().includes(query.toLowerCase())\r\n );\r\n };\r\n\r\n const handleMoveToRight = () => {\r\n const newValues = [...(_props.value as (string | number)[]), ...leftCheckedKeys()];\r\n emit('update:value', newValues);\r\n _props.onChange?.(newValues, 'right', leftCheckedKeys());\r\n leftCheckedKeys.set([]);\r\n };\r\n\r\n const handleMoveToLeft = () => {\r\n const newValues = (_props.value as (string | number)[]).filter(key => !rightCheckedKeys().includes(key));\r\n emit('update:value', newValues);\r\n _props.onChange?.(newValues, 'left', rightCheckedKeys());\r\n rightCheckedKeys.set([]);\r\n };\r\n\r\n const getTransferClass = () => {\r\n const classes = ['lyt-transfer'];\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getTransferStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n const renderItem = (item: TransferOption, list: 'left' | 'right') => {\r\n const leftChecked = leftCheckedKeys();\r\n const rightChecked = rightCheckedKeys();\r\n const checked = list === 'left'\r\n ? leftChecked.includes(item.key)\r\n : rightChecked.includes(item.key);\r\n\r\n const handleCheck = () => {\r\n if (item.disabled) return;\r\n if (list === 'left') {\r\n if (checked) {\r\n leftCheckedKeys.set(leftChecked.filter((k: string | number) => k !== item.key));\r\n } else {\r\n leftCheckedKeys.update(keys => [...keys, item.key]);\r\n }\r\n } else {\r\n if (checked) {\r\n rightCheckedKeys.set(rightChecked.filter((k: string | number) => k !== item.key));\r\n } else {\r\n rightCheckedKeys.update(keys => [...keys, item.key]);\r\n }\r\n }\r\n };\r\n\r\n return createVNode('div', {\r\n class: ['lyt-transfer-panel-item', { 'is-disabled': item.disabled, 'is-checked': checked }],\r\n onClick: handleCheck,\r\n key: item.key,\r\n }, [createVNode('span', {}, item.label)]);\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n const leftPanelChildren: VNode[] = [];\r\n leftPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-header' }, [createVNode('span', {}, (_props.titles as string[])[0] || '')]));\r\n\r\n if (_props.filterable) {\r\n const filterInput = createVNode('input', {\r\n class: 'lyt-transfer-filter',\r\n type: 'text',\r\n placeholder: _props.filterPlaceholder,\r\n value: leftFilterQuery(),\r\n onInput: (e: Event) => {\r\n const target = e.target as HTMLInputElement;\r\n leftFilterQuery.set(target.value);\r\n },\r\n });\r\n const items = filteredLeftData().map((item: TransferOption) => renderItem(item, 'left'));\r\n leftPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-body' }, [filterInput, ...items]));\r\n } else {\r\n const items = filteredLeftData().map((item: TransferOption) => renderItem(item, 'left'));\r\n leftPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-body' }, items));\r\n }\r\n\r\n if (slots.leftFooter) {\r\n const footerContent = slots.leftFooter();\r\n leftPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-footer' }, footerContent as VNode[]));\r\n }\r\n\r\n children.push(createVNode('div', { class: 'lyt-transfer-panel' }, leftPanelChildren));\r\n\r\n const buttonChildren: VNode[] = [];\r\n const rightDisabled = leftCheckedKeys().length === 0;\r\n buttonChildren.push(createVNode('button', {\r\n class: ['lyt-button', 'lyt-button--default', rightDisabled ? 'is-disabled' : ''],\r\n disabled: rightDisabled,\r\n onClick: handleMoveToRight,\r\n }, [createVNode('span', {}, (_props.buttonTexts as string[])[0] || '→')]));\r\n\r\n const leftDisabled = rightCheckedKeys().length === 0;\r\n buttonChildren.push(createVNode('button', {\r\n class: ['lyt-button', 'lyt-button--default', leftDisabled ? 'is-disabled' : ''],\r\n disabled: leftDisabled,\r\n onClick: handleMoveToLeft,\r\n }, [createVNode('span', {}, (_props.buttonTexts as string[])[1] || '←')]));\r\n\r\n children.push(createVNode('div', { class: 'lyt-transfer-buttons' }, buttonChildren));\r\n\r\n const rightPanelChildren: VNode[] = [];\r\n rightPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-header' }, [createVNode('span', {}, (_props.titles as string[])[1] || '')]));\r\n\r\n if (_props.filterable) {\r\n const filterInput = createVNode('input', {\r\n class: 'lyt-transfer-filter',\r\n type: 'text',\r\n placeholder: _props.filterPlaceholder,\r\n value: rightFilterQuery(),\r\n onInput: (e: Event) => {\r\n const target = e.target as HTMLInputElement;\r\n rightFilterQuery.set(target.value);\r\n },\r\n });\r\n const items = filteredRightData().map((item: TransferOption) => renderItem(item, 'right'));\r\n rightPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-body' }, [filterInput, ...items]));\r\n } else {\r\n const items = filteredRightData().map((item: TransferOption) => renderItem(item, 'right'));\r\n rightPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-body' }, items));\r\n }\r\n\r\n if (slots.rightFooter) {\r\n const footerContent = slots.rightFooter();\r\n rightPanelChildren.push(createVNode('div', { class: 'lyt-transfer-panel-footer' }, footerContent as VNode[]));\r\n }\r\n\r\n children.push(createVNode('div', { class: 'lyt-transfer-panel' }, rightPanelChildren));\r\n\r\n return createVNode('div', {\r\n class: getTransferClass(),\r\n style: getTransferStyle(),\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { TransferProps, TransferSlots };\r\n","/**\r\n * @lytjs/ui - Descriptions 组件\r\n *\r\n * 描述列表组件,支持行列合并、垂直/水平布局、自适应、插槽自定义\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport type { DescriptionsSetupProps, DescriptionsSlots, DescriptionsItemSetupProps, DescriptionsItemSlots } from './types';\r\n\r\ninterface DescriptionsItemData {\r\n label: string;\r\n value: string;\r\n span?: number;\r\n labelStyle?: Record<string, string>;\r\n contentStyle?: Record<string, string>;\r\n}\r\n\r\nexport const Descriptions = defineComponent({\r\n name: 'LytDescriptions',\r\n\r\n props: {\r\n title: { type: String, default: '' },\r\n column: { type: Number, default: 3 },\r\n border: { type: Boolean, default: false },\r\n size: { type: String, default: 'medium' },\r\n layout: { type: String, default: 'horizontal' },\r\n class: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: DescriptionsSlots }) {\r\n const p = props as DescriptionsSetupProps;\r\n\r\n return () => {\r\n const resultChildren: VNode[] = [];\r\n\r\n if (p.title || slots.title) {\r\n const titleContent: VNode[] = [];\r\n if (slots.title) {\r\n titleContent.push(...slots.title());\r\n } else {\r\n titleContent.push(createVNode('span', {}, String(p.title)));\r\n }\r\n resultChildren.push(createVNode('div', { class: 'lyt-descriptions__header' }, titleContent));\r\n }\r\n\r\n const bodyChildren: VNode[] = [];\r\n\r\n if (slots.default) {\r\n bodyChildren.push(...slots.default());\r\n }\r\n\r\n resultChildren.push(createVNode(\r\n 'div',\r\n {\r\n class: `lyt-descriptions__body ${p.layout === 'vertical' ? 'lyt-descriptions__body--vertical' : ''}`,\r\n style: {\r\n display: 'grid',\r\n gridTemplateColumns: `repeat(${p.column}, 1fr)`,\r\n gap: p.border ? '0' : '16px 24px',\r\n },\r\n },\r\n bodyChildren\r\n ));\r\n\r\n return createVNode('div', {\r\n class: [\r\n 'lyt-descriptions',\r\n p.border ? 'lyt-descriptions--bordered' : '',\r\n p.size !== 'medium' ? `lyt-descriptions--${p.size}` : '',\r\n p.class,\r\n ].filter(Boolean).join(' '),\r\n }, resultChildren);\r\n };\r\n },\r\n});\r\n\r\nexport const DescriptionsItem = defineComponent({\r\n name: 'LytDescriptionsItem',\r\n\r\n props: {\r\n label: { type: String, default: '' },\r\n span: { type: Number, default: 1 },\r\n labelStyle: { type: Object, default: undefined },\r\n contentStyle: { type: Object, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: DescriptionsItemSlots }) {\r\n const p = props as DescriptionsItemSetupProps;\r\n\r\n return () => {\r\n const labelContent: VNode[] = [];\r\n if (slots.label) {\r\n labelContent.push(...slots.label());\r\n } else if (p.label) {\r\n labelContent.push(createVNode('span', {}, String(p.label)));\r\n }\r\n\r\n const contentContent: VNode[] = [];\r\n if (slots.default) {\r\n contentContent.push(...slots.default());\r\n }\r\n\r\n return createVNode(\r\n 'div',\r\n {\r\n class: 'lyt-descriptions-item',\r\n style: { gridColumn: `span ${p.span}` },\r\n },\r\n [\r\n createVNode(\r\n 'div',\r\n {\r\n class: 'lyt-descriptions-item__label',\r\n style: p.labelStyle,\r\n },\r\n labelContent.length > 0 ? labelContent : [createVNode('span', {}, '')]\r\n ),\r\n createVNode(\r\n 'div',\r\n {\r\n class: 'lyt-descriptions-item__content',\r\n style: p.contentStyle,\r\n },\r\n contentContent.length > 0 ? contentContent : [createVNode('span', {}, '')]\r\n ),\r\n ]\r\n );\r\n };\r\n },\r\n});\r\n\r\nexport default Descriptions;\r\nexport type { DescriptionsItemData };\r\nexport type { DescriptionsProps, DescriptionsSlots, DescriptionsSetupProps, DescriptionsItemProps, DescriptionsItemSlots, DescriptionsItemSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Modal 组件\r\n *\r\n * 对话框组件,支持拖拽移动、全屏显示、自定义页脚、层级管理、动画优化\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport { getDialogA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { ModalSetupProps, ModalSlots } from './types';\r\n\r\nexport const Modal = defineComponent({\r\n name: 'LytModal',\r\n\r\n props: {\r\n modelValue: { type: Boolean, default: false },\r\n title: { type: String, default: '' },\r\n width: { type: [String, Number] as unknown as StringConstructor, default: '50%' },\r\n top: { type: String, default: '15vh' },\r\n showClose: { type: Boolean, default: true },\r\n closeOnClickModal: { type: Boolean, default: true },\r\n closeOnPressEscape: { type: Boolean, default: true },\r\n lockScroll: { type: Boolean, default: true },\r\n draggable: { type: Boolean, default: false },\r\n fullscreen: { type: Boolean, default: false },\r\n appendToBody: { type: Boolean, default: false },\r\n customClass: { type: String, default: '' },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaModal: { type: Boolean, default: true },\r\n onBeforeOpen: { type: Function, default: undefined },\r\n onBeforeClose: { type: Function, default: undefined },\r\n onOpen: { type: Function, default: undefined },\r\n onClose: { type: Function, default: undefined },\r\n onConfirm: { type: Function, default: undefined },\r\n onCancel: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: ModalSlots }) {\r\n const p = props as ModalSetupProps;\r\n const isClosing = signal(false);\r\n const isFullscreen = signal(p.fullscreen);\r\n\r\n const close = async () => {\r\n if (isClosing()) return;\r\n if (p.onBeforeClose) {\r\n const result = await p.onBeforeClose();\r\n if (result === false) return;\r\n }\r\n isClosing.set(true);\r\n p.onClose?.();\r\n setTimeout(() => { isClosing.set(false); }, 300);\r\n };\r\n\r\n const handleModalClick = () => {\r\n if (p.closeOnClickModal) close();\r\n };\r\n\r\n const handleKeydown = (e: KeyboardEvent) => {\r\n if (p.closeOnPressEscape && e.key === 'Escape') {\r\n e.preventDefault();\r\n close();\r\n }\r\n p.onKeydown?.(e);\r\n };\r\n\r\n return () => {\r\n if (!p.modelValue) {\r\n return createVNode('div', { style: 'display: none;' }, []);\r\n }\r\n\r\n const headerChildren: VNode[] = [];\r\n\r\n if (slots.header) {\r\n headerChildren.push(createVNode('div', { \r\n class: 'lyt-modal__header',\r\n id: p.id ? `${p.id}-header` : undefined,\r\n }, slots.header()));\r\n } else if (p.title) {\r\n const titlePart: VNode[] = [\r\n createVNode('span', { \r\n class: 'lyt-modal__title',\r\n id: p.id ? `${p.id}-title` : undefined,\r\n }, [createTextVNode(String(p.title))]),\r\n ];\r\n\r\n if (p.showClose) {\r\n const closeBtnProps = getButtonA11yProps({\r\n ariaLabel: 'Close dialog',\r\n });\r\n titlePart.push(createVNode('button', mergeA11yProps(closeBtnProps, {\r\n class: 'lyt-modal__close',\r\n onClick: close,\r\n }), [createTextVNode('×')]));\r\n }\r\n\r\n headerChildren.push(createVNode('div', { \r\n class: 'lyt-modal__header',\r\n id: p.id ? `${p.id}-header` : undefined,\r\n }, titlePart));\r\n }\r\n\r\n const bodyChildren: VNode[] = [];\r\n if (slots.default) {\r\n bodyChildren.push(...slots.default());\r\n }\r\n\r\n const footerChildren: VNode[] = [];\r\n if (slots.footer) {\r\n footerChildren.push(createVNode('div', { \r\n class: 'lyt-modal__footer',\r\n id: p.id ? `${p.id}-footer` : undefined,\r\n }, slots.footer()));\r\n } else {\r\n const cancelBtnProps = getButtonA11yProps({\r\n ariaLabel: 'Cancel',\r\n });\r\n const confirmBtnProps = getButtonA11yProps({\r\n ariaLabel: 'Confirm',\r\n });\r\n footerChildren.push(\r\n createVNode('div', { \r\n class: 'lyt-modal__footer',\r\n id: p.id ? `${p.id}-footer` : undefined,\r\n }, [\r\n createVNode('button', mergeA11yProps(cancelBtnProps, {\r\n class: 'lyt-modal__cancel-btn',\r\n onClick: close,\r\n }), [createTextVNode('取消')]),\r\n createVNode('button', mergeA11yProps(confirmBtnProps, {\r\n class: 'lyt-modal__confirm-btn',\r\n onClick: () => p.onConfirm?.(),\r\n }), [createTextVNode('确定')]),\r\n ])\r\n );\r\n }\r\n\r\n const modalClass = [\r\n 'lyt-modal',\r\n isClosing() ? 'lyt-modal--closing' : '',\r\n isFullscreen() ? 'lyt-modal--fullscreen' : '',\r\n p.customClass as string,\r\n p.class as string,\r\n ].filter(Boolean).join(' ');\r\n\r\n const modalWidth = typeof p.width === 'number' ? `${p.width}px` : p.width as string;\r\n const modalStyle = isFullscreen() ? '' : `width: ${modalWidth};`;\r\n\r\n const modalA11yProps = getDialogA11yProps({\r\n id: p.id,\r\n ariaLabel: p.ariaLabel || p.title,\r\n ariaDescribedBy: p.ariaDescribedBy || (p.id ? `${p.id}-body` : undefined),\r\n labelledBy: p.title && p.id ? `${p.id}-title` : undefined,\r\n modal: p.ariaModal,\r\n });\r\n\r\n return createVNode('div', {\r\n class: 'lyt-modal__overlay',\r\n 'aria-hidden': true,\r\n onClick: handleModalClick,\r\n }, [\r\n createVNode('div', mergeA11yProps(modalA11yProps, {\r\n class: modalClass,\r\n style: modalStyle,\r\n onKeydown: handleKeydown,\r\n }), [\r\n ...headerChildren,\r\n createVNode('div', { \r\n class: 'lyt-modal__body',\r\n id: p.id ? `${p.id}-body` : undefined,\r\n }, bodyChildren),\r\n ...(Array.isArray(footerChildren) ? footerChildren : [footerChildren]),\r\n ]),\r\n ]);\r\n };\r\n },\r\n});\r\n\r\nexport type { ModalProps, ModalSlots, ModalSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Drawer 组件\r\n *\r\n * 抽屉组件,支持上下左右弹出、遮罩控制、宽度自适应、嵌套弹窗功能\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport { getDialogA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\nimport type { DrawerSetupProps, DrawerSlots } from './types';\r\n\r\nexport const Drawer = defineComponent({\r\n name: 'LytDrawer',\r\n\r\n props: {\r\n modelValue: { type: Boolean, default: false },\r\n title: { type: String, default: '' },\r\n size: { type: [String, Number] as unknown as StringConstructor, default: '30%' },\r\n direction: { type: String, default: 'rtl' },\r\n showClose: { type: Boolean, default: true },\r\n closeOnClickModal: { type: Boolean, default: true },\r\n closeOnPressEscape: { type: Boolean, default: true },\r\n lockScroll: { type: Boolean, default: true },\r\n appendToBody: { type: Boolean, default: false },\r\n withHeader: { type: Boolean, default: true },\r\n customClass: { type: String, default: '' },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaModal: { type: Boolean, default: true },\r\n onBeforeOpen: { type: Function, default: undefined },\r\n onBeforeClose: { type: Function, default: undefined },\r\n onOpen: { type: Function, default: undefined },\r\n onClose: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: DrawerSlots }) {\r\n const p = props as DrawerSetupProps;\r\n const isClosing = signal(false);\r\n\r\n const close = async () => {\r\n if (isClosing()) return;\r\n if (p.onBeforeClose) {\r\n const result = await p.onBeforeClose();\r\n if (result === false) return;\r\n }\r\n isClosing.set(true);\r\n setTimeout(() => { isClosing.set(false); }, 300);\r\n };\r\n\r\n const handleModalClick = () => {\r\n if (p.closeOnClickModal) close();\r\n };\r\n\r\n const handleKeydown = (event: KeyboardEvent) => {\r\n if (event.key === 'Escape' && p.closeOnPressEscape && p.modelValue) {\r\n close();\r\n }\r\n };\r\n\r\n if (typeof window !== 'undefined') {\r\n window.addEventListener('keydown', handleKeydown);\r\n }\r\n\r\n const getDrawerClass = () => {\r\n const classes = ['lyt-drawer'];\r\n classes.push(`lyt-drawer--${p.direction}`);\r\n if (p.modelValue) classes.push('lyt-drawer--visible');\r\n if (isClosing()) classes.push('lyt-drawer--closing');\r\n if (p.class) classes.push(p.class as string);\r\n if (p.customClass) classes.push(p.customClass as string);\r\n return classes.join(' ');\r\n };\r\n\r\n const getSizeStyle = (): Record<string, string> => {\r\n const size = typeof p.size === 'number' ? `${p.size}px` : p.size as string;\r\n const style: Record<string, string> = {};\r\n\r\n switch (p.direction) {\r\n case 'ltr':\r\n case 'rtl':\r\n style.width = size;\r\n break;\r\n case 'ttb':\r\n case 'btt':\r\n style.height = size;\r\n break;\r\n }\r\n\r\n return style;\r\n };\r\n\r\n const formatStyle = (style: Record<string, string>) => {\r\n if (!style) return '';\r\n return Object.entries(style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n };\r\n\r\n return () => {\r\n if (!p.modelValue && !isClosing()) {\r\n return createVNode('div', { style: 'display: none;' }, []);\r\n }\r\n\r\n const children: VNode[] = [];\r\n\r\n children.push(createVNode('div', { class: 'lyt-drawer__overlay', onClick: handleModalClick }));\r\n\r\n const drawerChildren: VNode[] = [];\r\n\r\n if (p.withHeader) {\r\n const headerChildren: VNode[] = [];\r\n\r\n if (slots.header) {\r\n headerChildren.push(...slots.header());\r\n } else if (p.title) {\r\n headerChildren.push(createVNode('span', { class: 'lyt-drawer__title', id: p.id ? `${p.id}-title` : undefined }, [createVNode('span', {}, String(p.title))]));\r\n }\r\n\r\n if (p.showClose) {\r\n const closeBtnProps = getButtonA11yProps({ ariaLabel: 'Close drawer' });\r\n headerChildren.push(\r\n createVNode('button', mergeA11yProps(closeBtnProps, { class: 'lyt-drawer__close', type: 'button', onClick: close }), [\r\n createVNode('svg', { viewBox: '0 0 1024 1024', width: '1em', height: '1em' }, [\r\n createVNode('path', {\r\n d: 'M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9c-4.4 5.2-.7 13.1 6.1 13.1h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z',\r\n fill: 'currentColor',\r\n }),\r\n ]),\r\n ])\r\n );\r\n }\r\n\r\n if (headerChildren.length > 0) {\r\n drawerChildren.push(createVNode('div', { class: 'lyt-drawer__header', id: p.id ? `${p.id}-header` : undefined }, headerChildren));\r\n }\r\n }\r\n\r\n if (slots.default) {\r\n drawerChildren.push(createVNode('div', { class: 'lyt-drawer__body', id: p.id ? `${p.id}-body` : undefined }, slots.default()));\r\n }\r\n\r\n if (slots.footer) {\r\n drawerChildren.push(createVNode('div', { class: 'lyt-drawer__footer', id: p.id ? `${p.id}-footer` : undefined }, slots.footer()));\r\n }\r\n\r\n const drawerContainer = createVNode('div', {\r\n class: 'lyt-drawer__container',\r\n style: formatStyle(getSizeStyle()),\r\n }, drawerChildren);\r\n children.push(drawerContainer);\r\n\r\n const a11yProps = getDialogA11yProps({\r\n id: p.id,\r\n ariaLabel: p.ariaLabel || p.title,\r\n ariaDescribedBy: p.ariaDescribedBy || (p.id ? `${p.id}-body` : undefined),\r\n labelledBy: p.title && p.id ? `${p.id}-title` : undefined,\r\n modal: p.ariaModal,\r\n });\r\n\r\n return createVNode('div', mergeA11yProps(a11yProps, { class: getDrawerClass() }), children);\r\n };\r\n },\r\n});\r\n\r\nexport default Drawer;\r\nexport type { DrawerProps, DrawerSlots, DrawerDirection, DrawerSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Upload 组件\r\n *\r\n * 文件上传组件,支持拖拽上传、文件预览、进度显示、分片上传\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { UploadFile, UploadSetupProps, UploadSlots } from './types';\r\n\r\nexport const Upload = defineComponent({\r\n name: 'LytUpload',\r\n\r\n props: {\r\n action: { type: String, default: '' },\r\n headers: { type: Object, default: (): Record<string, string> => ({}) },\r\n data: { type: Object, default: (): Record<string, unknown> => ({}) },\r\n multiple: { type: Boolean, default: false },\r\n accept: { type: String, default: '' },\r\n autoUpload: { type: Boolean, default: true },\r\n disabled: { type: Boolean, default: false },\r\n limit: { type: Number, default: 0 },\r\n class: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n onSuccess: { type: Function, default: undefined },\r\n onError: { type: Function, default: undefined },\r\n onProgress: { type: Function, default: undefined },\r\n onRemove: { type: Function, default: undefined },\r\n beforeUpload: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: UploadSlots }) {\r\n const p = props as UploadSetupProps;\r\n const files = signal<UploadFile[]>([]);\r\n const dragOver = signal(false);\r\n const inputRef = { current: null as HTMLInputElement | null };\r\n\r\n let uid = 0;\r\n const generateUid = () => ++uid;\r\n\r\n const handleFileChange = async (event: Event) => {\r\n const input = event.target as HTMLInputElement;\r\n const fileList = input.files;\r\n if (!fileList) return;\r\n\r\n for (let i = 0; i < fileList.length; i++) {\r\n const file = fileList[i];\r\n if (file) await uploadFile(file);\r\n }\r\n\r\n input.value = '';\r\n };\r\n\r\n const uploadFile = async (file: File) => {\r\n if (p.limit > 0 && files().length >= p.limit) {\r\n return;\r\n }\r\n\r\n if (p.beforeUpload) {\r\n const result = await p.beforeUpload(file);\r\n if (result === false) return;\r\n }\r\n\r\n const newFile: UploadFile = {\r\n name: file.name,\r\n size: file.size,\r\n status: 'pending',\r\n uid: generateUid(),\r\n raw: file,\r\n };\r\n\r\n files.set([...files(), newFile]);\r\n p.onChange?.(files());\r\n\r\n if (p.autoUpload && p.action) {\r\n await uploadToServer(newFile);\r\n }\r\n };\r\n\r\n const uploadToServer = async (file: UploadFile) => {\r\n file.status = 'uploading';\r\n file.percentage = 0;\r\n files.set([...files()]);\r\n p.onChange?.(files());\r\n\r\n try {\r\n const formData = new FormData();\r\n formData.append('file', file.raw!);\r\n\r\n for (const [key, value] of Object.entries(p.data)) {\r\n formData.append(key, String(value));\r\n }\r\n\r\n const xhr = new XMLHttpRequest();\r\n\r\n xhr.upload.onprogress = (e) => {\r\n if (e.lengthComputable) {\r\n file.percentage = Math.round((e.loaded / e.total) * 100);\r\n files.set([...files()]);\r\n p.onProgress?.(file.percentage!, file);\r\n }\r\n };\r\n\r\n xhr.onload = () => {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n file.status = 'success';\r\n file.percentage = 100;\r\n file.url = JSON.parse(xhr.responseText).url;\r\n p.onSuccess?.(JSON.parse(xhr.responseText), file);\r\n } else {\r\n file.status = 'error';\r\n p.onError?.(new Error('Upload failed'), file);\r\n }\r\n files.set([...files()]);\r\n p.onChange?.(files());\r\n };\r\n\r\n xhr.onerror = () => {\r\n file.status = 'error';\r\n files.set([...files()]);\r\n p.onError?.(new Error('Network error'), file);\r\n p.onChange?.(files());\r\n };\r\n\r\n xhr.open('POST', p.action);\r\n for (const [key, value] of Object.entries(p.headers)) {\r\n xhr.setRequestHeader(key, value);\r\n }\r\n xhr.send(formData);\r\n\r\n } catch (error) {\r\n file.status = 'error';\r\n files.set([...files()]);\r\n p.onError?.(error as Error, file);\r\n p.onChange?.(files());\r\n }\r\n };\r\n\r\n const handleRemove = (file: UploadFile) => {\r\n const newFiles = files().filter(f => f.uid !== file.uid);\r\n files.set(newFiles);\r\n p.onRemove?.(file);\r\n p.onChange?.(files());\r\n };\r\n\r\n const handleDragOver = (e: DragEvent) => {\r\n e.preventDefault();\r\n dragOver.set(true);\r\n };\r\n\r\n const handleDragLeave = () => {\r\n dragOver.set(false);\r\n };\r\n\r\n const handleDrop = async (e: DragEvent) => {\r\n e.preventDefault();\r\n dragOver.set(false);\r\n\r\n const fileList = e.dataTransfer?.files;\r\n if (!fileList) return;\r\n\r\n for (let i = 0; i < fileList.length; i++) {\r\n const file = fileList[i];\r\n if (file) await uploadFile(file);\r\n }\r\n };\r\n\r\n const handleClick = () => {\r\n if (p.disabled) return;\r\n inputRef.current?.click();\r\n };\r\n\r\n const renderFile = (file: UploadFile): VNode => {\r\n const statusClass = `lyt-upload__file--${file.status}`;\r\n const fileChildren: VNode[] = [];\r\n\r\n if (slots.file) {\r\n fileChildren.push(...slots.file(file));\r\n } else {\r\n fileChildren.push(createVNode('span', { class: 'lyt-upload__file-name' }, [createVNode('span', {}, String(file.name))]));\r\n }\r\n\r\n if (file.status === 'uploading') {\r\n fileChildren.push(createVNode('div', { class: 'lyt-upload__progress' }, [\r\n createVNode('div', {\r\n class: 'lyt-upload__progress-bar',\r\n style: `width: ${file.percentage || 0}%`,\r\n }, []),\r\n createVNode('span', { class: 'lyt-upload__percentage' }, [createVNode('span', {}, `${file.percentage || 0}%`)]),\r\n ]));\r\n }\r\n\r\n fileChildren.push(createVNode('span', {\r\n class: 'lyt-upload__remove',\r\n onClick: () => handleRemove(file),\r\n }, [createVNode('span', {}, '×')]));\r\n\r\n return createVNode('div', { class: `lyt-upload__file ${statusClass}`, key: file.uid }, fileChildren);\r\n };\r\n\r\n return () => {\r\n const uploadClass = [\r\n 'lyt-upload',\r\n p.disabled ? 'lyt-upload--disabled' : '',\r\n dragOver() ? 'lyt-upload--dragover' : '',\r\n p.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const triggerContent: VNode[] = [];\r\n\r\n if (slots.trigger) {\r\n triggerContent.push(...slots.trigger());\r\n } else if (slots.default) {\r\n triggerContent.push(...slots.default());\r\n } else {\r\n triggerContent.push(createVNode('div', { class: 'lyt-upload__content' }, [\r\n createVNode('span', { class: 'lyt-upload__icon' }, [createVNode('span', {}, '📤')]),\r\n createVNode('span', { class: 'lyt-upload__text' }, [createVNode('span', {}, '点击上传或拖拽文件')]),\r\n ]));\r\n }\r\n\r\n const tipContent: VNode[] = [];\r\n if (slots.tip) {\r\n tipContent.push(...slots.tip());\r\n }\r\n\r\n const fileListContent: VNode[] = [];\r\n if (files().length > 0) {\r\n fileListContent.push(...files().map(file => renderFile(file)));\r\n }\r\n\r\n const children: VNode[] = [\r\n createVNode('input', {\r\n ref: inputRef,\r\n type: 'file',\r\n class: 'lyt-upload__input',\r\n accept: p.accept,\r\n multiple: p.multiple,\r\n onChange: handleFileChange,\r\n }, []),\r\n createVNode('div', {\r\n class: 'lyt-upload__trigger',\r\n onClick: handleClick,\r\n onDragOver: handleDragOver,\r\n onDragLeave: handleDragLeave,\r\n onDrop: handleDrop,\r\n }, triggerContent),\r\n ];\r\n\r\n if (tipContent.length > 0) {\r\n children.push(createVNode('div', { class: 'lyt-upload__tip' }, tipContent));\r\n }\r\n\r\n if (fileListContent.length > 0) {\r\n children.push(createVNode('div', { class: 'lyt-upload__list' }, fileListContent));\r\n }\r\n\r\n return createVNode('div', { class: uploadClass }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { UploadProps, UploadSlots, UploadFile, UploadSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Notification 组件\r\n *\r\n * 通知组件,支持多位置弹出、停留时长、手动关闭、堆叠管理功能,适配主题切换\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { NotificationSetupProps } from './types';\r\n\r\ninterface NotificationItem {\r\n id: number;\r\n type: string;\r\n title: string;\r\n message: string;\r\n duration: number;\r\n position: string;\r\n showClose: boolean;\r\n onClose?: () => void;\r\n onOpen?: () => void;\r\n}\r\n\r\nclass NotificationManager {\r\n static notifications = signal<NotificationItem[]>([]);\r\n static nextId = 1;\r\n\r\n static open(options: {\r\n type?: string;\r\n title: string;\r\n message?: string;\r\n duration?: number;\r\n position?: string;\r\n showClose?: boolean;\r\n onClose?: () => void;\r\n onOpen?: () => void;\r\n }) {\r\n const id = this.nextId++;\r\n const notification: NotificationItem = {\r\n id,\r\n type: options.type || 'info',\r\n title: options.title,\r\n message: options.message || '',\r\n duration: options.duration !== undefined ? options.duration : 4500,\r\n position: options.position || 'top-right',\r\n showClose: options.showClose !== undefined ? options.showClose : true,\r\n onClose: options.onClose,\r\n onOpen: options.onOpen,\r\n };\r\n\r\n this.notifications.set([...this.notifications(), notification]);\r\n\r\n if (notification.onOpen) {\r\n notification.onOpen();\r\n }\r\n\r\n if (notification.duration > 0) {\r\n setTimeout(() => {\r\n this.close(id);\r\n }, notification.duration);\r\n }\r\n\r\n return id;\r\n }\r\n\r\n static close(id: number) {\r\n const notification = this.notifications().find(n => n.id === id);\r\n if (notification && notification.onClose) {\r\n notification.onClose();\r\n }\r\n this.notifications.set(this.notifications().filter(n => n.id !== id));\r\n }\r\n\r\n static success(options: string | { title: string; message?: string; duration?: number; position?: string; showClose?: boolean; onClose?: () => void; onOpen?: () => void }) {\r\n if (typeof options === 'string') {\r\n return this.open({ type: 'success', title: options, message: '' });\r\n }\r\n return this.open({ ...options, type: 'success' });\r\n }\r\n\r\n static warning(options: string | { title: string; message?: string; duration?: number; position?: string; showClose?: boolean; onClose?: () => void; onOpen?: () => void }) {\r\n if (typeof options === 'string') {\r\n return this.open({ type: 'warning', title: options, message: '' });\r\n }\r\n return this.open({ ...options, type: 'warning' });\r\n }\r\n\r\n static error(options: string | { title: string; message?: string; duration?: number; position?: string; showClose?: boolean; onClose?: () => void; onOpen?: () => void }) {\r\n if (typeof options === 'string') {\r\n return this.open({ type: 'error', title: options, message: '' });\r\n }\r\n return this.open({ ...options, type: 'error' });\r\n }\r\n\r\n static info(options: string | { title: string; message?: string; duration?: number; position?: string; showClose?: boolean; onClose?: () => void; onOpen?: () => void }) {\r\n if (typeof options === 'string') {\r\n return this.open({ type: 'info', title: options, message: '' });\r\n }\r\n return this.open({ ...options, type: 'info' });\r\n }\r\n\r\n static closeAll() {\r\n const current = this.notifications();\r\n current.forEach(n => {\r\n if (n.onClose) n.onClose();\r\n });\r\n this.notifications.set([]);\r\n }\r\n}\r\n\r\nconst getIcon = (type: string): string => {\r\n const icons: Record<string, string> = {\r\n success: '✓',\r\n warning: '⚠',\r\n error: '✕',\r\n info: 'ℹ',\r\n };\r\n return icons[type] || icons['info'] || 'ℹ';\r\n};\r\n\r\nexport const Notification = defineComponent({\r\n name: 'LytNotification',\r\n\r\n props: {\r\n position: { type: String, default: 'top-right' },\r\n class: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as NotificationSetupProps;\r\n\r\n const getContainerClass = () => {\r\n const classes = ['lyt-notification-container', `lyt-notification-container--${p.position}`];\r\n if (p.class) classes.push(p.class as string);\r\n return classes.join(' ');\r\n };\r\n\r\n return () => {\r\n const notifications = NotificationManager.notifications();\r\n\r\n const children: VNode[] = notifications.map((notification) => {\r\n const notificationClass = [\r\n 'lyt-notification',\r\n `lyt-notification--${notification.type}`,\r\n `lyt-notification--${notification.position}`,\r\n ].join(' ');\r\n\r\n const itemChildren: VNode[] = [\r\n createVNode('span', {\r\n class: 'lyt-notification__icon',\r\n }, [createVNode('span', {}, getIcon(notification.type))]),\r\n ];\r\n\r\n const contentChildren: VNode[] = [\r\n createVNode('div', { class: 'lyt-notification__title' }, [createVNode('span', {}, String(notification.title))]),\r\n ];\r\n\r\n if (notification.message) {\r\n contentChildren.push(createVNode('div', { class: 'lyt-notification__message' }, [createVNode('span', {}, String(notification.message))]));\r\n }\r\n\r\n itemChildren.push(createVNode('div', { class: 'lyt-notification__content' }, contentChildren));\r\n\r\n if (notification.showClose) {\r\n itemChildren.push(createVNode('button', {\r\n class: 'lyt-notification__close',\r\n onClick: () => NotificationManager.close(notification.id),\r\n }, [createVNode('span', {}, '×')]));\r\n }\r\n\r\n return createVNode('div', {\r\n class: notificationClass,\r\n key: notification.id,\r\n }, itemChildren);\r\n });\r\n\r\n return createVNode('div', { class: getContainerClass() }, children);\r\n };\r\n },\r\n});\r\n\r\n(Notification as Record<string, unknown>).open = NotificationManager.open.bind(NotificationManager);\r\n(Notification as Record<string, unknown>).success = NotificationManager.success.bind(NotificationManager);\r\n(Notification as Record<string, unknown>).warning = NotificationManager.warning.bind(NotificationManager);\r\n(Notification as Record<string, unknown>).error = NotificationManager.error.bind(NotificationManager);\r\n(Notification as Record<string, unknown>).info = NotificationManager.info.bind(NotificationManager);\r\n(Notification as Record<string, unknown>).close = NotificationManager.close.bind(NotificationManager);\r\n(Notification as Record<string, unknown>).closeAll = NotificationManager.closeAll.bind(NotificationManager);\r\n\r\nexport default Notification;\r\nexport { NotificationManager };\r\nexport type { NotificationProps, NotificationSlots, NotificationSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Calendar 组件\r\n *\r\n * 日历组件,支持月/周视图、事件标记、日期禁用功能,原生实现日期渲染\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { CalendarSetupProps } from './types';\r\n\r\ninterface CalendarEvent {\r\n title: string;\r\n start: Date;\r\n end?: Date;\r\n color?: string;\r\n data?: unknown;\r\n}\r\n\r\nexport const Calendar = defineComponent({\r\n name: 'LytCalendar',\r\n\r\n props: {\r\n modelValue: { type: [String, Date] as unknown as StringConstructor, default: (): Date => new Date() },\r\n view: { type: String, default: 'month' },\r\n events: { type: Array, default: (): CalendarEvent[] => [] },\r\n disabledDates: { type: Function, default: undefined },\r\n firstDayOfWeek: { type: Number, default: 0 },\r\n weekNames: { type: Array, default: (): string[] => ['日', '一', '二', '三', '四', '五', '六'] },\r\n monthNames: { type: Array, default: (): string[] => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'] },\r\n class: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n onEventClick: { type: Function, default: undefined },\r\n onDateClick: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as CalendarSetupProps;\r\n const currentDate = signal<Date>(\r\n p.modelValue instanceof Date ? p.modelValue : new Date()\r\n );\r\n const currentView = signal<string>(p.view);\r\n\r\n const getDaysInMonth = (year: number, month: number): number => {\r\n return new Date(year, month + 1, 0).getDate();\r\n };\r\n\r\n const getFirstDayOfMonth = (year: number, month: number): number => {\r\n return new Date(year, month, 1).getDay();\r\n };\r\n\r\n const isSameDay = (d1: Date, d2: Date): boolean => {\r\n return d1.getFullYear() === d2.getFullYear() &&\r\n d1.getMonth() === d2.getMonth() &&\r\n d1.getDate() === d2.getDate();\r\n };\r\n\r\n const isDisabledDate = (date: Date): boolean => {\r\n if (!p.disabledDates) return false;\r\n return p.disabledDates(date);\r\n };\r\n\r\n const getEventsForDate = (date: Date): CalendarEvent[] => {\r\n return (p.events as CalendarEvent[]).filter((event: CalendarEvent) => {\r\n const eventDate = new Date(event.start);\r\n return isSameDay(date, eventDate);\r\n });\r\n };\r\n\r\n const prevMonth = () => {\r\n const date = new Date(currentDate());\r\n date.setMonth(date.getMonth() - 1);\r\n currentDate.set(date);\r\n emitChange(date);\r\n };\r\n\r\n const nextMonth = () => {\r\n const date = new Date(currentDate());\r\n date.setMonth(date.getMonth() + 1);\r\n currentDate.set(date);\r\n emitChange(date);\r\n };\r\n\r\n const goToToday = () => {\r\n const today = new Date();\r\n currentDate.set(today);\r\n emitChange(today);\r\n };\r\n\r\n const selectDate = (date: Date) => {\r\n if (isDisabledDate(date)) return;\r\n currentDate.set(date);\r\n emitChange(date);\r\n if (p.onDateClick) {\r\n p.onDateClick(date);\r\n }\r\n };\r\n\r\n const emitChange = (date: Date) => {\r\n if (p.onChange) {\r\n p.onChange(date);\r\n }\r\n };\r\n\r\n const handleEventClick = (event: CalendarEvent, e: Event) => {\r\n e.stopPropagation();\r\n if (p.onEventClick) {\r\n p.onEventClick(event);\r\n }\r\n };\r\n\r\n const renderDayCell = (\r\n date: Date,\r\n isCurrentMonth: boolean,\r\n isToday: boolean,\r\n isSelected: boolean,\r\n disabled: boolean = false\r\n ): VNode => {\r\n const events = getEventsForDate(date);\r\n\r\n const classes = [\r\n 'lyt-calendar-day',\r\n !isCurrentMonth ? 'lyt-calendar-day-other' : '',\r\n isToday ? 'lyt-calendar-day-today' : '',\r\n isSelected ? 'lyt-calendar-day-selected' : '',\r\n disabled ? 'lyt-calendar-day-disabled' : '',\r\n ].filter(Boolean).join(' ');\r\n\r\n const eventNodes: VNode[] = events.map((event: CalendarEvent) => {\r\n const color = event.color || '#3b82f6';\r\n return createVNode(\r\n 'div',\r\n {\r\n class: 'lyt-calendar-event',\r\n style: { backgroundColor: color },\r\n onClick: (e: Event) => handleEventClick(event, e),\r\n },\r\n [createVNode('span', {}, String(event.title))]\r\n );\r\n });\r\n\r\n const cellChildren: VNode[] = [\r\n createVNode('div', { class: 'lyt-calendar-day-number' }, [createVNode('span', {}, String(date.getDate()))]),\r\n ...eventNodes,\r\n ];\r\n\r\n return createVNode(\r\n 'div',\r\n {\r\n class: classes,\r\n onClick: () => selectDate(date),\r\n },\r\n cellChildren\r\n );\r\n };\r\n\r\n const renderMonthView = (): VNode => {\r\n const year = currentDate().getFullYear();\r\n const month = currentDate().getMonth();\r\n const today = new Date();\r\n\r\n const firstDay = getFirstDayOfMonth(year, month);\r\n const daysInMonth = getDaysInMonth(year, month);\r\n const daysInPrevMonth = getDaysInMonth(year, month - 1);\r\n\r\n const weeks: VNode[] = [];\r\n let currentWeek: VNode[] = [];\r\n\r\n for (let i = p.firstDayOfWeek; i < firstDay; i++) {\r\n const day = daysInPrevMonth - (firstDay - i - 1);\r\n const date = new Date(year, month - 1, day);\r\n currentWeek.push(renderDayCell(date, false, false, false, false));\r\n }\r\n\r\n for (let day = 1; day <= daysInMonth; day++) {\r\n const date = new Date(year, month, day);\r\n const isToday = isSameDay(date, today);\r\n const isSelected = isSameDay(date, currentDate());\r\n const disabled = isDisabledDate(date);\r\n\r\n currentWeek.push(renderDayCell(date, true, isToday, isSelected, disabled));\r\n\r\n if (currentWeek.length === 7) {\r\n weeks.push(createVNode('div', { class: 'lyt-calendar-week' }, currentWeek));\r\n currentWeek = [];\r\n }\r\n }\r\n\r\n if (currentWeek.length > 0) {\r\n let nextDay = 1;\r\n while (currentWeek.length < 7) {\r\n const date = new Date(year, month + 1, nextDay);\r\n currentWeek.push(renderDayCell(date, false, false, false, false));\r\n nextDay++;\r\n }\r\n weeks.push(createVNode('div', { class: 'lyt-calendar-week' }, currentWeek));\r\n }\r\n\r\n return createVNode('div', { class: 'lyt-calendar-month' }, weeks);\r\n };\r\n\r\n const renderWeekView = (): VNode => {\r\n return createVNode(\r\n 'div',\r\n { class: 'lyt-calendar-week-view' },\r\n [createVNode('span', {}, '周视图(开发中)')]\r\n );\r\n };\r\n\r\n const renderDayView = (): VNode => {\r\n return createVNode(\r\n 'div',\r\n { class: 'lyt-calendar-day-view' },\r\n [createVNode('span', {}, '日视图(开发中)')]\r\n );\r\n };\r\n\r\n return () => {\r\n const current = currentDate();\r\n const headerChildren: VNode[] = [\r\n createVNode('button', { class: 'lyt-calendar-nav-btn', onClick: prevMonth }, [createVNode('span', {}, '‹')]),\r\n createVNode('button', { class: 'lyt-calendar-today-btn', onClick: goToToday }, [createVNode('span', {}, '今天')]),\r\n createVNode('div', { class: 'lyt-calendar-title' }, [createVNode('span', {}, `${current.getFullYear()}年 ${(p.monthNames as string[])[current.getMonth()]}`)]),\r\n createVNode('button', { class: 'lyt-calendar-nav-btn', onClick: nextMonth }, [createVNode('span', {}, '›')]),\r\n ];\r\n\r\n const weekHeaderChildren: VNode[] = (p.weekNames as string[]).map((name: string) =>\r\n createVNode('div', { class: 'lyt-calendar-weekday' }, [createVNode('span', {}, name)])\r\n );\r\n\r\n let viewContent: VNode;\r\n switch (currentView()) {\r\n case 'week':\r\n viewContent = renderWeekView();\r\n break;\r\n case 'day':\r\n viewContent = renderDayView();\r\n break;\r\n case 'month':\r\n default:\r\n viewContent = renderMonthView();\r\n }\r\n\r\n return createVNode(\r\n 'div',\r\n {\r\n class: [\r\n 'lyt-calendar',\r\n `lyt-calendar-${currentView()}`,\r\n p.class as string,\r\n ].filter(Boolean).join(' '),\r\n },\r\n [\r\n createVNode('div', { class: 'lyt-calendar-header' }, headerChildren),\r\n createVNode('div', { class: 'lyt-calendar-weekdays' }, weekHeaderChildren),\r\n viewContent,\r\n ]\r\n );\r\n };\r\n },\r\n});\r\n\r\nexport default Calendar;\r\nexport type { CalendarEvent };\r\nexport type { CalendarProps, CalendarSlots, CalendarSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Image 组件\r\n *\r\n * 图片组件,支持懒加载、预览弹窗、错误兜底、自适应功能,适配主题样式\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { ImageSetupProps } from './types';\r\n\r\nexport const Image = defineComponent({\r\n name: 'LytImage',\r\n\r\n props: {\r\n src: { type: String, default: '' },\r\n alt: { type: String, default: '' },\r\n fit: { type: String, default: 'cover' },\r\n width: { type: [String, Number] as unknown as StringConstructor, default: '' },\r\n height: { type: [String, Number] as unknown as StringConstructor, default: '' },\r\n lazy: { type: Boolean, default: false },\r\n preview: { type: Boolean, default: true },\r\n errorSrc: { type: String, default: '' },\r\n placeholderSrc: { type: String, default: '' },\r\n round: { type: Boolean, default: false },\r\n radius: { type: [String, Number] as unknown as StringConstructor, default: '' },\r\n class: { type: String, default: '' },\r\n onLoad: { type: Function, default: undefined },\r\n onError: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as ImageSetupProps;\r\n const isLoaded = signal(false);\r\n const isError = signal(false);\r\n const isPreviewVisible = signal(false);\r\n\r\n const handleLoad = () => {\r\n isLoaded.set(true);\r\n if (p.onLoad) {\r\n p.onLoad();\r\n }\r\n };\r\n\r\n const handleError = () => {\r\n isError.set(true);\r\n if (p.onError) {\r\n p.onError();\r\n }\r\n };\r\n\r\n const openPreview = () => {\r\n if (!p.preview || isError()) return;\r\n isPreviewVisible.set(true);\r\n };\r\n\r\n const closePreview = () => {\r\n isPreviewVisible.set(false);\r\n };\r\n\r\n return () => {\r\n const imageClass = [\r\n 'lyt-image',\r\n p.class as string,\r\n p.round ? 'lyt-image-round' : '',\r\n ].filter(Boolean).join(' ');\r\n\r\n const imageStyle: Record<string, string> = {};\r\n if (p.width) {\r\n imageStyle.width = typeof p.width === 'number' ? `${p.width}px` : p.width as string;\r\n }\r\n if (p.height) {\r\n imageStyle.height = typeof p.height === 'number' ? `${p.height}px` : p.height as string;\r\n }\r\n if (p.radius) {\r\n imageStyle.borderRadius = typeof p.radius === 'number' ? `${p.radius}px` : p.radius as string;\r\n }\r\n\r\n const children: VNode[] = [];\r\n\r\n if (!isLoaded() && !isError()) {\r\n if (p.placeholderSrc) {\r\n children.push(createVNode('img', {\r\n class: 'lyt-image-placeholder',\r\n src: p.placeholderSrc as string,\r\n alt: p.alt as string,\r\n style: { objectFit: p.fit as string },\r\n }));\r\n } else {\r\n children.push(createVNode('div', { class: 'lyt-image-placeholder' }, [\r\n createVNode('svg', { viewBox: '0 0 100 100', fill: 'currentColor' }, [\r\n createVNode('path', {\r\n d: 'M50 10a40 40 0 1 0 40 40A40 40 0 0 0 50 10zm0 70a30 30 0 1 1 30-30 30 30 0 0 1-30 30z',\r\n opacity: '0.3',\r\n }),\r\n createVNode('path', {\r\n d: 'M50 40a10 10 0 1 0 10 10 10 10 0 0 0-10-10zm30 35a24.9 24.9 0 0 0-7.7-18.3l-11.2-9.4a10 10 0 0 0-12.8 0L34.3 54A25 25 0 0 0 25 75z',\r\n opacity: '0.6',\r\n }),\r\n ]),\r\n ]));\r\n }\r\n }\r\n\r\n children.push(createVNode('img', {\r\n class: 'lyt-image-inner',\r\n src: p.src as string,\r\n alt: p.alt as string,\r\n style: {\r\n objectFit: p.fit as string,\r\n display: (isLoaded() || isError()) ? 'block' : 'none',\r\n },\r\n loading: p.lazy ? 'lazy' : 'eager',\r\n onLoad: handleLoad,\r\n onError: handleError,\r\n onClick: openPreview,\r\n }));\r\n\r\n if (isError()) {\r\n if (p.errorSrc) {\r\n children.push(createVNode('img', {\r\n class: 'lyt-image-error',\r\n src: p.errorSrc as string,\r\n alt: p.alt as string,\r\n style: { objectFit: p.fit as string },\r\n }));\r\n } else {\r\n children.push(createVNode('div', { class: 'lyt-image-error' }, [\r\n createVNode('svg', { viewBox: '0 0 100 100', fill: 'currentColor' }, [\r\n createVNode('circle', { cx: '50', cy: '50', r: '40', opacity: '0.2' }),\r\n createVNode('line', { x1: '30', y1: '30', x2: '70', y2: '70', stroke: 'currentColor', strokeWidth: '6', strokeLinecap: 'round' }),\r\n createVNode('line', { x1: '70', y1: '30', x2: '30', y2: '70', stroke: 'currentColor', strokeWidth: '6', strokeLinecap: 'round' }),\r\n ]),\r\n ]));\r\n }\r\n }\r\n\r\n if (p.preview && !isError() && isLoaded()) {\r\n children.push(createVNode('div', {\r\n class: 'lyt-image-preview-trigger',\r\n onClick: openPreview,\r\n }));\r\n }\r\n\r\n if (isPreviewVisible()) {\r\n children.push(createVNode('div', { class: 'lyt-image-preview', onClick: closePreview }, [\r\n createVNode('div', { class: 'lyt-image-preview-mask' }, []),\r\n createVNode('img', {\r\n class: 'lyt-image-preview-content',\r\n src: p.src as string,\r\n alt: p.alt as string,\r\n onClick: (e: Event) => e.stopPropagation(),\r\n }, []),\r\n createVNode('button', { class: 'lyt-image-preview-close', onClick: closePreview }, [createVNode('span', {}, '×')]),\r\n ]));\r\n }\r\n\r\n return createVNode('div', { class: imageClass, style: imageStyle }, children);\r\n };\r\n },\r\n});\r\n\r\nexport default Image;\r\nexport type { ImageProps, ImageSlots, ImageSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Rate 组件\r\n *\r\n * 评分组件,支持半星、只读、自定义图标、数量配置功能,统一组件API\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { RateSetupProps } from './types';\r\n\r\nexport const Rate = defineComponent({\r\n name: 'LytRate',\r\n\r\n props: {\r\n modelValue: { type: Number, default: 0 },\r\n max: { type: Number, default: 5 },\r\n allowHalf: { type: Boolean, default: false },\r\n readonly: { type: Boolean, default: false },\r\n disabled: { type: Boolean, default: false },\r\n showText: { type: Boolean, default: false },\r\n showScore: { type: Boolean, default: false },\r\n texts: { type: Array, default: (): string[] => ['极差', '失望', '一般', '满意', '惊喜'] },\r\n voidIcon: { type: String, default: '☆' },\r\n voidColor: { type: String, default: '#c6d1de' },\r\n disabledVoidColor: { type: String, default: '#e8e8e8' },\r\n class: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as RateSetupProps;\r\n const hoverValue = signal(0);\r\n const isHovering = signal(false);\r\n\r\n const displayValue = (): number => isHovering() ? hoverValue() : p.modelValue;\r\n\r\n const getStarClass = (index: number): string => {\r\n const value = displayValue();\r\n if (value >= index + 1) return 'lyt-rate-star-full';\r\n if (p.allowHalf && value >= index + 0.5) return 'lyt-rate-star-half';\r\n return 'lyt-rate-star-void';\r\n };\r\n\r\n const getStarStyle = (index: number): string => {\r\n const classes = ['lyt-rate-star'];\r\n if (getStarClass(index)) {\r\n classes.push(getStarClass(index));\r\n }\r\n if (p.disabled || p.readonly) {\r\n classes.push('lyt-rate-star-disabled');\r\n }\r\n return classes.join(' ');\r\n };\r\n\r\n const handleMouseMove = (event: MouseEvent, index: number) => {\r\n if (p.disabled || p.readonly) return;\r\n\r\n const target = event.target as HTMLElement;\r\n let newValue = index + 1;\r\n\r\n if (p.allowHalf) {\r\n const rect = target.getBoundingClientRect();\r\n const halfWidth = rect.width / 2;\r\n if (event.clientX - rect.left < halfWidth) {\r\n newValue = index + 0.5;\r\n }\r\n }\r\n\r\n hoverValue.set(newValue);\r\n isHovering.set(true);\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n isHovering.set(false);\r\n };\r\n\r\n const handleClick = (event: MouseEvent, index: number) => {\r\n if (p.disabled || p.readonly) return;\r\n\r\n let newValue = index + 1;\r\n\r\n if (p.allowHalf) {\r\n const target = event.target as HTMLElement;\r\n const rect = target.getBoundingClientRect();\r\n const halfWidth = rect.width / 2;\r\n if (event.clientX - rect.left < halfWidth) {\r\n newValue = index + 0.5;\r\n }\r\n }\r\n\r\n if (p.onChange) {\r\n p.onChange(newValue);\r\n }\r\n };\r\n\r\n const getText = (): string => {\r\n const texts = (p.texts as string[]) || [];\r\n const index = Math.round(displayValue()) - 1;\r\n return texts[index] || '';\r\n };\r\n\r\n const getScore = (): string => {\r\n return displayValue().toFixed(1);\r\n };\r\n\r\n return () => {\r\n const starNodes: VNode[] = [];\r\n\r\n for (let i = 0; i < p.max; i++) {\r\n starNodes.push(\r\n createVNode('span', {\r\n class: getStarStyle(i),\r\n key: i,\r\n onMousemove: (e: MouseEvent) => handleMouseMove(e, i),\r\n onMouseleave: handleMouseLeave,\r\n onClick: (e: MouseEvent) => handleClick(e, i),\r\n }, [\r\n createVNode('span', { class: 'lyt-rate-star-first' }, [createVNode('span', {}, String(p.voidIcon))]),\r\n createVNode('span', { class: 'lyt-rate-star-second' }, [createVNode('span', {}, '★')]),\r\n ])\r\n );\r\n }\r\n\r\n const children: VNode[] = [...starNodes];\r\n\r\n if (p.showText) {\r\n children.push(createVNode('span', { class: 'lyt-rate-text' }, [createVNode('span', {}, getText())]));\r\n }\r\n\r\n if (p.showScore) {\r\n children.push(createVNode('span', { class: 'lyt-rate-score' }, [createVNode('span', {}, getScore())]));\r\n }\r\n\r\n return createVNode('div', {\r\n class: [\r\n 'lyt-rate',\r\n p.class as string,\r\n (p.disabled || p.readonly) ? 'lyt-rate-disabled' : '',\r\n ].filter(Boolean).join(' '),\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport default Rate;\r\nexport type { RateProps, RateSlots, RateSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - ColorPicker 组件\r\n *\r\n * 颜色选择器组件,取色器、预设色、hex/rgb转换功能,零第三方依赖\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { ColorPickerSetupProps } from './types';\r\n\r\nconst DEFAULT_PRESETS = [\r\n '#ff4500', '#ff6600', '#ff8c00', '#ff9900',\r\n '#ffcc00', '#ffff00', '#9acd32', '#32cd32',\r\n '#3cb371', '#00fa9a', '#00ced1', '#1e90ff',\r\n '#4169e1', '#8a2be2', '#da70d6', '#ff1493'\r\n];\r\n\r\nexport const ColorPicker = defineComponent({\r\n name: 'LytColorPicker',\r\n\r\n props: {\r\n modelValue: { type: String, default: '#409eff' },\r\n showAlpha: { type: Boolean, default: false },\r\n showClear: { type: Boolean, default: true },\r\n showPreset: { type: Boolean, default: true },\r\n showHistory: { type: Boolean, default: true },\r\n presets: { type: Array, default: () => DEFAULT_PRESETS },\r\n history: { type: Array, default: () => [] },\r\n class: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n onClear: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const p = props as ColorPickerSetupProps;\r\n const isDropdownVisible = signal(false);\r\n const currentHue = signal(200);\r\n const currentSaturation = signal(80);\r\n const currentLightness = signal(50);\r\n const currentAlpha = signal(100);\r\n const localHistory = signal<string[]>([...(p.history || [])]);\r\n const colorInputValue = signal(p.modelValue);\r\n\r\n const hexToHsl = (hex: string) => {\r\n let r = 0, g = 0, b = 0;\r\n\r\n if (hex.length === 4) {\r\n r = parseInt(String(hex[1]) + String(hex[1]), 16);\r\n g = parseInt(String(hex[2]) + String(hex[2]), 16);\r\n b = parseInt(String(hex[3]) + String(hex[3]), 16);\r\n } else if (hex.length === 7) {\r\n r = parseInt(String(hex[1]) + String(hex[2]), 16);\r\n g = parseInt(String(hex[3]) + String(hex[4]), 16);\r\n b = parseInt(String(hex[5]) + String(hex[6]), 16);\r\n }\r\n\r\n r /= 255; g /= 255; b /= 255;\r\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\r\n let h = 0, s = 0, l = (max + min) / 2;\r\n\r\n if (max !== min) {\r\n const d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\r\n case g: h = (b - r) / d + 2; break;\r\n case b: h = (r - g) / d + 4; break;\r\n }\r\n h *= 60;\r\n }\r\n\r\n return { h: Math.round(h), s: Math.round(s * 100), l: Math.round(l * 100) };\r\n };\r\n\r\n const updateHslFromHex = (hex: string) => {\r\n try {\r\n const hsl = hexToHsl(hex);\r\n currentHue.set(hsl.h);\r\n currentSaturation.set(hsl.s);\r\n currentLightness.set(hsl.l);\r\n } catch {\r\n // 保持原样\r\n }\r\n };\r\n\r\n const hslToRgb = (h: number, s: number, l: number): number[] => {\r\n s /= 100; l /= 100;\r\n const k = (n: number) => (n + h / 30) % 12;\r\n const a = s * Math.min(l, 1 - l);\r\n const f = (n: number) => l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));\r\n return [\r\n Math.round(f(0) * 255),\r\n Math.round(f(8) * 255),\r\n Math.round(f(4) * 255)\r\n ];\r\n };\r\n\r\n const rgbToHex = (r: number, g: number, b: number): string => {\r\n return '#' + [r, g, b].map((x: number) => {\r\n const hex = x.toString(16);\r\n return hex.length === 1 ? '0' + hex : hex;\r\n }).join('');\r\n };\r\n\r\n const getCurrentColor = (): string => {\r\n const rgb = hslToRgb(currentHue(), currentSaturation(), currentLightness());\r\n const r = rgb[0] ?? 0;\r\n const g = rgb[1] ?? 0;\r\n const b = rgb[2] ?? 0;\r\n if (p.showAlpha) {\r\n return `rgba(${r}, ${g}, ${b}, ${currentAlpha() / 100})`;\r\n }\r\n return rgbToHex(r, g, b);\r\n };\r\n\r\n const addToHistory = (color: string) => {\r\n const history = [...localHistory()];\r\n const index = history.indexOf(color);\r\n if (index > -1) history.splice(index, 1);\r\n history.unshift(color);\r\n if (history.length > 10) history.pop();\r\n localHistory.set(history);\r\n };\r\n\r\n const handleColorClick = (color: string) => {\r\n isDropdownVisible.set(false);\r\n colorInputValue.set(color);\r\n addToHistory(color);\r\n };\r\n\r\n const handlePresetClick = (color: string) => {\r\n updateHslFromHex(color);\r\n handleColorClick(color);\r\n };\r\n\r\n const clearColor = () => {\r\n isDropdownVisible.set(false);\r\n if (p.onClear) p.onClear();\r\n };\r\n\r\n const toggleDropdown = () => {\r\n if (!p.showClear || isDropdownVisible()) {\r\n isDropdownVisible.set(!isDropdownVisible());\r\n }\r\n };\r\n\r\n const handleColorInput = (event: Event) => {\r\n const target = event.target as HTMLInputElement;\r\n colorInputValue.set(target.value);\r\n };\r\n\r\n const handleColorChange = (event: Event) => {\r\n const target = event.target as HTMLInputElement;\r\n const color = target.value;\r\n if (color) {\r\n handleColorClick(color);\r\n }\r\n };\r\n\r\n let isDragging = false;\r\n\r\n const handlePickerClick = (event: MouseEvent, type: 'saturation' | 'hue' | 'alpha') => {\r\n isDragging = true;\r\n handlePickerDrag(event, type);\r\n };\r\n\r\n const handlePickerMouseMove = (event: MouseEvent, type: 'saturation' | 'hue' | 'alpha') => {\r\n if (!isDragging) return;\r\n handlePickerDrag(event, type);\r\n };\r\n\r\n const handlePickerMouseUp = () => {\r\n isDragging = false;\r\n };\r\n\r\n const handlePickerDrag = (event: MouseEvent, type: 'saturation' | 'hue' | 'alpha') => {\r\n const rect = (event.target as HTMLElement).getBoundingClientRect();\r\n let x = event.clientX - rect.left;\r\n x = Math.max(0, Math.min(rect.width, x));\r\n\r\n if (type === 'hue') {\r\n const newHue = Math.round((x / rect.width) * 360);\r\n currentHue.set(newHue);\r\n colorInputValue.set(getCurrentColor());\r\n } else if (type === 'alpha') {\r\n const newAlpha = Math.round((x / rect.width) * 100);\r\n currentAlpha.set(newAlpha);\r\n colorInputValue.set(getCurrentColor());\r\n } else if (type === 'saturation') {\r\n let y = event.clientY - rect.top;\r\n y = Math.max(0, Math.min(rect.height, y));\r\n const newSat = Math.round((x / rect.width) * 100);\r\n const newLight = Math.round(100 - (y / rect.height) * 100);\r\n currentSaturation.set(newSat);\r\n currentLightness.set(newLight);\r\n colorInputValue.set(getCurrentColor());\r\n }\r\n };\r\n\r\n const getColorPickerClass = (): string => {\r\n const classes = ['lyt-color-picker'];\r\n if (p.class) classes.push(p.class as string);\r\n return classes.join(' ');\r\n };\r\n\r\n return () => {\r\n const saturationPointer: VNode[] = [];\r\n saturationPointer.push(createVNode('div', {\r\n class: 'lyt-color-picker-pointer',\r\n style: {\r\n left: `${currentSaturation()}%`,\r\n top: `${100 - currentLightness()}%`\r\n }\r\n }));\r\n\r\n const hueChildren: VNode[] = [];\r\n hueChildren.push(createVNode('div', {\r\n class: 'lyt-color-picker-pointer',\r\n style: { left: `${(currentHue() / 360) * 100}%` }\r\n }));\r\n\r\n const saturationPicker: VNode[] = [];\r\n saturationPicker.push(createVNode('div', {\r\n class: 'lyt-color-picker-saturation',\r\n style: {\r\n background: `linear-gradient(to top, rgb(0, 0, 0), transparent),\r\n linear-gradient(to right, rgb(255, 255, 255), hsl(${currentHue()}, 100%, 50%))`\r\n },\r\n onMousedown: (e: MouseEvent) => handlePickerClick(e, 'saturation'),\r\n onMousemove: (e: MouseEvent) => handlePickerMouseMove(e, 'saturation'),\r\n onMouseup: handlePickerMouseUp,\r\n onMouseleave: handlePickerMouseUp\r\n }, saturationPointer));\r\n\r\n const huePicker: VNode[] = [];\r\n huePicker.push(createVNode('div', {\r\n class: 'lyt-color-picker-hue-slider',\r\n onMousedown: (e: MouseEvent) => handlePickerClick(e, 'hue'),\r\n onMousemove: (e: MouseEvent) => handlePickerMouseMove(e, 'hue'),\r\n onMouseup: handlePickerMouseUp,\r\n onMouseleave: handlePickerMouseUp\r\n }, hueChildren));\r\n\r\n const alphaChildren: VNode[] = [];\r\n alphaChildren.push(createVNode('div', {\r\n class: 'lyt-color-picker-pointer',\r\n style: { left: `${currentAlpha()}%` }\r\n }));\r\n\r\n const alphaPicker: VNode[] = [];\r\n alphaPicker.push(createVNode('div', {\r\n class: 'lyt-color-picker-alpha-slider',\r\n style: {\r\n background: `linear-gradient(to right, transparent, ${hslToRgb(currentHue(), currentSaturation(), currentLightness()).map((v: number) => `rgb(${v})`).join(',')})`\r\n },\r\n onMousedown: (e: MouseEvent) => handlePickerClick(e, 'alpha'),\r\n onMousemove: (e: MouseEvent) => handlePickerMouseMove(e, 'alpha'),\r\n onMouseup: handlePickerMouseUp,\r\n onMouseleave: handlePickerMouseUp\r\n }, alphaChildren));\r\n\r\n const presetColors: VNode[] = [];\r\n const presets = (p.presets || DEFAULT_PRESETS) as string[];\r\n presets.forEach((color: string, index: number) => {\r\n presetColors.push(createVNode('span', {\r\n class: 'lyt-color-picker-color',\r\n key: index,\r\n style: { backgroundColor: color },\r\n onClick: () => handlePresetClick(color)\r\n }));\r\n });\r\n\r\n const historyColors: VNode[] = [];\r\n const history = localHistory() as string[];\r\n history.forEach((color: string, index: number) => {\r\n historyColors.push(createVNode('span', {\r\n class: 'lyt-color-picker-color',\r\n key: index,\r\n style: { backgroundColor: color },\r\n onClick: () => handleColorClick(color)\r\n }));\r\n });\r\n\r\n const pickerDropdown: VNode[] = [];\r\n\r\n const panelChildren: VNode[] = [];\r\n panelChildren.push(createVNode('div', {\r\n class: 'lyt-color-picker-saturation'\r\n }, saturationPicker));\r\n panelChildren.push(createVNode('div', { class: 'lyt-color-picker-hue' }, huePicker));\r\n if (p.showAlpha) {\r\n panelChildren.push(createVNode('div', { class: 'lyt-color-picker-alpha' }, alphaPicker));\r\n }\r\n\r\n pickerDropdown.push(createVNode('div', { class: 'lyt-color-picker-panel' }, panelChildren));\r\n\r\n const inputChildren: VNode[] = [];\r\n inputChildren.push(createVNode('input', {\r\n type: 'text',\r\n value: colorInputValue(),\r\n onInput: handleColorInput,\r\n onChange: handleColorChange,\r\n placeholder: '请输入颜色'\r\n }));\r\n inputChildren.push(createVNode('span', {\r\n class: 'lyt-color-picker-preview',\r\n style: { backgroundColor: getCurrentColor() }\r\n }));\r\n inputChildren.push(createVNode('button', {\r\n class: 'lyt-color-picker-confirm',\r\n onClick: () => handleColorClick(getCurrentColor())\r\n }, [createVNode('span', {}, '确认')]));\r\n\r\n pickerDropdown.push(createVNode('div', { class: 'lyt-color-picker-input' }, inputChildren));\r\n\r\n if (p.showPreset) {\r\n const presetChildren: VNode[] = [];\r\n presetChildren.push(createVNode('div', { class: 'lyt-color-picker-title' }, [createVNode('span', {}, '预设颜色')]));\r\n presetChildren.push(createVNode('div', { class: 'lyt-color-picker-palette' }, presetColors));\r\n pickerDropdown.push(createVNode('div', { class: 'lyt-color-picker-presets' }, presetChildren));\r\n }\r\n\r\n if (p.showHistory && history.length > 0) {\r\n const historyChildren: VNode[] = [];\r\n historyChildren.push(createVNode('div', { class: 'lyt-color-picker-title' }, [createVNode('span', {}, '历史颜色')]));\r\n historyChildren.push(createVNode('div', { class: 'lyt-color-picker-palette' }, historyColors));\r\n pickerDropdown.push(createVNode('div', { class: 'lyt-color-picker-history' }, historyChildren));\r\n }\r\n\r\n const triggerChildren: VNode[] = [];\r\n triggerChildren.push(createVNode('div', {\r\n class: 'lyt-color-picker-display',\r\n style: { backgroundColor: p.modelValue || 'transparent' }\r\n }));\r\n\r\n if (p.showClear && p.modelValue) {\r\n triggerChildren.push(createVNode('span', {\r\n class: 'lyt-color-picker-clear',\r\n onClick: clearColor\r\n }, [createVNode('span', {}, '×')]));\r\n }\r\n\r\n triggerChildren.push(createVNode('span', { class: 'lyt-color-picker-arrow' }, [createVNode('span', {}, '▼')]));\r\n\r\n const trigger: VNode[] = [];\r\n trigger.push(createVNode('div', { class: 'lyt-color-picker-trigger', onClick: toggleDropdown }, triggerChildren));\r\n\r\n if (isDropdownVisible()) {\r\n trigger.push(createVNode('div', { class: 'lyt-color-picker-dropdown' }, pickerDropdown));\r\n }\r\n\r\n return createVNode('div', { class: getColorPickerClass() }, trigger);\r\n };\r\n },\r\n});\r\n\r\nexport default ColorPicker;\r\nexport type { ColorPickerProps, ColorPickerSlots, ColorPickerSetupProps } from './types';\r\n","/**\r\n * @lytjs/ui - Icon 组件\r\n *\r\n * 基础图标组件,支持多种尺寸和颜色\r\n */\r\n\r\nimport type { IconProps, IconSlots, IconSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Icon = defineComponent({\r\n name: 'LytIcon',\r\n\r\n props: {\r\n name: { type: String, default: '' },\r\n size: { type: String, default: '16px' },\r\n color: { type: String, default: '' },\r\n spin: { type: Boolean, default: false },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: IconSlots }) {\r\n const p = props as unknown as IconSetupProps;\r\n\r\n const getIconClass = () => {\r\n const classes = ['lyt-icon'];\r\n if (p.name) classes.push(`lyt-icon--${p.name}`);\r\n if (p.spin) classes.push('lyt-icon--spin');\r\n if (p.class) classes.push(p.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getIconStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (p.size) style.fontSize = p.size;\r\n if (p.color) style.color = p.color;\r\n if (p.style) {\r\n if (isString(p.style)) {\r\n return p.style;\r\n }\r\n if (isObject(p.style)) {\r\n Object.assign(style, p.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n if (slots.default) {\r\n children.push(...slots.default());\r\n }\r\n\r\n return createVNode('i', mergeA11yProps({\r\n id: p.id,\r\n 'aria-label': p.ariaLabel,\r\n 'aria-describedby': p.ariaDescribedBy,\r\n }, {\r\n class: getIconClass(),\r\n style: getIconStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { IconProps, IconSlots };\r\n","/**\r\n * @lytjs/ui - Badge 组件\r\n *\r\n * 徽标组件,用于展示数字或点标记\r\n */\r\n\r\nimport type { BadgeSetupProps, BadgeSlots, BadgeProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Badge = defineComponent({\r\n name: 'LytBadge',\r\n\r\n props: {\r\n count: { type: Number, default: 0 },\r\n maxCount: { type: Number, default: 99 },\r\n dot: { type: Boolean, default: false },\r\n showZero: { type: Boolean, default: false },\r\n type: { type: String, default: 'danger' },\r\n offset: { type: Array, default: undefined },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: BadgeSlots }) {\r\n const p = props as BadgeSetupProps;\r\n\r\n const displayCount = (): string => {\r\n if (p.dot) return '';\r\n if (p.count > p.maxCount) return `${p.maxCount}+`;\r\n return String(p.count);\r\n };\r\n\r\n const showBadge = (): boolean => {\r\n if (p.dot) return true;\r\n if (p.count === 0) return p.showZero;\r\n return true;\r\n };\r\n\r\n const getCountStyle = (): Record<string, string> => {\r\n const style: Record<string, string> = {};\r\n if (p.offset) {\r\n style.top = `${p.offset[0]}px`;\r\n style.right = `${p.offset[1]}px`;\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n if (slots.default) {\r\n children.push(...slots.default());\r\n }\r\n\r\n if (showBadge()) {\r\n children.push(createVNode('sup', {\r\n class: [\r\n 'lyt-badge__count',\r\n `lyt-badge__count--${p.type}`,\r\n p.dot ? 'lyt-badge__count--dot' : '',\r\n ].filter(Boolean).join(' '),\r\n style: getCountStyle(),\r\n }, [createVNode('span', {}, p.dot ? '' : displayCount())]));\r\n }\r\n\r\n return createVNode('span', mergeA11yProps({\r\n id: p.id,\r\n 'aria-label': p.ariaLabel,\r\n 'aria-describedby': p.ariaDescribedBy,\r\n }, {\r\n class: [\r\n 'lyt-badge',\r\n p.class as string,\r\n ].filter(Boolean).join(' '),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { BadgeProps, BadgeSlots, BadgeSetupProps };\r\n","/**\r\n * @lytjs/ui - Tag 组件\r\n *\r\n * 标签组件,支持多种类型和可关闭功能\r\n */\r\n\r\nimport type { TagProps, TagSlots, TagSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { reactive } from '@lytjs/reactivity';\r\nimport { getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * Tag 组件\r\n */\r\nexport const Tag = defineComponent({\r\n name: 'LytTag',\r\n\r\n props: {\r\n type: { type: String, default: 'default' },\r\n closable: { type: Boolean, default: false },\r\n color: { type: String, default: '' },\r\n size: { type: String, default: 'medium' },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onClose: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots, emit }) {\r\n const _props = props as TagSetupProps;\r\n const state = reactive({\r\n visible: true,\r\n });\r\n\r\n const handleClose = (e: Event) => {\r\n e.stopPropagation();\r\n state.visible = false;\r\n emit('close');\r\n _props.onClose?.();\r\n };\r\n\r\n const getTagClass = () => {\r\n const classes = ['lyt-tag'];\r\n if (_props.type !== 'default') classes.push(`lyt-tag--${_props.type}`);\r\n if (_props.size !== 'medium') classes.push(`lyt-tag--${_props.size}`);\r\n if (_props.color) classes.push('lyt-tag--custom');\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getTagStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.color) {\r\n style.backgroundColor = _props.color + '15';\r\n style.borderColor = _props.color;\r\n style.color = _props.color;\r\n }\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n if (!state.visible) return createVNode('div', { style: 'display: none;' }, []);\r\n\r\n const children: VNode[] = [];\r\n \r\n // 内容插槽\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n children.push(...(slotContent as VNode[]));\r\n }\r\n }\r\n\r\n // 关闭按钮\r\n if (_props.closable) {\r\n const closeBtnProps = getButtonA11yProps({ ariaLabel: '关闭标签' });\r\n children.push(createVNode('span', mergeA11yProps(closeBtnProps, {\r\n class: 'lyt-tag__close',\r\n onClick: handleClose,\r\n }), [createVNode('span', {}, '×')]));\r\n }\r\n\r\n return createVNode('span', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n }, {\r\n class: getTagClass(),\r\n style: getTagStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { TagProps, TagSlots };\r\n","/**\r\n * @lytjs/ui - Spin 组件\r\n *\r\n * 加载中组件,用于展示加载状态\r\n */\r\n\r\nimport type { SpinProps, SpinSlots, SpinSetupProps } from './types';\r\nimport { defineComponent, onUnmounted } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { reactive, watch } from '@lytjs/reactivity';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Spin = defineComponent({\r\n name: 'LytSpin',\r\n\r\n props: {\r\n spinning: { type: Boolean, default: true },\r\n size: { type: String, default: 'default' },\r\n tip: { type: String, default: '' },\r\n delay: { type: Number, default: 0 },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: SpinSlots }) {\r\n const p = props as unknown as SpinSetupProps;\r\n const state = reactive({\r\n visible: props.spinning as boolean,\r\n });\r\n\r\n let delayTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n watch(() => props.spinning, (val: boolean) => {\r\n if (delayTimer) clearTimeout(delayTimer);\r\n if (val) {\r\n if (p.delay && p.delay > 0) {\r\n delayTimer = setTimeout(() => {\r\n state.visible = true;\r\n }, p.delay);\r\n } else {\r\n state.visible = true;\r\n }\r\n } else {\r\n state.visible = false;\r\n }\r\n });\r\n\r\n onUnmounted(() => {\r\n if (delayTimer) clearTimeout(delayTimer);\r\n });\r\n\r\n const getSpinClass = () => {\r\n const classes = ['lyt-spin'];\r\n if (state.visible) classes.push('lyt-spin--spinning');\r\n if (p.class) classes.push(p.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getSpinStyle = () => {\r\n if (!p.style) return undefined;\r\n if (isString(p.style)) return p.style;\r\n if (isObject(p.style)) {\r\n return Object.entries(p.style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n }\r\n return undefined;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n if (state.visible) {\r\n const loadingChildren: VNode[] = [];\r\n \r\n loadingChildren.push(createVNode('div', { class: `lyt-spin__icon lyt-spin__icon--${p.size}` }, [\r\n createVNode('svg', { viewBox: '0 0 1024 1024', class: 'lyt-spin__svg' }, [\r\n createVNode('path', {\r\n d: 'M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V736a32 32 0 0 1 32-32zm-448-192a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H96a32 32 0 0 1-32-32zm640 0a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H736a32 32 0 0 1-32-32z',\r\n }),\r\n ]),\r\n ]));\r\n \r\n if (p.tip || slots.tip) {\r\n loadingChildren.push(createVNode('div', { class: 'lyt-spin__tip' }, slots.tip ? slots.tip() : [createTextVNode(p.tip)]));\r\n }\r\n\r\n children.push(createVNode('div', { class: 'lyt-spin__loading' }, loadingChildren));\r\n }\r\n\r\n if (slots.default) {\r\n children.push(createVNode('div', {\r\n class: state.visible ? 'lyt-spin__content lyt-spin__content--hidden' : 'lyt-spin__content',\r\n }, slots.default()));\r\n }\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: p.id,\r\n 'aria-label': p.ariaLabel,\r\n 'aria-describedby': p.ariaDescribedBy,\r\n role: 'alert',\r\n 'aria-live': 'polite',\r\n }, {\r\n class: getSpinClass(),\r\n style: getSpinStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { SpinProps, SpinSlots };\r\n","import type { EmptyProps, EmptySlots, EmptySetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Empty = defineComponent({\r\n name: 'LytEmpty',\r\n\r\n props: {\r\n description: { type: String, default: '暂无数据' },\r\n image: { type: String, default: '' },\r\n imageSize: { type: Number, default: 160 },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: EmptySlots }) {\r\n const p = props as unknown as EmptySetupProps;\r\n\r\n const getEmptyClass = () => {\r\n const classes = ['lyt-empty'];\r\n if (p.class) classes.push(p.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getEmptyStyle = () => {\r\n if (!p.style) return undefined;\r\n if (isString(p.style)) return p.style;\r\n if (isObject(p.style)) {\r\n return Object.entries(p.style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n }\r\n return undefined;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n if (slots.image) {\r\n children.push(createVNode('div', { class: 'lyt-empty__image' }, slots.image()));\r\n } else if (p.image) {\r\n children.push(createVNode('div', { class: 'lyt-empty__image' }, [\r\n createVNode('img', {\r\n src: p.image,\r\n alt: 'empty',\r\n style: { width: `${p.imageSize}px`, height: `${p.imageSize}px` },\r\n }),\r\n ]));\r\n } else {\r\n children.push(createVNode('div', { class: 'lyt-empty__image' }, [\r\n createVNode('svg', {\r\n viewBox: '0 0 400 320',\r\n class: 'lyt-empty__svg',\r\n style: { width: `${p.imageSize || 160}px`, height: `${(p.imageSize || 160) * 0.8}px` },\r\n }, [\r\n createVNode('g', { fill: 'none', 'fill-rule': 'evenodd' }, [\r\n createVNode('g', { transform: 'translate(40 40)' }, [\r\n createVNode('ellipse', { fill: 'var(--lyt-color-info)', opacity: '0.2', cx: '160', cy: '140', rx: '160', ry: '140' }),\r\n createVNode('path', { d: 'M160 0C71.6 0 0 62.7 0 140s71.6 140 160 140 160-62.7 160-140S248.4 0 160 0z', fill: 'var(--lyt-color-info)', opacity: '0.15' }),\r\n createVNode('g', { fill: 'var(--lyt-color-info)' }, [\r\n createVNode('path', { d: 'M184 104a8 8 0 0 1 8 8v24a8 8 0 0 1-16 0v-24a8 8 0 0 1 8-8z', opacity: '0.3' }),\r\n createVNode('path', { d: 'M128 104a8 8 0 0 1 8 8v24a8 8 0 0 1-16 0v-24a8 8 0 0 1 8-8z', opacity: '0.3' }),\r\n createVNode('path', { d: 'M216 184H104a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h112a8 8 0 0 1 8 8v16a8 8 0 0 1-8 8z', opacity: '0.2' }),\r\n ]),\r\n ]),\r\n ]),\r\n ]),\r\n ]));\r\n }\r\n\r\n if (slots.description) {\r\n children.push(createVNode('div', { class: 'lyt-empty__description' }, slots.description()));\r\n } else if (p.description) {\r\n children.push(createVNode('div', { class: 'lyt-empty__description' }, [createTextVNode(p.description)]));\r\n }\r\n\r\n if (slots.default) {\r\n children.push(createVNode('div', { class: 'lyt-empty__bottom' }, slots.default()));\r\n }\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: p.id,\r\n 'aria-label': p.ariaLabel,\r\n 'aria-describedby': p.ariaDescribedBy,\r\n role: 'status',\r\n 'aria-live': 'polite',\r\n }, {\r\n class: getEmptyClass(),\r\n style: getEmptyStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { EmptyProps, EmptySlots };\r\n","/**\r\n * @lytjs/ui - Link 组件\r\n *\r\n * 链接组件,支持多种类型和样式\r\n */\r\n\r\nimport type { LinkProps, LinkSlots, LinkSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * Link 组件\r\n */\r\nexport const Link = defineComponent({\r\n name: 'LytLink',\r\n\r\n props: {\r\n type: { type: String, default: 'default' },\r\n disabled: { type: Boolean, default: false },\r\n underline: { type: Boolean, default: true },\r\n href: { type: String, default: '' },\r\n target: { type: String, default: '_self' },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onClick: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }) {\r\n const _props = props as LinkSetupProps;\r\n const handleClick = (event: MouseEvent) => {\r\n if (_props.disabled) {\r\n event.preventDefault();\r\n return;\r\n }\r\n _props.onClick?.(event);\r\n };\r\n\r\n const getLinkClass = () => {\r\n const classes = ['lyt-link'];\r\n if (_props.type !== 'default') {\r\n classes.push(`lyt-link--${_props.type}`);\r\n }\r\n if (!_props.underline) {\r\n classes.push('lyt-link--no-underline');\r\n }\r\n if (_props.disabled) {\r\n classes.push('lyt-link--disabled');\r\n }\r\n if (_props.class) {\r\n classes.push(_props.class);\r\n }\r\n return classes.join(' ');\r\n };\r\n\r\n const getLinkStyle = () => {\r\n if (!_props.style) return undefined;\r\n if (isString(_props.style)) return _props.style;\r\n if (isObject(_props.style)) {\r\n return Object.entries(_props.style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n }\r\n return undefined;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n children.push(...(slotContent as VNode[]));\r\n }\r\n }\r\n\r\n if (_props.href) {\r\n return createVNode('a', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n }, {\r\n class: getLinkClass(),\r\n style: getLinkStyle(),\r\n href: _props.href,\r\n target: _props.target,\r\n onClick: handleClick,\r\n }), children);\r\n } else {\r\n return createVNode('span', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n role: 'link',\r\n }, {\r\n class: getLinkClass(),\r\n style: getLinkStyle(),\r\n onClick: handleClick,\r\n }), children);\r\n }\r\n };\r\n },\r\n});\r\n\r\nexport type { LinkProps, LinkSlots };\r\n","import type { ContainerProps, ContainerSlots } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\n\r\nexport interface ContainerSetupProps {\r\n fluid: boolean;\r\n class: string;\r\n style: string;\r\n}\r\n\r\nexport const Container = defineComponent({\r\n name: 'LytContainer',\r\n\r\n props: {\r\n fluid: { type: Boolean, default: false },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: ContainerSlots }) {\r\n const p = props as unknown as ContainerSetupProps;\r\n\r\n const getContainerClass = () => {\r\n const classes = ['lyt-container'];\r\n if (p.fluid) {\r\n classes.push('lyt-container--fluid');\r\n }\r\n if (p.class) {\r\n classes.push(p.class);\r\n }\r\n return classes.join(' ');\r\n };\r\n\r\n const getContainerStyle = () => {\r\n if (!p.style) return undefined;\r\n if (isString(p.style)) return p.style;\r\n if (isObject(p.style)) {\r\n return Object.entries(p.style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n }\r\n return undefined;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n if (slots.default) {\r\n children.push(...slots.default());\r\n }\r\n\r\n return createVNode('div', {\r\n class: getContainerClass(),\r\n style: getContainerStyle(),\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { ContainerProps, ContainerSlots };\r\n","import type { DividerProps, DividerSlots, DividerSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Divider = defineComponent({\r\n name: 'LytDivider',\r\n\r\n props: {\r\n type: { type: String, default: 'horizontal' },\r\n contentPosition: { type: String, default: 'center' },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: DividerSlots }) {\r\n const p = props as unknown as DividerSetupProps;\r\n\r\n const getDividerClass = () => {\r\n const classes = ['lyt-divider'];\r\n if (p.type !== 'horizontal') {\r\n classes.push(`lyt-divider--${p.type}`);\r\n }\r\n if (slots.default) {\r\n classes.push(`lyt-divider--${p.contentPosition}`);\r\n }\r\n if (p.class) {\r\n classes.push(p.class);\r\n }\r\n return classes.join(' ');\r\n };\r\n\r\n const getDividerStyle = () => {\r\n if (!p.style) return undefined;\r\n if (isString(p.style)) return p.style;\r\n if (isObject(p.style)) {\r\n return Object.entries(p.style)\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join('; ');\r\n }\r\n return undefined;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n if (slots.default) {\r\n children.push(createVNode('span', { class: 'lyt-divider__text' }, slots.default()));\r\n }\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: p.id,\r\n 'aria-label': p.ariaLabel,\r\n 'aria-describedby': p.ariaDescribedBy,\r\n role: 'separator',\r\n }, {\r\n class: getDividerClass(),\r\n style: getDividerStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { DividerProps, DividerSlots };\r\n","/**\r\n * @lytjs/ui - Toast 组件\r\n *\r\n * 轻提示组件,用于显示简短的消息提示\r\n */\r\n\r\nimport type { ToastProps, ToastSlots, ToastSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { reactive } from '@lytjs/reactivity';\r\n\r\n/**\r\n * Toast 组件\r\n */\r\nexport const Toast = defineComponent({\r\n name: 'LytToast',\r\n\r\n props: {\r\n message: { type: String, default: '' },\r\n type: { type: String, default: 'info' },\r\n duration: { type: Number, default: 3000 },\r\n position: { type: String, default: 'top' },\r\n icon: { type: String, default: '' },\r\n closable: { type: Boolean, default: false },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n onClose: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots, emit }) {\r\n const _props = props as ToastSetupProps;\r\n const state = reactive({\r\n visible: true,\r\n timer: null as ReturnType<typeof setTimeout> | null,\r\n });\r\n\r\n const startTimer = () => {\r\n if (_props.duration > 0) {\r\n state.timer = setTimeout(() => {\r\n close();\r\n }, _props.duration);\r\n }\r\n };\r\n\r\n const clearTimer = () => {\r\n if (state.timer) {\r\n clearTimeout(state.timer as ReturnType<typeof setTimeout>);\r\n state.timer = null;\r\n }\r\n };\r\n\r\n const close = () => {\r\n state.visible = false;\r\n emit('close');\r\n _props.onClose?.();\r\n };\r\n\r\n const handleClose = (e: Event) => {\r\n e.stopPropagation();\r\n close();\r\n };\r\n\r\n const getToastClass = () => {\r\n const classes = ['lyt-toast'];\r\n classes.push(`lyt-toast--${_props.type}`);\r\n classes.push(`lyt-toast--${_props.position}`);\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getToastStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n // 启动定时器\r\n startTimer();\r\n\r\n return () => {\r\n if (!state.visible) return createVNode('div', { style: 'display: none;' }, []);\r\n\r\n const children: VNode[] = [];\r\n \r\n // 图标\r\n if (_props.icon) {\r\n children.push(createVNode('span', {\r\n class: 'lyt-toast__icon',\r\n }, [createVNode('span', {}, _props.icon)]));\r\n } else if (slots.icon) {\r\n const slotIcon = slots.icon();\r\n if (Array.isArray(slotIcon)) {\r\n children.push(createVNode('span', {\r\n class: 'lyt-toast__icon',\r\n }, slotIcon as VNode[]));\r\n }\r\n }\r\n\r\n // 消息内容\r\n if (_props.message) {\r\n children.push(createVNode('span', {\r\n class: 'lyt-toast__message',\r\n }, [createVNode('span', {}, _props.message)]));\r\n } else if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n children.push(createVNode('span', {\r\n class: 'lyt-toast__message',\r\n }, slotContent as VNode[]));\r\n }\r\n }\r\n\r\n // 关闭按钮\r\n if (_props.closable) {\r\n children.push(createVNode('span', {\r\n class: 'lyt-toast__close',\r\n onClick: handleClose,\r\n }, [createVNode('span', {}, '×')]));\r\n }\r\n\r\n return createVNode('div', {\r\n class: getToastClass(),\r\n style: getToastStyle(),\r\n onMouseenter: clearTimer,\r\n onMouseleave: startTimer,\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { ToastProps, ToastSlots };\r\n","/**\r\n * @lytjs/ui - Alert 组件\r\n *\r\n * 警告提示组件,用于展示重要的提示信息\r\n */\r\n\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport type { AlertType, AlertSetupProps } from './types';\r\nimport { getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Alert = defineComponent({\r\n name: 'LytAlert',\r\n\r\n props: {\r\n title: { type: String, default: '' },\r\n description: { type: String, default: '' },\r\n type: { type: String, default: 'info' },\r\n closable: { type: Boolean, default: false },\r\n showIcon: { type: Boolean, default: true },\r\n effect: { type: String, default: 'light' },\r\n class: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onClose: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots, emit }) {\r\n const _props = props as AlertSetupProps;\r\n const handleClose = () => {\r\n emit('close');\r\n _props.onClose?.();\r\n };\r\n\r\n const getIconMap = (): Record<AlertType, string> => ({\r\n success: '✓',\r\n warning: '⚠',\r\n info: 'ℹ',\r\n error: '✕',\r\n });\r\n\r\n return () => {\r\n const alertClass = [\r\n 'lyt-alert',\r\n `lyt-alert--${_props.type}`,\r\n `lyt-alert--${_props.effect}`,\r\n _props.class,\r\n ].filter(Boolean).join(' ');\r\n\r\n const children: VNode[] = [];\r\n\r\n if (_props.showIcon) {\r\n const icon = getIconMap()[_props.type as AlertType] || 'ℹ';\r\n children.push(createVNode('span', { class: 'lyt-alert__icon' }, [createVNode('span', {}, icon)]));\r\n }\r\n\r\n const contentChildren: VNode[] = [];\r\n \r\n // Title\r\n if (slots.title || _props.title) {\r\n const titleChildren: VNode[] = [];\r\n if (slots.title) {\r\n const slotContent = slots.title();\r\n if (Array.isArray(slotContent)) {\r\n titleChildren.push(...(slotContent as VNode[]));\r\n }\r\n } else if (_props.title) {\r\n titleChildren.push(createVNode('span', {}, _props.title));\r\n }\r\n if (titleChildren.length > 0) {\r\n contentChildren.push(createVNode('div', { class: 'lyt-alert__title' }, titleChildren));\r\n }\r\n }\r\n\r\n // Description\r\n if (_props.description) {\r\n contentChildren.push(createVNode('div', { class: 'lyt-alert__description' }, [createVNode('span', {}, _props.description)]));\r\n }\r\n\r\n // Default slot\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n contentChildren.push(createVNode('div', { class: 'lyt-alert__message' }, slotContent as VNode[]));\r\n }\r\n }\r\n\r\n if (contentChildren.length > 0) {\r\n children.push(createVNode('div', { class: 'lyt-alert__content' }, contentChildren));\r\n }\r\n\r\n if (_props.closable) {\r\n const closeBtnProps = getButtonA11yProps({ ariaLabel: '关闭提示' });\r\n children.push(createVNode('button', mergeA11yProps(closeBtnProps, {\r\n class: 'lyt-alert__close',\r\n onClick: handleClose,\r\n }), [createVNode('span', {}, '×')]));\r\n }\r\n\r\n return createVNode('div', {\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel || _props.title || 'Alert',\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n 'role': 'alert',\r\n class: alertClass,\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { AlertProps, AlertSlots, AlertType, AlertEffect } from './types';\r\n","/**\r\n * @lytjs/ui - Tooltip 组件\r\n *\r\n * 文字提示组件,用于显示额外的提示信息\r\n */\r\n\r\nimport type { TooltipProps, TooltipSlots, TooltipSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { reactive } from '@lytjs/reactivity';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Tooltip = defineComponent({\r\n name: 'LytTooltip',\r\n\r\n props: {\r\n content: { type: String, default: '' },\r\n placement: { type: String, default: 'top' },\r\n trigger: { type: String, default: 'hover' },\r\n disabled: { type: Boolean, default: false },\r\n openDelay: { type: Number, default: 0 },\r\n closeDelay: { type: Number, default: 0 },\r\n showArrow: { type: Boolean, default: true },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }: { slots: TooltipSlots }) {\r\n const p = props as unknown as TooltipSetupProps;\r\n const state = reactive({\r\n visible: false,\r\n });\r\n let openTimer: ReturnType<typeof setTimeout> | null = null;\r\n let closeTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n const handleMouseEnter = () => {\r\n if (p.disabled || p.trigger !== 'hover') return;\r\n if (closeTimer) clearTimeout(closeTimer);\r\n if (p.openDelay && p.openDelay > 0) {\r\n openTimer = setTimeout(() => {\r\n state.visible = true;\r\n }, p.openDelay);\r\n } else {\r\n state.visible = true;\r\n }\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n if (p.disabled || p.trigger !== 'hover') return;\r\n if (openTimer) clearTimeout(openTimer);\r\n if (p.closeDelay && p.closeDelay > 0) {\r\n closeTimer = setTimeout(() => {\r\n state.visible = false;\r\n }, p.closeDelay);\r\n } else {\r\n state.visible = false;\r\n }\r\n };\r\n\r\n const handleClick = () => {\r\n if (p.disabled || p.trigger !== 'click') return;\r\n state.visible = !state.visible;\r\n };\r\n\r\n const handleFocus = () => {\r\n if (p.disabled || p.trigger !== 'focus') return;\r\n state.visible = true;\r\n };\r\n\r\n const handleBlur = () => {\r\n if (p.disabled || p.trigger !== 'focus') return;\r\n state.visible = false;\r\n };\r\n\r\n const getTooltipClass = () => {\r\n const classes = ['lyt-tooltip'];\r\n classes.push(`lyt-tooltip--${p.placement}`);\r\n if (p.class) classes.push(p.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getTooltipStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (p.style) {\r\n if (isString(p.style)) {\r\n return p.style;\r\n }\r\n if (isObject(p.style)) {\r\n Object.assign(style, p.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n if (slots.default) {\r\n children.push(createVNode('div', {\r\n class: 'lyt-tooltip__trigger',\r\n onMouseenter: handleMouseEnter,\r\n onMouseleave: handleMouseLeave,\r\n onClick: handleClick,\r\n onFocus: handleFocus,\r\n onBlur: handleBlur,\r\n }, slots.default()));\r\n }\r\n\r\n if (state.visible && !p.disabled) {\r\n const contentChildren: VNode[] = [];\r\n \r\n if (p.showArrow) {\r\n contentChildren.push(createVNode('div', {\r\n class: 'lyt-tooltip__arrow',\r\n }, []));\r\n }\r\n\r\n if (p.content) {\r\n contentChildren.push(createVNode('div', {\r\n class: 'lyt-tooltip__content',\r\n }, [createTextVNode(p.content)]));\r\n } else if (slots.content) {\r\n contentChildren.push(createVNode('div', {\r\n class: 'lyt-tooltip__content',\r\n }, slots.content()));\r\n }\r\n\r\n children.push(createVNode('div', {\r\n class: getTooltipClass(),\r\n style: getTooltipStyle(),\r\n }, contentChildren));\r\n }\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: p.id,\r\n 'aria-label': p.ariaLabel,\r\n 'aria-describedby': p.ariaDescribedBy,\r\n }, {\r\n class: 'lyt-tooltip-wrapper',\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { TooltipProps, TooltipSlots };\r\n","/**\r\n * @lytjs/ui - Checkbox 组件\r\n *\r\n * 复选框组件,用于多选场景\r\n */\r\n\r\nimport type { CheckboxProps, CheckboxSlots, CheckboxSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject, isArray } from '@lytjs/common-is';\r\nimport { reactive, computed } from '@lytjs/reactivity';\r\nimport { getInputControlA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Checkbox = defineComponent({\r\n name: 'LytCheckbox',\r\n\r\n props: {\r\n modelValue: { type: Boolean, default: false },\r\n label: { type: String, default: '' },\r\n trueLabel: { type: String, default: undefined },\r\n falseLabel: { type: String, default: undefined },\r\n disabled: { type: Boolean, default: false },\r\n checked: { type: Boolean, default: false },\r\n indeterminate: { type: Boolean, default: false },\r\n name: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaInvalid: { type: Boolean, default: false },\r\n ariaRequired: { type: Boolean, default: false },\r\n tabIndex: { type: Number, default: undefined },\r\n onChange: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots, emit }) {\r\n const _props = props as CheckboxSetupProps;\r\n const state = reactive({\r\n focus: false,\r\n });\r\n\r\n const isChecked = computed(() => {\r\n if (isArray(_props.modelValue)) {\r\n return (_props.modelValue as unknown[]).includes(_props.label || _props.trueLabel);\r\n }\r\n return _props.modelValue || _props.checked;\r\n });\r\n\r\n const handleChange = (e: Event) => {\r\n if (_props.disabled) return;\r\n\r\n const target = e.target as HTMLInputElement;\r\n let newValue;\r\n\r\n if (isArray(_props.modelValue)) {\r\n newValue = [...(_props.modelValue as unknown[])];\r\n const value = _props.label || _props.trueLabel;\r\n if (target.checked) {\r\n if (!newValue.includes(value)) {\r\n newValue.push(value);\r\n }\r\n } else {\r\n const index = newValue.indexOf(value);\r\n if (index > -1) {\r\n newValue.splice(index, 1);\r\n }\r\n }\r\n } else {\r\n newValue = target.checked;\r\n }\r\n\r\n emit('update:modelValue', newValue);\r\n emit('change', newValue);\r\n _props.onChange?.(newValue as boolean);\r\n };\r\n\r\n const handleFocus = () => {\r\n state.focus = true;\r\n };\r\n\r\n const handleBlur = () => {\r\n state.focus = false;\r\n };\r\n\r\n const getCheckboxClass = () => {\r\n const classes = ['lyt-checkbox'];\r\n if (isChecked.value) classes.push('lyt-checkbox--checked');\r\n if (_props.disabled) classes.push('lyt-checkbox--disabled');\r\n if (_props.indeterminate) classes.push('lyt-checkbox--indeterminate');\r\n if (state.focus) classes.push('lyt-checkbox--focus');\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getCheckboxStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n const checked = isChecked.value;\r\n\r\n const a11yProps = getInputControlA11yProps({\r\n id: _props.id,\r\n ariaLabel: _props.ariaLabel,\r\n ariaDescribedBy: _props.ariaDescribedBy,\r\n ariaInvalid: _props.ariaInvalid,\r\n ariaRequired: _props.ariaRequired,\r\n disabled: _props.disabled,\r\n tabIndex: _props.tabIndex,\r\n checked: checked ? true : _props.indeterminate ? 'mixed' as const : false,\r\n });\r\n\r\n children.push(createVNode('input', mergeA11yProps(a11yProps, {\r\n type: 'checkbox',\r\n class: 'lyt-checkbox__input',\r\n checked: checked,\r\n disabled: _props.disabled,\r\n name: _props.name,\r\n onKeydown: _props.onKeydown,\r\n onChange: handleChange,\r\n onFocus: handleFocus,\r\n onBlur: handleBlur,\r\n }), []));\r\n\r\n children.push(createVNode('span', {\r\n class: 'lyt-checkbox__inner',\r\n }, []));\r\n\r\n if (_props.label) {\r\n children.push(createVNode('span', {\r\n class: 'lyt-checkbox__label',\r\n }, [createVNode('span', {}, _props.label)]));\r\n } else if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n children.push(createVNode('span', {\r\n class: 'lyt-checkbox__label',\r\n }, slotContent as VNode[]));\r\n }\r\n }\r\n\r\n return createVNode('label', {\r\n class: getCheckboxClass(),\r\n style: getCheckboxStyle(),\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { CheckboxProps, CheckboxSlots };\r\n","/**\r\n * @lytjs/ui - CheckboxGroup 组件\r\n *\r\n * 复选框组组件,用于多选场景\r\n */\r\n\r\nimport type { CheckboxGroupProps, CheckboxGroupSlots, CheckboxGroupSetupProps } from './types';\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * CheckboxGroup 组件\r\n */\r\nexport const CheckboxGroup = defineComponent({\r\n name: 'LytCheckboxGroup',\r\n\r\n props: {\r\n modelValue: { type: Array, default: undefined },\r\n disabled: { type: Boolean, default: false },\r\n min: { type: Number, default: undefined },\r\n max: { type: Number, default: undefined },\r\n size: { type: String, default: 'default' },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaRequired: { type: Boolean, default: false },\r\n id: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }) {\r\n const _props = props as CheckboxGroupSetupProps;\r\n\r\n const getCheckboxGroupClass = () => {\r\n const classes = ['lyt-checkbox-group'];\r\n if (_props.class) classes.push(_props.class as string);\r\n return classes.join(' ');\r\n };\r\n\r\n const getCheckboxGroupStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n children.push(...(slotContent as VNode[]));\r\n } else if (slotContent) {\r\n children.push(slotContent as VNode);\r\n }\r\n }\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: _props.id as string,\r\n 'aria-label': _props.ariaLabel as string,\r\n 'aria-describedby': _props.ariaDescribedBy as string,\r\n 'aria-required': _props.ariaRequired ? 'true' : undefined,\r\n role: 'group',\r\n }, {\r\n class: getCheckboxGroupClass(),\r\n style: getCheckboxGroupStyle(),\r\n 'aria-disabled': _props.disabled ? 'true' : undefined,\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { CheckboxGroupProps, CheckboxGroupSlots };\r\n","/**\r\n * @lytjs/ui - Radio 组件\r\n *\r\n * 单选框组件,用于单选场景\r\n */\r\n\r\nimport type { RadioProps, RadioSlots, RadioSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { reactive, computed } from '@lytjs/reactivity';\r\nimport { getInputControlA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Radio = defineComponent({\r\n name: 'LytRadio',\r\n\r\n props: {\r\n modelValue: { type: String, default: undefined },\r\n label: { type: String, default: undefined },\r\n disabled: { type: Boolean, default: false },\r\n name: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaInvalid: { type: Boolean, default: false },\r\n ariaRequired: { type: Boolean, default: false },\r\n tabIndex: { type: Number, default: undefined },\r\n onChange: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots, emit }) {\r\n const _props = props as RadioSetupProps;\r\n const state = reactive({\r\n focus: false,\r\n });\r\n\r\n const isChecked = computed(() => {\r\n return _props.modelValue === _props.label;\r\n });\r\n\r\n const handleChange = () => {\r\n if (_props.disabled) return;\r\n\r\n const newValue = _props.label;\r\n emit('update:modelValue', newValue);\r\n emit('change', newValue);\r\n _props.onChange?.(newValue as string | number | boolean);\r\n };\r\n\r\n const handleFocus = () => {\r\n state.focus = true;\r\n };\r\n\r\n const handleBlur = () => {\r\n state.focus = false;\r\n };\r\n\r\n const getRadioClass = () => {\r\n const classes = ['lyt-radio'];\r\n if (isChecked.value) classes.push('lyt-radio--checked');\r\n if (_props.disabled) classes.push('lyt-radio--disabled');\r\n if (state.focus) classes.push('lyt-radio--focus');\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getRadioStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n const checked = isChecked.value;\r\n\r\n const a11yProps = getInputControlA11yProps({\r\n checked: checked,\r\n disabled: _props.disabled,\r\n id: _props.id,\r\n ariaLabel: _props.ariaLabel,\r\n ariaDescribedBy: _props.ariaDescribedBy,\r\n ariaInvalid: _props.ariaInvalid,\r\n ariaRequired: _props.ariaRequired,\r\n tabIndex: _props.tabIndex,\r\n });\r\n\r\n children.push(createVNode('input', mergeA11yProps(a11yProps, {\r\n type: 'radio',\r\n class: 'lyt-radio__input',\r\n checked: checked,\r\n disabled: _props.disabled,\r\n name: _props.name,\r\n onKeydown: _props.onKeydown,\r\n onChange: handleChange,\r\n onFocus: handleFocus,\r\n onBlur: handleBlur,\r\n }), []));\r\n\r\n children.push(createVNode('span', {\r\n class: 'lyt-radio__inner',\r\n }, []));\r\n\r\n if (_props.label !== undefined) {\r\n children.push(createVNode('span', {\r\n class: 'lyt-radio__label',\r\n }, [createVNode('span', {}, String(_props.label))]));\r\n } else if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n children.push(createVNode('span', {\r\n class: 'lyt-radio__label',\r\n }, slotContent as VNode[]));\r\n }\r\n }\r\n\r\n return createVNode('label', {\r\n class: getRadioClass(),\r\n style: getRadioStyle(),\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { RadioProps, RadioSlots };\r\n","/**\r\n * @lytjs/ui - RadioGroup 组件\r\n *\r\n * 单选框组组件,用于单选场景\r\n */\r\n\r\nimport type { RadioGroupProps, RadioGroupSlots, RadioGroupSetupProps } from './types';\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { getGroupA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const RadioGroup = defineComponent({\r\n name: 'LytRadioGroup',\r\n\r\n props: {\r\n modelValue: { type: [String, Number, Boolean] as unknown as PropType<string | number | boolean>, default: undefined },\r\n disabled: { type: Boolean, default: false },\r\n size: { type: String, default: 'default' },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaRequired: { type: Boolean, default: false },\r\n id: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }) {\r\n const _props = props as RadioGroupSetupProps;\r\n\r\n const getRadioGroupClass = () => {\r\n const classes = ['lyt-radio-group'];\r\n if (_props.class) classes.push(_props.class as string);\r\n return classes.join(' ');\r\n };\r\n\r\n const getRadioGroupStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n children.push(...(slotContent as VNode[]));\r\n } else if (slotContent) {\r\n children.push(slotContent as VNode);\r\n }\r\n }\r\n\r\n const a11yProps = getGroupA11yProps({\r\n role: 'radiogroup',\r\n id: _props.id as string,\r\n ariaLabel: _props.ariaLabel as string,\r\n ariaDescribedBy: _props.ariaDescribedBy as string,\r\n ariaRequired: _props.ariaRequired,\r\n });\r\n\r\n return createVNode('div', mergeA11yProps(a11yProps, {\r\n class: getRadioGroupClass(),\r\n style: getRadioGroupStyle(),\r\n 'aria-disabled': _props.disabled ? 'true' : undefined,\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { RadioGroupProps, RadioGroupSlots };\r\n","/**\r\n * @lytjs/ui - Switch 组件\r\n *\r\n * 开关组件,用于表示两种状态的切换\r\n */\r\n\r\nimport type { SwitchProps, SwitchSlots, SwitchSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { reactive, computed } from '@lytjs/reactivity';\r\nimport { getSwitchA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * Switch 组件\r\n */\r\nexport const Switch = defineComponent({\r\n name: 'LytSwitch',\r\n\r\n props: {\r\n modelValue: { type: Boolean, default: false },\r\n disabled: { type: Boolean, default: false },\r\n loading: { type: Boolean, default: false },\r\n size: { type: String, default: 'default' },\r\n activeText: { type: String, default: '' },\r\n inactiveText: { type: String, default: '' },\r\n activeColor: { type: String, default: '' },\r\n inactiveColor: { type: String, default: '' },\r\n activeValue: { type: Boolean, default: true },\r\n inactiveValue: { type: Boolean, default: false },\r\n name: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaInvalid: { type: Boolean, default: false },\r\n ariaRequired: { type: Boolean, default: false },\r\n tabIndex: { type: Number, default: undefined },\r\n onChange: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots, emit }) {\r\n const _props = props as SwitchSetupProps;\r\n const state = reactive({\r\n focus: false,\r\n });\r\n\r\n const isChecked = computed(() => {\r\n return _props.modelValue === _props.activeValue;\r\n });\r\n\r\n const handleClick = () => {\r\n if (_props.disabled || _props.loading) return;\r\n\r\n const newValue = isChecked.value ? _props.inactiveValue : _props.activeValue;\r\n emit('update:modelValue', newValue);\r\n emit('change', newValue);\r\n _props.onChange?.(newValue as boolean);\r\n };\r\n\r\n const handleKeydown = (event: KeyboardEvent) => {\r\n if (_props.disabled || _props.loading) return;\r\n\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n const newValue = isChecked.value ? _props.inactiveValue : _props.activeValue;\r\n emit('update:modelValue', newValue);\r\n emit('change', newValue);\r\n _props.onChange?.(newValue as boolean);\r\n }\r\n\r\n _props.onKeydown?.(event);\r\n };\r\n\r\n const handleFocus = () => {\r\n state.focus = true;\r\n };\r\n\r\n const handleBlur = () => {\r\n state.focus = false;\r\n };\r\n\r\n const getSwitchClass = () => {\r\n const classes = ['lyt-switch'];\r\n if (isChecked.value) classes.push('lyt-switch--checked');\r\n if (_props.disabled) classes.push('lyt-switch--disabled');\r\n if (_props.loading) classes.push('lyt-switch--loading');\r\n if (_props.size !== 'default') classes.push(`lyt-switch--${_props.size}`);\r\n if (state.focus) classes.push('lyt-switch--focus');\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getSwitchStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.activeColor && isChecked.value) {\r\n style.backgroundColor = _props.activeColor;\r\n }\r\n if (_props.inactiveColor && !isChecked.value) {\r\n style.backgroundColor = _props.inactiveColor;\r\n }\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n const coreChildren: VNode[] = [];\r\n\r\n if (isChecked.value && _props.activeText) {\r\n coreChildren.push(createVNode('span', {\r\n class: 'lyt-switch__label lyt-switch__label--left',\r\n }, [createVNode('span', {}, _props.activeText)]));\r\n } else if (!isChecked.value && _props.inactiveText) {\r\n coreChildren.push(createVNode('span', {\r\n class: 'lyt-switch__label lyt-switch__label--left',\r\n }, [createVNode('span', {}, _props.inactiveText)]));\r\n } else if (slots.active && isChecked.value) {\r\n const slotContent = slots.active();\r\n if (Array.isArray(slotContent)) {\r\n coreChildren.push(createVNode('span', {\r\n class: 'lyt-switch__label lyt-switch__label--left',\r\n }, slotContent as VNode[]));\r\n }\r\n } else if (slots.inactive && !isChecked.value) {\r\n const slotContent = slots.inactive();\r\n if (Array.isArray(slotContent)) {\r\n coreChildren.push(createVNode('span', {\r\n class: 'lyt-switch__label lyt-switch__label--left',\r\n }, slotContent as VNode[]));\r\n }\r\n }\r\n\r\n const buttonChildren: VNode[] = [];\r\n if (_props.loading) {\r\n buttonChildren.push(createVNode('span', {}, '◌'));\r\n }\r\n coreChildren.push(createVNode('span', {\r\n class: 'lyt-switch__core',\r\n }, [\r\n createVNode('span', {\r\n class: 'lyt-switch__button',\r\n }, buttonChildren),\r\n ]));\r\n\r\n if (isChecked.value && _props.activeText) {\r\n coreChildren.push(createVNode('span', {\r\n class: 'lyt-switch__label lyt-switch__label--right',\r\n }, [createVNode('span', {}, _props.activeText)]));\r\n } else if (!isChecked.value && _props.inactiveText) {\r\n coreChildren.push(createVNode('span', {\r\n class: 'lyt-switch__label lyt-switch__label--right',\r\n }, [createVNode('span', {}, _props.inactiveText)]));\r\n }\r\n\r\n children.push(createVNode('div', {\r\n class: 'lyt-switch__wrapper',\r\n }, coreChildren));\r\n\r\n const a11yProps = getSwitchA11yProps({\r\n checked: isChecked.value,\r\n disabled: _props.disabled,\r\n id: _props.id,\r\n ariaLabel: _props.ariaLabel,\r\n ariaDescribedBy: _props.ariaDescribedBy,\r\n ariaInvalid: _props.ariaInvalid,\r\n ariaRequired: _props.ariaRequired,\r\n tabIndex: _props.tabIndex,\r\n });\r\n\r\n return createVNode('div', mergeA11yProps(a11yProps, {\r\n class: getSwitchClass(),\r\n style: getSwitchStyle(),\r\n onClick: handleClick,\r\n onKeydown: handleKeydown,\r\n onFocus: handleFocus,\r\n onBlur: handleBlur,\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { SwitchProps, SwitchSlots };\r\n","/**\r\n * @lytjs/ui - InputNumber 组件\r\n *\r\n * 数字输入框组件,用于数值输入\r\n */\r\n\r\nimport type { InputNumberProps, InputNumberSlots, InputNumberSetupProps } from './types';\r\nimport { defineComponent } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { reactive, computed, watch } from '@lytjs/reactivity';\r\nimport { getSpinbuttonA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * InputNumber 组件\r\n */\r\nexport const InputNumber = defineComponent({\r\n name: 'LytInputNumber',\r\n\r\n props: {\r\n modelValue: { type: Number, default: undefined },\r\n min: { type: Number, default: -Infinity },\r\n max: { type: Number, default: Infinity },\r\n step: { type: Number, default: 1 },\r\n stepStrictly: { type: Boolean, default: false },\r\n precision: { type: Number, default: undefined },\r\n size: { type: String, default: 'default' },\r\n disabled: { type: Boolean, default: false },\r\n controls: { type: Boolean, default: true },\r\n controlsPosition: { type: String, default: '' },\r\n name: { type: String, default: '' },\r\n label: { type: String, default: '' },\r\n placeholder: { type: String, default: '' },\r\n class: { type: String, default: '' },\r\n style: { type: String, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaRequired: { type: Boolean, default: false },\r\n ariaInvalid: { type: Boolean, default: false },\r\n tabIndex: { type: Number, default: undefined },\r\n onChange: { type: Function, default: undefined },\r\n onInput: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { emit }) {\r\n const _props = props as InputNumberSetupProps;\r\n const state = reactive({\r\n inputValue: _props.modelValue,\r\n focus: false,\r\n });\r\n\r\n const displayValue = computed(() => {\r\n if (state.inputValue === undefined || state.inputValue === null) {\r\n return '';\r\n }\r\n if (_props.precision !== undefined) {\r\n return state.inputValue.toFixed(_props.precision);\r\n }\r\n return String(state.inputValue);\r\n });\r\n\r\n const isAtMin = computed(() => {\r\n return state.inputValue !== undefined && state.inputValue <= _props.min;\r\n });\r\n\r\n const isAtMax = computed(() => {\r\n return state.inputValue !== undefined && state.inputValue >= _props.max;\r\n });\r\n\r\n const ensurePrecision = (value: number): number => {\r\n if (_props.precision !== undefined) {\r\n const factor = Math.pow(10, _props.precision);\r\n return Math.round(value * factor) / factor;\r\n }\r\n return value;\r\n };\r\n\r\n const ensureStep = (value: number): number => {\r\n if (_props.stepStrictly) {\r\n const steps = Math.round(value / _props.step);\r\n return ensurePrecision(steps * _props.step);\r\n }\r\n return ensurePrecision(value);\r\n };\r\n\r\n const clampValue = (value: number): number => {\r\n let result = value;\r\n if (result < _props.min) result = _props.min;\r\n if (result > _props.max) result = _props.max;\r\n return ensureStep(result);\r\n };\r\n\r\n const setValue = (value: number | undefined) => {\r\n if (value === undefined) {\r\n state.inputValue = undefined;\r\n emit('update:modelValue', undefined);\r\n emit('change', undefined);\r\n _props.onChange?.(undefined);\r\n return;\r\n }\r\n \r\n const newValue = clampValue(value);\r\n state.inputValue = newValue;\r\n emit('update:modelValue', newValue);\r\n emit('change', newValue);\r\n _props.onChange?.(newValue);\r\n };\r\n\r\n const handleIncrement = () => {\r\n if (_props.disabled || isAtMax.value) return;\r\n const newValue = (state.inputValue || 0) + _props.step;\r\n setValue(newValue);\r\n };\r\n\r\n const handleDecrement = () => {\r\n if (_props.disabled || isAtMin.value) return;\r\n const newValue = (state.inputValue || 0) - _props.step;\r\n setValue(newValue);\r\n };\r\n\r\n const handleInput = (e: Event) => {\r\n const target = e.target as HTMLInputElement;\r\n const value = target.value;\r\n \r\n if (value === '') {\r\n state.inputValue = undefined;\r\n emit('update:modelValue', undefined);\r\n emit('input', undefined);\r\n _props.onInput?.(undefined);\r\n return;\r\n }\r\n \r\n const numValue = parseFloat(value);\r\n if (!isNaN(numValue)) {\r\n state.inputValue = numValue;\r\n emit('input', numValue);\r\n _props.onInput?.(numValue);\r\n }\r\n };\r\n\r\n const handleBlur = (e: Event) => {\r\n state.focus = false;\r\n const target = e.target as HTMLInputElement;\r\n const value = target.value;\r\n \r\n if (value === '') {\r\n setValue(undefined);\r\n } else {\r\n const numValue = parseFloat(value);\r\n if (!isNaN(numValue)) {\r\n setValue(numValue);\r\n }\r\n }\r\n };\r\n\r\n const handleFocus = () => {\r\n state.focus = true;\r\n };\r\n\r\n const handleKeydown = (e: KeyboardEvent) => {\r\n switch (e.key) {\r\n case 'ArrowUp':\r\n e.preventDefault();\r\n handleIncrement();\r\n break;\r\n case 'ArrowDown':\r\n e.preventDefault();\r\n handleDecrement();\r\n break;\r\n case 'Home':\r\n if (_props.min !== -Infinity) {\r\n e.preventDefault();\r\n setValue(_props.min);\r\n }\r\n break;\r\n case 'End':\r\n if (_props.max !== Infinity) {\r\n e.preventDefault();\r\n setValue(_props.max);\r\n }\r\n break;\r\n }\r\n _props.onKeydown?.(e);\r\n };\r\n\r\n watch(() => _props.modelValue, (newValue) => {\r\n if (newValue !== state.inputValue) {\r\n state.inputValue = newValue;\r\n }\r\n });\r\n\r\n const getInputNumberClass = () => {\r\n const classes = ['lyt-input-number'];\r\n if (_props.size !== 'default') classes.push(`lyt-input-number--${_props.size}`);\r\n if (_props.disabled) classes.push('lyt-input-number--disabled');\r\n if (state.focus) classes.push('lyt-input-number--focus');\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getInputNumberStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n // 减号按钮\r\n if (_props.controls) {\r\n const decreaseBtnProps = getButtonA11yProps({\r\n ariaLabel: '减少',\r\n disabled: _props.disabled || isAtMin.value,\r\n });\r\n children.push(createVNode('span', mergeA11yProps(decreaseBtnProps, {\r\n class: `lyt-input-number__decrease ${isAtMin.value ? 'is-disabled' : ''}`,\r\n onClick: handleDecrement,\r\n }), [createTextVNode('−')]));\r\n }\r\n\r\n // 加号按钮\r\n if (_props.controls) {\r\n const increaseBtnProps = getButtonA11yProps({\r\n ariaLabel: '增加',\r\n disabled: _props.disabled || isAtMax.value,\r\n });\r\n children.push(createVNode('span', mergeA11yProps(increaseBtnProps, {\r\n class: `lyt-input-number__increase ${isAtMax.value ? 'is-disabled' : ''}`,\r\n onClick: handleIncrement,\r\n }), [createTextVNode('+')]));\r\n }\r\n\r\n // 输入框\r\n const spinbuttonProps = getSpinbuttonA11yProps({\r\n id: _props.id,\r\n ariaLabel: _props.ariaLabel,\r\n ariaDescribedBy: _props.ariaDescribedBy,\r\n ariaRequired: _props.ariaRequired,\r\n ariaInvalid: _props.ariaInvalid,\r\n disabled: _props.disabled,\r\n tabIndex: _props.tabIndex,\r\n value: state.inputValue,\r\n min: _props.min === -Infinity ? undefined : _props.min,\r\n max: _props.max === Infinity ? undefined : _props.max,\r\n });\r\n children.push(createVNode('input', mergeA11yProps(spinbuttonProps, {\r\n type: 'text',\r\n class: 'lyt-input-number__input',\r\n value: displayValue.value,\r\n disabled: _props.disabled,\r\n placeholder: _props.placeholder,\r\n name: _props.name,\r\n onInput: handleInput,\r\n onBlur: handleBlur,\r\n onFocus: handleFocus,\r\n onKeydown: handleKeydown,\r\n }), []));\r\n\r\n return createVNode('div', {\r\n class: getInputNumberClass(),\r\n style: getInputNumberStyle(),\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { InputNumberProps, InputNumberSlots };\r\n","/**\r\n * @lytjs/ui - Progress 组件\r\n *\r\n * 进度条组件,用于显示操作进度\r\n */\r\n\r\nimport type { ProgressProps, ProgressSlots, ProgressSetupProps } from './types';\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject, isArray } from '@lytjs/common-is';\r\nimport { computed } from '@lytjs/reactivity';\r\n\r\nexport const Progress = defineComponent({\r\n name: 'LytProgress',\r\n\r\n props: {\r\n percentage: { type: Number, default: 0 },\r\n type: { type: String, default: 'line' },\r\n status: { type: String, default: '' },\r\n strokeWidth: { type: Number, default: 6 },\r\n textInside: { type: Boolean, default: false },\r\n showText: { type: Boolean, default: true },\r\n color: { type: [String, Array, Object] as unknown as PropType<string | string[] | Record<string, string>>, default: '' },\r\n width: { type: Number, default: 126 },\r\n strokeLinecap: { type: String, default: 'round' },\r\n format: { type: Function, default: undefined },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>) {\r\n const _props = props as ProgressSetupProps;\r\n\r\n const validPercentage = computed(() => {\r\n let p = _props.percentage;\r\n if (p < 0) p = 0;\r\n if (p > 100) p = 100;\r\n return p;\r\n });\r\n\r\n const getStatus = computed(() => {\r\n if (_props.status) return _props.status;\r\n if (validPercentage.value === 100) return 'success';\r\n return '';\r\n });\r\n\r\n const getBarStyle = computed(() => {\r\n const style: Record<string, string> = {\r\n width: `${validPercentage.value}%`,\r\n };\r\n\r\n if (_props.color) {\r\n if (isString(_props.color)) {\r\n style.backgroundColor = _props.color;\r\n } else if (isObject(_props.color) && !isArray(_props.color)) {\r\n const colorObj = _props.color as Record<string, string>;\r\n for (const key in colorObj) {\r\n const percentage = parseInt(key);\r\n if (validPercentage.value >= percentage) {\r\n const colorValue = colorObj[key];\r\n if (colorValue) {\r\n style.backgroundColor = colorValue;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return style;\r\n });\r\n\r\n const getProgressClass = () => {\r\n const classes = ['lyt-progress'];\r\n if (_props.type) classes.push(`lyt-progress--${_props.type}`);\r\n const status = getStatus.value;\r\n if (status) classes.push(`lyt-progress--${status}`);\r\n if (_props.class) classes.push(_props.class as string);\r\n return classes.join(' ');\r\n };\r\n\r\n const getProgressStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n const formatText = () => {\r\n if (_props.format) {\r\n return _props.format(validPercentage.value);\r\n }\r\n return `${validPercentage.value}%`;\r\n };\r\n\r\n const renderLine = () => {\r\n const children: VNode[] = [];\r\n\r\n const barStyle = getBarStyle.value;\r\n const innerContent: VNode[] = [];\r\n if (_props.textInside && _props.showText) {\r\n innerContent.push(createVNode('div', { class: 'lyt-progress__inner-text' }, [createVNode('span', {}, formatText())]));\r\n }\r\n\r\n children.push(createVNode('div', {\r\n class: 'lyt-progress__outer',\r\n }, [\r\n createVNode('div', {\r\n class: 'lyt-progress__inner',\r\n style: barStyle,\r\n }, innerContent),\r\n ]));\r\n\r\n if (_props.showText && !_props.textInside) {\r\n children.push(createVNode('div', {\r\n class: 'lyt-progress__text',\r\n }, [createVNode('span', {}, formatText())]));\r\n }\r\n\r\n return children;\r\n };\r\n\r\n const renderCircle = () => {\r\n const radius = 50 - _props.strokeWidth / 2;\r\n const circumference = 2 * Math.PI * radius;\r\n const strokeDashoffset = circumference - (validPercentage.value / 100) * circumference;\r\n const barStyle = getBarStyle.value;\r\n\r\n const children: VNode[] = [];\r\n\r\n children.push(createVNode('svg', {\r\n class: 'lyt-progress__circle',\r\n viewBox: '0 0 100 100',\r\n width: _props.width,\r\n height: _props.width,\r\n }, [\r\n createVNode('path', {\r\n class: 'lyt-progress__circle-trail',\r\n d: `M 50 50 m 0,-${radius} a ${radius},${radius} 0 1 1 0,${radius * 2} a ${radius},${radius} 0 1 1 0,-${radius * 2}`,\r\n stroke: '#e5e9f2',\r\n strokeWidth: _props.strokeWidth,\r\n fill: 'none',\r\n }, []),\r\n createVNode('path', {\r\n class: 'lyt-progress__circle-path',\r\n d: `M 50 50 m 0,-${radius} a ${radius},${radius} 0 1 1 0,${radius * 2} a ${radius},${radius} 0 1 1 0,-${radius * 2}`,\r\n stroke: barStyle.backgroundColor || '#409eff',\r\n strokeWidth: _props.strokeWidth,\r\n fill: 'none',\r\n strokeDasharray: `${circumference}px, ${circumference}px`,\r\n strokeDashoffset: `${strokeDashoffset}px`,\r\n strokeLinecap: _props.strokeLinecap,\r\n }, []),\r\n ]));\r\n\r\n if (_props.showText) {\r\n children.push(createVNode('div', {\r\n class: 'lyt-progress__text',\r\n }, [createVNode('span', {}, formatText())]));\r\n }\r\n\r\n return children;\r\n };\r\n\r\n return () => {\r\n let content: VNode[];\r\n\r\n if (_props.type === 'circle' || _props.type === 'dashboard') {\r\n content = renderCircle();\r\n } else {\r\n content = renderLine();\r\n }\r\n\r\n return createVNode('div', {\r\n id: _props.id as string,\r\n 'aria-label': _props.ariaLabel as string || 'Progress',\r\n 'aria-describedby': _props.ariaDescribedBy as string,\r\n role: 'progressbar',\r\n 'aria-valuenow': String(validPercentage.value),\r\n 'aria-valuemin': '0',\r\n 'aria-valuemax': '100',\r\n class: getProgressClass(),\r\n style: getProgressStyle(),\r\n }, content);\r\n };\r\n },\r\n});\r\n\r\nexport type { ProgressProps, ProgressSlots };\r\n","/**\r\n * @lytjs/ui - Slider 组件\r\n *\r\n * 滑块组件,用于在给定范围内选择一个值\r\n */\r\n\r\nimport type { SliderProps, SliderSlots, SliderSetupProps } from './types';\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { reactive, computed, watch } from '@lytjs/reactivity';\r\nimport { getSliderA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Slider = defineComponent({\r\n name: 'LytSlider',\r\n\r\n props: {\r\n modelValue: { type: Number, default: 0 },\r\n min: { type: Number, default: 0 },\r\n max: { type: Number, default: 100 },\r\n step: { type: Number, default: 1 },\r\n showInput: { type: Boolean, default: false },\r\n showInputControls: { type: Boolean, default: true },\r\n inputSize: { type: String, default: 'default' },\r\n showStops: { type: Boolean, default: false },\r\n showTooltip: { type: Boolean, default: true },\r\n formatTooltip: { type: Function, default: undefined },\r\n disabled: { type: Boolean, default: false },\r\n range: { type: Boolean, default: false },\r\n vertical: { type: Boolean, default: false },\r\n height: { type: String, default: '' },\r\n label: { type: String, default: '' },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n ariaRequired: { type: Boolean, default: false },\r\n ariaInvalid: { type: Boolean, default: false },\r\n tabIndex: { type: Number, default: undefined },\r\n onChange: { type: Function, default: undefined },\r\n onInput: { type: Function, default: undefined },\r\n onKeydown: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { emit }) {\r\n const _props = props as SliderSetupProps;\r\n\r\n const state = reactive({\r\n firstValue: 0,\r\n secondValue: 0,\r\n dragging: false,\r\n showTooltip: false,\r\n });\r\n\r\n const initValues = () => {\r\n if (_props.range) {\r\n if (Array.isArray(_props.modelValue)) {\r\n state.firstValue = _props.modelValue[0] || _props.min;\r\n state.secondValue = _props.modelValue[1] || _props.max;\r\n } else {\r\n state.firstValue = _props.min;\r\n state.secondValue = _props.max;\r\n }\r\n } else {\r\n if (typeof _props.modelValue === 'number') {\r\n state.firstValue = _props.modelValue;\r\n } else {\r\n state.firstValue = _props.min;\r\n }\r\n }\r\n };\r\n\r\n initValues();\r\n\r\n watch(() => _props.modelValue, () => {\r\n initValues();\r\n });\r\n\r\n const formatValue = (value: number) => {\r\n if (_props.formatTooltip) {\r\n return _props.formatTooltip(value);\r\n }\r\n return String(value);\r\n };\r\n\r\n const getValueByPercent = (percent: number) => {\r\n const range = _props.max - _props.min;\r\n let value = (percent / 100) * range + _props.min;\r\n\r\n if (_props.step > 0) {\r\n value = Math.round(value / _props.step) * _props.step;\r\n }\r\n\r\n value = Math.max(_props.min, Math.min(_props.max, value));\r\n return value;\r\n };\r\n\r\n const getPercentByValue = (value: number) => {\r\n const range = _props.max - _props.min;\r\n return ((value - _props.min) / range) * 100;\r\n };\r\n\r\n const firstPercent = computed(() => getPercentByValue(state.firstValue));\r\n const secondPercent = computed(() => getPercentByValue(state.secondValue));\r\n\r\n const clampValue = (value: number) => {\r\n return Math.max(_props.min, Math.min(_props.max, value));\r\n };\r\n\r\n const handleKeydown = (event: KeyboardEvent) => {\r\n if (_props.disabled) return;\r\n \r\n let newValue: number;\r\n \r\n switch (event.key) {\r\n case 'ArrowLeft':\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n newValue = clampValue(state.firstValue - _props.step);\r\n break;\r\n case 'ArrowRight':\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n newValue = clampValue(state.firstValue + _props.step);\r\n break;\r\n case 'Home':\r\n event.preventDefault();\r\n newValue = _props.min;\r\n break;\r\n case 'End':\r\n event.preventDefault();\r\n newValue = _props.max;\r\n break;\r\n default:\r\n _props.onKeydown?.(event);\r\n return;\r\n }\r\n \r\n if (newValue !== state.firstValue) {\r\n state.firstValue = newValue;\r\n state.showTooltip = true;\r\n\r\n if (!_props.range) {\r\n emit('update:modelValue', state.firstValue);\r\n emit('input', state.firstValue);\r\n _props.onInput?.(state.firstValue);\r\n }\r\n\r\n setTimeout(() => {\r\n state.showTooltip = false;\r\n }, 1500);\r\n }\r\n\r\n _props.onKeydown?.(event);\r\n };\r\n\r\n const handleMouseDown = (_event: MouseEvent) => {\r\n if (_props.disabled) return;\r\n state.dragging = true;\r\n state.showTooltip = true;\r\n document.addEventListener('mousemove', handleMouseMove);\r\n document.addEventListener('mouseup', handleMouseUp);\r\n };\r\n\r\n const handleMouseMove = (event: MouseEvent) => {\r\n if (!state.dragging) return;\r\n\r\n const slider = document.querySelector('.lyt-slider');\r\n if (!slider) return;\r\n\r\n const rect = slider.getBoundingClientRect();\r\n let percent;\r\n\r\n if (_props.vertical) {\r\n percent = ((rect.bottom - event.clientY) / rect.height) * 100;\r\n } else {\r\n percent = ((event.clientX - rect.left) / rect.width) * 100;\r\n }\r\n\r\n percent = Math.max(0, Math.min(100, percent));\r\n const newValue = getValueByPercent(percent);\r\n\r\n if (_props.range) {\r\n const diff1 = Math.abs(newValue - state.firstValue);\r\n const diff2 = Math.abs(newValue - state.secondValue);\r\n\r\n if (diff1 < diff2) {\r\n state.firstValue = Math.min(newValue, state.secondValue);\r\n } else {\r\n state.secondValue = Math.max(newValue, state.firstValue);\r\n }\r\n\r\n const newModelValue: number | number[] = _props.range\r\n ? [state.firstValue, state.secondValue]\r\n : state.firstValue;\r\n emit('update:modelValue', newModelValue);\r\n emit('input', newModelValue);\r\n (_props.onInput as ((value: number | number[]) => void) | undefined)?.(newModelValue);\r\n } else {\r\n state.firstValue = newValue;\r\n emit('update:modelValue', state.firstValue);\r\n emit('input', state.firstValue);\r\n (_props.onInput as ((value: number) => void) | undefined)?.(state.firstValue);\r\n }\r\n };\r\n\r\n const handleMouseUp = () => {\r\n if (!state.dragging) return;\r\n state.dragging = false;\r\n state.showTooltip = false;\r\n document.removeEventListener('mousemove', handleMouseMove);\r\n document.removeEventListener('mouseup', handleMouseUp);\r\n\r\n if (_props.range) {\r\n const newModelValue: number[] = [state.firstValue, state.secondValue];\r\n emit('change', newModelValue);\r\n (_props.onChange as ((value: number[]) => void) | undefined)?.(newModelValue);\r\n } else {\r\n emit('change', state.firstValue);\r\n (_props.onChange as ((value: number) => void) | undefined)?.(state.firstValue);\r\n }\r\n };\r\n\r\n const getSliderClass = () => {\r\n const classes = ['lyt-slider'];\r\n if (_props.vertical) classes.push('lyt-slider--vertical');\r\n if (_props.disabled) classes.push('lyt-slider--disabled');\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getSliderStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.vertical && _props.height) {\r\n style.height = _props.height;\r\n }\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n const getStops = () => {\r\n if (!_props.showStops) return [];\r\n\r\n const stops: VNode[] = [];\r\n const range = _props.max - _props.min;\r\n const stepCount = Math.floor(range / _props.step);\r\n\r\n for (let i = 0; i <= stepCount; i++) {\r\n const percent = (i / stepCount) * 100;\r\n stops.push(createVNode('div', {\r\n class: 'lyt-slider__stop',\r\n style: _props.vertical\r\n ? { bottom: `${percent}%` }\r\n : { left: `${percent}%` },\r\n }, []));\r\n }\r\n\r\n return stops;\r\n };\r\n\r\n return () => {\r\n const firstPct = firstPercent.value;\r\n const secondPct = secondPercent.value;\r\n const children: VNode[] = [];\r\n\r\n const runwayChildren: VNode[] = [];\r\n\r\n runwayChildren.push(createVNode('div', {\r\n class: 'lyt-slider__bar',\r\n style: _props.range\r\n ? (_props.vertical\r\n ? { bottom: `${firstPct}%`, height: `${secondPct - firstPct}%` }\r\n : { left: `${firstPct}%`, width: `${secondPct - firstPct}%` })\r\n : (_props.vertical\r\n ? { bottom: '0%', height: `${firstPct}%` }\r\n : { left: '0%', width: `${firstPct}%` }),\r\n }, []));\r\n\r\n const stops = getStops();\r\n runwayChildren.push(...stops);\r\n\r\n if (_props.range) {\r\n const tooltip1 = _props.showTooltip\r\n ? createVNode('div', { class: 'lyt-slider__tooltip' }, [createVNode('span', {}, formatValue(state.firstValue))])\r\n : null;\r\n const tooltip2 = _props.showTooltip\r\n ? createVNode('div', { class: 'lyt-slider__tooltip' }, [createVNode('span', {}, formatValue(state.secondValue))])\r\n : null;\r\n\r\n if (tooltip1) {\r\n runwayChildren.push(createVNode('div', mergeA11yProps(getSliderA11yProps({\r\n ariaLabel: _props.ariaLabel || 'Left value',\r\n disabled: _props.disabled,\r\n value: state.firstValue,\r\n min: _props.min,\r\n max: _props.max,\r\n }), {\r\n class: 'lyt-slider__button',\r\n style: _props.vertical\r\n ? { bottom: `${firstPct}%` }\r\n : { left: `${firstPct}%` },\r\n onKeydown: handleKeydown,\r\n }), [tooltip1]));\r\n }\r\n\r\n if (tooltip2) {\r\n runwayChildren.push(createVNode('div', mergeA11yProps(getSliderA11yProps({\r\n ariaLabel: 'Right value',\r\n disabled: _props.disabled,\r\n value: state.secondValue,\r\n min: _props.min,\r\n max: _props.max,\r\n }), {\r\n class: 'lyt-slider__button',\r\n style: _props.vertical\r\n ? { bottom: `${secondPct}%` }\r\n : { left: `${secondPct}%` },\r\n onKeydown: handleKeydown,\r\n }), [tooltip2]));\r\n }\r\n } else {\r\n const tooltip = _props.showTooltip\r\n ? createVNode('div', { class: 'lyt-slider__tooltip' }, [createVNode('span', {}, formatValue(state.firstValue))])\r\n : null;\r\n\r\n if (tooltip) {\r\n runwayChildren.push(createVNode('div', mergeA11yProps(getSliderA11yProps({\r\n ariaLabel: _props.ariaLabel || 'Value',\r\n ariaDescribedBy: _props.ariaDescribedBy,\r\n ariaRequired: _props.ariaRequired,\r\n ariaInvalid: _props.ariaInvalid,\r\n disabled: _props.disabled,\r\n tabIndex: _props.tabIndex,\r\n value: state.firstValue,\r\n min: _props.min,\r\n max: _props.max,\r\n }), {\r\n class: 'lyt-slider__button',\r\n style: _props.vertical\r\n ? { bottom: `${firstPct}%` }\r\n : { left: `${firstPct}%` },\r\n onKeydown: handleKeydown,\r\n }), [tooltip]));\r\n }\r\n }\r\n\r\n children.push(createVNode('div', {\r\n class: 'lyt-slider__runway',\r\n onMousedown: handleMouseDown,\r\n }, runwayChildren));\r\n\r\n if (_props.showInput && !_props.range) {\r\n children.push(createVNode('div', {\r\n class: 'lyt-slider__input',\r\n }, [\r\n createVNode('input', {\r\n type: 'number',\r\n class: `lyt-input lyt-input--${_props.inputSize}`,\r\n value: state.firstValue,\r\n min: _props.min,\r\n max: _props.max,\r\n step: _props.step,\r\n disabled: _props.disabled,\r\n onInput: (e: Event) => {\r\n const input = e.target as HTMLInputElement;\r\n const value = parseFloat(input.value);\r\n if (!isNaN(value)) {\r\n state.firstValue = Math.max(_props.min, Math.min(_props.max, value));\r\n emit('update:modelValue', state.firstValue);\r\n }\r\n },\r\n }),\r\n ]));\r\n }\r\n\r\n return createVNode('div', {\r\n class: getSliderClass(),\r\n style: getSliderStyle(),\r\n id: _props.id,\r\n onKeydown: handleKeydown,\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { SliderProps, SliderSlots };\r\n","/**\r\n * @lytjs/ui - Avatar 组件\r\n *\r\n * 头像组件,用于显示用户头像\r\n */\r\n\r\nimport type { AvatarProps, AvatarSlots, AvatarSetupProps } from './types';\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Avatar = defineComponent({\r\n name: 'LytAvatar',\r\n\r\n props: {\r\n size: { type: [Number, String] as unknown as PropType<number | string>, default: 'default' },\r\n shape: { type: String, default: 'circle' },\r\n icon: { type: String, default: '' },\r\n src: { type: String, default: '' },\r\n srcSet: { type: String, default: '' },\r\n alt: { type: String, default: '' },\r\n fit: { type: String, default: 'cover' },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onError: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }) {\r\n const _props = props as AvatarSetupProps;\r\n const isImageExist = signal(true);\r\n\r\n const getSize = () => {\r\n if (typeof _props.size === 'number') {\r\n return `${_props.size}px`;\r\n }\r\n const sizeMap: Record<string, string> = {\r\n small: '32px',\r\n default: '40px',\r\n large: '48px',\r\n };\r\n return sizeMap[_props.size] || '40px';\r\n };\r\n\r\n const handleError = () => {\r\n if (_props.onError) {\r\n const result = _props.onError();\r\n if (result === false) {\r\n return;\r\n }\r\n }\r\n isImageExist.set(false);\r\n };\r\n\r\n const getAvatarClass = () => {\r\n const classes = ['lyt-avatar'];\r\n if (_props.shape) classes.push(`lyt-avatar--${_props.shape}`);\r\n if (typeof _props.size === 'string') {\r\n classes.push(`lyt-avatar--${_props.size}`);\r\n }\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getAvatarStyle = () => {\r\n const style: Record<string, string> = {\r\n height: getSize(),\r\n width: getSize(),\r\n };\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n if (_props.src && isImageExist()) {\r\n children.push(createVNode('img', {\r\n class: 'lyt-avatar__img',\r\n src: _props.src,\r\n srcset: _props.srcSet || undefined,\r\n alt: _props.alt || undefined,\r\n style: {\r\n objectFit: _props.fit,\r\n },\r\n onError: handleError,\r\n }, []));\r\n } else if (_props.icon) {\r\n children.push(createVNode('span', {\r\n class: ['lyt-avatar__icon', _props.icon],\r\n }, []));\r\n } else if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n children.push(...(slotContent as VNode[]));\r\n } else if (slotContent) {\r\n children.push(slotContent as VNode);\r\n }\r\n }\r\n\r\n return createVNode('span', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n }, {\r\n class: getAvatarClass(),\r\n style: getAvatarStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { AvatarProps, AvatarSlots };\r\n","/**\r\n * @lytjs/ui - Card 组件\r\n *\r\n * 卡片组件,用于包裹内容\r\n */\r\n\r\nimport type { CardProps, CardSlots, CardSetupProps } from './types';\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Card = defineComponent({\r\n name: 'LytCard',\r\n\r\n props: {\r\n header: { type: String, default: '' },\r\n bodyStyle: { type: Object as PropType<Record<string, string>>, default: () => ({}) },\r\n shadow: { type: String, default: 'always' },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }) {\r\n const _props = props as CardSetupProps;\r\n\r\n const getCardClass = () => {\r\n const classes = ['lyt-card'];\r\n if (_props.shadow) classes.push(`lyt-card--shadow-${_props.shadow}`);\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getCardStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n if (_props.header || slots.header) {\r\n const headerContent: VNode[] = [];\r\n if (slots.header) {\r\n const slotContent = slots.header();\r\n if (Array.isArray(slotContent)) {\r\n headerContent.push(...(slotContent as VNode[]));\r\n } else if (slotContent) {\r\n headerContent.push(slotContent as VNode);\r\n }\r\n } else if (_props.header) {\r\n headerContent.push(createVNode('span', {}, _props.header));\r\n }\r\n children.push(createVNode('div', {\r\n class: 'lyt-card__header',\r\n }, headerContent));\r\n }\r\n\r\n const bodyContent: VNode[] = [];\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n bodyContent.push(...(slotContent as VNode[]));\r\n } else if (slotContent) {\r\n bodyContent.push(slotContent as VNode);\r\n }\r\n }\r\n children.push(createVNode('div', {\r\n class: 'lyt-card__body',\r\n style: _props.bodyStyle as string | Record<string, string>,\r\n }, bodyContent));\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n }, {\r\n class: getCardClass(),\r\n style: getCardStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { CardProps, CardSlots };\r\n","/**\r\n * @lytjs/ui - Timeline 时间轴组件\r\n *\r\n * 时间轴组件,用于按时间顺序展示事件\r\n */\r\n\r\nimport type { TimelineProps, TimelineSlots, TimelineSetupProps } from './types';\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * Timeline 时间轴组件\r\n */\r\nexport const Timeline = defineComponent({\r\n name: 'LytTimeline',\r\n\r\n props: {\r\n reverse: { type: Boolean, default: false },\r\n mode: { type: String as () => 'left' | 'right' | 'alternate', default: 'left' },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }) {\r\n const _props = props as TimelineSetupProps;\r\n\r\n const getTimelineClass = () => {\r\n const classes = ['lyt-timeline'];\r\n if (_props.reverse) classes.push('lyt-timeline--reverse');\r\n if (_props.mode) classes.push(`lyt-timeline--${_props.mode}`);\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getTimelineStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n children.push(...(slotContent as VNode[]));\r\n }\r\n }\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n }, {\r\n class: getTimelineClass(),\r\n style: getTimelineStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { TimelineProps, TimelineSlots };\r\n","/**\r\n * @lytjs/ui - TimelineItem 时间轴项组件\r\n *\r\n * 时间轴项组件,与 Timeline 配合使用\r\n */\r\n\r\nimport type { TimelineItemProps, TimelineItemSlots, TimelineItemSetupProps } from './types';\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * TimelineItem 时间轴项组件\r\n */\r\nexport const TimelineItem = defineComponent({\r\n name: 'LytTimelineItem',\r\n\r\n props: {\r\n color: { type: String, default: '' },\r\n type: { type: String as () => 'primary' | 'success' | 'warning' | 'danger' | 'info', default: '' },\r\n size: { type: String as () => 'large' | 'default' | 'small', default: 'default' },\r\n dot: { type: [String, Object] as unknown as PropType<string | VNode>, default: '' },\r\n timestamp: { type: String, default: '' },\r\n placement: { type: String as () => 'top' | 'bottom', default: 'bottom' },\r\n hideTimestamp: { type: Boolean, default: false },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }) {\r\n const _props = props as TimelineItemSetupProps;\r\n\r\n const getTimelineItemClass = () => {\r\n const classes = ['lyt-timeline-item'];\r\n if (_props.type) classes.push(`lyt-timeline-item--${_props.type}`);\r\n if (_props.size && _props.size !== 'default') classes.push(`lyt-timeline-item--${_props.size}`);\r\n if (_props.placement) classes.push(`lyt-timeline-item--${_props.placement}`);\r\n if (_props.hideTimestamp) classes.push('lyt-timeline-item--hide-timestamp');\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getTimelineItemStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.color) {\r\n style['--lyt-timeline-item-color'] = _props.color;\r\n }\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n const renderDot = () => {\r\n if (slots.dot) {\r\n const dotContent = slots.dot();\r\n if (Array.isArray(dotContent)) {\r\n return createVNode('div', { class: 'lyt-timeline-item__dot' }, dotContent as VNode[]);\r\n }\r\n }\r\n if (_props.dot) {\r\n if (typeof _props.dot === 'string') {\r\n return createVNode('div', { class: 'lyt-timeline-item__dot' }, [createTextVNode(_props.dot)]);\r\n }\r\n return createVNode('div', { class: 'lyt-timeline-item__dot' }, [_props.dot as VNode]);\r\n }\r\n return createVNode('div', { class: 'lyt-timeline-item__dot' }, null);\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n children.push(createVNode('div', { class: 'lyt-timeline-item__tail' }, null));\r\n children.push(renderDot());\r\n \r\n const wrapperChildren: VNode[] = [];\r\n \r\n if (_props.timestamp && !_props.hideTimestamp) {\r\n wrapperChildren.push(createVNode('div', { class: 'lyt-timeline-item__timestamp' }, [createTextVNode(_props.timestamp)]));\r\n }\r\n \r\n const contentChildren: VNode[] = [];\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n contentChildren.push(...(slotContent as VNode[]));\r\n }\r\n }\r\n wrapperChildren.push(createVNode('div', { class: 'lyt-timeline-item__content' }, contentChildren));\r\n \r\n children.push(createVNode('div', { class: 'lyt-timeline-item__wrapper' }, wrapperChildren));\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n }, {\r\n class: getTimelineItemClass(),\r\n style: getTimelineItemStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { TimelineItemProps, TimelineItemSlots };\r\n","/**\r\n * @lytjs/ui - Steps 步骤条组件\r\n *\r\n * 步骤条组件,用于引导用户按照流程完成任务\r\n */\r\n\r\nimport type { StepsProps, StepsSlots, StepsSetupProps } from './types';\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * Steps 步骤条组件\r\n */\r\nexport const Steps = defineComponent({\r\n name: 'LytSteps',\r\n\r\n props: {\r\n active: { type: Number, default: 0 },\r\n processStatus: { type: String as () => 'process' | 'finish' | 'error' | 'success', default: 'process' },\r\n finishStatus: { type: String as () => 'wait' | 'process' | 'finish' | 'error' | 'success', default: 'success' },\r\n direction: { type: String as () => 'horizontal' | 'vertical', default: 'horizontal' },\r\n alignCenter: { type: Boolean, default: false },\r\n simple: { type: Boolean, default: false },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }) {\r\n const _props = props as StepsSetupProps;\r\n\r\n const getStepsClass = () => {\r\n const classes = ['lyt-steps'];\r\n if (_props.direction) classes.push(`lyt-steps--${_props.direction}`);\r\n if (_props.simple) classes.push('lyt-steps--simple');\r\n if (_props.alignCenter) classes.push('lyt-steps--align-center');\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getStepsStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n children.push(...(slotContent as VNode[]));\r\n }\r\n }\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n role: 'navigation',\r\n }, {\r\n class: getStepsClass(),\r\n style: getStepsStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { StepsProps, StepsSlots };\r\n","/**\r\n * @lytjs/ui - Step 步骤项组件\r\n *\r\n * 步骤项组件,与 Steps 配合使用\r\n */\r\n\r\nimport type { StepProps, StepSlots, StepSetupProps } from './types';\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, createTextVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * Step 步骤项组件\r\n */\r\nexport const Step = defineComponent({\r\n name: 'LytStep',\r\n\r\n props: {\r\n title: { type: String, default: '' },\r\n description: { type: String, default: '' },\r\n icon: { type: [String, Object] as unknown as PropType<string | VNode>, default: '' },\r\n status: { type: String as () => 'wait' | 'process' | 'finish' | 'error' | 'success', default: '' },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }) {\r\n const _props = props as StepSetupProps;\r\n\r\n const getStepClass = () => {\r\n const classes = ['lyt-step'];\r\n if (_props.status) classes.push(`lyt-step--${_props.status}`);\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getStepStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n const renderIcon = () => {\r\n if (slots.icon) {\r\n const iconContent = slots.icon();\r\n if (Array.isArray(iconContent)) {\r\n return createVNode('div', { class: 'lyt-step__icon' }, iconContent as VNode[]);\r\n }\r\n }\r\n if (_props.icon) {\r\n if (typeof _props.icon === 'string') {\r\n return createVNode('div', { class: 'lyt-step__icon' }, [createTextVNode(_props.icon)]);\r\n }\r\n return createVNode('div', { class: 'lyt-step__icon' }, [_props.icon as VNode]);\r\n }\r\n return createVNode('div', { class: 'lyt-step__icon' }, null);\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n \r\n children.push(renderIcon());\r\n \r\n const contentChildren: VNode[] = [];\r\n \r\n if (slots.title || _props.title) {\r\n const titleChildren: VNode[] = [];\r\n if (slots.title) {\r\n const titleContent = slots.title();\r\n if (Array.isArray(titleContent)) {\r\n titleChildren.push(...(titleContent as VNode[]));\r\n }\r\n } else {\r\n titleChildren.push(createTextVNode(_props.title));\r\n }\r\n contentChildren.push(createVNode('div', { class: 'lyt-step__title' }, titleChildren));\r\n }\r\n \r\n if (slots.description || _props.description) {\r\n const descChildren: VNode[] = [];\r\n if (slots.description) {\r\n const descContent = slots.description();\r\n if (Array.isArray(descContent)) {\r\n descChildren.push(...(descContent as VNode[]));\r\n }\r\n } else {\r\n descChildren.push(createTextVNode(_props.description));\r\n }\r\n contentChildren.push(createVNode('div', { class: 'lyt-step__description' }, descChildren));\r\n }\r\n \r\n children.push(createVNode('div', { class: 'lyt-step__content' }, contentChildren));\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel || _props.title,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n }, {\r\n class: getStepClass(),\r\n style: getStepStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { StepProps, StepSlots };\r\n","/**\r\n * @lytjs/ui - Carousel 走马灯组件\r\n *\r\n * 走马灯组件,用于展示轮播内容\r\n */\r\n\r\nimport type { CarouselProps, CarouselSlots, CarouselSetupProps } from './types';\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Carousel = defineComponent({\r\n name: 'LytCarousel',\r\n\r\n props: {\r\n initialIndex: { type: Number, default: 0 },\r\n height: { type: String, default: '300px' },\r\n trigger: { type: String as () => 'click' | 'hover', default: 'hover' },\r\n autoplay: { type: Boolean, default: true },\r\n interval: { type: Number, default: 3000 },\r\n indicatorPosition: { type: String as () => 'outside' | 'none', default: '' },\r\n arrow: { type: String as () => 'always' | 'hover' | 'never', default: 'hover' },\r\n type: { type: String as () => '' | 'card', default: '' },\r\n loop: { type: Boolean, default: true },\r\n direction: { type: String as () => 'horizontal' | 'vertical', default: 'horizontal' },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }) {\r\n const _props = props as CarouselSetupProps;\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n const containerChildren: VNode[] = [];\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n containerChildren.push(...(slotContent as VNode[]));\r\n } else if (slotContent) {\r\n containerChildren.push(slotContent as VNode);\r\n }\r\n }\r\n children.push(createVNode('div', { class: 'lyt-carousel__container' }, containerChildren));\r\n\r\n const getCarouselClass = () => {\r\n const classes = ['lyt-carousel'];\r\n if (_props.type) classes.push(`lyt-carousel--${_props.type}`);\r\n if (_props.direction) classes.push(`lyt-carousel--${_props.direction}`);\r\n if (_props.indicatorPosition) classes.push(`lyt-carousel--indicator-${_props.indicatorPosition}`);\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const getCarouselStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.height) {\r\n style.height = _props.height;\r\n }\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: _props.id,\r\n 'aria-label': _props.ariaLabel,\r\n 'aria-describedby': _props.ariaDescribedBy,\r\n role: 'region',\r\n }, {\r\n class: getCarouselClass(),\r\n style: getCarouselStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { CarouselProps, CarouselSlots };\r\n","/**\r\n * @lytjs/ui - CarouselItem 走马灯项组件\r\n *\r\n * 走马灯项组件,与 Carousel 配合使用\r\n */\r\n\r\nimport type { CarouselItemProps, CarouselItemSlots, CarouselItemSetupProps } from './types';\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\n/**\r\n * CarouselItem 走马灯项组件\r\n */\r\nexport const CarouselItem = defineComponent({\r\n name: 'LytCarouselItem',\r\n\r\n props: {\r\n name: { type: [String, Number] as unknown as PropType<string | number>, default: '' },\r\n label: { type: String, default: '' },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots }) {\r\n const _props = props as CarouselItemSetupProps;\r\n\r\n const getCarouselItemClass = () => {\r\n const classes = ['lyt-carousel-item'];\r\n if (_props.class) classes.push(_props.class as string);\r\n return classes.join(' ');\r\n };\r\n\r\n const getCarouselItemStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n if (slots.default) {\r\n const slotContent = slots.default();\r\n if (Array.isArray(slotContent)) {\r\n children.push(...(slotContent as VNode[]));\r\n } else if (slotContent) {\r\n children.push(slotContent as VNode);\r\n }\r\n }\r\n\r\n return createVNode('div', mergeA11yProps({\r\n id: _props.id as string,\r\n 'aria-label': (_props.ariaLabel as string) || (_props.label as string),\r\n 'aria-describedby': _props.ariaDescribedBy as string,\r\n }, {\r\n class: getCarouselItemClass(),\r\n style: getCarouselItemStyle(),\r\n }), children);\r\n };\r\n },\r\n});\r\n\r\nexport type { CarouselItemProps, CarouselItemSlots };\r\n","/**\r\n * @lytjs/ui - Popconfirm 气泡确认框组件\r\n *\r\n * 气泡确认框组件,用于操作确认\r\n */\r\n\r\nimport type { PopconfirmProps, PopconfirmSlots, PopconfirmSetupProps } from './types';\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString, isObject } from '@lytjs/common-is';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport { getDialogA11yProps, getButtonA11yProps, mergeA11yProps } from '@lytjs/common-a11y';\r\n\r\nexport const Popconfirm = defineComponent({\r\n name: 'LytPopconfirm',\r\n\r\n props: {\r\n title: { type: String, default: '' },\r\n confirmButtonText: { type: String, default: '确定' },\r\n cancelButtonText: { type: String, default: '取消' },\r\n confirmButtonType: { type: String, default: 'primary' },\r\n cancelButtonType: { type: String, default: '' },\r\n icon: { type: String, default: '' },\r\n iconColor: { type: String, default: '' },\r\n hideIcon: { type: Boolean, default: false },\r\n disabled: { type: Boolean, default: false },\r\n width: { type: Number, default: 0 },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n id: { type: String, default: '' },\r\n ariaLabel: { type: String, default: '' },\r\n ariaDescribedBy: { type: String, default: '' },\r\n onConfirm: { type: Function, default: undefined },\r\n onCancel: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots, emit }) {\r\n const _props = props as PopconfirmSetupProps;\r\n const visible = signal(false);\r\n\r\n const getPopconfirmClass = () => {\r\n const classes = ['lyt-popconfirm'];\r\n if (_props.class) classes.push(_props.class as string);\r\n return classes.join(' ');\r\n };\r\n\r\n const getPopconfirmStyle = () => {\r\n const style: Record<string, string> = {};\r\n if (_props.width) {\r\n style.width = `${_props.width}px`;\r\n }\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n return _props.style;\r\n }\r\n if (isObject(_props.style)) {\r\n Object.assign(style, _props.style);\r\n }\r\n }\r\n return style;\r\n };\r\n\r\n const handleConfirm = () => {\r\n visible.set(false);\r\n emit('confirm');\r\n _props.onConfirm?.();\r\n };\r\n\r\n const handleCancel = () => {\r\n visible.set(false);\r\n emit('cancel');\r\n _props.onCancel?.();\r\n };\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n if (slots.reference) {\r\n const refContent = slots.reference();\r\n if (Array.isArray(refContent)) {\r\n children.push(createVNode('div', { class: 'lyt-popconfirm__reference' }, refContent as VNode[]));\r\n }\r\n }\r\n\r\n const popupChildren: VNode[] = [];\r\n\r\n const contentChildren: VNode[] = [];\r\n\r\n if (!_props.hideIcon) {\r\n const iconChildren: VNode[] = [];\r\n if (slots.icon) {\r\n const iconContent = slots.icon();\r\n if (Array.isArray(iconContent)) {\r\n iconChildren.push(...iconContent as VNode[]);\r\n }\r\n }\r\n contentChildren.push(createVNode('span', { class: 'lyt-popconfirm__icon' }, iconChildren));\r\n }\r\n\r\n const titleId = _props.id ? `${_props.id}-title` : undefined;\r\n if (slots.default || _props.title) {\r\n const titleChildren: VNode[] = [];\r\n if (slots.default) {\r\n const titleContent = slots.default();\r\n if (Array.isArray(titleContent)) {\r\n titleChildren.push(...titleContent as VNode[]);\r\n }\r\n } else {\r\n titleChildren.push(createVNode('span', {}, _props.title as string));\r\n }\r\n contentChildren.push(createVNode('span', {\r\n class: 'lyt-popconfirm__title',\r\n id: titleId,\r\n }, titleChildren));\r\n }\r\n\r\n popupChildren.push(createVNode('div', { class: 'lyt-popconfirm__content' }, contentChildren));\r\n\r\n const buttonChildren: VNode[] = [];\r\n const cancelBtnProps = getButtonA11yProps({ ariaLabel: _props.cancelButtonText as string });\r\n buttonChildren.push(createVNode('button', mergeA11yProps(cancelBtnProps, {\r\n class: 'lyt-button lyt-button--small',\r\n onClick: handleCancel,\r\n }), [createVNode('span', {}, _props.cancelButtonText as string)]));\r\n\r\n const confirmBtnProps = getButtonA11yProps({ ariaLabel: _props.confirmButtonText as string });\r\n buttonChildren.push(createVNode('button', mergeA11yProps(confirmBtnProps, {\r\n class: `lyt-button lyt-button--small lyt-button--${_props.confirmButtonType}`,\r\n onClick: handleConfirm,\r\n }), [createVNode('span', {}, _props.confirmButtonText as string)]));\r\n popupChildren.push(createVNode('div', { class: 'lyt-popconfirm__buttons' }, buttonChildren));\r\n\r\n const a11yProps = getDialogA11yProps({\r\n id: _props.id as string,\r\n ariaLabel: (_props.ariaLabel as string) || (_props.title as string),\r\n ariaDescribedBy: (_props.ariaDescribedBy as string) || titleId,\r\n labelledBy: titleId,\r\n modal: true,\r\n });\r\n\r\n children.push(createVNode('div', mergeA11yProps(a11yProps, { class: 'lyt-popconfirm__popup' }), popupChildren));\r\n\r\n return createVNode('div', {\r\n class: getPopconfirmClass(),\r\n style: getPopconfirmStyle(),\r\n }, children);\r\n };\r\n },\r\n});\r\n\r\nexport type { PopconfirmProps, PopconfirmSlots };\r\n","/**\r\n * @lytjs/ui - RichTextEditor 组件\r\n *\r\n * 轻量级富文本编辑器,使用原生 API 实现,零第三方依赖\r\n */\r\n\r\nimport { defineComponent, type PropType } from '@lytjs/component';\r\nimport { createVNode, type VNode } from '@lytjs/vdom';\r\nimport { isString } from '@lytjs/common-is';\r\nimport { signal } from '@lytjs/reactivity';\r\n\r\ntype FormatCommand =\r\n | 'bold'\r\n | 'italic'\r\n | 'underline'\r\n | 'strikeThrough'\r\n | 'justifyLeft'\r\n | 'justifyCenter'\r\n | 'justifyRight'\r\n | 'insertUnorderedList'\r\n | 'insertOrderedList'\r\n | 'indent'\r\n | 'outdent'\r\n | 'removeFormat';\r\n\r\nexport const RichTextEditor = defineComponent({\r\n name: 'LytRichTextEditor',\r\n\r\n props: {\r\n modelValue: { type: String, default: '' },\r\n placeholder: { type: String, default: '请输入内容' },\r\n disabled: { type: Boolean, default: false },\r\n readonly: { type: Boolean, default: false },\r\n class: { type: String, default: '' },\r\n style: { type: [String, Object] as unknown as PropType<string | Record<string, string>>, default: '' },\r\n onChange: { type: Function, default: undefined },\r\n },\r\n\r\n setup(props: Record<string, unknown>, { slots, emit }) {\r\n const _props = props as {\r\n modelValue?: string;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n readonly?: boolean;\r\n class?: string;\r\n style?: string | Record<string, string>;\r\n onChange?: (value: string) => void;\r\n };\r\n\r\n const isFocused = signal(false);\r\n const editorRef = { current: null as HTMLElement | null };\r\n\r\n const execCommand = (command: FormatCommand) => {\r\n if (_props.disabled || _props.readonly) return;\r\n\r\n const selection = window.getSelection();\r\n if (!selection || selection.rangeCount === 0) return;\r\n\r\n document.execCommand(command, false);\r\n handleInput();\r\n };\r\n\r\n const handleInput = () => {\r\n if (_props.disabled || _props.readonly) return;\r\n const content = editorRef.current?.innerHTML || '';\r\n emit('update:modelValue', content);\r\n _props.onChange?.(content);\r\n };\r\n\r\n const getEditorClass = () => {\r\n const classes = ['lyt-rich-text-editor'];\r\n if (isFocused()) classes.push('is-focused');\r\n if (_props.disabled) classes.push('is-disabled');\r\n if (_props.readonly) classes.push('is-readonly');\r\n if (_props.class) classes.push(_props.class);\r\n return classes.join(' ');\r\n };\r\n\r\n const toolbarItems: { command: FormatCommand; icon: string; title: string }[] = [\r\n { command: 'bold', icon: 'B', title: '粗体' },\r\n { command: 'italic', icon: 'I', title: '斜体' },\r\n { command: 'underline', icon: 'U', title: '下划线' },\r\n { command: 'strikeThrough', icon: 'S', title: '删除线' },\r\n { command: 'justifyLeft', icon: '◢', title: '左对齐' },\r\n { command: 'justifyCenter', icon: '◤', title: '居中' },\r\n { command: 'justifyRight', icon: '◣', title: '右对齐' },\r\n { command: 'insertUnorderedList', icon: '•', title: '无序列表' },\r\n { command: 'insertOrderedList', icon: '1.', title: '有序列表' },\r\n { command: 'indent', icon: '→|', title: '缩进' },\r\n { command: 'outdent', icon: '|←', title: '取消缩进' },\r\n { command: 'removeFormat', icon: '×', title: '清除格式' },\r\n ];\r\n\r\n return () => {\r\n const children: VNode[] = [];\r\n\r\n const toolbarChildren: VNode[] = toolbarItems.map(item => {\r\n const btn = createVNode('button', {\r\n type: 'button',\r\n class: 'lyt-rich-text-editor__toolbar-btn',\r\n title: item.title,\r\n disabled: _props.disabled || _props.readonly,\r\n onClick: () => execCommand(item.command),\r\n }, [createVNode('span', {}, item.icon)]);\r\n return btn;\r\n });\r\n\r\n children.push(createVNode('div', { class: 'lyt-rich-text-editor__toolbar' }, toolbarChildren));\r\n\r\n const editorContent = _props.modelValue || '';\r\n children.push(createVNode('div', {\r\n ref: editorRef,\r\n class: 'lyt-rich-text-editor__content',\r\n contentEditable: !_props.disabled && !_props.readonly,\r\n 'data-placeholder': _props.placeholder,\r\n onInput: handleInput,\r\n onFocus: () => isFocused.set(true),\r\n onBlur: () => isFocused.set(false),\r\n innerHTML: editorContent,\r\n }));\r\n\r\n if (slots.footer) {\r\n const footerContent = slots.footer();\r\n children.push(createVNode('div', { class: 'lyt-rich-text-editor__footer' }, footerContent as VNode[]));\r\n }\r\n\r\n const editorStyle: Record<string, string> = {};\r\n if (_props.style) {\r\n if (isString(_props.style)) {\r\n Object.assign(editorStyle, { cssText: _props.style });\r\n } else {\r\n Object.assign(editorStyle, _props.style);\r\n }\r\n }\r\n\r\n return createVNode('div', {\r\n class: getEditorClass(),\r\n style: editorStyle,\r\n }, children);\r\n };\r\n },\r\n});\r\n","/**\r\n * @lytjs/ui - 入口文件\r\n *\r\n * LytJS UI 组件库\r\n */\r\n\r\n// 导入样式\r\nimport './styles/index.css';\r\n\r\n// 组件导出\r\nexport { Button } from './components/Button';\r\nexport { Input } from './components/Input';\r\nexport { Dialog } from './components/Dialog';\r\nexport { Select } from './components/Select';\r\nexport { Tabs, TabPane } from './components/Tabs';\r\nexport { Table } from './components/Table';\r\nexport { Form, FormItem } from './components/Form';\r\nexport { Transition, TransitionGroup } from './components/Transition';\r\nexport { DatePicker } from './components/DatePicker';\r\nexport { Tree } from './components/Tree';\r\nexport { Menu } from './components/Menu';\r\nexport { Cascader } from './components/Cascader';\r\nexport { TreeSelect } from './components/TreeSelect';\r\nexport { Transfer } from './components/Transfer';\r\nexport { Descriptions, DescriptionsItem } from './components/Descriptions';\r\nexport { Modal } from './components/Modal';\r\nexport { Drawer } from './components/Drawer';\r\nexport { Upload } from './components/Upload';\r\nexport { Notification } from './components/Notification';\r\nexport { Calendar } from './components/Calendar';\r\nexport { Image } from './components/Image';\r\nexport { Rate } from './components/Rate';\r\nexport { ColorPicker } from './components/ColorPicker';\r\n\r\n// 新组件导出\r\nexport { Icon } from './components/Icon';\r\nexport { Badge } from './components/Badge';\r\nexport { Tag } from './components/Tag';\r\nexport { Spin } from './components/Spin';\r\nexport { Empty } from './components/Empty';\r\nexport { Link } from './components/Link';\r\nexport { Container } from './components/Container';\r\nexport { Divider } from './components/Divider';\r\nexport { Toast } from './components/Toast';\r\nexport { Alert } from './components/Alert';\r\nexport { Tooltip } from './components/Tooltip';\r\nexport { Checkbox } from './components/Checkbox';\r\nexport { CheckboxGroup } from './components/CheckboxGroup';\r\nexport { Radio } from './components/Radio';\r\nexport { RadioGroup } from './components/RadioGroup';\r\nexport { Switch } from './components/Switch';\r\nexport { InputNumber } from './components/InputNumber';\r\nexport { Progress } from './components/Progress';\r\nexport { Slider } from './components/Slider';\r\nexport { Avatar } from './components/Avatar';\r\nexport { Card } from './components/Card';\r\nexport { Timeline } from './components/Timeline';\r\nexport { TimelineItem } from './components/TimelineItem';\r\nexport { Steps } from './components/Steps';\r\nexport { Step } from './components/Step';\r\nexport { Carousel } from './components/Carousel';\r\nexport { CarouselItem } from './components/CarouselItem';\r\nexport { Popconfirm } from './components/Popconfirm';\r\nexport { RichTextEditor } from './components/RichTextEditor';\r\n\r\n// 类型导出\r\nexport type {\r\n ComponentSize,\r\n ComponentStatus,\r\n ButtonProps,\r\n ButtonSlots,\r\n InputProps,\r\n InputSlots,\r\n DialogProps,\r\n DialogSlots,\r\n DialogSetupProps,\r\n SelectProps,\r\n SelectSlots,\r\n SelectOption,\r\n SelectSetupProps,\r\n CascaderProps,\r\n CascaderSlots,\r\n CascaderOption,\r\n CascaderSetupProps,\r\n TabsProps,\r\n TabsSlots,\r\n TabPaneProps,\r\n TableProps,\r\n TableSlots,\r\n TableSetupProps,\r\n TableColumn,\r\n TableData,\r\n TableRowData,\r\n IconProps,\r\n IconSlots,\r\n BadgeProps,\r\n BadgeSlots,\r\n BadgeSetupProps,\r\n TagProps,\r\n TagSlots,\r\n TagSetupProps,\r\n SpinProps,\r\n SpinSlots,\r\n EmptyProps,\r\n EmptySlots,\r\n LinkProps,\r\n LinkSlots,\r\n ContainerProps,\r\n ContainerSlots,\r\n DividerProps,\r\n DividerSlots,\r\n ToastProps,\r\n ToastSlots,\r\n ToastSetupProps,\r\n AlertProps,\r\n AlertSlots,\r\n AlertType,\r\n AlertEffect,\r\n AlertSetupProps,\r\n TooltipProps,\r\n TooltipSlots,\r\n CheckboxProps,\r\n CheckboxSlots,\r\n CheckboxSetupProps,\r\n RadioProps,\r\n RadioSlots,\r\n RadioSetupProps,\r\n SwitchProps,\r\n SwitchSlots,\r\n SwitchSetupProps,\r\n InputNumberProps,\r\n InputNumberSlots,\r\n InputNumberSetupProps,\r\n CheckboxGroupProps,\r\n CheckboxGroupSlots,\r\n CheckboxGroupSetupProps,\r\n RadioGroupProps,\r\n RadioGroupSlots,\r\n RadioGroupSetupProps,\r\n ProgressProps,\r\n ProgressSlots,\r\n ProgressSetupProps,\r\n SliderProps,\r\n SliderSlots,\r\n SliderSetupProps,\r\n AvatarProps,\r\n AvatarSlots,\r\n AvatarSetupProps,\r\n CardProps,\r\n CardSlots,\r\n CardSetupProps,\r\n TimelineProps,\r\n TimelineSlots,\r\n TimelineSetupProps,\r\n TimelineItemProps,\r\n TimelineItemSlots,\r\n TimelineItemSetupProps,\r\n StepsProps,\r\n StepsSlots,\r\n StepsSetupProps,\r\n StepProps,\r\n StepSlots,\r\n StepSetupProps,\r\n CarouselProps,\r\n CarouselSlots,\r\n CarouselSetupProps,\r\n CarouselItemProps,\r\n CarouselItemSlots,\r\n CarouselItemSetupProps,\r\n PopconfirmProps,\r\n PopconfirmSlots,\r\n PopconfirmSetupProps,\r\n ImageProps,\r\n ImageSlots,\r\n ImageFit,\r\n NotificationProps,\r\n NotificationSlots,\r\n NotificationOptions,\r\n NotificationType,\r\n NotificationPosition,\r\n CalendarProps,\r\n CalendarSlots,\r\n CalendarEvent,\r\n CalendarView,\r\n ColorPickerProps,\r\n ColorPickerSlots,\r\n DescriptionsProps,\r\n DescriptionsSlots,\r\n DescriptionsItemProps,\r\n DescriptionsItemSlots,\r\n DescriptionsItemData,\r\n DrawerProps,\r\n DrawerSlots,\r\n DrawerDirection,\r\n RateProps,\r\n RateSlots,\r\n TransferProps,\r\n TransferSlots,\r\n TransferOption,\r\n TransferSetupProps,\r\n TreeProps,\r\n TreeSlots,\r\n TreeNode,\r\n TreeSetupProps,\r\n TreeSelectProps,\r\n TreeSelectSlots,\r\n TreeSelectNode,\r\n TreeSelectSetupProps,\r\n UploadProps,\r\n UploadSlots,\r\n UploadFile,\r\n UploadFileStatus,\r\n UploadSetupProps,\r\n DatePickerProps,\r\n DatePickerSlots,\r\n DatePickerType,\r\n DatePickerShortcut,\r\n DatePickerSetupProps,\r\n FormProps,\r\n FormSlots,\r\n FormRule,\r\n FormRules,\r\n FormSetupProps,\r\n FormItemProps,\r\n FormItemSlots,\r\n FormItemSetupProps,\r\n FormValidateStatus,\r\n MenuProps,\r\n MenuSlots,\r\n MenuItem,\r\n MenuSetupProps,\r\n RichTextEditorProps,\r\n RichTextEditorSlots,\r\n RichTextEditorSetupProps,\r\n} from './components/types';\r\n\r\n// 组件安装\r\nimport type { AppContext } from '@lytjs/component';\r\nimport { Button } from './components/Button';\r\nimport { Input } from './components/Input';\r\nimport { Dialog } from './components/Dialog';\r\nimport { Select } from './components/Select';\r\nimport { Tabs, TabPane } from './components/Tabs';\r\nimport { Table } from './components/Table';\r\nimport { Form, FormItem } from './components/Form';\r\nimport { Transition, TransitionGroup } from './components/Transition';\r\nimport { DatePicker } from './components/DatePicker';\r\nimport { Tree } from './components/Tree';\r\nimport { Menu } from './components/Menu';\r\nimport { Cascader } from './components/Cascader';\r\nimport { TreeSelect } from './components/TreeSelect';\r\nimport { Transfer } from './components/Transfer';\r\nimport { Descriptions, DescriptionsItem } from './components/Descriptions';\r\nimport { Modal } from './components/Modal';\r\nimport { Drawer } from './components/Drawer';\r\nimport { Upload } from './components/Upload';\r\nimport { Notification } from './components/Notification';\r\nimport { Calendar } from './components/Calendar';\r\nimport { Image } from './components/Image';\r\nimport { Rate } from './components/Rate';\r\nimport { ColorPicker } from './components/ColorPicker';\r\nimport { Icon } from './components/Icon';\r\nimport { Badge } from './components/Badge';\r\nimport { Tag } from './components/Tag';\r\nimport { Spin } from './components/Spin';\r\nimport { Empty } from './components/Empty';\r\nimport { Link } from './components/Link';\r\nimport { Container } from './components/Container';\r\nimport { Divider } from './components/Divider';\r\nimport { Toast } from './components/Toast';\r\nimport { Alert } from './components/Alert';\r\nimport { Tooltip } from './components/Tooltip';\r\nimport { Checkbox } from './components/Checkbox';\r\nimport { CheckboxGroup } from './components/CheckboxGroup';\r\nimport { Radio } from './components/Radio';\r\nimport { RadioGroup } from './components/RadioGroup';\r\nimport { Switch } from './components/Switch';\r\nimport { InputNumber } from './components/InputNumber';\r\nimport { Progress } from './components/Progress';\r\nimport { Slider } from './components/Slider';\r\nimport { Avatar } from './components/Avatar';\r\nimport { Card } from './components/Card';\r\n\r\n/**\r\n * 安装所有组件\r\n */\r\nexport function install(app: AppContext): void {\r\n app.components['LytButton'] = Button;\r\n app.components['LytInput'] = Input;\r\n app.components['LytDialog'] = Dialog;\r\n app.components['LytSelect'] = Select;\r\n app.components['LytTabs'] = Tabs;\r\n app.components['LytTabPane'] = TabPane;\r\n app.components['LytTable'] = Table;\r\n app.components['LytForm'] = Form;\r\n app.components['LytFormItem'] = FormItem;\r\n app.components['LytTransition'] = Transition;\r\n app.components['LytTransitionGroup'] = TransitionGroup;\r\n app.components['LytDatePicker'] = DatePicker;\r\n app.components['LytTree'] = Tree;\r\n app.components['LytMenu'] = Menu;\r\n app.components['LytCascader'] = Cascader;\r\n app.components['LytTreeSelect'] = TreeSelect;\r\n app.components['LytTransfer'] = Transfer;\r\n app.components['LytDescriptions'] = Descriptions;\r\n app.components['LytDescriptionsItem'] = DescriptionsItem;\r\n app.components['LytModal'] = Modal;\r\n app.components['LytDrawer'] = Drawer;\r\n app.components['LytUpload'] = Upload;\r\n app.components['LytNotification'] = Notification;\r\n app.components['LytCalendar'] = Calendar;\r\n app.components['LytImage'] = Image;\r\n app.components['LytRate'] = Rate;\r\n app.components['LytColorPicker'] = ColorPicker;\r\n // 新组件\r\n app.components['LytIcon'] = Icon;\r\n app.components['LytBadge'] = Badge;\r\n app.components['LytTag'] = Tag;\r\n app.components['LytSpin'] = Spin;\r\n app.components['LytEmpty'] = Empty;\r\n app.components['LytLink'] = Link;\r\n app.components['LytContainer'] = Container;\r\n app.components['LytDivider'] = Divider;\r\n app.components['LytToast'] = Toast;\r\n app.components['LytAlert'] = Alert;\r\n app.components['LytTooltip'] = Tooltip;\r\n app.components['LytCheckbox'] = Checkbox;\r\n app.components['LytCheckboxGroup'] = CheckboxGroup;\r\n app.components['LytRadio'] = Radio;\r\n app.components['LytRadioGroup'] = RadioGroup;\r\n app.components['LytSwitch'] = Switch;\r\n app.components['LytInputNumber'] = InputNumber;\r\n app.components['LytProgress'] = Progress;\r\n app.components['LytSlider'] = Slider;\r\n app.components['LytAvatar'] = Avatar;\r\n app.components['LytCard'] = Card;\r\n}\r\n\r\nexport default {\r\n install,\r\n};\r\n"]}
|