ls-pro-common 3.0.57 → 3.0.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common.css +30 -16
- package/dist/common.js +1 -1
- package/dist/common.min.css +30 -16
- package/dist/common.min.js +1 -1
- package/es/components/ImageSelector.d.ts +7 -7
- package/es/components/ImageSelector.js +32 -6
- package/es/hooks/useGetState.d.ts +1 -0
- package/es/hooks/useGetState.js +4 -3
- package/lib/components/ImageSelector.d.ts +7 -7
- package/lib/components/ImageSelector.js +32 -6
- package/lib/hooks/useGetState.d.ts +1 -0
- package/lib/hooks/useGetState.js +4 -3
- package/package.json +3 -3
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type { InputProps, ModalProps } from 'antd';
|
|
3
3
|
import type { ProFormItemProps } from 'ls-pro-form';
|
|
4
4
|
export declare type ImageSelectorProps = ProFormItemProps<InputProps> & {
|
|
5
|
-
|
|
5
|
+
/** 对应后端的类,默认为RETAIL */
|
|
6
6
|
code?: string;
|
|
7
7
|
/** @name 分类(文件夹,eg:mdm,pms...) */
|
|
8
8
|
type: string;
|
|
@@ -12,20 +12,20 @@ export declare type ImageSelectorProps = ProFormItemProps<InputProps> & {
|
|
|
12
12
|
title?: string;
|
|
13
13
|
/** @name 弹框宽度 */
|
|
14
14
|
modalWidth?: string;
|
|
15
|
-
/**
|
|
16
|
-
* @name 最大值, 默认2M
|
|
17
|
-
*/
|
|
15
|
+
/** @name 最大值, 默认2M */
|
|
18
16
|
maxSize?: number;
|
|
19
|
-
|
|
17
|
+
/** 弹框的属性 */
|
|
20
18
|
modalProps?: ModalProps;
|
|
21
|
-
|
|
19
|
+
/** 是否输入框模式 */
|
|
22
20
|
isInput?: boolean;
|
|
23
|
-
|
|
21
|
+
/** 非输入框模式上传提示语 默认为:支持 png | jpg | gif 格式图片 */
|
|
24
22
|
desc?: string;
|
|
25
23
|
/** 非输入框模式下 展示图片class */
|
|
26
24
|
imageClass?: string;
|
|
27
25
|
/** 一次最多选择多少张图片 默认为 1 */
|
|
28
26
|
maxCount?: number;
|
|
27
|
+
uploadRender?: (currentImgUrl: any) => any;
|
|
28
|
+
afterSelect?: (imgUrl: string) => void;
|
|
29
29
|
};
|
|
30
30
|
declare function ImageSelector(prop: ImageSelectorProps): JSX.Element;
|
|
31
31
|
export default ImageSelector;
|
|
@@ -59,7 +59,7 @@ function ImageSelector(prop) {
|
|
|
59
59
|
_prop$allowClear = prop.allowClear,
|
|
60
60
|
allowClear = _prop$allowClear === void 0 ? true : _prop$allowClear,
|
|
61
61
|
_prop$title = prop.title,
|
|
62
|
-
title = _prop$title === void 0 ?
|
|
62
|
+
title = _prop$title === void 0 ? '选择图标' : _prop$title,
|
|
63
63
|
_prop$modalWidth = prop.modalWidth,
|
|
64
64
|
modalWidth = _prop$modalWidth === void 0 ? '600px' : _prop$modalWidth,
|
|
65
65
|
name = prop.name,
|
|
@@ -71,7 +71,7 @@ function ImageSelector(prop) {
|
|
|
71
71
|
_prop$isInput = prop.isInput,
|
|
72
72
|
isInput = _prop$isInput === void 0 ? true : _prop$isInput,
|
|
73
73
|
_prop$desc = prop.desc,
|
|
74
|
-
desc = _prop$desc === void 0 ? '支持 png | jpg | gif 格式图片' : _prop$desc,
|
|
74
|
+
desc = _prop$desc === void 0 ? '支持 png | jpg | gif | svg 格式图片' : _prop$desc,
|
|
75
75
|
_prop$imageClass = prop.imageClass,
|
|
76
76
|
imageClass = _prop$imageClass === void 0 ? '' : _prop$imageClass,
|
|
77
77
|
_prop$maxCount = prop.maxCount,
|
|
@@ -151,7 +151,7 @@ function ImageSelector(prop) {
|
|
|
151
151
|
var _formRef$current, _formRef$current$getF;
|
|
152
152
|
var val = (formRef === null || formRef === void 0 ? void 0 : (_formRef$current = formRef.current) === null || _formRef$current === void 0 ? void 0 : (_formRef$current$getF = _formRef$current.getFieldsValue) === null || _formRef$current$getF === void 0 ? void 0 : _formRef$current$getF.call(_formRef$current)) || {};
|
|
153
153
|
var url = val === null || val === void 0 ? void 0 : val[name];
|
|
154
|
-
if (!url) {
|
|
154
|
+
if (!url && (formRef === null || formRef === void 0 ? void 0 : formRef.current) && name) {
|
|
155
155
|
var _formRef$current2, _formRef$current2$get;
|
|
156
156
|
url = formRef === null || formRef === void 0 ? void 0 : (_formRef$current2 = formRef.current) === null || _formRef$current2 === void 0 ? void 0 : (_formRef$current2$get = _formRef$current2.getFieldValue) === null || _formRef$current2$get === void 0 ? void 0 : _formRef$current2$get.call(_formRef$current2, name);
|
|
157
157
|
}
|
|
@@ -187,6 +187,9 @@ function ImageSelector(prop) {
|
|
|
187
187
|
//@ts-ignore
|
|
188
188
|
val[name] = img;
|
|
189
189
|
formRef === null || formRef === void 0 ? void 0 : (_formRef$current4 = formRef.current) === null || _formRef$current4 === void 0 ? void 0 : (_formRef$current4$set = _formRef$current4.setFieldsValue) === null || _formRef$current4$set === void 0 ? void 0 : _formRef$current4$set.call(_formRef$current4, val);
|
|
190
|
+
if (prop.afterSelect) {
|
|
191
|
+
prop.afterSelect(img);
|
|
192
|
+
}
|
|
190
193
|
}
|
|
191
194
|
} else {
|
|
192
195
|
var _result$flag2;
|
|
@@ -244,6 +247,9 @@ function ImageSelector(prop) {
|
|
|
244
247
|
formRef.current.setFieldsValue(val);
|
|
245
248
|
setImgUrl(selectedUrl.join(','));
|
|
246
249
|
setVisible(false);
|
|
250
|
+
if (prop.afterSelect) {
|
|
251
|
+
prop.afterSelect(selectedUrl.join(','));
|
|
252
|
+
}
|
|
247
253
|
};
|
|
248
254
|
var clearValue = function clearValue(e) {
|
|
249
255
|
if (!e || !e.target.value) {
|
|
@@ -252,6 +258,9 @@ function ImageSelector(prop) {
|
|
|
252
258
|
var formValue = (formRef === null || formRef === void 0 ? void 0 : (_formRef$current6 = formRef.current) === null || _formRef$current6 === void 0 ? void 0 : (_formRef$current6$get = _formRef$current6.getFieldsValue) === null || _formRef$current6$get === void 0 ? void 0 : _formRef$current6$get.call(_formRef$current6)) || {};
|
|
253
259
|
formValue[name] = '';
|
|
254
260
|
formRef.current.setFieldsValue(_objectSpread({}, formValue));
|
|
261
|
+
if (prop.afterSelect) {
|
|
262
|
+
prop.afterSelect('');
|
|
263
|
+
}
|
|
255
264
|
}
|
|
256
265
|
};
|
|
257
266
|
var win = top || window;
|
|
@@ -281,7 +290,21 @@ function ImageSelector(prop) {
|
|
|
281
290
|
allowClear: allowClear,
|
|
282
291
|
ref: inputRef,
|
|
283
292
|
onChange: clearValue
|
|
284
|
-
})) : /*#__PURE__*/React.createElement(
|
|
293
|
+
})) : prop.uploadRender ? /*#__PURE__*/React.createElement(_Upload, {
|
|
294
|
+
beforeUpload: beforeUpload,
|
|
295
|
+
onChange: function onChange(info) {
|
|
296
|
+
return onUpload(info, true);
|
|
297
|
+
},
|
|
298
|
+
action: uploadImgApi,
|
|
299
|
+
showUploadList: false,
|
|
300
|
+
name: "file",
|
|
301
|
+
maxCount: 1,
|
|
302
|
+
multiple: false,
|
|
303
|
+
headers: {
|
|
304
|
+
token: localStorage.getItem('token') || ''
|
|
305
|
+
},
|
|
306
|
+
accept: ".png,.gif,.jpg,.jpeg,.bmp,.svg"
|
|
307
|
+
}, prop.uploadRender(imgUrl)) : /*#__PURE__*/React.createElement("div", {
|
|
285
308
|
className: "image-selector"
|
|
286
309
|
}, /*#__PURE__*/React.createElement(_Upload, {
|
|
287
310
|
beforeUpload: beforeUpload,
|
|
@@ -296,7 +319,7 @@ function ImageSelector(prop) {
|
|
|
296
319
|
headers: {
|
|
297
320
|
token: localStorage.getItem('token') || ''
|
|
298
321
|
},
|
|
299
|
-
accept: ".png,.gif,.jpg,.jpeg,.bmp"
|
|
322
|
+
accept: ".png,.gif,.jpg,.jpeg,.bmp,.svg"
|
|
300
323
|
}, imgUrl ? /*#__PURE__*/React.createElement("div", {
|
|
301
324
|
className: "img-wrapper"
|
|
302
325
|
}, /*#__PURE__*/React.createElement("img", {
|
|
@@ -365,7 +388,7 @@ function ImageSelector(prop) {
|
|
|
365
388
|
headers: {
|
|
366
389
|
token: localStorage.getItem('token') || ''
|
|
367
390
|
},
|
|
368
|
-
accept: ".png,.gif,.jpg,.jpeg,.bmp"
|
|
391
|
+
accept: ".png,.gif,.jpg,.jpeg,.bmp,.svg"
|
|
369
392
|
}, /*#__PURE__*/React.createElement(_Button, {
|
|
370
393
|
icon: /*#__PURE__*/React.createElement(UploadOutlined, null)
|
|
371
394
|
}, "\u4E0A\u4F20\u65B0\u56FE"))), /*#__PURE__*/React.createElement(_Button, {
|
|
@@ -412,6 +435,9 @@ function ImageSelector(prop) {
|
|
|
412
435
|
setImgUrl(o.url);
|
|
413
436
|
setSelectedUrl([o.url]);
|
|
414
437
|
setVisible(false);
|
|
438
|
+
if (prop.afterSelect) {
|
|
439
|
+
prop.afterSelect(o.url);
|
|
440
|
+
}
|
|
415
441
|
},
|
|
416
442
|
onClick: function onClick() {
|
|
417
443
|
toggleSelectImage(o.url);
|
package/es/hooks/useGetState.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
-
import { useState, useRef } from
|
|
2
|
+
import { useState, useRef } from 'react';
|
|
3
|
+
/** 用于在useEffect, useCallback, useMemo等hooks中不传依赖时获取最新的值 */
|
|
3
4
|
export default function (initVal) {
|
|
4
5
|
var _useState = useState(initVal),
|
|
5
6
|
_useState2 = _slicedToArray(_useState, 2),
|
|
6
7
|
state = _useState2[0],
|
|
7
8
|
setState = _useState2[1];
|
|
8
9
|
var ref = useRef(initVal);
|
|
9
|
-
var
|
|
10
|
+
var changeState = function changeState(newVal) {
|
|
10
11
|
ref.current = newVal;
|
|
11
12
|
setState(newVal);
|
|
12
13
|
};
|
|
13
14
|
var getState = function getState() {
|
|
14
15
|
return ref.current;
|
|
15
16
|
};
|
|
16
|
-
return [state,
|
|
17
|
+
return [state, changeState, getState];
|
|
17
18
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type { InputProps, ModalProps } from 'antd';
|
|
3
3
|
import type { ProFormItemProps } from 'ls-pro-form';
|
|
4
4
|
export declare type ImageSelectorProps = ProFormItemProps<InputProps> & {
|
|
5
|
-
|
|
5
|
+
/** 对应后端的类,默认为RETAIL */
|
|
6
6
|
code?: string;
|
|
7
7
|
/** @name 分类(文件夹,eg:mdm,pms...) */
|
|
8
8
|
type: string;
|
|
@@ -12,20 +12,20 @@ export declare type ImageSelectorProps = ProFormItemProps<InputProps> & {
|
|
|
12
12
|
title?: string;
|
|
13
13
|
/** @name 弹框宽度 */
|
|
14
14
|
modalWidth?: string;
|
|
15
|
-
/**
|
|
16
|
-
* @name 最大值, 默认2M
|
|
17
|
-
*/
|
|
15
|
+
/** @name 最大值, 默认2M */
|
|
18
16
|
maxSize?: number;
|
|
19
|
-
|
|
17
|
+
/** 弹框的属性 */
|
|
20
18
|
modalProps?: ModalProps;
|
|
21
|
-
|
|
19
|
+
/** 是否输入框模式 */
|
|
22
20
|
isInput?: boolean;
|
|
23
|
-
|
|
21
|
+
/** 非输入框模式上传提示语 默认为:支持 png | jpg | gif 格式图片 */
|
|
24
22
|
desc?: string;
|
|
25
23
|
/** 非输入框模式下 展示图片class */
|
|
26
24
|
imageClass?: string;
|
|
27
25
|
/** 一次最多选择多少张图片 默认为 1 */
|
|
28
26
|
maxCount?: number;
|
|
27
|
+
uploadRender?: (currentImgUrl: any) => any;
|
|
28
|
+
afterSelect?: (imgUrl: string) => void;
|
|
29
29
|
};
|
|
30
30
|
declare function ImageSelector(prop: ImageSelectorProps): JSX.Element;
|
|
31
31
|
export default ImageSelector;
|
|
@@ -59,7 +59,7 @@ function ImageSelector(prop) {
|
|
|
59
59
|
_prop$allowClear = prop.allowClear,
|
|
60
60
|
allowClear = _prop$allowClear === void 0 ? true : _prop$allowClear,
|
|
61
61
|
_prop$title = prop.title,
|
|
62
|
-
title = _prop$title === void 0 ?
|
|
62
|
+
title = _prop$title === void 0 ? '选择图标' : _prop$title,
|
|
63
63
|
_prop$modalWidth = prop.modalWidth,
|
|
64
64
|
modalWidth = _prop$modalWidth === void 0 ? '600px' : _prop$modalWidth,
|
|
65
65
|
name = prop.name,
|
|
@@ -71,7 +71,7 @@ function ImageSelector(prop) {
|
|
|
71
71
|
_prop$isInput = prop.isInput,
|
|
72
72
|
isInput = _prop$isInput === void 0 ? true : _prop$isInput,
|
|
73
73
|
_prop$desc = prop.desc,
|
|
74
|
-
desc = _prop$desc === void 0 ? '支持 png | jpg | gif 格式图片' : _prop$desc,
|
|
74
|
+
desc = _prop$desc === void 0 ? '支持 png | jpg | gif | svg 格式图片' : _prop$desc,
|
|
75
75
|
_prop$imageClass = prop.imageClass,
|
|
76
76
|
imageClass = _prop$imageClass === void 0 ? '' : _prop$imageClass,
|
|
77
77
|
_prop$maxCount = prop.maxCount,
|
|
@@ -151,7 +151,7 @@ function ImageSelector(prop) {
|
|
|
151
151
|
var _formRef$current, _formRef$current$getF;
|
|
152
152
|
var val = (formRef === null || formRef === void 0 ? void 0 : (_formRef$current = formRef.current) === null || _formRef$current === void 0 ? void 0 : (_formRef$current$getF = _formRef$current.getFieldsValue) === null || _formRef$current$getF === void 0 ? void 0 : _formRef$current$getF.call(_formRef$current)) || {};
|
|
153
153
|
var url = val === null || val === void 0 ? void 0 : val[name];
|
|
154
|
-
if (!url) {
|
|
154
|
+
if (!url && (formRef === null || formRef === void 0 ? void 0 : formRef.current) && name) {
|
|
155
155
|
var _formRef$current2, _formRef$current2$get;
|
|
156
156
|
url = formRef === null || formRef === void 0 ? void 0 : (_formRef$current2 = formRef.current) === null || _formRef$current2 === void 0 ? void 0 : (_formRef$current2$get = _formRef$current2.getFieldValue) === null || _formRef$current2$get === void 0 ? void 0 : _formRef$current2$get.call(_formRef$current2, name);
|
|
157
157
|
}
|
|
@@ -187,6 +187,9 @@ function ImageSelector(prop) {
|
|
|
187
187
|
//@ts-ignore
|
|
188
188
|
val[name] = img;
|
|
189
189
|
formRef === null || formRef === void 0 ? void 0 : (_formRef$current4 = formRef.current) === null || _formRef$current4 === void 0 ? void 0 : (_formRef$current4$set = _formRef$current4.setFieldsValue) === null || _formRef$current4$set === void 0 ? void 0 : _formRef$current4$set.call(_formRef$current4, val);
|
|
190
|
+
if (prop.afterSelect) {
|
|
191
|
+
prop.afterSelect(img);
|
|
192
|
+
}
|
|
190
193
|
}
|
|
191
194
|
} else {
|
|
192
195
|
var _result$flag2;
|
|
@@ -244,6 +247,9 @@ function ImageSelector(prop) {
|
|
|
244
247
|
formRef.current.setFieldsValue(val);
|
|
245
248
|
setImgUrl(selectedUrl.join(','));
|
|
246
249
|
setVisible(false);
|
|
250
|
+
if (prop.afterSelect) {
|
|
251
|
+
prop.afterSelect(selectedUrl.join(','));
|
|
252
|
+
}
|
|
247
253
|
};
|
|
248
254
|
var clearValue = function clearValue(e) {
|
|
249
255
|
if (!e || !e.target.value) {
|
|
@@ -252,6 +258,9 @@ function ImageSelector(prop) {
|
|
|
252
258
|
var formValue = (formRef === null || formRef === void 0 ? void 0 : (_formRef$current6 = formRef.current) === null || _formRef$current6 === void 0 ? void 0 : (_formRef$current6$get = _formRef$current6.getFieldsValue) === null || _formRef$current6$get === void 0 ? void 0 : _formRef$current6$get.call(_formRef$current6)) || {};
|
|
253
259
|
formValue[name] = '';
|
|
254
260
|
formRef.current.setFieldsValue(_objectSpread({}, formValue));
|
|
261
|
+
if (prop.afterSelect) {
|
|
262
|
+
prop.afterSelect('');
|
|
263
|
+
}
|
|
255
264
|
}
|
|
256
265
|
};
|
|
257
266
|
var win = top || window;
|
|
@@ -281,7 +290,21 @@ function ImageSelector(prop) {
|
|
|
281
290
|
allowClear: allowClear,
|
|
282
291
|
ref: inputRef,
|
|
283
292
|
onChange: clearValue
|
|
284
|
-
})) : /*#__PURE__*/React.createElement(
|
|
293
|
+
})) : prop.uploadRender ? /*#__PURE__*/React.createElement(_Upload, {
|
|
294
|
+
beforeUpload: beforeUpload,
|
|
295
|
+
onChange: function onChange(info) {
|
|
296
|
+
return onUpload(info, true);
|
|
297
|
+
},
|
|
298
|
+
action: uploadImgApi,
|
|
299
|
+
showUploadList: false,
|
|
300
|
+
name: "file",
|
|
301
|
+
maxCount: 1,
|
|
302
|
+
multiple: false,
|
|
303
|
+
headers: {
|
|
304
|
+
token: localStorage.getItem('token') || ''
|
|
305
|
+
},
|
|
306
|
+
accept: ".png,.gif,.jpg,.jpeg,.bmp,.svg"
|
|
307
|
+
}, prop.uploadRender(imgUrl)) : /*#__PURE__*/React.createElement("div", {
|
|
285
308
|
className: "image-selector"
|
|
286
309
|
}, /*#__PURE__*/React.createElement(_Upload, {
|
|
287
310
|
beforeUpload: beforeUpload,
|
|
@@ -296,7 +319,7 @@ function ImageSelector(prop) {
|
|
|
296
319
|
headers: {
|
|
297
320
|
token: localStorage.getItem('token') || ''
|
|
298
321
|
},
|
|
299
|
-
accept: ".png,.gif,.jpg,.jpeg,.bmp"
|
|
322
|
+
accept: ".png,.gif,.jpg,.jpeg,.bmp,.svg"
|
|
300
323
|
}, imgUrl ? /*#__PURE__*/React.createElement("div", {
|
|
301
324
|
className: "img-wrapper"
|
|
302
325
|
}, /*#__PURE__*/React.createElement("img", {
|
|
@@ -365,7 +388,7 @@ function ImageSelector(prop) {
|
|
|
365
388
|
headers: {
|
|
366
389
|
token: localStorage.getItem('token') || ''
|
|
367
390
|
},
|
|
368
|
-
accept: ".png,.gif,.jpg,.jpeg,.bmp"
|
|
391
|
+
accept: ".png,.gif,.jpg,.jpeg,.bmp,.svg"
|
|
369
392
|
}, /*#__PURE__*/React.createElement(_Button, {
|
|
370
393
|
icon: /*#__PURE__*/React.createElement(UploadOutlined, null)
|
|
371
394
|
}, "\u4E0A\u4F20\u65B0\u56FE"))), /*#__PURE__*/React.createElement(_Button, {
|
|
@@ -412,6 +435,9 @@ function ImageSelector(prop) {
|
|
|
412
435
|
setImgUrl(o.url);
|
|
413
436
|
setSelectedUrl([o.url]);
|
|
414
437
|
setVisible(false);
|
|
438
|
+
if (prop.afterSelect) {
|
|
439
|
+
prop.afterSelect(o.url);
|
|
440
|
+
}
|
|
415
441
|
},
|
|
416
442
|
onClick: function onClick() {
|
|
417
443
|
toggleSelectImage(o.url);
|
package/lib/hooks/useGetState.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
-
import { useState, useRef } from
|
|
2
|
+
import { useState, useRef } from 'react';
|
|
3
|
+
/** 用于在useEffect, useCallback, useMemo等hooks中不传依赖时获取最新的值 */
|
|
3
4
|
export default function (initVal) {
|
|
4
5
|
var _useState = useState(initVal),
|
|
5
6
|
_useState2 = _slicedToArray(_useState, 2),
|
|
6
7
|
state = _useState2[0],
|
|
7
8
|
setState = _useState2[1];
|
|
8
9
|
var ref = useRef(initVal);
|
|
9
|
-
var
|
|
10
|
+
var changeState = function changeState(newVal) {
|
|
10
11
|
ref.current = newVal;
|
|
11
12
|
setState(newVal);
|
|
12
13
|
};
|
|
13
14
|
var getState = function getState() {
|
|
14
15
|
return ref.current;
|
|
15
16
|
};
|
|
16
|
-
return [state,
|
|
17
|
+
return [state, changeState, getState];
|
|
17
18
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ls-pro-common",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.58",
|
|
4
4
|
"description": "ls-pro-common",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"sideEffects": [
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@ant-design/icons": "^4.3.0",
|
|
24
|
-
"ls-pro-table": "^3.0.
|
|
25
|
-
"ls-pro-form": "^3.0.
|
|
24
|
+
"ls-pro-table": "^3.0.40",
|
|
25
|
+
"ls-pro-form": "^3.0.15",
|
|
26
26
|
"ls-pro-field": "^3.0.6",
|
|
27
27
|
"ls-pro-descriptions": "^3.0.1",
|
|
28
28
|
"ls-pro-card": "^3.0.3",
|