amis 1.10.0 → 1.10.1-beta.0
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/components/Checkbox.js +8 -2
- package/lib/components/Checkbox.js.map +2 -2
- package/lib/components/Select.js +4 -2
- package/lib/components/Select.js.map +2 -2
- package/lib/components/formula/Picker.d.ts +0 -1
- package/lib/components/formula/Picker.js +8 -17
- package/lib/components/formula/Picker.js.map +2 -2
- package/lib/index.js +1 -1
- package/lib/renderers/Form/InputFormula.js +1 -1
- package/lib/renderers/Form/InputFormula.js.map +2 -2
- package/lib/renderers/Form/InputImage.d.ts +1 -1
- package/lib/renderers/Form/InputImage.js +6 -2
- package/lib/renderers/Form/InputImage.js.map +2 -2
- package/lib/themes/ang-ie11.css +30 -18
- package/lib/themes/ang.css +33 -19
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +25 -13
- package/lib/themes/antd.css +33 -19
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +32 -20
- package/lib/themes/cxd.css +35 -21
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +27 -15
- package/lib/themes/dark.css +33 -19
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default-ie11.css +32 -20
- package/lib/themes/default.css +35 -21
- package/lib/themes/default.css.map +1 -1
- package/package.json +1 -1
- package/scss/_properties.scss +5 -3
- package/scss/components/_formula.scss +2 -3
- package/scss/components/form/_checks.scss +26 -16
- package/scss/themes/_cxd-variables.scss +2 -2
- package/sdk/ang-ie11.css +34 -19
- package/sdk/ang.css +37 -20
- package/sdk/antd-ie11.css +29 -14
- package/sdk/antd.css +37 -20
- 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 +36 -21
- package/sdk/cxd.css +39 -22
- package/sdk/dark-ie11.css +31 -16
- package/sdk/dark.css +37 -20
- package/sdk/exceljs.js +1 -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 +16 -16
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +36 -21
- package/sdk/sdk.css +39 -22
- package/sdk/sdk.js +1333 -1333
- 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/components/Checkbox.tsx +10 -3
- package/src/components/Select.tsx +4 -2
- package/src/components/formula/Picker.tsx +27 -16
- package/src/renderers/Form/InputFormula.tsx +1 -1
- package/src/renderers/Form/InputImage.tsx +7 -5
package/lib/index.js
CHANGED
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.registerLocale = exports.setDefaultLocale = exports.getDefaultLocale = exports.classnames = exports.getClassPrefix = exports.classPrefix = exports.getTheme = exports.theme = exports.setDefaultTheme = exports.validateObject = exports.validate = exports.ScopedContext = exports.Scoped = exports.registerIcon = exports.Icon = exports.setIconVendor = exports.resolveVariableAndFilter = exports.resolveVariable = exports.relativeValueRe = exports.filterDate = exports.filterSchema = exports.resolveRenderer = exports.registerOptionsControl = exports.registerFormItem = exports.getRenderers = exports.unRegisterRenderer = exports.registerRenderer = exports.getRendererByName = exports.normalizeOptions = exports.str2rules = exports.addRule = exports.setCustomEvalExpression = exports.setCustomEvalJs = exports.evalJS = exports.evalExpression = exports.registerTplEnginer = exports.registerFilter = exports.resizeSensor = exports.utils = exports.filter = exports.buildApi = exports.wrapFetcher = exports.OptionsControl = exports.FormItemWrap = exports.FormItem = exports.RegisterStore = exports.Renderer = exports.updateEnv = exports.clearStoresCache = exports.render = void 0;
|
4
4
|
exports.DataScope = exports.DataSchema = exports.animation = exports.makeTranslator = void 0;
|
5
5
|
var tslib_1 = require("tslib");
|
6
|
-
/** @license amis v1.10.0
|
6
|
+
/** @license amis v1.10.1-beta.0
|
7
7
|
*
|
8
8
|
* Copyright Baidu
|
9
9
|
*
|
@@ -26,7 +26,7 @@ var InputFormulaRenderer = /** @class */ (function (_super) {
|
|
26
26
|
InputFormulaRenderer.prototype.validate = function () {
|
27
27
|
var _a;
|
28
28
|
var _b = this.props, __ = _b.translate, value = _b.value;
|
29
|
-
if ((_a = this.ref) === null || _a === void 0 ? void 0 : _a.validate) {
|
29
|
+
if (((_a = this.ref) === null || _a === void 0 ? void 0 : _a.validate) && value) {
|
30
30
|
var res = this.ref.validate(value);
|
31
31
|
if (res !== true) {
|
32
32
|
return __('FormulaEditor.invalidData', { err: res });
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/InputFormula.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA,6DAA0B;AAE1B,6DAAmE;AACnE,wFAA4D;AAC5D,6CAA4C;AAI5C,uDAGiC;AAoHjC;IAA0C,qDAAkC;IAA5E;;IA0GA,CAAC;IA7FC,yCAAU,GAAV,UAAW,GAAQ;QACjB,IAAI,GAAG,EAAE;YACP,OAAO,GAAG,IAAI,GAAG,CAAC,kBAAkB,EAAE;gBACpC,GAAG,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAC;aAChC;YACD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;SAChB;aAAM;YACL,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;SACtB;IACH,CAAC;IAED,uCAAQ,GAAR;;QACQ,IAAA,KAAyB,IAAI,CAAC,KAAK,EAAvB,EAAE,eAAA,EAAE,KAAK,WAAc,CAAC;QAE1C,IAAI,MAAA,IAAI,CAAC,GAAG,0CAAE,QAAQ,EAAE;
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport {parse, Evaluator} from 'amis-formula';\nimport FormItem, {FormBaseControl, FormControlProps} from './Item';\nimport FormulaPicker from '../../components/formula/Picker';\nimport {autobind} from '../../utils/helper';\n\nimport type {FuncGroup, VariableItem} from '../../components/formula/Editor';\nimport type {SchemaIcon} from '../../Schema';\nimport {\n isPureVariable,\n resolveVariableAndFilter\n} from '../../utils/tpl-builtin';\n\n/**\n * InputFormula 公式编辑器\n * 文档:https://baidu.gitee.io/amis/zh-CN/components/form/input-formula\n */\nexport interface InputFormulaControlSchema extends FormBaseControl {\n type: 'input-formula';\n\n /**\n * evalMode 即直接就是表达式,否则\n * 需要 ${这里面才是表达式}\n * 默认为 true\n */\n evalMode?: boolean;\n\n /**\n * 用于提示的变量集合,默认为空\n */\n variables: Array<VariableItem>;\n\n /**\n * 变量展现模式,可选值:'tabs' | 'tree'\n */\n variableMode?: 'tabs' | 'tree';\n\n /**\n * 函数集合,默认不需要传,即 amis-formula 里面那个函数\n * 如果有扩充,则需要传。\n */\n functions: Array<FuncGroup>;\n\n /**\n * 编辑器标题\n */\n title?: string;\n\n /**\n * 顶部标题,默认为表达式\n */\n header: string;\n\n /**\n * 控件模式\n */\n inputMode?: 'button' | 'input-button' | 'input-group';\n\n /**\n * 外层input是否允许输入,否需要点击fx在弹窗中输入\n */\n allowInput?: boolean;\n\n /**\n * 按钮图标\n */\n icon?: SchemaIcon;\n\n /**\n * 按钮Label,inputMode为button时生效\n */\n btnLabel?: string;\n\n /**\n * 按钮样式\n */\n level?:\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'link'\n | 'primary'\n | 'dark'\n | 'light';\n\n /**\n * 按钮大小\n */\n btnSize?: 'xs' | 'sm' | 'md' | 'lg';\n\n /**\n * 边框模式,全边框,还是半边框,或者没边框。\n */\n borderMode?: 'full' | 'half' | 'none';\n\n /**\n * 输入框占位符\n */\n placeholder?: string;\n\n /**\n * 变量面板CSS样式类名\n */\n variableClassName?: string;\n\n /**\n * 函数面板CSS样式类名\n */\n functionClassName?: string;\n\n /**\n * 当前输入项字段 name: 用于避免循环绑定自身导致无限渲染\n */\n selfVariableName?: string;\n}\n\nexport interface InputFormulaProps\n extends FormControlProps,\n Omit<\n InputFormulaControlSchema,\n 'options' | 'inputClassName' | 'className' | 'descriptionClassName'\n > {}\n\n@FormItem({\n type: 'input-formula'\n})\nexport class InputFormulaRenderer extends React.Component<InputFormulaProps> {\n static defaultProps: Pick<\n InputFormulaControlSchema,\n 'inputMode' | 'borderMode' | 'evalMode'\n > = {\n inputMode: 'input-button',\n borderMode: 'full',\n evalMode: true\n };\n\n ref: any;\n\n @autobind\n formulaRef(ref: any) {\n if (ref) {\n while (ref && ref.getWrappedInstance) {\n ref = ref.getWrappedInstance();\n }\n this.ref = ref;\n } else {\n this.ref = undefined;\n }\n }\n\n validate() {\n const {translate: __, value} = this.props;\n\n if (this.ref?.validate) {\n const res = this.ref.validate(value);\n if (res !== true) {\n return __('FormulaEditor.invalidData', {err: res});\n }\n }\n }\n\n render() {\n let {\n selectedOptions,\n disabled,\n onChange,\n evalMode,\n variableMode,\n header,\n label,\n value,\n clearable,\n className,\n classPrefix: ns,\n classnames: cx,\n allowInput = true,\n borderMode,\n placeholder,\n inputMode,\n btnLabel,\n level,\n btnSize,\n icon,\n title,\n variableClassName,\n functionClassName,\n data,\n onPickerOpen,\n selfVariableName\n } = this.props;\n let {variables, functions} = this.props;\n\n if (isPureVariable(variables)) {\n // 如果 variables 是 ${xxx} 这种形式,将其处理成实际的值\n variables = resolveVariableAndFilter(variables, this.props.data, '| raw');\n }\n\n if (isPureVariable(functions)) {\n // 如果 functions 是 ${xxx} 这种形式,将其处理成实际的值\n functions = resolveVariableAndFilter(functions, this.props.data, '| raw');\n }\n\n return (\n <FormulaPicker\n ref={this.formulaRef}\n className={className}\n value={value}\n disabled={disabled}\n allowInput={allowInput}\n onChange={onChange}\n evalMode={evalMode}\n variables={variables}\n variableMode={variableMode}\n functions={functions}\n header={header || label || ''}\n borderMode={borderMode}\n placeholder={placeholder}\n mode={inputMode}\n btnLabel={btnLabel}\n level={level}\n btnSize={btnSize}\n icon={icon}\n title={title}\n clearable={clearable}\n variableClassName={variableClassName}\n functionClassName={functionClassName}\n data={data}\n onPickerOpen={onPickerOpen}\n selfVariableName={selfVariableName}\n />\n );\n }\n}\n"
|
11
|
+
"import React from 'react';\nimport {parse, Evaluator} from 'amis-formula';\nimport FormItem, {FormBaseControl, FormControlProps} from './Item';\nimport FormulaPicker from '../../components/formula/Picker';\nimport {autobind} from '../../utils/helper';\n\nimport type {FuncGroup, VariableItem} from '../../components/formula/Editor';\nimport type {SchemaIcon} from '../../Schema';\nimport {\n isPureVariable,\n resolveVariableAndFilter\n} from '../../utils/tpl-builtin';\n\n/**\n * InputFormula 公式编辑器\n * 文档:https://baidu.gitee.io/amis/zh-CN/components/form/input-formula\n */\nexport interface InputFormulaControlSchema extends FormBaseControl {\n type: 'input-formula';\n\n /**\n * evalMode 即直接就是表达式,否则\n * 需要 ${这里面才是表达式}\n * 默认为 true\n */\n evalMode?: boolean;\n\n /**\n * 用于提示的变量集合,默认为空\n */\n variables: Array<VariableItem>;\n\n /**\n * 变量展现模式,可选值:'tabs' | 'tree'\n */\n variableMode?: 'tabs' | 'tree';\n\n /**\n * 函数集合,默认不需要传,即 amis-formula 里面那个函数\n * 如果有扩充,则需要传。\n */\n functions: Array<FuncGroup>;\n\n /**\n * 编辑器标题\n */\n title?: string;\n\n /**\n * 顶部标题,默认为表达式\n */\n header: string;\n\n /**\n * 控件模式\n */\n inputMode?: 'button' | 'input-button' | 'input-group';\n\n /**\n * 外层input是否允许输入,否需要点击fx在弹窗中输入\n */\n allowInput?: boolean;\n\n /**\n * 按钮图标\n */\n icon?: SchemaIcon;\n\n /**\n * 按钮Label,inputMode为button时生效\n */\n btnLabel?: string;\n\n /**\n * 按钮样式\n */\n level?:\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'link'\n | 'primary'\n | 'dark'\n | 'light';\n\n /**\n * 按钮大小\n */\n btnSize?: 'xs' | 'sm' | 'md' | 'lg';\n\n /**\n * 边框模式,全边框,还是半边框,或者没边框。\n */\n borderMode?: 'full' | 'half' | 'none';\n\n /**\n * 输入框占位符\n */\n placeholder?: string;\n\n /**\n * 变量面板CSS样式类名\n */\n variableClassName?: string;\n\n /**\n * 函数面板CSS样式类名\n */\n functionClassName?: string;\n\n /**\n * 当前输入项字段 name: 用于避免循环绑定自身导致无限渲染\n */\n selfVariableName?: string;\n}\n\nexport interface InputFormulaProps\n extends FormControlProps,\n Omit<\n InputFormulaControlSchema,\n 'options' | 'inputClassName' | 'className' | 'descriptionClassName'\n > {}\n\n@FormItem({\n type: 'input-formula'\n})\nexport class InputFormulaRenderer extends React.Component<InputFormulaProps> {\n static defaultProps: Pick<\n InputFormulaControlSchema,\n 'inputMode' | 'borderMode' | 'evalMode'\n > = {\n inputMode: 'input-button',\n borderMode: 'full',\n evalMode: true\n };\n\n ref: any;\n\n @autobind\n formulaRef(ref: any) {\n if (ref) {\n while (ref && ref.getWrappedInstance) {\n ref = ref.getWrappedInstance();\n }\n this.ref = ref;\n } else {\n this.ref = undefined;\n }\n }\n\n validate() {\n const {translate: __, value} = this.props;\n\n if (this.ref?.validate && value) {\n const res = this.ref.validate(value);\n if (res !== true) {\n return __('FormulaEditor.invalidData', {err: res});\n }\n }\n }\n\n render() {\n let {\n selectedOptions,\n disabled,\n onChange,\n evalMode,\n variableMode,\n header,\n label,\n value,\n clearable,\n className,\n classPrefix: ns,\n classnames: cx,\n allowInput = true,\n borderMode,\n placeholder,\n inputMode,\n btnLabel,\n level,\n btnSize,\n icon,\n title,\n variableClassName,\n functionClassName,\n data,\n onPickerOpen,\n selfVariableName\n } = this.props;\n let {variables, functions} = this.props;\n\n if (isPureVariable(variables)) {\n // 如果 variables 是 ${xxx} 这种形式,将其处理成实际的值\n variables = resolveVariableAndFilter(variables, this.props.data, '| raw');\n }\n\n if (isPureVariable(functions)) {\n // 如果 functions 是 ${xxx} 这种形式,将其处理成实际的值\n functions = resolveVariableAndFilter(functions, this.props.data, '| raw');\n }\n\n return (\n <FormulaPicker\n ref={this.formulaRef}\n className={className}\n value={value}\n disabled={disabled}\n allowInput={allowInput}\n onChange={onChange}\n evalMode={evalMode}\n variables={variables}\n variableMode={variableMode}\n functions={functions}\n header={header || label || ''}\n borderMode={borderMode}\n placeholder={placeholder}\n mode={inputMode}\n btnLabel={btnLabel}\n level={level}\n btnSize={btnSize}\n icon={icon}\n title={title}\n clearable={clearable}\n variableClassName={variableClassName}\n functionClassName={functionClassName}\n data={data}\n onPickerOpen={onPickerOpen}\n selfVariableName={selfVariableName}\n />\n );\n }\n}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -289,7 +289,7 @@ export default class ImageControl extends React.Component<ImageProps, ImageState
|
|
289
289
|
removeFile(file: FileValue, index: number): Promise<void>;
|
290
290
|
previewImage(file: FileX, index: number, e: React.MouseEvent<any>): void;
|
291
291
|
editImage(index: number): void;
|
292
|
-
onChange(changeImmediately?: boolean): Promise<void>;
|
292
|
+
onChange(changeImmediately?: boolean, changeEvent?: boolean): Promise<void>;
|
293
293
|
syncAutoFill(): void;
|
294
294
|
handleSelect(): void;
|
295
295
|
handleRetry(index: number): void;
|
@@ -273,7 +273,7 @@ var ImageControl = /** @class */ (function (_super) {
|
|
273
273
|
uploading: false,
|
274
274
|
locked: false
|
275
275
|
}, function () {
|
276
|
-
_this_1.onChange(!!_this_1.resolve);
|
276
|
+
_this_1.onChange(!!_this_1.resolve, false);
|
277
277
|
if (_this_1.resolve) {
|
278
278
|
_this_1.resolve(_this_1.files.some(function (file) { return file.state === 'error'; })
|
279
279
|
? __('File.errorRetry')
|
@@ -338,7 +338,8 @@ var ImageControl = /** @class */ (function (_super) {
|
|
338
338
|
cropFileName: files[index].name
|
339
339
|
});
|
340
340
|
};
|
341
|
-
ImageControl.prototype.onChange = function (changeImmediately) {
|
341
|
+
ImageControl.prototype.onChange = function (changeImmediately, changeEvent) {
|
342
|
+
if (changeEvent === void 0) { changeEvent = true; }
|
342
343
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
343
344
|
var _a, multiple, onChange, joinValues, extractValue, delimiter, valueField, files, newValue, dispatcher;
|
344
345
|
return (0, tslib_1.__generator)(this, function (_b) {
|
@@ -365,12 +366,15 @@ var ImageControl = /** @class */ (function (_super) {
|
|
365
366
|
? newValue[valueField || 'value']
|
366
367
|
: newValue;
|
367
368
|
}
|
369
|
+
if (!changeEvent) return [3 /*break*/, 2];
|
368
370
|
return [4 /*yield*/, this.dispatchEvent('change')];
|
369
371
|
case 1:
|
370
372
|
dispatcher = _b.sent();
|
371
373
|
if (dispatcher === null || dispatcher === void 0 ? void 0 : dispatcher.prevented) {
|
372
374
|
return [2 /*return*/];
|
373
375
|
}
|
376
|
+
_b.label = 2;
|
377
|
+
case 2:
|
374
378
|
onChange((this.emitValue = newValue || ''), undefined, changeImmediately);
|
375
379
|
this.syncAutoFill();
|
376
380
|
return [2 /*return*/];
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/InputImage.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": "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",
|
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);\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) {\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\n const dispatcher = await this.dispatchEvent('change');\n if (dispatcher?.prevented) {\n return;\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 }\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=\"upload\" 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\n {!disabled ? (\n <a\n data-tooltip={__('Select.upload')}\n data-position=\"bottom\"\n onClick={this.handleSelect}\n >\n <Icon\n icon=\"upload\"\n className=\"icon\"\n />\n </a>\n ) : null}\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\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-fine\" className=\"icon\" />\n <span className={cx('ImageControl-addBtn-text')}>\n {__('Image.upload')}\n </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, changeEvent: boolean = 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\n if (changeEvent) {\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 }\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=\"upload\" 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\n {!disabled ? (\n <a\n data-tooltip={__('Select.upload')}\n data-position=\"bottom\"\n onClick={this.handleSelect}\n >\n <Icon\n icon=\"upload\"\n className=\"icon\"\n />\n </a>\n ) : null}\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\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-fine\" className=\"icon\" />\n <span className={cx('ImageControl-addBtn-text')}>\n {__('Image.upload')}\n </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
|
}
|