@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 @@
1
+ {"version":3,"sources":["stringUtils.ts"],"names":["truncate","truncateString","maxLength","separator","length","separatorLength","charsCountToShow","frontCharsCount","Math","ceil","backCharsCount","floor","substr"],"mappings":"iEAAO,IAAMA,QAAQ,GAAG,SAAXA,QAAW,CAACC,cAAD,EAAyBC,SAAzB,EAA4CC,SAA5C,EAAkE,KAAtBA,SAAsB,cAAtBA,SAAsB,GAAV,KAAU;AACxF,MAAIF,cAAc,CAACG,MAAf,IAAyBF,SAA7B,EAAwC,OAAOD,cAAP;;AAExC,MAAMI,eAAe,GAAGF,SAAS,CAACC,MAAlC;AACA,MAAME,gBAAgB,GAAGJ,SAAS,GAAGG,eAArC;;AAEA,MAAME,eAAe,GAAGC,IAAI,CAACC,IAAL,CAAUH,gBAAgB,GAAG,CAA7B,CAAxB;AACA,MAAMI,cAAc,GAAGF,IAAI,CAACG,KAAL,CAAWL,gBAAgB,GAAG,CAA9B,CAAvB;;AAEA,cAAUL,cAAc,CAACW,MAAf,CAAsB,CAAtB,EAAyBL,eAAzB,CAAV,GAAsDJ,SAAtD,GAAkEF,cAAc,CAACW,MAAf;AAChEX,EAAAA,cAAc,CAACG,MAAf,GAAwBM,cADwC,CAAlE;;AAGD,CAZM,C","sourcesContent":["export const truncate = (truncateString: string, maxLength: number, separator = '...') => {\n if (truncateString.length <= maxLength) return truncateString;\n\n const separatorLength = separator.length;\n const charsCountToShow = maxLength - separatorLength;\n\n const frontCharsCount = Math.ceil(charsCountToShow / 2);\n const backCharsCount = Math.floor(charsCountToShow / 2);\n\n return `${truncateString.substr(0, frontCharsCount)}${separator}${truncateString.substr(\n truncateString.length - backCharsCount,\n )}`;\n};\n"]}
@@ -19,6 +19,7 @@ export declare const isExternalLink: (link: string) => boolean;
19
19
  * Check if the given ReactNode is an element of the specified ReactUI component
20
20
  */
21
21
  export declare const isReactUINode: (componentName: string, node: React.ReactNode) => boolean;
22
+ export declare const formatBytes: (bytes: number, decimals?: number) => string | null;
22
23
  /**
23
24
  * Проверяет, не является ли переданный аргумент null или undefined и исключает типы null и undefined из типа аргумента
24
25
  *
package/cjs/lib/utils.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.taskWithDelay = taskWithDelay;exports.isFunction = isFunction;exports.isFunctionalComponent = isFunctionalComponent;exports.escapeRegExpSpecChars = escapeRegExpSpecChars;exports.isNonNullable = exports.isReactUINode = exports.isExternalLink = exports.getRandomID = exports.CancelationError = exports.emptyHandler = exports.delay = void 0;var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.taskWithDelay = taskWithDelay;exports.isFunction = isFunction;exports.isFunctionalComponent = isFunctionalComponent;exports.escapeRegExpSpecChars = escapeRegExpSpecChars;exports.isNonNullable = exports.formatBytes = exports.isReactUINode = exports.isExternalLink = exports.getRandomID = exports.CancelationError = exports.emptyHandler = exports.delay = void 0;var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
2
2
  var _react = _interopRequireDefault(require("react"));
3
3
 
4
4
  var _client = require("./client");
@@ -68,6 +68,24 @@ var isReactUINode = function isReactUINode(componentName, node) {
68
68
  }
69
69
 
70
70
  return false;
71
+ };exports.isReactUINode = isReactUINode;
72
+
73
+ var KB = 1024;
74
+ var UNITS = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
75
+
76
+ var formatBytes = function formatBytes(bytes, decimals) {if (decimals === void 0) {decimals = 2;}
77
+ if (bytes === 0) return '0 Bytes';
78
+
79
+ if (!bytes) {
80
+ return null;
81
+ }
82
+
83
+ decimals = decimals < 0 ? 0 : decimals;
84
+
85
+ var i = Math.floor(Math.log2(bytes) / Math.log2(KB));
86
+ var formattedBytes = parseFloat((bytes / Math.pow(KB, i)).toFixed(decimals));
87
+
88
+ return formattedBytes + " " + UNITS[i];
71
89
  };
72
90
 
73
91
  /**
@@ -75,7 +93,7 @@ var isReactUINode = function isReactUINode(componentName, node) {
75
93
  *
76
94
  * @param value Значение, которое нужно проверить и исключить из него типы
77
95
  * @returns Возвращает true, если переданный аргумент не является null или undefined иначе false
78
- */exports.isReactUINode = isReactUINode;
96
+ */exports.formatBytes = formatBytes;
79
97
  var isNonNullable = function isNonNullable(value) {
80
98
  return value !== null && value !== undefined;
81
99
  };exports.isNonNullable = isNonNullable;
@@ -1 +1 @@
1
- {"version":3,"sources":["utils.ts"],"names":["delay","ms","Promise","resolve","setTimeout","emptyHandler","CancelationError","code","Error","taskWithDelay","task","cancelationToken","reject","then","catch","isFunction","x","isFunctionalComponent","Component","prototype","isReactComponent","escapeRegExpSpecChars","s","replace","getRandomID","Math","random","toString","slice","isExternalLink","link","RegExp","isBrowser","window","location","host","test","isReactUINode","componentName","node","React","isValidElement","Object","hasOwnProperty","call","type","__KONTUR_REACT_UI__","isNonNullable","value","undefined"],"mappings":";AACA;;AAEA;;;;;;;;;;;;;AAaO,IAAMA,KAAK,GAAG,SAARA,KAAQ,CAACC,EAAD,UAAgB,IAAIC,OAAJ,CAAY,UAACC,OAAD,UAAaC,UAAU,CAACD,OAAD,EAAUF,EAAV,CAAvB,EAAZ,CAAhB,EAAd,C;;AAEA,IAAMI,YAAY,GAAG,SAAfA,YAAe,GAAM;AAChC;AACD,CAFM,C;;AAIMC,gB;AACJC,IAAAA,I,GAAO,kB,sFADsBC,K;;;AAI/B,SAASC,aAAT,CAAuBC,IAAvB,EAAyCT,EAAzC,EAAqD;AAC1D,MAAIU,gBAA4B,GAAG,oCAAM,IAAN,EAAnC;;AAEA,MAAIT,OAAJ,CAAY,UAACC,OAAD,EAAUS,MAAV,EAAqB;AAC/BD,IAAAA,gBAAgB,GAAGC,MAAnB;AACAR,IAAAA,UAAU,CAACD,OAAD,EAAUF,EAAV,CAAV;AACD,GAHD;AAIGY,EAAAA,IAJH,CAIQH,IAJR;AAKGI,EAAAA,KALH,CAKS,oBAAM,IAAN,EALT;;AAOA,SAAOH,gBAAP;AACD;;AAEM,SAASI,UAAT,CAAuBC,CAAvB,EAAuD;AAC5D,SAAO,OAAOA,CAAP,KAAa,UAApB;AACD;;AAEM,SAASC,qBAAT,CAA+BC,SAA/B,EAA8D;AACnE,SAAO,OAAOA,SAAP,KAAqB,UAArB,IAAmC,EAAEA,SAAS,CAACC,SAAV,IAAuBD,SAAS,CAACC,SAAV,CAAoBC,gBAA7C,CAA1C;AACD;;AAEM,SAASC,qBAAT,CAA+BC,CAA/B,EAAkD;AACvD,SAAOA,CAAC,CAACC,OAAF,CAAU,qBAAV,EAAiC,MAAjC,CAAP;AACD;;AAEM,IAAMC,WAAW,GAAG,SAAdA,WAAc,WAAcC,IAAI,CAACC,MAAL,GAAcC,QAAd,CAAuB,EAAvB,EAA2BC,KAA3B,CAAiC,CAAjC,CAAd,EAApB,C;;AAEA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,IAAD,EAA2B;AACvD,SAAO,IAAIC,MAAJ,oBAA2BC,4BAAkBC,MAAM,CAACC,QAAP,CAAgBC,IAAlC,WAA3B,YAAiF,IAAjF,EAAuFC,IAAvF,CAA4FN,IAA5F,CAAP;AACD,CAFM;;AAIP;AACA;AACA,G;AACO,IAAMO,aAAa,GAAG,SAAhBA,aAAgB,CAACC,aAAD,EAAwBC,IAAxB,EAA2D;AACtF,oBAAIC,eAAMC,cAAN,CAAqBF,IAArB,CAAJ,EAAgC;AAC9B;AACEG,MAAAA,MAAM,CAACvB,SAAP,CAAiBwB,cAAjB,CAAgCC,IAAhC,CAAqCL,IAAI,CAACM,IAA1C,EAAgD,qBAAhD;AACA;AACAN,MAAAA,IAAI,CAACM,IAAL,CAAUC,mBAAV,KAAkCR,aAHpC;;AAKD;;AAED,SAAO,KAAP;AACD,CAVM;;AAYP;AACA;AACA;AACA;AACA;AACA,G;AACO,IAAMS,aAAa,GAAG,SAAhBA,aAAgB,CAAIC,KAAJ,EAA0C;AACrE,SAAOA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKC,SAAnC;AACD,CAFM,C","sourcesContent":["import { ReactComponentLike } from 'prop-types';\nimport React from 'react';\n\nimport { isBrowser } from './client';\n\n// NOTE: Copy-paste from @types/react\nexport type Defaultize<P, D> = P extends any\n ? string extends keyof P\n ? P\n : Pick<P, Exclude<keyof P, keyof D>> &\n Partial<Pick<P, Extract<keyof P, keyof D>>> &\n Partial<Pick<D, Exclude<keyof D, keyof P>>>\n : never;\n\nexport type DefaultizeProps<C, P> = C extends { defaultProps: infer D } ? Defaultize<P, D> : P;\n\nexport const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nexport const emptyHandler = () => {\n /* noop */\n};\n\nexport class CancelationError extends Error {\n public code = 'CancelationError';\n}\n\nexport function taskWithDelay(task: () => void, ms: number) {\n let cancelationToken: () => void = () => null;\n\n new Promise((resolve, reject) => {\n cancelationToken = reject;\n setTimeout(resolve, ms);\n })\n .then(task)\n .catch(() => null);\n\n return cancelationToken;\n}\n\nexport function isFunction<T>(x: T | Function): x is Function {\n return typeof x === 'function';\n}\n\nexport function isFunctionalComponent(Component: ReactComponentLike) {\n return typeof Component === 'function' && !(Component.prototype && Component.prototype.isReactComponent);\n}\n\nexport function escapeRegExpSpecChars(s: string): string {\n return s.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nexport const getRandomID = (): string => Math.random().toString(16).slice(2);\n\nexport const isExternalLink = (link: string): boolean => {\n return new RegExp(`^(https?:)?//${isBrowser ? `(?!${window.location.host})` : ``}\\\\S+`, 'gi').test(link);\n};\n\n/**\n * Check if the given ReactNode is an element of the specified ReactUI component\n */\nexport const isReactUINode = (componentName: string, node: React.ReactNode): boolean => {\n if (React.isValidElement(node)) {\n return (\n Object.prototype.hasOwnProperty.call(node.type, '__KONTUR_REACT_UI__') &&\n // @ts-ignore\n node.type.__KONTUR_REACT_UI__ === componentName\n );\n }\n\n return false;\n};\n\n/**\n * Проверяет, не является ли переданный аргумент null или undefined и исключает типы null и undefined из типа аргумента\n *\n * @param value Значение, которое нужно проверить и исключить из него типы\n * @returns Возвращает true, если переданный аргумент не является null или undefined иначе false\n */\nexport const isNonNullable = <T>(value: T): value is NonNullable<T> => {\n return value !== null && value !== undefined;\n};\n"]}
1
+ {"version":3,"sources":["utils.ts"],"names":["delay","ms","Promise","resolve","setTimeout","emptyHandler","CancelationError","code","Error","taskWithDelay","task","cancelationToken","reject","then","catch","isFunction","x","isFunctionalComponent","Component","prototype","isReactComponent","escapeRegExpSpecChars","s","replace","getRandomID","Math","random","toString","slice","isExternalLink","link","RegExp","isBrowser","window","location","host","test","isReactUINode","componentName","node","React","isValidElement","Object","hasOwnProperty","call","type","__KONTUR_REACT_UI__","KB","UNITS","formatBytes","bytes","decimals","i","floor","log2","formattedBytes","parseFloat","pow","toFixed","isNonNullable","value","undefined"],"mappings":"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","sourcesContent":["import { ReactComponentLike } from 'prop-types';\nimport React from 'react';\n\nimport { isBrowser } from './client';\n\n// NOTE: Copy-paste from @types/react\nexport type Defaultize<P, D> = P extends any\n ? string extends keyof P\n ? P\n : Pick<P, Exclude<keyof P, keyof D>> &\n Partial<Pick<P, Extract<keyof P, keyof D>>> &\n Partial<Pick<D, Exclude<keyof D, keyof P>>>\n : never;\n\nexport type DefaultizeProps<C, P> = C extends { defaultProps: infer D } ? Defaultize<P, D> : P;\n\nexport const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nexport const emptyHandler = () => {\n /* noop */\n};\n\nexport class CancelationError extends Error {\n public code = 'CancelationError';\n}\n\nexport function taskWithDelay(task: () => void, ms: number) {\n let cancelationToken: () => void = () => null;\n\n new Promise((resolve, reject) => {\n cancelationToken = reject;\n setTimeout(resolve, ms);\n })\n .then(task)\n .catch(() => null);\n\n return cancelationToken;\n}\n\nexport function isFunction<T>(x: T | Function): x is Function {\n return typeof x === 'function';\n}\n\nexport function isFunctionalComponent(Component: ReactComponentLike) {\n return typeof Component === 'function' && !(Component.prototype && Component.prototype.isReactComponent);\n}\n\nexport function escapeRegExpSpecChars(s: string): string {\n return s.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nexport const getRandomID = (): string => Math.random().toString(16).slice(2);\n\nexport const isExternalLink = (link: string): boolean => {\n return new RegExp(`^(https?:)?//${isBrowser ? `(?!${window.location.host})` : ``}\\\\S+`, 'gi').test(link);\n};\n\n/**\n * Check if the given ReactNode is an element of the specified ReactUI component\n */\nexport const isReactUINode = (componentName: string, node: React.ReactNode): boolean => {\n if (React.isValidElement(node)) {\n return (\n Object.prototype.hasOwnProperty.call(node.type, '__KONTUR_REACT_UI__') &&\n // @ts-ignore\n node.type.__KONTUR_REACT_UI__ === componentName\n );\n }\n\n return false;\n};\n\nconst KB = 1024;\nconst UNITS = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\nexport const formatBytes = (bytes: number, decimals = 2): string | null => {\n if (bytes === 0) return '0 Bytes';\n\n if (!bytes) {\n return null;\n }\n\n decimals = decimals < 0 ? 0 : decimals;\n\n const i = Math.floor(Math.log2(bytes) / Math.log2(KB));\n const formattedBytes = parseFloat((bytes / Math.pow(KB, i)).toFixed(decimals));\n\n return `${formattedBytes} ${UNITS[i]}`;\n};\n\n/**\n * Проверяет, не является ли переданный аргумент null или undefined и исключает типы null и undefined из типа аргумента\n *\n * @param value Значение, которое нужно проверить и исключить из него типы\n * @returns Возвращает true, если переданный аргумент не является null или undefined иначе false\n */\nexport const isNonNullable = <T>(value: T): value is NonNullable<T> => {\n return value !== null && value !== undefined;\n};\n"]}
@@ -0,0 +1,277 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
5
+ import React, { useCallback, useContext, useImperativeHandle, useRef, useState } from 'react';
6
+ import { readFiles } from "../../../internal/FileUploaderControl/fileUtils";
7
+ import { cx } from "../../../lib/theming/Emotion";
8
+ import { useMemoObject } from "../../../hooks/useMemoObject";
9
+ import { FileUploaderControlContext } from "../../../internal/FileUploaderControl/FileUploaderControlContext";
10
+ import { FileUploaderFileValidationResult } from "../../../internal/FileUploaderControl/FileUploaderFileValidationResult";
11
+ import { useControlLocale } from "../../../internal/FileUploaderControl/hooks/useControlLocale";
12
+ import { useUpload } from "../../../internal/FileUploaderControl/hooks/useUpload";
13
+ import { useDrop } from "../../../hooks/useDrop";
14
+ import { ThemeContext } from "../../../lib/theming/ThemeContext";
15
+ import { UploadIcon } from "../../../internal/icons/16px";
16
+ import { withFileUploaderControlProvider } from "../../../internal/FileUploaderControl/withFileUploaderControlProvider";
17
+ import { keyListener } from "../../../lib/events/keyListener";
18
+ import { FileUploaderFile } from "../../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile";
19
+ import { FileUploaderFileList } from "../../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList";
20
+ import { isBrowser } from "../../../lib/client";
21
+ import { CommonWrapper } from "../../../internal/CommonWrapper";
22
+ import { jsStyles } from "../FileUploader.styles";
23
+
24
+ var stopPropagation = function stopPropagation(e) {
25
+ return e.stopPropagation();
26
+ };
27
+
28
+ var _FileUploader = /*#__PURE__*/React.forwardRef(function (props, ref) {
29
+ var _cx, _cx2, _cx3, _cx4;
30
+
31
+ var theme = useContext(ThemeContext);
32
+
33
+ var disabled = props.disabled,
34
+ error = props.error,
35
+ warning = props.warning,
36
+ onBlur = props.onBlur,
37
+ onFocus = props.onFocus,
38
+ onReadError = props.onReadError,
39
+ _props$multiple = props.multiple,
40
+ multiple = _props$multiple === void 0 ? false : _props$multiple,
41
+ _props$width = props.width,
42
+ width = _props$width === void 0 ? theme.fileUploaderWidth : _props$width,
43
+ request = props.request,
44
+ getFileValidationText = props.getFileValidationText,
45
+ onRequestSuccess = props.onRequestSuccess,
46
+ onRequestError = props.onRequestError,
47
+ inputProps = _objectWithoutPropertiesLoose(props, ["disabled", "error", "warning", "onBlur", "onFocus", "onReadError", "multiple", "width", "request", "getFileValidationText", "onRequestSuccess", "onRequestError"]);
48
+
49
+ var _useContext = useContext(FileUploaderControlContext),
50
+ files = _useContext.files,
51
+ setFiles = _useContext.setFiles,
52
+ removeFile = _useContext.removeFile,
53
+ setFileValidationResult = _useContext.setFileValidationResult;
54
+
55
+ var locale = useControlLocale();
56
+ var inputRef = useRef(null);
57
+ var isAsync = !!request;
58
+ var isSingleMode = !multiple;
59
+ var upload = useUpload(request, onRequestSuccess, onRequestError);
60
+ var tryValidateAndUpload = useCallback(function (files) {
61
+ files.forEach( /*#__PURE__*/function () {
62
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(file) {
63
+ var validationMessage;
64
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
65
+ while (1) {
66
+ switch (_context.prev = _context.next) {
67
+ case 0:
68
+ _context.t0 = getFileValidationText;
69
+
70
+ if (!_context.t0) {
71
+ _context.next = 5;
72
+ break;
73
+ }
74
+
75
+ _context.next = 4;
76
+ return getFileValidationText(file);
77
+
78
+ case 4:
79
+ _context.t0 = _context.sent;
80
+
81
+ case 5:
82
+ validationMessage = _context.t0;
83
+
84
+ if (!validationMessage) {
85
+ isAsync && upload(file);
86
+ } else {
87
+ setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));
88
+ }
89
+
90
+ case 7:
91
+ case "end":
92
+ return _context.stop();
93
+ }
94
+ }
95
+ }, _callee);
96
+ }));
97
+
98
+ return function (_x) {
99
+ return _ref.apply(this, arguments);
100
+ };
101
+ }());
102
+ }, [upload, error, getFileValidationText, isAsync]);
103
+ /** common part **/
104
+
105
+ var handleChange = useCallback( /*#__PURE__*/function () {
106
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(newFiles) {
107
+ var filesArray, uploadFiles, selectedFiles, readErrorFiles;
108
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
109
+ while (1) {
110
+ switch (_context2.prev = _context2.next) {
111
+ case 0:
112
+ if (newFiles) {
113
+ _context2.next = 2;
114
+ break;
115
+ }
116
+
117
+ return _context2.abrupt("return");
118
+
119
+ case 2:
120
+ filesArray = Array.from(newFiles);
121
+
122
+ if (isSingleMode) {
123
+ filesArray = [filesArray[0]];
124
+ }
125
+
126
+ _context2.next = 6;
127
+ return readFiles(filesArray);
128
+
129
+ case 6:
130
+ uploadFiles = _context2.sent;
131
+ selectedFiles = uploadFiles.filter(function (v) {
132
+ return !!v.fileInBase64;
133
+ });
134
+ readErrorFiles = uploadFiles.filter(function (v) {
135
+ return !v.fileInBase64;
136
+ });
137
+
138
+ if (isSingleMode && selectedFiles.length && files.length) {
139
+ removeFile(files[0].id);
140
+ }
141
+
142
+ if (selectedFiles.length) {
143
+ setFiles(selectedFiles);
144
+ tryValidateAndUpload(selectedFiles);
145
+ }
146
+
147
+ readErrorFiles.length && (onReadError == null ? void 0 : onReadError(readErrorFiles));
148
+
149
+ case 12:
150
+ case "end":
151
+ return _context2.stop();
152
+ }
153
+ }
154
+ }, _callee2);
155
+ }));
156
+
157
+ return function (_x2) {
158
+ return _ref2.apply(this, arguments);
159
+ };
160
+ }(), [onReadError, tryValidateAndUpload, setFiles, isSingleMode, files, removeFile]);
161
+ var handleDrop = useCallback(function (event) {
162
+ if (disabled) {
163
+ return;
164
+ }
165
+
166
+ var dataTransfer = event.dataTransfer;
167
+ var files = dataTransfer.files;
168
+
169
+ if ((files == null ? void 0 : files.length) > 0) {
170
+ handleChange(files);
171
+ dataTransfer.clearData();
172
+ }
173
+ }, [handleChange, disabled]);
174
+
175
+ var _useDrop = useDrop({
176
+ onDrop: handleDrop
177
+ }),
178
+ isDraggable = _useDrop.isDraggable,
179
+ labelRef = _useDrop.ref;
180
+
181
+ var _useDrop2 = useDrop(),
182
+ isWindowDraggable = _useDrop2.isDraggable,
183
+ windowRef = _useDrop2.ref;
184
+
185
+ if (isBrowser) {
186
+ windowRef.current = window.document;
187
+ }
188
+
189
+ var focus = useCallback(function () {
190
+ var _inputRef$current;
191
+
192
+ keyListener.isTabPressed = true;
193
+ (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
194
+ }, []);
195
+ var blur = useCallback(function () {
196
+ var _inputRef$current2;
197
+
198
+ (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.blur();
199
+ }, []);
200
+ useImperativeHandle(ref, function () {
201
+ return {
202
+ focus: focus,
203
+ blur: blur
204
+ };
205
+ }, [ref]);
206
+
207
+ var _useState = useState(false),
208
+ focusedByTab = _useState[0],
209
+ setFocusedByTab = _useState[1];
210
+
211
+ var handleInputChange = useCallback(function (event) {
212
+ handleChange(event.target.files);
213
+ }, [handleChange]);
214
+ var handleFocus = useCallback(function (e) {
215
+ if (!disabled) {
216
+ // focus event fires before keyDown eventlistener
217
+ // so we should check tabPressed in async way
218
+ requestAnimationFrame(function () {
219
+ if (keyListener.isTabPressed) {
220
+ setFocusedByTab(true);
221
+ }
222
+ });
223
+ onFocus == null ? void 0 : onFocus(e);
224
+ }
225
+ }, [disabled, onFocus]);
226
+ var handleBlur = useCallback(function (e) {
227
+ setFocusedByTab(false);
228
+
229
+ if (!disabled) {
230
+ onBlur == null ? void 0 : onBlur(e);
231
+ }
232
+ }, [disabled, onBlur]);
233
+ var uploadButtonClassNames = cx(jsStyles.uploadButton(theme), (_cx = {}, _cx[jsStyles.uploadButtonFocus(theme)] = focusedByTab, _cx[jsStyles.dragOver()] = isDraggable && !disabled, _cx[jsStyles.disabled(theme)] = disabled, _cx[jsStyles.warning(theme)] = !!warning, _cx[jsStyles.error(theme)] = !!error, _cx));
234
+ var uploadButtonWrapperClassNames = cx((_cx2 = {}, _cx2[jsStyles.windowDragOver()] = isWindowDraggable && !disabled, _cx2));
235
+ var uploadButtonIconClassNames = cx(jsStyles.icon(theme), (_cx3 = {}, _cx3[jsStyles.iconDisabled(theme)] = disabled, _cx3));
236
+ var hasOneFile = files.length === 1;
237
+ var hasOneFileForSingle = isSingleMode && hasOneFile;
238
+ var linkClassNames = cx(jsStyles.link(theme), (_cx4 = {}, _cx4[jsStyles.linkDisabled(theme)] = disabled, _cx4));
239
+ return /*#__PURE__*/React.createElement(CommonWrapper, props, /*#__PURE__*/React.createElement("div", {
240
+ className: jsStyles.root(theme),
241
+ style: useMemoObject({
242
+ width: width
243
+ })
244
+ }, !isSingleMode && !!files.length && /*#__PURE__*/React.createElement(FileUploaderFileList, null), /*#__PURE__*/React.createElement("div", {
245
+ className: uploadButtonWrapperClassNames
246
+ }, /*#__PURE__*/React.createElement("label", {
247
+ ref: labelRef,
248
+ className: uploadButtonClassNames
249
+ }, /*#__PURE__*/React.createElement("div", {
250
+ className: jsStyles.content()
251
+ }, /*#__PURE__*/React.createElement("span", {
252
+ "data-tid": 'FileUploader__link',
253
+ className: linkClassNames
254
+ }, hasOneFileForSingle ? locale.choosedFile : locale.chooseFile), "\xA0", /*#__PURE__*/React.createElement("div", {
255
+ className: jsStyles.afterLinkText()
256
+ }, hasOneFileForSingle ? /*#__PURE__*/React.createElement(FileUploaderFile, {
257
+ file: files[0]
258
+ }) : /*#__PURE__*/React.createElement(React.Fragment, null, locale.orDragHere, "\xA0", /*#__PURE__*/React.createElement("div", {
259
+ className: uploadButtonIconClassNames
260
+ }, /*#__PURE__*/React.createElement(UploadIcon, null))))), /*#__PURE__*/React.createElement("input", _extends({}, inputProps, {
261
+ ref: inputRef,
262
+ tabIndex: disabled ? -1 : 0,
263
+ type: "file",
264
+ disabled: disabled,
265
+ multiple: multiple,
266
+ className: jsStyles.fileInput(),
267
+ onClick: stopPropagation,
268
+ onChange: handleInputChange,
269
+ onFocus: handleFocus,
270
+ onBlur: handleBlur // для того, чтобы срабатывало событие change при выборе одного и того же файла подряд
271
+ ,
272
+ value: ''
273
+ }))))));
274
+ });
275
+
276
+ export var FileUploader = withFileUploaderControlProvider(_FileUploader);
277
+ FileUploader.displayName = 'FileUploader';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FileUploader.tsx"],"names":["React","useCallback","useContext","useImperativeHandle","useRef","useState","readFiles","cx","useMemoObject","FileUploaderControlContext","FileUploaderFileValidationResult","useControlLocale","useUpload","useDrop","ThemeContext","UploadIcon","withFileUploaderControlProvider","keyListener","FileUploaderFile","FileUploaderFileList","isBrowser","CommonWrapper","jsStyles","stopPropagation","e","_FileUploader","forwardRef","props","ref","theme","disabled","error","warning","onBlur","onFocus","onReadError","multiple","width","fileUploaderWidth","request","getFileValidationText","onRequestSuccess","onRequestError","inputProps","files","setFiles","removeFile","setFileValidationResult","locale","inputRef","isAsync","isSingleMode","upload","tryValidateAndUpload","forEach","file","validationMessage","id","handleChange","newFiles","filesArray","Array","from","uploadFiles","selectedFiles","filter","v","fileInBase64","readErrorFiles","length","handleDrop","event","dataTransfer","clearData","onDrop","isDraggable","labelRef","isWindowDraggable","windowRef","current","window","document","focus","isTabPressed","blur","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","uploadButtonClassNames","uploadButton","uploadButtonFocus","dragOver","uploadButtonWrapperClassNames","windowDragOver","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","linkClassNames","link","linkDisabled","root","content","choosedFile","chooseFile","afterLinkText","orDragHere","fileInput","FileUploader","displayName"],"mappings":"uSAAA,OAAOA,KAAP,IAAgBC,WAAhB,EAA6BC,UAA7B,EAAyCC,mBAAzC,EAA8DC,MAA9D,EAAsEC,QAAtE,QAAsF,OAAtF;;AAEA,SAAmCC,SAAnC,QAAoD,8CAApD;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,aAAT,QAA8B,2BAA9B;AACA,SAASC,0BAAT,QAA2C,+DAA3C;AACA,SAASC,gCAAT,QAAiD,qEAAjD;AACA,SAASC,gBAAT,QAAiC,2DAAjC;AACA,SAASC,SAAT,QAA0B,oDAA1B;AACA,SAASC,OAAT,QAAwB,qBAAxB;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,UAAT,QAA2B,2BAA3B;;AAEA,SAASC,+BAAT,QAAgD,oEAAhD;AACA,SAASC,WAAT,QAA4B,8BAA5B;AACA,SAASC,gBAAT,QAAiC,sEAAjC;AACA,SAASC,oBAAT,QAAqC,8EAArC;AACA,SAASC,SAAT,QAA0B,kBAA1B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;;AAEA,SAASC,QAAT,QAAyB,uBAAzB;;AAEA,IAAMC,eAAwC,GAAG,SAA3CA,eAA2C,CAACC,CAAD,UAAOA,CAAC,CAACD,eAAF,EAAP,EAAjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,IAAME,aAAa,gBAAGzB,KAAK,CAAC0B,UAAN,CAAsD,UAACC,KAAD,EAA4BC,GAA5B,EAAoC;AAC9G,MAAMC,KAAK,GAAG3B,UAAU,CAACY,YAAD,CAAxB,CAD8G;;;AAI5GgB,EAAAA,QAJ4G;;;;;;;;;;;;;AAiB1GH,EAAAA,KAjB0G,CAI5GG,QAJ4G,CAK5GC,KAL4G,GAiB1GJ,KAjB0G,CAK5GI,KAL4G,CAM5GC,OAN4G,GAiB1GL,KAjB0G,CAM5GK,OAN4G,CAO5GC,MAP4G,GAiB1GN,KAjB0G,CAO5GM,MAP4G,CAQ5GC,OAR4G,GAiB1GP,KAjB0G,CAQ5GO,OAR4G,CAS5GC,WAT4G,GAiB1GR,KAjB0G,CAS5GQ,WAT4G,mBAiB1GR,KAjB0G,CAU5GS,QAV4G,CAU5GA,QAV4G,gCAUjG,KAViG,kCAiB1GT,KAjB0G,CAW5GU,KAX4G,CAW5GA,KAX4G,6BAWpGR,KAAK,CAACS,iBAX8F,gBAY5GC,OAZ4G,GAiB1GZ,KAjB0G,CAY5GY,OAZ4G,CAa5GC,qBAb4G,GAiB1Gb,KAjB0G,CAa5Ga,qBAb4G,CAc5GC,gBAd4G,GAiB1Gd,KAjB0G,CAc5Gc,gBAd4G,CAe5GC,cAf4G,GAiB1Gf,KAjB0G,CAe5Ge,cAf4G,CAgBzGC,UAhByG,iCAiB1GhB,KAjB0G;;AAmB7CzB,EAAAA,UAAU,CAACO,0BAAD,CAnBmC,CAmBtGmC,KAnBsG,eAmBtGA,KAnBsG,CAmB/FC,QAnB+F,eAmB/FA,QAnB+F,CAmBrFC,UAnBqF,eAmBrFA,UAnBqF,CAmBzEC,uBAnByE,eAmBzEA,uBAnByE;;AAqB9G,MAAMC,MAAM,GAAGrC,gBAAgB,EAA/B;;AAEA,MAAMsC,QAAQ,GAAG7C,MAAM,CAAmB,IAAnB,CAAvB;;AAEA,MAAM8C,OAAO,GAAG,CAAC,CAACX,OAAlB;AACA,MAAMY,YAAY,GAAG,CAACf,QAAtB;;AAEA,MAAMgB,MAAM,GAAGxC,SAAS,CAAC2B,OAAD,EAAUE,gBAAV,EAA4BC,cAA5B,CAAxB;;AAEA,MAAMW,oBAAoB,GAAGpD,WAAW;AACtC,YAAC2C,KAAD,EAAuC;AACrCA,IAAAA,KAAK,CAACU,OAAN,gGAAc,iBAAOC,IAAP;AACcf,gBAAAA,qBADd,sEAC8CA,qBAAqB,CAACe,IAAD,CADnE,2CACNC,iBADM;;AAGZ,oBAAI,CAACA,iBAAL,EAAwB;AACtBN,kBAAAA,OAAO,IAAIE,MAAM,CAACG,IAAD,CAAjB;AACD,iBAFD,MAEO;AACLR,kBAAAA,uBAAuB,CAACQ,IAAI,CAACE,EAAN,EAAU/C,gCAAgC,CAACqB,KAAjC,CAAuCyB,iBAAvC,CAAV,CAAvB;AACD,iBAPW,wDAAd;;AASD,GAXqC;AAYtC,GAACJ,MAAD,EAASrB,KAAT,EAAgBS,qBAAhB,EAAuCU,OAAvC,CAZsC,CAAxC;;;AAeA;AACA,MAAMQ,YAAY,GAAGzD,WAAW;AAC9B,sBAAO0D,QAAP;AACOA,cAAAA,QADP;;AAGMC,cAAAA,UAHN,GAGmBC,KAAK,CAACC,IAAN,CAAWH,QAAX,CAHnB;;AAKE,kBAAIR,YAAJ,EAAkB;AAChBS,gBAAAA,UAAU,GAAG,CAACA,UAAU,CAAC,CAAD,CAAX,CAAb;AACD,eAPH;;AAS4BtD,gBAAAA,SAAS,CAACsD,UAAD,CATrC,SASQG,WATR;;AAWQC,cAAAA,aAXR,GAWwBD,WAAW,CAACE,MAAZ,CAAmB,UAACC,CAAD,UAAO,CAAC,CAACA,CAAC,CAACC,YAAX,EAAnB,CAXxB;AAYQC,cAAAA,cAZR,GAYyBL,WAAW,CAACE,MAAZ,CAAmB,UAACC,CAAD,UAAO,CAACA,CAAC,CAACC,YAAV,EAAnB,CAZzB;;AAcE,kBAAIhB,YAAY,IAAIa,aAAa,CAACK,MAA9B,IAAwCzB,KAAK,CAACyB,MAAlD,EAA0D;AACxDvB,gBAAAA,UAAU,CAACF,KAAK,CAAC,CAAD,CAAL,CAASa,EAAV,CAAV;AACD;;AAED,kBAAIO,aAAa,CAACK,MAAlB,EAA0B;AACxBxB,gBAAAA,QAAQ,CAACmB,aAAD,CAAR;AACAX,gBAAAA,oBAAoB,CAACW,aAAD,CAApB;AACD;;AAEDI,cAAAA,cAAc,CAACC,MAAf,KAAyBlC,WAAzB,oBAAyBA,WAAW,CAAGiC,cAAH,CAApC,EAvBF,2DAD8B;;AA0B9B,GAACjC,WAAD,EAAckB,oBAAd,EAAoCR,QAApC,EAA8CM,YAA9C,EAA4DP,KAA5D,EAAmEE,UAAnE,CA1B8B,CAAhC;;;AA6BA,MAAMwB,UAAU,GAAGrE,WAAW;AAC5B,YAACsE,KAAD,EAAW;AACT,QAAIzC,QAAJ,EAAc;AACZ;AACD,KAHQ;;AAKD0C,IAAAA,YALC,GAKgBD,KALhB,CAKDC,YALC;AAMD5B,IAAAA,KANC,GAMS4B,YANT,CAMD5B,KANC;;AAQT,QAAI,CAAAA,KAAK,QAAL,YAAAA,KAAK,CAAEyB,MAAP,IAAgB,CAApB,EAAuB;AACrBX,MAAAA,YAAY,CAACd,KAAD,CAAZ;AACA4B,MAAAA,YAAY,CAACC,SAAb;AACD;AACF,GAb2B;AAc5B,GAACf,YAAD,EAAe5B,QAAf,CAd4B,CAA9B,CA3E8G;;;AA4FvEjB,EAAAA,OAAO,CAAmB,EAAE6D,MAAM,EAAEJ,UAAV,EAAnB,CA5FgE,CA4FtGK,WA5FsG,YA4FtGA,WA5FsG,CA4FpFC,QA5FoF,YA4FzFhD,GA5FyF;AA6FnDf,EAAAA,OAAO,EA7F4C,CA6FzFgE,iBA7FyF,aA6FtGF,WA7FsG,CA6FjEG,SA7FiE,aA6FtElD,GA7FsE;;AA+F9G,MAAIR,SAAJ,EAAe;AACb0D,IAAAA,SAAS,CAACC,OAAV,GAAoBC,MAAM,CAACC,QAA3B;AACD;;AAED,MAAMC,KAAK,GAAGjF,WAAW,CAAC,YAAM;AAC9BgB,IAAAA,WAAW,CAACkE,YAAZ,GAA2B,IAA3B;AACA,yBAAAlC,QAAQ,CAAC8B,OAAT,uCAAkBG,KAAlB;AACD,GAHwB,EAGtB,EAHsB,CAAzB;;AAKA,MAAME,IAAI,GAAGnF,WAAW,CAAC,YAAM;AAC7B,0BAAAgD,QAAQ,CAAC8B,OAAT,wCAAkBK,IAAlB;AACD,GAFuB,EAErB,EAFqB,CAAxB;;AAIAjF,EAAAA,mBAAmB,CAACyB,GAAD,EAAM,oBAAO,EAAEsD,KAAK,EAALA,KAAF,EAASE,IAAI,EAAJA,IAAT,EAAP,EAAN,EAA+B,CAACxD,GAAD,CAA/B,CAAnB,CA5G8G;;AA8GtEvB,EAAAA,QAAQ,CAAC,KAAD,CA9G8D,CA8GvGgF,YA9GuG,gBA8GzFC,eA9GyF;AA+G9G,MAAMC,iBAAiB,GAAGtF,WAAW;AACnC,YAACsE,KAAD,EAAgD;AAC9Cb,IAAAA,YAAY,CAACa,KAAK,CAACiB,MAAN,CAAa5C,KAAd,CAAZ;AACD,GAHkC;AAInC,GAACc,YAAD,CAJmC,CAArC;;;AAOA,MAAM+B,WAAW,GAAGxF,WAAW;AAC7B,YAACuB,CAAD,EAA2C;AACzC,QAAI,CAACM,QAAL,EAAe;AACb;AACA;AACA4D,MAAAA,qBAAqB,CAAC,YAAM;AAC1B,YAAIzE,WAAW,CAACkE,YAAhB,EAA8B;AAC5BG,UAAAA,eAAe,CAAC,IAAD,CAAf;AACD;AACF,OAJoB,CAArB;AAKApD,MAAAA,OAAO,QAAP,YAAAA,OAAO,CAAGV,CAAH,CAAP;AACD;AACF,GAZ4B;AAa7B,GAACM,QAAD,EAAWI,OAAX,CAb6B,CAA/B;;;AAgBA,MAAMyD,UAAU,GAAG1F,WAAW;AAC5B,YAACuB,CAAD,EAA2C;AACzC8D,IAAAA,eAAe,CAAC,KAAD,CAAf;AACA,QAAI,CAACxD,QAAL,EAAe;AACbG,MAAAA,MAAM,QAAN,YAAAA,MAAM,CAAGT,CAAH,CAAN;AACD;AACF,GAN2B;AAO5B,GAACM,QAAD,EAAWG,MAAX,CAP4B,CAA9B;;;AAUA,MAAM2D,sBAAsB,GAAGrF,EAAE,CAACe,QAAQ,CAACuE,YAAT,CAAsBhE,KAAtB,CAAD;AAC9BP,EAAAA,QAAQ,CAACwE,iBAAT,CAA2BjE,KAA3B,CAD8B,IACMwD,YADN;AAE9B/D,EAAAA,QAAQ,CAACyE,QAAT,EAF8B,IAERpB,WAAW,IAAI,CAAC7C,QAFR;AAG9BR,EAAAA,QAAQ,CAACQ,QAAT,CAAkBD,KAAlB,CAH8B,IAGHC,QAHG;AAI9BR,EAAAA,QAAQ,CAACU,OAAT,CAAiBH,KAAjB,CAJ8B,IAIJ,CAAC,CAACG,OAJE;AAK9BV,EAAAA,QAAQ,CAACS,KAAT,CAAeF,KAAf,CAL8B,IAKN,CAAC,CAACE,KALI,OAAjC;;;AAQA,MAAMiE,6BAA6B,GAAGzF,EAAE;AACrCe,EAAAA,QAAQ,CAAC2E,cAAT,EADqC,IACTpB,iBAAiB,IAAI,CAAC/C,QADb,QAAxC;;;AAIA,MAAMoE,0BAA0B,GAAG3F,EAAE,CAACe,QAAQ,CAAC6E,IAAT,CAActE,KAAd,CAAD;AAClCP,EAAAA,QAAQ,CAAC8E,YAAT,CAAsBvE,KAAtB,CADkC,IACHC,QADG,QAArC;;;AAIA,MAAMuE,UAAU,GAAGzD,KAAK,CAACyB,MAAN,KAAiB,CAApC;AACA,MAAMiC,mBAAmB,GAAGnD,YAAY,IAAIkD,UAA5C;;AAEA,MAAME,cAAc,GAAGhG,EAAE,CAACe,QAAQ,CAACkF,IAAT,CAAc3E,KAAd,CAAD;AACtBP,EAAAA,QAAQ,CAACmF,YAAT,CAAsB5E,KAAtB,CADsB,IACSC,QADT,QAAzB;;;AAIA;AACE,wBAAC,aAAD,EAAmBH,KAAnB;AACE,iCAAK,SAAS,EAAEL,QAAQ,CAACoF,IAAT,CAAc7E,KAAd,CAAhB,EAAsC,KAAK,EAAErB,aAAa,CAAC,EAAE6B,KAAK,EAALA,KAAF,EAAD,CAA1D;AACG,KAACc,YAAD,IAAiB,CAAC,CAACP,KAAK,CAACyB,MAAzB,iBAAmC,oBAAC,oBAAD,OADtC;AAEE,iCAAK,SAAS,EAAE2B,6BAAhB;AACE,mCAAO,GAAG,EAAEpB,QAAZ,EAAsB,SAAS,EAAEgB,sBAAjC;AACE,iCAAK,SAAS,EAAEtE,QAAQ,CAACqF,OAAT,EAAhB;AACE,kCAAM,YAAU,oBAAhB,EAAsC,SAAS,EAAEJ,cAAjD;AACGD,IAAAA,mBAAmB,GAAGtD,MAAM,CAAC4D,WAAV,GAAwB5D,MAAM,CAAC6D,UADrD,CADF;;;AAKE,iCAAK,SAAS,EAAEvF,QAAQ,CAACwF,aAAT,EAAhB;AACGR,IAAAA,mBAAmB;AAClB,wBAAC,gBAAD,IAAkB,IAAI,EAAE1D,KAAK,CAAC,CAAD,CAA7B,GADkB;;AAGlB;AACGI,IAAAA,MAAM,CAAC+D,UADV;AAEE,iCAAK,SAAS,EAAEb,0BAAhB;AACE,wBAAC,UAAD,OADF,CAFF,CAJJ,CALF,CADF;;;;;;AAmBE;AACMvD,IAAAA,UADN;AAEE,MAAA,GAAG,EAAEM,QAFP;AAGE,MAAA,QAAQ,EAAEnB,QAAQ,GAAG,CAAC,CAAJ,GAAQ,CAH5B;AAIE,MAAA,IAAI,EAAC,MAJP;AAKE,MAAA,QAAQ,EAAEA,QALZ;AAME,MAAA,QAAQ,EAAEM,QANZ;AAOE,MAAA,SAAS,EAAEd,QAAQ,CAAC0F,SAAT,EAPb;AAQE,MAAA,OAAO,EAAEzF,eARX;AASE,MAAA,QAAQ,EAAEgE,iBATZ;AAUE,MAAA,OAAO,EAAEE,WAVX;AAWE,MAAA,MAAM,EAAEE;AACR;AAZF,QAaE,KAAK,EAAE,EAbT,IAnBF,CADF,CAFF,CADF,CADF;;;;;;;AA4CD,CAnNqB,CAAtB;;;;AAuNA,OAAO,IAAMsB,YAAY,GAAGjG,+BAA+B,CAAqCS,aAArC,CAApD;AACPwF,YAAY,CAACC,WAAb,GAA2B,cAA3B","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,6 @@
1
+ {
2
+ "main": "../../../cjs/components/FileUploader/FileUploader.js",
3
+ "module": "FileUploader",
4
+ "types": "../FileUploader.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -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,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,56 @@
1
+ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
2
+
3
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16;
4
+
5
+ import { css, keyframes, memoizeStyle } from "../../../lib/theming/Emotion";
6
+ var styles = {
7
+ pulse: function pulse() {
8
+ return keyframes(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\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 "])));
9
+ },
10
+ root: function root(t) {
11
+ return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n display: inline-block;\n min-width: 285px;\n position: relative;\n background-color: ", ";\n line-height: ", ";\n font-size: ", ";\n color: ", ";\n "])), t.fileUploaderBg, t.fileUploaderLineHeight, t.fileUploaderFontSize, t.fileUploaderTextColorDefault);
12
+ },
13
+ uploadButton: function uploadButton(t) {
14
+ return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\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 "])), t.fileUploaderBorderWidth, t.fileUploaderBorderStyle, t.fileUploaderBorderColor, t.fileUploaderBorderRadius, t.fileUploaderPaddingY, t.fileUploaderPaddingX);
15
+ },
16
+ uploadButtonFocus: function uploadButtonFocus(t) {
17
+ return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n border: ", " solid ", ";\n box-shadow: 0px 0px 0px 1px ", ";\n "])), t.fileUploaderBorderWidth, t.fileUploaderBorderColorFocus, t.fileUploaderBorderColorFocus);
18
+ },
19
+ dragOver: function dragOver() {
20
+ return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\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 "])));
21
+ },
22
+ windowDragOver: function windowDragOver() {
23
+ return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n border-radius: 2px;\n animation: ", " 1.5s infinite;\n "])), styles.pulse());
24
+ },
25
+ content: function content() {
26
+ return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n display: flex;\n width: 100%;\n align-items: center;\n height: 100%;\n "])));
27
+ },
28
+ fileInput: function fileInput() {
29
+ return css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n width: 0;\n height: 0;\n "])));
30
+ },
31
+ afterLinkText: function afterLinkText() {
32
+ return css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose(["\n display: flex;\n justify-content: space-between;\n flex: 1 1 auto;\n "])));
33
+ },
34
+ warning: function warning(t) {
35
+ return css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteralLoose(["\n border: ", " solid ", ";\n box-shadow: 0px 0px 0px 1px ", ";\n "])), t.fileUploaderBorderWidth, t.fileUploaderBorderColorWarning, t.fileUploaderBorderColorWarning);
36
+ },
37
+ error: function error(t) {
38
+ return css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteralLoose(["\n border: ", " solid ", ";\n box-shadow: 0px 0px 0px 1px ", ";\n "])), t.fileUploaderBorderWidth, t.fileUploaderBorderColorError, t.fileUploaderBorderColorError);
39
+ },
40
+ disabled: function disabled(t) {
41
+ return css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteralLoose(["\n cursor: default;\n background: ", ";\n border: ", " solid ", ";\n color: ", ";\n box-shadow: none;\n "])), t.fileUploaderDisabledBg, t.fileUploaderBorderWidth, t.fileUploaderDisabledBorderColor, t.fileUploaderDisabledTextColor);
42
+ },
43
+ icon: function icon(t) {
44
+ return css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteralLoose(["\n display: inline-block;\n font-size: ", ";\n color: ", ";\n "])), t.fileUploaderIconSize, t.fileUploaderIconColor);
45
+ },
46
+ iconDisabled: function iconDisabled(t) {
47
+ return css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteralLoose(["\n color: ", ";\n "])), t.fileUploaderDisabledIconColor);
48
+ },
49
+ link: function link(t) {
50
+ return css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteralLoose(["\n outline: none;\n text-decoration: none;\n\n &:hover {\n text-decoration: ", ";\n }\n color: ", ";\n "])), t.linkHoverTextDecoration, t.fileUploaderLinkColor);
51
+ },
52
+ linkDisabled: function linkDisabled(t) {
53
+ return css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteralLoose(["\n color: ", ";\n &:hover {\n text-decoration: none;\n }\n "])), t.fileUploaderDisabledLinkColor);
54
+ }
55
+ };
56
+ export var jsStyles = memoizeStyle(styles);
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FileUploader.styles.ts"],"names":["css","keyframes","memoizeStyle","styles","pulse","root","t","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":"yYAAA,SAASA,GAAT,EAAcC,SAAd,EAAyBC,YAAzB,QAA6C,2BAA7C;;;AAGA,IAAMC,MAAM,GAAG;AACbC,EAAAA,KADa,mBACL;AACN,WAAOH,SAAP;;;;;;;;;;;;;;;;;AAiBD,GAnBY;;AAqBbI,EAAAA,IArBa,gBAqBRC,CArBQ,EAqBE;AACb,WAAON,GAAP;;;;AAIsBM,IAAAA,CAAC,CAACC,cAJxB;AAKiBD,IAAAA,CAAC,CAACE,sBALnB;AAMeF,IAAAA,CAAC,CAACG,oBANjB;AAOWH,IAAAA,CAAC,CAACI,4BAPb;;AASD,GA/BY;;AAiCbC,EAAAA,YAjCa,wBAiCAL,CAjCA,EAiCU;AACrB,WAAON,GAAP;;;;;AAKYM,IAAAA,CAAC,CAACM,uBALd,EAKyCN,CAAC,CAACO,uBAL3C,EAKsEP,CAAC,CAACQ,uBALxE;;AAOmBR,IAAAA,CAAC,CAACS,wBAPrB;;;AAUaT,IAAAA,CAAC,CAACU,oBAVf,EAUuCV,CAAC,CAACW,oBAVzC;;;AAaD,GA/CY;;AAiDbC,EAAAA,iBAjDa,6BAiDKZ,CAjDL,EAiDe;AAC1B,WAAON,GAAP;AACYM,IAAAA,CAAC,CAACM,uBADd,EAC+CN,CAAC,CAACa,4BADjD;AAEgCb,IAAAA,CAAC,CAACa,4BAFlC;;AAID,GAtDY;;AAwDbC,EAAAA,QAxDa,sBAwDF;AACT,WAAOpB,GAAP;;;;;AAKD,GA9DY;;AAgEbqB,EAAAA,cAhEa,4BAgEI;AACf,WAAOrB,GAAP;;AAEeG,IAAAA,MAAM,CAACC,KAAP,EAFf;;AAID,GArEY;;AAuEbkB,EAAAA,OAvEa,qBAuEH;AACR,WAAOtB,GAAP;;;;;;AAMD,GA9EY;;AAgFbuB,EAAAA,SAhFa,uBAgFD;AACV,WAAOvB,GAAP;;;;AAID,GArFY;;AAuFbwB,EAAAA,aAvFa,2BAuFG;AACd,WAAOxB,GAAP;;;;;AAKD,GA7FY;;AA+FbyB,EAAAA,OA/Fa,mBA+FLnB,CA/FK,EA+FK;AAChB,WAAON,GAAP;AACYM,IAAAA,CAAC,CAACM,uBADd,EAC+CN,CAAC,CAACoB,8BADjD;AAEgCpB,IAAAA,CAAC,CAACoB,8BAFlC;;AAID,GApGY;;AAsGbC,EAAAA,KAtGa,iBAsGPrB,CAtGO,EAsGG;AACd,WAAON,GAAP;AACYM,IAAAA,CAAC,CAACM,uBADd,EAC+CN,CAAC,CAACsB,4BADjD;AAEgCtB,IAAAA,CAAC,CAACsB,4BAFlC;;AAID,GA3GY;;AA6GbC,EAAAA,QA7Ga,oBA6GJvB,CA7GI,EA6GM;AACjB,WAAON,GAAP;;AAEgBM,IAAAA,CAAC,CAACwB,sBAFlB;AAGYxB,IAAAA,CAAC,CAACM,uBAHd,EAG+CN,CAAC,CAACyB,+BAHjD;AAIWzB,IAAAA,CAAC,CAAC0B,6BAJb;;;AAOD,GArHY;;AAuHbC,EAAAA,IAvHa,gBAuHR3B,CAvHQ,EAuHE;AACb,WAAON,GAAP;;AAEeM,IAAAA,CAAC,CAAC4B,oBAFjB;AAGW5B,IAAAA,CAAC,CAAC6B,qBAHb;;AAKD,GA7HY;;AA+HbC,EAAAA,YA/Ha,wBA+HA9B,CA/HA,EA+HU;AACrB,WAAON,GAAP;AACWM,IAAAA,CAAC,CAAC+B,6BADb;;AAGD,GAnIY;;AAqIbC,EAAAA,IArIa,gBAqIRhC,CArIQ,EAqIE;AACb,WAAON,GAAP;;;;;AAKuBM,IAAAA,CAAC,CAACiC,uBALzB;;AAOWjC,IAAAA,CAAC,CAACkC,qBAPb;;AASD,GA/IY;;AAiJbC,EAAAA,YAjJa,wBAiJAnC,CAjJA,EAiJU;AACrB,WAAON,GAAP;AACWM,IAAAA,CAAC,CAACoC,6BADb;;;;;AAMD,GAxJY,EAAf;;;AA2JA,OAAO,IAAMC,QAAQ,GAAGzC,YAAY,CAACC,MAAD,CAA7B","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,6 @@
1
+ {
2
+ "main": "../../../cjs/components/FileUploader/FileUploader.styles.js",
3
+ "module": "FileUploader.styles",
4
+ "types": "../FileUploader.styles.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -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,3 @@
1
+ export { FileUploaderFileStatus } from "../../../internal/FileUploaderControl/fileUtils";
2
+ export { FileUploaderFileValidationResult } from "../../../internal/FileUploaderControl/FileUploaderFileValidationResult";
3
+ export * from "../FileUploader";
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.tsx"],"names":["FileUploaderFileStatus","FileUploaderFileValidationResult"],"mappings":"AAAA,SAASA,sBAAT,QAAuC,8CAAvC;;AAEA,SAASC,gCAAT,QAAiD,qEAAjD;AACA,cAAc,gBAAd","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"]}