@paprika/uploader 3.0.15-next.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,87 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - da0d2bc: - Replaced `defaultIsDisabled` prop by `isDisabled` prop
8
+
9
+ - Added `zIndex` prop
10
+
11
+ #### why the change was made:
12
+
13
+ `defaultIsDisabled` can't be changed once mount.
14
+
15
+ #### 👷 Moving from 3.x.x to 4.x.x:
16
+
17
+ If you didn't use `defaultIsDisabled`, you don't need to do anything. Otherwise:
18
+
19
+ Before:
20
+
21
+ ```jsx
22
+ <Uploader defaultIsDisabled={true} />
23
+ ```
24
+
25
+ After:
26
+
27
+ ```jsx
28
+ <Uploader isDisabled={true} />
29
+ ```
30
+
31
+ ### Patch Changes
32
+
33
+ - Updated dependencies [0dcf307]
34
+ - Updated dependencies [0bf34d9]
35
+ - Updated dependencies [0dcf307]
36
+ - Updated dependencies [9ac6aca]
37
+ - @paprika/popover@2.0.4
38
+ - @paprika/helpers@2.3.0
39
+ - @paprika/tokens@2.0.0
40
+ - @paprika/button@1.1.12
41
+ - @paprika/icon@2.1.7
42
+ - @paprika/raw-button@1.0.12
43
+ - @paprika/stylers@1.1.6
44
+
45
+ ## 4.0.0-next.3
46
+
47
+ ### Patch Changes
48
+
49
+ - Updated dependencies [9ac6aca]
50
+ - @paprika/tokens@2.0.0-next.1
51
+ - @paprika/button@1.1.12-next.2
52
+ - @paprika/icon@2.1.7-next.1
53
+ - @paprika/popover@2.0.4-next.2
54
+ - @paprika/raw-button@1.0.12-next.1
55
+ - @paprika/stylers@1.1.6-next.1
56
+
57
+ ## 4.0.0-next.2
58
+
59
+ ### Major Changes
60
+
61
+ - da0d2bc: - Replaced `defaultIsDisabled` prop by `isDisabled` prop
62
+
63
+ - Added `zIndex` prop
64
+
65
+ #### why the change was made:
66
+
67
+ `defaultIsDisabled` can't be changed once mount.
68
+
69
+ #### 👷 Moving from 3.x.x to 4.x.x:
70
+
71
+ If you didn't use `defaultIsDisabled`, you don't need to do anything. Otherwise:
72
+
73
+ Before:
74
+
75
+ ```jsx
76
+ <Uploader defaultIsDisabled={true} />
77
+ ```
78
+
79
+ After:
80
+
81
+ ```jsx
82
+ <Uploader isDisabled={true} />
83
+ ```
84
+
3
85
  ## 3.0.15-next.1
4
86
 
5
87
  ### Patch Changes
package/README.md CHANGED
@@ -28,7 +28,7 @@ npm install @paprika/uploader
28
28
  | supportedMimeTypes | arrayOf | false | ["*/*"] | An array of accepted file extensions and/or MIME types. Note that Microsoft MIME types don't seem to be enforced. |
29
29
  | canChooseMultiple | bool | false | true | When false the uploader only accept one file per upload. |
30
30
  | children | node | true | - | children nodes |
31
- | defaultIsDisabled | bool | false | false | initial disable state for the uploader |
31
+ | isDisabled | bool | false | false | Is uploader disabled. |
32
32
  | endpoint | string | true | - | The url that will be use to upload the files. |
33
33
  | hasAutoUpload | bool | false | true | On true will upload the file as soon they are selected or dropped |
34
34
  | isBodyDroppable | bool | false | true | When true the user will be able to drop files at any part of the document.body. On false will only receive files dropped exactly on the FileInput area. |
@@ -40,6 +40,7 @@ npm install @paprika/uploader
40
40
  | onRequest | func | false | null | Let you to take over the request method |
41
41
  | onError | func | false | null | Callback fired whenever an error occurs while uploading a file. It receives the raw server error as an argument. Whatever this function returns is what is displayed in the UI. If nothing is returned, it will display the raw server error. |
42
42
  | onCancel | func | false | () => {} | Callback fired when the user cancels an uploading file. |
43
+ | zIndex | number | false | 1 | z-index for popovers inside the uploader. |
43
44
 
44
45
  <!-- end: Autogenerated - do not modify -->
45
46
  <!-- content -->
package/lib/Uploader.js CHANGED
@@ -40,7 +40,7 @@ var _useProcessFiles2 = _interopRequireDefault(require("./useProcessFiles"));
40
40
 
41
41
  var _UploaderInputPropsCollector = _interopRequireDefault(require("./components/UploaderInputPropsCollector"));
42
42
 
43
- var _excluded = ["a11yText", "canChooseMultiple", "children", "defaultIsDisabled", "endpoint", "hasAutoUpload", "headers", "isBodyDroppable", "maxFileSize", "onCancel", "onChange", "onCompleted", "onError", "onProcessed", "onRequest", "supportedMimeTypes"];
43
+ var _excluded = ["a11yText", "canChooseMultiple", "children", "endpoint", "hasAutoUpload", "headers", "isBodyDroppable", "isDisabled", "maxFileSize", "onCancel", "onChange", "onCompleted", "onError", "onProcessed", "onRequest", "supportedMimeTypes", "zIndex"];
44
44
 
45
45
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
46
46
 
@@ -73,9 +73,9 @@ var propTypes = {
73
73
  children: _propTypes["default"].node.isRequired,
74
74
 
75
75
  /**
76
- initial disable state for the uploader
76
+ Is uploader disabled.
77
77
  */
78
- defaultIsDisabled: _propTypes["default"].bool,
78
+ isDisabled: _propTypes["default"].bool,
79
79
 
80
80
  /**
81
81
  The url that will be use to upload the files.
@@ -130,12 +130,17 @@ var propTypes = {
130
130
  /**
131
131
  * Callback fired when the user cancels an uploading file.
132
132
  */
133
- onCancel: _propTypes["default"].func
133
+ onCancel: _propTypes["default"].func,
134
+
135
+ /**
136
+ * z-index for popovers inside the uploader.
137
+ */
138
+ zIndex: _propTypes["default"].number
134
139
  };
135
140
  var defaultProps = {
136
141
  a11yText: null,
137
142
  canChooseMultiple: true,
138
- defaultIsDisabled: false,
143
+ isDisabled: false,
139
144
  hasAutoUpload: true,
140
145
  headers: [],
141
146
  isBodyDroppable: true,
@@ -147,7 +152,8 @@ var defaultProps = {
147
152
  onError: null,
148
153
  onProcessed: function onProcessed() {},
149
154
  onRequest: null,
150
- supportedMimeTypes: ["*/*"]
155
+ supportedMimeTypes: ["*/*"],
156
+ zIndex: 1
151
157
  };
152
158
 
153
159
  function getDocumentBody() {
@@ -164,11 +170,11 @@ var Uploader = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
164
170
  var a11yText = props.a11yText,
165
171
  canChooseMultiple = props.canChooseMultiple,
166
172
  children = props.children,
167
- defaultIsDisabled = props.defaultIsDisabled,
168
173
  endpoint = props.endpoint,
169
174
  hasAutoUpload = props.hasAutoUpload,
170
175
  headers = props.headers,
171
176
  isBodyDroppable = props.isBodyDroppable,
177
+ isDisabled = props.isDisabled,
172
178
  maxFileSize = props.maxFileSize,
173
179
  onCancel = props.onCancel,
174
180
  onChange = props.onChange,
@@ -177,6 +183,7 @@ var Uploader = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
177
183
  onProcessed = props.onProcessed,
178
184
  onRequest = props.onRequest,
179
185
  supportedMimeTypes = props.supportedMimeTypes,
186
+ zIndex = props.zIndex,
180
187
  morePropsOnUploaderWrapper = (0, _objectWithoutProperties2["default"])(props, _excluded);
181
188
 
182
189
  var refInput = _react["default"].useRef();
@@ -196,7 +203,6 @@ var Uploader = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
196
203
  });
197
204
 
198
205
  var _useProcessFiles = (0, _useProcessFiles2["default"])({
199
- defaultIsDisabled: defaultIsDisabled,
200
206
  endpoint: endpoint,
201
207
  hasAutoUpload: hasAutoUpload,
202
208
  headers: headers,
@@ -206,14 +212,14 @@ var Uploader = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
206
212
  }),
207
213
  files = _useProcessFiles.files,
208
214
  isCompleted = _useProcessFiles.isCompleted,
209
- isDisabled = _useProcessFiles.isDisabled,
215
+ isBusy = _useProcessFiles.isBusy,
210
216
  removeFile = _useProcessFiles.removeFile,
211
217
  cancelFile = _useProcessFiles.cancelFile,
212
218
  setFiles = _useProcessFiles.setFiles,
213
219
  upload = _useProcessFiles.upload;
214
220
 
215
221
  var handleChange = _react["default"].useCallback(function (event) {
216
- if (isDisabled) return;
222
+ if (isDisabled || isBusy) return;
217
223
  var files = (0, _helpers2.getFiles)({
218
224
  event: event,
219
225
  maxFileSize: maxFileSize,
@@ -228,12 +234,11 @@ var Uploader = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
228
234
  return canChooseMultiple ? files : [files[0]]; // in case only allow one file per upload
229
235
  });
230
236
  onChange(files);
231
- }, [canChooseMultiple, endpoint, isDisabled, maxFileSize, setFiles, supportedMimeTypes, onChange]);
237
+ }, [canChooseMultiple, endpoint, isDisabled, isBusy, maxFileSize, setFiles, supportedMimeTypes, onChange]);
232
238
 
233
239
  var _useDragAndDropEvents = (0, _useDragAndDropEvents2["default"])({
234
240
  dropArea: isBodyDroppable ? getDocumentBody : getContainer(refContainer),
235
- handleChange: handleChange,
236
- defaultIsDisabled: defaultIsDisabled
241
+ handleChange: handleChange
237
242
  }),
238
243
  isDragLeave = _useDragAndDropEvents.isDragLeave,
239
244
  isDraggingOver = _useDragAndDropEvents.isDraggingOver;
@@ -244,6 +249,7 @@ var Uploader = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
244
249
  extendedInputProps: extendedInputProps,
245
250
  files: files,
246
251
  handleChange: handleChange,
252
+ isBusy: isBusy,
247
253
  isCompleted: isCompleted,
248
254
  isDisabled: isDisabled,
249
255
  isDraggingOver: isDraggingOver,
@@ -257,7 +263,8 @@ var Uploader = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
257
263
  refInput: refInput,
258
264
  removeFile: removeFile,
259
265
  supportedMimeTypes: supportedMimeTypes,
260
- upload: upload
266
+ upload: upload,
267
+ zIndex: zIndex
261
268
  };
262
269
  return /*#__PURE__*/_react["default"].createElement(UploaderContext.Provider, {
263
270
  value: value
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Uploader.js"],"names":["oneMebibyte","UploaderContext","React","createContext","propTypes","a11yText","PropTypes","string","supportedMimeTypes","arrayOf","canChooseMultiple","bool","children","node","isRequired","defaultIsDisabled","endpoint","hasAutoUpload","isBodyDroppable","maxFileSize","number","onChange","func","onCompleted","headers","object","onProcessed","onRequest","onError","onCancel","defaultProps","getDocumentBody","document","body","getContainer","refContainer","findContainer","current","Uploader","forwardRef","props","ref","morePropsOnUploaderWrapper","refInput","useRef","i18n","label","t","extendedInputProps","UploaderInputPropsCollector","useImperativeHandle","focus","files","isCompleted","isDisabled","removeFile","cancelFile","setFiles","upload","handleChange","useCallback","event","value","dropArea","isDragLeave","isDraggingOver","displayName","types","DropZone","FileList","Input","convertUnitsToMebibytes","MiB"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport useI18n from \"@paprika/l10n/lib/useI18n\";\nimport { extractChildrenProps } from \"@paprika/helpers\";\nimport { getFiles } from \"./helpers\";\nimport FileList from \"./components/FileList\";\nimport DropZone from \"./components/DropZone\";\nimport * as types from \"./types\";\nimport useDragAndDropEvents from \"./useDragAndDropEvents\";\nimport useProcessFiles from \"./useProcessFiles\";\nimport UploaderInputPropsCollector from \"./components/UploaderInputPropsCollector\";\n\nconst oneMebibyte = 1048576;\n\nexport const UploaderContext = React.createContext(null);\n\nconst propTypes = {\n /**\n Accessible message for the input[type=\"file\"].\n */\n a11yText: PropTypes.string,\n /**\n An array of accepted file extensions and/or MIME types. Note that Microsoft MIME types don't seem to be enforced.\n */\n supportedMimeTypes: PropTypes.arrayOf(PropTypes.string),\n /**\n When false the uploader only accept one file per upload.\n */\n canChooseMultiple: PropTypes.bool,\n /**\n children nodes\n */\n children: PropTypes.node.isRequired,\n /**\n initial disable state for the uploader\n */\n defaultIsDisabled: PropTypes.bool,\n /**\n The url that will be use to upload the files.\n */\n endpoint: PropTypes.string.isRequired,\n /**\n On true will upload the file as soon they are selected or dropped\n */\n hasAutoUpload: PropTypes.bool,\n /**\n When true the user will be able to drop files at any part of the document.body. On false will only receive files dropped exactly on the FileInput area.\n */\n isBodyDroppable: PropTypes.bool,\n /**\n Size in Mebibytes which is used for comparing each file that will be uploaded.\n */\n maxFileSize: PropTypes.number,\n /**\n This callback fires every time the input value has been changed.\n */\n onChange: PropTypes.func,\n /**\n Will fire once all files have been processed with the files as parameter.\n */\n onCompleted: PropTypes.func,\n /**\n you can pass an array of header objects.\n */\n headers: PropTypes.arrayOf(PropTypes.object),\n /**\n This callback fires when uploading is about to start (all files have been processed to see if they are valid type/size).\n */\n onProcessed: PropTypes.func,\n /**\n * Let you to take over the request method\n */\n onRequest: PropTypes.func,\n /**\n * Callback fired whenever an error occurs while uploading a file. It receives the raw server error as an argument. Whatever this function returns is what is displayed in the UI. If nothing is returned, it will display the raw server error.\n */\n onError: PropTypes.func,\n /**\n * Callback fired when the user cancels an uploading file.\n */\n onCancel: PropTypes.func,\n};\n\nconst defaultProps = {\n a11yText: null,\n canChooseMultiple: true,\n defaultIsDisabled: false,\n hasAutoUpload: true,\n headers: [],\n isBodyDroppable: true,\n maxFileSize: oneMebibyte * 10, // 1048576bytes * 10 = 10,485,760 Mebibytes\n onCancel: () => {},\n onChange: () => {},\n onCompleted: () => {},\n onError: null,\n onProcessed: () => {},\n onRequest: null,\n supportedMimeTypes: [\"*/*\"],\n};\n\nfunction getDocumentBody() {\n return document.body;\n}\n\nfunction getContainer(refContainer) {\n return function findContainer() {\n return refContainer.current;\n };\n}\n\nconst Uploader = React.forwardRef((props, ref) => {\n const {\n a11yText,\n canChooseMultiple,\n children,\n defaultIsDisabled,\n endpoint,\n hasAutoUpload,\n headers,\n isBodyDroppable,\n maxFileSize,\n onCancel,\n onChange,\n onCompleted,\n onError,\n onProcessed,\n onRequest,\n supportedMimeTypes,\n ...morePropsOnUploaderWrapper\n } = props;\n\n const refInput = React.useRef();\n const refContainer = React.useRef(null);\n const i18n = useI18n();\n const label = a11yText || i18n.t(\"uploader.choose_from_computer_a11y\");\n const extendedInputProps = extractChildrenProps(children, UploaderInputPropsCollector);\n\n React.useImperativeHandle(ref, () => ({\n focus: () => {\n refInput.current.focus();\n },\n }));\n\n const { files, isCompleted, isDisabled, removeFile, cancelFile, setFiles, upload } = useProcessFiles({\n defaultIsDisabled,\n endpoint,\n hasAutoUpload,\n headers,\n onCompleted,\n onProcessed,\n onRequest,\n });\n\n const handleChange = React.useCallback(\n event => {\n if (isDisabled) return;\n\n const files = getFiles({ event, maxFileSize, supportedMimeTypes, endpoint });\n setFiles(() => {\n if (refInput.current) {\n refInput.current.value = \"\";\n }\n return canChooseMultiple ? files : [files[0]]; // in case only allow one file per upload\n });\n onChange(files);\n },\n [canChooseMultiple, endpoint, isDisabled, maxFileSize, setFiles, supportedMimeTypes, onChange]\n );\n\n const { isDragLeave, isDraggingOver } = useDragAndDropEvents({\n dropArea: isBodyDroppable ? getDocumentBody : getContainer(refContainer),\n handleChange,\n defaultIsDisabled,\n });\n\n const value = {\n cancelFile,\n canChooseMultiple,\n extendedInputProps,\n files,\n handleChange,\n isCompleted,\n isDisabled,\n isDraggingOver,\n isDragLeave,\n label,\n maxFileSize,\n morePropsOnUploaderWrapper,\n onCancel,\n onError,\n refContainer,\n refInput,\n removeFile,\n supportedMimeTypes,\n upload,\n };\n\n return <UploaderContext.Provider value={value}>{children}</UploaderContext.Provider>;\n});\n\nUploader.defaultProps = defaultProps;\nUploader.propTypes = propTypes;\nUploader.displayName = \"Uploader\";\nUploader.types = types;\n\nUploader.DropZone = DropZone;\nUploader.FileList = FileList;\nUploader.Input = UploaderInputPropsCollector;\n\n// utility tool to help creating a maximum desirable size for files\nUploader.convertUnitsToMebibytes = (MiB = 1) => oneMebibyte * MiB;\n\nexport default Uploader;\n"],"file":"Uploader.js"}
1
+ {"version":3,"sources":["../src/Uploader.js"],"names":["oneMebibyte","UploaderContext","React","createContext","propTypes","a11yText","PropTypes","string","supportedMimeTypes","arrayOf","canChooseMultiple","bool","children","node","isRequired","isDisabled","endpoint","hasAutoUpload","isBodyDroppable","maxFileSize","number","onChange","func","onCompleted","headers","object","onProcessed","onRequest","onError","onCancel","zIndex","defaultProps","getDocumentBody","document","body","getContainer","refContainer","findContainer","current","Uploader","forwardRef","props","ref","morePropsOnUploaderWrapper","refInput","useRef","i18n","label","t","extendedInputProps","UploaderInputPropsCollector","useImperativeHandle","focus","files","isCompleted","isBusy","removeFile","cancelFile","setFiles","upload","handleChange","useCallback","event","value","dropArea","isDragLeave","isDraggingOver","displayName","types","DropZone","FileList","Input","convertUnitsToMebibytes","MiB"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA,IAAMA,WAAW,GAAG,OAApB;;AAEO,IAAMC,eAAe,gBAAGC,kBAAMC,aAAN,CAAoB,IAApB,CAAxB;;;AAEP,IAAMC,SAAS,GAAG;AAChB;AACF;AACA;AACEC,EAAAA,QAAQ,EAAEC,sBAAUC,MAJJ;;AAKhB;AACF;AACA;AACEC,EAAAA,kBAAkB,EAAEF,sBAAUG,OAAV,CAAkBH,sBAAUC,MAA5B,CARJ;;AAShB;AACF;AACA;AACEG,EAAAA,iBAAiB,EAAEJ,sBAAUK,IAZb;;AAahB;AACF;AACA;AACEC,EAAAA,QAAQ,EAAEN,sBAAUO,IAAV,CAAeC,UAhBT;;AAiBhB;AACF;AACA;AACEC,EAAAA,UAAU,EAAET,sBAAUK,IApBN;;AAqBhB;AACF;AACA;AACEK,EAAAA,QAAQ,EAAEV,sBAAUC,MAAV,CAAiBO,UAxBX;;AAyBhB;AACF;AACA;AACEG,EAAAA,aAAa,EAAEX,sBAAUK,IA5BT;;AA6BhB;AACF;AACA;AACEO,EAAAA,eAAe,EAAEZ,sBAAUK,IAhCX;;AAiChB;AACF;AACA;AACEQ,EAAAA,WAAW,EAAEb,sBAAUc,MApCP;;AAqChB;AACF;AACA;AACEC,EAAAA,QAAQ,EAAEf,sBAAUgB,IAxCJ;;AAyChB;AACF;AACA;AACEC,EAAAA,WAAW,EAAEjB,sBAAUgB,IA5CP;;AA6ChB;AACF;AACA;AACEE,EAAAA,OAAO,EAAElB,sBAAUG,OAAV,CAAkBH,sBAAUmB,MAA5B,CAhDO;;AAiDhB;AACF;AACA;AACEC,EAAAA,WAAW,EAAEpB,sBAAUgB,IApDP;;AAqDhB;AACF;AACA;AACEK,EAAAA,SAAS,EAAErB,sBAAUgB,IAxDL;;AAyDhB;AACF;AACA;AACEM,EAAAA,OAAO,EAAEtB,sBAAUgB,IA5DH;;AA6DhB;AACF;AACA;AACEO,EAAAA,QAAQ,EAAEvB,sBAAUgB,IAhEJ;;AAiEhB;AACF;AACA;AACEQ,EAAAA,MAAM,EAAExB,sBAAUc;AApEF,CAAlB;AAuEA,IAAMW,YAAY,GAAG;AACnB1B,EAAAA,QAAQ,EAAE,IADS;AAEnBK,EAAAA,iBAAiB,EAAE,IAFA;AAGnBK,EAAAA,UAAU,EAAE,KAHO;AAInBE,EAAAA,aAAa,EAAE,IAJI;AAKnBO,EAAAA,OAAO,EAAE,EALU;AAMnBN,EAAAA,eAAe,EAAE,IANE;AAOnBC,EAAAA,WAAW,EAAEnB,WAAW,GAAG,EAPR;AAOY;AAC/B6B,EAAAA,QAAQ,EAAE,oBAAM,CAAE,CARC;AASnBR,EAAAA,QAAQ,EAAE,oBAAM,CAAE,CATC;AAUnBE,EAAAA,WAAW,EAAE,uBAAM,CAAE,CAVF;AAWnBK,EAAAA,OAAO,EAAE,IAXU;AAYnBF,EAAAA,WAAW,EAAE,uBAAM,CAAE,CAZF;AAanBC,EAAAA,SAAS,EAAE,IAbQ;AAcnBnB,EAAAA,kBAAkB,EAAE,CAAC,KAAD,CAdD;AAenBsB,EAAAA,MAAM,EAAE;AAfW,CAArB;;AAkBA,SAASE,eAAT,GAA2B;AACzB,SAAOC,QAAQ,CAACC,IAAhB;AACD;;AAED,SAASC,YAAT,CAAsBC,YAAtB,EAAoC;AAClC,SAAO,SAASC,aAAT,GAAyB;AAC9B,WAAOD,YAAY,CAACE,OAApB;AACD,GAFD;AAGD;;AAED,IAAMC,QAAQ,gBAAGrC,kBAAMsC,UAAN,CAAiB,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAChD,MACErC,QADF,GAmBIoC,KAnBJ,CACEpC,QADF;AAAA,MAEEK,iBAFF,GAmBI+B,KAnBJ,CAEE/B,iBAFF;AAAA,MAGEE,QAHF,GAmBI6B,KAnBJ,CAGE7B,QAHF;AAAA,MAIEI,QAJF,GAmBIyB,KAnBJ,CAIEzB,QAJF;AAAA,MAKEC,aALF,GAmBIwB,KAnBJ,CAKExB,aALF;AAAA,MAMEO,OANF,GAmBIiB,KAnBJ,CAMEjB,OANF;AAAA,MAOEN,eAPF,GAmBIuB,KAnBJ,CAOEvB,eAPF;AAAA,MAQEH,UARF,GAmBI0B,KAnBJ,CAQE1B,UARF;AAAA,MASEI,WATF,GAmBIsB,KAnBJ,CASEtB,WATF;AAAA,MAUEU,QAVF,GAmBIY,KAnBJ,CAUEZ,QAVF;AAAA,MAWER,QAXF,GAmBIoB,KAnBJ,CAWEpB,QAXF;AAAA,MAYEE,WAZF,GAmBIkB,KAnBJ,CAYElB,WAZF;AAAA,MAaEK,OAbF,GAmBIa,KAnBJ,CAaEb,OAbF;AAAA,MAcEF,WAdF,GAmBIe,KAnBJ,CAcEf,WAdF;AAAA,MAeEC,SAfF,GAmBIc,KAnBJ,CAeEd,SAfF;AAAA,MAgBEnB,kBAhBF,GAmBIiC,KAnBJ,CAgBEjC,kBAhBF;AAAA,MAiBEsB,MAjBF,GAmBIW,KAnBJ,CAiBEX,MAjBF;AAAA,MAkBKa,0BAlBL,6CAmBIF,KAnBJ;;AAqBA,MAAMG,QAAQ,GAAG1C,kBAAM2C,MAAN,EAAjB;;AACA,MAAMT,YAAY,GAAGlC,kBAAM2C,MAAN,CAAa,IAAb,CAArB;;AACA,MAAMC,IAAI,GAAG,0BAAb;AACA,MAAMC,KAAK,GAAG1C,QAAQ,IAAIyC,IAAI,CAACE,CAAL,CAAO,oCAAP,CAA1B;AACA,MAAMC,kBAAkB,GAAG,mCAAqBrC,QAArB,EAA+BsC,uCAA/B,CAA3B;;AAEAhD,oBAAMiD,mBAAN,CAA0BT,GAA1B,EAA+B;AAAA,WAAO;AACpCU,MAAAA,KAAK,EAAE,iBAAM;AACXR,QAAAA,QAAQ,CAACN,OAAT,CAAiBc,KAAjB;AACD;AAHmC,KAAP;AAAA,GAA/B;;AAMA,yBAAiF,kCAAgB;AAC/FpC,IAAAA,QAAQ,EAARA,QAD+F;AAE/FC,IAAAA,aAAa,EAAbA,aAF+F;AAG/FO,IAAAA,OAAO,EAAPA,OAH+F;AAI/FD,IAAAA,WAAW,EAAXA,WAJ+F;AAK/FG,IAAAA,WAAW,EAAXA,WAL+F;AAM/FC,IAAAA,SAAS,EAATA;AAN+F,GAAhB,CAAjF;AAAA,MAAQ0B,KAAR,oBAAQA,KAAR;AAAA,MAAeC,WAAf,oBAAeA,WAAf;AAAA,MAA4BC,MAA5B,oBAA4BA,MAA5B;AAAA,MAAoCC,UAApC,oBAAoCA,UAApC;AAAA,MAAgDC,UAAhD,oBAAgDA,UAAhD;AAAA,MAA4DC,QAA5D,oBAA4DA,QAA5D;AAAA,MAAsEC,MAAtE,oBAAsEA,MAAtE;;AASA,MAAMC,YAAY,GAAG1D,kBAAM2D,WAAN,CACnB,UAAAC,KAAK,EAAI;AACP,QAAI/C,UAAU,IAAIwC,MAAlB,EAA0B;AAE1B,QAAMF,KAAK,GAAG,wBAAS;AAAES,MAAAA,KAAK,EAALA,KAAF;AAAS3C,MAAAA,WAAW,EAAXA,WAAT;AAAsBX,MAAAA,kBAAkB,EAAlBA,kBAAtB;AAA0CQ,MAAAA,QAAQ,EAARA;AAA1C,KAAT,CAAd;AACA0C,IAAAA,QAAQ,CAAC,YAAM;AACb,UAAId,QAAQ,CAACN,OAAb,EAAsB;AACpBM,QAAAA,QAAQ,CAACN,OAAT,CAAiByB,KAAjB,GAAyB,EAAzB;AACD;;AACD,aAAOrD,iBAAiB,GAAG2C,KAAH,GAAW,CAACA,KAAK,CAAC,CAAD,CAAN,CAAnC,CAJa,CAIkC;AAChD,KALO,CAAR;AAMAhC,IAAAA,QAAQ,CAACgC,KAAD,CAAR;AACD,GAZkB,EAanB,CAAC3C,iBAAD,EAAoBM,QAApB,EAA8BD,UAA9B,EAA0CwC,MAA1C,EAAkDpC,WAAlD,EAA+DuC,QAA/D,EAAyElD,kBAAzE,EAA6Fa,QAA7F,CAbmB,CAArB;;AAgBA,8BAAwC,uCAAqB;AAC3D2C,IAAAA,QAAQ,EAAE9C,eAAe,GAAGc,eAAH,GAAqBG,YAAY,CAACC,YAAD,CADC;AAE3DwB,IAAAA,YAAY,EAAZA;AAF2D,GAArB,CAAxC;AAAA,MAAQK,WAAR,yBAAQA,WAAR;AAAA,MAAqBC,cAArB,yBAAqBA,cAArB;;AAKA,MAAMH,KAAK,GAAG;AACZN,IAAAA,UAAU,EAAVA,UADY;AAEZ/C,IAAAA,iBAAiB,EAAjBA,iBAFY;AAGZuC,IAAAA,kBAAkB,EAAlBA,kBAHY;AAIZI,IAAAA,KAAK,EAALA,KAJY;AAKZO,IAAAA,YAAY,EAAZA,YALY;AAMZL,IAAAA,MAAM,EAANA,MANY;AAOZD,IAAAA,WAAW,EAAXA,WAPY;AAQZvC,IAAAA,UAAU,EAAVA,UARY;AASZmD,IAAAA,cAAc,EAAdA,cATY;AAUZD,IAAAA,WAAW,EAAXA,WAVY;AAWZlB,IAAAA,KAAK,EAALA,KAXY;AAYZ5B,IAAAA,WAAW,EAAXA,WAZY;AAaZwB,IAAAA,0BAA0B,EAA1BA,0BAbY;AAcZd,IAAAA,QAAQ,EAARA,QAdY;AAeZD,IAAAA,OAAO,EAAPA,OAfY;AAgBZQ,IAAAA,YAAY,EAAZA,YAhBY;AAiBZQ,IAAAA,QAAQ,EAARA,QAjBY;AAkBZY,IAAAA,UAAU,EAAVA,UAlBY;AAmBZhD,IAAAA,kBAAkB,EAAlBA,kBAnBY;AAoBZmD,IAAAA,MAAM,EAANA,MApBY;AAqBZ7B,IAAAA,MAAM,EAANA;AArBY,GAAd;AAwBA,sBAAO,gCAAC,eAAD,CAAiB,QAAjB;AAA0B,IAAA,KAAK,EAAEiC;AAAjC,KAAyCnD,QAAzC,CAAP;AACD,CAzFgB,CAAjB;;AA2FA2B,QAAQ,CAACR,YAAT,GAAwBA,YAAxB;AACAQ,QAAQ,CAACnC,SAAT,GAAqBA,SAArB;AACAmC,QAAQ,CAAC4B,WAAT,GAAuB,UAAvB;AACA5B,QAAQ,CAAC6B,KAAT,GAAiBA,KAAjB;AAEA7B,QAAQ,CAAC8B,QAAT,GAAoBA,oBAApB;AACA9B,QAAQ,CAAC+B,QAAT,GAAoBA,oBAApB;AACA/B,QAAQ,CAACgC,KAAT,GAAiBrB,uCAAjB,C,CAEA;;AACAX,QAAQ,CAACiC,uBAAT,GAAmC;AAAA,MAACC,GAAD,uEAAO,CAAP;AAAA,SAAazE,WAAW,GAAGyE,GAA3B;AAAA,CAAnC;;eAEelC,Q","sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport useI18n from \"@paprika/l10n/lib/useI18n\";\nimport { extractChildrenProps } from \"@paprika/helpers\";\nimport { getFiles } from \"./helpers\";\nimport FileList from \"./components/FileList\";\nimport DropZone from \"./components/DropZone\";\nimport * as types from \"./types\";\nimport useDragAndDropEvents from \"./useDragAndDropEvents\";\nimport useProcessFiles from \"./useProcessFiles\";\nimport UploaderInputPropsCollector from \"./components/UploaderInputPropsCollector\";\n\nconst oneMebibyte = 1048576;\n\nexport const UploaderContext = React.createContext(null);\n\nconst propTypes = {\n /**\n Accessible message for the input[type=\"file\"].\n */\n a11yText: PropTypes.string,\n /**\n An array of accepted file extensions and/or MIME types. Note that Microsoft MIME types don't seem to be enforced.\n */\n supportedMimeTypes: PropTypes.arrayOf(PropTypes.string),\n /**\n When false the uploader only accept one file per upload.\n */\n canChooseMultiple: PropTypes.bool,\n /**\n children nodes\n */\n children: PropTypes.node.isRequired,\n /**\n Is uploader disabled.\n */\n isDisabled: PropTypes.bool,\n /**\n The url that will be use to upload the files.\n */\n endpoint: PropTypes.string.isRequired,\n /**\n On true will upload the file as soon they are selected or dropped\n */\n hasAutoUpload: PropTypes.bool,\n /**\n When true the user will be able to drop files at any part of the document.body. On false will only receive files dropped exactly on the FileInput area.\n */\n isBodyDroppable: PropTypes.bool,\n /**\n Size in Mebibytes which is used for comparing each file that will be uploaded.\n */\n maxFileSize: PropTypes.number,\n /**\n This callback fires every time the input value has been changed.\n */\n onChange: PropTypes.func,\n /**\n Will fire once all files have been processed with the files as parameter.\n */\n onCompleted: PropTypes.func,\n /**\n you can pass an array of header objects.\n */\n headers: PropTypes.arrayOf(PropTypes.object),\n /**\n This callback fires when uploading is about to start (all files have been processed to see if they are valid type/size).\n */\n onProcessed: PropTypes.func,\n /**\n * Let you to take over the request method\n */\n onRequest: PropTypes.func,\n /**\n * Callback fired whenever an error occurs while uploading a file. It receives the raw server error as an argument. Whatever this function returns is what is displayed in the UI. If nothing is returned, it will display the raw server error.\n */\n onError: PropTypes.func,\n /**\n * Callback fired when the user cancels an uploading file.\n */\n onCancel: PropTypes.func,\n /**\n * z-index for popovers inside the uploader.\n */\n zIndex: PropTypes.number,\n};\n\nconst defaultProps = {\n a11yText: null,\n canChooseMultiple: true,\n isDisabled: false,\n hasAutoUpload: true,\n headers: [],\n isBodyDroppable: true,\n maxFileSize: oneMebibyte * 10, // 1048576bytes * 10 = 10,485,760 Mebibytes\n onCancel: () => {},\n onChange: () => {},\n onCompleted: () => {},\n onError: null,\n onProcessed: () => {},\n onRequest: null,\n supportedMimeTypes: [\"*/*\"],\n zIndex: 1,\n};\n\nfunction getDocumentBody() {\n return document.body;\n}\n\nfunction getContainer(refContainer) {\n return function findContainer() {\n return refContainer.current;\n };\n}\n\nconst Uploader = React.forwardRef((props, ref) => {\n const {\n a11yText,\n canChooseMultiple,\n children,\n endpoint,\n hasAutoUpload,\n headers,\n isBodyDroppable,\n isDisabled,\n maxFileSize,\n onCancel,\n onChange,\n onCompleted,\n onError,\n onProcessed,\n onRequest,\n supportedMimeTypes,\n zIndex,\n ...morePropsOnUploaderWrapper\n } = props;\n\n const refInput = React.useRef();\n const refContainer = React.useRef(null);\n const i18n = useI18n();\n const label = a11yText || i18n.t(\"uploader.choose_from_computer_a11y\");\n const extendedInputProps = extractChildrenProps(children, UploaderInputPropsCollector);\n\n React.useImperativeHandle(ref, () => ({\n focus: () => {\n refInput.current.focus();\n },\n }));\n\n const { files, isCompleted, isBusy, removeFile, cancelFile, setFiles, upload } = useProcessFiles({\n endpoint,\n hasAutoUpload,\n headers,\n onCompleted,\n onProcessed,\n onRequest,\n });\n\n const handleChange = React.useCallback(\n event => {\n if (isDisabled || isBusy) return;\n\n const files = getFiles({ event, maxFileSize, supportedMimeTypes, endpoint });\n setFiles(() => {\n if (refInput.current) {\n refInput.current.value = \"\";\n }\n return canChooseMultiple ? files : [files[0]]; // in case only allow one file per upload\n });\n onChange(files);\n },\n [canChooseMultiple, endpoint, isDisabled, isBusy, maxFileSize, setFiles, supportedMimeTypes, onChange]\n );\n\n const { isDragLeave, isDraggingOver } = useDragAndDropEvents({\n dropArea: isBodyDroppable ? getDocumentBody : getContainer(refContainer),\n handleChange,\n });\n\n const value = {\n cancelFile,\n canChooseMultiple,\n extendedInputProps,\n files,\n handleChange,\n isBusy,\n isCompleted,\n isDisabled,\n isDraggingOver,\n isDragLeave,\n label,\n maxFileSize,\n morePropsOnUploaderWrapper,\n onCancel,\n onError,\n refContainer,\n refInput,\n removeFile,\n supportedMimeTypes,\n upload,\n zIndex,\n };\n\n return <UploaderContext.Provider value={value}>{children}</UploaderContext.Provider>;\n});\n\nUploader.defaultProps = defaultProps;\nUploader.propTypes = propTypes;\nUploader.displayName = \"Uploader\";\nUploader.types = types;\n\nUploader.DropZone = DropZone;\nUploader.FileList = FileList;\nUploader.Input = UploaderInputPropsCollector;\n\n// utility tool to help creating a maximum desirable size for files\nUploader.convertUnitsToMebibytes = (MiB = 1) => oneMebibyte * MiB;\n\nexport default Uploader;\n"],"file":"Uploader.js"}
@@ -50,7 +50,9 @@ var DropZone = /*#__PURE__*/_react["default"].memo(function () {
50
50
  morePropsOnUploaderWrapper = _React$useContext.morePropsOnUploaderWrapper,
51
51
  refContainer = _React$useContext.refContainer,
52
52
  refInput = _React$useContext.refInput,
53
- supportedMimeTypes = _React$useContext.supportedMimeTypes;
53
+ supportedMimeTypes = _React$useContext.supportedMimeTypes,
54
+ isBusy = _React$useContext.isBusy,
55
+ isDisabled = _React$useContext.isDisabled;
54
56
 
55
57
  var uploadIconColor = isDraggingOver ? _tokens["default"].color.purpleDarken10 : _tokens["default"].color.blackLighten50;
56
58
  var body = isDraggingOver ? I18n.t("uploader.drop_files") : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, I18n.t("uploader.drop_files_here_or"), "\xA0", /*#__PURE__*/_react["default"].createElement(sc.DropZoneButton, {
@@ -60,7 +62,8 @@ var DropZone = /*#__PURE__*/_react["default"].memo(function () {
60
62
  refInput.current.click();
61
63
  },
62
64
  isSemantic: false,
63
- tabIndex: -1
65
+ tabIndex: -1,
66
+ isDisabled: isDisabled || isBusy
64
67
  }, I18n.t("uploader.choose_from_computer")));
65
68
  return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
66
69
  ref: refContainer,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/DropZone/DropZone.js"],"names":["DropZone","React","memo","I18n","useContext","UploaderContext","canChooseMultiple","extendedInputProps","handleChange","isDraggingOver","label","morePropsOnUploaderWrapper","refContainer","refInput","supportedMimeTypes","uploadIconColor","tokens","color","purpleDarken10","blackLighten50","body","t","Button","types","kind","LINK","current","click","join","stylers","spacer"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,QAAQ,gBAAGC,kBAAMC,IAAN,CAAW,YAAM;AAChC,MAAMC,IAAI,GAAG,0BAAb;;AACA,0BAUIF,kBAAMG,UAAN,CAAiBC,yBAAjB,CAVJ;AAAA,MACEC,iBADF,qBACEA,iBADF;AAAA,MAEEC,kBAFF,qBAEEA,kBAFF;AAAA,MAGEC,YAHF,qBAGEA,YAHF;AAAA,MAIEC,cAJF,qBAIEA,cAJF;AAAA,MAKEC,KALF,qBAKEA,KALF;AAAA,MAMEC,0BANF,qBAMEA,0BANF;AAAA,MAOEC,YAPF,qBAOEA,YAPF;AAAA,MAQEC,QARF,qBAQEA,QARF;AAAA,MASEC,kBATF,qBASEA,kBATF;;AAWA,MAAMC,eAAe,GAAGN,cAAc,GAAGO,mBAAOC,KAAP,CAAaC,cAAhB,GAAiCF,mBAAOC,KAAP,CAAaE,cAApF;AAEA,MAAMC,IAAI,GAAGX,cAAc,GACzBN,IAAI,CAACkB,CAAL,CAAO,qBAAP,CADyB,gBAGzB,kEACGlB,IAAI,CAACkB,CAAL,CAAO,6BAAP,CADH,uBAEE,gCAAC,EAAD,CAAI,cAAJ;AACE,uBAAgB,wBADlB;AAEE,IAAA,IAAI,EAAEC,mBAAOC,KAAP,CAAaC,IAAb,CAAkBC,IAF1B;AAGE,IAAA,OAAO,EAAE,mBAAM;AACbZ,MAAAA,QAAQ,CAACa,OAAT,CAAiBC,KAAjB;AACD,KALH;AAME,IAAA,UAAU,EAAE,KANd;AAOE,IAAA,QAAQ,EAAE,CAAC;AAPb,KASGxB,IAAI,CAACkB,CAAL,CAAO,+BAAP,CATH,CAFF,CAHF;AAmBA,sBACE;AAAK,IAAA,GAAG,EAAET,YAAV;AAAwB,uBAAgB;AAAxC,KAAuDD,0BAAvD,gBACE,gCAAC,EAAD,CAAI,KAAJ;AACE,uBAAgB,gBADlB;AAEE,IAAA,QAAQ,EAAEL,iBAFZ;AAGE,IAAA,QAAQ,EAAEE,YAHZ;AAIE,IAAA,GAAG,EAAEK,QAJP;AAKE,IAAA,IAAI,EAAC,MALP;AAME,IAAA,MAAM,EAAEC,kBAAkB,CAACc,IAAnB,CAAwB,GAAxB,CANV;AAOE,kBAAYlB;AAPd,KAQMH,kBARN,EADF,eAWE,gCAAC,EAAD,CAAI,QAAJ;AAAa,uBAAb;AAAyB,IAAA,cAAc,EAAEE;AAAzC,kBACE,gCAAC,EAAD,CAAI,YAAJ,qBACE,gCAAC,kBAAD;AAAY,uBAAgB,8BAA5B;AAA2D,IAAA,IAAI,EAAEoB,oBAAQC,MAAR,CAAe,CAAf,CAAjE;AAAoF,IAAA,KAAK,EAAEf;AAA3F,IADF,CADF,eAIE,gCAAC,EAAD,CAAI,IAAJ,QAAUK,IAAV,CAJF,CAXF,CADF;AAoBD,CAtDgB,CAAjB;;eAwDepB,Q","sourcesContent":["import React from \"react\";\nimport tokens from \"@paprika/tokens\";\nimport stylers from \"@paprika/stylers\";\nimport useI18n from \"@paprika/l10n/lib/useI18n\";\nimport Button from \"@paprika/button/lib/Button\";\nimport UploadIcon from \"@paprika/icon/lib/Upload\";\nimport { UploaderContext } from \"../../Uploader\";\nimport * as sc from \"./DropZone.styles\";\n\nconst DropZone = React.memo(() => {\n const I18n = useI18n();\n const {\n canChooseMultiple,\n extendedInputProps,\n handleChange,\n isDraggingOver,\n label,\n morePropsOnUploaderWrapper,\n refContainer,\n refInput,\n supportedMimeTypes,\n } = React.useContext(UploaderContext);\n const uploadIconColor = isDraggingOver ? tokens.color.purpleDarken10 : tokens.color.blackLighten50;\n\n const body = isDraggingOver ? (\n I18n.t(\"uploader.drop_files\")\n ) : (\n <>\n {I18n.t(\"uploader.drop_files_here_or\")}&nbsp;\n <sc.DropZoneButton\n data-pka-anchor=\"uploader-dropZone-link\"\n kind={Button.types.kind.LINK}\n onClick={() => {\n refInput.current.click();\n }}\n isSemantic={false}\n tabIndex={-1}\n >\n {I18n.t(\"uploader.choose_from_computer\")}\n </sc.DropZoneButton>\n </>\n );\n\n return (\n <div ref={refContainer} data-pka-anchor=\"uploader\" {...morePropsOnUploaderWrapper}>\n <sc.Input\n data-pka-anchor=\"uploader.input\"\n multiple={canChooseMultiple}\n onChange={handleChange}\n ref={refInput}\n type=\"file\"\n accept={supportedMimeTypes.join(\",\")}\n aria-label={label}\n {...extendedInputProps}\n />\n <sc.DropZone aria-hidden isDraggingOver={isDraggingOver}>\n <sc.DropZoneIcon>\n <UploadIcon data-pka-anchor=\"uploader-dropZone-uploadIcon\" size={stylers.spacer(4)} color={uploadIconColor} />\n </sc.DropZoneIcon>\n <sc.Body>{body}</sc.Body>\n </sc.DropZone>\n </div>\n );\n});\n\nexport default DropZone;\n"],"file":"DropZone.js"}
1
+ {"version":3,"sources":["../../../src/components/DropZone/DropZone.js"],"names":["DropZone","React","memo","I18n","useContext","UploaderContext","canChooseMultiple","extendedInputProps","handleChange","isDraggingOver","label","morePropsOnUploaderWrapper","refContainer","refInput","supportedMimeTypes","isBusy","isDisabled","uploadIconColor","tokens","color","purpleDarken10","blackLighten50","body","t","Button","types","kind","LINK","current","click","join","stylers","spacer"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,QAAQ,gBAAGC,kBAAMC,IAAN,CAAW,YAAM;AAChC,MAAMC,IAAI,GAAG,0BAAb;;AACA,0BAYIF,kBAAMG,UAAN,CAAiBC,yBAAjB,CAZJ;AAAA,MACEC,iBADF,qBACEA,iBADF;AAAA,MAEEC,kBAFF,qBAEEA,kBAFF;AAAA,MAGEC,YAHF,qBAGEA,YAHF;AAAA,MAIEC,cAJF,qBAIEA,cAJF;AAAA,MAKEC,KALF,qBAKEA,KALF;AAAA,MAMEC,0BANF,qBAMEA,0BANF;AAAA,MAOEC,YAPF,qBAOEA,YAPF;AAAA,MAQEC,QARF,qBAQEA,QARF;AAAA,MASEC,kBATF,qBASEA,kBATF;AAAA,MAUEC,MAVF,qBAUEA,MAVF;AAAA,MAWEC,UAXF,qBAWEA,UAXF;;AAaA,MAAMC,eAAe,GAAGR,cAAc,GAAGS,mBAAOC,KAAP,CAAaC,cAAhB,GAAiCF,mBAAOC,KAAP,CAAaE,cAApF;AAEA,MAAMC,IAAI,GAAGb,cAAc,GACzBN,IAAI,CAACoB,CAAL,CAAO,qBAAP,CADyB,gBAGzB,kEACGpB,IAAI,CAACoB,CAAL,CAAO,6BAAP,CADH,uBAEE,gCAAC,EAAD,CAAI,cAAJ;AACE,uBAAgB,wBADlB;AAEE,IAAA,IAAI,EAAEC,mBAAOC,KAAP,CAAaC,IAAb,CAAkBC,IAF1B;AAGE,IAAA,OAAO,EAAE,mBAAM;AACbd,MAAAA,QAAQ,CAACe,OAAT,CAAiBC,KAAjB;AACD,KALH;AAME,IAAA,UAAU,EAAE,KANd;AAOE,IAAA,QAAQ,EAAE,CAAC,CAPb;AAQE,IAAA,UAAU,EAAEb,UAAU,IAAID;AAR5B,KAUGZ,IAAI,CAACoB,CAAL,CAAO,+BAAP,CAVH,CAFF,CAHF;AAoBA,sBACE;AAAK,IAAA,GAAG,EAAEX,YAAV;AAAwB,uBAAgB;AAAxC,KAAuDD,0BAAvD,gBACE,gCAAC,EAAD,CAAI,KAAJ;AACE,uBAAgB,gBADlB;AAEE,IAAA,QAAQ,EAAEL,iBAFZ;AAGE,IAAA,QAAQ,EAAEE,YAHZ;AAIE,IAAA,GAAG,EAAEK,QAJP;AAKE,IAAA,IAAI,EAAC,MALP;AAME,IAAA,MAAM,EAAEC,kBAAkB,CAACgB,IAAnB,CAAwB,GAAxB,CANV;AAOE,kBAAYpB;AAPd,KAQMH,kBARN,EADF,eAWE,gCAAC,EAAD,CAAI,QAAJ;AAAa,uBAAb;AAAyB,IAAA,cAAc,EAAEE;AAAzC,kBACE,gCAAC,EAAD,CAAI,YAAJ,qBACE,gCAAC,kBAAD;AAAY,uBAAgB,8BAA5B;AAA2D,IAAA,IAAI,EAAEsB,oBAAQC,MAAR,CAAe,CAAf,CAAjE;AAAoF,IAAA,KAAK,EAAEf;AAA3F,IADF,CADF,eAIE,gCAAC,EAAD,CAAI,IAAJ,QAAUK,IAAV,CAJF,CAXF,CADF;AAoBD,CAzDgB,CAAjB;;eA2DetB,Q","sourcesContent":["import React from \"react\";\nimport tokens from \"@paprika/tokens\";\nimport stylers from \"@paprika/stylers\";\nimport useI18n from \"@paprika/l10n/lib/useI18n\";\nimport Button from \"@paprika/button/lib/Button\";\nimport UploadIcon from \"@paprika/icon/lib/Upload\";\nimport { UploaderContext } from \"../../Uploader\";\nimport * as sc from \"./DropZone.styles\";\n\nconst DropZone = React.memo(() => {\n const I18n = useI18n();\n const {\n canChooseMultiple,\n extendedInputProps,\n handleChange,\n isDraggingOver,\n label,\n morePropsOnUploaderWrapper,\n refContainer,\n refInput,\n supportedMimeTypes,\n isBusy,\n isDisabled,\n } = React.useContext(UploaderContext);\n const uploadIconColor = isDraggingOver ? tokens.color.purpleDarken10 : tokens.color.blackLighten50;\n\n const body = isDraggingOver ? (\n I18n.t(\"uploader.drop_files\")\n ) : (\n <>\n {I18n.t(\"uploader.drop_files_here_or\")}&nbsp;\n <sc.DropZoneButton\n data-pka-anchor=\"uploader-dropZone-link\"\n kind={Button.types.kind.LINK}\n onClick={() => {\n refInput.current.click();\n }}\n isSemantic={false}\n tabIndex={-1}\n isDisabled={isDisabled || isBusy}\n >\n {I18n.t(\"uploader.choose_from_computer\")}\n </sc.DropZoneButton>\n </>\n );\n\n return (\n <div ref={refContainer} data-pka-anchor=\"uploader\" {...morePropsOnUploaderWrapper}>\n <sc.Input\n data-pka-anchor=\"uploader.input\"\n multiple={canChooseMultiple}\n onChange={handleChange}\n ref={refInput}\n type=\"file\"\n accept={supportedMimeTypes.join(\",\")}\n aria-label={label}\n {...extendedInputProps}\n />\n <sc.DropZone aria-hidden isDraggingOver={isDraggingOver}>\n <sc.DropZoneIcon>\n <UploadIcon data-pka-anchor=\"uploader-dropZone-uploadIcon\" size={stylers.spacer(4)} color={uploadIconColor} />\n </sc.DropZoneIcon>\n <sc.Body>{body}</sc.Body>\n </sc.DropZone>\n </div>\n );\n});\n\nexport default DropZone;\n"],"file":"DropZone.js"}
@@ -85,7 +85,8 @@ function File(props) {
85
85
  onCancel = props.onCancel;
86
86
 
87
87
  var _React$useContext = _react["default"].useContext(_Uploader.UploaderContext),
88
- cancelFile = _React$useContext.cancelFile;
88
+ cancelFile = _React$useContext.cancelFile,
89
+ zIndex = _React$useContext.zIndex;
89
90
 
90
91
  var I18n = (0, _useI18n["default"])();
91
92
  var sizeWithUnits = (0, _helpers.getNumberWithUnits)(I18n, size);
@@ -97,7 +98,8 @@ function File(props) {
97
98
  case types.status.ERROR:
98
99
  return /*#__PURE__*/_react["default"].createElement(_popover["default"], {
99
100
  isDark: true,
100
- isEager: true
101
+ isEager: true,
102
+ zIndex: zIndex
101
103
  }, /*#__PURE__*/_react["default"].createElement(_popover["default"].Tip, null), /*#__PURE__*/_react["default"].createElement(_popover["default"].Trigger, {
102
104
  "aria-label": I18n.t("uploader.restart_upload", {
103
105
  name: name
@@ -120,7 +122,8 @@ function File(props) {
120
122
  default:
121
123
  return /*#__PURE__*/_react["default"].createElement(_popover["default"], {
122
124
  isDark: true,
123
- isEager: true
125
+ isEager: true,
126
+ zIndex: zIndex
124
127
  }, /*#__PURE__*/_react["default"].createElement(_popover["default"].Tip, null), /*#__PURE__*/_react["default"].createElement(_popover["default"].Trigger, null, function (handler, a11yAttributes) {
125
128
  return /*#__PURE__*/_react["default"].createElement(_button["default"].Icon, (0, _extends2["default"])({
126
129
  onMouseOver: handler,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/File/File.js"],"names":["File","defaultProps","propTypes","types","status","error","PropTypes","string","fileKey","isRequired","name","onError","func","onCancel","progress","number","size","oneOf","map","key","props","React","useContext","UploaderContext","cancelFile","I18n","sizeWithUnits","progressWithUnits","a11yProgress","Math","floor","abs","renderIcon","ERROR","t","tokens","color","orange","CANCEL","SUCCESS","green","handler","a11yAttributes","Button","Icon","kind","MINOR","SMALL","textColor","icon","getProgressText","showA11yProgress","errorMessage","IDLE"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport CheckIcon from \"@paprika/icon/lib/Check\";\nimport TimesIcon from \"@paprika/icon/lib/Times\";\nimport Caution from \"@paprika/icon/lib/Caution\";\n\nimport Button from \"@paprika/button\";\nimport useI18n from \"@paprika/l10n/lib/useI18n\";\nimport Popover from \"@paprika/popover\";\nimport tokens from \"@paprika/tokens\";\nimport { UploaderContext } from \"../../Uploader\";\nimport { getNumberWithUnits } from \"../../helpers\";\nimport * as types from \"../../types\";\nimport * as sc from \"./File.styles\";\n\nFile.defaultProps = defaultProps;\nFile.propTypes = propTypes;\n\nFile.types = {\n status: types.status,\n};\n\nconst propTypes = {\n error: PropTypes.string,\n fileKey: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n onError: PropTypes.func,\n onCancel: PropTypes.func,\n progress: PropTypes.number,\n size: PropTypes.number.isRequired,\n status: PropTypes.oneOf(Object.keys(File.types.status).map(key => File.types.status[key])).isRequired,\n};\n\nconst defaultProps = {\n error: \"\",\n onError: null,\n onCancel: null,\n progress: 0,\n};\n\nfunction File(props) {\n const { error, fileKey, name, progress, size, status, onError, onCancel } = props;\n\n const { cancelFile } = React.useContext(UploaderContext);\n const I18n = useI18n();\n const sizeWithUnits = getNumberWithUnits(I18n, size);\n const progressWithUnits = getNumberWithUnits(I18n, (size * progress) / 100);\n const a11yProgress = 25 * Math.floor(Math.abs(progress / 25)); // announce in 25% increments for screen reader\n\n function renderIcon() {\n switch (status) {\n case types.status.ERROR:\n return (\n <Popover isDark isEager>\n <Popover.Tip />\n <Popover.Trigger aria-label={I18n.t(\"uploader.restart_upload\", { name })}>\n <Caution color={tokens.color.orange} />\n </Popover.Trigger>\n <Popover.Content>\n <Popover.Card>{I18n.t(\"uploader.restart_upload\", { name })}</Popover.Card>\n </Popover.Content>\n </Popover>\n );\n case types.status.CANCEL:\n return null;\n case types.status.SUCCESS:\n return <CheckIcon color={tokens.color.green} aria-hidden />;\n default:\n return (\n <Popover isDark isEager>\n <Popover.Tip />\n <Popover.Trigger>\n {(handler, a11yAttributes) => (\n <Button.Icon\n onMouseOver={handler}\n onMouseOut={handler}\n onFocus={handler}\n onBlur={handler}\n aria-label={I18n.t(\"uploader.cancel_upload\", { name })}\n kind={Button.Icon.types.kind.MINOR}\n onClick={() => {\n cancelFile(fileKey, onCancel);\n }}\n size={Button.Icon.types.size.SMALL}\n {...a11yAttributes}\n >\n <TimesIcon color={tokens.textColor.icon} />\n </Button.Icon>\n )}\n </Popover.Trigger>\n <Popover.Content>\n <Popover.Card>{I18n.t(\"uploader.cancel_upload\", { name })}</Popover.Card>\n </Popover.Content>\n </Popover>\n );\n }\n }\n\n function getProgressText(showA11yProgress) {\n const errorMessage = typeof onError === \"function\" ? onError(error) : error;\n switch (status) {\n case types.status.ERROR:\n return showA11yProgress ? I18n.t(\"uploader.progress.error\", { name, error: errorMessage }) : errorMessage;\n case types.status.SUCCESS:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", { name, progress: I18n.t(\"uploader.progress.complete\") })\n : I18n.t(\"uploader.progress.complete\");\n case types.status.CANCEL:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", { name, progress: I18n.t(\"uploader.progress.cancelled\") })\n : I18n.t(\"uploader.progress.cancelled\");\n case types.status.IDLE:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", { name, progress: I18n.t(\"uploader.progress.idle\") })\n : I18n.t(\"uploader.progress.idle\");\n default:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", {\n name,\n progress: I18n.t(\"uploader.progress.uploading_percent\", { a11yProgress }),\n })\n : I18n.t(\"uploader.progress.uploading\", { progressWithUnits, sizeWithUnits });\n }\n }\n\n return (\n <sc.FileListItem>\n <div\n aria-label={getProgressText(true)}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={progress}\n role=\"progressbar\"\n />\n <sc.File>\n <sc.Left aria-hidden>\n <sc.Info>\n <sc.Name>{name}</sc.Name>\n <sc.ProgressText status={status}>{getProgressText(false)}</sc.ProgressText>\n </sc.Info>\n <sc.ProgressBarWrapper>\n <sc.ProgressBar data-pka-anchor=\"uploader-file-progressBar\" progress={progress} status={status} />\n </sc.ProgressBarWrapper>\n </sc.Left>\n <sc.Right status={status}>{renderIcon()}</sc.Right>\n </sc.File>\n </sc.FileListItem>\n );\n}\n\nexport default File;\n"],"file":"File.js"}
1
+ {"version":3,"sources":["../../../src/components/File/File.js"],"names":["File","defaultProps","propTypes","types","status","error","PropTypes","string","fileKey","isRequired","name","onError","func","onCancel","progress","number","size","oneOf","map","key","props","React","useContext","UploaderContext","cancelFile","zIndex","I18n","sizeWithUnits","progressWithUnits","a11yProgress","Math","floor","abs","renderIcon","ERROR","t","tokens","color","orange","CANCEL","SUCCESS","green","handler","a11yAttributes","Button","Icon","kind","MINOR","SMALL","textColor","icon","getProgressText","showA11yProgress","errorMessage","IDLE"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport CheckIcon from \"@paprika/icon/lib/Check\";\nimport TimesIcon from \"@paprika/icon/lib/Times\";\nimport Caution from \"@paprika/icon/lib/Caution\";\n\nimport Button from \"@paprika/button\";\nimport useI18n from \"@paprika/l10n/lib/useI18n\";\nimport Popover from \"@paprika/popover\";\nimport tokens from \"@paprika/tokens\";\nimport { UploaderContext } from \"../../Uploader\";\nimport { getNumberWithUnits } from \"../../helpers\";\nimport * as types from \"../../types\";\nimport * as sc from \"./File.styles\";\n\nFile.defaultProps = defaultProps;\nFile.propTypes = propTypes;\n\nFile.types = {\n status: types.status,\n};\n\nconst propTypes = {\n error: PropTypes.string,\n fileKey: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n onError: PropTypes.func,\n onCancel: PropTypes.func,\n progress: PropTypes.number,\n size: PropTypes.number.isRequired,\n status: PropTypes.oneOf(Object.keys(File.types.status).map(key => File.types.status[key])).isRequired,\n};\n\nconst defaultProps = {\n error: \"\",\n onError: null,\n onCancel: null,\n progress: 0,\n};\n\nfunction File(props) {\n const { error, fileKey, name, progress, size, status, onError, onCancel } = props;\n\n const { cancelFile, zIndex } = React.useContext(UploaderContext);\n const I18n = useI18n();\n const sizeWithUnits = getNumberWithUnits(I18n, size);\n const progressWithUnits = getNumberWithUnits(I18n, (size * progress) / 100);\n const a11yProgress = 25 * Math.floor(Math.abs(progress / 25)); // announce in 25% increments for screen reader\n\n function renderIcon() {\n switch (status) {\n case types.status.ERROR:\n return (\n <Popover isDark isEager zIndex={zIndex}>\n <Popover.Tip />\n <Popover.Trigger aria-label={I18n.t(\"uploader.restart_upload\", { name })}>\n <Caution color={tokens.color.orange} />\n </Popover.Trigger>\n <Popover.Content>\n <Popover.Card>{I18n.t(\"uploader.restart_upload\", { name })}</Popover.Card>\n </Popover.Content>\n </Popover>\n );\n case types.status.CANCEL:\n return null;\n case types.status.SUCCESS:\n return <CheckIcon color={tokens.color.green} aria-hidden />;\n default:\n return (\n <Popover isDark isEager zIndex={zIndex}>\n <Popover.Tip />\n <Popover.Trigger>\n {(handler, a11yAttributes) => (\n <Button.Icon\n onMouseOver={handler}\n onMouseOut={handler}\n onFocus={handler}\n onBlur={handler}\n aria-label={I18n.t(\"uploader.cancel_upload\", { name })}\n kind={Button.Icon.types.kind.MINOR}\n onClick={() => {\n cancelFile(fileKey, onCancel);\n }}\n size={Button.Icon.types.size.SMALL}\n {...a11yAttributes}\n >\n <TimesIcon color={tokens.textColor.icon} />\n </Button.Icon>\n )}\n </Popover.Trigger>\n <Popover.Content>\n <Popover.Card>{I18n.t(\"uploader.cancel_upload\", { name })}</Popover.Card>\n </Popover.Content>\n </Popover>\n );\n }\n }\n\n function getProgressText(showA11yProgress) {\n const errorMessage = typeof onError === \"function\" ? onError(error) : error;\n switch (status) {\n case types.status.ERROR:\n return showA11yProgress ? I18n.t(\"uploader.progress.error\", { name, error: errorMessage }) : errorMessage;\n case types.status.SUCCESS:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", { name, progress: I18n.t(\"uploader.progress.complete\") })\n : I18n.t(\"uploader.progress.complete\");\n case types.status.CANCEL:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", { name, progress: I18n.t(\"uploader.progress.cancelled\") })\n : I18n.t(\"uploader.progress.cancelled\");\n case types.status.IDLE:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", { name, progress: I18n.t(\"uploader.progress.idle\") })\n : I18n.t(\"uploader.progress.idle\");\n default:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", {\n name,\n progress: I18n.t(\"uploader.progress.uploading_percent\", { a11yProgress }),\n })\n : I18n.t(\"uploader.progress.uploading\", { progressWithUnits, sizeWithUnits });\n }\n }\n\n return (\n <sc.FileListItem>\n <div\n aria-label={getProgressText(true)}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={progress}\n role=\"progressbar\"\n />\n <sc.File>\n <sc.Left aria-hidden>\n <sc.Info>\n <sc.Name>{name}</sc.Name>\n <sc.ProgressText status={status}>{getProgressText(false)}</sc.ProgressText>\n </sc.Info>\n <sc.ProgressBarWrapper>\n <sc.ProgressBar data-pka-anchor=\"uploader-file-progressBar\" progress={progress} status={status} />\n </sc.ProgressBarWrapper>\n </sc.Left>\n <sc.Right status={status}>{renderIcon()}</sc.Right>\n </sc.File>\n </sc.FileListItem>\n );\n}\n\nexport default File;\n"],"file":"File.js"}
package/lib/index.d.ts CHANGED
@@ -11,8 +11,8 @@ interface UploaderProps {
11
11
  canChooseMultiple?: boolean;
12
12
  /** children nodes */
13
13
  children: React.ReactNode;
14
- /** initial disable state for the uploader */
15
- defaultIsDisabled?: boolean;
14
+ /** Is uploader disabled. */
15
+ isDisabled?: boolean;
16
16
  /** The url that will be use to upload the files. */
17
17
  endpoint: string;
18
18
  /** On true will upload the file as soon they are selected or dropped */
@@ -35,4 +35,6 @@ interface UploaderProps {
35
35
  onError?: (...args: any[]) => any;
36
36
  /** Callback fired when the user cancels an uploading file. */
37
37
  onCancel?: (...args: any[]) => any;
38
+ /** z-index for popovers inside the uploader. */
39
+ zIndex?: number;
38
40
  }
@@ -19,15 +19,14 @@ function useDragAndDropZoneEvents(_ref) {
19
19
  dropArea = _ref$dropArea === void 0 ? function () {
20
20
  return document.body;
21
21
  } : _ref$dropArea,
22
- defaultIsDisabled = _ref.defaultIsDisabled,
23
22
  handleChange = _ref.handleChange;
24
23
 
25
- var _React$useState = _react["default"].useState(defaultIsDisabled),
24
+ var _React$useState = _react["default"].useState(false),
26
25
  _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
27
26
  isDraggingOver = _React$useState2[0],
28
27
  setisDraggingOver = _React$useState2[1];
29
28
 
30
- var _React$useState3 = _react["default"].useState(defaultIsDisabled),
29
+ var _React$useState3 = _react["default"].useState(false),
31
30
  _React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2),
32
31
  isDragLeave = _React$useState4[0],
33
32
  setIsDragLeave = _React$useState4[1];
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/useDragAndDropEvents.js"],"names":["useDragAndDropZoneEvents","dropArea","document","body","defaultIsDisabled","handleChange","React","useState","isDraggingOver","setisDraggingOver","isDragLeave","setIsDragLeave","useEffect","onDragOver","event","preventDefault","onDragLeave","onDrop","element","addEventListener","cleanup","removeEventListener"],"mappings":";;;;;;;;;;;;;;AAAA;;AAEe,SAASA,wBAAT,OAAuG;AAAA,2BAAnEC,QAAmE;AAAA,MAAnEA,QAAmE,8BAAxD;AAAA,WAAMC,QAAQ,CAACC,IAAf;AAAA,GAAwD;AAAA,MAAnCC,iBAAmC,QAAnCA,iBAAmC;AAAA,MAAhBC,YAAgB,QAAhBA,YAAgB;;AACpH,wBAA4CC,kBAAMC,QAAN,CAAeH,iBAAf,CAA5C;AAAA;AAAA,MAAOI,cAAP;AAAA,MAAuBC,iBAAvB;;AACA,yBAAsCH,kBAAMC,QAAN,CAAeH,iBAAf,CAAtC;AAAA;AAAA,MAAOM,WAAP;AAAA,MAAoBC,cAApB;;AAEAL,oBAAMM,SAAN,CAAgB,YAAM;AACpB,aAASC,UAAT,CAAoBC,KAApB,EAA2B;AACzBL,MAAAA,iBAAiB,CAAC;AAAA,eAAM,IAAN;AAAA,OAAD,CAAjB;AACAE,MAAAA,cAAc,CAAC;AAAA,eAAM,KAAN;AAAA,OAAD,CAAd,CAFyB,CAGzB;;AACAG,MAAAA,KAAK,CAACC,cAAN;AACD;;AAED,aAASC,WAAT,GAAuB;AACrBP,MAAAA,iBAAiB,CAAC;AAAA,eAAM,KAAN;AAAA,OAAD,CAAjB;AACAE,MAAAA,cAAc,CAAC;AAAA,eAAM,IAAN;AAAA,OAAD,CAAd;AACD;;AAED,aAASM,MAAT,CAAgBH,KAAhB,EAAuB;AACrB;AACAL,MAAAA,iBAAiB,CAAC;AAAA,eAAM,KAAN;AAAA,OAAD,CAAjB;AACAE,MAAAA,cAAc,CAAC;AAAA,eAAM,IAAN;AAAA,OAAD,CAAd;AACAG,MAAAA,KAAK,CAACC,cAAN;AACAV,MAAAA,YAAY,CAACS,KAAD,CAAZ;AACD;;AAED,QAAMI,OAAO,GAAGjB,QAAQ,EAAxB;AACAiB,IAAAA,OAAO,CAACC,gBAAR,CAAyB,UAAzB,EAAqCN,UAArC,EAAiD,KAAjD;AACAK,IAAAA,OAAO,CAACC,gBAAR,CAAyB,WAAzB,EAAsCH,WAAtC,EAAmD,KAAnD;AACAE,IAAAA,OAAO,CAACC,gBAAR,CAAyB,MAAzB,EAAiCF,MAAjC,EAAyC,KAAzC;AAEA,WAAO,SAASG,OAAT,GAAmB;AACxBF,MAAAA,OAAO,CAACG,mBAAR,CAA4B,UAA5B,EAAwCR,UAAxC,EAAoD,KAApD;AACAK,MAAAA,OAAO,CAACG,mBAAR,CAA4B,WAA5B,EAAyCL,WAAzC,EAAsD,KAAtD;AACAE,MAAAA,OAAO,CAACG,mBAAR,CAA4B,MAA5B,EAAoCJ,MAApC,EAA4C,KAA5C;AACD,KAJD;AAKD,GA/BD,EA+BG,CAAChB,QAAD,EAAWI,YAAX,CA/BH;;AAiCA,SAAO;AAAEG,IAAAA,cAAc,EAAdA,cAAF;AAAkBE,IAAAA,WAAW,EAAXA;AAAlB,GAAP;AACD","sourcesContent":["import React from \"react\";\n\nexport default function useDragAndDropZoneEvents({ dropArea = () => document.body, defaultIsDisabled, handleChange }) {\n const [isDraggingOver, setisDraggingOver] = React.useState(defaultIsDisabled);\n const [isDragLeave, setIsDragLeave] = React.useState(defaultIsDisabled);\n\n React.useEffect(() => {\n function onDragOver(event) {\n setisDraggingOver(() => true);\n setIsDragLeave(() => false);\n // this prevent images from rendering on the browser\n event.preventDefault();\n }\n\n function onDragLeave() {\n setisDraggingOver(() => false);\n setIsDragLeave(() => true);\n }\n\n function onDrop(event) {\n // this prevent images from rendering on the browser\n setisDraggingOver(() => false);\n setIsDragLeave(() => true);\n event.preventDefault();\n handleChange(event);\n }\n\n const element = dropArea();\n element.addEventListener(\"dragover\", onDragOver, false);\n element.addEventListener(\"dragleave\", onDragLeave, false);\n element.addEventListener(\"drop\", onDrop, false);\n\n return function cleanup() {\n element.removeEventListener(\"dragover\", onDragOver, false);\n element.removeEventListener(\"dragleave\", onDragLeave, false);\n element.removeEventListener(\"drop\", onDrop, false);\n };\n }, [dropArea, handleChange]);\n\n return { isDraggingOver, isDragLeave };\n}\n"],"file":"useDragAndDropEvents.js"}
1
+ {"version":3,"sources":["../src/useDragAndDropEvents.js"],"names":["useDragAndDropZoneEvents","dropArea","document","body","handleChange","React","useState","isDraggingOver","setisDraggingOver","isDragLeave","setIsDragLeave","useEffect","onDragOver","event","preventDefault","onDragLeave","onDrop","element","addEventListener","cleanup","removeEventListener"],"mappings":";;;;;;;;;;;;;;AAAA;;AAEe,SAASA,wBAAT,OAAoF;AAAA,2BAAhDC,QAAgD;AAAA,MAAhDA,QAAgD,8BAArC;AAAA,WAAMC,QAAQ,CAACC,IAAf;AAAA,GAAqC;AAAA,MAAhBC,YAAgB,QAAhBA,YAAgB;;AACjG,wBAA4CC,kBAAMC,QAAN,CAAe,KAAf,CAA5C;AAAA;AAAA,MAAOC,cAAP;AAAA,MAAuBC,iBAAvB;;AACA,yBAAsCH,kBAAMC,QAAN,CAAe,KAAf,CAAtC;AAAA;AAAA,MAAOG,WAAP;AAAA,MAAoBC,cAApB;;AAEAL,oBAAMM,SAAN,CAAgB,YAAM;AACpB,aAASC,UAAT,CAAoBC,KAApB,EAA2B;AACzBL,MAAAA,iBAAiB,CAAC;AAAA,eAAM,IAAN;AAAA,OAAD,CAAjB;AACAE,MAAAA,cAAc,CAAC;AAAA,eAAM,KAAN;AAAA,OAAD,CAAd,CAFyB,CAGzB;;AACAG,MAAAA,KAAK,CAACC,cAAN;AACD;;AAED,aAASC,WAAT,GAAuB;AACrBP,MAAAA,iBAAiB,CAAC;AAAA,eAAM,KAAN;AAAA,OAAD,CAAjB;AACAE,MAAAA,cAAc,CAAC;AAAA,eAAM,IAAN;AAAA,OAAD,CAAd;AACD;;AAED,aAASM,MAAT,CAAgBH,KAAhB,EAAuB;AACrB;AACAL,MAAAA,iBAAiB,CAAC;AAAA,eAAM,KAAN;AAAA,OAAD,CAAjB;AACAE,MAAAA,cAAc,CAAC;AAAA,eAAM,IAAN;AAAA,OAAD,CAAd;AACAG,MAAAA,KAAK,CAACC,cAAN;AACAV,MAAAA,YAAY,CAACS,KAAD,CAAZ;AACD;;AAED,QAAMI,OAAO,GAAGhB,QAAQ,EAAxB;AACAgB,IAAAA,OAAO,CAACC,gBAAR,CAAyB,UAAzB,EAAqCN,UAArC,EAAiD,KAAjD;AACAK,IAAAA,OAAO,CAACC,gBAAR,CAAyB,WAAzB,EAAsCH,WAAtC,EAAmD,KAAnD;AACAE,IAAAA,OAAO,CAACC,gBAAR,CAAyB,MAAzB,EAAiCF,MAAjC,EAAyC,KAAzC;AAEA,WAAO,SAASG,OAAT,GAAmB;AACxBF,MAAAA,OAAO,CAACG,mBAAR,CAA4B,UAA5B,EAAwCR,UAAxC,EAAoD,KAApD;AACAK,MAAAA,OAAO,CAACG,mBAAR,CAA4B,WAA5B,EAAyCL,WAAzC,EAAsD,KAAtD;AACAE,MAAAA,OAAO,CAACG,mBAAR,CAA4B,MAA5B,EAAoCJ,MAApC,EAA4C,KAA5C;AACD,KAJD;AAKD,GA/BD,EA+BG,CAACf,QAAD,EAAWG,YAAX,CA/BH;;AAiCA,SAAO;AAAEG,IAAAA,cAAc,EAAdA,cAAF;AAAkBE,IAAAA,WAAW,EAAXA;AAAlB,GAAP;AACD","sourcesContent":["import React from \"react\";\n\nexport default function useDragAndDropZoneEvents({ dropArea = () => document.body, handleChange }) {\n const [isDraggingOver, setisDraggingOver] = React.useState(false);\n const [isDragLeave, setIsDragLeave] = React.useState(false);\n\n React.useEffect(() => {\n function onDragOver(event) {\n setisDraggingOver(() => true);\n setIsDragLeave(() => false);\n // this prevent images from rendering on the browser\n event.preventDefault();\n }\n\n function onDragLeave() {\n setisDraggingOver(() => false);\n setIsDragLeave(() => true);\n }\n\n function onDrop(event) {\n // this prevent images from rendering on the browser\n setisDraggingOver(() => false);\n setIsDragLeave(() => true);\n event.preventDefault();\n handleChange(event);\n }\n\n const element = dropArea();\n element.addEventListener(\"dragover\", onDragOver, false);\n element.addEventListener(\"dragleave\", onDragLeave, false);\n element.addEventListener(\"drop\", onDrop, false);\n\n return function cleanup() {\n element.removeEventListener(\"dragover\", onDragOver, false);\n element.removeEventListener(\"dragleave\", onDragLeave, false);\n element.removeEventListener(\"drop\", onDrop, false);\n };\n }, [dropArea, handleChange]);\n\n return { isDraggingOver, isDragLeave };\n}\n"],"file":"useDragAndDropEvents.js"}
@@ -70,7 +70,6 @@ function useProcessFiles(_ref) {
70
70
  onProcessed = _ref.onProcessed,
71
71
  onCompleted = _ref.onCompleted,
72
72
  endpoint = _ref.endpoint,
73
- defaultIsDisabled = _ref.defaultIsDisabled,
74
73
  headers = _ref.headers,
75
74
  onRequest = _ref.onRequest;
76
75
 
@@ -79,10 +78,10 @@ function useProcessFiles(_ref) {
79
78
  uploadingFileList = _React$useState2[0],
80
79
  setUploadingFileList = _React$useState2[1];
81
80
 
82
- var _React$useState3 = _react["default"].useState(defaultIsDisabled),
81
+ var _React$useState3 = _react["default"].useState(false),
83
82
  _React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2),
84
- isDisabled = _React$useState4[0],
85
- setIsDisabled = _React$useState4[1];
83
+ isBusy = _React$useState4[0],
84
+ setIsBusy = _React$useState4[1];
86
85
 
87
86
  var _React$useState5 = _react["default"].useState(null),
88
87
  _React$useState6 = (0, _slicedToArray2["default"])(_React$useState5, 2),
@@ -153,7 +152,7 @@ function useProcessFiles(_ref) {
153
152
  if (files.every(function (file) {
154
153
  return file.processed;
155
154
  })) {
156
- setIsDisabled(function () {
155
+ setIsBusy(function () {
157
156
  return false;
158
157
  });
159
158
  setisCompleted(function () {
@@ -208,7 +207,7 @@ function useProcessFiles(_ref) {
208
207
  }));
209
208
  }
210
209
 
211
- if (files.length && !isSameList(files, uploadingFileList) && !isDisabled) {
210
+ if (files.length && !isSameList(files, uploadingFileList) && !isBusy) {
212
211
  if (files.every(function (file) {
213
212
  return !file.isValid || file.status === types.status.SUCCESS;
214
213
  })) {
@@ -218,7 +217,7 @@ function useProcessFiles(_ref) {
218
217
  setUploadingFileList(function () {
219
218
  return JSON.parse((0, _stringify["default"])(files));
220
219
  });
221
- setIsDisabled(function () {
220
+ setIsBusy(function () {
222
221
  return true;
223
222
  });
224
223
  setisCompleted(function () {
@@ -239,7 +238,7 @@ function useProcessFiles(_ref) {
239
238
  }
240
239
  });
241
240
  }
242
- }, [files, uploadingFileList, isDisabled, onCompleted, endpoint, headers, onRequest, onProcessed]);
241
+ }, [files, uploadingFileList, isBusy, onCompleted, endpoint, headers, onRequest, onProcessed]);
243
242
 
244
243
  _react["default"].useEffect(function () {
245
244
  if (hasAutoUpload) {
@@ -250,7 +249,7 @@ function useProcessFiles(_ref) {
250
249
  return {
251
250
  files: files,
252
251
  setFiles: setFiles,
253
- isDisabled: isDisabled,
252
+ isBusy: isBusy,
254
253
  isCompleted: isCompleted,
255
254
  upload: upload,
256
255
  removeFile: removeFile,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/useProcessFiles.js"],"names":["getFileByIndex","key","files","index","some","file","i","setFile","callback","cloneFiles","slice","f","updatedFile","useProcessFiles","hasAutoUpload","onProcessed","onCompleted","endpoint","defaultIsDisabled","headers","onRequest","React","useState","uploadingFileList","setUploadingFileList","isDisabled","setIsDisabled","isCompleted","setisCompleted","setFiles","cancelFile","onCancelProp","status","types","PROCESSING","WAITINGFORSERVER","request","abort","fileItem","CANCEL","processed","removeFile","IDLE","ERROR","fileClones","splice","uploadingFileListClone","upload","useCallback","isSameList","sameList","length","every","areAllFilesProccessed","onSuccess","response","isValid","SUCCESS","onError","error","isServerValid","onProgress","percent","progress","JSON","parse","forEach","useEffect"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport * as types from \"./types\";\nimport { uploadToServer } from \"./helpers\";\n\nfunction getFileByIndex(key, files) {\n let index = null;\n\n files.some((file, i) => {\n if (file.key === key) {\n index = i;\n return true;\n }\n return false;\n });\n\n return index !== null ? index : null;\n}\n\nconst setFile = (file, callback) => files => {\n const cloneFiles = files.slice(0);\n let index = null;\n files.some((f, i) => {\n if (f.key === file.key) {\n index = i;\n return true;\n }\n return false;\n });\n\n if (index !== null) {\n const updatedFile = callback(cloneFiles[index]);\n cloneFiles[index] = updatedFile;\n }\n\n return cloneFiles;\n};\n\nexport default function useProcessFiles({\n hasAutoUpload,\n onProcessed,\n onCompleted,\n endpoint,\n defaultIsDisabled,\n headers,\n onRequest,\n}) {\n const [uploadingFileList, setUploadingFileList] = React.useState([]);\n const [isDisabled, setIsDisabled] = React.useState(defaultIsDisabled);\n const [isCompleted, setisCompleted] = React.useState(null);\n const [files, setFiles] = React.useState([]);\n\n function cancelFile(key, onCancelProp = null) {\n const index = getFileByIndex(key, files);\n if (index !== null) {\n if (files[index].status === types.status.PROCESSING || files[index].status === types.status.WAITINGFORSERVER) {\n const file = files[index];\n\n // will stop the uploading\n file.request.abort();\n\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.status = types.status.CANCEL;\n file.processed = true;\n return fileItem;\n })\n );\n\n if (typeof onCancelProp === \"function\") {\n onCancelProp(file);\n }\n }\n }\n }\n\n function removeFile(key) {\n const index = getFileByIndex(key, files);\n\n if (index !== null) {\n /*\n Removing a file while is been uploaded mess with areAllFilesProccessed() function,\n as well give a wrong impression the request has been cancel to the server.\n Therefore is only possible to remove files once they were processed or on idle status.\n */\n if (isCompleted || files[index].status === types.status.IDLE || files[index].status === types.status.ERROR) {\n const fileClones = files.slice(0);\n fileClones.splice(index, 1);\n\n const uploadingFileListClone = uploadingFileList.slice(0);\n uploadingFileListClone.splice(index, 1);\n\n setFiles(() => fileClones);\n setUploadingFileList(() => uploadingFileListClone);\n }\n }\n }\n\n const upload = React.useCallback(() => {\n const isSameList = (files, uploadingFileList) => {\n const sameList =\n files.length === uploadingFileList.length &&\n files.every((file, index) => file.key === uploadingFileList[index].key);\n\n return sameList;\n };\n\n function areAllFilesProccessed() {\n if (files.every(file => file.processed)) {\n setIsDisabled(() => false);\n setisCompleted(() => true);\n onCompleted(files);\n }\n }\n\n function onSuccess({ file, response }) {\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.isValid = true;\n file.processed = true;\n file.response = response;\n file.status = types.status.SUCCESS;\n return fileItem;\n })\n );\n\n areAllFilesProccessed();\n }\n\n function onError({ file, error }) {\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.status = types.status.ERROR;\n file.error = error;\n file.processed = true;\n file.isValid = false;\n file.isServerValid = false;\n return fileItem;\n })\n );\n\n areAllFilesProccessed();\n }\n\n function onProgress({ file, percent }) {\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.progress = percent;\n file.status = types.status.PROCESSING;\n\n if (percent === 100) {\n file.status = types.status.WAITINGFORSERVER;\n }\n return fileItem;\n })\n );\n }\n\n if (files.length && !isSameList(files, uploadingFileList) && !isDisabled) {\n if (files.every(file => !file.isValid || file.status === types.status.SUCCESS)) {\n return;\n }\n\n setUploadingFileList(() => JSON.parse(JSON.stringify(files)));\n setIsDisabled(() => true);\n setisCompleted(() => null);\n onProcessed(files);\n\n files.forEach(file => {\n if (file.isValid && file.status !== types.status.SUCCESS) {\n uploadToServer({ file, endpoint, onProgress, onSuccess, onError, headers, onRequest });\n }\n });\n }\n }, [files, uploadingFileList, isDisabled, onCompleted, endpoint, headers, onRequest, onProcessed]);\n\n React.useEffect(() => {\n if (hasAutoUpload) {\n upload();\n }\n }, [files, hasAutoUpload, upload]);\n\n return { files, setFiles, isDisabled, isCompleted, upload, removeFile, cancelFile };\n}\n"],"file":"useProcessFiles.js"}
1
+ {"version":3,"sources":["../src/useProcessFiles.js"],"names":["getFileByIndex","key","files","index","some","file","i","setFile","callback","cloneFiles","slice","f","updatedFile","useProcessFiles","hasAutoUpload","onProcessed","onCompleted","endpoint","headers","onRequest","React","useState","uploadingFileList","setUploadingFileList","isBusy","setIsBusy","isCompleted","setisCompleted","setFiles","cancelFile","onCancelProp","status","types","PROCESSING","WAITINGFORSERVER","request","abort","fileItem","CANCEL","processed","removeFile","IDLE","ERROR","fileClones","splice","uploadingFileListClone","upload","useCallback","isSameList","sameList","length","every","areAllFilesProccessed","onSuccess","response","isValid","SUCCESS","onError","error","isServerValid","onProgress","percent","progress","JSON","parse","forEach","useEffect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAEA,SAASA,cAAT,CAAwBC,GAAxB,EAA6BC,KAA7B,EAAoC;AAClC,MAAIC,KAAK,GAAG,IAAZ;AAEAD,EAAAA,KAAK,CAACE,IAAN,CAAW,UAACC,IAAD,EAAOC,CAAP,EAAa;AACtB,QAAID,IAAI,CAACJ,GAAL,KAAaA,GAAjB,EAAsB;AACpBE,MAAAA,KAAK,GAAGG,CAAR;AACA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD,GAND;AAQA,SAAOH,KAAK,KAAK,IAAV,GAAiBA,KAAjB,GAAyB,IAAhC;AACD;;AAED,IAAMI,OAAO,GAAG,SAAVA,OAAU,CAACF,IAAD,EAAOG,QAAP;AAAA,SAAoB,UAAAN,KAAK,EAAI;AAC3C,QAAMO,UAAU,GAAGP,KAAK,CAACQ,KAAN,CAAY,CAAZ,CAAnB;AACA,QAAIP,KAAK,GAAG,IAAZ;AACAD,IAAAA,KAAK,CAACE,IAAN,CAAW,UAACO,CAAD,EAAIL,CAAJ,EAAU;AACnB,UAAIK,CAAC,CAACV,GAAF,KAAUI,IAAI,CAACJ,GAAnB,EAAwB;AACtBE,QAAAA,KAAK,GAAGG,CAAR;AACA,eAAO,IAAP;AACD;;AACD,aAAO,KAAP;AACD,KAND;;AAQA,QAAIH,KAAK,KAAK,IAAd,EAAoB;AAClB,UAAMS,WAAW,GAAGJ,QAAQ,CAACC,UAAU,CAACN,KAAD,CAAX,CAA5B;AACAM,MAAAA,UAAU,CAACN,KAAD,CAAV,GAAoBS,WAApB;AACD;;AAED,WAAOH,UAAP;AACD,GAjBe;AAAA,CAAhB;;AAmBe,SAASI,eAAT,OAAoG;AAAA,MAAzEC,aAAyE,QAAzEA,aAAyE;AAAA,MAA1DC,WAA0D,QAA1DA,WAA0D;AAAA,MAA7CC,WAA6C,QAA7CA,WAA6C;AAAA,MAAhCC,QAAgC,QAAhCA,QAAgC;AAAA,MAAtBC,OAAsB,QAAtBA,OAAsB;AAAA,MAAbC,SAAa,QAAbA,SAAa;;AACjH,wBAAkDC,kBAAMC,QAAN,CAAe,EAAf,CAAlD;AAAA;AAAA,MAAOC,iBAAP;AAAA,MAA0BC,oBAA1B;;AACA,yBAA4BH,kBAAMC,QAAN,CAAe,KAAf,CAA5B;AAAA;AAAA,MAAOG,MAAP;AAAA,MAAeC,SAAf;;AACA,yBAAsCL,kBAAMC,QAAN,CAAe,IAAf,CAAtC;AAAA;AAAA,MAAOK,WAAP;AAAA,MAAoBC,cAApB;;AACA,yBAA0BP,kBAAMC,QAAN,CAAe,EAAf,CAA1B;AAAA;AAAA,MAAOnB,KAAP;AAAA,MAAc0B,QAAd;;AAEA,WAASC,UAAT,CAAoB5B,GAApB,EAA8C;AAAA,QAArB6B,YAAqB,uEAAN,IAAM;AAC5C,QAAM3B,KAAK,GAAGH,cAAc,CAACC,GAAD,EAAMC,KAAN,CAA5B;;AACA,QAAIC,KAAK,KAAK,IAAd,EAAoB;AAClB,UAAID,KAAK,CAACC,KAAD,CAAL,CAAa4B,MAAb,KAAwBC,KAAK,CAACD,MAAN,CAAaE,UAArC,IAAmD/B,KAAK,CAACC,KAAD,CAAL,CAAa4B,MAAb,KAAwBC,KAAK,CAACD,MAAN,CAAaG,gBAA5F,EAA8G;AAC5G,YAAM7B,IAAI,GAAGH,KAAK,CAACC,KAAD,CAAlB,CAD4G,CAG5G;;AACAE,QAAAA,IAAI,CAAC8B,OAAL,CAAaC,KAAb;AAEAR,QAAAA,QAAQ,CACNrB,OAAO,CAACF,IAAD,EAAO,UAAAgC,QAAQ,EAAI;AACxB,cAAMhC,IAAI,GAAGgC,QAAb;AACAhC,UAAAA,IAAI,CAAC0B,MAAL,GAAcC,KAAK,CAACD,MAAN,CAAaO,MAA3B;AACAjC,UAAAA,IAAI,CAACkC,SAAL,GAAiB,IAAjB;AACA,iBAAOF,QAAP;AACD,SALM,CADD,CAAR;;AASA,YAAI,OAAOP,YAAP,KAAwB,UAA5B,EAAwC;AACtCA,UAAAA,YAAY,CAACzB,IAAD,CAAZ;AACD;AACF;AACF;AACF;;AAED,WAASmC,UAAT,CAAoBvC,GAApB,EAAyB;AACvB,QAAME,KAAK,GAAGH,cAAc,CAACC,GAAD,EAAMC,KAAN,CAA5B;;AAEA,QAAIC,KAAK,KAAK,IAAd,EAAoB;AAClB;AACN;AACA;AACA;AACA;AACM,UAAIuB,WAAW,IAAIxB,KAAK,CAACC,KAAD,CAAL,CAAa4B,MAAb,KAAwBC,KAAK,CAACD,MAAN,CAAaU,IAApD,IAA4DvC,KAAK,CAACC,KAAD,CAAL,CAAa4B,MAAb,KAAwBC,KAAK,CAACD,MAAN,CAAaW,KAArG,EAA4G;AAC1G,YAAMC,UAAU,GAAGzC,KAAK,CAACQ,KAAN,CAAY,CAAZ,CAAnB;AACAiC,QAAAA,UAAU,CAACC,MAAX,CAAkBzC,KAAlB,EAAyB,CAAzB;AAEA,YAAM0C,sBAAsB,GAAGvB,iBAAiB,CAACZ,KAAlB,CAAwB,CAAxB,CAA/B;AACAmC,QAAAA,sBAAsB,CAACD,MAAvB,CAA8BzC,KAA9B,EAAqC,CAArC;AAEAyB,QAAAA,QAAQ,CAAC;AAAA,iBAAMe,UAAN;AAAA,SAAD,CAAR;AACApB,QAAAA,oBAAoB,CAAC;AAAA,iBAAMsB,sBAAN;AAAA,SAAD,CAApB;AACD;AACF;AACF;;AAED,MAAMC,MAAM,GAAG1B,kBAAM2B,WAAN,CAAkB,YAAM;AACrC,QAAMC,UAAU,GAAG,SAAbA,UAAa,CAAC9C,KAAD,EAAQoB,iBAAR,EAA8B;AAC/C,UAAM2B,QAAQ,GACZ/C,KAAK,CAACgD,MAAN,KAAiB5B,iBAAiB,CAAC4B,MAAnC,IACAhD,KAAK,CAACiD,KAAN,CAAY,UAAC9C,IAAD,EAAOF,KAAP;AAAA,eAAiBE,IAAI,CAACJ,GAAL,KAAaqB,iBAAiB,CAACnB,KAAD,CAAjB,CAAyBF,GAAvD;AAAA,OAAZ,CAFF;AAIA,aAAOgD,QAAP;AACD,KAND;;AAQA,aAASG,qBAAT,GAAiC;AAC/B,UAAIlD,KAAK,CAACiD,KAAN,CAAY,UAAA9C,IAAI;AAAA,eAAIA,IAAI,CAACkC,SAAT;AAAA,OAAhB,CAAJ,EAAyC;AACvCd,QAAAA,SAAS,CAAC;AAAA,iBAAM,KAAN;AAAA,SAAD,CAAT;AACAE,QAAAA,cAAc,CAAC;AAAA,iBAAM,IAAN;AAAA,SAAD,CAAd;AACAX,QAAAA,WAAW,CAACd,KAAD,CAAX;AACD;AACF;;AAED,aAASmD,SAAT,QAAuC;AAAA,UAAlBhD,IAAkB,SAAlBA,IAAkB;AAAA,UAAZiD,QAAY,SAAZA,QAAY;AACrC1B,MAAAA,QAAQ,CACNrB,OAAO,CAACF,IAAD,EAAO,UAAAgC,QAAQ,EAAI;AACxB,YAAMhC,IAAI,GAAGgC,QAAb;AACAhC,QAAAA,IAAI,CAACkD,OAAL,GAAe,IAAf;AACAlD,QAAAA,IAAI,CAACkC,SAAL,GAAiB,IAAjB;AACAlC,QAAAA,IAAI,CAACiD,QAAL,GAAgBA,QAAhB;AACAjD,QAAAA,IAAI,CAAC0B,MAAL,GAAcC,KAAK,CAACD,MAAN,CAAayB,OAA3B;AACA,eAAOnB,QAAP;AACD,OAPM,CADD,CAAR;AAWAe,MAAAA,qBAAqB;AACtB;;AAED,aAASK,OAAT,QAAkC;AAAA,UAAfpD,IAAe,SAAfA,IAAe;AAAA,UAATqD,KAAS,SAATA,KAAS;AAChC9B,MAAAA,QAAQ,CACNrB,OAAO,CAACF,IAAD,EAAO,UAAAgC,QAAQ,EAAI;AACxB,YAAMhC,IAAI,GAAGgC,QAAb;AACAhC,QAAAA,IAAI,CAAC0B,MAAL,GAAcC,KAAK,CAACD,MAAN,CAAaW,KAA3B;AACArC,QAAAA,IAAI,CAACqD,KAAL,GAAaA,KAAb;AACArD,QAAAA,IAAI,CAACkC,SAAL,GAAiB,IAAjB;AACAlC,QAAAA,IAAI,CAACkD,OAAL,GAAe,KAAf;AACAlD,QAAAA,IAAI,CAACsD,aAAL,GAAqB,KAArB;AACA,eAAOtB,QAAP;AACD,OARM,CADD,CAAR;AAYAe,MAAAA,qBAAqB;AACtB;;AAED,aAASQ,UAAT,QAAuC;AAAA,UAAjBvD,IAAiB,SAAjBA,IAAiB;AAAA,UAAXwD,OAAW,SAAXA,OAAW;AACrCjC,MAAAA,QAAQ,CACNrB,OAAO,CAACF,IAAD,EAAO,UAAAgC,QAAQ,EAAI;AACxB,YAAMhC,IAAI,GAAGgC,QAAb;AACAhC,QAAAA,IAAI,CAACyD,QAAL,GAAgBD,OAAhB;AACAxD,QAAAA,IAAI,CAAC0B,MAAL,GAAcC,KAAK,CAACD,MAAN,CAAaE,UAA3B;;AAEA,YAAI4B,OAAO,KAAK,GAAhB,EAAqB;AACnBxD,UAAAA,IAAI,CAAC0B,MAAL,GAAcC,KAAK,CAACD,MAAN,CAAaG,gBAA3B;AACD;;AACD,eAAOG,QAAP;AACD,OATM,CADD,CAAR;AAYD;;AAED,QAAInC,KAAK,CAACgD,MAAN,IAAgB,CAACF,UAAU,CAAC9C,KAAD,EAAQoB,iBAAR,CAA3B,IAAyD,CAACE,MAA9D,EAAsE;AACpE,UAAItB,KAAK,CAACiD,KAAN,CAAY,UAAA9C,IAAI;AAAA,eAAI,CAACA,IAAI,CAACkD,OAAN,IAAiBlD,IAAI,CAAC0B,MAAL,KAAgBC,KAAK,CAACD,MAAN,CAAayB,OAAlD;AAAA,OAAhB,CAAJ,EAAgF;AAC9E;AACD;;AAEDjC,MAAAA,oBAAoB,CAAC;AAAA,eAAMwC,IAAI,CAACC,KAAL,CAAW,2BAAe9D,KAAf,CAAX,CAAN;AAAA,OAAD,CAApB;AACAuB,MAAAA,SAAS,CAAC;AAAA,eAAM,IAAN;AAAA,OAAD,CAAT;AACAE,MAAAA,cAAc,CAAC;AAAA,eAAM,IAAN;AAAA,OAAD,CAAd;AACAZ,MAAAA,WAAW,CAACb,KAAD,CAAX;AAEAA,MAAAA,KAAK,CAAC+D,OAAN,CAAc,UAAA5D,IAAI,EAAI;AACpB,YAAIA,IAAI,CAACkD,OAAL,IAAgBlD,IAAI,CAAC0B,MAAL,KAAgBC,KAAK,CAACD,MAAN,CAAayB,OAAjD,EAA0D;AACxD,uCAAe;AAAEnD,YAAAA,IAAI,EAAJA,IAAF;AAAQY,YAAAA,QAAQ,EAARA,QAAR;AAAkB2C,YAAAA,UAAU,EAAVA,UAAlB;AAA8BP,YAAAA,SAAS,EAATA,SAA9B;AAAyCI,YAAAA,OAAO,EAAPA,OAAzC;AAAkDvC,YAAAA,OAAO,EAAPA,OAAlD;AAA2DC,YAAAA,SAAS,EAATA;AAA3D,WAAf;AACD;AACF,OAJD;AAKD;AACF,GA/Ec,EA+EZ,CAACjB,KAAD,EAAQoB,iBAAR,EAA2BE,MAA3B,EAAmCR,WAAnC,EAAgDC,QAAhD,EAA0DC,OAA1D,EAAmEC,SAAnE,EAA8EJ,WAA9E,CA/EY,CAAf;;AAiFAK,oBAAM8C,SAAN,CAAgB,YAAM;AACpB,QAAIpD,aAAJ,EAAmB;AACjBgC,MAAAA,MAAM;AACP;AACF,GAJD,EAIG,CAAC5C,KAAD,EAAQY,aAAR,EAAuBgC,MAAvB,CAJH;;AAMA,SAAO;AAAE5C,IAAAA,KAAK,EAALA,KAAF;AAAS0B,IAAAA,QAAQ,EAARA,QAAT;AAAmBJ,IAAAA,MAAM,EAANA,MAAnB;AAA2BE,IAAAA,WAAW,EAAXA,WAA3B;AAAwCoB,IAAAA,MAAM,EAANA,MAAxC;AAAgDN,IAAAA,UAAU,EAAVA,UAAhD;AAA4DX,IAAAA,UAAU,EAAVA;AAA5D,GAAP;AACD","sourcesContent":["import React from \"react\";\nimport * as types from \"./types\";\nimport { uploadToServer } from \"./helpers\";\n\nfunction getFileByIndex(key, files) {\n let index = null;\n\n files.some((file, i) => {\n if (file.key === key) {\n index = i;\n return true;\n }\n return false;\n });\n\n return index !== null ? index : null;\n}\n\nconst setFile = (file, callback) => files => {\n const cloneFiles = files.slice(0);\n let index = null;\n files.some((f, i) => {\n if (f.key === file.key) {\n index = i;\n return true;\n }\n return false;\n });\n\n if (index !== null) {\n const updatedFile = callback(cloneFiles[index]);\n cloneFiles[index] = updatedFile;\n }\n\n return cloneFiles;\n};\n\nexport default function useProcessFiles({ hasAutoUpload, onProcessed, onCompleted, endpoint, headers, onRequest }) {\n const [uploadingFileList, setUploadingFileList] = React.useState([]);\n const [isBusy, setIsBusy] = React.useState(false);\n const [isCompleted, setisCompleted] = React.useState(null);\n const [files, setFiles] = React.useState([]);\n\n function cancelFile(key, onCancelProp = null) {\n const index = getFileByIndex(key, files);\n if (index !== null) {\n if (files[index].status === types.status.PROCESSING || files[index].status === types.status.WAITINGFORSERVER) {\n const file = files[index];\n\n // will stop the uploading\n file.request.abort();\n\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.status = types.status.CANCEL;\n file.processed = true;\n return fileItem;\n })\n );\n\n if (typeof onCancelProp === \"function\") {\n onCancelProp(file);\n }\n }\n }\n }\n\n function removeFile(key) {\n const index = getFileByIndex(key, files);\n\n if (index !== null) {\n /*\n Removing a file while is been uploaded mess with areAllFilesProccessed() function,\n as well give a wrong impression the request has been cancel to the server.\n Therefore is only possible to remove files once they were processed or on idle status.\n */\n if (isCompleted || files[index].status === types.status.IDLE || files[index].status === types.status.ERROR) {\n const fileClones = files.slice(0);\n fileClones.splice(index, 1);\n\n const uploadingFileListClone = uploadingFileList.slice(0);\n uploadingFileListClone.splice(index, 1);\n\n setFiles(() => fileClones);\n setUploadingFileList(() => uploadingFileListClone);\n }\n }\n }\n\n const upload = React.useCallback(() => {\n const isSameList = (files, uploadingFileList) => {\n const sameList =\n files.length === uploadingFileList.length &&\n files.every((file, index) => file.key === uploadingFileList[index].key);\n\n return sameList;\n };\n\n function areAllFilesProccessed() {\n if (files.every(file => file.processed)) {\n setIsBusy(() => false);\n setisCompleted(() => true);\n onCompleted(files);\n }\n }\n\n function onSuccess({ file, response }) {\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.isValid = true;\n file.processed = true;\n file.response = response;\n file.status = types.status.SUCCESS;\n return fileItem;\n })\n );\n\n areAllFilesProccessed();\n }\n\n function onError({ file, error }) {\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.status = types.status.ERROR;\n file.error = error;\n file.processed = true;\n file.isValid = false;\n file.isServerValid = false;\n return fileItem;\n })\n );\n\n areAllFilesProccessed();\n }\n\n function onProgress({ file, percent }) {\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.progress = percent;\n file.status = types.status.PROCESSING;\n\n if (percent === 100) {\n file.status = types.status.WAITINGFORSERVER;\n }\n return fileItem;\n })\n );\n }\n\n if (files.length && !isSameList(files, uploadingFileList) && !isBusy) {\n if (files.every(file => !file.isValid || file.status === types.status.SUCCESS)) {\n return;\n }\n\n setUploadingFileList(() => JSON.parse(JSON.stringify(files)));\n setIsBusy(() => true);\n setisCompleted(() => null);\n onProcessed(files);\n\n files.forEach(file => {\n if (file.isValid && file.status !== types.status.SUCCESS) {\n uploadToServer({ file, endpoint, onProgress, onSuccess, onError, headers, onRequest });\n }\n });\n }\n }, [files, uploadingFileList, isBusy, onCompleted, endpoint, headers, onRequest, onProcessed]);\n\n React.useEffect(() => {\n if (hasAutoUpload) {\n upload();\n }\n }, [files, hasAutoUpload, upload]);\n\n return { files, setFiles, isBusy, isCompleted, upload, removeFile, cancelFile };\n}\n"],"file":"useProcessFiles.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paprika/uploader",
3
- "version": "3.0.15-next.1",
3
+ "version": "4.0.0",
4
4
  "description": "The Uploader component lets you upload files and see progress.",
5
5
  "author": "@paprika",
6
6
  "main": "lib/index.js",
@@ -16,13 +16,13 @@
16
16
  },
17
17
  "dependencies": {
18
18
  "@babel/runtime-corejs2": "^7.3.1",
19
- "@paprika/button": "^1.1.12-next.1",
20
- "@paprika/helpers": "^2.3.0-next.0",
21
- "@paprika/icon": "^2.1.7-next.0",
22
- "@paprika/popover": "^2.0.4-next.1",
23
- "@paprika/raw-button": "^1.0.12-next.0",
24
- "@paprika/stylers": "^1.1.6-next.0",
25
- "@paprika/tokens": "^1.1.5-next.0",
19
+ "@paprika/button": "^1.1.12",
20
+ "@paprika/helpers": "^2.3.0",
21
+ "@paprika/icon": "^2.1.7",
22
+ "@paprika/popover": "^2.0.4",
23
+ "@paprika/raw-button": "^1.0.12",
24
+ "@paprika/stylers": "^1.1.6",
25
+ "@paprika/tokens": "^2.0.0",
26
26
  "prop-types": "^15.7.2",
27
27
  "superagent": "^5.1.0",
28
28
  "uuid": "^8.3.2"