@dreamcommerce/aurora 2.8.1 → 2.8.4-1
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/build/cjs/packages/aurora/src/components/controls/components/values_syncer.js +4 -1
- package/build/cjs/packages/aurora/src/components/controls/components/values_syncer.js.map +1 -1
- package/build/cjs/packages/aurora/src/components/file_picker/use_file_picker.js +4 -1
- package/build/cjs/packages/aurora/src/components/file_picker/use_file_picker.js.map +1 -1
- package/build/cjs/packages/aurora/src/components/image_picker/index.js +20 -8
- package/build/cjs/packages/aurora/src/components/image_picker/index.js.map +1 -1
- package/build/esm/packages/aurora/src/components/controls/components/values_syncer.d.ts +2 -1
- package/build/esm/packages/aurora/src/components/controls/components/values_syncer.js +5 -2
- package/build/esm/packages/aurora/src/components/controls/components/values_syncer.js.map +1 -1
- package/build/esm/packages/aurora/src/components/file_picker/types.d.ts +5 -1
- package/build/esm/packages/aurora/src/components/file_picker/types.js +1 -1
- package/build/esm/packages/aurora/src/components/file_picker/types.js.map +1 -1
- package/build/esm/packages/aurora/src/components/file_picker/use_file_picker.js +4 -1
- package/build/esm/packages/aurora/src/components/file_picker/use_file_picker.js.map +1 -1
- package/build/esm/packages/aurora/src/components/image_picker/components/image_preview.d.ts +1 -1
- package/build/esm/packages/aurora/src/components/image_picker/index.d.ts +1 -1
- package/build/esm/packages/aurora/src/components/image_picker/index.js +20 -8
- package/build/esm/packages/aurora/src/components/image_picker/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -14,10 +14,13 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
14
14
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
15
15
|
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
16
16
|
|
|
17
|
-
const ValuesSyncer = ({ firstControl, secondControl, initialFirstValue, initialSecondValue, cssClasses }) => {
|
|
17
|
+
const ValuesSyncer = ({ firstControl, secondControl, initialFirstValue, initialSecondValue, cssClasses, onChange }) => {
|
|
18
18
|
const [locked, toggleLock] = use_toggle.useToggle(false);
|
|
19
19
|
const [firstControlValue, setFirstControlValue] = React.useState(initialFirstValue);
|
|
20
20
|
const [secondControlValue, setSecondControlValue] = React.useState(initialSecondValue);
|
|
21
|
+
React.useEffect(() => {
|
|
22
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(locked);
|
|
23
|
+
}, [locked, onChange]);
|
|
21
24
|
const setFirstControl = (value) => {
|
|
22
25
|
setFirstControlValue(value);
|
|
23
26
|
if (locked) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -8,12 +8,15 @@ var constants = require('./constants.js');
|
|
|
8
8
|
|
|
9
9
|
const useFilePicker = ({ onChange, initialFile, allowedExtensions, inputRef, initialErrors, onError }) => {
|
|
10
10
|
const [file, setFile] = React.useState(initialFile);
|
|
11
|
-
const [errors, setErrors] = React.useState(
|
|
11
|
+
const [errors, setErrors] = React.useState([]);
|
|
12
12
|
const [isDragOver, setDragOver] = React.useState(false);
|
|
13
13
|
const [isPreview, setPreview] = React.useState(true);
|
|
14
14
|
React.useEffect(() => {
|
|
15
15
|
setFile(initialFile);
|
|
16
16
|
}, [initialFile]);
|
|
17
|
+
React.useEffect(() => {
|
|
18
|
+
initialErrors && setErrors(initialErrors);
|
|
19
|
+
}, [initialErrors]);
|
|
17
20
|
const onDropFile = (event) => {
|
|
18
21
|
setErrors([]);
|
|
19
22
|
event.stopPropagation();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -31,8 +31,8 @@ const ImagePicker = React.memo(({ id, onChange, onError, errors: initialErrors,
|
|
|
31
31
|
], initialFile, name, className = '', onImageSizeUpdated }) => {
|
|
32
32
|
const [t] = useTranslation.useTranslation();
|
|
33
33
|
const inputRef = React.createRef();
|
|
34
|
-
const [imageSize, setImageSize] = React.useState(undefined);
|
|
35
34
|
const { onDropFile, onFileChange, onDragOver, onDragLeave, onFileDelete, onPreviewError, file, errors, isPreview, isDragOver } = use_file_picker.useFilePicker({ initialFile, onChange, allowedExtensions, initialErrors, onError, inputRef });
|
|
35
|
+
const [imageSize, setImageSize] = React.useState(undefined);
|
|
36
36
|
const acceptFiles = utils.getAcceptFilesParametersFromAllowedExtensions(allowedExtensions);
|
|
37
37
|
const imagePickerClassName = classnames__default['default'](main_module['default'][css_classes['default'].imagePicker], className && className);
|
|
38
38
|
const imagePickerWrapperClassName = classnames__default['default'](main_module['default'][css_classes['default'].imagePickerWrapper], file && main_module['default'][css_classes['default'].imagePickerWrapperHasFile], {
|
|
@@ -41,6 +41,20 @@ const ImagePicker = React.memo(({ id, onChange, onError, errors: initialErrors,
|
|
|
41
41
|
React.useEffect(() => {
|
|
42
42
|
onImageSizeUpdated === null || onImageSizeUpdated === void 0 ? void 0 : onImageSizeUpdated(imageSize);
|
|
43
43
|
}, [imageSize]);
|
|
44
|
+
React.useEffect(() => {
|
|
45
|
+
initialFile && setImageSizeBasedOnUrl(initialFile === null || initialFile === void 0 ? void 0 : initialFile.fileUrl);
|
|
46
|
+
}, [initialFile]);
|
|
47
|
+
const setImageSizeBasedOnUrl = (fileUrl) => {
|
|
48
|
+
createImageFromUrl(fileUrl).then((image) => {
|
|
49
|
+
setImageSize({ width: image.naturalWidth, height: image.naturalHeight });
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
const createImageFromUrl = async (url) => {
|
|
53
|
+
const img = new Image();
|
|
54
|
+
img.src = url;
|
|
55
|
+
await img.decode();
|
|
56
|
+
return img;
|
|
57
|
+
};
|
|
44
58
|
const useStyles = reactJss_esm.createUseStyles({
|
|
45
59
|
imagePickerWrapper: {
|
|
46
60
|
border: ({ isDragOver }) => (isDragOver ? '1px solid #135cc8' : ''),
|
|
@@ -52,26 +66,24 @@ const ImagePicker = React.memo(({ id, onChange, onError, errors: initialErrors,
|
|
|
52
66
|
}
|
|
53
67
|
});
|
|
54
68
|
const dragOverStyles = useStyles({ isDragOver });
|
|
55
|
-
const handlePreviewLoaded = (event) => {
|
|
56
|
-
const $image = event.target;
|
|
57
|
-
setImageSize({ width: $image.width, height: $image.height });
|
|
58
|
-
};
|
|
59
69
|
const handleOnFileDelete = () => {
|
|
60
|
-
setImageSize(undefined);
|
|
61
70
|
onFileDelete();
|
|
71
|
+
setImageSize(undefined);
|
|
62
72
|
};
|
|
63
73
|
return (React__default['default'].createElement("div", { className: imagePickerClassName },
|
|
64
74
|
React__default['default'].createElement("div", { className: `${imagePickerWrapperClassName} ${dragOverStyles.imagePickerWrapper}` },
|
|
65
75
|
file &&
|
|
66
76
|
(isPreview ? (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
67
|
-
React__default['default'].createElement(image_preview.ImagePreview, { file: file, isValid: !(errors === null || errors === void 0 ? void 0 : errors.length), onError: onPreviewError
|
|
77
|
+
React__default['default'].createElement(image_preview.ImagePreview, { file: file, isValid: !(errors === null || errors === void 0 ? void 0 : errors.length), onError: onPreviewError }),
|
|
68
78
|
React__default['default'].createElement(uploaded_image_item.UploadedImageItem, { imageSize: imageSize, file: file, isValid: !(errors === null || errors === void 0 ? void 0 : errors.length), onFileDelete: handleOnFileDelete }))) : (React__default['default'].createElement("div", null, t('No preview')))),
|
|
69
79
|
React__default['default'].createElement(image_input['default'], { onDragLeave: onDragLeave, onDragOver: onDragOver, isDragOver: isDragOver, allowedExtensions: allowedExtensions, id: id, onDropFile: onDropFile }),
|
|
70
80
|
React__default['default'].createElement("input", { onChange: onFileChange, id: id, ref: inputRef, type: "file", name: name, className: main_module['default'][css_classes['default'].imagePickerInput], accept: acceptFiles })),
|
|
71
81
|
errors && React__default['default'].createElement(errors_list.ErrorsList, { errors: errors })));
|
|
72
82
|
}, (prev, curr) => {
|
|
73
83
|
var _a, _b, _c, _d;
|
|
74
|
-
return ((_a = prev.initialFile) === null || _a === void 0 ? void 0 : _a.fileUrl) === ((_b = curr.initialFile) === null || _b === void 0 ? void 0 : _b.fileUrl) &&
|
|
84
|
+
return (((_a = prev.initialFile) === null || _a === void 0 ? void 0 : _a.fileUrl) === ((_b = curr.initialFile) === null || _b === void 0 ? void 0 : _b.fileUrl) &&
|
|
85
|
+
((_c = prev.initialFile) === null || _c === void 0 ? void 0 : _c.fileName) === ((_d = curr.initialFile) === null || _d === void 0 ? void 0 : _d.fileName) &&
|
|
86
|
+
prev.errors === curr.errors);
|
|
75
87
|
});
|
|
76
88
|
|
|
77
89
|
exports.default = ImagePicker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iEAAqE;AAClG,2BAA2B,yDAA6D;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iEAAqE;AAClG,2BAA2B,yDAA6D;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -5,6 +5,7 @@ export declare type TChildrenRenderProps = {
|
|
|
5
5
|
initialFirstValue?: unknown;
|
|
6
6
|
initialSecondValue?: unknown;
|
|
7
7
|
cssClasses?: string;
|
|
8
|
+
onChange?: (isLocked: boolean) => void;
|
|
8
9
|
};
|
|
9
|
-
declare const ValuesSyncer: ({ firstControl, secondControl, initialFirstValue, initialSecondValue, cssClasses }: TChildrenRenderProps) => JSX.Element;
|
|
10
|
+
declare const ValuesSyncer: ({ firstControl, secondControl, initialFirstValue, initialSecondValue, cssClasses, onChange }: TChildrenRenderProps) => JSX.Element;
|
|
10
11
|
export default ValuesSyncer;
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
2
|
import classnames from 'classnames';
|
|
3
3
|
import { valuesSyncer, valuesSyncerLockButton } from '../css_classes.js';
|
|
4
4
|
import { useToggle } from '../../dropdown/hooks/use_toggle.js';
|
|
5
5
|
import LockClosed from '../../../assets/lock_closed.js';
|
|
6
6
|
import LockOpened from '../../../assets/lock_opened.js';
|
|
7
7
|
|
|
8
|
-
const ValuesSyncer = ({ firstControl, secondControl, initialFirstValue, initialSecondValue, cssClasses }) => {
|
|
8
|
+
const ValuesSyncer = ({ firstControl, secondControl, initialFirstValue, initialSecondValue, cssClasses, onChange }) => {
|
|
9
9
|
const [locked, toggleLock] = useToggle(false);
|
|
10
10
|
const [firstControlValue, setFirstControlValue] = useState(initialFirstValue);
|
|
11
11
|
const [secondControlValue, setSecondControlValue] = useState(initialSecondValue);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(locked);
|
|
14
|
+
}, [locked, onChange]);
|
|
12
15
|
const setFirstControl = (value) => {
|
|
13
16
|
setFirstControlValue(value);
|
|
14
17
|
if (locked) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import React, { ChangeEvent } from 'react';
|
|
2
1
|
import { FILES_EXTENSIONS, MIME_FILE_EXTENSIONS } from "./constants";
|
|
2
|
+
import React, { ChangeEvent } from 'react';
|
|
3
3
|
import { TControlErrors } from "../controls/types";
|
|
4
4
|
export declare type TFilePickerFile = {
|
|
5
5
|
fileUrl: string;
|
|
6
6
|
fileName: string;
|
|
7
7
|
};
|
|
8
|
+
export declare type TFilePickerImageSize = {
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
};
|
|
8
12
|
export interface IFilePicker {
|
|
9
13
|
id: string;
|
|
10
14
|
name?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../src/components/file_picker/types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../src/components/file_picker/types.ts"],"names":[],"mappings":"AAAA,OAAuD,yCAAyC,CAAC;AACjG,OAAmC,OAAO,CAAC;AAE3C,OAA+B,kCAAkC,CAAC"}
|
|
@@ -4,12 +4,15 @@ import { MIME_TYPE_TO_FILE_EXTENSIONS, FILE_PICKER_ERROR } from './constants.js'
|
|
|
4
4
|
|
|
5
5
|
const useFilePicker = ({ onChange, initialFile, allowedExtensions, inputRef, initialErrors, onError }) => {
|
|
6
6
|
const [file, setFile] = useState(initialFile);
|
|
7
|
-
const [errors, setErrors] = useState(
|
|
7
|
+
const [errors, setErrors] = useState([]);
|
|
8
8
|
const [isDragOver, setDragOver] = useState(false);
|
|
9
9
|
const [isPreview, setPreview] = useState(true);
|
|
10
10
|
useEffect(() => {
|
|
11
11
|
setFile(initialFile);
|
|
12
12
|
}, [initialFile]);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
initialErrors && setErrors(initialErrors);
|
|
15
|
+
}, [initialErrors]);
|
|
13
16
|
const onDropFile = (event) => {
|
|
14
17
|
setErrors([]);
|
|
15
18
|
event.stopPropagation();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -4,7 +4,7 @@ declare type TImagePreviewProps = {
|
|
|
4
4
|
file: TFilePickerFile;
|
|
5
5
|
isValid: boolean;
|
|
6
6
|
onError: (event: React.SyntheticEvent<HTMLImageElement, Event>) => void;
|
|
7
|
-
onLoad
|
|
7
|
+
onLoad?: (event: React.SyntheticEvent<HTMLImageElement, Event>) => void;
|
|
8
8
|
};
|
|
9
9
|
export declare const ImagePreview: ({ isValid, file, onError, onLoad }: TImagePreviewProps) => JSX.Element;
|
|
10
10
|
export {};
|
|
@@ -22,8 +22,8 @@ const ImagePicker = memo(({ id, onChange, onError, errors: initialErrors, allowe
|
|
|
22
22
|
], initialFile, name, className = '', onImageSizeUpdated }) => {
|
|
23
23
|
const [t] = useTranslation();
|
|
24
24
|
const inputRef = createRef();
|
|
25
|
-
const [imageSize, setImageSize] = useState(undefined);
|
|
26
25
|
const { onDropFile, onFileChange, onDragOver, onDragLeave, onFileDelete, onPreviewError, file, errors, isPreview, isDragOver } = useFilePicker({ initialFile, onChange, allowedExtensions, initialErrors, onError, inputRef });
|
|
26
|
+
const [imageSize, setImageSize] = useState(undefined);
|
|
27
27
|
const acceptFiles = getAcceptFilesParametersFromAllowedExtensions(allowedExtensions);
|
|
28
28
|
const imagePickerClassName = classnames(styles[CSS_CLASSES.imagePicker], className && className);
|
|
29
29
|
const imagePickerWrapperClassName = classnames(styles[CSS_CLASSES.imagePickerWrapper], file && styles[CSS_CLASSES.imagePickerWrapperHasFile], {
|
|
@@ -32,6 +32,20 @@ const ImagePicker = memo(({ id, onChange, onError, errors: initialErrors, allowe
|
|
|
32
32
|
useEffect(() => {
|
|
33
33
|
onImageSizeUpdated === null || onImageSizeUpdated === void 0 ? void 0 : onImageSizeUpdated(imageSize);
|
|
34
34
|
}, [imageSize]);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
initialFile && setImageSizeBasedOnUrl(initialFile === null || initialFile === void 0 ? void 0 : initialFile.fileUrl);
|
|
37
|
+
}, [initialFile]);
|
|
38
|
+
const setImageSizeBasedOnUrl = (fileUrl) => {
|
|
39
|
+
createImageFromUrl(fileUrl).then((image) => {
|
|
40
|
+
setImageSize({ width: image.naturalWidth, height: image.naturalHeight });
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
const createImageFromUrl = async (url) => {
|
|
44
|
+
const img = new Image();
|
|
45
|
+
img.src = url;
|
|
46
|
+
await img.decode();
|
|
47
|
+
return img;
|
|
48
|
+
};
|
|
35
49
|
const useStyles = createUseStyles({
|
|
36
50
|
imagePickerWrapper: {
|
|
37
51
|
border: ({ isDragOver }) => (isDragOver ? '1px solid #135cc8' : ''),
|
|
@@ -43,26 +57,24 @@ const ImagePicker = memo(({ id, onChange, onError, errors: initialErrors, allowe
|
|
|
43
57
|
}
|
|
44
58
|
});
|
|
45
59
|
const dragOverStyles = useStyles({ isDragOver });
|
|
46
|
-
const handlePreviewLoaded = (event) => {
|
|
47
|
-
const $image = event.target;
|
|
48
|
-
setImageSize({ width: $image.width, height: $image.height });
|
|
49
|
-
};
|
|
50
60
|
const handleOnFileDelete = () => {
|
|
51
|
-
setImageSize(undefined);
|
|
52
61
|
onFileDelete();
|
|
62
|
+
setImageSize(undefined);
|
|
53
63
|
};
|
|
54
64
|
return (React.createElement("div", { className: imagePickerClassName },
|
|
55
65
|
React.createElement("div", { className: `${imagePickerWrapperClassName} ${dragOverStyles.imagePickerWrapper}` },
|
|
56
66
|
file &&
|
|
57
67
|
(isPreview ? (React.createElement(React.Fragment, null,
|
|
58
|
-
React.createElement(ImagePreview, { file: file, isValid: !(errors === null || errors === void 0 ? void 0 : errors.length), onError: onPreviewError
|
|
68
|
+
React.createElement(ImagePreview, { file: file, isValid: !(errors === null || errors === void 0 ? void 0 : errors.length), onError: onPreviewError }),
|
|
59
69
|
React.createElement(UploadedImageItem, { imageSize: imageSize, file: file, isValid: !(errors === null || errors === void 0 ? void 0 : errors.length), onFileDelete: handleOnFileDelete }))) : (React.createElement("div", null, t('No preview')))),
|
|
60
70
|
React.createElement(ImageInput, { onDragLeave: onDragLeave, onDragOver: onDragOver, isDragOver: isDragOver, allowedExtensions: allowedExtensions, id: id, onDropFile: onDropFile }),
|
|
61
71
|
React.createElement("input", { onChange: onFileChange, id: id, ref: inputRef, type: "file", name: name, className: styles[CSS_CLASSES.imagePickerInput], accept: acceptFiles })),
|
|
62
72
|
errors && React.createElement(ErrorsList, { errors: errors })));
|
|
63
73
|
}, (prev, curr) => {
|
|
64
74
|
var _a, _b, _c, _d;
|
|
65
|
-
return ((_a = prev.initialFile) === null || _a === void 0 ? void 0 : _a.fileUrl) === ((_b = curr.initialFile) === null || _b === void 0 ? void 0 : _b.fileUrl) &&
|
|
75
|
+
return (((_a = prev.initialFile) === null || _a === void 0 ? void 0 : _a.fileUrl) === ((_b = curr.initialFile) === null || _b === void 0 ? void 0 : _b.fileUrl) &&
|
|
76
|
+
((_c = prev.initialFile) === null || _c === void 0 ? void 0 : _c.fileName) === ((_d = curr.initialFile) === null || _d === void 0 ? void 0 : _d.fileName) &&
|
|
77
|
+
prev.errors === curr.errors);
|
|
66
78
|
});
|
|
67
79
|
|
|
68
80
|
export default ImagePicker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA,+BAA+B,iEAAqE;AACpG,gCAAgC,yDAA6D;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA,+BAA+B,iEAAqE;AACpG,gCAAgC,yDAA6D;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|