@skbkontur/react-ui 3.9.2 → 3.10.0-fileuploader.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 (223) hide show
  1. package/cjs/components/FileUploader/FileUploader.d.ts +31 -0
  2. package/cjs/components/FileUploader/FileUploader.js +270 -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/hooks/useDrop.d.ts +11 -0
  24. package/cjs/hooks/useDrop.js +75 -0
  25. package/cjs/hooks/useDrop.js.map +1 -0
  26. package/cjs/hooks/useMemoObject.d.ts +1 -0
  27. package/cjs/hooks/useMemoObject.js +5 -0
  28. package/cjs/hooks/useMemoObject.js.map +1 -0
  29. package/cjs/index.d.ts +1 -0
  30. package/cjs/index.js +1 -0
  31. package/cjs/index.js.map +1 -1
  32. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.d.ts +11 -0
  33. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.js +15 -0
  34. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.js.map +1 -0
  35. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +14 -0
  36. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +107 -0
  37. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -0
  38. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +10 -0
  39. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +187 -0
  40. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -0
  41. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.d.ts +11 -0
  42. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js +66 -0
  43. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js.map +1 -0
  44. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +4 -0
  45. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +24 -0
  46. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -0
  47. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.d.ts +4 -0
  48. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js +17 -0
  49. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js.map +1 -0
  50. package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.d.ts +7 -0
  51. package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.js +16 -0
  52. package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.js.map +1 -0
  53. package/cjs/internal/FileUploaderControl/fileUtils.d.ts +18 -0
  54. package/cjs/internal/FileUploaderControl/fileUtils.js +55 -0
  55. package/cjs/internal/FileUploaderControl/fileUtils.js.map +1 -0
  56. package/cjs/internal/FileUploaderControl/hooks/useControlLocale.d.ts +1 -0
  57. package/cjs/internal/FileUploaderControl/hooks/useControlLocale.js +4 -0
  58. package/cjs/internal/FileUploaderControl/hooks/useControlLocale.js.map +1 -0
  59. package/cjs/internal/FileUploaderControl/hooks/useUpload.d.ts +3 -0
  60. package/cjs/internal/FileUploaderControl/hooks/useUpload.js +51 -0
  61. package/cjs/internal/FileUploaderControl/hooks/useUpload.js.map +1 -0
  62. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +3 -0
  63. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js +18 -0
  64. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js.map +1 -0
  65. package/cjs/internal/TextWidthHelper/TextWidthHelper.d.ts +15 -0
  66. package/cjs/internal/TextWidthHelper/TextWidthHelper.js +34 -0
  67. package/cjs/internal/TextWidthHelper/TextWidthHelper.js.map +1 -0
  68. package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.d.ts +4 -0
  69. package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.js +23 -0
  70. package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.js.map +1 -0
  71. package/cjs/internal/ThemePlayground/Playground.d.ts +1 -0
  72. package/cjs/internal/ThemePlayground/Playground.js +11 -1
  73. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  74. package/cjs/internal/ThemePlayground/darkTheme.d.ts +15 -0
  75. package/cjs/internal/ThemePlayground/darkTheme.js +25 -1
  76. package/cjs/internal/ThemePlayground/darkTheme.js.map +1 -1
  77. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  78. package/cjs/internal/icons/16px/index.d.ts +3 -0
  79. package/cjs/internal/icons/16px/index.js +38 -2
  80. package/cjs/internal/icons/16px/index.js.map +1 -1
  81. package/cjs/internal/themes/DefaultTheme.d.ts +23 -0
  82. package/cjs/internal/themes/DefaultTheme.js +64 -1
  83. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  84. package/cjs/lib/guidUtils.d.ts +1 -0
  85. package/cjs/lib/guidUtils.js +5 -0
  86. package/cjs/lib/guidUtils.js.map +1 -0
  87. package/cjs/lib/locale/types.d.ts +2 -0
  88. package/cjs/lib/locale/types.js +2 -0
  89. package/cjs/lib/locale/types.js.map +1 -1
  90. package/cjs/lib/locale/useLocaleForControl.d.ts +3 -0
  91. package/cjs/lib/locale/useLocaleForControl.js +14 -0
  92. package/cjs/lib/locale/useLocaleForControl.js.map +1 -0
  93. package/cjs/lib/stringUtils.d.ts +1 -0
  94. package/cjs/lib/stringUtils.js +13 -0
  95. package/cjs/lib/stringUtils.js.map +1 -0
  96. package/cjs/lib/utils.d.ts +1 -0
  97. package/cjs/lib/utils.js +20 -2
  98. package/cjs/lib/utils.js.map +1 -1
  99. package/components/FileUploader/FileUploader/FileUploader.js +277 -0
  100. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -0
  101. package/components/FileUploader/FileUploader/package.json +6 -0
  102. package/components/FileUploader/FileUploader.d.ts +31 -0
  103. package/components/FileUploader/FileUploader.md +67 -0
  104. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js +56 -0
  105. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js.map +1 -0
  106. package/components/FileUploader/FileUploader.styles/package.json +6 -0
  107. package/components/FileUploader/FileUploader.styles.d.ts +19 -0
  108. package/components/FileUploader/index/index.js +3 -0
  109. package/components/FileUploader/index/index.js.map +1 -0
  110. package/components/FileUploader/index/package.json +6 -0
  111. package/components/FileUploader/index.d.ts +4 -0
  112. package/components/FileUploader/locale/index/index.js +8 -0
  113. package/components/FileUploader/locale/index/index.js.map +1 -0
  114. package/components/FileUploader/locale/index/package.json +6 -0
  115. package/components/FileUploader/locale/index.d.ts +4 -0
  116. package/components/FileUploader/locale/locales/en/en.js +6 -0
  117. package/components/FileUploader/locale/locales/en/en.js.map +1 -0
  118. package/components/FileUploader/locale/locales/en/package.json +6 -0
  119. package/components/FileUploader/locale/locales/en.d.ts +2 -0
  120. package/components/FileUploader/locale/locales/ru/package.json +6 -0
  121. package/components/FileUploader/locale/locales/ru/ru.js +6 -0
  122. package/components/FileUploader/locale/locales/ru/ru.js.map +1 -0
  123. package/components/FileUploader/locale/locales/ru.d.ts +2 -0
  124. package/components/FileUploader/locale/package.json +6 -0
  125. package/components/FileUploader/locale/types/package.json +6 -0
  126. package/components/FileUploader/locale/types/types.js +0 -0
  127. package/components/FileUploader/locale/types/types.js.map +1 -0
  128. package/components/FileUploader/locale/types.d.ts +6 -0
  129. package/components/FileUploader/package.json +6 -0
  130. package/hooks/useDrop/package.json +6 -0
  131. package/hooks/useDrop/useDrop.js +57 -0
  132. package/hooks/useDrop/useDrop.js.map +1 -0
  133. package/hooks/useDrop.d.ts +11 -0
  134. package/hooks/useMemoObject/package.json +6 -0
  135. package/hooks/useMemoObject/useMemoObject.js +6 -0
  136. package/hooks/useMemoObject/useMemoObject.js.map +1 -0
  137. package/hooks/useMemoObject.d.ts +1 -0
  138. package/index.d.ts +1 -0
  139. package/index.js +1 -0
  140. package/index.js.map +1 -1
  141. package/internal/FileUploaderControl/FileUploaderControlContext/FileUploaderControlContext.js +2 -0
  142. package/internal/FileUploaderControl/FileUploaderControlContext/FileUploaderControlContext.js.map +1 -0
  143. package/internal/FileUploaderControl/FileUploaderControlContext/package.json +6 -0
  144. package/internal/FileUploaderControl/FileUploaderControlContext.d.ts +11 -0
  145. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +79 -0
  146. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -0
  147. package/internal/FileUploaderControl/FileUploaderControlProvider/package.json +6 -0
  148. package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +14 -0
  149. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +176 -0
  150. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -0
  151. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/package.json +6 -0
  152. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +10 -0
  153. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/FileUploaderFile.styles.js +32 -0
  154. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/FileUploaderFile.styles.js.map +1 -0
  155. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/package.json +6 -0
  156. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.d.ts +11 -0
  157. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +23 -0
  158. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -0
  159. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/package.json +6 -0
  160. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +4 -0
  161. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/FileUploaderFileList.styles.js +11 -0
  162. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/FileUploaderFileList.styles.js.map +1 -0
  163. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/package.json +6 -0
  164. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.d.ts +4 -0
  165. package/internal/FileUploaderControl/FileUploaderFileValidationResult/FileUploaderFileValidationResult.js +18 -0
  166. package/internal/FileUploaderControl/FileUploaderFileValidationResult/FileUploaderFileValidationResult.js.map +1 -0
  167. package/internal/FileUploaderControl/FileUploaderFileValidationResult/package.json +6 -0
  168. package/internal/FileUploaderControl/FileUploaderFileValidationResult.d.ts +7 -0
  169. package/internal/FileUploaderControl/fileUtils/fileUtils.js +85 -0
  170. package/internal/FileUploaderControl/fileUtils/fileUtils.js.map +1 -0
  171. package/internal/FileUploaderControl/fileUtils/package.json +6 -0
  172. package/internal/FileUploaderControl/fileUtils.d.ts +18 -0
  173. package/internal/FileUploaderControl/hooks/useControlLocale/package.json +6 -0
  174. package/internal/FileUploaderControl/hooks/useControlLocale/useControlLocale.js +5 -0
  175. package/internal/FileUploaderControl/hooks/useControlLocale/useControlLocale.js.map +1 -0
  176. package/internal/FileUploaderControl/hooks/useControlLocale.d.ts +1 -0
  177. package/internal/FileUploaderControl/hooks/useUpload/package.json +6 -0
  178. package/internal/FileUploaderControl/hooks/useUpload/useUpload.js +56 -0
  179. package/internal/FileUploaderControl/hooks/useUpload/useUpload.js.map +1 -0
  180. package/internal/FileUploaderControl/hooks/useUpload.d.ts +3 -0
  181. package/internal/FileUploaderControl/withFileUploaderControlProvider/package.json +6 -0
  182. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js +16 -0
  183. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js.map +1 -0
  184. package/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +3 -0
  185. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js +49 -0
  186. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js.map +1 -0
  187. package/internal/TextWidthHelper/TextWidthHelper/package.json +6 -0
  188. package/internal/TextWidthHelper/TextWidthHelper.d.ts +15 -0
  189. package/internal/TextWidthHelper/TextWidthHelper.styles/TextWidthHelper.styles.js +14 -0
  190. package/internal/TextWidthHelper/TextWidthHelper.styles/TextWidthHelper.styles.js.map +1 -0
  191. package/internal/TextWidthHelper/TextWidthHelper.styles/package.json +6 -0
  192. package/internal/TextWidthHelper/TextWidthHelper.styles.d.ts +4 -0
  193. package/internal/ThemePlayground/Playground/Playground.js +11 -1
  194. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  195. package/internal/ThemePlayground/Playground.d.ts +1 -0
  196. package/internal/ThemePlayground/darkTheme/darkTheme.js +26 -1
  197. package/internal/ThemePlayground/darkTheme/darkTheme.js.map +1 -1
  198. package/internal/ThemePlayground/darkTheme.d.ts +15 -0
  199. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  200. package/internal/icons/16px/index/index.js +27 -0
  201. package/internal/icons/16px/index/index.js.map +1 -1
  202. package/internal/icons/16px/index.d.ts +3 -0
  203. package/internal/themes/DefaultTheme/DefaultTheme.js +67 -0
  204. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  205. package/internal/themes/DefaultTheme.d.ts +23 -0
  206. package/lib/guidUtils/guidUtils.js +4 -0
  207. package/lib/guidUtils/guidUtils.js.map +1 -0
  208. package/lib/guidUtils/package.json +6 -0
  209. package/lib/guidUtils.d.ts +1 -0
  210. package/lib/locale/types/types.js.map +1 -1
  211. package/lib/locale/types.d.ts +2 -0
  212. package/lib/locale/useLocaleForControl/package.json +6 -0
  213. package/lib/locale/useLocaleForControl/useLocaleForControl.js +12 -0
  214. package/lib/locale/useLocaleForControl/useLocaleForControl.js.map +1 -0
  215. package/lib/locale/useLocaleForControl.d.ts +3 -0
  216. package/lib/stringUtils/package.json +6 -0
  217. package/lib/stringUtils/stringUtils.js +12 -0
  218. package/lib/stringUtils/stringUtils.js.map +1 -0
  219. package/lib/stringUtils.d.ts +1 -0
  220. package/lib/utils/utils.js +18 -0
  221. package/lib/utils/utils.js.map +1 -1
  222. package/lib/utils.d.ts +1 -0
  223. package/package.json +3 -3
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import { FileUploaderAttachedFile } from '../../internal/FileUploaderControl/fileUtils';
3
+ import { Nullable } from '../../typings/utility-types';
4
+ import { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';
5
+ import { CommonProps } from '../../internal/CommonWrapper';
6
+ interface _FileUploaderProps extends CommonProps, Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange'> {
7
+ /** Состояние ошибки всего контрола */
8
+ error?: boolean;
9
+ /** Состояние предупреждения всего контрола */
10
+ warning?: boolean;
11
+ /** Свойство ширины. */
12
+ width?: React.CSSProperties['width'];
13
+ /** Срабатывает при невалидном чтении файла (превращение в base64) */
14
+ onReadError?: (files: FileUploaderAttachedFile[]) => void;
15
+ /** Функция, через которую отправляем файлы. Используется для отслеживания статуса загрузки файла. */
16
+ request?: (file: FileUploaderAttachedFile) => Promise<void>;
17
+ /** Срабатывает при удачной попытке отправки через request */
18
+ onRequestSuccess?: (fileId: string) => void;
19
+ /** Срабатывает при неудачной попытке отправки через request */
20
+ onRequestError?: (fileId: string) => void;
21
+ /** Функция валидации каждого файла. Срабатывает после выбора файлов и перед попыткой отправить в request. */
22
+ getFileValidationText?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;
23
+ }
24
+ export interface FileUploaderRef {
25
+ focus: () => void;
26
+ blur: () => void;
27
+ }
28
+ export interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {
29
+ }
30
+ export declare const FileUploader: React.ForwardRefExoticComponent<FileUploaderProps & FileUploaderControlProviderProps & React.RefAttributes<FileUploaderRef>>;
31
+ export {};
@@ -0,0 +1,270 @@
1
+ "use strict";var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.FileUploader = void 0;var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));var _react = _interopRequireWildcard(require("react"));
2
+
3
+ var _fileUtils = require("../../internal/FileUploaderControl/fileUtils");
4
+ var _Emotion = require("../../lib/theming/Emotion");
5
+ var _useMemoObject = require("../../hooks/useMemoObject");
6
+ var _FileUploaderControlContext = require("../../internal/FileUploaderControl/FileUploaderControlContext");
7
+ var _FileUploaderFileValidationResult = require("../../internal/FileUploaderControl/FileUploaderFileValidationResult");
8
+ var _useControlLocale = require("../../internal/FileUploaderControl/hooks/useControlLocale");
9
+ var _useUpload = require("../../internal/FileUploaderControl/hooks/useUpload");
10
+ var _useDrop3 = require("../../hooks/useDrop");
11
+
12
+ var _ThemeContext = require("../../lib/theming/ThemeContext");
13
+ var _px = require("../../internal/icons/16px");
14
+
15
+ var _withFileUploaderControlProvider = require("../../internal/FileUploaderControl/withFileUploaderControlProvider");
16
+ var _keyListener = require("../../lib/events/keyListener");
17
+ var _FileUploaderFile = require("../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile");
18
+ var _FileUploaderFileList = require("../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList");
19
+ var _client = require("../../lib/client");
20
+ var _CommonWrapper = require("../../internal/CommonWrapper");
21
+
22
+ var _FileUploader2 = require("./FileUploader.styles");
23
+
24
+ var stopPropagation = function stopPropagation(e) {return e.stopPropagation();};
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+ var _FileUploader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {var _cx, _cx2, _cx3, _cx4;
55
+ var theme = (0, _react.useContext)(_ThemeContext.ThemeContext);var
56
+
57
+
58
+ disabled =
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+ props.disabled,error = props.error,warning = props.warning,onBlur = props.onBlur,onFocus = props.onFocus,onReadError = props.onReadError,_props$multiple = props.multiple,multiple = _props$multiple === void 0 ? false : _props$multiple,_props$width = props.width,width = _props$width === void 0 ? theme.fileUploaderWidth : _props$width,request = props.request,getFileValidationText = props.getFileValidationText,onRequestSuccess = props.onRequestSuccess,onRequestError = props.onRequestError,inputProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["disabled", "error", "warning", "onBlur", "onFocus", "onReadError", "multiple", "width", "request", "getFileValidationText", "onRequestSuccess", "onRequestError"]);var _useContext =
72
+
73
+ (0, _react.useContext)(_FileUploaderControlContext.FileUploaderControlContext),files = _useContext.files,setFiles = _useContext.setFiles,removeFile = _useContext.removeFile,setFileValidationResult = _useContext.setFileValidationResult;
74
+
75
+ var locale = (0, _useControlLocale.useControlLocale)();
76
+
77
+ var inputRef = (0, _react.useRef)(null);
78
+
79
+ var isAsync = !!request;
80
+ var isSingleMode = !multiple;
81
+
82
+ var upload = (0, _useUpload.useUpload)(request, onRequestSuccess, onRequestError);
83
+
84
+ var tryValidateAndUpload = (0, _react.useCallback)(
85
+ function (files) {
86
+ files.forEach( /*#__PURE__*/function () {var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(file) {var validationMessage;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:_context.t0 =
87
+ getFileValidationText;if (!_context.t0) {_context.next = 5;break;}_context.next = 4;return getFileValidationText(file);case 4:_context.t0 = _context.sent;case 5:validationMessage = _context.t0;
88
+
89
+ if (!validationMessage) {
90
+ isAsync && upload(file);
91
+ } else {
92
+ setFileValidationResult(file.id, _FileUploaderFileValidationResult.FileUploaderFileValidationResult.error(validationMessage));
93
+ }case 7:case "end":return _context.stop();}}}, _callee);}));return function (_x) {return _ref.apply(this, arguments);};}());
94
+
95
+ },
96
+ [upload, error, getFileValidationText, isAsync]);
97
+
98
+
99
+ /** common part **/
100
+ var handleChange = (0, _react.useCallback)( /*#__PURE__*/function () {var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(
101
+ function _callee2(newFiles) {var filesArray, uploadFiles, selectedFiles, readErrorFiles;return _regenerator.default.wrap(function _callee2$(_context2) {while (1) {switch (_context2.prev = _context2.next) {case 0:if (
102
+ newFiles) {_context2.next = 2;break;}return _context2.abrupt("return");case 2:
103
+
104
+ filesArray = Array.from(newFiles);
105
+
106
+ if (isSingleMode) {
107
+ filesArray = [filesArray[0]];
108
+ }_context2.next = 6;return (
109
+
110
+ (0, _fileUtils.readFiles)(filesArray));case 6:uploadFiles = _context2.sent;
111
+
112
+ selectedFiles = uploadFiles.filter(function (v) {return !!v.fileInBase64;});
113
+ readErrorFiles = uploadFiles.filter(function (v) {return !v.fileInBase64;});
114
+
115
+ if (isSingleMode && selectedFiles.length && files.length) {
116
+ removeFile(files[0].id);
117
+ }
118
+
119
+ if (selectedFiles.length) {
120
+ setFiles(selectedFiles);
121
+ tryValidateAndUpload(selectedFiles);
122
+ }
123
+
124
+ readErrorFiles.length && (onReadError == null ? void 0 : onReadError(readErrorFiles));case 12:case "end":return _context2.stop();}}}, _callee2);}));return function (_x2) {return _ref2.apply(this, arguments);};}(),
125
+
126
+ [onReadError, tryValidateAndUpload, setFiles, isSingleMode, files, removeFile]);
127
+
128
+
129
+ var handleDrop = (0, _react.useCallback)(
130
+ function (event) {
131
+ if (disabled) {
132
+ return;
133
+ }var
134
+
135
+ dataTransfer = event.dataTransfer;var
136
+ files = dataTransfer.files;
137
+
138
+ if ((files == null ? void 0 : files.length) > 0) {
139
+ handleChange(files);
140
+ dataTransfer.clearData();
141
+ }
142
+ },
143
+ [handleChange, disabled]);var _useDrop =
144
+
145
+
146
+ (0, _useDrop3.useDrop)({ onDrop: handleDrop }),isDraggable = _useDrop.isDraggable,labelRef = _useDrop.ref;var _useDrop2 =
147
+ (0, _useDrop3.useDrop)(),isWindowDraggable = _useDrop2.isDraggable,windowRef = _useDrop2.ref;
148
+
149
+ if (_client.isBrowser) {
150
+ windowRef.current = window.document;
151
+ }
152
+
153
+ var focus = (0, _react.useCallback)(function () {var _inputRef$current;
154
+ _keyListener.keyListener.isTabPressed = true;
155
+ (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
156
+ }, []);
157
+
158
+ var blur = (0, _react.useCallback)(function () {var _inputRef$current2;
159
+ (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.blur();
160
+ }, []);
161
+
162
+ (0, _react.useImperativeHandle)(ref, function () {return { focus: focus, blur: blur };}, [ref]);var _useState =
163
+
164
+ (0, _react.useState)(false),focusedByTab = _useState[0],setFocusedByTab = _useState[1];
165
+ var handleInputChange = (0, _react.useCallback)(
166
+ function (event) {
167
+ handleChange(event.target.files);
168
+ },
169
+ [handleChange]);
170
+
171
+
172
+ var handleFocus = (0, _react.useCallback)(
173
+ function (e) {
174
+ if (!disabled) {
175
+ // focus event fires before keyDown eventlistener
176
+ // so we should check tabPressed in async way
177
+ requestAnimationFrame(function () {
178
+ if (_keyListener.keyListener.isTabPressed) {
179
+ setFocusedByTab(true);
180
+ }
181
+ });
182
+ onFocus == null ? void 0 : onFocus(e);
183
+ }
184
+ },
185
+ [disabled, onFocus]);
186
+
187
+
188
+ var handleBlur = (0, _react.useCallback)(
189
+ function (e) {
190
+ setFocusedByTab(false);
191
+ if (!disabled) {
192
+ onBlur == null ? void 0 : onBlur(e);
193
+ }
194
+ },
195
+ [disabled, onBlur]);
196
+
197
+
198
+ var uploadButtonClassNames = (0, _Emotion.cx)(_FileUploader2.jsStyles.uploadButton(theme), (_cx = {}, _cx[
199
+ _FileUploader2.jsStyles.uploadButtonFocus(theme)] = focusedByTab, _cx[
200
+ _FileUploader2.jsStyles.dragOver()] = isDraggable && !disabled, _cx[
201
+ _FileUploader2.jsStyles.disabled(theme)] = disabled, _cx[
202
+ _FileUploader2.jsStyles.warning(theme)] = !!warning, _cx[
203
+ _FileUploader2.jsStyles.error(theme)] = !!error, _cx));
204
+
205
+
206
+ var uploadButtonWrapperClassNames = (0, _Emotion.cx)((_cx2 = {}, _cx2[
207
+ _FileUploader2.jsStyles.windowDragOver()] = isWindowDraggable && !disabled, _cx2));
208
+
209
+
210
+ var uploadButtonIconClassNames = (0, _Emotion.cx)(_FileUploader2.jsStyles.icon(theme), (_cx3 = {}, _cx3[
211
+ _FileUploader2.jsStyles.iconDisabled(theme)] = disabled, _cx3));
212
+
213
+
214
+ var hasOneFile = files.length === 1;
215
+ var hasOneFileForSingle = isSingleMode && hasOneFile;
216
+
217
+ var linkClassNames = (0, _Emotion.cx)(_FileUploader2.jsStyles.link(theme), (_cx4 = {}, _cx4[
218
+ _FileUploader2.jsStyles.linkDisabled(theme)] = disabled, _cx4));
219
+
220
+
221
+ return /*#__PURE__*/(
222
+ _react.default.createElement(_CommonWrapper.CommonWrapper, props, /*#__PURE__*/
223
+ _react.default.createElement("div", { className: _FileUploader2.jsStyles.root(theme), style: (0, _useMemoObject.useMemoObject)({ width: width }) },
224
+ !isSingleMode && !!files.length && /*#__PURE__*/_react.default.createElement(_FileUploaderFileList.FileUploaderFileList, null), /*#__PURE__*/
225
+ _react.default.createElement("div", { className: uploadButtonWrapperClassNames }, /*#__PURE__*/
226
+ _react.default.createElement("label", { ref: labelRef, className: uploadButtonClassNames }, /*#__PURE__*/
227
+ _react.default.createElement("div", { className: _FileUploader2.jsStyles.content() }, /*#__PURE__*/
228
+ _react.default.createElement("span", { "data-tid": 'FileUploader__link', className: linkClassNames },
229
+ hasOneFileForSingle ? locale.choosedFile : locale.chooseFile), "\xA0", /*#__PURE__*/
230
+
231
+
232
+ _react.default.createElement("div", { className: _FileUploader2.jsStyles.afterLinkText() },
233
+ hasOneFileForSingle ? /*#__PURE__*/
234
+ _react.default.createElement(_FileUploaderFile.FileUploaderFile, { file: files[0] }) : /*#__PURE__*/
235
+
236
+ _react.default.createElement(_react.default.Fragment, null,
237
+ locale.orDragHere, "\xA0", /*#__PURE__*/
238
+ _react.default.createElement("div", { className: uploadButtonIconClassNames }, /*#__PURE__*/
239
+ _react.default.createElement(_px.UploadIcon, null))))), /*#__PURE__*/
240
+
241
+
242
+
243
+
244
+
245
+ _react.default.createElement("input", (0, _extends2.default)({},
246
+ inputProps, {
247
+ ref: inputRef,
248
+ tabIndex: disabled ? -1 : 0,
249
+ type: "file",
250
+ disabled: disabled,
251
+ multiple: multiple,
252
+ className: _FileUploader2.jsStyles.fileInput(),
253
+ onClick: stopPropagation,
254
+ onChange: handleInputChange,
255
+ onFocus: handleFocus,
256
+ onBlur: handleBlur
257
+ // для того, чтобы срабатывало событие change при выборе одного и того же файла подряд
258
+ , value: '' })))))));
259
+
260
+
261
+
262
+
263
+
264
+
265
+ });
266
+
267
+
268
+
269
+ var FileUploader = (0, _withFileUploaderControlProvider.withFileUploaderControlProvider)(_FileUploader);exports.FileUploader = FileUploader;
270
+ FileUploader.displayName = 'FileUploader';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FileUploader.tsx"],"names":["stopPropagation","e","_FileUploader","React","forwardRef","props","ref","theme","ThemeContext","disabled","error","warning","onBlur","onFocus","onReadError","multiple","width","fileUploaderWidth","request","getFileValidationText","onRequestSuccess","onRequestError","inputProps","FileUploaderControlContext","files","setFiles","removeFile","setFileValidationResult","locale","inputRef","isAsync","isSingleMode","upload","tryValidateAndUpload","forEach","file","validationMessage","id","FileUploaderFileValidationResult","handleChange","newFiles","filesArray","Array","from","uploadFiles","selectedFiles","filter","v","fileInBase64","readErrorFiles","length","handleDrop","event","dataTransfer","clearData","onDrop","isDraggable","labelRef","isWindowDraggable","windowRef","isBrowser","current","window","document","focus","keyListener","isTabPressed","blur","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","uploadButtonClassNames","jsStyles","uploadButton","uploadButtonFocus","dragOver","uploadButtonWrapperClassNames","windowDragOver","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","linkClassNames","link","linkDisabled","root","content","choosedFile","chooseFile","afterLinkText","orDragHere","fileInput","FileUploader","displayName"],"mappings":"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","sourcesContent":["import React, { useCallback, useContext, useImperativeHandle, useRef, useState } from 'react';\n\nimport { FileUploaderAttachedFile, readFiles } from '../../internal/FileUploaderControl/fileUtils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { FileUploaderControlContext } from '../../internal/FileUploaderControl/FileUploaderControlContext';\nimport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\nimport { useControlLocale } from '../../internal/FileUploaderControl/hooks/useControlLocale';\nimport { useUpload } from '../../internal/FileUploaderControl/hooks/useUpload';\nimport { useDrop } from '../../hooks/useDrop';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { UploadIcon } from '../../internal/icons/16px';\nimport { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';\nimport { withFileUploaderControlProvider } from '../../internal/FileUploaderControl/withFileUploaderControlProvider';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { FileUploaderFile } from '../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile';\nimport { FileUploaderFileList } from '../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList';\nimport { isBrowser } from '../../lib/client';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\n\nimport { jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ninterface _FileUploaderProps extends CommonProps, Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange'> {\n /** Состояние ошибки всего контрола */\n error?: boolean;\n /** Состояние предупреждения всего контрола */\n warning?: boolean;\n\n /** Свойство ширины. */\n width?: React.CSSProperties['width'];\n\n /** Срабатывает при невалидном чтении файла (превращение в base64) */\n onReadError?: (files: FileUploaderAttachedFile[]) => void;\n\n /** Функция, через которую отправляем файлы. Используется для отслеживания статуса загрузки файла. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n /** Срабатывает при удачной попытке отправки через request */\n onRequestSuccess?: (fileId: string) => void;\n /** Срабатывает при неудачной попытке отправки через request */\n onRequestError?: (fileId: string) => void;\n\n /** Функция валидации каждого файла. Срабатывает после выбора файлов и перед попыткой отправить в request. */\n getFileValidationText?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;\n}\n\nexport interface FileUploaderRef {\n focus: () => void;\n blur: () => void;\n}\n\nconst _FileUploader = React.forwardRef<FileUploaderRef, _FileUploaderProps>((props: _FileUploaderProps, ref) => {\n const theme = useContext(ThemeContext);\n\n const {\n disabled,\n error,\n warning,\n onBlur,\n onFocus,\n onReadError,\n multiple = false,\n width = theme.fileUploaderWidth,\n request,\n getFileValidationText,\n onRequestSuccess,\n onRequestError,\n ...inputProps\n } = props;\n\n const { files, setFiles, removeFile, setFileValidationResult } = useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = getFileValidationText && (await getFileValidationText(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else {\n setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));\n }\n });\n },\n [upload, error, getFileValidationText, isAsync],\n );\n\n /** common part **/\n const handleChange = useCallback(\n async (newFiles: FileList | null) => {\n if (!newFiles) return;\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const uploadFiles = await readFiles(filesArray);\n\n const selectedFiles = uploadFiles.filter((v) => !!v.fileInBase64);\n const readErrorFiles = uploadFiles.filter((v) => !v.fileInBase64);\n\n if (isSingleMode && selectedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (selectedFiles.length) {\n setFiles(selectedFiles);\n tryValidateAndUpload(selectedFiles);\n }\n\n readErrorFiles.length && onReadError?.(readErrorFiles);\n },\n [onReadError, tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n const { files } = dataTransfer;\n\n if (files?.length > 0) {\n handleChange(files);\n dataTransfer.clearData();\n }\n },\n [handleChange, disabled],\n );\n\n const { isDraggable, ref: labelRef } = useDrop<HTMLLabelElement>({ onDrop: handleDrop });\n const { isDraggable: isWindowDraggable, ref: windowRef } = useDrop<Document>();\n\n if (isBrowser) {\n windowRef.current = window.document;\n }\n\n const focus = useCallback(() => {\n keyListener.isTabPressed = true;\n inputRef.current?.focus();\n }, []);\n\n const blur = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n useImperativeHandle(ref, () => ({ focus, blur }), [ref]);\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n handleChange(event.target.files);\n },\n [handleChange],\n );\n\n const handleFocus = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\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 onFocus?.(e);\n }\n },\n [disabled, onFocus],\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n },\n [disabled, onBlur],\n );\n\n const uploadButtonClassNames = cx(jsStyles.uploadButton(theme), {\n [jsStyles.uploadButtonFocus(theme)]: focusedByTab,\n [jsStyles.dragOver()]: isDraggable && !disabled,\n [jsStyles.disabled(theme)]: disabled,\n [jsStyles.warning(theme)]: !!warning,\n [jsStyles.error(theme)]: !!error,\n });\n\n const uploadButtonWrapperClassNames = cx({\n [jsStyles.windowDragOver()]: isWindowDraggable && !disabled,\n });\n\n const uploadButtonIconClassNames = cx(jsStyles.icon(theme), {\n [jsStyles.iconDisabled(theme)]: disabled,\n });\n\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile;\n\n const linkClassNames = cx(jsStyles.link(theme), {\n [jsStyles.linkDisabled(theme)]: disabled,\n });\n\n return (\n <CommonWrapper {...props}>\n <div className={jsStyles.root(theme)} style={useMemoObject({ width })}>\n {!isSingleMode && !!files.length && <FileUploaderFileList />}\n <div className={uploadButtonWrapperClassNames}>\n <label ref={labelRef} className={uploadButtonClassNames}>\n <div className={jsStyles.content()}>\n <span data-tid={'FileUploader__link'} className={linkClassNames}>\n {hasOneFileForSingle ? locale.choosedFile : locale.chooseFile}\n </span>\n &nbsp;\n <div className={jsStyles.afterLinkText()}>\n {hasOneFileForSingle ? (\n <FileUploaderFile file={files[0]} />\n ) : (\n <>\n {locale.orDragHere}&nbsp;\n <div className={uploadButtonIconClassNames}>\n <UploadIcon />\n </div>\n </>\n )}\n </div>\n </div>\n <input\n {...inputProps}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.fileInput()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n // для того, чтобы срабатывало событие change при выборе одного и того же файла подряд\n value={''}\n />\n </label>\n </div>\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(_FileUploader);\nFileUploader.displayName = 'FileUploader';\n"]}
@@ -0,0 +1,67 @@
1
+ Контрол загрузки файлов.
2
+ Можно использовать для синхронной отправки данных, например, в форме.
3
+ Или же можно использовать в асинхронном режиме.
4
+
5
+ Синхронный контрол
6
+ ```jsx harmony
7
+ import { FileUploader } from '@skbkontur/react-ui';
8
+
9
+ <FileUploader />
10
+ ```
11
+
12
+ Асинхронный контрол
13
+ ```jsx harmony
14
+ import { FileUploader } from '@skbkontur/react-ui';
15
+
16
+ const request = () => Promise.resolve();
17
+
18
+ <FileUploader request={request} />
19
+ ```
20
+
21
+ Multiple контрол
22
+ ```jsx harmony
23
+ import { FileUploader } from '@skbkontur/react-ui';
24
+
25
+ const request = () => Promise.reject();
26
+
27
+ <FileUploader request={request} multiple />
28
+ ```
29
+
30
+ Валидация файла в списке
31
+ ```jsx harmony
32
+ import { FileUploader } from '@skbkontur/react-ui';
33
+
34
+ <FileUploader multiple getFileValidationText={({originalFile}) => `У файла ${originalFile.name} неверный формат`} />
35
+ ```
36
+
37
+ Валидация контрола
38
+ ```jsx harmony
39
+ import { FileUploader } from '@skbkontur/react-ui';
40
+
41
+ <FileUploader multiple error />
42
+ ```
43
+
44
+ #### Локали по умолчанию
45
+
46
+ ```typescript static
47
+ interface FileUploaderLocale {
48
+ chooseFile: string;
49
+ choosedFile: string;
50
+ orDragHere: string;
51
+ requestErrorText: string;
52
+ }
53
+
54
+ const ru_RU = {
55
+ chooseFile: 'Выберите файл',
56
+ choosedFile: 'Выбран файл',
57
+ orDragHere: 'или перетащите сюда',
58
+ requestErrorText: 'Файл не удалось загрузить на сервер, повторите попытку позже',
59
+ };
60
+
61
+ const en_GB = {
62
+ chooseFile: 'Select a file',
63
+ choosedFile: 'File selected',
64
+ orDragHere: 'or drag here',
65
+ requestErrorText: 'The file could not be uploaded to the server, please try again later',
66
+ };
67
+ ```
@@ -0,0 +1,19 @@
1
+ import { Theme } from '../../lib/theming/Theme';
2
+ export declare const jsStyles: {
3
+ pulse(): string;
4
+ root(t: Theme): string;
5
+ uploadButton(t: Theme): string;
6
+ uploadButtonFocus(t: Theme): string;
7
+ dragOver(): string;
8
+ windowDragOver(): string;
9
+ content(): string;
10
+ fileInput(): string;
11
+ afterLinkText(): string;
12
+ warning(t: Theme): string;
13
+ error(t: Theme): string;
14
+ disabled(t: Theme): string;
15
+ icon(t: Theme): string;
16
+ iconDisabled(t: Theme): string;
17
+ link(t: Theme): string;
18
+ linkDisabled(t: Theme): string;
19
+ };
@@ -0,0 +1,159 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.jsStyles = void 0;var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _Emotion = require("../../lib/theming/Emotion");var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16;
2
+
3
+
4
+ var styles = {
5
+ pulse: function pulse() {
6
+ return (0, _Emotion.keyframes)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n 0% {\n box-shadow:\n 0px 0px 0px 0px #2DA4F9,\n 0px 0px 0px 1px rgba(45,164,249,0.7);\n }\n 95% {\n box-shadow:\n 0px 0px 0px 0px #2DA4F9,\n 0px 0px 0px 10px rgba(45,164,249,0);\n }\n 100% {\n box-shadow:\n 0px 0px 0px 0px #2DA4F9,\n 0px 0px 0px 1px rgba(45,164,249,0);\n }\n "])));
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+ },
24
+
25
+ root: function root(t) {
26
+ return (0, _Emotion.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["\n display: inline-block;\n min-width: 285px;\n position: relative;\n background-color: ", ";\n line-height: ", ";\n font-size: ", ";\n color: ", ";\n "])),
27
+
28
+
29
+
30
+ t.fileUploaderBg,
31
+ t.fileUploaderLineHeight,
32
+ t.fileUploaderFontSize,
33
+ t.fileUploaderTextColorDefault);
34
+
35
+ },
36
+
37
+ uploadButton: function uploadButton(t) {
38
+ return (0, _Emotion.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["\n width: 100%;\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n border: ", " ", " ", ";\n box-sizing: border-box;\n border-radius: ", ";\n outline: none;\n cursor: pointer;\n padding: ", " ", ";\n transition: box-shadow 0.3s ease;\n "])),
39
+
40
+
41
+
42
+
43
+ t.fileUploaderBorderWidth, t.fileUploaderBorderStyle, t.fileUploaderBorderColor,
44
+
45
+ t.fileUploaderBorderRadius,
46
+
47
+
48
+ t.fileUploaderPaddingY, t.fileUploaderPaddingX);
49
+
50
+
51
+ },
52
+
53
+ uploadButtonFocus: function uploadButtonFocus(t) {
54
+ return (0, _Emotion.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["\n border: ", " solid ", ";\n box-shadow: 0px 0px 0px 1px ", ";\n "])),
55
+ t.fileUploaderBorderWidth, t.fileUploaderBorderColorFocus,
56
+ t.fileUploaderBorderColorFocus);
57
+
58
+ },
59
+
60
+ dragOver: function dragOver() {
61
+ return (0, _Emotion.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["\n border: 1px solid #2da4f9;\n border-radius: 2px;\n box-shadow: 0px 0px 0px 3px #2da4f9, 0px 0px 0px 8px rgba(45, 164, 249, 0.35);\n "])));
62
+
63
+
64
+
65
+
66
+ },
67
+
68
+ windowDragOver: function windowDragOver() {
69
+ return (0, _Emotion.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteralLoose2.default)(["\n border-radius: 2px;\n animation: ", " 1.5s infinite;\n "])),
70
+
71
+ styles.pulse());
72
+
73
+ },
74
+
75
+ content: function content() {
76
+ return (0, _Emotion.css)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteralLoose2.default)(["\n display: flex;\n width: 100%;\n align-items: center;\n height: 100%;\n "])));
77
+
78
+
79
+
80
+
81
+
82
+ },
83
+
84
+ fileInput: function fileInput() {
85
+ return (0, _Emotion.css)(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteralLoose2.default)(["\n width: 0;\n height: 0;\n "])));
86
+
87
+
88
+
89
+ },
90
+
91
+ afterLinkText: function afterLinkText() {
92
+ return (0, _Emotion.css)(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteralLoose2.default)(["\n display: flex;\n justify-content: space-between;\n flex: 1 1 auto;\n "])));
93
+
94
+
95
+
96
+
97
+ },
98
+
99
+ warning: function warning(t) {
100
+ return (0, _Emotion.css)(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteralLoose2.default)(["\n border: ", " solid ", ";\n box-shadow: 0px 0px 0px 1px ", ";\n "])),
101
+ t.fileUploaderBorderWidth, t.fileUploaderBorderColorWarning,
102
+ t.fileUploaderBorderColorWarning);
103
+
104
+ },
105
+
106
+ error: function error(t) {
107
+ return (0, _Emotion.css)(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteralLoose2.default)(["\n border: ", " solid ", ";\n box-shadow: 0px 0px 0px 1px ", ";\n "])),
108
+ t.fileUploaderBorderWidth, t.fileUploaderBorderColorError,
109
+ t.fileUploaderBorderColorError);
110
+
111
+ },
112
+
113
+ disabled: function disabled(t) {
114
+ return (0, _Emotion.css)(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteralLoose2.default)(["\n cursor: default;\n background: ", ";\n border: ", " solid ", ";\n color: ", ";\n box-shadow: none;\n "])),
115
+
116
+ t.fileUploaderDisabledBg,
117
+ t.fileUploaderBorderWidth, t.fileUploaderDisabledBorderColor,
118
+ t.fileUploaderDisabledTextColor);
119
+
120
+
121
+ },
122
+
123
+ icon: function icon(t) {
124
+ return (0, _Emotion.css)(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteralLoose2.default)(["\n display: inline-block;\n font-size: ", ";\n color: ", ";\n "])),
125
+
126
+ t.fileUploaderIconSize,
127
+ t.fileUploaderIconColor);
128
+
129
+ },
130
+
131
+ iconDisabled: function iconDisabled(t) {
132
+ return (0, _Emotion.css)(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteralLoose2.default)(["\n color: ", ";\n "])),
133
+ t.fileUploaderDisabledIconColor);
134
+
135
+ },
136
+
137
+ link: function link(t) {
138
+ return (0, _Emotion.css)(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteralLoose2.default)(["\n outline: none;\n text-decoration: none;\n\n &:hover {\n text-decoration: ", ";\n }\n color: ", ";\n "])),
139
+
140
+
141
+
142
+
143
+ t.linkHoverTextDecoration,
144
+
145
+ t.fileUploaderLinkColor);
146
+
147
+ },
148
+
149
+ linkDisabled: function linkDisabled(t) {
150
+ return (0, _Emotion.css)(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteralLoose2.default)(["\n color: ", ";\n &:hover {\n text-decoration: none;\n }\n "])),
151
+ t.fileUploaderDisabledLinkColor);
152
+
153
+
154
+
155
+
156
+ } };
157
+
158
+
159
+ var jsStyles = (0, _Emotion.memoizeStyle)(styles);exports.jsStyles = jsStyles;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FileUploader.styles.ts"],"names":["styles","pulse","keyframes","root","t","css","fileUploaderBg","fileUploaderLineHeight","fileUploaderFontSize","fileUploaderTextColorDefault","uploadButton","fileUploaderBorderWidth","fileUploaderBorderStyle","fileUploaderBorderColor","fileUploaderBorderRadius","fileUploaderPaddingY","fileUploaderPaddingX","uploadButtonFocus","fileUploaderBorderColorFocus","dragOver","windowDragOver","content","fileInput","afterLinkText","warning","fileUploaderBorderColorWarning","error","fileUploaderBorderColorError","disabled","fileUploaderDisabledBg","fileUploaderDisabledBorderColor","fileUploaderDisabledTextColor","icon","fileUploaderIconSize","fileUploaderIconColor","iconDisabled","fileUploaderDisabledIconColor","link","linkHoverTextDecoration","fileUploaderLinkColor","linkDisabled","fileUploaderDisabledLinkColor","jsStyles"],"mappings":"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","sourcesContent":["import { css, keyframes, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nconst styles = {\n pulse() {\n return keyframes`\n 0% {\n box-shadow:\n 0px 0px 0px 0px #2DA4F9,\n 0px 0px 0px 1px rgba(45,164,249,0.7);\n }\n 95% {\n box-shadow:\n 0px 0px 0px 0px #2DA4F9,\n 0px 0px 0px 10px rgba(45,164,249,0);\n }\n 100% {\n box-shadow:\n 0px 0px 0px 0px #2DA4F9,\n 0px 0px 0px 1px rgba(45,164,249,0);\n }\n `;\n },\n\n root(t: Theme) {\n return css`\n display: inline-block;\n min-width: 285px;\n position: relative;\n background-color: ${t.fileUploaderBg};\n line-height: ${t.fileUploaderLineHeight};\n font-size: ${t.fileUploaderFontSize};\n color: ${t.fileUploaderTextColorDefault};\n `;\n },\n\n uploadButton(t: Theme) {\n return css`\n width: 100%;\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n border: ${t.fileUploaderBorderWidth} ${t.fileUploaderBorderStyle} ${t.fileUploaderBorderColor};\n box-sizing: border-box;\n border-radius: ${t.fileUploaderBorderRadius};\n outline: none;\n cursor: pointer;\n padding: ${t.fileUploaderPaddingY} ${t.fileUploaderPaddingX};\n transition: box-shadow 0.3s ease;\n `;\n },\n\n uploadButtonFocus(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderBorderColorFocus};\n box-shadow: 0px 0px 0px 1px ${t.fileUploaderBorderColorFocus};\n `;\n },\n\n dragOver() {\n return css`\n border: 1px solid #2da4f9;\n border-radius: 2px;\n box-shadow: 0px 0px 0px 3px #2da4f9, 0px 0px 0px 8px rgba(45, 164, 249, 0.35);\n `;\n },\n\n windowDragOver() {\n return css`\n border-radius: 2px;\n animation: ${styles.pulse()} 1.5s infinite;\n `;\n },\n\n content() {\n return css`\n display: flex;\n width: 100%;\n align-items: center;\n height: 100%;\n `;\n },\n\n fileInput() {\n return css`\n width: 0;\n height: 0;\n `;\n },\n\n afterLinkText() {\n return css`\n display: flex;\n justify-content: space-between;\n flex: 1 1 auto;\n `;\n },\n\n warning(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderBorderColorWarning};\n box-shadow: 0px 0px 0px 1px ${t.fileUploaderBorderColorWarning};\n `;\n },\n\n error(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderBorderColorError};\n box-shadow: 0px 0px 0px 1px ${t.fileUploaderBorderColorError};\n `;\n },\n\n disabled(t: Theme) {\n return css`\n cursor: default;\n background: ${t.fileUploaderDisabledBg};\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderDisabledBorderColor};\n color: ${t.fileUploaderDisabledTextColor};\n box-shadow: none;\n `;\n },\n\n icon(t: Theme) {\n return css`\n display: inline-block;\n font-size: ${t.fileUploaderIconSize};\n color: ${t.fileUploaderIconColor};\n `;\n },\n\n iconDisabled(t: Theme) {\n return css`\n color: ${t.fileUploaderDisabledIconColor};\n `;\n },\n\n link(t: Theme) {\n return css`\n outline: none;\n text-decoration: none;\n\n &:hover {\n text-decoration: ${t.linkHoverTextDecoration};\n }\n color: ${t.fileUploaderLinkColor};\n `;\n },\n\n linkDisabled(t: Theme) {\n return css`\n color: ${t.fileUploaderDisabledLinkColor};\n &:hover {\n text-decoration: none;\n }\n `;\n },\n};\n\nexport const jsStyles = memoizeStyle(styles);\n"]}
@@ -0,0 +1,4 @@
1
+ export { FileUploaderFileStatus } from '../../internal/FileUploaderControl/fileUtils';
2
+ export type { FileUploaderAttachedFile, FileUploaderFileInBase64 } from '../../internal/FileUploaderControl/fileUtils';
3
+ export { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';
4
+ export * from './FileUploader';
@@ -0,0 +1,4 @@
1
+ "use strict";exports.__esModule = true;var _exportNames = { FileUploaderFileStatus: true, FileUploaderFileValidationResult: true };exports.FileUploaderFileValidationResult = exports.FileUploaderFileStatus = void 0;var _fileUtils = require("../../internal/FileUploaderControl/fileUtils");exports.FileUploaderFileStatus = _fileUtils.FileUploaderFileStatus;
2
+
3
+ var _FileUploaderFileValidationResult = require("../../internal/FileUploaderControl/FileUploaderFileValidationResult");exports.FileUploaderFileValidationResult = _FileUploaderFileValidationResult.FileUploaderFileValidationResult;
4
+ var _FileUploader = require("./FileUploader");Object.keys(_FileUploader).forEach(function (key) {if (key === "default" || key === "__esModule") return;if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;if (key in exports && exports[key] === _FileUploader[key]) return;exports[key] = _FileUploader[key];});
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.tsx"],"names":[],"mappings":"sNAAA,yE;;AAEA,uH;AACA","sourcesContent":["export { FileUploaderFileStatus } from '../../internal/FileUploaderControl/fileUtils';\nexport type { FileUploaderAttachedFile, FileUploaderFileInBase64 } from '../../internal/FileUploaderControl/fileUtils';\nexport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\nexport * from './FileUploader';\n"]}
@@ -0,0 +1,4 @@
1
+ import { LocaleHelper } from '../../../lib/locale/LocaleHelper';
2
+ import { FileUploaderLocale } from './types';
3
+ export * from './types';
4
+ export declare const FileUploaderLocaleHelper: LocaleHelper<FileUploaderLocale>;
@@ -0,0 +1,11 @@
1
+ "use strict";exports.__esModule = true;var _exportNames = { FileUploaderLocaleHelper: true };exports.FileUploaderLocaleHelper = void 0;var _LocaleHelper = require("../../../lib/locale/LocaleHelper");
2
+
3
+ var _en = require("./locales/en");
4
+ var _ru = require("./locales/ru");
5
+
6
+
7
+ var _types = require("./types");Object.keys(_types).forEach(function (key) {if (key === "default" || key === "__esModule") return;if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;if (key in exports && exports[key] === _types[key]) return;exports[key] = _types[key];});
8
+
9
+ var FileUploaderLocaleHelper = new _LocaleHelper.LocaleHelper({
10
+ ru_RU: _ru.componentsLocales,
11
+ en_GB: _en.componentsLocales });exports.FileUploaderLocaleHelper = FileUploaderLocaleHelper;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["FileUploaderLocaleHelper","LocaleHelper","ru_RU","en_GB"],"mappings":"uIAAA;;AAEA;AACA;;;AAGA;;AAEO,IAAMA,wBAAwB,GAAG,IAAIC,0BAAJ,CAAqC;AAC3EC,EAAAA,KAAK,EAALA,qBAD2E;AAE3EC,EAAAA,KAAK,EAALA,qBAF2E,EAArC,CAAjC,C","sourcesContent":["import { LocaleHelper } from '../../../lib/locale/LocaleHelper';\n\nimport { componentsLocales as en_GB } from './locales/en';\nimport { componentsLocales as ru_RU } from './locales/ru';\nimport { FileUploaderLocale } from './types';\n\nexport * from './types';\n\nexport const FileUploaderLocaleHelper = new LocaleHelper<FileUploaderLocale>({\n ru_RU,\n en_GB,\n});\n"]}
@@ -0,0 +1,2 @@
1
+ import { FileUploaderLocale } from '../types';
2
+ export declare const componentsLocales: FileUploaderLocale;