@skbkontur/react-ui 3.9.2-radiogroup.2 → 3.10.0-fileuploader.2

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 (249) hide show
  1. package/cjs/components/FileUploader/FileUploader.d.ts +31 -0
  2. package/cjs/components/FileUploader/FileUploader.js +265 -0
  3. package/cjs/components/FileUploader/FileUploader.js.map +1 -0
  4. package/cjs/components/FileUploader/FileUploader.md +67 -0
  5. package/cjs/components/FileUploader/FileUploader.styles.d.ts +19 -0
  6. package/cjs/components/FileUploader/FileUploader.styles.js +159 -0
  7. package/cjs/components/FileUploader/FileUploader.styles.js.map +1 -0
  8. package/cjs/components/FileUploader/index.d.ts +4 -0
  9. package/cjs/components/FileUploader/index.js +4 -0
  10. package/cjs/components/FileUploader/index.js.map +1 -0
  11. package/cjs/components/FileUploader/locale/index.d.ts +4 -0
  12. package/cjs/components/FileUploader/locale/index.js +11 -0
  13. package/cjs/components/FileUploader/locale/index.js.map +1 -0
  14. package/cjs/components/FileUploader/locale/locales/en.d.ts +2 -0
  15. package/cjs/components/FileUploader/locale/locales/en.js +7 -0
  16. package/cjs/components/FileUploader/locale/locales/en.js.map +1 -0
  17. package/cjs/components/FileUploader/locale/locales/ru.d.ts +2 -0
  18. package/cjs/components/FileUploader/locale/locales/ru.js +7 -0
  19. package/cjs/components/FileUploader/locale/locales/ru.js.map +1 -0
  20. package/cjs/components/FileUploader/locale/types.d.ts +6 -0
  21. package/cjs/components/FileUploader/locale/types.js +1 -0
  22. package/cjs/components/FileUploader/locale/types.js.map +1 -0
  23. package/cjs/components/RadioGroup/RadioGroup.d.ts +23 -0
  24. package/cjs/components/RadioGroup/RadioGroup.js +25 -1
  25. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  26. package/cjs/components/SidePage/SidePage.d.ts +0 -1
  27. package/cjs/components/SidePage/SidePage.js +1 -3
  28. package/cjs/components/SidePage/SidePage.js.map +1 -1
  29. package/cjs/hooks/useDrop.d.ts +11 -0
  30. package/cjs/hooks/useDrop.js +75 -0
  31. package/cjs/hooks/useDrop.js.map +1 -0
  32. package/cjs/hooks/useMemoObject.d.ts +1 -0
  33. package/cjs/hooks/useMemoObject.js +5 -0
  34. package/cjs/hooks/useMemoObject.js.map +1 -0
  35. package/cjs/index.d.ts +1 -0
  36. package/cjs/index.js +1 -0
  37. package/cjs/index.js.map +1 -1
  38. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.d.ts +12 -0
  39. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.js +16 -0
  40. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.js.map +1 -0
  41. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +14 -0
  42. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +124 -0
  43. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -0
  44. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +10 -0
  45. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +178 -0
  46. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -0
  47. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.d.ts +11 -0
  48. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js +66 -0
  49. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js.map +1 -0
  50. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +4 -0
  51. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +24 -0
  52. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -0
  53. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.d.ts +4 -0
  54. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js +17 -0
  55. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js.map +1 -0
  56. package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.d.ts +7 -0
  57. package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.js +16 -0
  58. package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.js.map +1 -0
  59. package/cjs/internal/FileUploaderControl/fileUtils.d.ts +14 -0
  60. package/cjs/internal/FileUploaderControl/fileUtils.js +26 -0
  61. package/cjs/internal/FileUploaderControl/fileUtils.js.map +1 -0
  62. package/cjs/internal/FileUploaderControl/hooks/useControlLocale.d.ts +1 -0
  63. package/cjs/internal/FileUploaderControl/hooks/useControlLocale.js +4 -0
  64. package/cjs/internal/FileUploaderControl/hooks/useControlLocale.js.map +1 -0
  65. package/cjs/internal/FileUploaderControl/hooks/useUpload.d.ts +3 -0
  66. package/cjs/internal/FileUploaderControl/hooks/useUpload.js +51 -0
  67. package/cjs/internal/FileUploaderControl/hooks/useUpload.js.map +1 -0
  68. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +3 -0
  69. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js +18 -0
  70. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js.map +1 -0
  71. package/cjs/internal/TextWidthHelper/TextWidthHelper.d.ts +15 -0
  72. package/cjs/internal/TextWidthHelper/TextWidthHelper.js +34 -0
  73. package/cjs/internal/TextWidthHelper/TextWidthHelper.js.map +1 -0
  74. package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.d.ts +4 -0
  75. package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.js +23 -0
  76. package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.js.map +1 -0
  77. package/cjs/internal/ThemePlayground/Playground.d.ts +1 -0
  78. package/cjs/internal/ThemePlayground/Playground.js +11 -1
  79. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  80. package/cjs/internal/ThemePlayground/darkTheme.d.ts +15 -0
  81. package/cjs/internal/ThemePlayground/darkTheme.js +25 -1
  82. package/cjs/internal/ThemePlayground/darkTheme.js.map +1 -1
  83. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  84. package/cjs/internal/icons/16px/index.d.ts +3 -0
  85. package/cjs/internal/icons/16px/index.js +38 -2
  86. package/cjs/internal/icons/16px/index.js.map +1 -1
  87. package/cjs/internal/themes/DefaultTheme.d.ts +23 -0
  88. package/cjs/internal/themes/DefaultTheme.js +64 -1
  89. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  90. package/cjs/lib/guidUtils.d.ts +1 -0
  91. package/cjs/lib/guidUtils.js +5 -0
  92. package/cjs/lib/guidUtils.js.map +1 -0
  93. package/cjs/lib/locale/types.d.ts +2 -0
  94. package/cjs/lib/locale/types.js +2 -0
  95. package/cjs/lib/locale/types.js.map +1 -1
  96. package/cjs/lib/locale/useLocaleForControl.d.ts +3 -0
  97. package/cjs/lib/locale/useLocaleForControl.js +14 -0
  98. package/cjs/lib/locale/useLocaleForControl.js.map +1 -0
  99. package/cjs/lib/stringUtils.d.ts +1 -0
  100. package/cjs/lib/stringUtils.js +13 -0
  101. package/cjs/lib/stringUtils.js.map +1 -0
  102. package/cjs/lib/utils.d.ts +1 -0
  103. package/cjs/lib/utils.js +20 -2
  104. package/cjs/lib/utils.js.map +1 -1
  105. package/components/FileUploader/FileUploader/FileUploader.js +241 -0
  106. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -0
  107. package/components/FileUploader/FileUploader/package.json +6 -0
  108. package/components/FileUploader/FileUploader.d.ts +31 -0
  109. package/components/FileUploader/FileUploader.md +67 -0
  110. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js +56 -0
  111. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js.map +1 -0
  112. package/components/FileUploader/FileUploader.styles/package.json +6 -0
  113. package/components/FileUploader/FileUploader.styles.d.ts +19 -0
  114. package/components/FileUploader/index/index.js +3 -0
  115. package/components/FileUploader/index/index.js.map +1 -0
  116. package/components/FileUploader/index/package.json +6 -0
  117. package/components/FileUploader/index.d.ts +4 -0
  118. package/components/FileUploader/locale/index/index.js +8 -0
  119. package/components/FileUploader/locale/index/index.js.map +1 -0
  120. package/components/FileUploader/locale/index/package.json +6 -0
  121. package/components/FileUploader/locale/index.d.ts +4 -0
  122. package/components/FileUploader/locale/locales/en/en.js +6 -0
  123. package/components/FileUploader/locale/locales/en/en.js.map +1 -0
  124. package/components/FileUploader/locale/locales/en/package.json +6 -0
  125. package/components/FileUploader/locale/locales/en.d.ts +2 -0
  126. package/components/FileUploader/locale/locales/ru/package.json +6 -0
  127. package/components/FileUploader/locale/locales/ru/ru.js +6 -0
  128. package/components/FileUploader/locale/locales/ru/ru.js.map +1 -0
  129. package/components/FileUploader/locale/locales/ru.d.ts +2 -0
  130. package/components/FileUploader/locale/package.json +6 -0
  131. package/components/FileUploader/locale/types/package.json +6 -0
  132. package/components/FileUploader/locale/types/types.js +0 -0
  133. package/components/FileUploader/locale/types/types.js.map +1 -0
  134. package/components/FileUploader/locale/types.d.ts +6 -0
  135. package/components/FileUploader/package.json +6 -0
  136. package/components/RadioGroup/RadioGroup/RadioGroup.js +13 -0
  137. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  138. package/components/RadioGroup/RadioGroup.d.ts +23 -0
  139. package/components/SidePage/SidePage/SidePage.js +0 -2
  140. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  141. package/components/SidePage/SidePage.d.ts +0 -1
  142. package/hooks/useDrop/package.json +6 -0
  143. package/hooks/useDrop/useDrop.js +57 -0
  144. package/hooks/useDrop/useDrop.js.map +1 -0
  145. package/hooks/useDrop.d.ts +11 -0
  146. package/hooks/useMemoObject/package.json +6 -0
  147. package/hooks/useMemoObject/useMemoObject.js +6 -0
  148. package/hooks/useMemoObject/useMemoObject.js.map +1 -0
  149. package/hooks/useMemoObject.d.ts +1 -0
  150. package/index.d.ts +1 -0
  151. package/index.js +1 -0
  152. package/index.js.map +1 -1
  153. package/internal/FileUploaderControl/FileUploaderControlContext/FileUploaderControlContext.js +2 -0
  154. package/internal/FileUploaderControl/FileUploaderControlContext/FileUploaderControlContext.js.map +1 -0
  155. package/internal/FileUploaderControl/FileUploaderControlContext/package.json +6 -0
  156. package/internal/FileUploaderControl/FileUploaderControlContext.d.ts +12 -0
  157. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +91 -0
  158. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -0
  159. package/internal/FileUploaderControl/FileUploaderControlProvider/package.json +6 -0
  160. package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +14 -0
  161. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +172 -0
  162. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -0
  163. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/package.json +6 -0
  164. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +10 -0
  165. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/FileUploaderFile.styles.js +32 -0
  166. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/FileUploaderFile.styles.js.map +1 -0
  167. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/package.json +6 -0
  168. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.d.ts +11 -0
  169. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +23 -0
  170. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -0
  171. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/package.json +6 -0
  172. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +4 -0
  173. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/FileUploaderFileList.styles.js +11 -0
  174. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/FileUploaderFileList.styles.js.map +1 -0
  175. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/package.json +6 -0
  176. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.d.ts +4 -0
  177. package/internal/FileUploaderControl/FileUploaderFileValidationResult/FileUploaderFileValidationResult.js +18 -0
  178. package/internal/FileUploaderControl/FileUploaderFileValidationResult/FileUploaderFileValidationResult.js.map +1 -0
  179. package/internal/FileUploaderControl/FileUploaderFileValidationResult/package.json +6 -0
  180. package/internal/FileUploaderControl/FileUploaderFileValidationResult.d.ts +7 -0
  181. package/internal/FileUploaderControl/fileUtils/fileUtils.js +19 -0
  182. package/internal/FileUploaderControl/fileUtils/fileUtils.js.map +1 -0
  183. package/internal/FileUploaderControl/fileUtils/package.json +6 -0
  184. package/internal/FileUploaderControl/fileUtils.d.ts +14 -0
  185. package/internal/FileUploaderControl/hooks/useControlLocale/package.json +6 -0
  186. package/internal/FileUploaderControl/hooks/useControlLocale/useControlLocale.js +5 -0
  187. package/internal/FileUploaderControl/hooks/useControlLocale/useControlLocale.js.map +1 -0
  188. package/internal/FileUploaderControl/hooks/useControlLocale.d.ts +1 -0
  189. package/internal/FileUploaderControl/hooks/useUpload/package.json +6 -0
  190. package/internal/FileUploaderControl/hooks/useUpload/useUpload.js +56 -0
  191. package/internal/FileUploaderControl/hooks/useUpload/useUpload.js.map +1 -0
  192. package/internal/FileUploaderControl/hooks/useUpload.d.ts +3 -0
  193. package/internal/FileUploaderControl/withFileUploaderControlProvider/package.json +6 -0
  194. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js +16 -0
  195. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js.map +1 -0
  196. package/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +3 -0
  197. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js +51 -0
  198. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js.map +1 -0
  199. package/internal/TextWidthHelper/TextWidthHelper/package.json +6 -0
  200. package/internal/TextWidthHelper/TextWidthHelper.d.ts +15 -0
  201. package/internal/TextWidthHelper/TextWidthHelper.styles/TextWidthHelper.styles.js +14 -0
  202. package/internal/TextWidthHelper/TextWidthHelper.styles/TextWidthHelper.styles.js.map +1 -0
  203. package/internal/TextWidthHelper/TextWidthHelper.styles/package.json +6 -0
  204. package/internal/TextWidthHelper/TextWidthHelper.styles.d.ts +4 -0
  205. package/internal/ThemePlayground/Playground/Playground.js +11 -1
  206. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  207. package/internal/ThemePlayground/Playground.d.ts +1 -0
  208. package/internal/ThemePlayground/darkTheme/darkTheme.js +26 -1
  209. package/internal/ThemePlayground/darkTheme/darkTheme.js.map +1 -1
  210. package/internal/ThemePlayground/darkTheme.d.ts +15 -0
  211. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  212. package/internal/icons/16px/index/index.js +27 -0
  213. package/internal/icons/16px/index/index.js.map +1 -1
  214. package/internal/icons/16px/index.d.ts +3 -0
  215. package/internal/themes/DefaultTheme/DefaultTheme.js +67 -0
  216. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  217. package/internal/themes/DefaultTheme.d.ts +23 -0
  218. package/lib/guidUtils/guidUtils.js +4 -0
  219. package/lib/guidUtils/guidUtils.js.map +1 -0
  220. package/lib/guidUtils/package.json +6 -0
  221. package/lib/guidUtils.d.ts +1 -0
  222. package/lib/locale/types/types.js.map +1 -1
  223. package/lib/locale/types.d.ts +2 -0
  224. package/lib/locale/useLocaleForControl/package.json +6 -0
  225. package/lib/locale/useLocaleForControl/useLocaleForControl.js +12 -0
  226. package/lib/locale/useLocaleForControl/useLocaleForControl.js.map +1 -0
  227. package/lib/locale/useLocaleForControl.d.ts +3 -0
  228. package/lib/stringUtils/package.json +6 -0
  229. package/lib/stringUtils/stringUtils.js +12 -0
  230. package/lib/stringUtils/stringUtils.js.map +1 -0
  231. package/lib/stringUtils.d.ts +1 -0
  232. package/lib/utils/utils.js +18 -0
  233. package/lib/utils/utils.js.map +1 -1
  234. package/lib/utils.d.ts +1 -0
  235. package/package.json +1 -1
  236. package/cjs/lib/getDisplayName.d.ts +0 -3
  237. package/cjs/lib/getDisplayName.js +0 -9
  238. package/cjs/lib/getDisplayName.js.map +0 -1
  239. package/cjs/lib/withClassWrapper.d.ts +0 -68
  240. package/cjs/lib/withClassWrapper.js +0 -59
  241. package/cjs/lib/withClassWrapper.js.map +0 -1
  242. package/lib/getDisplayName/getDisplayName.js +0 -3
  243. package/lib/getDisplayName/getDisplayName.js.map +0 -1
  244. package/lib/getDisplayName/package.json +0 -6
  245. package/lib/getDisplayName.d.ts +0 -3
  246. package/lib/withClassWrapper/package.json +0 -6
  247. package/lib/withClassWrapper/withClassWrapper.js +0 -70
  248. package/lib/withClassWrapper/withClassWrapper.js.map +0 -1
  249. package/lib/withClassWrapper.d.ts +0 -68
@@ -0,0 +1,91 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import React, { useCallback, useState } from 'react';
3
+ import { useMemoObject } from "../../../hooks/useMemoObject";
4
+ import { FileUploaderFileStatus } from "../fileUtils";
5
+ import { FileUploaderControlContext } from "../FileUploaderControlContext";
6
+ import { FileUploaderFileValidationResult } from "../FileUploaderFileValidationResult";
7
+ import { useControlLocale } from "../hooks/useControlLocale";
8
+
9
+ var updateFile = function updateFile(files, fileId, getFileUpdatedProps) {
10
+ var fileIndex = files.findIndex(function (file) {
11
+ return file.id === fileId;
12
+ });
13
+ if (fileIndex === -1) return files;
14
+ var newFiles = [].concat(files);
15
+ var file = files[fileIndex];
16
+ var updatedProps = getFileUpdatedProps(file);
17
+ newFiles[fileIndex] = _extends({}, file, updatedProps);
18
+ return newFiles;
19
+ };
20
+
21
+ export var FileUploaderControlProvider = function FileUploaderControlProvider(props) {
22
+ var children = props.children,
23
+ onValueChange = props.onValueChange,
24
+ onRemove = props.onRemove,
25
+ onSelect = props.onSelect;
26
+
27
+ var _useState = useState([]),
28
+ files = _useState[0],
29
+ setFiles = _useState[1];
30
+
31
+ var locale = useControlLocale();
32
+ var setFileStatus = useCallback(function (fileId, status) {
33
+ setFiles(function (files) {
34
+ var newFiles = updateFile(files, fileId, function (file) {
35
+ return {
36
+ status: status,
37
+ validationResult: status === FileUploaderFileStatus.Error ? FileUploaderFileValidationResult.error(locale.requestErrorText) : file.validationResult
38
+ };
39
+ });
40
+ onValueChange == null ? void 0 : onValueChange(newFiles);
41
+ return newFiles;
42
+ });
43
+ }, [locale, onValueChange]);
44
+ var handleExternalSetFiles = useCallback(function (files) {
45
+ onSelect == null ? void 0 : onSelect(files);
46
+ setFiles(function (state) {
47
+ var newFiles = [].concat(state, files);
48
+ onValueChange == null ? void 0 : onValueChange(newFiles);
49
+ return newFiles;
50
+ });
51
+ }, [onValueChange, onSelect]);
52
+ var removeFile = useCallback(function (fileId) {
53
+ onRemove == null ? void 0 : onRemove(fileId);
54
+ setFiles(function (state) {
55
+ var newFiles = state.filter(function (file) {
56
+ return file.id !== fileId;
57
+ });
58
+ onValueChange == null ? void 0 : onValueChange(newFiles);
59
+ return newFiles;
60
+ });
61
+ }, [onValueChange, onRemove]);
62
+ var setFileValidationResult = useCallback(function (fileId, validationResult) {
63
+ setFiles(function (files) {
64
+ var newFiles = updateFile(files, fileId, function () {
65
+ return {
66
+ validationResult: validationResult
67
+ };
68
+ });
69
+ onValueChange == null ? void 0 : onValueChange(newFiles);
70
+ return newFiles;
71
+ });
72
+ }, [onValueChange]);
73
+ var reset = React.useCallback(function () {
74
+ setFiles(function () {
75
+ var newFiles = [];
76
+ onValueChange == null ? void 0 : onValueChange(newFiles);
77
+ return newFiles;
78
+ });
79
+ }, [onValueChange]);
80
+ return /*#__PURE__*/React.createElement(FileUploaderControlContext.Provider, {
81
+ value: useMemoObject({
82
+ setFileStatus: setFileStatus,
83
+ files: files,
84
+ setFiles: handleExternalSetFiles,
85
+ removeFile: removeFile,
86
+ setFileValidationResult: setFileValidationResult,
87
+ reset: reset
88
+ })
89
+ }, children);
90
+ };
91
+ FileUploaderControlProvider.displayName = 'FileUploaderControlProvider';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FileUploaderControlProvider.tsx"],"names":["React","useCallback","useState","useMemoObject","FileUploaderFileStatus","FileUploaderControlContext","FileUploaderFileValidationResult","useControlLocale","updateFile","files","fileId","getFileUpdatedProps","fileIndex","findIndex","file","id","newFiles","updatedProps","FileUploaderControlProvider","props","children","onValueChange","onRemove","onSelect","setFiles","locale","setFileStatus","status","validationResult","Error","error","requestErrorText","handleExternalSetFiles","state","removeFile","filter","setFileValidationResult","reset","displayName"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, useCallback, useState } from 'react';\n\nimport { useMemoObject } from '../../hooks/useMemoObject';\n\nimport { FileUploaderAttachedFile, FileUploaderFileStatus } from './fileUtils';\nimport { FileUploaderControlContext } from './FileUploaderControlContext';\nimport { FileUploaderFileValidationResult } from './FileUploaderFileValidationResult';\nimport { useControlLocale } from './hooks/useControlLocale';\n\nexport interface FileUploaderControlProviderProps {\n /** Срабатывает при выборе файлов */\n onSelect?: (files: FileUploaderAttachedFile[]) => void;\n /** Срабатывает при удалении файла из контрола */\n onRemove?: (fileId: string) => void;\n /** Срабатывает при onSelect, onRemove и других изменениях файлов. В files передает текущее состояние всего списка файлов */\n onValueChange?: (files: FileUploaderAttachedFile[]) => void;\n}\n\nconst updateFile = (\n files: FileUploaderAttachedFile[],\n fileId: string,\n getFileUpdatedProps: (file: FileUploaderAttachedFile) => Partial<FileUploaderAttachedFile>,\n): FileUploaderAttachedFile[] => {\n const fileIndex = files.findIndex((file) => file.id === fileId);\n if (fileIndex === -1) return files;\n\n const newFiles = [...files];\n const file = files[fileIndex];\n\n const updatedProps = getFileUpdatedProps(file);\n\n newFiles[fileIndex] = {\n ...file,\n ...updatedProps,\n };\n\n return newFiles;\n};\n\nexport const FileUploaderControlProvider = (props: PropsWithChildren<FileUploaderControlProviderProps>) => {\n const { children, onValueChange, onRemove, onSelect } = props;\n\n const [files, setFiles] = useState<FileUploaderAttachedFile[]>([]);\n const locale = useControlLocale();\n\n const setFileStatus = useCallback(\n (fileId: string, status: FileUploaderFileStatus) => {\n setFiles((files) => {\n const newFiles = updateFile(files, fileId, (file) => {\n return {\n status,\n validationResult:\n status === FileUploaderFileStatus.Error\n ? FileUploaderFileValidationResult.error(locale.requestErrorText)\n : file.validationResult,\n };\n });\n onValueChange?.(newFiles);\n return newFiles;\n });\n },\n [locale, onValueChange],\n );\n\n const handleExternalSetFiles = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n onSelect?.(files);\n setFiles((state) => {\n const newFiles = [...state, ...files];\n onValueChange?.(newFiles);\n return newFiles;\n });\n },\n [onValueChange, onSelect],\n );\n\n const removeFile = useCallback(\n (fileId: string) => {\n onRemove?.(fileId);\n setFiles((state) => {\n const newFiles = state.filter((file) => file.id !== fileId);\n onValueChange?.(newFiles);\n return newFiles;\n });\n },\n [onValueChange, onRemove],\n );\n\n const setFileValidationResult = useCallback(\n (fileId: string, validationResult: FileUploaderFileValidationResult) => {\n setFiles((files) => {\n const newFiles = updateFile(files, fileId, () => ({ validationResult }));\n onValueChange?.(newFiles);\n return newFiles;\n });\n },\n [onValueChange],\n );\n\n const reset = React.useCallback(() => {\n setFiles(() => {\n const newFiles = [] as FileUploaderAttachedFile[];\n onValueChange?.(newFiles);\n return newFiles;\n });\n }, [onValueChange]);\n\n return (\n <FileUploaderControlContext.Provider\n value={useMemoObject({\n setFileStatus,\n files,\n setFiles: handleExternalSetFiles,\n removeFile,\n setFileValidationResult,\n reset,\n })}\n >\n {children}\n </FileUploaderControlContext.Provider>\n );\n};\n\nFileUploaderControlProvider.displayName = 'FileUploaderControlProvider';\n"]}
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../cjs/internal/FileUploaderControl/FileUploaderControlProvider.js",
3
+ "module": "FileUploaderControlProvider",
4
+ "types": "../FileUploaderControlProvider.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -0,0 +1,14 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { FileUploaderAttachedFile } from './fileUtils';
3
+ export interface FileUploaderControlProviderProps {
4
+ /** Срабатывает при выборе файлов */
5
+ onSelect?: (files: FileUploaderAttachedFile[]) => void;
6
+ /** Срабатывает при удалении файла из контрола */
7
+ onRemove?: (fileId: string) => void;
8
+ /** Срабатывает при onSelect, onRemove и других изменениях файлов. В files передает текущее состояние всего списка файлов */
9
+ onValueChange?: (files: FileUploaderAttachedFile[]) => void;
10
+ }
11
+ export declare const FileUploaderControlProvider: {
12
+ (props: PropsWithChildren<FileUploaderControlProviderProps>): JSX.Element;
13
+ displayName: string;
14
+ };
@@ -0,0 +1,172 @@
1
+ import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { FileUploaderFileStatus } from "../../fileUtils";
3
+ import { formatBytes } from "../../../../lib/utils";
4
+ import { TextWidthHelper } from "../../../../internal/TextWidthHelper/TextWidthHelper";
5
+ import { truncate } from "../../../../lib/stringUtils";
6
+ import { Spinner } from "../../../../components/Spinner";
7
+ import { FileUploaderControlContext } from "../../FileUploaderControlContext";
8
+ import { Tooltip } from "../../../../components/Tooltip";
9
+ import { cx } from "../../../../lib/theming/Emotion";
10
+ import { ThemeContext } from "../../../../lib/theming/ThemeContext";
11
+ import { DeleteIcon, ErrorIcon, OkIcon } from "../../../icons/16px";
12
+ import { keyListener } from "../../../../lib/events/keyListener";
13
+ import { isKeyEnter } from "../../../../lib/events/keyboard/identifiers";
14
+ import { jsStyles } from "../FileUploaderFile.styles";
15
+
16
+ var getTruncatedName = function getTruncatedName(fileNameWidth, fileNameElementWidth, name) {
17
+ if (!fileNameWidth && !fileNameElementWidth) {
18
+ return null;
19
+ }
20
+
21
+ if (fileNameWidth <= fileNameElementWidth) {
22
+ return name;
23
+ }
24
+
25
+ var charWidth = Math.ceil(fileNameWidth / name.length);
26
+ var maxCharsCountInSpan = Math.ceil(fileNameElementWidth / charWidth);
27
+ return truncate(name, maxCharsCountInSpan);
28
+ };
29
+
30
+ export var FileUploaderFile = function FileUploaderFile(props) {
31
+ var _cx, _cx2;
32
+
33
+ var file = props.file,
34
+ showSize = props.showSize;
35
+ var id = file.id,
36
+ originalFile = file.originalFile,
37
+ status = file.status,
38
+ validationResult = file.validationResult;
39
+ var name = originalFile.name,
40
+ size = originalFile.size;
41
+
42
+ var _useState = useState(false),
43
+ hovered = _useState[0],
44
+ setHovered = _useState[1];
45
+
46
+ var _useState2 = useState(false),
47
+ focusedByTab = _useState2[0],
48
+ setFocusedByTab = _useState2[1];
49
+
50
+ var _useState3 = useState(null),
51
+ truncatedFileName = _useState3[0],
52
+ setTruncatedFileName = _useState3[1];
53
+
54
+ var textHelperRef = useRef(null);
55
+ var fileNameElementRef = useRef(null);
56
+
57
+ var _useContext = useContext(FileUploaderControlContext),
58
+ removeFile = _useContext.removeFile;
59
+
60
+ var theme = useContext(ThemeContext);
61
+ var formattedSize = useMemo(function () {
62
+ return formatBytes(size, 1);
63
+ }, [size]); // важно запустить после рендера, чтобы успели проставиться рефы
64
+
65
+ useEffect(function () {
66
+ var _textHelperRef$curren, _fileNameElementRef$c;
67
+
68
+ var fileNameWidth = ((_textHelperRef$curren = textHelperRef.current) == null ? void 0 : _textHelperRef$curren.getTextWidth()) || 0;
69
+ var fileNameElementWidth = ((_fileNameElementRef$c = fileNameElementRef.current) == null ? void 0 : _fileNameElementRef$c.getBoundingClientRect().width) || 0;
70
+ var truncatedName = getTruncatedName(fileNameWidth, fileNameElementWidth, name);
71
+ setTruncatedFileName(truncatedName);
72
+ }, [name]);
73
+ var removeUploadFile = useCallback(function () {
74
+ removeFile(id);
75
+ }, [removeFile, id]);
76
+ var handleRemove = useCallback(function (event) {
77
+ event.preventDefault();
78
+ event.stopPropagation();
79
+ removeUploadFile();
80
+ }, [removeUploadFile]);
81
+ var isValid = validationResult.isValid,
82
+ message = validationResult.message;
83
+ var icon = useMemo(function () {
84
+ var deleteIcon = /*#__PURE__*/React.createElement(DeleteIcon, {
85
+ className: jsStyles.deleteIcon(theme)
86
+ });
87
+
88
+ if (hovered || focusedByTab) {
89
+ return deleteIcon;
90
+ }
91
+
92
+ switch (status) {
93
+ case FileUploaderFileStatus.Loading:
94
+ return /*#__PURE__*/React.createElement(Spinner, {
95
+ type: "mini",
96
+ dimmed: true,
97
+ caption: ""
98
+ });
99
+
100
+ case FileUploaderFileStatus.Uploaded:
101
+ return /*#__PURE__*/React.createElement(OkIcon, {
102
+ color: theme.fileUploaderIconColor
103
+ });
104
+
105
+ default:
106
+ if (!isValid) {
107
+ return /*#__PURE__*/React.createElement(ErrorIcon, null);
108
+ }
109
+
110
+ return deleteIcon;
111
+ }
112
+ }, [hovered, status, isValid, theme, focusedByTab]);
113
+ var renderTooltipContent = useCallback(function () {
114
+ return isValid ? null : message;
115
+ }, [isValid, message]);
116
+ var contentClassNames = cx(jsStyles.content(), (_cx = {}, _cx[jsStyles.error(theme)] = !isValid, _cx));
117
+ var handleMouseEnter = useCallback(function () {
118
+ setHovered(true);
119
+ }, []);
120
+ var handleMouseLeave = useCallback(function () {
121
+ setHovered(false);
122
+ }, []);
123
+ var handleFocus = useCallback(function () {
124
+ // focus event fires before keyDown eventlistener
125
+ // so we should check tabPressed in async way
126
+ requestAnimationFrame(function () {
127
+ if (keyListener.isTabPressed) {
128
+ setFocusedByTab(true);
129
+ }
130
+ });
131
+ }, []);
132
+ var handleBlur = useCallback(function () {
133
+ setFocusedByTab(false);
134
+ }, []);
135
+ var handleIconKeyDown = useCallback(function (e) {
136
+ if (isKeyEnter(e)) {
137
+ removeUploadFile();
138
+ }
139
+ }, [removeUploadFile]);
140
+ var iconClassNames = cx(jsStyles.icon(theme), (_cx2 = {}, _cx2[jsStyles.focusedIcon(theme)] = focusedByTab, _cx2));
141
+ return /*#__PURE__*/React.createElement("div", {
142
+ "data-tid": "FileUploader__file",
143
+ className: jsStyles.root(),
144
+ onMouseEnter: handleMouseEnter,
145
+ onMouseLeave: handleMouseLeave
146
+ }, /*#__PURE__*/React.createElement(Tooltip, {
147
+ "data-tid": "FileUploader__fileTooltip",
148
+ pos: "right middle",
149
+ render: renderTooltipContent
150
+ }, /*#__PURE__*/React.createElement("div", {
151
+ className: contentClassNames
152
+ }, /*#__PURE__*/React.createElement(TextWidthHelper, {
153
+ ref: textHelperRef,
154
+ text: name
155
+ }), /*#__PURE__*/React.createElement("span", {
156
+ "data-tid": "FileUploader__fileName",
157
+ ref: fileNameElementRef,
158
+ className: jsStyles.name()
159
+ }, truncatedFileName), !!showSize && formattedSize && /*#__PURE__*/React.createElement("span", {
160
+ "data-tid": "FileUploader__fileSize",
161
+ className: jsStyles.size()
162
+ }, formattedSize), /*#__PURE__*/React.createElement("div", {
163
+ className: iconClassNames,
164
+ "data-tid": "FileUploader__fileIcon",
165
+ tabIndex: 0,
166
+ onClick: handleRemove,
167
+ onFocus: handleFocus,
168
+ onBlur: handleBlur,
169
+ onKeyDown: handleIconKeyDown
170
+ }, icon))));
171
+ };
172
+ FileUploaderFile.displayName = 'FileUploaderFile';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FileUploaderFile.tsx"],"names":["React","useCallback","useContext","useEffect","useMemo","useRef","useState","FileUploaderFileStatus","formatBytes","TextWidthHelper","truncate","Spinner","FileUploaderControlContext","Tooltip","cx","ThemeContext","DeleteIcon","ErrorIcon","OkIcon","keyListener","isKeyEnter","jsStyles","getTruncatedName","fileNameWidth","fileNameElementWidth","name","charWidth","Math","ceil","length","maxCharsCountInSpan","FileUploaderFile","props","file","showSize","id","originalFile","status","validationResult","size","hovered","setHovered","focusedByTab","setFocusedByTab","truncatedFileName","setTruncatedFileName","textHelperRef","fileNameElementRef","removeFile","theme","formattedSize","current","getTextWidth","getBoundingClientRect","width","truncatedName","removeUploadFile","handleRemove","event","preventDefault","stopPropagation","isValid","message","icon","deleteIcon","Loading","Uploaded","fileUploaderIconColor","renderTooltipContent","contentClassNames","content","error","handleMouseEnter","handleMouseLeave","handleFocus","requestAnimationFrame","isTabPressed","handleBlur","handleIconKeyDown","e","iconClassNames","focusedIcon","root","displayName"],"mappings":"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","sourcesContent":["import React, { ReactNode, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { FileUploaderAttachedFile, FileUploaderFileStatus } from '../fileUtils';\nimport { formatBytes } from '../../../lib/utils';\nimport { TextWidthHelper } from '../../../internal/TextWidthHelper/TextWidthHelper';\nimport { truncate } from '../../../lib/stringUtils';\nimport { Spinner } from '../../../components/Spinner';\nimport { FileUploaderControlContext } from '../FileUploaderControlContext';\nimport { Tooltip } from '../../../components/Tooltip';\nimport { cx } from '../../../lib/theming/Emotion';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport { DeleteIcon, ErrorIcon, OkIcon } from '../../icons/16px';\nimport { keyListener } from '../../../lib/events/keyListener';\nimport { isKeyEnter } from '../../../lib/events/keyboard/identifiers';\nimport { Nullable } from '../../../typings/utility-types';\n\nimport { jsStyles } from './FileUploaderFile.styles';\n\ninterface FileUploaderFileProps {\n file: FileUploaderAttachedFile;\n showSize?: boolean;\n}\n\nconst getTruncatedName = (fileNameWidth: number, fileNameElementWidth: number, name: string) => {\n if (!fileNameWidth && !fileNameElementWidth) {\n return null;\n }\n\n if (fileNameWidth <= fileNameElementWidth) {\n return name;\n }\n\n const charWidth = Math.ceil(fileNameWidth / name.length);\n const maxCharsCountInSpan = Math.ceil(fileNameElementWidth / charWidth);\n\n return truncate(name, maxCharsCountInSpan);\n};\n\nexport const FileUploaderFile = (props: FileUploaderFileProps) => {\n const { file, showSize } = props;\n const { id, originalFile, status, validationResult } = file;\n const { name, size } = originalFile;\n\n const [hovered, setHovered] = useState<boolean>(false);\n const [focusedByTab, setFocusedByTab] = useState(false);\n const [truncatedFileName, setTruncatedFileName] = useState<Nullable<string>>(null);\n\n const textHelperRef = useRef<TextWidthHelper>(null);\n const fileNameElementRef = useRef<HTMLSpanElement>(null);\n\n const { removeFile } = useContext(FileUploaderControlContext);\n const theme = useContext(ThemeContext);\n\n const formattedSize = useMemo(() => formatBytes(size, 1), [size]);\n\n // важно запустить после рендера, чтобы успели проставиться рефы\n useEffect(() => {\n const fileNameWidth = textHelperRef.current?.getTextWidth() || 0;\n const fileNameElementWidth = fileNameElementRef.current?.getBoundingClientRect().width || 0;\n const truncatedName = getTruncatedName(fileNameWidth, fileNameElementWidth, name);\n\n setTruncatedFileName(truncatedName);\n }, [name]);\n\n const removeUploadFile = useCallback(() => {\n removeFile(id);\n }, [removeFile, id]);\n\n const handleRemove = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n removeUploadFile();\n },\n [removeUploadFile],\n );\n\n const { isValid, message } = validationResult;\n\n const icon: ReactNode = useMemo(() => {\n const deleteIcon = <DeleteIcon className={jsStyles.deleteIcon(theme)} />;\n\n if (hovered || focusedByTab) {\n return deleteIcon;\n }\n\n switch (status) {\n case FileUploaderFileStatus.Loading:\n return <Spinner type=\"mini\" dimmed caption=\"\" />;\n case FileUploaderFileStatus.Uploaded:\n return <OkIcon color={theme.fileUploaderIconColor} />;\n default:\n if (!isValid) {\n return <ErrorIcon />;\n }\n return deleteIcon;\n }\n }, [hovered, status, isValid, theme, focusedByTab]);\n\n const renderTooltipContent = useCallback((): ReactNode => {\n return isValid ? null : message;\n }, [isValid, message]);\n\n const contentClassNames = cx(jsStyles.content(), {\n [jsStyles.error(theme)]: !isValid,\n });\n\n const handleMouseEnter = useCallback(() => {\n setHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHovered(false);\n }, []);\n\n const handleFocus = useCallback(() => {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n }, []);\n\n const handleBlur = useCallback(() => {\n setFocusedByTab(false);\n }, []);\n\n const handleIconKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEnter(e)) {\n removeUploadFile();\n }\n },\n [removeUploadFile],\n );\n\n const iconClassNames = cx(jsStyles.icon(theme), {\n [jsStyles.focusedIcon(theme)]: focusedByTab,\n });\n\n return (\n <div\n data-tid=\"FileUploader__file\"\n className={jsStyles.root()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <Tooltip data-tid=\"FileUploader__fileTooltip\" pos=\"right middle\" render={renderTooltipContent}>\n <div className={contentClassNames}>\n <TextWidthHelper ref={textHelperRef} text={name} />\n <span data-tid=\"FileUploader__fileName\" ref={fileNameElementRef} className={jsStyles.name()}>\n {truncatedFileName}\n </span>\n {!!showSize && formattedSize && (\n <span data-tid=\"FileUploader__fileSize\" className={jsStyles.size()}>\n {formattedSize}\n </span>\n )}\n <div\n className={iconClassNames}\n data-tid=\"FileUploader__fileIcon\"\n tabIndex={0}\n onClick={handleRemove}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleIconKeyDown}\n >\n {icon}\n </div>\n </div>\n </Tooltip>\n </div>\n );\n};\n\nFileUploaderFile.displayName = 'FileUploaderFile';\n"]}
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../../cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js",
3
+ "module": "FileUploaderFile",
4
+ "types": "../FileUploaderFile.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -0,0 +1,10 @@
1
+ import { FileUploaderAttachedFile } from '../fileUtils';
2
+ interface FileUploaderFileProps {
3
+ file: FileUploaderAttachedFile;
4
+ showSize?: boolean;
5
+ }
6
+ export declare const FileUploaderFile: {
7
+ (props: FileUploaderFileProps): JSX.Element;
8
+ displayName: string;
9
+ };
10
+ export {};
@@ -0,0 +1,32 @@
1
+ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
2
+
3
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
4
+
5
+ import { css, memoizeStyle } from "../../../../lib/theming/Emotion";
6
+ var styles = {
7
+ root: function root() {
8
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n width: 100%;\n "])));
9
+ },
10
+ content: function content() {
11
+ return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n display: flex;\n width: 100%;\n position: relative;\n "])));
12
+ },
13
+ error: function error(t) {
14
+ return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n color: ", ";\n "])), t.fileUploaderBorderColorError);
15
+ },
16
+ name: function name() {
17
+ return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n flex: 1 1 100%;\n overflow: hidden;\n "])));
18
+ },
19
+ size: function size() {
20
+ return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n margin-left: 28px;\n flex: 1 0 auto;\n "])));
21
+ },
22
+ icon: function icon(t) {
23
+ return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n margin-left: 23px;\n flex: 1 0 auto;\n cursor: pointer;\n font-size: ", ";\n text-align: right;\n outline: none;\n "])), t.fileUploaderIconSize);
24
+ },
25
+ deleteIcon: function deleteIcon(t) {
26
+ return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n color: ", ";\n &:hover {\n color: ", ";\n }\n "])), t.fileUploaderIconColor, t.fileUploaderIconHoverColor);
27
+ },
28
+ focusedIcon: function focusedIcon(t) {
29
+ return css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n outline: 1px solid ", ";\n "])), t.borderColorFocus);
30
+ }
31
+ };
32
+ export var jsStyles = memoizeStyle(styles);
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FileUploaderFile.styles.ts"],"names":["css","memoizeStyle","styles","root","content","error","t","fileUploaderBorderColorError","name","size","icon","fileUploaderIconSize","deleteIcon","fileUploaderIconColor","fileUploaderIconHoverColor","focusedIcon","borderColorFocus","jsStyles"],"mappings":"kPAAA,SAASA,GAAT,EAAcC,YAAd,QAAkC,8BAAlC;;;AAGA,IAAMC,MAAM,GAAG;AACbC,EAAAA,IADa,kBACN;AACL,WAAOH,GAAP;;;AAGD,GALY;;AAObI,EAAAA,OAPa,qBAOH;AACR,WAAOJ,GAAP;;;;;AAKD,GAbY;;AAebK,EAAAA,KAfa,iBAePC,CAfO,EAeG;AACd,WAAON,GAAP;AACWM,IAAAA,CAAC,CAACC,4BADb;;AAGD,GAnBY;;AAqBbC,EAAAA,IArBa,kBAqBN;AACL,WAAOR,GAAP;;;;AAID,GA1BY;;AA4BbS,EAAAA,IA5Ba,kBA4BN;AACL,WAAOT,GAAP;;;;AAID,GAjCY;;AAmCbU,EAAAA,IAnCa,gBAmCRJ,CAnCQ,EAmCE;AACb,WAAON,GAAP;;;;AAIeM,IAAAA,CAAC,CAACK,oBAJjB;;;;AAQD,GA5CY;;AA8CbC,EAAAA,UA9Ca,sBA8CFN,CA9CE,EA8CQ;AACnB,WAAON,GAAP;AACWM,IAAAA,CAAC,CAACO,qBADb;;AAGaP,IAAAA,CAAC,CAACQ,0BAHf;;;AAMD,GArDY;;AAuDbC,EAAAA,WAvDa,uBAuDDT,CAvDC,EAuDS;AACpB,WAAON,GAAP;AACuBM,IAAAA,CAAC,CAACU,gBADzB;;AAGD,GA3DY,EAAf;;;AA8DA,OAAO,IAAMC,QAAQ,GAAGhB,YAAY,CAACC,MAAD,CAA7B","sourcesContent":["import { css, memoizeStyle } from '../../../lib/theming/Emotion';\nimport { Theme } from '../../../lib/theming/Theme';\n\nconst styles = {\n root() {\n return css`\n width: 100%;\n `;\n },\n\n content() {\n return css`\n display: flex;\n width: 100%;\n position: relative;\n `;\n },\n\n error(t: Theme) {\n return css`\n color: ${t.fileUploaderBorderColorError};\n `;\n },\n\n name() {\n return css`\n flex: 1 1 100%;\n overflow: hidden;\n `;\n },\n\n size() {\n return css`\n margin-left: 28px;\n flex: 1 0 auto;\n `;\n },\n\n icon(t: Theme) {\n return css`\n margin-left: 23px;\n flex: 1 0 auto;\n cursor: pointer;\n font-size: ${t.fileUploaderIconSize};\n text-align: right;\n outline: none;\n `;\n },\n\n deleteIcon(t: Theme) {\n return css`\n color: ${t.fileUploaderIconColor};\n &:hover {\n color: ${t.fileUploaderIconHoverColor};\n }\n `;\n },\n\n focusedIcon(t: Theme) {\n return css`\n outline: 1px solid ${t.borderColorFocus};\n `;\n },\n};\n\nexport const jsStyles = memoizeStyle(styles);\n"]}
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../../cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js",
3
+ "module": "FileUploaderFile.styles",
4
+ "types": "../FileUploaderFile.styles.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -0,0 +1,11 @@
1
+ import { Theme } from '../../../lib/theming/Theme';
2
+ export declare const jsStyles: {
3
+ root(): string;
4
+ content(): string;
5
+ error(t: Theme): string;
6
+ name(): string;
7
+ size(): string;
8
+ icon(t: Theme): string;
9
+ deleteIcon(t: Theme): string;
10
+ focusedIcon(t: Theme): string;
11
+ };
@@ -0,0 +1,23 @@
1
+ import React, { useContext } from 'react';
2
+ import { FileUploaderControlContext } from "../../FileUploaderControlContext";
3
+ import { ThemeContext } from "../../../../lib/theming/ThemeContext";
4
+ import { FileUploaderFile } from "../../FileUploaderFile/FileUploaderFile";
5
+ import { jsStyles } from "../FileUploaderFileList.styles";
6
+ export var FileUploaderFileList = function FileUploaderFileList() {
7
+ var _useContext = useContext(FileUploaderControlContext),
8
+ files = _useContext.files;
9
+
10
+ var theme = useContext(ThemeContext);
11
+ return /*#__PURE__*/React.createElement("div", {
12
+ "data-tid": "FileUploader__fileList"
13
+ }, files.map(function (file) {
14
+ return /*#__PURE__*/React.createElement("div", {
15
+ key: file.id,
16
+ className: jsStyles.fileWrapper(theme)
17
+ }, /*#__PURE__*/React.createElement(FileUploaderFile, {
18
+ file: file,
19
+ showSize: true
20
+ }));
21
+ }));
22
+ };
23
+ FileUploaderFileList.displayName = 'FileUploaderFileList';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FileUploaderFileList.tsx"],"names":["React","useContext","FileUploaderControlContext","ThemeContext","FileUploaderFile","jsStyles","FileUploaderFileList","files","theme","map","file","id","fileWrapper","displayName"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,0BAAT,QAA2C,+BAA3C;AACA,SAASC,YAAT,QAA6B,mCAA7B;AACA,SAASC,gBAAT,QAAiC,sCAAjC;;AAEA,SAASC,QAAT,QAAyB,+BAAzB;;AAEA,OAAO,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAM;AACtBL,EAAAA,UAAU,CAACC,0BAAD,CADY,CAChCK,KADgC,eAChCA,KADgC;AAExC,MAAMC,KAAK,GAAGP,UAAU,CAACE,YAAD,CAAxB;;AAEA;AACE,iCAAK,YAAS,wBAAd;AACGI,IAAAA,KAAK,CAACE,GAAN,CAAU,UAACC,IAAD;AACT,qCAAK,GAAG,EAAEA,IAAI,CAACC,EAAf,EAAmB,SAAS,EAAEN,QAAQ,CAACO,WAAT,CAAqBJ,KAArB,CAA9B;AACE,4BAAC,gBAAD,IAAkB,IAAI,EAAEE,IAAxB,EAA8B,QAAQ,MAAtC,GADF,CADS,GAAV,CADH,CADF;;;;;AASD,CAbM;;AAePJ,oBAAoB,CAACO,WAArB,GAAmC,sBAAnC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { FileUploaderControlContext } from '../FileUploaderControlContext';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport { FileUploaderFile } from '../FileUploaderFile/FileUploaderFile';\n\nimport { jsStyles } from './FileUploaderFileList.styles';\n\nexport const FileUploaderFileList = () => {\n const { files } = useContext(FileUploaderControlContext);\n const theme = useContext(ThemeContext);\n\n return (\n <div data-tid=\"FileUploader__fileList\">\n {files.map((file) => (\n <div key={file.id} className={jsStyles.fileWrapper(theme)}>\n <FileUploaderFile file={file} showSize />\n </div>\n ))}\n </div>\n );\n};\n\nFileUploaderFileList.displayName = 'FileUploaderFileList';\n"]}
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../../cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js",
3
+ "module": "FileUploaderFileList",
4
+ "types": "../FileUploaderFileList.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -0,0 +1,4 @@
1
+ export declare const FileUploaderFileList: {
2
+ (): JSX.Element;
3
+ displayName: string;
4
+ };
@@ -0,0 +1,11 @@
1
+ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
2
+
3
+ var _templateObject;
4
+
5
+ import { css, memoizeStyle } from "../../../../lib/theming/Emotion";
6
+ var styles = {
7
+ fileWrapper: function fileWrapper(t) {
8
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n width: 100%;\n height: 32px;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: ", " ", ";\n "])), t.fileUploaderPaddingY, t.fileUploaderPaddingX);
9
+ }
10
+ };
11
+ export var jsStyles = memoizeStyle(styles);
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FileUploaderFileList.styles.ts"],"names":["css","memoizeStyle","styles","fileWrapper","t","fileUploaderPaddingY","fileUploaderPaddingX","jsStyles"],"mappings":"oHAAA,SAASA,GAAT,EAAcC,YAAd,QAAkC,8BAAlC;;;AAGA,IAAMC,MAAM,GAAG;AACbC,EAAAA,WADa,uBACDC,CADC,EACS;AACpB,WAAOJ,GAAP;;;;;;AAMaI,IAAAA,CAAC,CAACC,oBANf,EAMuCD,CAAC,CAACE,oBANzC;;AAQD,GAVY,EAAf;;;AAaA,OAAO,IAAMC,QAAQ,GAAGN,YAAY,CAACC,MAAD,CAA7B","sourcesContent":["import { css, memoizeStyle } from '../../../lib/theming/Emotion';\nimport { Theme } from '../../../lib/theming/Theme';\n\nconst styles = {\n fileWrapper(t: Theme) {\n return css`\n width: 100%;\n height: 32px;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: ${t.fileUploaderPaddingY} ${t.fileUploaderPaddingX};\n `;\n },\n};\n\nexport const jsStyles = memoizeStyle(styles);\n"]}
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../../cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js",
3
+ "module": "FileUploaderFileList.styles",
4
+ "types": "../FileUploaderFileList.styles.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -0,0 +1,4 @@
1
+ import { Theme } from '../../../lib/theming/Theme';
2
+ export declare const jsStyles: {
3
+ fileWrapper(t: Theme): string;
4
+ };
@@ -0,0 +1,18 @@
1
+ export var FileUploaderFileValidationResult = /*#__PURE__*/function () {
2
+ function FileUploaderFileValidationResult(isValid, message) {
3
+ this.isValid = void 0;
4
+ this.message = void 0;
5
+ this.isValid = isValid;
6
+ this.message = message;
7
+ }
8
+
9
+ FileUploaderFileValidationResult.error = function error(message) {
10
+ return new FileUploaderFileValidationResult(false, message);
11
+ };
12
+
13
+ FileUploaderFileValidationResult.ok = function ok() {
14
+ return new FileUploaderFileValidationResult(true);
15
+ };
16
+
17
+ return FileUploaderFileValidationResult;
18
+ }();
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FileUploaderFileValidationResult.ts"],"names":["FileUploaderFileValidationResult","isValid","message","error","ok"],"mappings":"AAAA,WAAaA,gCAAb;;;;AAIE,4CAAYC,OAAZ,EAA8BC,OAA9B,EAAgD,MAHvCD,OAGuC,eAFvCC,OAEuC;AAC9C,SAAKD,OAAL,GAAeA,OAAf;AACA,SAAKC,OAAL,GAAeA,OAAf;AACD,GAPH;;AASSC,EAAAA,KATT,GASE,eAAaD,OAAb,EAAgE;AAC9D,WAAO,IAAIF,gCAAJ,CAAqC,KAArC,EAA4CE,OAA5C,CAAP;AACD,GAXH;;AAaSE,EAAAA,EAbT,GAaE,cAA8C;AAC5C,WAAO,IAAIJ,gCAAJ,CAAqC,IAArC,CAAP;AACD,GAfH","sourcesContent":["export class FileUploaderFileValidationResult {\n readonly isValid: boolean;\n readonly message?: string;\n\n constructor(isValid: boolean, message?: string) {\n this.isValid = isValid;\n this.message = message;\n }\n\n static error(message: string): FileUploaderFileValidationResult {\n return new FileUploaderFileValidationResult(false, message);\n }\n\n static ok(): FileUploaderFileValidationResult {\n return new FileUploaderFileValidationResult(true);\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.js",
3
+ "module": "FileUploaderFileValidationResult",
4
+ "types": "../FileUploaderFileValidationResult.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -0,0 +1,7 @@
1
+ export declare class FileUploaderFileValidationResult {
2
+ readonly isValid: boolean;
3
+ readonly message?: string;
4
+ constructor(isValid: boolean, message?: string);
5
+ static error(message: string): FileUploaderFileValidationResult;
6
+ static ok(): FileUploaderFileValidationResult;
7
+ }
@@ -0,0 +1,19 @@
1
+ import { getGuid } from "../../../lib/guidUtils";
2
+ import { FileUploaderFileValidationResult } from "../FileUploaderFileValidationResult";
3
+ export var FileUploaderFileStatus;
4
+
5
+ (function (FileUploaderFileStatus) {
6
+ FileUploaderFileStatus["Attached"] = "Attached";
7
+ FileUploaderFileStatus["Loading"] = "Loading";
8
+ FileUploaderFileStatus["Uploaded"] = "Uploaded";
9
+ FileUploaderFileStatus["Error"] = "Error";
10
+ })(FileUploaderFileStatus || (FileUploaderFileStatus = {}));
11
+
12
+ export var getAttachedFile = function getAttachedFile(file) {
13
+ return {
14
+ id: getGuid(),
15
+ originalFile: file,
16
+ status: FileUploaderFileStatus.Attached,
17
+ validationResult: FileUploaderFileValidationResult.ok()
18
+ };
19
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["fileUtils.ts"],"names":["getGuid","FileUploaderFileValidationResult","FileUploaderFileStatus","getAttachedFile","file","id","originalFile","status","Attached","validationResult","ok"],"mappings":"AAAA,SAASA,OAAT,QAAwB,qBAAxB;;AAEA,SAASC,gCAAT,QAAiD,oCAAjD;;AAEA,WAAYC,sBAAZ,C,WAAYA,sB,GAAAA,sB,0BAAAA,sB,wBAAAA,sB,0BAAAA,sB,uBAAAA,sB,KAAAA,sB;;;;;;;;;;;;;;AAcZ,OAAO,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAACC,IAAD,EAA0C;AACvE,SAAO;AACLC,IAAAA,EAAE,EAAEL,OAAO,EADN;AAELM,IAAAA,YAAY,EAAEF,IAFT;AAGLG,IAAAA,MAAM,EAAEL,sBAAsB,CAACM,QAH1B;AAILC,IAAAA,gBAAgB,EAAER,gCAAgC,CAACS,EAAjC,EAJb,EAAP;;AAMD,CAPM","sourcesContent":["import { getGuid } from '../../lib/guidUtils';\n\nimport { FileUploaderFileValidationResult } from './FileUploaderFileValidationResult';\n\nexport enum FileUploaderFileStatus {\n Attached = 'Attached',\n Loading = 'Loading',\n Uploaded = 'Uploaded',\n Error = 'Error',\n}\n\nexport interface FileUploaderAttachedFile {\n id: string;\n originalFile: File;\n status: FileUploaderFileStatus;\n validationResult: FileUploaderFileValidationResult;\n}\n\nexport const getAttachedFile = (file: File): FileUploaderAttachedFile => {\n return {\n id: getGuid(),\n originalFile: file,\n status: FileUploaderFileStatus.Attached,\n validationResult: FileUploaderFileValidationResult.ok(),\n };\n};\n"]}
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../cjs/internal/FileUploaderControl/fileUtils.js",
3
+ "module": "fileUtils",
4
+ "types": "../fileUtils.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -0,0 +1,14 @@
1
+ import { FileUploaderFileValidationResult } from './FileUploaderFileValidationResult';
2
+ export declare enum FileUploaderFileStatus {
3
+ Attached = "Attached",
4
+ Loading = "Loading",
5
+ Uploaded = "Uploaded",
6
+ Error = "Error"
7
+ }
8
+ export interface FileUploaderAttachedFile {
9
+ id: string;
10
+ originalFile: File;
11
+ status: FileUploaderFileStatus;
12
+ validationResult: FileUploaderFileValidationResult;
13
+ }
14
+ export declare const getAttachedFile: (file: File) => FileUploaderAttachedFile;
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../../cjs/internal/FileUploaderControl/hooks/useControlLocale.js",
3
+ "module": "useControlLocale",
4
+ "types": "../useControlLocale.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -0,0 +1,5 @@
1
+ import { useLocaleForControl } from "../../../../lib/locale/useLocaleForControl";
2
+ import { FileUploaderLocaleHelper } from "../../../../components/FileUploader/locale";
3
+ export var useControlLocale = function useControlLocale() {
4
+ return useLocaleForControl('FileUploader', FileUploaderLocaleHelper);
5
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useControlLocale.ts"],"names":["useLocaleForControl","FileUploaderLocaleHelper","useControlLocale"],"mappings":"AAAA,SAASA,mBAAT,QAAoC,yCAApC;AACA,SAASC,wBAAT,QAAyC,yCAAzC;;AAEA,OAAO,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,WAAMF,mBAAmB,CAAC,cAAD,EAAiBC,wBAAjB,CAAzB,EAAzB","sourcesContent":["import { useLocaleForControl } from '../../../lib/locale/useLocaleForControl';\nimport { FileUploaderLocaleHelper } from '../../../components/FileUploader/locale';\n\nexport const useControlLocale = () => useLocaleForControl('FileUploader', FileUploaderLocaleHelper);\n"]}
@@ -0,0 +1 @@
1
+ export declare const useControlLocale: () => import("../../../components/FileUploader/locale").FileUploaderLocale;
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../../cjs/internal/FileUploaderControl/hooks/useUpload.js",
3
+ "module": "useUpload",
4
+ "types": "../useUpload.d.ts",
5
+ "sideEffects": false
6
+ }