amis 1.8.0-beta.5 → 1.8.0-beta.9
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/lib/Schema.d.ts +9 -2
- package/lib/Schema.js.map +1 -1
- package/lib/actions/PageAction.d.ts +32 -0
- package/lib/actions/PageAction.js +72 -0
- package/lib/actions/PageAction.js.map +13 -0
- package/lib/actions/index.d.ts +1 -0
- package/lib/actions/index.js +1 -0
- package/lib/actions/index.js.map +2 -2
- package/lib/components/CalendarMobile.d.ts +84 -84
- package/lib/components/Cascader.d.ts +2 -0
- package/lib/components/Cascader.js +28 -12
- package/lib/components/Cascader.js.map +2 -2
- package/lib/components/Checkbox.js +2 -2
- package/lib/components/Checkbox.js.map +2 -2
- package/lib/components/Collapse.d.ts +20 -20
- package/lib/components/DatePicker.d.ts +84 -84
- package/lib/components/DatePicker.js +5 -5
- package/lib/components/DatePicker.js.map +2 -2
- package/lib/components/Drawer.js +1 -1
- package/lib/components/Drawer.js.map +2 -2
- package/lib/components/ListGroup.d.ts +21 -21
- package/lib/components/Modal.js +1 -1
- package/lib/components/Modal.js.map +2 -2
- package/lib/components/Overlay.d.ts +1 -0
- package/lib/components/Overlay.js +4 -3
- package/lib/components/Overlay.js.map +2 -2
- package/lib/components/PullRefresh.d.ts +86 -0
- package/lib/components/PullRefresh.js +135 -0
- package/lib/components/PullRefresh.js.map +13 -0
- package/lib/components/Spinner.d.ts +200 -107
- package/lib/components/Spinner.js +30 -26
- package/lib/components/Spinner.js.map +2 -2
- package/lib/components/Tooltip.d.ts +4 -0
- package/lib/components/Tooltip.js +6 -4
- package/lib/components/Tooltip.js.map +2 -2
- package/lib/components/TooltipWrapper.d.ts +60 -4
- package/lib/components/TooltipWrapper.js +27 -8
- package/lib/components/TooltipWrapper.js.map +2 -2
- package/lib/components/Transfer.d.ts +84 -84
- package/lib/components/TransferDropDown.d.ts +84 -84
- package/lib/components/Tree.d.ts +87 -85
- package/lib/components/Tree.js +13 -5
- package/lib/components/Tree.js.map +2 -2
- package/lib/components/TreeSelection.d.ts +84 -84
- package/lib/components/calendar/TimeView.d.ts +1 -0
- package/lib/components/calendar/TimeView.js +7 -0
- package/lib/components/calendar/TimeView.js.map +2 -2
- package/lib/components/condition-builder/Expression.d.ts +1 -0
- package/lib/components/condition-builder/Expression.js +4 -4
- package/lib/components/condition-builder/Expression.js.map +2 -2
- package/lib/components/condition-builder/Field.d.ts +1 -0
- package/lib/components/condition-builder/Field.js +3 -2
- package/lib/components/condition-builder/Field.js.map +2 -2
- package/lib/components/condition-builder/Group.d.ts +1 -0
- package/lib/components/condition-builder/Group.js +2 -2
- package/lib/components/condition-builder/Group.js.map +2 -2
- package/lib/components/condition-builder/GroupOrItem.d.ts +1 -0
- package/lib/components/condition-builder/GroupOrItem.js +2 -2
- package/lib/components/condition-builder/GroupOrItem.js.map +2 -2
- package/lib/components/condition-builder/InputSwitch.d.ts +2 -1
- package/lib/components/condition-builder/InputSwitch.js +2 -2
- package/lib/components/condition-builder/InputSwitch.js.map +2 -2
- package/lib/components/condition-builder/Item.d.ts +1 -0
- package/lib/components/condition-builder/Item.js +9 -8
- package/lib/components/condition-builder/Item.js.map +2 -2
- package/lib/components/condition-builder/Value.d.ts +1 -0
- package/lib/components/condition-builder/Value.js +5 -5
- package/lib/components/condition-builder/Value.js.map +2 -2
- package/lib/components/condition-builder/index.d.ts +1 -0
- package/lib/components/condition-builder/index.js +2 -2
- package/lib/components/condition-builder/index.js.map +2 -2
- package/lib/components/formula/Editor.d.ts +87 -85
- package/lib/components/formula/Editor.js +10 -6
- package/lib/components/formula/Editor.js.map +2 -2
- package/lib/components/formula/Picker.js +3 -1
- package/lib/components/formula/Picker.js.map +2 -2
- package/lib/index.js +1 -1
- package/lib/locale/de-DE.js +5 -1
- package/lib/locale/de-DE.js.map +2 -2
- package/lib/locale/en-US.js +5 -1
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +5 -1
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/CRUD.js +1 -1
- package/lib/renderers/CRUD.js.map +2 -2
- package/lib/renderers/Form/Combo.d.ts +2 -1
- package/lib/renderers/Form/Combo.js +51 -14
- package/lib/renderers/Form/Combo.js.map +2 -2
- package/lib/renderers/Form/DiffEditor.d.ts +1 -0
- package/lib/renderers/Form/InputCity.d.ts +84 -84
- package/lib/renderers/Form/InputDate.js +10 -3
- package/lib/renderers/Form/InputDate.js.map +2 -2
- package/lib/renderers/Form/InputDateRange.js +12 -3
- package/lib/renderers/Form/InputDateRange.js.map +2 -2
- package/lib/renderers/Form/InputFile.js +13 -5
- package/lib/renderers/Form/InputFile.js.map +2 -2
- package/lib/renderers/Form/InputImage.js +12 -4
- package/lib/renderers/Form/InputImage.js.map +2 -2
- package/lib/renderers/Form/InputMonthRange.js +5 -1
- package/lib/renderers/Form/InputMonthRange.js.map +2 -2
- package/lib/renderers/Form/InputText.js +8 -4
- package/lib/renderers/Form/InputText.js.map +2 -2
- package/lib/renderers/Form/InputTree.d.ts +5 -0
- package/lib/renderers/Form/InputTree.js +51 -2
- package/lib/renderers/Form/InputTree.js.map +2 -2
- package/lib/renderers/Form/Item.d.ts +68 -70
- package/lib/renderers/Form/Item.js.map +2 -2
- package/lib/renderers/Form/NestedSelect.d.ts +4 -0
- package/lib/renderers/Form/NestedSelect.js +14 -5
- package/lib/renderers/Form/NestedSelect.js.map +2 -2
- package/lib/renderers/Form/Options.js +61 -27
- package/lib/renderers/Form/Options.js.map +2 -2
- package/lib/renderers/Form/Select.js +4 -2
- package/lib/renderers/Form/Select.js.map +2 -2
- package/lib/renderers/Form/TreeSelect.d.ts +11 -2
- package/lib/renderers/Form/TreeSelect.js +56 -10
- package/lib/renderers/Form/TreeSelect.js.map +2 -2
- package/lib/renderers/Form/wrapControl.js +3 -3
- package/lib/renderers/Form/wrapControl.js.map +2 -2
- package/lib/renderers/Nav.d.ts +82 -67
- package/lib/renderers/Nav.js +47 -11
- package/lib/renderers/Nav.js.map +2 -2
- package/lib/renderers/Page.d.ts +20 -0
- package/lib/renderers/Page.js +51 -14
- package/lib/renderers/Page.js.map +2 -2
- package/lib/renderers/Service.d.ts +2 -0
- package/lib/renderers/Service.js +52 -20
- package/lib/renderers/Service.js.map +2 -2
- package/lib/renderers/Spinner.d.ts +58 -2
- package/lib/renderers/Spinner.js +8 -1
- package/lib/renderers/Spinner.js.map +2 -2
- package/lib/renderers/Table/ColumnToggler.d.ts +4 -0
- package/lib/renderers/Table/ColumnToggler.js +11 -6
- package/lib/renderers/Table/ColumnToggler.js.map +2 -2
- package/lib/renderers/Table/TableCell.js +27 -1
- package/lib/renderers/Table/TableCell.js.map +2 -2
- package/lib/renderers/Table/index.d.ts +1 -0
- package/lib/renderers/Table/index.js +19 -11
- package/lib/renderers/Table/index.js.map +2 -2
- package/lib/renderers/TooltipWrapper.d.ts +31 -6
- package/lib/renderers/TooltipWrapper.js +18 -8
- package/lib/renderers/TooltipWrapper.js.map +2 -2
- package/lib/renderers/Wizard.js +23 -14
- package/lib/renderers/Wizard.js.map +2 -2
- package/lib/store/crud.js +23 -13
- package/lib/store/crud.js.map +2 -2
- package/lib/themes/ang-ie11.css +313 -100
- package/lib/themes/ang.css +322 -103
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +429 -216
- package/lib/themes/antd.css +323 -104
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +424 -211
- package/lib/themes/cxd.css +324 -105
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +313 -100
- package/lib/themes/dark.css +322 -103
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default-ie11.css +424 -211
- package/lib/themes/default.css +324 -105
- package/lib/themes/default.css.map +1 -1
- package/lib/types.d.ts +3 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/ColorScale.d.ts +19 -0
- package/lib/utils/ColorScale.js +104 -0
- package/lib/utils/ColorScale.js.map +13 -0
- package/lib/utils/api.js +20 -4
- package/lib/utils/api.js.map +2 -2
- package/lib/utils/dom.d.ts +1 -1
- package/lib/utils/dom.js +7 -5
- package/lib/utils/dom.js.map +2 -2
- package/package.json +3 -2
- package/schema.json +29645 -29137
- package/scss/_properties.scss +33 -15
- package/scss/components/_column-toggler.scss +21 -11
- package/scss/components/_formula.scss +1 -1
- package/scss/components/_nav.scss +51 -6
- package/scss/components/_pull-refresh.scss +25 -0
- package/scss/components/_spinner.scss +134 -56
- package/scss/components/_tooltip.scss +4 -9
- package/scss/components/form/_checks.scss +1 -0
- package/scss/components/form/_combo.scss +13 -1
- package/scss/components/form/_date-range.scss +11 -2
- package/scss/components/form/_date.scss +11 -0
- package/scss/components/form/_file.scss +4 -0
- package/scss/components/form/_form.scss +15 -8
- package/scss/components/form/_transfer.scss +3 -2
- package/scss/themes/_antd-variables.scss +1 -1
- package/scss/themes/_common.scss +1 -0
- package/scss/themes/_cxd-variables.scss +2 -2
- package/sdk/ang-ie11.css +286 -80
- package/sdk/ang.css +294 -82
- package/sdk/antd-ie11.css +402 -196
- package/sdk/antd.css +295 -83
- package/sdk/barcode.js +51 -51
- package/sdk/charts.js +14 -14
- package/sdk/codemirror.js +7 -7
- package/sdk/color-picker.js +65 -65
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +397 -191
- package/sdk/cxd.css +296 -84
- package/sdk/dark-ie11.css +286 -80
- package/sdk/dark.css +294 -82
- package/sdk/exceljs.js +1 -1
- package/sdk/locale/de-DE.js +5 -1
- package/sdk/markdown.js +69 -69
- package/sdk/papaparse.js +1 -1
- package/sdk/renderers/Form/CityDB.js +1 -1
- package/sdk/rest.js +17 -17
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +397 -191
- package/sdk/sdk.css +296 -84
- package/sdk/sdk.js +1300 -1260
- package/sdk/thirds/hls.js/hls.js +1 -1
- package/sdk/thirds/mpegts.js/mpegts.js +1 -1
- package/sdk/tinymce.js +57 -57
- package/src/Schema.ts +10 -0
- package/src/actions/PageAction.ts +62 -0
- package/src/actions/index.ts +1 -0
- package/src/components/Cascader.tsx +37 -11
- package/src/components/Checkbox.tsx +1 -1
- package/src/components/DatePicker.tsx +7 -5
- package/src/components/Drawer.tsx +1 -0
- package/src/components/Modal.tsx +1 -0
- package/src/components/Overlay.tsx +6 -3
- package/src/components/PullRefresh.tsx +197 -0
- package/src/components/Spinner.tsx +77 -42
- package/src/components/Tooltip.tsx +12 -3
- package/src/components/TooltipWrapper.tsx +120 -33
- package/src/components/Tree.tsx +19 -5
- package/src/components/calendar/TimeView.tsx +12 -0
- package/src/components/condition-builder/Expression.tsx +6 -1
- package/src/components/condition-builder/Field.tsx +5 -1
- package/src/components/condition-builder/Group.tsx +4 -1
- package/src/components/condition-builder/GroupOrItem.tsx +4 -1
- package/src/components/condition-builder/InputSwitch.tsx +4 -1
- package/src/components/condition-builder/Item.tsx +28 -4
- package/src/components/condition-builder/Value.tsx +7 -1
- package/src/components/condition-builder/index.tsx +4 -2
- package/src/components/formula/Editor.tsx +20 -15
- package/src/components/formula/Picker.tsx +9 -5
- package/src/locale/de-DE.ts +5 -1
- package/src/locale/en-US.ts +5 -1
- package/src/locale/zh-CN.ts +5 -1
- package/src/renderers/CRUD.tsx +1 -1
- package/src/renderers/Form/Combo.tsx +102 -46
- package/src/renderers/Form/InputDate.tsx +18 -4
- package/src/renderers/Form/InputDateRange.tsx +19 -2
- package/src/renderers/Form/InputFile.tsx +16 -4
- package/src/renderers/Form/InputImage.tsx +15 -3
- package/src/renderers/Form/InputMonthRange.tsx +7 -1
- package/src/renderers/Form/InputText.tsx +14 -2
- package/src/renderers/Form/InputTree.tsx +40 -2
- package/src/renderers/Form/Item.tsx +6 -0
- package/src/renderers/Form/NestedSelect.tsx +23 -4
- package/src/renderers/Form/Options.tsx +26 -7
- package/src/renderers/Form/Select.tsx +5 -3
- package/src/renderers/Form/TreeSelect.tsx +47 -9
- package/src/renderers/Form/wrapControl.tsx +2 -2
- package/src/renderers/Nav.tsx +230 -32
- package/src/renderers/Page.tsx +89 -33
- package/src/renderers/Service.tsx +62 -27
- package/src/renderers/Spinner.tsx +85 -3
- package/src/renderers/Table/ColumnToggler.tsx +36 -11
- package/src/renderers/Table/TableCell.tsx +39 -1
- package/src/renderers/Table/index.tsx +34 -21
- package/src/renderers/TooltipWrapper.tsx +64 -28
- package/src/renderers/Wizard.tsx +36 -25
- package/src/store/crud.ts +10 -0
- package/src/types.ts +4 -0
- package/src/utils/ColorScale.ts +138 -0
- package/src/utils/api.ts +26 -4
- package/src/utils/dom.tsx +7 -6
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/InputImage.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA,0DAAsC;AACtC,+BAAmE;AACnE,uCAAuC;AACvC,IAAM,OAAO,GAAG,eAAK,CAAC,IAAI,CAAC,cAAM,qFAAO,eAAe,QAAtB,CAAuB,CAAC,CAAC;AAC1D,+EAAsC;AAEtC,gCAA8B;AAC9B,kEAA+B;AAE/B,uCAAyC;AACzC,6CAM4B;AAC5B,gDAA4C;AAC5C,gFAA6C;AAC7C,yEAAkC;AAClC,yCAA2C;AAC3C,gEAAyD;AAEzD,uDAAoD;AAOpD,uCAAuC;AACvC,oFAAiD;AACjD,oEAAiC;AACjC,kEAA+B;AAwO/B,IAAI,YAAY,GAAG,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,eAAe,EAAE,EAAnB,CAAmB,CAAC;AAuDnD;IAA0C,6CAGzC;IAgFC,sBAAY,KAAiB;QAA7B,cACE,kBAAM,KAAK,CAAC,SAgDb;QArED,aAAK,GAAe;YAClB,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,EAAE;SACV,CAAC;QAEF,aAAK,GAA6B,EAAE,CAAC;QACrC,iCAAyB,GAGpB,EAAE,CAAC;QAER,gBAAQ,GAAG,eAAK,CAAC,SAAS,EAAO,CAAC;QAClC,qBAAa,GAAG,eAAK,CAAC,SAAS,EAAO,CAAC;QACvC,eAAO,GAA6B,IAAI,CAAC;QAGzC,iBAAS,GAAG,KAAK,CAAC;QAKhB,IAAM,KAAK,GAAmD,KAAK,CAAC,KAAK,CAAC;QAC1E,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,IAAM,SAAS,GAAG,KAAK,CAAC,SAAmB,CAAC;QAC5C,IAAI,KAAK,GAAqB,EAAE,CAAC;QACjC,OAAI,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;QAEzC,IAAI,KAAK,EAAE;YACT,iHAAiH;YACjH,KAAK,GAAG,CACN,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAClB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,UAAU,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ;oBACrD,CAAC,CAAE,KAAgB,CAAC,KAAK,CAAC,SAAS,CAAC;oBACpC,CAAC,CAAC,CAAC,KAAK,CAAC,CACZ;iBACE,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,YAAY,CAAC,WAAW,CAAC,IAAI,CAAc,EAA3C,CAA2C,CAAC;iBACxD,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,EAAJ,CAAI,CAAC,CAAC;SACzB;QAED,OAAI,CAAC,KAAK,mDACL,OAAI,CAAC,KAAK,KACb,KAAK,EAAE,CAAC,OAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAC3B,IAAI,EAAE,OAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAC3B,eAAe,EAAE,CAAC,GACnB,CAAC;QAEF,OAAI,CAAC,QAAQ,GAAG,OAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QACzC,OAAI,CAAC,UAAU,GAAG,OAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QAC7C,OAAI,CAAC,UAAU,GAAG,OAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QAC7C,OAAI,CAAC,WAAW,GAAG,OAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QAC/C,OAAI,CAAC,WAAW,GAAG,OAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QAC/C,OAAI,CAAC,UAAU,GAAG,OAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QAC7C,OAAI,CAAC,kBAAkB,GAAG,OAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QAC7D,OAAI,CAAC,UAAU,GAAG,OAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QAC7C,OAAI,CAAC,aAAa,GAAG,OAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QACnD,OAAI,CAAC,iBAAiB,GAAG,OAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QAC3D,OAAI,CAAC,sBAAsB,GAAG,OAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QACrE,OAAI,CAAC,WAAW,GAAG,OAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QAC/C,OAAI,CAAC,UAAU,GAAG,OAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QAC7C,OAAI,CAAC,YAAY,GAAG,OAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QACjD,OAAI,CAAC,IAAI,GAAG,OAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QACjC,OAAI,CAAC,QAAQ,GAAG,OAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QACzC,OAAI,CAAC,QAAQ,GAAG,OAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QACzC,OAAI,CAAC,YAAY,GAAG,OAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QACjD,OAAI,CAAC,WAAW,GAAG,OAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;QAC/C,OAAI,CAAC,YAAY,GAAG,OAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAI,CAAC,CAAC;;IACnD,CAAC;IAnHM,2BAAc,GAArB,UACE,IAAqB,EACrB,KAAiC;QAAjC,sBAAA,EAAA,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;QAEjC,IAAI,GAAG,QAAQ,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAEzC,OAAO,IAAI,GAAG,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACtC,IAAI,IAAI,IAAI,CAAC;YACb,KAAK,CAAC,KAAK,EAAE,CAAC;SACf;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAEM,wBAAW,GAAlB,UACE,KAAsB,EACtB,KAAkB;QAElB,OAAO,KAAK;YACV,CAAC,iDACM,CAAC,OAAO,KAAK,KAAK,QAAQ;gBAC3B,CAAC,CAAC;oBACE,KAAK,OAAA;oBACL,GAAG,EAAE,KAAK;oBACV,EAAE,EAAE,IAAA,aAAI,GAAE;iBACX;gBACH,CAAC,CAAC,KAAK,CAAC,KACV,KAAK,EAAE,MAAM,IAEjB,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEM,qBAAQ,GAAf,UACE,KAAyB,EACzB,MAA0B,EAC1B,EAAe;QAEf,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,EAAE,CAAC,cAAc,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC;SAC7C;aAAM,IAAI,CAAC,MAAM,EAAE;YAClB,OAAO,EAAE,CAAC,aAAa,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;SAC1C;QAED,OAAO,EAAE,CAAC,YAAY,EAAE,EAAC,KAAK,OAAA,EAAE,MAAM,QAAA,EAAC,CAAC,CAAC;IAC3C,CAAC;IAyED,wCAAiB,GAAjB;QACE,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,yCAAkB,GAAlB,UAAmB,SAAqB;QAAxC,mBA0DC;QAzDC,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE;YACrE,IAAM,KAAK,GAAmD,KAAK,CAAC,KAAK,CAAC;YAC1E,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAChC,IAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;YACpC,IAAM,SAAS,GAAG,KAAK,CAAC,SAAmB,CAAC;YAE5C,IAAI,KAAK,GAAqB,EAAE,CAAC;YAEjC,IAAI,KAAK,EAAE;gBACT,KAAK,GAAG,CACN,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBAClB,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,UAAU,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ;wBACrD,CAAC,CAAE,KAAgB,CAAC,KAAK,CAAC,SAAS,CAAC;wBACpC,CAAC,CAAC,CAAC,KAAK,CAAC,CACZ;qBACE,GAAG,CAAC,UAAA,IAAI;oBACP,IAAI,GAAG,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAc,CAAC;oBAC7D,IAAI,GAAG,CAAC;oBAER,IACE,GAAG;wBACH,CAAC,GAAG,GAAG,IAAA,cAAI,EACT,OAAI,CAAC,KAAK,EACV,UAAA,IAAI,IAAI,OAAC,IAAkB,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,EAAvC,CAAuC,CAChD,CAAC,EACF;wBACA,GAAG,yEACE,GAAG,GACH,GAAG,KACN,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,GACrB,CAAC;qBACH;oBAED,OAAO,GAAG,CAAC;gBACb,CAAC,CAAC;qBACD,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,EAAJ,CAAI,CAAC,CAAC;aACzB;YAED,IAAI,CAAC,QAAQ,CACX;gBACE,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aAC5B,EACD,IAAI,CAAC,YAAY,CAClB,CAAC;SACH;aAAM,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAChE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;QAED,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;YACjC,IAAI,CAAC,QAAQ,CAAC;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;aAC5B,CAAC,CAAC;SACJ;IACH,CAAC;IAED,2CAAoB,GAApB;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,gCAAS,GAAT,UAAU,KAAiB;QACzB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACtB,IAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAEhC,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE;YAC1B,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC;SACb;QAED,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,IAAI,GAAG,EAAE,CAAC;SACX;QAED,IAAI,IAAI,EAAE;YACR,IAAI,2BACF,WAAW,EAAE,SAAS,EACtB,MAAM,EAAE,IAAI,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,IAAI,EACf,QAAQ,EAAE,IAAI,IACX,IAAI,CACR,CAAC;SACH;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yCAAkB,GAAlB,UACE,aAA8B,EAC9B,GAAyB;QAEzB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE;YAChD,OAAO;SACR;QACK,IAAA,KAAyC,IAAI,CAAC,KAAK,EAAlD,QAAQ,cAAA,EAAE,GAAG,SAAA,EAAE,MAAM,YAAA,EAAa,EAAE,eAAc,CAAC;QAE1D,IAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,UAAA,aAAa,IAAI,OAAA,iDAC5C,aAAa,CAAC,IAAI,KACrB,KAAK,EAAE,SAAS,EAChB,EAAE,EAAE,IAAA,aAAI,GAAE,EACV,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,IAC7B,EAL+C,CAK/C,CAAC,CAAC;QAEJ,kBAAkB;QAClB,iCAAiC;QACjC,iCAAiC;QACjC,0BAA0B;QAC1B,mBAAmB;QACnB,0BAA0B;QAC1B,MAAM;QAEN,GAAG,CAAC,KAAK,CACP,EAAE,CAAC,kBAAkB,EAAE;YACrB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,UAAC,IAAS,IAAK,OAAA,gBAAI,IAAI,CAAC,IAAI,WAAG,EAAhB,CAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC3D,MAAM,QAAA;SACP,CAAC,CACH,CAAC;IACJ,CAAC;IAED,kCAAW,GAAX,UAAY,KAAsB;QAAtB,sBAAA,EAAA,aAAsB;QAChC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACxB,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,CACX;YACE,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI;gBACtC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE;oBACnC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;oBACvB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;iBACnB;gBAED,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;SACJ,EACD,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IAED,mCAAY,GAAZ;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACvE,CAAC;IAED,iCAAU,GAAV;QACE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACzB,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,CAAC;YACZ,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC;IAED,2BAAI,GAAJ;QAAA,mBAoGC;QAnGC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACzC,OAAO;SACR;QAED,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3B,IAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAChC,IAAM,IAAI,GAAG,IAAA,cAAI,EAAC,IAAI,CAAC,KAAK,EAAE,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,KAAK,SAAS,EAAxB,CAAwB,CAAU,CAAC;QACzE,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAEpB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;YACzB,IAAI,CAAC,QAAQ,CACX;gBACE,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aAC1C,EACD;gBACE,OAAA,OAAI,CAAC,QAAQ,CACX,IAAa,EACb,UAAC,KAAK,EAAE,IAAI,EAAE,GAAG;oBACf,IAAM,KAAK,GAAG,OAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAClC,IAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAEhC,IAAI,CAAC,CAAC,GAAG,EAAE;wBACT,OAAO;qBACR;oBAED,IAAI,OAAO,GAAsB,IAAI,CAAC;oBAEtC,IAAI,KAAK,EAAE;wBACT,OAAO,CAAC,KAAK;4BACX,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;wBACpD,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;wBAEtB,IAAI,CAAC,OAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE;4BACvD,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;4BACrB,OAAI,CAAC,OAAO,GAAG,IAAI,CAAC;4BAEpB,OAAO,OAAI,CAAC,QAAQ,CAClB;gCACE,KAAK,EAAE,CAAC,OAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gCAC3B,KAAK,EAAE,KAAK;6BACb,EACD,OAAI,CAAC,IAAI,CACV,CAAC;yBACH;wBAED,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;qBACrD;yBAAM;wBACL,OAAO,GAAG,8CACR,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,OAAI,CAAC,KAAK,CAAC,YAAY,IACvC,GAAG,KACN,OAAO,EAAE,IAAI,CAAC,OAAO,GACT,CAAC;qBAChB;oBACD,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;oBAC9B,OAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,OAAI,CAAC,QAAQ,CACX;wBACE,KAAK,EAAE,CAAC,OAAI,CAAC,KAAK,GAAG,KAAK,CAAC;qBAC5B,EACD,OAAI,CAAC,IAAI,CACV,CAAC;gBACJ,CAAC,EACD,UAAA,QAAQ;oBACN,IAAM,KAAK,GAAG,OAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAClC,IAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAEhC,IAAI,CAAC,CAAC,GAAG,EAAE;wBACT,OAAO;qBACR;oBAED,+BAA+B;oBAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACzB,OAAI,CAAC,QAAQ,CAAC;wBACZ,KAAK,EAAE,CAAC,OAAI,CAAC,KAAK,GAAG,KAAK,CAAC;qBAC5B,CAAC,CAAC;gBACL,CAAC,CACF;YA7DD,CA6DC,CACJ,CAAC;SACH;aAAM;YACL,IAAI,CAAC,QAAQ,CACX;gBACE,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,KAAK;aACd,EACD;gBACE,OAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAErC,IAAI,OAAI,CAAC,OAAO,EAAE;oBAChB,OAAI,CAAC,OAAO,CACV,OAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,KAAK,OAAO,EAAtB,CAAsB,CAAC;wBAC7C,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC;wBACvB,CAAC,CAAC,IAAI,CACT,CAAC;oBACF,OAAI,CAAC,OAAO,GAAG,SAAS,CAAC;iBAC1B;YACH,CAAC,CACF,CAAC;SACH;IACH,CAAC;IAEK,iCAAU,GAAhB,UAAiB,IAAe,EAAE,KAAa;;;;;;wBACvC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;wBACf,qBAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAA;;wBAArD,UAAU,GAAG,SAAwC;wBAC3D,IAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,EAAE;4BACzB,sBAAO;yBACR;wBACD,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBACzC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;wBAEjB,WAAW,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;wBAC1C,IAAI,WAAW,EAAE;4BACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;yBACrB;wBAED,IAAI,CAAC,QAAQ,CACX;4BACE,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;yBAC5B,EACD,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CACxC,CAAC;;;;;KACH;IAED,mCAAY,GAAZ,UAAa,IAAW,EAAE,KAAa,EAAE,CAAwB;QACxD,IAAA,cAAc,GAAI,IAAI,CAAC,KAAK,eAAd,CAAe;QAEpC,IAAI,cAAc,EAAE;YAClB,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,CAAC,CAAC,cAAc,EAAE,CAAC;YAEnB,cAAc,CAAC;gBACb,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAW;gBACzC,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAW;gBACjD,KAAK,OAAA;gBACL,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC;oBACvB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAW;oBACzC,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAW;oBACjD,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,IAAA,0BAAc,EAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC;iBAC3D,CAAC,EAJsB,CAItB,CAAC;aACJ,CAAC,CAAC;SACJ;IACH,CAAC;IAED,gCAAS,GAAT,UAAU,KAAa;QACrB,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,CAAC,QAAQ,CAAC;YACZ,QAAQ,EAAE;gBACR,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,IAAK,KAAK,CAAC,KAAK,CAAC,CAAC,GAAc;gBAC7D,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI;gBACvB,KAAK,EAAE,MAAM;aACd;YACD,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI;SAChC,CAAC,CAAC;IACL,CAAC;IAEK,+BAAQ,GAAd,UAAe,iBAA2B,EAAE,YAAmB;QAAnB,6BAAA,EAAA,mBAAmB;;;;;;wBACvD,KAOF,IAAI,CAAC,KAAK,EANZ,QAAQ,cAAA,EACR,QAAQ,cAAA,EACR,UAAU,gBAAA,EACV,YAAY,kBAAA,EACZ,SAAS,eAAA,EACT,UAAU,gBAAA,CACG;wBAET,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAC7B,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,EAAhD,CAAgD,CACzD,CAAC;wBAEE,QAAQ,GAAQ,KAAK,CAAC,MAAM;4BAC9B,CAAC,CAAC,UAAU;gCACV,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK;gCAChB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;4BACZ,CAAC,CAAC,EAAE,CAAC;wBAEP,IAAI,QAAQ,EAAE;4BACZ,QAAQ,GAAG,UAAU;gCACnB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,EAAV,CAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;gCAC/C,CAAC,CAAC,YAAY;oCACd,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,EAAV,CAAU,CAAC;oCAC/B,CAAC,CAAC,KAAK,CAAC;yBACX;6BAAM;4BACL,QAAQ,GAAG,UAAU;gCACnB,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ;gCAC5B,CAAC,CAAC,YAAY;oCACd,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC;oCACjC,CAAC,CAAC,QAAQ,CAAC;yBACd;6BACG,YAAY,EAAZ,wBAAY;wBACK,qBAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAA;;wBAA/C,UAAU,GAAG,SAAkC;wBACrD,IAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,EAAE;4BACzB,sBAAO;yBACR;;;wBAGH,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;wBAC1E,IAAI,CAAC,YAAY,EAAE,CAAC;;;;;KACrB;IAED,mCAAY,GAAZ;QACQ,IAAA,KAAiD,IAAI,CAAC,KAAK,EAA1D,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAE,YAAY,kBAAA,EAAE,IAAI,UAAA,EAAE,IAAI,UAAc,CAAC;QAClE,uBAAuB;QACvB,IAAM,mBAAmB,GAAG,IAAA,cAAI,EAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAEvD,IAAI,CAAC,IAAA,gBAAO,EAAC,mBAAmB,CAAC,IAAI,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE;YACtE,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CACnC,UAAA,IAAI,IAAI,OAAA,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAe,CAAC,EAA5D,CAA4D,CACrE,CAAC;YACF,IAAM,QAAM,GAAG,IAAA,yBAAW,EACxB,mBAAmB,EACnB,QAAQ;gBACN,CAAC,CAAC;oBACE,KAAK,EAAE,KAAK;iBACb;gBACH,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACb,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,QAAM,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;gBAC7B,IAAI,IAAA,uBAAa,EAAC,QAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAA,uBAAa,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC1D,QAAM,CAAC,GAAG,CAAC,GAAG,IAAA,eAAK,EAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,QAAM,CAAC,GAAG,CAAC,CAAC,CAAC;iBACjD;YACH,CAAC,CAAC,CAAC;YACH,YAAY,CAAC,QAAM,CAAC,CAAC;SACtB;IACH,CAAC;IAED,mCAAY,GAAZ;QACE,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACxD,CAAC;IAED,kCAAW,GAAX,UAAY,KAAa;QACvB,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClC,IAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAE1B,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE;YACtD,OAAO;SACR;QAED,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAElB,IAAI,CAAC,QAAQ,CACX;YACE,KAAK,EAAE,KAAK;SACb,EACD,IAAI,CAAC,WAAW,CACjB,CAAC;IACJ,CAAC;IAED,iCAAU,GAAV,UAAW,KAAmB;QACtB,IAAA,KAAmB,IAAI,CAAC,KAAK,EAA5B,QAAQ,cAAA,EAAE,IAAI,UAAc,CAAC;QAEpC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACrB,IAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAQ,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aACjD;YAED,OAAO,IAAI,CAAC,QAAQ,CAAC;gBACnB,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,IAAI,CAAC,IAAI;aACxB,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,kCAAW,GAAX,UAAY,CAA4B;QACtC,IAAM,KAAK,GAAG,CAAC,CAAC,WAAkB,CAAC;QACnC,IAAM,KAAK,GAAiB,EAAE,CAAC;QAC/B,IAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;QACxC,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;QAExC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAC,IAAsB;YAClD,IAAI,IAAW,CAAC;YAEhB,IACE,IAAI,CAAC,IAAI,KAAK,MAAM;gBACpB,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,EAAU,CAAC;gBAClC,CAAC,IAAA,qBAAO,EAAC,IAAI,EAAE,MAAM,CAAC,EACtB;gBACA,OAAO;aACR;YAED,IAAI,CAAC,EAAE,GAAG,IAAA,aAAI,GAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,iCAAU,GAAV;QAAA,mBAcC;QAbO,IAAA,KAA4B,IAAI,CAAC,KAAK,EAArC,UAAU,gBAAA,EAAE,WAAW,iBAAc,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,CACpC,UAAC,IAAU;YACT,OAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACtB,OAAI,CAAC,QAAQ,CAAC;gBACZ,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,KAAK;gBACb,YAAY,EAAE,EAAE;aACjB,CAAC,CAAC;QACL,CAAC,EACD,UAAU,IAAI,WAAW,EACzB,WAAW,IAAI,CAAC,CACjB,CAAC;IACJ,CAAC;IAED,iCAAU,GAAV;QACE,IAAI,CAAC,QAAQ,CACX;YACE,QAAQ,EAAE,SAAS;YACnB,YAAY,EAAE,SAAS;YACvB,MAAM,EAAE,KAAK;YACb,YAAY,EAAE,EAAE;SACjB,EACD,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;IAED,oCAAa,GAAb;QACE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,+BAAQ,GAAR,UAAS,KAAmB;QAA5B,mBA2DC;QA1DC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACjB,OAAO;SACR;QAEK,IAAA,KAAwD,IAAI,CAAC,KAAK,EAAjE,QAAQ,cAAA,EAAE,SAAS,eAAA,EAAE,OAAO,aAAA,EAAE,MAAM,YAAA,EAAa,EAAE,eAAc,CAAC;QACzE,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QAE9B,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,MAAM,EAAE;YACpC,YAAY,GAAG,EAAE,CAAC;SACnB;QAED,IAAM,OAAO,GACX,CAAC,QAAQ;YACP,CAAC,CAAC,SAAS;gBACT,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM;YACtC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;QAC/B,IAAM,UAAU,GAAiB,EAAE,CAAC;QAEpC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,UAAC,IAAW;YACnD,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE;gBAClC,OAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAClB,EAAE,CAAC,cAAc,EAAE;oBACjB,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,UAAU,EAAE,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;oBAClD,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC;iBAC9C,CAAC,CACH,CAAC;gBACF,OAAO;aACR;YAED,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,IAAI,CAAC,EAAE,GAAG,IAAA,aAAI,GAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC9B,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aAC1C;YACD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACtB,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,CACX;YACE,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACrD,MAAM,EAAE,IAAI;SACb,EACD;YACS,IAAA,UAAU,GAAI,OAAI,CAAC,KAAK,WAAd,CAAe;YAEhC,IAAI,UAAU,EAAE;gBACd,OAAI,CAAC,WAAW,EAAE,CAAC;aACpB;QACH,CAAC,CACF,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,+BAAQ,GAAR,UACE,IAAW,EACX,EAAgE,EAChE,UAAsC;QAHxC,mBA2DC;QAtDO,IAAA,KAAyB,IAAI,CAAC,KAAK,EAAlC,KAAK,WAAA,EAAa,EAAE,eAAc,CAAC;QAE1C,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;SAC3C;QAED,IAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,KAAK,CAAC,MAAM,GAAG;;;;;wBACP,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;wBACpB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;wBACxB,KAAK,GAAG,EAAE,CAAC;wBAEf,IACE,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;4BACrC,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,EACxC;4BACA,KAAK,GAAG,EAAE,CAAC,oBAAoB,EAAE;gCAC/B,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;6BAC3D,CAAC,CAAC;yBACJ;6BAAM,IACL,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;4BAC1C,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,EAC7C;4BACA,KAAK,GAAG,EAAE,CAAC,gBAAgB,EAAE;gCAC3B,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;6BACjE,CAAC,CAAC;yBACJ;6BAAM,IACL,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;4BAC1C,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,EAC7C;4BACA,KAAK,GAAG,EAAE,CAAC,gBAAgB,EAAE;gCAC3B,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;6BACjE,CAAC,CAAC;yBACJ;6BAAM,IACL,KAAK,CAAC,WAAW;4BACjB,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,EACnD;4BACA,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,gBAAgB,IAAI,kBAAkB,EAAE;gCACvD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;6BACvC,CAAC,CAAC;yBACJ;6BAEG,KAAK,EAAL,wBAAK;wBACP,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;wBACJ,qBAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAC,IAAI,MAAA,EAAE,KAAK,OAAA,EAAC,CAAC,EAAA;;wBAA5D,UAAU,GAAG,SAA+C;wBAClE,IAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,EAAE;4BACzB,sBAAO;yBACR;wBACD,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;;wBAEhB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;;;;;aAEtC,CAAC;QACF,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAW,CAAC;IACnD,CAAC;IAED,8BAAO,GAAP,UACE,IAAW,EACX,EAA+D,EAC/D,UAAsC;QAHxC,mBAkCC;QA7BC,IAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAkB,EAAE,EAAE,EAAE,UAAU,CAAC;aAC5D,IAAI,CAAC,UAAO,GAAY;;;;;wBACvB,IAAI,GAAG,CAAC,MAAM,IAAK,GAAW,CAAC,MAAM,KAAK,GAAG,EAAE;4BAC7C,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;yBACnD;wBAEK,GAAG,mDACJ,GAAG,CAAC,IAAI,KACX,KAAK,EAAE,UAAU,GAClB,CAAC;wBACF,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;wBAEd,qBAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,EAAA;;wBAArD,UAAU,GAAG,SAAwC;wBAC3D,IAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,EAAE;4BACzB,sBAAO;yBACR;wBACD,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;;;;aACrB,CAAC;aACD,KAAK,CAAC,UAAM,KAAK;;;;4BACG,qBAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;4BAClD,IAAI,MAAA;4BACJ,KAAK,OAAA;yBACN,CAAC,EAAA;;wBAHI,UAAU,GAAG,SAGjB;wBACF,IAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,EAAE;4BACzB,sBAAO;yBACR;wBACD,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC;;;;aAClD,CAAC,CAAC;IACP,CAAC;IAEK,4BAAK,GAAX,UACE,IAAU,EACV,QAAgB,EAChB,MAAc,EACd,UAAsC;oDACrC,OAAO;;;;;;wBACF,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;wBACpB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;wBACvB,GAAG,GAAG,IAAA,cAAQ,EAAC,QAAQ,EAAE,IAAA,qBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,EAAE;4BACzD,MAAM,EAAE,MAAM;yBACf,CAAC,CAAC;wBACG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC;wBAE3C,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;wBAEjC,IAAI,CAAC,GAAG,IAAI,MAAM,EAAE;4BAClB,MAAM,mDACD,IAAA,gBAAO,EAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GACnC,MAAM,CACV,CAAC;4BACF,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;yBACjE;6BAAM,IAAI,MAAM,EAAE;4BACjB,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;yBACtC;wBAED,IAAI,GAAG,CAAC,IAAI,EAAE;4BACZ,IAAA,oBAAW,EAAC,GAAG,CAAC,IAAI,CAAC;iCAClB,KAAK,CAAC,GAAG,CAAC;iCACV,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,KAAK,EAAE,EAAX,CAAW,CAAC;iCAC3B,OAAO,CAAC,UAAA,IAAI;gCACX,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gCAC5B,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BACpD,CAAC,CAAC,CAAC;yBACN;wBAED,kCAAkC;wBAClC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAG,IAAa,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;wBAErE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;wBAE3B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;4BACxB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;yBACxC;;;;wBAGQ,qBAAM,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE;gCAChC,MAAM,EAAE,MAAM;gCACd,cAAc,EAAE,UAAC,cAA0B;oCACzC,iBAAiB;oCACjB,OAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;wCAClC,IAAI,EAAE,IAAI;wCACV,QAAQ,EAAE,cAAc;qCACzB,CAAC,CAAC;gCACL,CAAC;gCACD,gBAAgB,EAAE,UAAC,KAAsC;oCACvD,OAAA,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;gCAAtC,CAAsC;6BACzC,CAAC,EAAA;4BAXF,sBAAO,SAWL,EAAC;;wBAEH,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;;;;;;KAEtC;IAED,8CAAuB,GAAvB,UAAwB,IAAS,EAAE,OAAe;QAAf,wBAAA,EAAA,eAAe;QAChD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CACpE,UAAA,IAAI;YACF,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;gBACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;YAED,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;QAC5B,CAAC,CACF,CAAC;IACJ,CAAC;IAED,kCAAW,GAAX;QACG,IAAI,CAAC,IAAI,CAAC,QAAgB,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,wCAAiB,GAAjB,UAAkB,KAAa,EAAE,CAAqB;QAAtD,mBAgCC;QA/BC,IAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC;QAC/B,IAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,GAAG,CAAC,MAAM,GAAG;YACX,OAAQ,GAAW,CAAC,MAAM,CAAC;YAC3B,IAAM,KAAK,GAAG,OAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClC,IAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAE1B,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YAED,IAAI,CAAC,IAAI,mDACJ,IAAI,CAAC,IAAI,KACZ,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,MAAM,EAAE,GAAG,CAAC,MAAM,GACnB,CAAC;YAEF,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAM,aAAa,GAAG,CAAC,CAAC,CACtB,OAAI,CAAC,OAAO,IAAI,IAAA,cAAI,EAAC,KAAK,EAAE,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,KAAK,SAAS,EAAxB,CAAwB,CAAC,CAC9D,CAAC;YAEF,OAAI,CAAC,SAAS;gBACZ,OAAI,CAAC,QAAQ,CACX;oBACE,KAAK,EAAE,CAAC,OAAI,CAAC,KAAK,GAAG,KAAK,CAAC;iBAC5B,EACD,CAAC,aAAa,CAAC,CAAC,CAAC,OAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACN,CAAC,CAAC;QACF,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,CAAC;IAED,6CAAsB,GAAtB,UAAuB,CAAqB;QAC1C,IAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC;QAC/B,IAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACjB,IAAA,YAAY,GAAI,IAAI,CAAC,aAAa,CAAC,OAAO,aAA9B,CAA+B;QAElD,IAAM,KAAK,GAAG,IAAI,CAAC;QACnB,GAAG,CAAC,MAAM,GAAG;YACX,IAAM,KAAK,GAAI,IAAY,CAAC,KAAK,GAAI,IAAY,CAAC,MAAM,CAAC;YACzD,IAAM,UAAU,GAAG,CAAC,KAAK,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC3D,KAAK,CAAC,QAAQ,CAAC;gBACb,eAAe,EAAE,CAAC,UAAU;aAC7B,CAAC,CAAC;QACL,CAAC,CAAC;QACF,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,CAAC;IAED,+BAAQ,GAAR;QAAA,mBAqBC;QApBC,IAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAEhC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YAChD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;SAChC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC9B,OAAO,IAAI,OAAO,CAAC,UAAA,OAAO;gBACxB,OAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,OAAI,CAAC,UAAU,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;SACJ;aAAM,IACL,IAAI,CAAC,KAAK,CAAC,SAAS;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,KAAK,SAAS,EAAxB,CAAwB,CAAC,EACjD;YACA,OAAO,IAAI,OAAO,CAAC,UAAA,OAAO;gBACxB,OAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,OAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;SACJ;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,KAAK,OAAO,EAAtB,CAAsB,CAAC,EAAE;YAC1D,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAC;SAC9B;IACH,CAAC;IAEK,oCAAa,GAAnB,UAAoB,CAAS,EAAE,IAA0B;;;;gBAChD,aAAa,GAAI,IAAI,CAAC,KAAK,cAAd,CAAe;gBACnC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;gBAChC,sBAAO,aAAa,CAAC,CAAC,EAAE,IAAA,qBAAY,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC,EAAC;;;KACtE;IAED,KAAK;IACL,+BAAQ,GAAR,UAAS,MAAc,EAAE,IAAY,EAAE,WAAoB;QAClD,IAAA,QAAQ,GAAI,IAAI,CAAC,KAAK,SAAd,CAAe;QAC9B,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,EAAE;YACjC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,QAAQ,CAAC,EAAE,CAAC,CAAC;SACd;IACH,CAAC;IAED,6BAAM,GAAN;QAAA,mBA6XC;QA5XO,IAAA,KAiBF,IAAI,CAAC,KAAK,EAhBZ,SAAS,eAAA,EACG,EAAE,gBAAA,EACd,WAAW,iBAAA,EACX,QAAQ,cAAA,EACR,QAAQ,cAAA,EACR,MAAM,YAAA,EACN,SAAS,eAAA,EACT,UAAU,gBAAA,EACV,gBAAgB,sBAAA,EAChB,SAAS,eAAA,EACT,UAAU,gBAAA,EACV,UAAU,gBAAA,EACV,UAAU,gBAAA,EACV,SAAS,eAAA,EACT,kBAAkB,wBAAA,EACP,EAAE,eACD,CAAC;QACT,IAAA,KACJ,IAAI,CAAC,KAAK,EADL,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,IAAI,UAAA,EAAE,SAAS,eAAA,EAAE,QAAQ,cAAA,EAAE,eAAe,qBACnD,CAAC;QACb,IAAI,eAAe,GAAQ,EAAE,CAAC;QAC9B,IAAI,kBAAkB,IAAI,eAAe,IAAI,SAAS,EAAE;YACtD,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC;SACzC;QACD,IAAM,gBAAgB,GAAG,IAAA,YAAM,EAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEtE,IAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,IAAI,SAAS,EAAvB,CAAuB,CAAC,CAAC;QAC/D,OAAO,CACL,uCAAK,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC,IAC1C,QAAQ,CAAC,CAAC,CAAC,CACV,uCAAK,SAAS,EAAE,EAAE,CAAC,6BAA6B,CAAC;YAC/C,8BAAC,gBAAQ,IAAC,QAAQ,EAAE,iDAAc;gBAChC,8BAAC,OAAO,4BACF,IAAI,IACR,aAAa,EAAE,UAAA,QAAQ;wBACrB,OAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;oBAC1B,CAAC,EACD,GAAG,EAAE,QAAQ,CAAC,OAAO,IACrB,CACO;YACX,uCAAK,SAAS,EAAE,EAAE,CAAC,4BAA4B,CAAC;gBAC7C,IAAI,CAAC,SAAS,IAAI,CACjB,qCACE,SAAS,EAAE,EAAE,CAAC,4BAA4B,CAAC,EAC3C,OAAO,EAAE,IAAI,CAAC,aAAa,kBACb,EAAE,CAAC,QAAQ,CAAC,mBACZ,MAAM;oBAEpB,8BAAC,YAAI,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,MAAM,GAAG,CACpC,CACL;gBACD,qCACE,SAAS,EAAE,EAAE,CAAC,yBAAyB,CAAC,EACxC,OAAO,EAAE,IAAI,CAAC,UAAU,kBACV,EAAE,CAAC,QAAQ,CAAC,mBACZ,MAAM;oBAEpB,8BAAC,YAAI,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,MAAM,GAAG,CACpC;gBACJ,qCACE,SAAS,EAAE,EAAE,CAAC,0BAA0B,CAAC,EACzC,OAAO,EAAE,IAAI,CAAC,UAAU,kBACV,EAAE,CAAC,SAAS,CAAC,mBACb,MAAM;oBAEpB,8BAAC,YAAI,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,MAAM,GAAG,CACpC,CACA,CACF,CACP,CAAC,CAAC,CAAC,CACF,8BAAC,wBAAQ,IACP,GAAG,EAAC,WAAW,EACf,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,MAAM,EAAE,IAAI,CAAC,UAAU,EACvB,cAAc,EAAE,IAAI,CAAC,kBAAkB,EACvC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,IAEjB,UAAC,EAOD;gBANC,YAAY,kBAAA,EACZ,aAAa,mBAAA,EACb,YAAY,kBAAA,EACZ,YAAY,kBAAA,EACZ,YAAY,kBAAA,EACZ,SAAS,eAAA;YACL,OAAA,CACJ,+DACM,YAAY,CAAC;gBACf,OAAO,EAAE,YAAY;gBACrB,OAAO,EAAE,OAAI,CAAC,WAAW;gBACzB,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE;oBACrC,aAAa,EAAE,QAAQ;oBACvB,UAAU,EAAE,CAAC,KAAK,CAAC,MAAM;oBACzB,WAAW,EAAE,YAAY;iBAC1B,CAAC;aACH,CAAC;gBAEF,iEAAW,aAAa,EAAE,EAAI;gBAE7B,YAAY,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAC9C,uCACE,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE;wBACtC,WAAW,EAAE,YAAY;wBACzB,WAAW,EAAE,YAAY;qBAC1B,CAAC,IAED,EAAE,CAAC,gBAAgB,CAAC,CACjB,CACP,CAAC,CAAC,CAAC,CACF;oBACG,KAAK,IAAI,KAAK,CAAC,MAAM;wBACpB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,GAAG,IAAK,OAAA,CACvB,uCACE,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EACnB,SAAS,EAAE,EAAE,CACX,mBAAmB,EACnB;gCACE,aAAa,EAAE,IAAI,CAAC,KAAK,KAAK,WAAW;gCACzC,YAAY,EACV,IAAI,CAAC,KAAK,KAAK,OAAO;oCACtB,IAAI,CAAC,KAAK,KAAK,SAAS;6BAC3B,EACD,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAC1C,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CACpC,EACD,KAAK,EAAE,eAAe,IAErB,IAAI,CAAC,KAAK,KAAK,SAAS;4BACzB,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,CACvB,uCAAK,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC;4BAChC,uCAAK,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC;gCACnC,uCACE,SAAS,EAAE,EAAE,CACX,aAAa,EACb,uBAAuB,CACxB;oCAED,8BAAC,YAAI,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,MAAM,GAAG;oCACtC,wCACE,KAAK,EACH,IAAI,CAAC,IAAI;4CACT,IAAA,0BAAc,EAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAGvC,IAAI,CAAC,IAAI;wCACR,IAAA,0BAAc,EAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CACnC,CACH;gCAEN,uCAAK,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC;oCACjC,qDACgB,EAAE,CAAC,aAAa,CAAC,mBACjB,QAAQ,EACtB,OAAO,EAAE,OAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAI,EAAE,GAAG,CAAC;wCAEzC,8BAAC,YAAI,IAAC,IAAI,EAAC,SAAS,EAAC,SAAS,EAAC,MAAM,GAAG,CACtC;oCAEH,CAAC,QAAQ,CAAC,CAAC,CAAC,CACX,qDACgB,EAAE,CAAC,cAAc,CAAC,mBAClB,QAAQ,EACtB,OAAO,EAAE,OAAI,CAAC,UAAU,CAAC,IAAI,CAC3B,OAAI,EACJ,IAAI,EACJ,GAAG,CACJ;wCAED,8BAAC,YAAI,IAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,MAAM,GAAG,CACrC,CACL,CAAC,CAAC,CAAC,IAAI,CACJ,CACF,CACF,CACP,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,CAC/B;4BACE,qCACE,OAAO,EAAE,OAAI,CAAC,UAAU,CAAC,IAAI,CAC3B,OAAI,EACJ,IAAI,EACJ,GAAG,CACJ,EACD,GAAG,EAAC,OAAO,EACX,SAAS,EAAE,EAAE,CAAC,wBAAwB,CAAC,kBACzB,EAAE,CAAC,cAAc,CAAC;gCAEhC,8BAAC,YAAI,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,MAAM,GAAG,CACpC;4BACJ,uCACE,GAAG,EAAC,MAAM,EACV,SAAS,EAAE,EAAE,CACX,uBAAuB,EACvB,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAC1C,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CACpC;gCAED,uCAAK,SAAS,EAAE,EAAE,CAAC,uBAAuB,CAAC;oCACzC,wCACE,KAAK,EAAE;4CACL,KAAK,EAAE,UAAG,IAAI,CAAC,KAAK,CAClB,IAAI,CAAC,QAAQ,GAAG,GAAG,CACpB,MAAG;yCACL,EACD,SAAS,EAAE,EAAE,CACX,4BAA4B,CAC7B,GACD,CACE;gCACN,yCAAI,EAAE,CAAC,gBAAgB,CAAC,CAAK,CACzB,CACL,CACJ,CAAC,CAAC,CAAC,CACF;4BACE,8BAAC,eAAc,IACb,GAAG,EAAC,OAAO,EACX,SAAS,EAAE,EAAE,CACX,oBAAoB,EACpB,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAC3C,EACD,MAAM,EAAE,OAAI,CAAC,iBAAiB,CAAC,IAAI,CACjC,OAAI,EACJ,GAAG,CACJ,EACD,GAAG,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAC7B,GAAG,EAAE,IAAI,CAAC,IAAI,EACd,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,QAAQ,EACN;oCACG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CACX;wCACE,uCAAK,GAAG,EAAC,MAAM;4CACZ,IAAI,CAAC,IAAI,CAAC,KAAK;;4CAAI,GAAG;4CACtB,IAAI,CAAC,IAAI,CAAC,MAAM,CACb;wCACN,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CACd,uCAAK,GAAG,EAAC,MAAM,IACZ,YAAY,CAAC,cAAc,CAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,CACd,CACG,CACP,CAAC,CAAC,CAAC,IAAI;qCACT,CACF,CAAC,CAAC,CAAC,CACF,iDAAc,CACf;oCAED,qDACgB,EAAE,CAAC,cAAc,CAAC,mBAClB,QAAQ,EACtB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,UAAU,EACd,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,EAC9B,OAAO,EAAE,OAAI,CAAC,YAAY,CAAC,IAAI,CAC7B,OAAI,EACJ,IAAI,EACJ,GAAG,CACJ;wCAED,8BAAC,YAAI,IAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,GAAG,CACnC;oCAEH,CAAC,CAAC,IAAI;wCACP,UAAU,KAAK,KAAK;wCACpB,CAAC,QAAQ,CAAC,CAAC,CAAC,CACV,qDACgB,EAAE,CAAC,YAAY,CAAC,mBAChB,QAAQ,EACtB,OAAO,EAAE,OAAI,CAAC,SAAS,CAAC,IAAI,CAC1B,OAAI,EACJ,GAAG,CACJ;wCAED,8BAAC,YAAI,IACH,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,MAAM,GAChB,CACA,CACL,CAAC,CAAC,CAAC,IAAI;oCACP,CAAC,QAAQ,CAAC,CAAC,CAAC,CACX,qDACgB,EAAE,CAAC,cAAc,CAAC,mBAClB,QAAQ,EACtB,OAAO,EAAE,OAAI,CAAC,UAAU,CAAC,IAAI,CAC3B,OAAI,EACJ,IAAI,EACJ,GAAG,CACJ;wCAED,8BAAC,YAAI,IACH,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,MAAM,GAChB,CACA,CACL,CAAC,CAAC,CAAC,IAAI;oCACR,qDAEI,IAAI,CAAC,IAAI;4CACT,IAAA,0BAAc,EAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,mBAE1B,QAAQ,EACtB,MAAM,EAAC,QAAQ;wCAEf,8BAAC,YAAI,IAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,GAAG,CACnC,CACH,GAEL,CACD,CACJ,CACG,CACP,EAxMwB,CAwMxB,CAAC;wBACJ,CAAC,CAAC,IAAI;oBAEP,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;wBACvD,CAAC,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC7B,yCACE,SAAS,EAAE,EAAE,CACX,qBAAqB,EACrB;4BACE,aAAa,EAAE,QAAQ;yBACxB,EACD,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAC1C,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CACpC,EACD,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,OAAI,CAAC,YAAY,kBACZ,EAAE,CAAC,WAAW,CAAC,mBACf,OAAO,EACrB,GAAG,EAAE,OAAI,CAAC,aAAa;wBAEtB,gBAAgB,CAAC,CAAC,CAAC,CAClB,8BAAC,eAAc,IACb,GAAG,EAAC,sBAAsB,EAC1B,GAAG,EAAE,gBAAgB,EACrB,SAAS,EAAE,EAAE,CACX,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAC3C,EACD,MAAM,EAAE,OAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAI,CAAC,EAC9C,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,GACtB,CACH,CAAC,CAAC,CAAC,CACF;4BACE,8BAAC,YAAI,IAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,GAAG;4BACrC,4CAAO,EAAE,CAAC,aAAa,CAAC,CAAQ,CAC/B,CACJ;wBAEA,SAAS,CAAC,CAAC,CAAC,CACX,wCAAM,SAAS,EAAE,EAAE,CAAC,uBAAuB,CAAC,IACzC,EAAE,CAAC,gBAAgB,CAAC,CAChB,CACR,CAAC,CAAC,CAAC,IAAI,CACF,CACT,CAAC,CAAC,CAAC,IAAI;oBAEP,CAAC,UAAU,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAClD,8BAAC,gBAAM,IACL,KAAK,EAAC,SAAS,EACf,SAAS,EAAE,EAAE,CAAC,wBAAwB,CAAC,EACvC,QAAQ,EAAE,CAAC,UAAU,EACrB,OAAO,EAAE,OAAI,CAAC,YAAY,IAEzB,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CACrC,CACV,CAAC,CAAC,CAAC,IAAI;oBAEP,KAAK,CAAC,CAAC,CAAC,CACP,uCAAK,SAAS,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAG,KAAK,CAAO,CAC3D,CAAC,CAAC,CAAC,IAAI,CACP,CACJ,CACG,CACP;QAjSK,CAiSL,CACQ,CACZ,CACG,CACP,CAAC;IACJ,CAAC;IA5yCM,yBAAY,GAAG;QACpB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,6CAA6C;QACrD,QAAQ,EAAE,aAAa;QACvB,gBAAgB,EAAE,KAAK;QACvB,WAAW,EAAE,mBAAmB;QAChC,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,KAAK;KAChB,CAAC;IAkyCJ,mBAAC;CAAA,AAjzCD,CAA0C,eAAK,CAAC,SAAS,GAizCxD;kBAjzCoB,YAAY;AAuzCjC;IAA0C,qDAAY;IAAtD;;IAAwD,CAAC;IAA5C,oBAAoB;QAJhC,IAAA,eAAQ,EAAC;YACR,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,KAAK;SACnB,CAAC;OACW,oBAAoB,CAAwB;IAAD,2BAAC;CAAA,AAAzD,CAA0C,YAAY,GAAG;AAA5C,oDAAoB",
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React, {Suspense} from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\n// import 'cropperjs/dist/cropper.css';\nconst Cropper = React.lazy(() => import('react-cropper'));\nimport DropZone from 'react-dropzone';\nimport {FileRejection} from 'react-dropzone';\nimport 'blueimp-canvastoblob';\nimport find from 'lodash/find';\nimport {Payload, Action} from '../../types';\nimport {buildApi} from '../../utils/api';\nimport {\n createObject,\n qsstringify,\n guid,\n isEmpty,\n qsparse\n} from '../../utils/helper';\nimport {Icon} from '../../components/icons';\nimport Button from '../../components/Button';\nimport accepts from 'attr-accept';\nimport {getNameFromUrl} from './InputFile';\nimport ImageComponent, {ImageThumbProps} from '../Image';\nimport {TranslateFn} from '../../locale';\nimport {dataMapping} from '../../utils/tpl-builtin';\nimport {\n SchemaApi,\n SchemaClassName,\n SchemaTokenizeableString,\n SchemaUrlPath\n} from '../../Schema';\nimport {filter} from '../../utils/tpl';\nimport isPlainObject from 'lodash/isPlainObject';\nimport merge from 'lodash/merge';\nimport omit from 'lodash/omit';\n\n/**\n * Image 图片上传控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/image\n */\nexport interface ImageControlSchema extends FormBaseControl {\n /**\n * 指定为图片上传控件\n */\n type: 'input-image';\n\n /**\n * 默认展示图片的链接\n */\n src?: SchemaUrlPath;\n\n /**\n * 默认展示图片的类名\n */\n imageClassName?: string;\n\n /**\n * 配置接收的图片类型\n *\n * 建议直接填写文件后缀\n * 如:.txt,.csv\n *\n * 多个类型用逗号隔开。\n */\n accept?: string;\n\n /**\n * 默认都是通过用户选择图片后上传返回图片地址,如果开启此选项,则可以允许用户图片地址。\n */\n allowInput?: boolean;\n\n /**\n * 是否自动开始上传\n */\n autoUpload?: boolean;\n\n /**\n * 选择图片按钮的 CSS 类名\n */\n btnClassName?: SchemaClassName;\n\n /**\n * 上传按钮的 CSS 类名\n */\n btnUploadClassName?: SchemaClassName;\n\n /**\n * @deprecated\n */\n compress?: boolean;\n\n /**\n * @deprecated\n */\n compressOptions?: {\n maxHeight?: number;\n maxWidth?: number;\n };\n\n crop?:\n | boolean\n | {\n /**\n * 默认 `1` 即 `1:1`\n *\n * 留空将不限制\n */\n aspectRatio?: number;\n\n guides?: boolean;\n dragMode?: string;\n viewMode?: number;\n rotatable?: boolean;\n scalable?: boolean;\n };\n\n /**\n * 裁剪后的图片类型\n */\n cropFormat?: string;\n\n /**\n * 裁剪后的质量\n */\n cropQuality?: number;\n\n /**\n * 是否允许二次裁剪。\n */\n reCropable?: boolean;\n\n /**\n * 是否隐藏上传按钮\n */\n hideUploadButton?: boolean;\n\n /**\n * 限制图片大小,超出不让上传。\n */\n limit?: {\n /**\n * 比率不对时的提示文字\n */\n aspectRatioLabel?: string;\n /**\n * 限制比率\n */\n aspectRatio?: number;\n\n /**\n * 限制图片高度\n */\n height?: number;\n\n /**\n * 限制图片宽度\n */\n width?: number;\n\n /**\n * 限制图片最大高度\n */\n maxHeight?: number;\n\n /**\n * 限制图片最大宽度\n */\n maxWidth?: number;\n\n /**\n * 限制图片最小高度\n */\n minHeight?: number;\n\n /**\n * 限制图片最小宽度\n */\n minWidth?: number;\n };\n\n /**\n * 最多的个数\n */\n maxLength?: number;\n\n /**\n * 默认没有限制,当设置后,文件大小大于此值将不允许上传。\n */\n maxSize?: number;\n\n /**\n * 默认 `/api/upload` 如果想自己存储,请设置此选项。\n */\n receiver?: SchemaApi;\n\n /**\n * 默认为 false, 开启后,允许用户输入压缩选项。\n *\n * @deprecated\n */\n showCompressOptions?: boolean;\n\n /**\n * 是否为多选\n */\n multiple?: boolean;\n\n /**\n * 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,否则,整个选项对象都会作为该表单项的值提交。\n * 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。\n */\n joinValues?: boolean;\n\n /**\n * 分割符\n */\n delimiter?: string;\n\n /**\n * 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。\n */\n extractValue?: boolean;\n\n /**\n * 清除时设置的值\n */\n resetValue?: any;\n\n /**\n * 缩路图展示模式\n */\n thumbMode?: 'w-full' | 'h-full' | 'contain' | 'cover';\n\n /**\n * 缩路图展示比率。\n */\n thumbRatio?: '1:1' | '4:3' | '16:9';\n\n /**\n * 上传后把其他字段同步到表单内部。\n */\n autoFill?: {\n [propName: string]: SchemaTokenizeableString;\n };\n\n /**\n * 初始化时是否把其他字段同步到表单内部。\n */\n initAutoFill?: boolean;\n\n /**\n * 默认占位图图片地址\n */\n frameImage?: SchemaUrlPath;\n\n /**\n * 是否开启固定尺寸\n */\n fixedSize?: boolean;\n\n /**\n * 固定尺寸的 CSS类名\n */\n fixedSizeClassName?: SchemaClassName;\n}\n\nlet preventEvent = (e: any) => e.stopPropagation();\n\nexport interface ImageProps\n extends FormControlProps,\n Omit<\n ImageControlSchema,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {\n onImageEnlarge?: (\n info: Pick<ImageThumbProps, 'src' | 'originalSrc' | 'title' | 'caption'> & {\n index?: number;\n list?: Array<\n Pick<ImageThumbProps, 'src' | 'originalSrc' | 'title' | 'caption'>\n >;\n }\n ) => void;\n}\n\nexport interface ImageState {\n uploading: boolean;\n locked: boolean;\n lockedReason?: string;\n files: Array<FileValue | FileX>;\n crop?: any;\n error?: string;\n cropFile?: FileValue;\n cropFileName?: string; // 主要是用于后续上传的时候获得用户名\n submitOnChange?: boolean;\n frameImageWidth?: number;\n}\n\nexport interface FileValue {\n value?: any;\n state: 'init' | 'error' | 'pending' | 'uploading' | 'uploaded' | 'invalid';\n url?: string;\n error?: string;\n info?: {\n width: number;\n height: number;\n len?: number;\n };\n [propName: string]: any;\n}\n\nexport interface FileX extends File {\n id?: string | number;\n preview?: string;\n state?: 'init' | 'error' | 'pending' | 'uploading' | 'uploaded' | 'invalid';\n progress?: number;\n [propName: string]: any;\n}\n\nexport type InputImageRendererEvent = 'change' | 'success' | 'fail' | 'remove';\nexport type InputImageRendererAction = 'clear';\n\nexport default class ImageControl extends React.Component<\n ImageProps,\n ImageState\n> {\n static defaultProps = {\n limit: undefined,\n accept: 'image/jpeg, image/jpg, image/png, image/gif',\n receiver: '/api/upload',\n hideUploadButton: false,\n placeholder: 'Image.placeholder',\n joinValues: true,\n extractValue: false,\n delimiter: ',',\n autoUpload: true,\n multiple: false\n };\n\n static formatFileSize(\n size: number | string,\n units = [' B', ' KB', ' M', ' G']\n ) {\n size = parseInt(size as string, 10) || 0;\n\n while (size > 1024 && units.length > 1) {\n size /= 1024;\n units.shift();\n }\n\n return size.toFixed(2) + units[0];\n }\n\n static valueToFile(\n value: string | object,\n props?: ImageProps\n ): FileValue | undefined {\n return value\n ? {\n ...(typeof value === 'string'\n ? {\n value,\n url: value,\n id: guid()\n }\n : value),\n state: 'init'\n }\n : undefined;\n }\n\n static sizeInfo(\n width: number | undefined,\n height: number | undefined,\n __: TranslateFn\n ): string {\n if (!width) {\n return __('Image.height', {height: height});\n } else if (!height) {\n return __('Image.width', {width: width});\n }\n\n return __('Image.size', {width, height});\n }\n\n state: ImageState = {\n uploading: false,\n locked: false,\n files: []\n };\n\n files: Array<FileValue | FileX> = [];\n fileUploadCancelExecutors: Array<{\n file: any;\n executor: () => void;\n }> = [];\n cropper: Cropper;\n dropzone = React.createRef<any>();\n frameImageRef = React.createRef<any>();\n current: FileValue | FileX | null = null;\n resolve?: (value?: any) => void;\n emitValue: any;\n unmounted = false;\n initAutoFill: boolean;\n\n constructor(props: ImageProps) {\n super(props);\n const value: string | Array<string | FileValue> | FileValue = props.value;\n const multiple = props.multiple;\n const joinValues = props.joinValues;\n const delimiter = props.delimiter as string;\n let files: Array<FileValue> = [];\n this.initAutoFill = !!props.initAutoFill;\n\n if (value) {\n // files = (multiple && Array.isArray(value) ? value : joinValues ? (value as string).split(delimiter) : [value])\n files = (\n Array.isArray(value)\n ? value\n : joinValues && typeof value === 'string' && multiple\n ? (value as string).split(delimiter)\n : [value]\n )\n .map(item => ImageControl.valueToFile(item) as FileValue)\n .filter(item => item);\n }\n\n this.state = {\n ...this.state,\n files: (this.files = files),\n crop: this.buildCrop(props),\n frameImageWidth: 0\n };\n\n this.sendFile = this.sendFile.bind(this);\n this.removeFile = this.removeFile.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleCrop = this.handleCrop.bind(this);\n this.handleDropRejected = this.handleDropRejected.bind(this);\n this.cancelCrop = this.cancelCrop.bind(this);\n this.rotatableCrop = this.rotatableCrop.bind(this);\n this.handleImageLoaded = this.handleImageLoaded.bind(this);\n this.handleFrameImageLoaded = this.handleFrameImageLoaded.bind(this);\n this.startUpload = this.startUpload.bind(this);\n this.stopUpload = this.stopUpload.bind(this);\n this.toggleUpload = this.toggleUpload.bind(this);\n this.tick = this.tick.bind(this);\n this.onChange = this.onChange.bind(this);\n this.addFiles = this.addFiles.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handlePaste = this.handlePaste.bind(this);\n this.syncAutoFill = this.syncAutoFill.bind(this);\n }\n\n componentDidMount() {\n this.syncAutoFill();\n }\n\n componentDidUpdate(prevProps: ImageProps) {\n const props = this.props;\n\n if (prevProps.value !== props.value && this.emitValue !== props.value) {\n const value: string | Array<string | FileValue> | FileValue = props.value;\n const multiple = props.multiple;\n const joinValues = props.joinValues;\n const delimiter = props.delimiter as string;\n\n let files: Array<FileValue> = [];\n\n if (value) {\n files = (\n Array.isArray(value)\n ? value\n : joinValues && typeof value === 'string' && multiple\n ? (value as string).split(delimiter)\n : [value]\n )\n .map(item => {\n let obj = ImageControl.valueToFile(item, props) as FileValue;\n let org;\n\n if (\n obj &&\n (org = find(\n this.files,\n item => (item as FileValue).value === obj.value\n ))\n ) {\n obj = {\n ...org,\n ...obj,\n id: org.id || obj.id\n };\n }\n\n return obj;\n })\n .filter(item => item);\n }\n\n this.setState(\n {\n files: (this.files = files)\n },\n this.syncAutoFill\n );\n } else if (prevProps.value !== props.value && !this.initAutoFill) {\n this.initAutoFill = true;\n this.syncAutoFill();\n }\n\n if (prevProps.crop !== props.crop) {\n this.setState({\n crop: this.buildCrop(props)\n });\n }\n }\n\n componentWillUnmount() {\n this.unmounted = true;\n }\n\n buildCrop(props: ImageProps) {\n let crop = props.crop;\n const __ = this.props.translate;\n\n if (crop && props.multiple) {\n props.env && props.env.alert && props.env.alert(__('Image.configError'));\n return null;\n }\n\n if (crop === true) {\n crop = {};\n }\n\n if (crop) {\n crop = {\n aspectRatio: undefined, // 默认不限制\n guides: true,\n dragMode: 'move',\n viewMode: 1,\n rotatable: true,\n scalable: true,\n ...crop\n };\n }\n\n return crop;\n }\n\n handleDropRejected(\n rejectedFiles: FileRejection[],\n evt: React.DragEvent<any>\n ) {\n if (evt.type !== 'change' && evt.type !== 'drop') {\n return;\n }\n const {multiple, env, accept, translate: __} = this.props;\n\n const files = rejectedFiles.map(fileRejection => ({\n ...fileRejection.file,\n state: 'invalid',\n id: guid(),\n name: fileRejection.file.name\n }));\n\n // this.setState({\n // files: this.files = multiple\n // ? this.files.concat(files)\n // : this.files.length\n // ? this.files\n // : files.slice(0, 1)\n // });\n\n env.alert(\n __('File.invalidType', {\n files: files.map((file: any) => `「${file.name}」`).join(' '),\n accept\n })\n );\n }\n\n startUpload(retry: boolean = false) {\n if (this.state.uploading) {\n return;\n }\n\n this.setState(\n {\n uploading: true,\n locked: true,\n files: (this.files = this.files.map(file => {\n if (retry && file.state === 'error') {\n file.state = 'pending';\n file.progress = 0;\n }\n\n return file;\n }))\n },\n this.tick\n );\n }\n\n toggleUpload() {\n return this.state.uploading ? this.stopUpload() : this.startUpload();\n }\n\n stopUpload() {\n if (!this.state.uploading) {\n return;\n }\n\n this.setState({\n uploading: false\n });\n }\n\n tick() {\n if (this.current || !this.state.uploading) {\n return;\n }\n\n const env = this.props.env;\n const __ = this.props.translate;\n const file = find(this.files, item => item.state === 'pending') as FileX;\n if (file) {\n this.current = file;\n\n file.state = 'uploading';\n this.setState(\n {\n files: (this.files = this.files.concat())\n },\n () =>\n this.sendFile(\n file as FileX,\n (error, file, obj) => {\n const files = this.files.concat();\n const idx = files.indexOf(file);\n\n if (!~idx) {\n return;\n }\n\n let newFile: FileX | FileValue = file;\n\n if (error) {\n newFile.state =\n file.state !== 'uploading' ? file.state : 'error';\n newFile.error = error;\n\n if (!this.props.multiple && newFile.state === 'invalid') {\n files.splice(idx, 1);\n this.current = null;\n\n return this.setState(\n {\n files: (this.files = files),\n error: error\n },\n this.tick\n );\n }\n\n env.notify('error', error || __('File.errorRetry'));\n } else {\n newFile = {\n name: file.name || this.state.cropFileName,\n ...obj,\n preview: file.preview\n } as FileValue;\n }\n files.splice(idx, 1, newFile);\n this.current = null;\n this.setState(\n {\n files: (this.files = files)\n },\n this.tick\n );\n },\n progress => {\n const files = this.files.concat();\n const idx = files.indexOf(file);\n\n if (!~idx) {\n return;\n }\n\n // file 是个非 File 对象,先不copy了直接改。\n file.progress = progress;\n this.setState({\n files: (this.files = files)\n });\n }\n )\n );\n } else {\n this.setState(\n {\n uploading: false,\n locked: false\n },\n () => {\n this.onChange(!!this.resolve, false);\n\n if (this.resolve) {\n this.resolve(\n this.files.some(file => file.state === 'error')\n ? __('File.errorRetry')\n : null\n );\n this.resolve = undefined;\n }\n }\n );\n }\n }\n\n async removeFile(file: FileValue, index: number) {\n const files = this.files.concat();\n const dispatcher = await this.dispatchEvent('remove', file);\n if (dispatcher?.prevented) {\n return;\n }\n this.removeFileCanelExecutor(file, true);\n files.splice(index, 1);\n\n const isUploading = this.current === file;\n if (isUploading) {\n this.current = null;\n }\n\n this.setState(\n {\n files: (this.files = files)\n },\n isUploading ? this.tick : this.onChange\n );\n }\n\n previewImage(file: FileX, index: number, e: React.MouseEvent<any>) {\n const {onImageEnlarge} = this.props;\n\n if (onImageEnlarge) {\n const files = this.files;\n e.preventDefault();\n\n onImageEnlarge({\n src: (file.preview || file.url) as string,\n originalSrc: (file.preview || file.url) as string,\n index,\n list: files.map(file => ({\n src: (file.preview || file.url) as string,\n originalSrc: (file.preview || file.url) as string,\n title: file.name || getNameFromUrl(file.value || file.url)\n }))\n });\n }\n }\n\n editImage(index: number) {\n const files = this.files;\n\n this.setState({\n cropFile: {\n preview: files[index].preview || (files[index].url as string),\n name: files[index].name,\n state: 'init'\n },\n cropFileName: files[index].name\n });\n }\n\n async onChange(changeImmediately?: boolean, isFileChange = true) {\n const {\n multiple,\n onChange,\n joinValues,\n extractValue,\n delimiter,\n valueField\n } = this.props;\n\n const files = this.files.filter(\n file => file.state == 'uploaded' || file.state == 'init'\n );\n\n let newValue: any = files.length\n ? joinValues\n ? files[0].value\n : files[0]\n : '';\n\n if (multiple) {\n newValue = joinValues\n ? files.map(item => item.value).join(delimiter)\n : extractValue\n ? files.map(item => item.value)\n : files;\n } else {\n newValue = joinValues\n ? newValue.value || newValue\n : extractValue\n ? newValue[valueField || 'value']\n : newValue;\n }\n if (isFileChange) {\n const dispatcher = await this.dispatchEvent('change');\n if (dispatcher?.prevented) {\n return;\n }\n }\n\n onChange((this.emitValue = newValue || ''), undefined, changeImmediately);\n this.syncAutoFill();\n }\n\n syncAutoFill() {\n const {autoFill, multiple, onBulkChange, data, name} = this.props;\n // 排除自身的字段,否则会无限更新state\n const excludeSelfAutoFill = omit(autoFill, name || '');\n\n if (!isEmpty(excludeSelfAutoFill) && onBulkChange && this.initAutoFill) {\n const files = this.state.files.filter(\n file => ~['uploaded', 'init', 'ready'].indexOf(file.state as string)\n );\n const toSync = dataMapping(\n excludeSelfAutoFill,\n multiple\n ? {\n items: files\n }\n : files[0]\n );\n\n Object.keys(toSync).forEach(key => {\n if (isPlainObject(toSync[key]) && isPlainObject(data[key])) {\n toSync[key] = merge({}, data[key], toSync[key]);\n }\n });\n onBulkChange(toSync);\n }\n }\n\n handleSelect() {\n this.dropzone.current && this.dropzone.current.open();\n }\n\n handleRetry(index: number) {\n const files = this.files.concat();\n const file = files[index];\n\n if (file.state !== 'invalid' && file.state !== 'error') {\n return;\n }\n\n file.state = 'pending';\n file.progress = 0;\n\n this.setState(\n {\n files: files\n },\n this.startUpload\n );\n }\n\n handleDrop(files: Array<FileX>) {\n const {multiple, crop} = this.props;\n\n if (crop && !multiple) {\n const file = files[0] as any;\n if (!file.preview || !file.url) {\n file.preview = window.URL.createObjectURL(file);\n }\n\n return this.setState({\n cropFile: file,\n cropFileName: file.name\n });\n }\n\n this.addFiles(files);\n }\n\n handlePaste(e: React.ClipboardEvent<any>) {\n const event = e.nativeEvent as any;\n const files: Array<FileX> = [];\n const items = event.clipboardData.items;\n const accept = this.props.accept || '*';\n\n [].slice.call(items).forEach((item: DataTransferItem) => {\n let blob: FileX;\n\n if (\n item.kind !== 'file' ||\n !(blob = item.getAsFile() as File) ||\n !accepts(blob, accept)\n ) {\n return;\n }\n\n blob.id = guid();\n files.push(blob);\n });\n\n this.handleDrop(files);\n }\n\n handleCrop() {\n const {cropFormat, cropQuality} = this.props;\n this.cropper.getCroppedCanvas().toBlob(\n (file: File) => {\n this.addFiles([file]);\n this.setState({\n cropFile: undefined,\n locked: false,\n lockedReason: ''\n });\n },\n cropFormat || 'image/png',\n cropQuality || 1\n );\n }\n\n cancelCrop() {\n this.setState(\n {\n cropFile: undefined,\n cropFileName: undefined,\n locked: false,\n lockedReason: ''\n },\n this.onChange\n );\n }\n\n rotatableCrop() {\n this.cropper.rotate(45);\n }\n\n addFiles(files: Array<FileX>) {\n if (!files.length) {\n return;\n }\n\n const {multiple, maxLength, maxSize, accept, translate: __} = this.props;\n let currentFiles = this.files;\n\n if (!multiple && currentFiles.length) {\n currentFiles = [];\n }\n\n const allowed =\n (multiple\n ? maxLength\n ? maxLength\n : files.length + currentFiles.length\n : 1) - currentFiles.length;\n const inputFiles: Array<FileX> = [];\n\n [].slice.call(files, 0, allowed).forEach((file: FileX) => {\n if (maxSize && file.size > maxSize) {\n this.props.env.alert(\n __('File.maxSize', {\n filename: file.name,\n actualSize: ImageControl.formatFileSize(file.size),\n maxSize: ImageControl.formatFileSize(maxSize)\n })\n );\n return;\n }\n\n file.state = 'pending';\n file.id = guid();\n if (!file.preview || !file.url) {\n file.preview = URL.createObjectURL(file);\n }\n inputFiles.push(file);\n });\n\n if (!inputFiles.length) {\n return;\n }\n\n this.setState(\n {\n error: undefined,\n files: (this.files = currentFiles.concat(inputFiles)),\n locked: true\n },\n () => {\n const {autoUpload} = this.props;\n\n if (autoUpload) {\n this.startUpload();\n }\n }\n );\n this.dispatchEvent('change');\n }\n\n sendFile(\n file: FileX,\n cb: (error: null | string, file: FileX, obj?: FileValue) => void,\n onProgress: (progress: number) => void\n ) {\n const {limit, translate: __} = this.props;\n\n if (!limit) {\n return this._upload(file, cb, onProgress);\n }\n\n const image = new Image();\n image.onload = async () => {\n const width = image.width;\n const height = image.height;\n let error = '';\n\n if (\n (limit.width && limit.width != width) ||\n (limit.height && limit.height != height)\n ) {\n error = __('Image.sizeNotEqual', {\n info: ImageControl.sizeInfo(limit.width, limit.height, __)\n });\n } else if (\n (limit.maxWidth && limit.maxWidth < width) ||\n (limit.maxHeight && limit.maxHeight < height)\n ) {\n error = __('Image.limitMax', {\n info: ImageControl.sizeInfo(limit.maxWidth, limit.maxHeight, __)\n });\n } else if (\n (limit.minWidth && limit.minWidth > width) ||\n (limit.minHeight && limit.minHeight > height)\n ) {\n error = __('Image.limitMin', {\n info: ImageControl.sizeInfo(limit.minWidth, limit.minHeight, __)\n });\n } else if (\n limit.aspectRatio &&\n Math.abs(width / height - limit.aspectRatio) > 0.01\n ) {\n error = __(limit.aspectRatioLabel || 'Image.limitRatio', {\n ratio: (+limit.aspectRatio).toFixed(2)\n });\n }\n\n if (error) {\n file.state = 'invalid';\n const dispatcher = await this.dispatchEvent('fail', {file, error});\n if (dispatcher?.prevented) {\n return;\n }\n cb(error, file);\n } else {\n this._upload(file, cb, onProgress);\n }\n };\n image.src = (file.preview || file.url) as string;\n }\n\n _upload(\n file: FileX,\n cb: (error: null | string, file: Blob, obj?: FileValue) => void,\n onProgress: (progress: number) => void\n ) {\n const __ = this.props.translate;\n this._send(file, this.props.receiver as string, {}, onProgress)\n .then(async (ret: Payload) => {\n if (ret.status && (ret as any).status !== '0') {\n throw new Error(ret.msg || __('File.errorRetry'));\n }\n\n const obj: FileValue = {\n ...ret.data,\n state: 'uploaded'\n };\n obj.value = obj.value || obj.url;\n\n const dispatcher = await this.dispatchEvent('success', obj);\n if (dispatcher?.prevented) {\n return;\n }\n cb(null, file, obj);\n })\n .catch(async error => {\n const dispatcher = await this.dispatchEvent('fail', {\n file,\n error\n });\n if (dispatcher?.prevented) {\n return;\n }\n cb(error.message || __('File.errorRetry'), file);\n });\n }\n\n async _send(\n file: Blob,\n receiver: string,\n params: object,\n onProgress: (progress: number) => void\n ): Promise<Payload> {\n const fd = new FormData();\n const data = this.props.data;\n const api = buildApi(receiver, createObject(data, params), {\n method: 'post'\n });\n const fileField = this.props.fileField || 'file';\n\n const idx = api.url.indexOf('?');\n\n if (~idx && params) {\n params = {\n ...qsparse(api.url.substring(idx + 1)),\n ...params\n };\n api.url = api.url.substring(0, idx) + '?' + qsstringify(params);\n } else if (params) {\n api.url += '?' + qsstringify(params);\n }\n\n if (api.data) {\n qsstringify(api.data)\n .split('&')\n .filter(item => item !== '')\n .forEach(item => {\n let parts = item.split('=');\n fd.append(parts[0], decodeURIComponent(parts[1]));\n });\n }\n\n // Note: File类型字段放在后面,可以支持第三方云存储鉴权\n fd.append(fileField, file, (file as File).name || this.state.cropFileName);\n\n const env = this.props.env;\n\n if (!env || !env.fetcher) {\n throw new Error('fetcher is required');\n }\n\n try {\n return await env.fetcher(api, fd, {\n method: 'post',\n cancelExecutor: (cancelExecutor: () => void) => {\n // 记录取消器,取消的时候要调用\n this.fileUploadCancelExecutors.push({\n file: file,\n executor: cancelExecutor\n });\n },\n onUploadProgress: (event: {loaded: number; total: number}) =>\n onProgress(event.loaded / event.total)\n });\n } finally {\n this.removeFileCanelExecutor(file);\n }\n }\n\n removeFileCanelExecutor(file: any, execute = false) {\n this.fileUploadCancelExecutors = this.fileUploadCancelExecutors.filter(\n item => {\n if (execute && item.file === file) {\n item.executor();\n }\n\n return item.file !== file;\n }\n );\n }\n\n handleClick() {\n (this.refs.dropzone as any).open();\n }\n\n handleImageLoaded(index: number, e: React.UIEvent<any>) {\n const imgDom = e.currentTarget;\n const img = new Image();\n img.onload = () => {\n delete (img as any).onload;\n const files = this.files.concat();\n const file = files[index];\n\n if (!file) {\n return;\n }\n\n file.info = {\n ...file.info,\n width: img.width,\n height: img.height\n };\n\n files.splice(index, 1, file);\n const needUploading = !!(\n this.current || find(files, file => file.state === 'pending')\n );\n\n this.unmounted ||\n this.setState(\n {\n files: (this.files = files)\n },\n !needUploading ? this.onChange : undefined\n );\n };\n img.src = imgDom.src;\n }\n\n handleFrameImageLoaded(e: React.UIEvent<any>) {\n const imgDom = e.currentTarget;\n const img = new Image();\n const {clientHeight} = this.frameImageRef.current;\n\n const _this = this;\n img.onload = function () {\n const ratio = (this as any).width / (this as any).height;\n const finalWidth = (ratio * (clientHeight - 2)).toFixed(2);\n _this.setState({\n frameImageWidth: +finalWidth\n });\n };\n img.src = imgDom.src;\n }\n\n validate(): any {\n const __ = this.props.translate;\n\n if (this.state.locked && this.state.lockedReason) {\n return this.state.lockedReason;\n } else if (this.state.cropFile) {\n return new Promise(resolve => {\n this.resolve = resolve;\n this.handleCrop();\n });\n } else if (\n this.state.uploading ||\n this.files.some(item => item.state === 'pending')\n ) {\n return new Promise(resolve => {\n this.resolve = resolve;\n this.startUpload();\n });\n } else if (this.files.some(item => item.state === 'error')) {\n return __('File.errorRetry');\n }\n }\n\n async dispatchEvent(e: string, data?: Record<string, any>) {\n const {dispatchEvent} = this.props;\n data = data ? data : this.files;\n return dispatchEvent(e, createObject(this.props.data, {file: data}));\n }\n\n // 动作\n doAction(action: Action, data: object, throwErrors: boolean) {\n const {onChange} = this.props;\n if (action.actionType === 'clear') {\n this.files = [];\n onChange('');\n }\n }\n\n render() {\n const {\n className,\n classnames: cx,\n placeholder,\n disabled,\n multiple,\n accept,\n maxLength,\n autoUpload,\n hideUploadButton,\n thumbMode,\n thumbRatio,\n reCropable,\n frameImage,\n fixedSize,\n fixedSizeClassName,\n translate: __\n } = this.props;\n const {files, error, crop, uploading, cropFile, frameImageWidth} =\n this.state;\n let frameImageStyle: any = {};\n if (fixedSizeClassName && frameImageWidth && fixedSize) {\n frameImageStyle.width = frameImageWidth;\n }\n const filterFrameImage = filter(frameImage, this.props.data, '| raw');\n\n const hasPending = files.some(file => file.state == 'pending');\n return (\n <div className={cx(`ImageControl`, className)}>\n {cropFile ? (\n <div className={cx('ImageControl-cropperWrapper')}>\n <Suspense fallback={<div>...</div>}>\n <Cropper\n {...crop}\n onInitialized={instance => {\n this.cropper = instance;\n }}\n src={cropFile.preview}\n />\n </Suspense>\n <div className={cx('ImageControl-croperToolbar')}>\n {crop.rotatable && (\n <a\n className={cx('ImageControl-cropRotatable')}\n onClick={this.rotatableCrop}\n data-tooltip={__('rotate')}\n data-position=\"left\"\n >\n <Icon icon=\"retry\" className=\"icon\" />\n </a>\n )}\n <a\n className={cx('ImageControl-cropCancel')}\n onClick={this.cancelCrop}\n data-tooltip={__('cancel')}\n data-position=\"left\"\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n <a\n className={cx('ImageControl-cropConfirm')}\n onClick={this.handleCrop}\n data-tooltip={__('confirm')}\n data-position=\"left\"\n >\n <Icon icon=\"check\" className=\"icon\" />\n </a>\n </div>\n </div>\n ) : (\n <DropZone\n key=\"drop-zone\"\n ref={this.dropzone}\n onDrop={this.handleDrop}\n onDropRejected={this.handleDropRejected}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n >\n {({\n getRootProps,\n getInputProps,\n isDragActive,\n isDragAccept,\n isDragReject,\n isFocused\n }) => (\n <div\n {...getRootProps({\n onClick: preventEvent,\n onPaste: this.handlePaste,\n className: cx('ImageControl-dropzone', {\n 'is-disabled': disabled,\n 'is-empty': !files.length,\n 'is-active': isDragActive\n })\n })}\n >\n <input {...getInputProps()} />\n\n {isDragActive || isDragAccept || isDragReject ? (\n <div\n className={cx('ImageControl-acceptTip', {\n 'is-accept': isDragAccept,\n 'is-reject': isDragReject\n })}\n >\n {__('Image.dragDrop')}\n </div>\n ) : (\n <>\n {files && files.length\n ? files.map((file, key) => (\n <div\n key={file.id || key}\n className={cx(\n 'ImageControl-item',\n {\n 'is-uploaded': file.state !== 'uploading',\n 'is-invalid':\n file.state === 'error' ||\n file.state === 'invalid'\n },\n fixedSize ? 'ImageControl-fixed-size' : '',\n fixedSize ? fixedSizeClassName : ''\n )}\n style={frameImageStyle}\n >\n {file.state === 'invalid' ||\n file.state === 'error' ? (\n <div className={cx('Image--thumb')}>\n <div className={cx('Image-thumbWrap')}>\n <div\n className={cx(\n 'Image-thumb',\n 'ImageControl-filename'\n )}\n >\n <Icon icon=\"image\" className=\"icon\" />\n <span\n title={\n file.name ||\n getNameFromUrl(file.value || file.url)\n }\n >\n {file.name ||\n getNameFromUrl(file.value || file.url)}\n </span>\n </div>\n\n <div className={cx('Image-overlay')}>\n <a\n data-tooltip={__('File.repick')}\n data-position=\"bottom\"\n onClick={this.handleRetry.bind(this, key)}\n >\n <Icon icon=\"refresh\" className=\"icon\" />\n </a>\n\n {!disabled ? (\n <a\n data-tooltip={__('Select.clear')}\n data-position=\"bottom\"\n onClick={this.removeFile.bind(\n this,\n file,\n key\n )}\n >\n <Icon icon=\"remove\" className=\"icon\" />\n </a>\n ) : null}\n </div>\n </div>\n </div>\n ) : file.state === 'uploading' ? (\n <>\n <a\n onClick={this.removeFile.bind(\n this,\n file,\n key\n )}\n key=\"clear\"\n className={cx('ImageControl-itemClear')}\n data-tooltip={__('Select.clear')}\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n <div\n key=\"info\"\n className={cx(\n 'ImageControl-itemInfo',\n fixedSize ? 'ImageControl-fixed-size' : '',\n fixedSize ? fixedSizeClassName : ''\n )}\n >\n <div className={cx('ImageControl-progress')}>\n <span\n style={{\n width: `${Math.round(\n file.progress * 100\n )}%`\n }}\n className={cx(\n 'ImageControl-progressValue'\n )}\n />\n </div>\n <p>{__('File.uploading')}</p>\n </div>\n </>\n ) : (\n <>\n <ImageComponent\n key=\"image\"\n className={cx(\n 'ImageControl-image',\n fixedSize ? 'Image-thumb--fixed-size' : ''\n )}\n onLoad={this.handleImageLoaded.bind(\n this,\n key\n )}\n src={file.preview || file.url}\n alt={file.name}\n thumbMode={thumbMode}\n thumbRatio={thumbRatio}\n overlays={\n <>\n {file.info ? (\n [\n <div key=\"info\">\n {file.info.width} x{' '}\n {file.info.height}\n </div>,\n file.info.len ? (\n <div key=\"size\">\n {ImageControl.formatFileSize(\n file.info.len\n )}\n </div>\n ) : null\n ]\n ) : (\n <div>...</div>\n )}\n\n <a\n data-tooltip={__('Image.zoomIn')}\n data-position=\"bottom\"\n target=\"_blank\"\n rel=\"noopener\"\n href={file.url || file.preview}\n onClick={this.previewImage.bind(\n this,\n file,\n key\n )}\n >\n <Icon icon=\"view\" className=\"icon\" />\n </a>\n\n {!!crop &&\n reCropable !== false &&\n !disabled ? (\n <a\n data-tooltip={__('Image.crop')}\n data-position=\"bottom\"\n onClick={this.editImage.bind(\n this,\n key\n )}\n >\n <Icon\n icon=\"pencil\"\n className=\"icon\"\n />\n </a>\n ) : null}\n {!disabled ? (\n <a\n data-tooltip={__('Select.clear')}\n data-position=\"bottom\"\n onClick={this.removeFile.bind(\n this,\n file,\n key\n )}\n >\n <Icon\n icon=\"remove\"\n className=\"icon\"\n />\n </a>\n ) : null}\n <a\n data-tooltip={\n file.name ||\n getNameFromUrl(file.value || file.url)\n }\n data-position=\"bottom\"\n target=\"_blank\"\n >\n <Icon icon=\"info\" className=\"icon\" />\n </a>\n </>\n }\n />\n </>\n )}\n </div>\n ))\n : null}\n\n {(multiple && (!maxLength || files.length < maxLength)) ||\n (!multiple && !files.length) ? (\n <label\n className={cx(\n 'ImageControl-addBtn',\n {\n 'is-disabled': disabled\n },\n fixedSize ? 'ImageControl-fixed-size' : '',\n fixedSize ? fixedSizeClassName : ''\n )}\n style={frameImageStyle}\n onClick={this.handleSelect}\n data-tooltip={__(placeholder)}\n data-position=\"right\"\n ref={this.frameImageRef}\n >\n {filterFrameImage ? (\n <ImageComponent\n key=\"upload-default-image\"\n src={filterFrameImage}\n className={cx(\n fixedSize ? 'Image-thumb--fixed-size' : ''\n )}\n onLoad={this.handleFrameImageLoaded.bind(this)}\n thumbMode={thumbMode}\n thumbRatio={thumbRatio}\n />\n ) : (\n <>\n <Icon icon=\"plus\" className=\"icon\" />\n <span>{__('File.upload')}</span>\n </>\n )}\n\n {isFocused ? (\n <span className={cx('ImageControl-pasteTip')}>\n {__('Image.pasteTip')}\n </span>\n ) : null}\n </label>\n ) : null}\n\n {!autoUpload && !hideUploadButton && files.length ? (\n <Button\n level=\"default\"\n className={cx('ImageControl-uploadBtn')}\n disabled={!hasPending}\n onClick={this.toggleUpload}\n >\n {__(uploading ? 'File.pause' : 'File.start')}\n </Button>\n ) : null}\n\n {error ? (\n <div className={cx('ImageControl-errorMsg')}>{error}</div>\n ) : null}\n </>\n )}\n </div>\n )}\n </DropZone>\n )}\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-image',\n sizeMutable: false\n})\nexport class ImageControlRenderer extends ImageControl {}\n"
|
11
|
+
"import React, {Suspense} from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\n// import 'cropperjs/dist/cropper.css';\nconst Cropper = React.lazy(() => import('react-cropper'));\nimport DropZone from 'react-dropzone';\nimport {FileRejection} from 'react-dropzone';\nimport 'blueimp-canvastoblob';\nimport find from 'lodash/find';\nimport {Payload, Action} from '../../types';\nimport {buildApi} from '../../utils/api';\nimport {\n createObject,\n qsstringify,\n guid,\n isEmpty,\n qsparse\n} from '../../utils/helper';\nimport {Icon} from '../../components/icons';\nimport Button from '../../components/Button';\nimport accepts from 'attr-accept';\nimport {getNameFromUrl} from './InputFile';\nimport ImageComponent, {ImageThumbProps} from '../Image';\nimport {TranslateFn} from '../../locale';\nimport {dataMapping} from '../../utils/tpl-builtin';\nimport {\n SchemaApi,\n SchemaClassName,\n SchemaTokenizeableString,\n SchemaUrlPath\n} from '../../Schema';\nimport {filter} from '../../utils/tpl';\nimport isPlainObject from 'lodash/isPlainObject';\nimport merge from 'lodash/merge';\nimport omit from 'lodash/omit';\n\n/**\n * Image 图片上传控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/image\n */\nexport interface ImageControlSchema extends FormBaseControl {\n /**\n * 指定为图片上传控件\n */\n type: 'input-image';\n\n /**\n * 默认展示图片的链接\n */\n src?: SchemaUrlPath;\n\n /**\n * 默认展示图片的类名\n */\n imageClassName?: string;\n\n /**\n * 配置接收的图片类型\n *\n * 建议直接填写文件后缀\n * 如:.txt,.csv\n *\n * 多个类型用逗号隔开。\n */\n accept?: string;\n\n /**\n * 默认都是通过用户选择图片后上传返回图片地址,如果开启此选项,则可以允许用户图片地址。\n */\n allowInput?: boolean;\n\n /**\n * 是否自动开始上传\n */\n autoUpload?: boolean;\n\n /**\n * 选择图片按钮的 CSS 类名\n */\n btnClassName?: SchemaClassName;\n\n /**\n * 上传按钮的 CSS 类名\n */\n btnUploadClassName?: SchemaClassName;\n\n /**\n * @deprecated\n */\n compress?: boolean;\n\n /**\n * @deprecated\n */\n compressOptions?: {\n maxHeight?: number;\n maxWidth?: number;\n };\n\n crop?:\n | boolean\n | {\n /**\n * 默认 `1` 即 `1:1`\n *\n * 留空将不限制\n */\n aspectRatio?: number;\n\n guides?: boolean;\n dragMode?: string;\n viewMode?: number;\n rotatable?: boolean;\n scalable?: boolean;\n };\n\n /**\n * 裁剪后的图片类型\n */\n cropFormat?: string;\n\n /**\n * 裁剪后的质量\n */\n cropQuality?: number;\n\n /**\n * 是否允许二次裁剪。\n */\n reCropable?: boolean;\n\n /**\n * 是否隐藏上传按钮\n */\n hideUploadButton?: boolean;\n\n /**\n * 限制图片大小,超出不让上传。\n */\n limit?: {\n /**\n * 比率不对时的提示文字\n */\n aspectRatioLabel?: string;\n /**\n * 限制比率\n */\n aspectRatio?: number;\n\n /**\n * 限制图片高度\n */\n height?: number;\n\n /**\n * 限制图片宽度\n */\n width?: number;\n\n /**\n * 限制图片最大高度\n */\n maxHeight?: number;\n\n /**\n * 限制图片最大宽度\n */\n maxWidth?: number;\n\n /**\n * 限制图片最小高度\n */\n minHeight?: number;\n\n /**\n * 限制图片最小宽度\n */\n minWidth?: number;\n };\n\n /**\n * 最多的个数\n */\n maxLength?: number;\n\n /**\n * 默认没有限制,当设置后,文件大小大于此值将不允许上传。\n */\n maxSize?: number;\n\n /**\n * 默认 `/api/upload` 如果想自己存储,请设置此选项。\n */\n receiver?: SchemaApi;\n\n /**\n * 默认为 false, 开启后,允许用户输入压缩选项。\n *\n * @deprecated\n */\n showCompressOptions?: boolean;\n\n /**\n * 是否为多选\n */\n multiple?: boolean;\n\n /**\n * 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,否则,整个选项对象都会作为该表单项的值提交。\n * 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。\n */\n joinValues?: boolean;\n\n /**\n * 分割符\n */\n delimiter?: string;\n\n /**\n * 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。\n */\n extractValue?: boolean;\n\n /**\n * 清除时设置的值\n */\n resetValue?: any;\n\n /**\n * 缩路图展示模式\n */\n thumbMode?: 'w-full' | 'h-full' | 'contain' | 'cover';\n\n /**\n * 缩路图展示比率。\n */\n thumbRatio?: '1:1' | '4:3' | '16:9';\n\n /**\n * 上传后把其他字段同步到表单内部。\n */\n autoFill?: {\n [propName: string]: SchemaTokenizeableString;\n };\n\n /**\n * 初始化时是否把其他字段同步到表单内部。\n */\n initAutoFill?: boolean;\n\n /**\n * 默认占位图图片地址\n */\n frameImage?: SchemaUrlPath;\n\n /**\n * 是否开启固定尺寸\n */\n fixedSize?: boolean;\n\n /**\n * 固定尺寸的 CSS类名\n */\n fixedSizeClassName?: SchemaClassName;\n}\n\nlet preventEvent = (e: any) => e.stopPropagation();\n\nexport interface ImageProps\n extends FormControlProps,\n Omit<\n ImageControlSchema,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {\n onImageEnlarge?: (\n info: Pick<ImageThumbProps, 'src' | 'originalSrc' | 'title' | 'caption'> & {\n index?: number;\n list?: Array<\n Pick<ImageThumbProps, 'src' | 'originalSrc' | 'title' | 'caption'>\n >;\n }\n ) => void;\n}\n\nexport interface ImageState {\n uploading: boolean;\n locked: boolean;\n lockedReason?: string;\n files: Array<FileValue | FileX>;\n crop?: any;\n error?: string;\n cropFile?: FileValue;\n cropFileName?: string; // 主要是用于后续上传的时候获得用户名\n submitOnChange?: boolean;\n frameImageWidth?: number;\n}\n\nexport interface FileValue {\n value?: any;\n state: 'init' | 'error' | 'pending' | 'uploading' | 'uploaded' | 'invalid';\n url?: string;\n error?: string;\n info?: {\n width: number;\n height: number;\n len?: number;\n };\n [propName: string]: any;\n}\n\nexport interface FileX extends File {\n id?: string | number;\n preview?: string;\n state?: 'init' | 'error' | 'pending' | 'uploading' | 'uploaded' | 'invalid';\n progress?: number;\n [propName: string]: any;\n}\n\nexport type InputImageRendererEvent = 'change' | 'success' | 'fail' | 'remove';\nexport type InputImageRendererAction = 'clear';\n\nexport default class ImageControl extends React.Component<\n ImageProps,\n ImageState\n> {\n static defaultProps = {\n limit: undefined,\n accept: 'image/jpeg, image/jpg, image/png, image/gif',\n receiver: '/api/upload',\n hideUploadButton: false,\n placeholder: 'Image.placeholder',\n joinValues: true,\n extractValue: false,\n delimiter: ',',\n autoUpload: true,\n multiple: false\n };\n\n static formatFileSize(\n size: number | string,\n units = [' B', ' KB', ' M', ' G']\n ) {\n size = parseInt(size as string, 10) || 0;\n\n while (size > 1024 && units.length > 1) {\n size /= 1024;\n units.shift();\n }\n\n return size.toFixed(2) + units[0];\n }\n\n static valueToFile(\n value: string | object,\n props?: ImageProps\n ): FileValue | undefined {\n return value\n ? {\n ...(typeof value === 'string'\n ? {\n value,\n url: value,\n id: guid()\n }\n : value),\n state: 'init'\n }\n : undefined;\n }\n\n static sizeInfo(\n width: number | undefined,\n height: number | undefined,\n __: TranslateFn\n ): string {\n if (!width) {\n return __('Image.height', {height: height});\n } else if (!height) {\n return __('Image.width', {width: width});\n }\n\n return __('Image.size', {width, height});\n }\n\n state: ImageState = {\n uploading: false,\n locked: false,\n files: []\n };\n\n files: Array<FileValue | FileX> = [];\n fileUploadCancelExecutors: Array<{\n file: any;\n executor: () => void;\n }> = [];\n cropper: Cropper;\n dropzone = React.createRef<any>();\n frameImageRef = React.createRef<any>();\n current: FileValue | FileX | null = null;\n resolve?: (value?: any) => void;\n emitValue: any;\n unmounted = false;\n initAutoFill: boolean;\n\n constructor(props: ImageProps) {\n super(props);\n const value: string | Array<string | FileValue> | FileValue = props.value;\n const multiple = props.multiple;\n const joinValues = props.joinValues;\n const delimiter = props.delimiter as string;\n let files: Array<FileValue> = [];\n this.initAutoFill = !!props.initAutoFill;\n\n if (value) {\n // files = (multiple && Array.isArray(value) ? value : joinValues ? (value as string).split(delimiter) : [value])\n files = (\n Array.isArray(value)\n ? value\n : joinValues && typeof value === 'string' && multiple\n ? (value as string).split(delimiter)\n : [value]\n )\n .map(item => ImageControl.valueToFile(item) as FileValue)\n .filter(item => item);\n }\n\n this.state = {\n ...this.state,\n files: (this.files = files),\n crop: this.buildCrop(props),\n frameImageWidth: 0\n };\n\n this.sendFile = this.sendFile.bind(this);\n this.removeFile = this.removeFile.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleCrop = this.handleCrop.bind(this);\n this.handleDropRejected = this.handleDropRejected.bind(this);\n this.cancelCrop = this.cancelCrop.bind(this);\n this.rotatableCrop = this.rotatableCrop.bind(this);\n this.handleImageLoaded = this.handleImageLoaded.bind(this);\n this.handleFrameImageLoaded = this.handleFrameImageLoaded.bind(this);\n this.startUpload = this.startUpload.bind(this);\n this.stopUpload = this.stopUpload.bind(this);\n this.toggleUpload = this.toggleUpload.bind(this);\n this.tick = this.tick.bind(this);\n this.onChange = this.onChange.bind(this);\n this.addFiles = this.addFiles.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handlePaste = this.handlePaste.bind(this);\n this.syncAutoFill = this.syncAutoFill.bind(this);\n }\n\n componentDidMount() {\n this.syncAutoFill();\n }\n\n componentDidUpdate(prevProps: ImageProps) {\n const props = this.props;\n\n if (prevProps.value !== props.value && this.emitValue !== props.value) {\n const value: string | Array<string | FileValue> | FileValue = props.value;\n const multiple = props.multiple;\n const joinValues = props.joinValues;\n const delimiter = props.delimiter as string;\n\n let files: Array<FileValue> = [];\n\n if (value) {\n files = (\n Array.isArray(value)\n ? value\n : joinValues && typeof value === 'string' && multiple\n ? (value as string).split(delimiter)\n : [value]\n )\n .map(item => {\n let obj = ImageControl.valueToFile(item, props) as FileValue;\n let org;\n\n if (\n obj &&\n (org = find(\n this.files,\n item => (item as FileValue).value === obj.value\n ))\n ) {\n obj = {\n ...org,\n ...obj,\n id: org.id || obj.id\n };\n }\n\n return obj;\n })\n .filter(item => item);\n }\n\n this.setState(\n {\n files: (this.files = files)\n },\n this.syncAutoFill\n );\n } else if (prevProps.value !== props.value && !this.initAutoFill) {\n this.initAutoFill = true;\n this.syncAutoFill();\n }\n\n if (prevProps.crop !== props.crop) {\n this.setState({\n crop: this.buildCrop(props)\n });\n }\n }\n\n componentWillUnmount() {\n this.unmounted = true;\n }\n\n buildCrop(props: ImageProps) {\n let crop = props.crop;\n const __ = this.props.translate;\n\n if (crop && props.multiple) {\n props.env && props.env.alert && props.env.alert(__('Image.configError'));\n return null;\n }\n\n if (crop === true) {\n crop = {};\n }\n\n if (crop) {\n crop = {\n aspectRatio: undefined, // 默认不限制\n guides: true,\n dragMode: 'move',\n viewMode: 1,\n rotatable: true,\n scalable: true,\n ...crop\n };\n }\n\n return crop;\n }\n\n handleDropRejected(\n rejectedFiles: FileRejection[],\n evt: React.DragEvent<any>\n ) {\n if (evt.type !== 'change' && evt.type !== 'drop') {\n return;\n }\n const {multiple, env, accept, translate: __} = this.props;\n\n const files = rejectedFiles.map(fileRejection => ({\n ...fileRejection.file,\n state: 'invalid',\n id: guid(),\n name: fileRejection.file.name\n }));\n\n // this.setState({\n // files: this.files = multiple\n // ? this.files.concat(files)\n // : this.files.length\n // ? this.files\n // : files.slice(0, 1)\n // });\n\n env.alert(\n __('File.invalidType', {\n files: files.map((file: any) => `「${file.name}」`).join(' '),\n accept\n })\n );\n }\n\n startUpload(retry: boolean = false) {\n if (this.state.uploading) {\n return;\n }\n\n this.setState(\n {\n uploading: true,\n locked: true,\n files: (this.files = this.files.map(file => {\n if (retry && file.state === 'error') {\n file.state = 'pending';\n file.progress = 0;\n }\n\n return file;\n }))\n },\n this.tick\n );\n }\n\n toggleUpload() {\n return this.state.uploading ? this.stopUpload() : this.startUpload();\n }\n\n stopUpload() {\n if (!this.state.uploading) {\n return;\n }\n\n this.setState({\n uploading: false\n });\n }\n\n tick() {\n if (this.current || !this.state.uploading) {\n return;\n }\n\n const env = this.props.env;\n const __ = this.props.translate;\n const file = find(this.files, item => item.state === 'pending') as FileX;\n if (file) {\n this.current = file;\n\n file.state = 'uploading';\n this.setState(\n {\n files: (this.files = this.files.concat())\n },\n () =>\n this.sendFile(\n file as FileX,\n (error, file, obj) => {\n const files = this.files.concat();\n const idx = files.indexOf(file);\n\n if (!~idx) {\n return;\n }\n\n let newFile: FileX | FileValue = file;\n\n if (error) {\n newFile.state =\n file.state !== 'uploading' ? file.state : 'error';\n newFile.error = error;\n\n if (!this.props.multiple && newFile.state === 'invalid') {\n files.splice(idx, 1);\n this.current = null;\n\n return this.setState(\n {\n files: (this.files = files),\n error: error\n },\n this.tick\n );\n }\n\n env.notify('error', error || __('File.errorRetry'));\n } else {\n newFile = {\n name: file.name || this.state.cropFileName,\n ...obj,\n preview: file.preview\n } as FileValue;\n }\n files.splice(idx, 1, newFile);\n this.current = null;\n this.setState(\n {\n files: (this.files = files)\n },\n this.tick\n );\n },\n progress => {\n const files = this.files.concat();\n const idx = files.indexOf(file);\n\n if (!~idx) {\n return;\n }\n\n // file 是个非 File 对象,先不copy了直接改。\n file.progress = progress;\n this.setState({\n files: (this.files = files)\n });\n }\n )\n );\n } else {\n this.setState(\n {\n uploading: false,\n locked: false\n },\n () => {\n this.onChange(!!this.resolve, false);\n\n if (this.resolve) {\n this.resolve(\n this.files.some(file => file.state === 'error')\n ? __('File.errorRetry')\n : null\n );\n this.resolve = undefined;\n }\n }\n );\n }\n }\n\n async removeFile(file: FileValue, index: number) {\n const files = this.files.concat();\n const dispatcher = await this.dispatchEvent('remove', file);\n if (dispatcher?.prevented) {\n return;\n }\n this.removeFileCanelExecutor(file, true);\n files.splice(index, 1);\n\n const isUploading = this.current === file;\n if (isUploading) {\n this.current = null;\n }\n\n this.setState(\n {\n files: (this.files = files)\n },\n isUploading ? this.tick : this.onChange\n );\n }\n\n previewImage(file: FileX, index: number, e: React.MouseEvent<any>) {\n const {onImageEnlarge} = this.props;\n\n if (onImageEnlarge) {\n const files = this.files;\n e.preventDefault();\n\n onImageEnlarge({\n src: (file.preview || file.url) as string,\n originalSrc: (file.preview || file.url) as string,\n index,\n list: files.map(file => ({\n src: (file.preview || file.url) as string,\n originalSrc: (file.preview || file.url) as string,\n title: file.name || getNameFromUrl(file.value || file.url)\n }))\n });\n }\n }\n\n editImage(index: number) {\n const files = this.files;\n\n this.setState({\n cropFile: {\n preview: files[index].preview || (files[index].url as string),\n name: files[index].name,\n state: 'init'\n },\n cropFileName: files[index].name\n });\n }\n\n async onChange(changeImmediately?: boolean, isFileChange = true) {\n const {\n multiple,\n onChange,\n joinValues,\n extractValue,\n delimiter,\n valueField\n } = this.props;\n\n const files = this.files.filter(\n file => file.state == 'uploaded' || file.state == 'init'\n );\n\n let newValue: any = files.length\n ? joinValues\n ? files[0].value\n : files[0]\n : '';\n\n if (multiple) {\n newValue = joinValues\n ? files.map(item => item.value).join(delimiter)\n : extractValue\n ? files.map(item => item.value)\n : files;\n } else {\n newValue = joinValues\n ? newValue.value || newValue\n : extractValue\n ? newValue[valueField || 'value']\n : newValue;\n }\n if (isFileChange) {\n const dispatcher = await this.dispatchEvent('change');\n if (dispatcher?.prevented) {\n return;\n }\n }\n\n onChange((this.emitValue = newValue || ''), undefined, changeImmediately);\n this.syncAutoFill();\n }\n\n syncAutoFill() {\n const {autoFill, multiple, onBulkChange, data, name} = this.props;\n // 排除自身的字段,否则会无限更新state\n const excludeSelfAutoFill = omit(autoFill, name || '');\n\n if (!isEmpty(excludeSelfAutoFill) && onBulkChange && this.initAutoFill) {\n const files = this.state.files.filter(\n file => ~['uploaded', 'init', 'ready'].indexOf(file.state as string)\n );\n const toSync = dataMapping(\n excludeSelfAutoFill,\n multiple\n ? {\n items: files\n }\n : files[0]\n );\n\n Object.keys(toSync).forEach(key => {\n if (isPlainObject(toSync[key]) && isPlainObject(data[key])) {\n toSync[key] = merge({}, data[key], toSync[key]);\n }\n });\n onBulkChange(toSync);\n }\n }\n\n handleSelect() {\n this.dropzone.current && this.dropzone.current.open();\n }\n\n handleRetry(index: number) {\n const files = this.files.concat();\n const file = files[index];\n\n if (file.state !== 'invalid' && file.state !== 'error') {\n return;\n }\n\n file.state = 'pending';\n file.progress = 0;\n\n this.setState(\n {\n files: files\n },\n this.startUpload\n );\n }\n\n handleDrop(files: Array<FileX>) {\n const {multiple, crop} = this.props;\n\n if (crop && !multiple) {\n const file = files[0] as any;\n if (!file.preview || !file.url) {\n file.preview = window.URL.createObjectURL(file);\n }\n\n return this.setState({\n cropFile: file,\n cropFileName: file.name\n });\n }\n\n this.addFiles(files);\n }\n\n handlePaste(e: React.ClipboardEvent<any>) {\n const event = e.nativeEvent as any;\n const files: Array<FileX> = [];\n const items = event.clipboardData.items;\n const accept = this.props.accept || '*';\n\n [].slice.call(items).forEach((item: DataTransferItem) => {\n let blob: FileX;\n\n if (\n item.kind !== 'file' ||\n !(blob = item.getAsFile() as File) ||\n !accepts(blob, accept)\n ) {\n return;\n }\n\n blob.id = guid();\n files.push(blob);\n });\n\n this.handleDrop(files);\n }\n\n handleCrop() {\n const {cropFormat, cropQuality} = this.props;\n this.cropper.getCroppedCanvas().toBlob(\n (file: File) => {\n this.addFiles([file]);\n this.setState({\n cropFile: undefined,\n locked: false,\n lockedReason: ''\n });\n },\n cropFormat || 'image/png',\n cropQuality || 1\n );\n }\n\n cancelCrop() {\n this.setState(\n {\n cropFile: undefined,\n cropFileName: undefined,\n locked: false,\n lockedReason: ''\n },\n this.onChange\n );\n }\n\n rotatableCrop() {\n this.cropper.rotate(45);\n }\n\n addFiles(files: Array<FileX>) {\n if (!files.length) {\n return;\n }\n\n const {multiple, maxLength, maxSize, accept, translate: __} = this.props;\n let currentFiles = this.files;\n\n if (!multiple && currentFiles.length) {\n currentFiles = [];\n }\n\n const allowed =\n (multiple\n ? maxLength\n ? maxLength\n : files.length + currentFiles.length\n : 1) - currentFiles.length;\n const inputFiles: Array<FileX> = [];\n\n [].slice.call(files, 0, allowed).forEach((file: FileX) => {\n if (maxSize && file.size > maxSize) {\n this.props.env.alert(\n __('File.maxSize', {\n filename: file.name,\n actualSize: ImageControl.formatFileSize(file.size),\n maxSize: ImageControl.formatFileSize(maxSize)\n })\n );\n return;\n }\n\n file.state = 'pending';\n file.id = guid();\n if (!file.preview || !file.url) {\n file.preview = URL.createObjectURL(file);\n }\n inputFiles.push(file);\n });\n\n if (!inputFiles.length) {\n return;\n }\n\n this.setState(\n {\n error: undefined,\n files: (this.files = currentFiles.concat(inputFiles)),\n locked: true\n },\n () => {\n const {autoUpload} = this.props;\n\n if (autoUpload) {\n this.startUpload();\n }\n }\n );\n this.dispatchEvent('change');\n }\n\n sendFile(\n file: FileX,\n cb: (error: null | string, file: FileX, obj?: FileValue) => void,\n onProgress: (progress: number) => void\n ) {\n const {limit, translate: __} = this.props;\n\n if (!limit) {\n return this._upload(file, cb, onProgress);\n }\n\n const image = new Image();\n image.onload = async () => {\n const width = image.width;\n const height = image.height;\n let error = '';\n\n if (\n (limit.width && limit.width != width) ||\n (limit.height && limit.height != height)\n ) {\n error = __('Image.sizeNotEqual', {\n info: ImageControl.sizeInfo(limit.width, limit.height, __)\n });\n } else if (\n (limit.maxWidth && limit.maxWidth < width) ||\n (limit.maxHeight && limit.maxHeight < height)\n ) {\n error = __('Image.limitMax', {\n info: ImageControl.sizeInfo(limit.maxWidth, limit.maxHeight, __)\n });\n } else if (\n (limit.minWidth && limit.minWidth > width) ||\n (limit.minHeight && limit.minHeight > height)\n ) {\n error = __('Image.limitMin', {\n info: ImageControl.sizeInfo(limit.minWidth, limit.minHeight, __)\n });\n } else if (\n limit.aspectRatio &&\n Math.abs(width / height - limit.aspectRatio) > 0.01\n ) {\n error = __(limit.aspectRatioLabel || 'Image.limitRatio', {\n ratio: (+limit.aspectRatio).toFixed(2)\n });\n }\n\n if (error) {\n file.state = 'invalid';\n const dispatcher = await this.dispatchEvent('fail', {file, error});\n if (dispatcher?.prevented) {\n return;\n }\n cb(error, file);\n } else {\n this._upload(file, cb, onProgress);\n }\n };\n image.src = (file.preview || file.url) as string;\n }\n\n _upload(\n file: FileX,\n cb: (error: null | string, file: Blob, obj?: FileValue) => void,\n onProgress: (progress: number) => void\n ) {\n const __ = this.props.translate;\n this._send(file, this.props.receiver as string, {}, onProgress)\n .then(async (ret: Payload) => {\n if (ret.status && (ret as any).status !== '0') {\n throw new Error(ret.msg || __('File.errorRetry'));\n }\n\n const obj: FileValue = {\n ...ret.data,\n state: 'uploaded'\n };\n obj.value = obj.value || obj.url;\n\n const dispatcher = await this.dispatchEvent('success', {\n ...file,\n value: obj.value,\n state: 'uploaded'\n });\n if (dispatcher?.prevented) {\n return;\n }\n cb(null, file, obj);\n })\n .catch(async error => {\n const dispatcher = await this.dispatchEvent('fail', {\n file,\n error\n });\n if (dispatcher?.prevented) {\n return;\n }\n cb(error.message || __('File.errorRetry'), file);\n });\n }\n\n async _send(\n file: Blob,\n receiver: string,\n params: object,\n onProgress: (progress: number) => void\n ): Promise<Payload> {\n const fd = new FormData();\n const data = this.props.data;\n const api = buildApi(receiver, createObject(data, params), {\n method: 'post'\n });\n const fileField = this.props.fileField || 'file';\n\n const idx = api.url.indexOf('?');\n\n if (~idx && params) {\n params = {\n ...qsparse(api.url.substring(idx + 1)),\n ...params\n };\n api.url = api.url.substring(0, idx) + '?' + qsstringify(params);\n } else if (params) {\n api.url += '?' + qsstringify(params);\n }\n\n if (api.data) {\n qsstringify(api.data)\n .split('&')\n .filter(item => item !== '')\n .forEach(item => {\n let parts = item.split('=');\n fd.append(parts[0], decodeURIComponent(parts[1]));\n });\n }\n\n // Note: File类型字段放在后面,可以支持第三方云存储鉴权\n fd.append(fileField, file, (file as File).name || this.state.cropFileName);\n\n const env = this.props.env;\n\n if (!env || !env.fetcher) {\n throw new Error('fetcher is required');\n }\n\n try {\n return await env.fetcher(api, fd, {\n method: 'post',\n cancelExecutor: (cancelExecutor: () => void) => {\n // 记录取消器,取消的时候要调用\n this.fileUploadCancelExecutors.push({\n file: file,\n executor: cancelExecutor\n });\n },\n onUploadProgress: (event: {loaded: number; total: number}) =>\n onProgress(event.loaded / event.total)\n });\n } finally {\n this.removeFileCanelExecutor(file);\n }\n }\n\n removeFileCanelExecutor(file: any, execute = false) {\n this.fileUploadCancelExecutors = this.fileUploadCancelExecutors.filter(\n item => {\n if (execute && item.file === file) {\n item.executor();\n }\n\n return item.file !== file;\n }\n );\n }\n\n handleClick() {\n (this.refs.dropzone as any).open();\n }\n\n handleImageLoaded(index: number, e: React.UIEvent<any>) {\n const imgDom = e.currentTarget;\n const img = new Image();\n img.onload = () => {\n delete (img as any).onload;\n const files = this.files.concat();\n const file = files[index];\n\n if (!file) {\n return;\n }\n\n file.info = {\n ...file.info,\n width: img.width,\n height: img.height\n };\n\n files.splice(index, 1, file);\n const needUploading = !!(\n this.current || find(files, file => file.state === 'pending')\n );\n\n this.unmounted ||\n this.setState(\n {\n files: (this.files = files)\n },\n !needUploading ? this.onChange : undefined\n );\n };\n img.src = imgDom.src;\n }\n\n handleFrameImageLoaded(e: React.UIEvent<any>) {\n const imgDom = e.currentTarget;\n const img = new Image();\n const {clientHeight} = this.frameImageRef.current;\n\n const _this = this;\n img.onload = function () {\n const ratio = (this as any).width / (this as any).height;\n const finalWidth = (ratio * (clientHeight - 2)).toFixed(2);\n _this.setState({\n frameImageWidth: +finalWidth\n });\n };\n img.src = imgDom.src;\n }\n\n validate(): any {\n const __ = this.props.translate;\n\n if (this.state.locked && this.state.lockedReason) {\n return this.state.lockedReason;\n } else if (this.state.cropFile) {\n return new Promise(resolve => {\n this.resolve = resolve;\n this.handleCrop();\n });\n } else if (\n this.state.uploading ||\n this.files.some(item => item.state === 'pending')\n ) {\n return new Promise(resolve => {\n this.resolve = resolve;\n this.startUpload();\n });\n } else if (this.files.some(item => item.state === 'error')) {\n return __('File.errorRetry');\n }\n }\n\n async dispatchEvent(e: string, data?: Record<string, any>) {\n const {dispatchEvent} = this.props;\n const getEventData = (item: Record<string, any>) => ({\n name: item.path || item.name,\n value: item.value,\n state: item.state,\n error: item.error\n });\n const value = data\n ? getEventData(data)\n : this.files.map(item => getEventData(item));\n return dispatchEvent(e, createObject(this.props.data, {file: value}));\n }\n\n // 动作\n doAction(action: Action, data: object, throwErrors: boolean) {\n const {onChange} = this.props;\n if (action.actionType === 'clear') {\n this.files = [];\n onChange('');\n }\n }\n\n render() {\n const {\n className,\n classnames: cx,\n placeholder,\n disabled,\n multiple,\n accept,\n maxLength,\n autoUpload,\n hideUploadButton,\n thumbMode,\n thumbRatio,\n reCropable,\n frameImage,\n fixedSize,\n fixedSizeClassName,\n translate: __\n } = this.props;\n const {files, error, crop, uploading, cropFile, frameImageWidth} =\n this.state;\n let frameImageStyle: any = {};\n if (fixedSizeClassName && frameImageWidth && fixedSize) {\n frameImageStyle.width = frameImageWidth;\n }\n const filterFrameImage = filter(frameImage, this.props.data, '| raw');\n\n const hasPending = files.some(file => file.state == 'pending');\n return (\n <div className={cx(`ImageControl`, className)}>\n {cropFile ? (\n <div className={cx('ImageControl-cropperWrapper')}>\n <Suspense fallback={<div>...</div>}>\n <Cropper\n {...crop}\n onInitialized={instance => {\n this.cropper = instance;\n }}\n src={cropFile.preview}\n />\n </Suspense>\n <div className={cx('ImageControl-croperToolbar')}>\n {crop.rotatable && (\n <a\n className={cx('ImageControl-cropRotatable')}\n onClick={this.rotatableCrop}\n data-tooltip={__('rotate')}\n data-position=\"left\"\n >\n <Icon icon=\"retry\" className=\"icon\" />\n </a>\n )}\n <a\n className={cx('ImageControl-cropCancel')}\n onClick={this.cancelCrop}\n data-tooltip={__('cancel')}\n data-position=\"left\"\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n <a\n className={cx('ImageControl-cropConfirm')}\n onClick={this.handleCrop}\n data-tooltip={__('confirm')}\n data-position=\"left\"\n >\n <Icon icon=\"check\" className=\"icon\" />\n </a>\n </div>\n </div>\n ) : (\n <DropZone\n key=\"drop-zone\"\n ref={this.dropzone}\n onDrop={this.handleDrop}\n onDropRejected={this.handleDropRejected}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n >\n {({\n getRootProps,\n getInputProps,\n isDragActive,\n isDragAccept,\n isDragReject,\n isFocused\n }) => (\n <div\n {...getRootProps({\n onClick: preventEvent,\n onPaste: this.handlePaste,\n className: cx('ImageControl-dropzone', {\n 'is-disabled': disabled,\n 'is-empty': !files.length,\n 'is-active': isDragActive\n })\n })}\n >\n <input {...getInputProps()} />\n\n {isDragActive || isDragAccept || isDragReject ? (\n <div\n className={cx('ImageControl-acceptTip', {\n 'is-accept': isDragAccept,\n 'is-reject': isDragReject\n })}\n >\n {__('Image.dragDrop')}\n </div>\n ) : (\n <>\n {files && files.length\n ? files.map((file, key) => (\n <div\n key={file.id || key}\n className={cx(\n 'ImageControl-item',\n {\n 'is-uploaded': file.state !== 'uploading',\n 'is-invalid':\n file.state === 'error' ||\n file.state === 'invalid'\n },\n fixedSize ? 'ImageControl-fixed-size' : '',\n fixedSize ? fixedSizeClassName : ''\n )}\n style={frameImageStyle}\n >\n {file.state === 'invalid' ||\n file.state === 'error' ? (\n <div className={cx('Image--thumb')}>\n <div className={cx('Image-thumbWrap')}>\n <div\n className={cx(\n 'Image-thumb',\n 'ImageControl-filename'\n )}\n >\n <Icon icon=\"image\" className=\"icon\" />\n <span\n title={\n file.name ||\n getNameFromUrl(file.value || file.url)\n }\n >\n {file.name ||\n getNameFromUrl(file.value || file.url)}\n </span>\n </div>\n\n <div className={cx('Image-overlay')}>\n <a\n data-tooltip={__('File.repick')}\n data-position=\"bottom\"\n onClick={this.handleRetry.bind(this, key)}\n >\n <Icon icon=\"refresh\" className=\"icon\" />\n </a>\n\n {!disabled ? (\n <a\n data-tooltip={__('Select.clear')}\n data-position=\"bottom\"\n onClick={this.removeFile.bind(\n this,\n file,\n key\n )}\n >\n <Icon icon=\"remove\" className=\"icon\" />\n </a>\n ) : null}\n </div>\n </div>\n </div>\n ) : file.state === 'uploading' ? (\n <>\n <a\n onClick={this.removeFile.bind(\n this,\n file,\n key\n )}\n key=\"clear\"\n className={cx('ImageControl-itemClear')}\n data-tooltip={__('Select.clear')}\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n <div\n key=\"info\"\n className={cx(\n 'ImageControl-itemInfo',\n fixedSize ? 'ImageControl-fixed-size' : '',\n fixedSize ? fixedSizeClassName : ''\n )}\n >\n <div className={cx('ImageControl-progress')}>\n <span\n style={{\n width: `${Math.round(\n file.progress * 100\n )}%`\n }}\n className={cx(\n 'ImageControl-progressValue'\n )}\n />\n </div>\n <p>{__('File.uploading')}</p>\n </div>\n </>\n ) : (\n <>\n <ImageComponent\n key=\"image\"\n className={cx(\n 'ImageControl-image',\n fixedSize ? 'Image-thumb--fixed-size' : ''\n )}\n onLoad={this.handleImageLoaded.bind(\n this,\n key\n )}\n src={file.preview || file.url}\n alt={file.name}\n thumbMode={thumbMode}\n thumbRatio={thumbRatio}\n overlays={\n <>\n {file.info ? (\n [\n <div key=\"info\">\n {file.info.width} x{' '}\n {file.info.height}\n </div>,\n file.info.len ? (\n <div key=\"size\">\n {ImageControl.formatFileSize(\n file.info.len\n )}\n </div>\n ) : null\n ]\n ) : (\n <div>...</div>\n )}\n\n <a\n data-tooltip={__('Image.zoomIn')}\n data-position=\"bottom\"\n target=\"_blank\"\n rel=\"noopener\"\n href={file.url || file.preview}\n onClick={this.previewImage.bind(\n this,\n file,\n key\n )}\n >\n <Icon icon=\"view\" className=\"icon\" />\n </a>\n\n {!!crop &&\n reCropable !== false &&\n !disabled ? (\n <a\n data-tooltip={__('Image.crop')}\n data-position=\"bottom\"\n onClick={this.editImage.bind(\n this,\n key\n )}\n >\n <Icon\n icon=\"pencil\"\n className=\"icon\"\n />\n </a>\n ) : null}\n {!disabled ? (\n <a\n data-tooltip={__('Select.clear')}\n data-position=\"bottom\"\n onClick={this.removeFile.bind(\n this,\n file,\n key\n )}\n >\n <Icon\n icon=\"remove\"\n className=\"icon\"\n />\n </a>\n ) : null}\n <a\n data-tooltip={\n file.name ||\n getNameFromUrl(file.value || file.url)\n }\n data-position=\"bottom\"\n target=\"_blank\"\n >\n <Icon icon=\"info\" className=\"icon\" />\n </a>\n </>\n }\n />\n </>\n )}\n </div>\n ))\n : null}\n\n {(multiple && (!maxLength || files.length < maxLength)) ||\n (!multiple && !files.length) ? (\n <label\n className={cx(\n 'ImageControl-addBtn',\n {\n 'is-disabled': disabled\n },\n fixedSize ? 'ImageControl-fixed-size' : '',\n fixedSize ? fixedSizeClassName : ''\n )}\n style={frameImageStyle}\n onClick={this.handleSelect}\n data-tooltip={__(placeholder)}\n data-position=\"right\"\n ref={this.frameImageRef}\n >\n {filterFrameImage ? (\n <ImageComponent\n key=\"upload-default-image\"\n src={filterFrameImage}\n className={cx(\n fixedSize ? 'Image-thumb--fixed-size' : ''\n )}\n onLoad={this.handleFrameImageLoaded.bind(this)}\n thumbMode={thumbMode}\n thumbRatio={thumbRatio}\n />\n ) : (\n <>\n <Icon icon=\"plus\" className=\"icon\" />\n <span>{__('File.upload')}</span>\n </>\n )}\n\n {isFocused ? (\n <span className={cx('ImageControl-pasteTip')}>\n {__('Image.pasteTip')}\n </span>\n ) : null}\n </label>\n ) : null}\n\n {!autoUpload && !hideUploadButton && files.length ? (\n <Button\n level=\"default\"\n className={cx('ImageControl-uploadBtn')}\n disabled={!hasPending}\n onClick={this.toggleUpload}\n >\n {__(uploading ? 'File.pause' : 'File.start')}\n </Button>\n ) : null}\n\n {error ? (\n <div className={cx('ImageControl-errorMsg')}>{error}</div>\n ) : null}\n </>\n )}\n </div>\n )}\n </DropZone>\n )}\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-image',\n sizeMutable: false\n})\nexport class ImageControlRenderer extends ImageControl {}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -49,7 +49,11 @@ var MonthRangeControl = /** @class */ (function (_super) {
|
|
49
49
|
MonthRangeControl.prototype.doAction = function (action, data, throwErrors) {
|
50
50
|
var _a = this.props, resetValue = _a.resetValue, onChange = _a.onChange;
|
51
51
|
if (action.actionType === 'clear') {
|
52
|
-
onChange(
|
52
|
+
onChange('');
|
53
|
+
return;
|
54
|
+
}
|
55
|
+
if (action.actionType === 'reset' && resetValue) {
|
56
|
+
onChange(resetValue);
|
53
57
|
}
|
54
58
|
};
|
55
59
|
// 值的变化
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/InputMonthRange.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA,6DAA0B;AAC1B,+BAAmE;AACnE,uEAA4B;AAC5B,uDAAkE;AAElE,+BAA6B;AAE7B,oEAE0C;AAC1C,6CAAsE;AACtE,oGAAiE;AA4EjE;IAA+C,kDAAgC;IAO7E,2BAAY,KAAsB;QAAlC,YACE,kBAAM,KAAK,CAAC,SA+Bb;QA5BG,IAAA,YAAY,GAQV,KAAK,aARK,EACZ,iBAAiB,GAOf,KAAK,kBAPU,EACjB,SAAS,GAMP,KAAK,UANE,EACT,MAAM,GAKJ,KAAK,OALD,EACN,IAAI,GAIF,KAAK,KAJH,EACJ,KAAK,GAGH,KAAK,MAHF,EACL,UAAU,GAER,KAAK,WAFG,EACV,GAAG,GACD,KAAK,IADJ,CACK;QAEV,IAAI,YAAY,IAAI,KAAK,KAAK,YAAY,EAAE;YAC1C,IAAI,GAAG,GACL,OAAO,YAAY,KAAK,QAAQ;gBAC9B,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC/B,CAAC,CAAC,YAAY,CAAC;YACnB,iBAAiB,CACf,iCAAmB,CAAC,WAAW,CAC7B;gBACE,SAAS,EAAE,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;gBAC3C,OAAO,EAAE,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;aAC1C,EACD,MAAM,EACN,UAAU,EACV,SAAS,EACT,GAAG,CACJ,CACF,CAAC;SACH;;IACH,CAAC;IAED,8CAAkB,GAAlB,UAAmB,SAA0B;QACrC,IAAA,KAQF,IAAI,CAAC,KAAK,EAPZ,YAAY,kBAAA,EACZ,SAAS,eAAA,EACT,UAAU,gBAAA,EACV,iBAAiB,uBAAA,EACjB,IAAI,UAAA,EACJ,GAAG,SAAA,EACH,MAAM,YACM,CAAC;QAEf,IAAI,SAAS,CAAC,YAAY,KAAK,YAAY,EAAE;YAC3C,IAAI,GAAG,GACL,OAAO,YAAY,KAAK,QAAQ;gBAC9B,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC/B,CAAC,CAAC,YAAY,CAAC;YAEnB,iBAAiB,CACf,GAAG;gBACD,CAAC,CAAC,iCAAmB,CAAC,WAAW,CAC7B;oBACE,SAAS,EAAE,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;oBAC3C,OAAO,EAAE,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;iBAC1C,EACD,MAAM,EACN,UAAU,EACV,SAAS,EACT,GAAG,CACJ;gBACH,CAAC,CAAC,SAAS,CACd,CAAC;SACH;IACH,CAAC;IAED,cAAc;IAEd,yCAAa,GAAb,UAAc,CAAoC;QAC1C,IAAA,KAAwB,IAAI,CAAC,KAAK,EAAjC,aAAa,mBAAA,EAAE,IAAI,UAAc,CAAC;QACzC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,KAAK;IACL,oCAAQ,GAAR,UAAS,MAAc,EAAE,IAAY,EAAE,WAAoB;QACnD,IAAA,KAAyB,IAAI,CAAC,KAAK,EAAlC,UAAU,gBAAA,EAAE,QAAQ,cAAc,CAAC;
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport cx from 'classnames';\nimport {filterDate, parseDuration} from '../../utils/tpl-builtin';\nimport moment from 'moment';\nimport 'moment/locale/zh-cn';\nimport includes from 'lodash/includes';\nimport DateRangePicker, {\n DateRangePicker as BaseDateRangePicker\n} from '../../components/DateRangePicker';\nimport {anyChanged, createObject, autobind} from '../../utils/helper';\nimport MonthRangePicker from '../../components/MonthRangePicker';\nimport {Action} from '../../types';\n\n/**\n * MonthRange 月范围控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/month-range\n */\nexport interface MonthRangeControlSchema extends FormBaseControl {\n /**\n * 指定为日期范围控件\n */\n type: 'input-month-range';\n\n /**\n * 分割符, 因为有两个值,开始时间和结束时间,所以要有连接符。默认为英文逗号。\n *\n */\n delimiter?: string;\n\n /**\n * 默认 `X` 即时间戳格式,用来提交的时间格式。更多格式类型请参考 moment.\n */\n format?: string;\n\n /**\n * 默认 `YYYY-MM` 用来配置显示的时间格式。\n */\n inputFormat?: string;\n\n /**\n * 开启后将选中的选项 value 的值用连接符拼接起来,作为当前表单项的值。如: `value1,value2` 否则为 `[value1, value2]`\n */\n joinValues?: boolean;\n\n /**\n * 最大日期限制,支持变量 $xxx 来取值,或者用相对值如:* `-2mins` 2分钟前\\n * `+2days` 2天后\\n* `-10week` 十周前\\n可用单位: `min`、`hour`、`day`、`week`、`month`、`year`。所有单位支持复数形式。\n */\n maxDate?: string;\n\n /**\n * 最小日期限制,支持变量 $xxx 来取值,或者用相对值如:* `-2mins` 2分钟前\\n * `+2days` 2天后\\n* `-10week` 十周前\\n可用单位: `min`、`hour`、`day`、`week`、`month`、`year`。所有单位支持复数形式。\n */\n minDate?: string;\n\n /**\n * 最大跨度,比如 2days\n */\n maxDuration?: string;\n\n /**\n * 最小跨度,比如 2days\n */\n minDuration?: string;\n\n /**\n * 这里面 value 需要特殊说明一下,因为支持相对值。* `-2mins` 2分钟前\\n * `+2days` 2天后\\n* `-10week` 十周前\\n可用单位: `min`、`hour`、`day`、`week`、`month`、`year`。所有单位支持复数形式。\n */\n value?: any;\n\n /**\n * 开启后变成非弹出模式,即内联模式。\n */\n embed?: boolean;\n}\n\nexport interface MonthRangeProps\n extends FormControlProps,\n Omit<\n MonthRangeControlSchema,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {\n delimiter: string;\n format: string;\n joinValues: boolean;\n}\n\nexport default class MonthRangeControl extends React.Component<MonthRangeProps> {\n static defaultProps = {\n format: 'X',\n joinValues: true,\n delimiter: ','\n };\n\n constructor(props: MonthRangeProps) {\n super(props);\n\n const {\n defaultValue,\n setPrinstineValue,\n delimiter,\n format,\n data,\n value,\n joinValues,\n utc\n } = props;\n\n if (defaultValue && value === defaultValue) {\n let arr =\n typeof defaultValue === 'string'\n ? defaultValue.split(delimiter)\n : defaultValue;\n setPrinstineValue(\n BaseDateRangePicker.formatValue(\n {\n startDate: filterDate(arr[0], data, format),\n endDate: filterDate(arr[1], data, format)\n },\n format,\n joinValues,\n delimiter,\n utc\n )\n );\n }\n }\n\n componentDidUpdate(prevProps: MonthRangeProps) {\n const {\n defaultValue,\n delimiter,\n joinValues,\n setPrinstineValue,\n data,\n utc,\n format\n } = this.props;\n\n if (prevProps.defaultValue !== defaultValue) {\n let arr =\n typeof defaultValue === 'string'\n ? defaultValue.split(delimiter)\n : defaultValue;\n\n setPrinstineValue(\n arr\n ? BaseDateRangePicker.formatValue(\n {\n startDate: filterDate(arr[0], data, format),\n endDate: filterDate(arr[1], data, format)\n },\n format,\n joinValues,\n delimiter,\n utc\n )\n : undefined\n );\n }\n }\n\n // 派发有event的事件\n @autobind\n dispatchEvent(e: React.SyntheticEvent<HTMLElement>) {\n const {dispatchEvent, data} = this.props;\n dispatchEvent(e, data);\n }\n\n // 动作\n doAction(action: Action, data: object, throwErrors: boolean) {\n const {resetValue, onChange} = this.props;\n if (action.actionType === 'clear') {\n onChange(
|
11
|
+
"import React from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport cx from 'classnames';\nimport {filterDate, parseDuration} from '../../utils/tpl-builtin';\nimport moment from 'moment';\nimport 'moment/locale/zh-cn';\nimport includes from 'lodash/includes';\nimport DateRangePicker, {\n DateRangePicker as BaseDateRangePicker\n} from '../../components/DateRangePicker';\nimport {anyChanged, createObject, autobind} from '../../utils/helper';\nimport MonthRangePicker from '../../components/MonthRangePicker';\nimport {Action} from '../../types';\n\n/**\n * MonthRange 月范围控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/month-range\n */\nexport interface MonthRangeControlSchema extends FormBaseControl {\n /**\n * 指定为日期范围控件\n */\n type: 'input-month-range';\n\n /**\n * 分割符, 因为有两个值,开始时间和结束时间,所以要有连接符。默认为英文逗号。\n *\n */\n delimiter?: string;\n\n /**\n * 默认 `X` 即时间戳格式,用来提交的时间格式。更多格式类型请参考 moment.\n */\n format?: string;\n\n /**\n * 默认 `YYYY-MM` 用来配置显示的时间格式。\n */\n inputFormat?: string;\n\n /**\n * 开启后将选中的选项 value 的值用连接符拼接起来,作为当前表单项的值。如: `value1,value2` 否则为 `[value1, value2]`\n */\n joinValues?: boolean;\n\n /**\n * 最大日期限制,支持变量 $xxx 来取值,或者用相对值如:* `-2mins` 2分钟前\\n * `+2days` 2天后\\n* `-10week` 十周前\\n可用单位: `min`、`hour`、`day`、`week`、`month`、`year`。所有单位支持复数形式。\n */\n maxDate?: string;\n\n /**\n * 最小日期限制,支持变量 $xxx 来取值,或者用相对值如:* `-2mins` 2分钟前\\n * `+2days` 2天后\\n* `-10week` 十周前\\n可用单位: `min`、`hour`、`day`、`week`、`month`、`year`。所有单位支持复数形式。\n */\n minDate?: string;\n\n /**\n * 最大跨度,比如 2days\n */\n maxDuration?: string;\n\n /**\n * 最小跨度,比如 2days\n */\n minDuration?: string;\n\n /**\n * 这里面 value 需要特殊说明一下,因为支持相对值。* `-2mins` 2分钟前\\n * `+2days` 2天后\\n* `-10week` 十周前\\n可用单位: `min`、`hour`、`day`、`week`、`month`、`year`。所有单位支持复数形式。\n */\n value?: any;\n\n /**\n * 开启后变成非弹出模式,即内联模式。\n */\n embed?: boolean;\n}\n\nexport interface MonthRangeProps\n extends FormControlProps,\n Omit<\n MonthRangeControlSchema,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {\n delimiter: string;\n format: string;\n joinValues: boolean;\n}\n\nexport default class MonthRangeControl extends React.Component<MonthRangeProps> {\n static defaultProps = {\n format: 'X',\n joinValues: true,\n delimiter: ','\n };\n\n constructor(props: MonthRangeProps) {\n super(props);\n\n const {\n defaultValue,\n setPrinstineValue,\n delimiter,\n format,\n data,\n value,\n joinValues,\n utc\n } = props;\n\n if (defaultValue && value === defaultValue) {\n let arr =\n typeof defaultValue === 'string'\n ? defaultValue.split(delimiter)\n : defaultValue;\n setPrinstineValue(\n BaseDateRangePicker.formatValue(\n {\n startDate: filterDate(arr[0], data, format),\n endDate: filterDate(arr[1], data, format)\n },\n format,\n joinValues,\n delimiter,\n utc\n )\n );\n }\n }\n\n componentDidUpdate(prevProps: MonthRangeProps) {\n const {\n defaultValue,\n delimiter,\n joinValues,\n setPrinstineValue,\n data,\n utc,\n format\n } = this.props;\n\n if (prevProps.defaultValue !== defaultValue) {\n let arr =\n typeof defaultValue === 'string'\n ? defaultValue.split(delimiter)\n : defaultValue;\n\n setPrinstineValue(\n arr\n ? BaseDateRangePicker.formatValue(\n {\n startDate: filterDate(arr[0], data, format),\n endDate: filterDate(arr[1], data, format)\n },\n format,\n joinValues,\n delimiter,\n utc\n )\n : undefined\n );\n }\n }\n\n // 派发有event的事件\n @autobind\n dispatchEvent(e: React.SyntheticEvent<HTMLElement>) {\n const {dispatchEvent, data} = this.props;\n dispatchEvent(e, data);\n }\n\n // 动作\n doAction(action: Action, data: object, throwErrors: boolean) {\n const {resetValue, onChange} = this.props;\n\n if (action.actionType === 'clear') {\n onChange('');\n return;\n }\n\n if (action.actionType === 'reset' && resetValue) {\n onChange(resetValue);\n }\n }\n\n // 值的变化\n @autobind\n async handleChange(nextValue: any) {\n const {dispatchEvent, data} = this.props;\n const dispatcher = dispatchEvent('change', createObject(data, nextValue));\n if (dispatcher?.prevented) {\n return;\n }\n this.props.onChange(nextValue);\n }\n\n render() {\n const {\n className,\n classPrefix: ns,\n defaultValue,\n defaultData,\n minDate,\n maxDate,\n minDuration,\n maxDuration,\n data,\n format,\n env,\n ...rest\n } = this.props;\n\n return (\n <div className={cx(`${ns}DateRangeControl`, className)}>\n <MonthRangePicker\n {...rest}\n classPrefix={ns}\n data={data}\n format={format}\n minDate={minDate ? filterDate(minDate, data, format) : undefined}\n maxDate={maxDate ? filterDate(maxDate, data, format) : undefined}\n minDuration={minDuration ? parseDuration(minDuration) : undefined}\n maxDuration={maxDuration ? parseDuration(maxDuration) : undefined}\n onChange={this.handleChange}\n onFocus={this.dispatchEvent}\n onBlur={this.dispatchEvent}\n />\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-month-range'\n})\nexport class MonthRangeControlRenderer extends MonthRangeControl {\n static defaultProps = {\n ...MonthRangeControl.defaultProps,\n timeFormat: ''\n };\n}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -53,7 +53,7 @@ var TextControl = /** @class */ (function (_super) {
|
|
53
53
|
term: ''
|
54
54
|
}));
|
55
55
|
}
|
56
|
-
else {
|
56
|
+
else if (addHook) {
|
57
57
|
this.unHook = addHook(function (data) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
|
58
58
|
return (0, tslib_1.__generator)(this, function (_a) {
|
59
59
|
switch (_a.label) {
|
@@ -341,10 +341,11 @@ var TextControl = /** @class */ (function (_super) {
|
|
341
341
|
TextControl.prototype.renderSugestMode = function () {
|
342
342
|
var _this = this;
|
343
343
|
var _a;
|
344
|
-
var _b = this.props, className = _b.className, inputOnly = _b.inputOnly, value = _b.value, placeholder = _b.placeholder, cx = _b.classnames, disabled = _b.disabled, name = _b.name, loading = _b.loading, clearable = _b.clearable, options = _b.options, selectedOptions = _b.selectedOptions, autoComplete = _b.autoComplete, labelField = _b.labelField, valueField = _b.valueField, multiple = _b.multiple, creatable = _b.creatable, borderMode = _b.borderMode, __ = _b.translate;
|
344
|
+
var _b = this.props, className = _b.className, inputOnly = _b.inputOnly, value = _b.value, placeholder = _b.placeholder, cx = _b.classnames, disabled = _b.disabled, name = _b.name, loading = _b.loading, clearable = _b.clearable, options = _b.options, selectedOptions = _b.selectedOptions, autoComplete = _b.autoComplete, labelField = _b.labelField, valueField = _b.valueField, multiple = _b.multiple, creatable = _b.creatable, borderMode = _b.borderMode, showCounter = _b.showCounter, maxLength = _b.maxLength, __ = _b.translate;
|
345
345
|
var type = (_a = this.props.type) === null || _a === void 0 ? void 0 : _a.replace(/^(?:native|input)\-/, '');
|
346
346
|
return (react_1.default.createElement(downshift_1.default, { isOpen: this.state.isOpen && !disabled, inputValue: this.state.inputValue, onChange: this.handleChange, onStateChange: this.handleStateChange, selectedItem: selectedOptions.map(function (item) { return item[valueField || 'value']; }) }, function (_a) {
|
347
347
|
var _b, _c;
|
348
|
+
var _d;
|
348
349
|
var getInputProps = _a.getInputProps, getItemProps = _a.getItemProps, isOpen = _a.isOpen, inputValue = _a.inputValue, selectedItem = _a.selectedItem, highlightedIndex = _a.highlightedIndex;
|
349
350
|
var filtedOptions = inputValue && isOpen && !autoComplete
|
350
351
|
? (0, match_sorter_1.matchSorter)(options, inputValue, {
|
@@ -393,6 +394,9 @@ var TextControl = /** @class */ (function (_super) {
|
|
393
394
|
}), { autoComplete: "off", size: 10 }))),
|
394
395
|
clearable && !disabled && value ? (react_1.default.createElement("a", { onClick: _this.clearValue, className: cx('TextControl-clear') },
|
395
396
|
react_1.default.createElement(icons_1.Icon, { icon: "input-clear", className: "icon" }))) : null,
|
397
|
+
showCounter ? (react_1.default.createElement("span", { className: cx('TextControl-counter') }, "".concat((_d = _this.valueToString(value)) === null || _d === void 0 ? void 0 : _d.length).concat(typeof maxLength === 'number' && maxLength
|
398
|
+
? "/".concat(maxLength)
|
399
|
+
: ''))) : null,
|
396
400
|
loading ? (react_1.default.createElement(Spinner_1.default, { show: true, icon: "reload", spinnerClassName: cx('TextControl-spinner') })) : null,
|
397
401
|
isOpen && filtedOptions.length ? (react_1.default.createElement("div", { className: cx('TextControl-sugs') }, filtedOptions.map(function (option) {
|
398
402
|
return (react_1.default.createElement("div", (0, tslib_1.__assign)({}, getItemProps({
|
@@ -444,8 +448,8 @@ var TextControl = /** @class */ (function (_super) {
|
|
444
448
|
~['button', 'submit', 'reset', 'action'].indexOf(addOn.type) ? (react_1.default.createElement("div", { className: cx("".concat(ns, "TextControl-button"), addOn.className) }, render('addOn', addOn, {
|
445
449
|
disabled: disabled
|
446
450
|
}))) : (react_1.default.createElement("div", { className: cx("".concat(ns, "TextControl-addOn"), addOn.className) },
|
447
|
-
|
448
|
-
|
451
|
+
iconElement,
|
452
|
+
addOn.label ? (0, tpl_1.filter)(addOn.label, data) : null))) : null;
|
449
453
|
if (inputOnly) {
|
450
454
|
return input;
|
451
455
|
}
|