@bigbinary/neeto-molecules 4.2.0 → 4.3.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.
Files changed (166) hide show
  1. package/dist/{Columns-DpeV3Jzz.js → Columns-gR00LMKF.js} +2 -2
  2. package/dist/Columns-gR00LMKF.js.map +1 -0
  3. package/dist/{ConfigureView-B0UvLoJe.js → ConfigureView-CG1M2-3b.js} +4 -15
  4. package/dist/ConfigureView-CG1M2-3b.js.map +1 -0
  5. package/dist/check-DvxzqR83.js +15 -0
  6. package/dist/check-DvxzqR83.js.map +1 -0
  7. package/dist/chevron-down-BMerqYpK.js +15 -0
  8. package/dist/chevron-down-BMerqYpK.js.map +1 -0
  9. package/dist/chevron-left-BTVCxPw8.js +15 -0
  10. package/dist/chevron-left-BTVCxPw8.js.map +1 -0
  11. package/dist/cjs/{Columns-C2ke8N58.js → Columns-Brpr2a_M.js} +2 -2
  12. package/dist/cjs/Columns-Brpr2a_M.js.map +1 -0
  13. package/dist/cjs/{ConfigureView-Coy1ViRc.js → ConfigureView-BVRHqVpb.js} +5 -16
  14. package/dist/cjs/ConfigureView-BVRHqVpb.js.map +1 -0
  15. package/dist/cjs/check-VgZf0qTr.js +17 -0
  16. package/dist/cjs/check-VgZf0qTr.js.map +1 -0
  17. package/dist/cjs/chevron-down-DwiliwN1.js +17 -0
  18. package/dist/cjs/chevron-down-DwiliwN1.js.map +1 -0
  19. package/dist/cjs/chevron-left-DWN80ILn.js +17 -0
  20. package/dist/cjs/chevron-left-DWN80ILn.js.map +1 -0
  21. package/dist/cjs/{useKeyboardShortcutsPaneState-BG_xVteC.js → useKeyboardShortcutsPaneState-DZUnpw9v.js} +2 -2
  22. package/dist/cjs/useKeyboardShortcutsPaneState-DZUnpw9v.js.map +1 -0
  23. package/dist/cjs/v2/AuditLogs.js +8 -8
  24. package/dist/cjs/v2/AuditLogs.js.map +1 -1
  25. package/dist/cjs/v2/BoardView.js +427 -0
  26. package/dist/cjs/v2/BoardView.js.map +1 -0
  27. package/dist/cjs/v2/Breadcrumbs.js +2 -2
  28. package/dist/cjs/v2/Breadcrumbs.js.map +1 -1
  29. package/dist/cjs/v2/CalendarView.js +429 -0
  30. package/dist/cjs/v2/CalendarView.js.map +1 -0
  31. package/dist/cjs/v2/Columns.js +2 -2
  32. package/dist/cjs/v2/ConfigurePageSidebar.js +4 -3
  33. package/dist/cjs/v2/ConfigurePageSidebar.js.map +1 -1
  34. package/dist/cjs/v2/CopyToClipboardButton.js +3 -13
  35. package/dist/cjs/v2/CopyToClipboardButton.js.map +1 -1
  36. package/dist/cjs/v2/DateFormat.js +42 -0
  37. package/dist/cjs/v2/DateFormat.js.map +1 -0
  38. package/dist/cjs/v2/DocumentEditor.js +329 -0
  39. package/dist/cjs/v2/DocumentEditor.js.map +1 -0
  40. package/dist/cjs/v2/EmojiPicker.js +125 -0
  41. package/dist/cjs/v2/EmojiPicker.js.map +1 -0
  42. package/dist/cjs/v2/Engagements.js +283 -0
  43. package/dist/cjs/v2/Engagements.js.map +1 -0
  44. package/dist/cjs/v2/ErrorPage.js +1 -1
  45. package/dist/cjs/v2/ErrorPage.js.map +1 -1
  46. package/dist/cjs/v2/FileUpload.js +644 -0
  47. package/dist/cjs/v2/FileUpload.js.map +1 -0
  48. package/dist/cjs/v2/FinderModal.js +253 -0
  49. package/dist/cjs/v2/FinderModal.js.map +1 -0
  50. package/dist/cjs/v2/FloatingActionMenu.js +11 -9
  51. package/dist/cjs/v2/FloatingActionMenu.js.map +1 -1
  52. package/dist/cjs/v2/Header.js +6 -6
  53. package/dist/cjs/v2/InlineInput.js +293 -0
  54. package/dist/cjs/v2/InlineInput.js.map +1 -0
  55. package/dist/cjs/v2/KeyboardShortcuts.js +3 -3
  56. package/dist/cjs/v2/KeyboardShortcuts.js.map +1 -1
  57. package/dist/cjs/v2/LoginPage.js +1 -1
  58. package/dist/cjs/v2/LoginPage.js.map +1 -1
  59. package/dist/cjs/v2/MenuBar.js +2 -2
  60. package/dist/cjs/v2/MenuBar.js.map +1 -1
  61. package/dist/cjs/v2/MoreDropdown.js +1 -1
  62. package/dist/cjs/v2/MoreDropdown.js.map +1 -1
  63. package/dist/cjs/v2/NavigationHeader.js +328 -0
  64. package/dist/cjs/v2/NavigationHeader.js.map +1 -0
  65. package/dist/cjs/v2/PublishBlock.js +414 -0
  66. package/dist/cjs/v2/PublishBlock.js.map +1 -0
  67. package/dist/cjs/v2/Rename.js +350 -0
  68. package/dist/cjs/v2/Rename.js.map +1 -0
  69. package/dist/cjs/v2/Scrollable.js +37 -0
  70. package/dist/cjs/v2/Scrollable.js.map +1 -0
  71. package/dist/cjs/v2/Search.js +5 -5
  72. package/dist/cjs/v2/Search.js.map +1 -1
  73. package/dist/cjs/v2/Settings.js +6 -6
  74. package/dist/cjs/v2/Settings.js.map +1 -1
  75. package/dist/cjs/v2/Sidebar.js +8 -7
  76. package/dist/cjs/v2/Sidebar.js.map +1 -1
  77. package/dist/cjs/v2/StickyRibbonsContainer.js +4 -4
  78. package/dist/cjs/v2/StickyRibbonsContainer.js.map +1 -1
  79. package/dist/cjs/v2/SubHeader.js +3 -3
  80. package/dist/cjs/v2/SubHeader.js.map +1 -1
  81. package/dist/cjs/v2/TimeFormat.js +15 -0
  82. package/dist/cjs/v2/TimeFormat.js.map +1 -0
  83. package/dist/{useKeyboardShortcutsPaneState-dNIbb_PI.js → useKeyboardShortcutsPaneState-BlyFMEtW.js} +2 -2
  84. package/dist/useKeyboardShortcutsPaneState-BlyFMEtW.js.map +1 -0
  85. package/dist/v2/AuditLogs.js +8 -8
  86. package/dist/v2/AuditLogs.js.map +1 -1
  87. package/dist/v2/BoardView.js +425 -0
  88. package/dist/v2/BoardView.js.map +1 -0
  89. package/dist/v2/Breadcrumbs.js +2 -2
  90. package/dist/v2/Breadcrumbs.js.map +1 -1
  91. package/dist/v2/CalendarView.js +427 -0
  92. package/dist/v2/CalendarView.js.map +1 -0
  93. package/dist/v2/Columns.js +2 -2
  94. package/dist/v2/ConfigurePageSidebar.js +4 -3
  95. package/dist/v2/ConfigurePageSidebar.js.map +1 -1
  96. package/dist/v2/CopyToClipboardButton.js +2 -12
  97. package/dist/v2/CopyToClipboardButton.js.map +1 -1
  98. package/dist/v2/DateFormat.js +40 -0
  99. package/dist/v2/DateFormat.js.map +1 -0
  100. package/dist/v2/DocumentEditor.js +327 -0
  101. package/dist/v2/DocumentEditor.js.map +1 -0
  102. package/dist/v2/EmojiPicker.js +123 -0
  103. package/dist/v2/EmojiPicker.js.map +1 -0
  104. package/dist/v2/Engagements.js +281 -0
  105. package/dist/v2/Engagements.js.map +1 -0
  106. package/dist/v2/ErrorPage.js +1 -1
  107. package/dist/v2/ErrorPage.js.map +1 -1
  108. package/dist/v2/FileUpload.js +641 -0
  109. package/dist/v2/FileUpload.js.map +1 -0
  110. package/dist/v2/FinderModal.js +251 -0
  111. package/dist/v2/FinderModal.js.map +1 -0
  112. package/dist/v2/FloatingActionMenu.js +11 -9
  113. package/dist/v2/FloatingActionMenu.js.map +1 -1
  114. package/dist/v2/Header.js +6 -6
  115. package/dist/v2/InlineInput.js +290 -0
  116. package/dist/v2/InlineInput.js.map +1 -0
  117. package/dist/v2/KeyboardShortcuts.js +3 -3
  118. package/dist/v2/KeyboardShortcuts.js.map +1 -1
  119. package/dist/v2/LoginPage.js +1 -1
  120. package/dist/v2/LoginPage.js.map +1 -1
  121. package/dist/v2/MenuBar.js +2 -2
  122. package/dist/v2/MenuBar.js.map +1 -1
  123. package/dist/v2/MoreDropdown.js +1 -1
  124. package/dist/v2/MoreDropdown.js.map +1 -1
  125. package/dist/v2/NavigationHeader.js +326 -0
  126. package/dist/v2/NavigationHeader.js.map +1 -0
  127. package/dist/v2/PublishBlock.js +412 -0
  128. package/dist/v2/PublishBlock.js.map +1 -0
  129. package/dist/v2/Rename.js +348 -0
  130. package/dist/v2/Rename.js.map +1 -0
  131. package/dist/v2/Scrollable.js +35 -0
  132. package/dist/v2/Scrollable.js.map +1 -0
  133. package/dist/v2/Search.js +5 -5
  134. package/dist/v2/Search.js.map +1 -1
  135. package/dist/v2/Settings.js +6 -6
  136. package/dist/v2/Settings.js.map +1 -1
  137. package/dist/v2/Sidebar.js +8 -7
  138. package/dist/v2/Sidebar.js.map +1 -1
  139. package/dist/v2/StickyRibbonsContainer.js +4 -4
  140. package/dist/v2/StickyRibbonsContainer.js.map +1 -1
  141. package/dist/v2/SubHeader.js +3 -3
  142. package/dist/v2/SubHeader.js.map +1 -1
  143. package/dist/v2/TimeFormat.js +13 -0
  144. package/dist/v2/TimeFormat.js.map +1 -0
  145. package/package.json +5 -5
  146. package/src/translations/en.json +4 -2
  147. package/types/v2/BoardView.d.ts +27 -0
  148. package/types/v2/CalendarView.d.ts +40 -0
  149. package/types/v2/DateFormat.d.ts +19 -0
  150. package/types/v2/DocumentEditor.d.ts +20 -0
  151. package/types/v2/EmojiPicker.d.ts +14 -0
  152. package/types/v2/Engagements.d.ts +50 -0
  153. package/types/v2/FileUpload.d.ts +30 -0
  154. package/types/v2/FinderModal.d.ts +24 -0
  155. package/types/v2/InlineInput.d.ts +28 -0
  156. package/types/v2/NavigationHeader.d.ts +80 -0
  157. package/types/v2/PublishBlock.d.ts +39 -0
  158. package/types/v2/Rename.d.ts +33 -0
  159. package/types/v2/Scrollable.d.ts +15 -0
  160. package/types/v2/TimeFormat.d.ts +17 -0
  161. package/dist/Columns-DpeV3Jzz.js.map +0 -1
  162. package/dist/ConfigureView-B0UvLoJe.js.map +0 -1
  163. package/dist/cjs/Columns-C2ke8N58.js.map +0 -1
  164. package/dist/cjs/ConfigureView-Coy1ViRc.js.map +0 -1
  165. package/dist/cjs/useKeyboardShortcutsPaneState-BG_xVteC.js.map +0 -1
  166. package/dist/useKeyboardShortcutsPaneState-dNIbb_PI.js.map +0 -1
@@ -0,0 +1,644 @@
1
+ 'use strict';
2
+
3
+ var neetoCist = require('@bigbinary/neeto-cist');
4
+ var ramda = require('ramda');
5
+ var initializers = require('@bigbinary/neeto-commons-frontend/v2/initializers');
6
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
+ var React = require('react');
8
+ var classnames = require('classnames');
9
+ var reactI18next = require('react-i18next');
10
+ var jsxRuntime = require('react/jsx-runtime');
11
+ var createLucideIcon = require('../createLucideIcon-DBDhE7kE.js');
12
+ var path = require('path');
13
+ var i18next = require('i18next');
14
+ var neetoAtoms = require('@bigbinary/neeto-atoms');
15
+ var reactUtils = require('@bigbinary/neeto-commons-frontend/v2/react-utils');
16
+ var framerMotion = require('framer-motion');
17
+ var check = require('../check-VgZf0qTr.js');
18
+ var x = require('../x-B38UX0_0.js');
19
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
20
+ var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
21
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
22
+ var activestorage = require('@rails/activestorage');
23
+ var reactDropzone = require('react-dropzone');
24
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
25
+ var formik = require('formik');
26
+
27
+ /**
28
+ * @license lucide-react v1.7.0 - ISC
29
+ *
30
+ * This source code is licensed under the ISC license.
31
+ * See the LICENSE file in the root directory of this source tree.
32
+ */
33
+
34
+
35
+ const __iconNode$1 = [
36
+ [
37
+ "path",
38
+ {
39
+ d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
40
+ key: "1oefj6"
41
+ }
42
+ ],
43
+ ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }],
44
+ ["path", { d: "M10 9H8", key: "b1mrlr" }],
45
+ ["path", { d: "M16 13H8", key: "t4e002" }],
46
+ ["path", { d: "M16 17H8", key: "z1uh3a" }]
47
+ ];
48
+ const FileText = createLucideIcon.createLucideIcon("file-text", __iconNode$1);
49
+
50
+ /**
51
+ * @license lucide-react v1.7.0 - ISC
52
+ *
53
+ * This source code is licensed under the ISC license.
54
+ * See the LICENSE file in the root directory of this source tree.
55
+ */
56
+
57
+
58
+ const __iconNode = [
59
+ ["path", { d: "M12 3v12", key: "1x0j5s" }],
60
+ ["path", { d: "m17 8-5-5-5 5", key: "7q97r8" }],
61
+ ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }]
62
+ ];
63
+ const Upload = createLucideIcon.createLucideIcon("upload", __iconNode);
64
+
65
+ var FILE_MIME_TYPES = {
66
+ pdf: ["application/pdf"],
67
+ doc: ["application/msword", "application/wps-writer"],
68
+ docx: ["application/vnd.openxmlformats-officedocument.wordprocessingml.document"],
69
+ xls: ["application/vnd.ms-excel"],
70
+ xlsx: ["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],
71
+ csv: ["text/csv"],
72
+ txt: ["text/plain"],
73
+ rtf: ["application/rtf", "text/rtf"],
74
+ html: ["text/html"],
75
+ htm: ["text/html"],
76
+ md: ["text/markdown", "text/x-markdown"],
77
+ zip: ["application/zip"],
78
+ mp3: ["audio/mpeg"],
79
+ wma: ["audio/x-ms-wma", "video/x-ms-asf"],
80
+ mp4: ["video/mp4"],
81
+ mpg: ["video/mpeg"],
82
+ mpeg: ["video/mpeg"],
83
+ flv: ["video/x-flv"],
84
+ avi: ["video/x-msvideo"],
85
+ jpg: ["image/jpeg"],
86
+ jpeg: ["image/jpeg"],
87
+ png: ["image/png"],
88
+ gif: ["image/gif"],
89
+ json: ["application/json"],
90
+ epub: ["application/epub+zip"],
91
+ aac: ["audio/aac"],
92
+ svg: ["image/svg+xml"],
93
+ ico: ["image/vnd.microsoft.icon"]
94
+ };
95
+ var ERROR_CODES = {
96
+ FILE_TOO_LARGE: "file-too-large",
97
+ FILE_INVALID_TYPE: "file-invalid-type",
98
+ TOO_MANY_FILES: "too-many-files"
99
+ };
100
+ var DIRECT_UPLOAD_URL = "/api/direct_uploads";
101
+ var MAX_FILE_SIZE = (initializers.globalProps === null || initializers.globalProps === void 0 ? void 0 : initializers.globalProps.endUserUploadedFileSizeLimitInMb) || 10;
102
+
103
+ function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
104
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
105
+ var DropZone = function DropZone(_ref) {
106
+ var isDragActive = _ref.isDragActive,
107
+ getRootProps = _ref.getRootProps,
108
+ getInputProps = _ref.getInputProps,
109
+ multipleFilesAllowed = _ref.multipleFilesAllowed,
110
+ maxFileSize = _ref.maxFileSize,
111
+ allowedFileTypes = _ref.allowedFileTypes,
112
+ hasFileSizeLimit = _ref.hasFileSizeLimit;
113
+ var _useTranslation = reactI18next.useTranslation(),
114
+ t = _useTranslation.t;
115
+ var inputId = React.useId();
116
+ var shouldAllowSingleFileUpload = !multipleFilesAllowed;
117
+ var shouldShowFileSizeLimit = hasFileSizeLimit && maxFileSize;
118
+ var promptText = t("neetoMolecules.fileUpload.filesDropzone.chooseFileOrDragHere");
119
+ return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread$2(_objectSpread$2({}, getRootProps({
120
+ "aria-label": promptText,
121
+ className: classnames("nm-file-upload__dropzone border-border bg-muted/40 hover:border-primary focus-visible:border-primary focus-visible:ring-ring/50 focus-visible:ring-2 cursor-pointer rounded border border-dashed p-6 outline-none transition", {
122
+ "border-primary bg-primary/5": isDragActive
123
+ })
124
+ })), {}, {
125
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
126
+ className: "flex flex-col items-center gap-2 text-center",
127
+ "data-testid": "file-upload-body",
128
+ children: [/*#__PURE__*/jsxRuntime.jsx(Upload, {
129
+ className: "text-muted-foreground",
130
+ size: 24
131
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
132
+ className: "flex flex-col items-center gap-1",
133
+ children: [/*#__PURE__*/jsxRuntime.jsxs("label", {
134
+ className: "cursor-pointer",
135
+ htmlFor: inputId,
136
+ children: [/*#__PURE__*/jsxRuntime.jsx("span", {
137
+ className: "text-sm font-medium",
138
+ children: promptText
139
+ }), /*#__PURE__*/jsxRuntime.jsx("input", _objectSpread$2(_objectSpread$2({}, getInputProps({
140
+ id: inputId
141
+ })), {}, {
142
+ "data-testid": "image-browse-button"
143
+ }))]
144
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
145
+ className: "flex flex-col items-center gap-0.5",
146
+ children: [shouldAllowSingleFileUpload && /*#__PURE__*/jsxRuntime.jsx("p", {
147
+ className: "text-muted-foreground text-xs",
148
+ "data-testid": "upload-only-one-file-text",
149
+ children: t("neetoMolecules.fileUpload.filesDropzone.oneFileAllowed")
150
+ }), shouldShowFileSizeLimit && /*#__PURE__*/jsxRuntime.jsx("p", {
151
+ className: "text-muted-foreground text-xs",
152
+ "data-testid": "maximum-allowed-size-text",
153
+ children: t("neetoMolecules.fileUpload.filesDropzone.maxFileSize", {
154
+ size: maxFileSize,
155
+ unit: "MB"
156
+ })
157
+ }), allowedFileTypes && /*#__PURE__*/jsxRuntime.jsx("p", {
158
+ className: "text-muted-foreground text-xs",
159
+ "data-testid": "allowed-files-types-text",
160
+ children: t("neetoMolecules.fileUpload.filesDropzone.allowedFileTypes", {
161
+ types: allowedFileTypes
162
+ })
163
+ })]
164
+ })]
165
+ })]
166
+ })
167
+ }));
168
+ };
169
+
170
+ var getAcceptedFileTypes = function getAcceptedFileTypes(allowedFileTypes) {
171
+ var accepted = {};
172
+ allowedFileTypes.split(", ").forEach(function (type) {
173
+ var mimeTypes = FILE_MIME_TYPES[type] || ["application/octet-stream"];
174
+ var extension = ".".concat(type);
175
+ if (neetoCist.isNotPresent(type) || neetoCist.isNotPresent(mimeTypes)) return;
176
+ mimeTypes.forEach(function (mimeType) {
177
+ if (accepted[mimeType]) accepted[mimeType].push(extension);else accepted[mimeType] = [extension];
178
+ });
179
+ });
180
+ return accepted;
181
+ };
182
+ var convertBytesToMb = function convertBytesToMb(bytes) {
183
+ return ((bytes - 10) / (1028 * 1024)).toFixed(2);
184
+ };
185
+ var renderErrorMessage = function renderErrorMessage(errorObject, maxFileSize, isMultiple) {
186
+ var error = errorObject.errors[0];
187
+ var file = errorObject.file;
188
+ if (error) {
189
+ var code = error.code;
190
+ if (code === ERROR_CODES.FILE_TOO_LARGE) {
191
+ return i18next.t("neetoMolecules.fileUpload.filesDropzone.errors.fileTooLarge", {
192
+ fileName: file.name,
193
+ maxSize: "".concat(Math.round(maxFileSize / 1048576), "MB")
194
+ });
195
+ } else if (code === ERROR_CODES.FILE_INVALID_TYPE) {
196
+ return i18next.t("neetoMolecules.fileUpload.filesDropzone.errors.fileInvalidType", {
197
+ fileType: path.extname(file.name)
198
+ });
199
+ } else if (code === ERROR_CODES.TOO_MANY_FILES && !isMultiple) {
200
+ return i18next.t("neetoMolecules.fileUpload.filesDropzone.errors.tooManyFiles", {
201
+ maxFiles: 1
202
+ });
203
+ }
204
+ }
205
+ return i18next.t("neetoMolecules.fileUpload.filesDropzone.errors.defaultError", {
206
+ fileName: file.name
207
+ });
208
+ };
209
+ var convertMbToBytes = function convertMbToBytes(mb) {
210
+ return mb * 1028 * 1024 + 10;
211
+ };
212
+
213
+ var ErrorMessages = function ErrorMessages(_ref) {
214
+ var fileRejections = _ref.fileRejections,
215
+ maxFileSizeInBytes = _ref.maxFileSizeInBytes;
216
+ var _useTranslation = reactI18next.useTranslation(),
217
+ t = _useTranslation.t;
218
+ var hasMultipleFileErrors = fileRejections.some(function (_ref2) {
219
+ var errors = _ref2.errors;
220
+ return errors[0].code === ERROR_CODES.TOO_MANY_FILES;
221
+ });
222
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
223
+ children: [hasMultipleFileErrors && /*#__PURE__*/jsxRuntime.jsx("p", {
224
+ className: "text-destructive mt-1 text-xs",
225
+ "data-testid": "form-file-upload-input-error",
226
+ children: /*#__PURE__*/jsxRuntime.jsx("span", {
227
+ children: t("neetoMolecules.fileUpload.filesDropzone.errors.tooManyFiles", {
228
+ maxFiles: 1
229
+ })
230
+ })
231
+ }), fileRejections.filter(function (_ref3) {
232
+ var errors = _ref3.errors;
233
+ return errors[0].code !== ERROR_CODES.TOO_MANY_FILES;
234
+ }).map(function (file, index) {
235
+ return /*#__PURE__*/jsxRuntime.jsx("p", {
236
+ className: "text-destructive mt-1 text-xs",
237
+ "data-testid": "form-file-upload-input-error",
238
+ children: /*#__PURE__*/jsxRuntime.jsx("span", {
239
+ children: renderErrorMessage(file, maxFileSizeInBytes, false)
240
+ })
241
+ }, index);
242
+ })]
243
+ });
244
+ };
245
+
246
+ var Progress = function Progress(_ref) {
247
+ var percents = _ref.percents,
248
+ _ref$stroke = _ref.stroke,
249
+ stroke = _ref$stroke === void 0 ? "currentColor" : _ref$stroke,
250
+ _ref$emptyStroke = _ref.emptyStroke,
251
+ emptyStroke = _ref$emptyStroke === void 0 ? stroke : _ref$emptyStroke,
252
+ _ref$emptyStrokeOpaci = _ref.emptyStrokeOpacity,
253
+ emptyStrokeOpacity = _ref$emptyStrokeOpaci === void 0 ? 0.25 : _ref$emptyStrokeOpaci,
254
+ _ref$duration = _ref.duration,
255
+ duration = _ref$duration === void 0 ? 0.5 : _ref$duration,
256
+ _ref$delay = _ref.delay,
257
+ delay = _ref$delay === void 0 ? 0 : _ref$delay,
258
+ _ref$size = _ref.size,
259
+ size = _ref$size === void 0 ? 100 : _ref$size,
260
+ _ref$strokeWidth = _ref.strokeWidth,
261
+ strokeWidth = _ref$strokeWidth === void 0 ? 12 : _ref$strokeWidth;
262
+ var shouldReduceMotion = framerMotion.useReducedMotion();
263
+ var radius = 45;
264
+ var circumference = Math.ceil(2 * Math.PI * radius);
265
+ var fillPercents = Math.abs(Math.ceil(circumference / 100 * (percents - 100)));
266
+ var transition = {
267
+ duration: shouldReduceMotion ? 0 : duration,
268
+ delay: shouldReduceMotion ? 0 : delay
269
+ };
270
+ var variants = {
271
+ hidden: {
272
+ strokeDashoffset: circumference,
273
+ transition: transition
274
+ },
275
+ show: {
276
+ strokeDashoffset: fillPercents,
277
+ transition: transition
278
+ }
279
+ };
280
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
281
+ className: "nm-progress__circle",
282
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
283
+ className: "nm-progress__circle-wrapper",
284
+ style: {
285
+ height: size
286
+ },
287
+ children: [/*#__PURE__*/jsxRuntime.jsx("svg", {
288
+ height: size,
289
+ version: "1.1",
290
+ viewBox: "0 0 100 100",
291
+ width: size,
292
+ xmlns: "http://www.w3.org/2000/svg",
293
+ children: /*#__PURE__*/jsxRuntime.jsx("circle", {
294
+ strokeWidth: strokeWidth,
295
+ className: "circle",
296
+ cx: "50",
297
+ cy: "50",
298
+ fill: "transparent",
299
+ r: radius,
300
+ stroke: emptyStroke,
301
+ strokeOpacity: emptyStrokeOpacity
302
+ })
303
+ }), /*#__PURE__*/jsxRuntime.jsx("svg", {
304
+ height: size,
305
+ viewBox: "0 0 100 100",
306
+ width: size,
307
+ style: {
308
+ position: "absolute",
309
+ transform: "rotate(-90deg)",
310
+ overflow: "visible",
311
+ top: 0
312
+ },
313
+ children: /*#__PURE__*/jsxRuntime.jsx(framerMotion.motion.circle, {
314
+ stroke: stroke,
315
+ strokeWidth: strokeWidth,
316
+ variants: variants,
317
+ animate: "show",
318
+ cx: "50",
319
+ cy: "50",
320
+ fill: "transparent",
321
+ initial: "hidden",
322
+ r: radius,
323
+ strokeDasharray: circumference,
324
+ strokeDashoffset: fillPercents
325
+ })
326
+ })]
327
+ })
328
+ });
329
+ };
330
+
331
+ var FilePreview = reactUtils.withT(function (_ref) {
332
+ var t = _ref.t,
333
+ file = _ref.file,
334
+ isUploading = _ref.isUploading,
335
+ cancel = _ref.cancel,
336
+ progress = _ref.progress;
337
+ return /*#__PURE__*/jsxRuntime.jsxs("li", {
338
+ className: "flex items-center gap-2 px-3 py-2",
339
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
340
+ className: "relative flex h-6 w-6 items-center justify-center",
341
+ children: [/*#__PURE__*/jsxRuntime.jsx("a", {
342
+ className: classnames({
343
+ invisible: isUploading
344
+ }),
345
+ href: file.url,
346
+ rel: "noreferrer",
347
+ target: "_blank",
348
+ children: /*#__PURE__*/jsxRuntime.jsx(FileText, {
349
+ className: "text-muted-foreground",
350
+ size: 20
351
+ })
352
+ }), isUploading && /*#__PURE__*/jsxRuntime.jsx("div", {
353
+ className: "absolute inset-0",
354
+ children: /*#__PURE__*/jsxRuntime.jsx(Progress, {
355
+ percents: progress || 0,
356
+ size: 20
357
+ })
358
+ })]
359
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
360
+ className: "flex flex-1 flex-col",
361
+ children: [/*#__PURE__*/jsxRuntime.jsx("span", {
362
+ className: "text-xs font-medium",
363
+ "data-testid": "file-name",
364
+ children: file.name
365
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
366
+ className: "text-muted-foreground text-[11px]",
367
+ children: file.size ? "".concat(convertBytesToMb(file.size), " MB") : ""
368
+ })]
369
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
370
+ className: "flex items-center gap-2",
371
+ children: [/*#__PURE__*/jsxRuntime.jsx("span", {
372
+ "aria-hidden": !file.url,
373
+ className: classnames("text-success", {
374
+ "opacity-0": !file.url
375
+ }),
376
+ role: "img",
377
+ "aria-label": t("neetoMolecules.fileUpload.fileUploadSuccessful", {
378
+ defaultValue: "Upload complete"
379
+ }),
380
+ children: file.url && /*#__PURE__*/jsxRuntime.jsx(check.Check, {
381
+ "data-testid": "file-upload-success",
382
+ size: 16
383
+ })
384
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
385
+ icon: x.X,
386
+ size: "icon-sm",
387
+ variant: "ghost",
388
+ "aria-label": t("neetoMolecules.common.actions.remove", {
389
+ defaultValue: "Remove"
390
+ }),
391
+ onClick: cancel
392
+ })]
393
+ })]
394
+ });
395
+ });
396
+
397
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = true, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), true), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
398
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
399
+ function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
400
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
401
+ var useFileUpload = function useFileUpload(_ref) {
402
+ var disabled = _ref.disabled,
403
+ accept = _ref.accept,
404
+ multiple = _ref.multiple,
405
+ maxFileSize = _ref.maxFileSize,
406
+ minFileSize = _ref.minFileSize,
407
+ files = _ref.files,
408
+ onChange = _ref.onChange,
409
+ setError = _ref.setError,
410
+ setTouched = _ref.setTouched,
411
+ hasFileSizeLimit = _ref.hasFileSizeLimit;
412
+ var _useState = React.useState({}),
413
+ _useState2 = _slicedToArray(_useState, 2),
414
+ uploadProgress = _useState2[0],
415
+ setUploadProgress = _useState2[1];
416
+ var _useState3 = React.useState(""),
417
+ _useState4 = _slicedToArray(_useState3, 2),
418
+ uploadError = _useState4[0],
419
+ setUploadError = _useState4[1];
420
+ var filesRef = React.useRef(files);
421
+ filesRef.current = files;
422
+ var cancel = React.useCallback(function (index) {
423
+ return function () {
424
+ setUploadProgress(ramda.assoc(files[index].name, null));
425
+ var newFiles = files === null || files === void 0 ? void 0 : files.filter(function (_, idx) {
426
+ return idx !== index;
427
+ });
428
+ onChange(newFiles);
429
+ };
430
+ }, [files]);
431
+ React.useEffect(function () {
432
+ if (uploadError) setError(uploadError);
433
+ }, [uploadError]);
434
+ var onDropAccepted = /*#__PURE__*/function () {
435
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(acceptedFiles) {
436
+ var initialFiles, updatedFiles, newFiles, merged;
437
+ return _regenerator().w(function (_context) {
438
+ while (1) switch (_context.n) {
439
+ case 0:
440
+ setTouched(false);
441
+ setUploadError("");
442
+ initialFiles = acceptedFiles.map(function (file) {
443
+ return {
444
+ name: file.name,
445
+ size: file.size
446
+ };
447
+ });
448
+ updatedFiles = multiple ? [].concat(_toConsumableArray(files || []), _toConsumableArray(initialFiles)) : initialFiles;
449
+ onChange(updatedFiles);
450
+ _context.n = 1;
451
+ return new Promise(function (resolve) {
452
+ var collected = [];
453
+ acceptedFiles.forEach(function (file) {
454
+ setUploadProgress(ramda.assoc(file.name, 0));
455
+ var upload = new activestorage.DirectUpload(file, DIRECT_UPLOAD_URL, {
456
+ directUploadWillStoreFileWithXHR: function directUploadWillStoreFileWithXHR(xhr) {
457
+ xhr.upload.addEventListener("progress", function (event) {
458
+ var percentComplete = Math.round(event.loaded / event.total * 100);
459
+ setUploadProgress(ramda.assoc(file.name, percentComplete));
460
+ });
461
+ xhr.upload.addEventListener("load", function () {
462
+ setUploadProgress(ramda.assoc(file.name, undefined));
463
+ });
464
+ }
465
+ });
466
+ upload.create(function (error, blob) {
467
+ if (error) {
468
+ return setUploadError(error);
469
+ }
470
+ collected.push({
471
+ url: blob.blob_url,
472
+ name: blob.filename,
473
+ signedId: blob.signed_id
474
+ });
475
+ var isUploadCompleted = multiple ? acceptedFiles.length === collected.length : collected.length === 1;
476
+ if (isUploadCompleted) {
477
+ return resolve(collected);
478
+ }
479
+ return "";
480
+ });
481
+ });
482
+ return collected;
483
+ });
484
+ case 1:
485
+ newFiles = _context.v;
486
+ if (multiple) {
487
+ merged = filesRef.current.map(function (file) {
488
+ var uploadedFile = neetoCist.findBy({
489
+ name: file.name
490
+ }, newFiles);
491
+ return _objectSpread$1(_objectSpread$1({}, file), uploadedFile);
492
+ });
493
+ onChange(merged);
494
+ } else {
495
+ onChange(newFiles);
496
+ }
497
+ case 2:
498
+ return _context.a(2);
499
+ }
500
+ }, _callee);
501
+ }));
502
+ return function onDropAccepted(_x) {
503
+ return _ref2.apply(this, arguments);
504
+ };
505
+ }();
506
+ var onDropRejected = function onDropRejected(fileRejections) {
507
+ fileRejections.forEach(function (fileObject) {
508
+ setTouched(true);
509
+ setUploadError(renderErrorMessage(fileObject, maxFileSize, multiple));
510
+ });
511
+ };
512
+ var _useDropzone = reactDropzone.useDropzone(_objectSpread$1({
513
+ disabled: disabled,
514
+ accept: accept,
515
+ multiple: multiple,
516
+ minSize: convertMbToBytes(minFileSize),
517
+ onDropAccepted: onDropAccepted,
518
+ onDropRejected: onDropRejected
519
+ }, maxFileSize && hasFileSizeLimit && {
520
+ maxSize: convertMbToBytes(maxFileSize)
521
+ })),
522
+ getRootProps = _useDropzone.getRootProps,
523
+ getInputProps = _useDropzone.getInputProps,
524
+ isDragActive = _useDropzone.isDragActive,
525
+ fileRejections = _useDropzone.fileRejections;
526
+ return {
527
+ progress: uploadProgress,
528
+ cancel: cancel,
529
+ getRootProps: getRootProps,
530
+ getInputProps: getInputProps,
531
+ isDragActive: isDragActive,
532
+ fileRejections: fileRejections
533
+ };
534
+ };
535
+
536
+ var FileUpload = function FileUpload(_ref) {
537
+ var _ref$allowedFileTypes = _ref.allowedFileTypes,
538
+ allowedFileTypes = _ref$allowedFileTypes === void 0 ? "" : _ref$allowedFileTypes,
539
+ _ref$multipleFilesAll = _ref.multipleFilesAllowed,
540
+ multipleFilesAllowed = _ref$multipleFilesAll === void 0 ? true : _ref$multipleFilesAll,
541
+ _ref$maxFileSize = _ref.maxFileSize,
542
+ maxFileSize = _ref$maxFileSize === void 0 ? MAX_FILE_SIZE : _ref$maxFileSize,
543
+ _ref$hasFileSizeLimit = _ref.hasFileSizeLimit,
544
+ hasFileSizeLimit = _ref$hasFileSizeLimit === void 0 ? true : _ref$hasFileSizeLimit,
545
+ _ref$isPreview = _ref.isPreview,
546
+ isPreview = _ref$isPreview === void 0 ? false : _ref$isPreview,
547
+ _ref$minFileSize = _ref.minFileSize,
548
+ minFileSize = _ref$minFileSize === void 0 ? 0 : _ref$minFileSize,
549
+ _ref$files = _ref.files,
550
+ files = _ref$files === void 0 ? [] : _ref$files,
551
+ _ref$onChange = _ref.onChange,
552
+ onChange = _ref$onChange === void 0 ? neetoCist.noop : _ref$onChange,
553
+ error = _ref.error,
554
+ _ref$setError = _ref.setError,
555
+ setError = _ref$setError === void 0 ? neetoCist.noop : _ref$setError,
556
+ _ref$setTouched = _ref.setTouched,
557
+ setTouched = _ref$setTouched === void 0 ? neetoCist.noop : _ref$setTouched;
558
+ var _useFileUpload = useFileUpload({
559
+ disabled: isPreview,
560
+ accept: getAcceptedFileTypes(allowedFileTypes),
561
+ multiple: multipleFilesAllowed,
562
+ maxFileSize: maxFileSize,
563
+ minFileSize: minFileSize,
564
+ files: files,
565
+ onChange: onChange,
566
+ setError: setError,
567
+ setTouched: setTouched,
568
+ hasFileSizeLimit: hasFileSizeLimit
569
+ }),
570
+ progress = _useFileUpload.progress,
571
+ cancel = _useFileUpload.cancel,
572
+ getRootProps = _useFileUpload.getRootProps,
573
+ getInputProps = _useFileUpload.getInputProps,
574
+ isDragActive = _useFileUpload.isDragActive,
575
+ fileRejections = _useFileUpload.fileRejections;
576
+ var maxFileSizeInBytes = maxFileSize * 1000000;
577
+ var isUploadingFile = function isUploadingFile(file) {
578
+ return ramda.isNotNil(progress[file.name]) && (progress[file.name] !== 100 || !file.url);
579
+ };
580
+ var shouldShowError = error && ramda.isEmpty(fileRejections);
581
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
582
+ children: [/*#__PURE__*/jsxRuntime.jsx(DropZone, {
583
+ allowedFileTypes: allowedFileTypes,
584
+ getInputProps: getInputProps,
585
+ getRootProps: getRootProps,
586
+ hasFileSizeLimit: hasFileSizeLimit,
587
+ isDragActive: isDragActive,
588
+ maxFileSize: maxFileSize,
589
+ multipleFilesAllowed: multipleFilesAllowed
590
+ }), !ramda.isEmpty(files) && /*#__PURE__*/jsxRuntime.jsx("ul", {
591
+ className: "border-border mt-3 divide-y rounded-md border",
592
+ children: files === null || files === void 0 ? void 0 : files.map(function (file, idx) {
593
+ return /*#__PURE__*/React.createElement(FilePreview, {
594
+ file: file,
595
+ cancel: cancel(idx),
596
+ isUploading: isUploadingFile(file),
597
+ key: idx,
598
+ progress: progress[file.name]
599
+ });
600
+ })
601
+ }), neetoCist.isNotEmpty(fileRejections) && /*#__PURE__*/jsxRuntime.jsx(ErrorMessages, {
602
+ fileRejections: fileRejections,
603
+ maxFileSizeInBytes: maxFileSizeInBytes
604
+ }), shouldShowError && /*#__PURE__*/jsxRuntime.jsx("p", {
605
+ className: "text-destructive mt-1 text-xs",
606
+ "data-testid": "form-file-upload-input-error",
607
+ children: /*#__PURE__*/jsxRuntime.jsx("span", {
608
+ children: error
609
+ })
610
+ })]
611
+ });
612
+ };
613
+
614
+ var _excluded = ["name"];
615
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
616
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
617
+ var FormikFileUpload = function FormikFileUpload(_ref) {
618
+ var name = _ref.name,
619
+ props = _objectWithoutProperties(_ref, _excluded);
620
+ var _useField = formik.useField(name),
621
+ _useField2 = _slicedToArray(_useField, 3);
622
+ _useField2[0];
623
+ var _useField2$ = _useField2[1],
624
+ value = _useField2$.value,
625
+ touched = _useField2$.touched,
626
+ error = _useField2$.error,
627
+ _useField2$2 = _useField2[2],
628
+ setValue = _useField2$2.setValue,
629
+ setTouched = _useField2$2.setTouched,
630
+ setError = _useField2$2.setError;
631
+ var errorToDisplay = touched && error ? error : "";
632
+ return /*#__PURE__*/jsxRuntime.jsx(FileUpload, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, props), {}, {
633
+ setError: setError,
634
+ setTouched: setTouched
635
+ })), {}, {
636
+ error: errorToDisplay,
637
+ files: value,
638
+ onChange: setValue
639
+ }));
640
+ };
641
+
642
+ exports.FileUpload = FileUpload;
643
+ exports.FormikFileUpload = FormikFileUpload;
644
+ //# sourceMappingURL=FileUpload.js.map