@skbkontur/react-ui 6.0.4-46247.0 → 6.0.5

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 (100) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/components/FileUploader/FileUploader.d.ts +28 -30
  3. package/components/FileUploader/FileUploader.js.map +1 -1
  4. package/components/FileUploader/FileUploader.styles.d.ts +0 -1
  5. package/components/FileUploader/FileUploader.styles.js +4 -4
  6. package/components/FileUploader/FileUploader.styles.js.map +1 -1
  7. package/components/FileUploader/FileUploaderControlProvider.d.ts +4 -0
  8. package/components/FileUploader/FileUploaderControlProvider.js.map +1 -1
  9. package/components/FileUploader/FileUploaderFile.d.ts +19 -11
  10. package/components/FileUploader/FileUploaderFile.js +1 -1
  11. package/components/FileUploader/FileUploaderFile.js.map +1 -1
  12. package/components/Gapped/Gapped.d.ts +5 -3
  13. package/components/Gapped/Gapped.js +3 -1
  14. package/components/Gapped/Gapped.js.map +1 -1
  15. package/components/Group/Group.d.ts +2 -4
  16. package/components/Group/Group.js +1 -3
  17. package/components/Group/Group.js.map +1 -1
  18. package/components/Hint/Hint.d.ts +18 -23
  19. package/components/Hint/Hint.js +2 -6
  20. package/components/Hint/Hint.js.map +1 -1
  21. package/components/MenuItem/MenuItem.d.ts +1 -0
  22. package/components/MenuItem/MenuItem.js +6 -4
  23. package/components/MenuItem/MenuItem.js.map +1 -1
  24. package/components/MiniModal/MiniModal.d.ts +8 -2
  25. package/components/MiniModal/MiniModal.js +10 -4
  26. package/components/MiniModal/MiniModal.js.map +1 -1
  27. package/components/MiniModal/MiniModalBody.d.ts +1 -1
  28. package/components/MiniModal/MiniModalBody.js +1 -1
  29. package/components/MiniModal/MiniModalBody.js.map +1 -1
  30. package/components/MiniModal/MiniModalFooter.d.ts +1 -1
  31. package/components/MiniModal/MiniModalFooter.js +1 -1
  32. package/components/MiniModal/MiniModalFooter.js.map +1 -1
  33. package/components/MiniModal/MiniModalHeader.d.ts +1 -1
  34. package/components/MiniModal/MiniModalHeader.js +1 -1
  35. package/components/MiniModal/MiniModalHeader.js.map +1 -1
  36. package/components/MiniModal/MiniModalIndent.d.ts +2 -2
  37. package/components/MiniModal/MiniModalIndent.js +1 -1
  38. package/components/MiniModal/MiniModalIndent.js.map +1 -1
  39. package/components/Modal/ModalFooter.d.ts +1 -1
  40. package/components/Modal/ModalFooter.js.map +1 -1
  41. package/components/SidePage/SidePage.d.ts +19 -20
  42. package/components/SidePage/SidePage.js +5 -6
  43. package/components/SidePage/SidePage.js.map +1 -1
  44. package/components/SidePage/SidePageBody.d.ts +1 -1
  45. package/components/SidePage/SidePageBody.js +1 -1
  46. package/components/SidePage/SidePageBody.js.map +1 -1
  47. package/components/SidePage/SidePageContainer.d.ts +1 -1
  48. package/components/SidePage/SidePageContainer.js +1 -1
  49. package/components/SidePage/SidePageContainer.js.map +1 -1
  50. package/components/SidePage/SidePageFooter.d.ts +4 -4
  51. package/components/SidePage/SidePageFooter.js +1 -1
  52. package/components/SidePage/SidePageFooter.js.map +1 -1
  53. package/components/SidePage/SidePageHeader.d.ts +5 -4
  54. package/components/SidePage/SidePageHeader.js +1 -1
  55. package/components/SidePage/SidePageHeader.js.map +1 -1
  56. package/components/Sticky/Sticky.d.ts +8 -4
  57. package/components/Sticky/Sticky.js +5 -1
  58. package/components/Sticky/Sticky.js.map +1 -1
  59. package/components/Textarea/Textarea.js +1 -1
  60. package/components/Textarea/Textarea.js.map +1 -1
  61. package/components/Textarea/Textarea.mixins.d.ts +0 -1
  62. package/components/Textarea/Textarea.mixins.js +0 -3
  63. package/components/Textarea/Textarea.mixins.js.map +1 -1
  64. package/components/Textarea/Textarea.styles.d.ts +0 -3
  65. package/components/Textarea/Textarea.styles.js +5 -14
  66. package/components/Textarea/Textarea.styles.js.map +1 -1
  67. package/components/Textarea/TextareaCounter.d.ts +0 -2
  68. package/components/Textarea/TextareaCounter.js +11 -13
  69. package/components/Textarea/TextareaCounter.js.map +1 -1
  70. package/components/Tooltip/Tooltip.d.ts +32 -35
  71. package/components/Tooltip/Tooltip.js +13 -12
  72. package/components/Tooltip/Tooltip.js.map +1 -1
  73. package/internal/FocusTrap/FocusTrap.d.ts +0 -1
  74. package/internal/FocusTrap/FocusTrap.js +6 -6
  75. package/internal/FocusTrap/FocusTrap.js.map +1 -1
  76. package/internal/Popup/Popup.d.ts +1 -3
  77. package/internal/Popup/Popup.js +26 -55
  78. package/internal/Popup/Popup.js.map +1 -1
  79. package/internal/Popup/PopupHelper.d.ts +3 -5
  80. package/internal/Popup/PopupHelper.js +8 -14
  81. package/internal/Popup/PopupHelper.js.map +1 -1
  82. package/internal/RenderContainer/RenderContainer.d.ts +0 -8
  83. package/internal/RenderContainer/RenderContainer.js +4 -83
  84. package/internal/RenderContainer/RenderContainer.js.map +1 -1
  85. package/internal/RenderLayer/RenderLayer.d.ts +1 -2
  86. package/internal/RenderLayer/RenderLayer.js +7 -5
  87. package/internal/RenderLayer/RenderLayer.js.map +1 -1
  88. package/lib/listenFocusOutside.d.ts +1 -3
  89. package/lib/listenFocusOutside.js +2 -19
  90. package/lib/listenFocusOutside.js.map +1 -1
  91. package/lib/renderEnvironment/RenderEnvironmentContext.d.ts +0 -16
  92. package/lib/renderEnvironment/RenderEnvironmentContext.js +10 -10
  93. package/lib/renderEnvironment/RenderEnvironmentContext.js.map +1 -1
  94. package/lib/theming/Emotion.d.ts +1 -17
  95. package/lib/theming/Emotion.js +5 -16
  96. package/lib/theming/Emotion.js.map +1 -1
  97. package/package.json +1 -1
  98. package/lib/shadowDom/isShadowRoot.d.ts +0 -6
  99. package/lib/shadowDom/isShadowRoot.js +0 -17
  100. package/lib/shadowDom/isShadowRoot.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,30 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [6.0.5](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@6.0.4...@skbkontur/react-ui@6.0.5) (2026-05-13)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **FileUploader:** restore drag and drop animation ([c9c411e](https://github.com/skbkontur/retail-ui/commit/c9c411eb27f8f34772c3e2fd54411bae87c63462))
12
+
13
+
14
+
15
+
16
+
17
+ ## [6.0.4](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@6.0.3...@skbkontur/react-ui@6.0.4) (2026-05-07)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **menuItem:** listen size context ([50a92c7](https://github.com/skbkontur/retail-ui/commit/50a92c7c2f55bfe3bd8231d8bdb309f4be07f8eb))
23
+ * **MiniModal:** fix mini modal default width behavior ([8f42d41](https://github.com/skbkontur/retail-ui/commit/8f42d41f72d1788037f76a07401bb6dcea7b712a))
24
+ * **textarea:** position counter by computed paddings ([3f4dcfb](https://github.com/skbkontur/retail-ui/commit/3f4dcfbebb1be1bbf0de968c9770ad025f0c2fd5))
25
+
26
+
27
+
28
+
29
+
6
30
  ## [6.0.3](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@6.0.2...@skbkontur/react-ui@6.0.3) (2026-04-27)
7
31
 
8
32
 
@@ -14,78 +14,76 @@ interface _FileUploaderProps extends CommonProps, Omit<React.InputHTMLAttributes
14
14
  /** Состояние ошибки всего контрола */
15
15
  error?: boolean;
16
16
  /** Переводит контрол в состояние валидации "предупреждение" */
17
+ /** Состояние предупреждения всего контрола */
17
18
  warning?: boolean;
18
- /** Задает приоритетное расположение подсказки относительно контрола
19
+ /** Расположение тултипа с текстом валидации файла.
19
20
  * @default 'top left' */
20
21
  validationTooltipPosition?: ShortPopupPositionsType | PopupPositionsType;
21
- /** Использовать тултип для отображения валидации
22
+ /** Включает отображение текста валидации файла во всплывающей подсказке вместо строки рядом с именем.
22
23
  * @default false */
23
24
  withValidationTooltip?: boolean;
24
- /** Использовать иконку для ворнинга (восклицательный знак)
25
+ /** Включает отображение иконки предупреждения (восклицательный знак) при статусе предупреждения у файла.
25
26
  * @default false */
26
27
  withWarningIcon?: boolean;
27
- /** Задает длину компонента. */
28
+ /** Ширина контрола. */
28
29
  width?: React.CSSProperties['width'];
29
- /** Задаёт размер контрола.
30
+ /** Размер контрола и вложенных элементов.
30
31
  * @default small */
31
32
  size?: SizeProp;
32
- /** Скрывает отображение файлов.
33
+ /** Скрывает встроенный список файлов.
33
34
  * @default false */
34
35
  hideFiles?: boolean;
35
- /** Пользовательский текст для загрузки файла
36
- * @default 'Загрузить файл'
36
+ /** Текст ссылки выбора файла.
37
+ * @default "Выберите файл"
37
38
  */
38
39
  uploaderText?: string;
39
- /** Пользовательская иконка для загрузки файла
40
- * @default UploadIcon
40
+ /** Иконка в кнопке загрузки.
41
41
  */
42
42
  uploaderIcon?: React.ReactNode;
43
- /** Вид компонента
44
- * - `row` — строчный вид
45
- * - `tile` — плиточный вид
43
+ /** Режим отображения списка файлов: строка (`row`) или плитка (`tile`).
46
44
  * @default row
47
45
  */
48
46
  view?: FileUploaderView;
49
- /** Отображать ли саммари с детализацией ошибок. Работает с версией темы >= 5_5.
50
- * - `auto` — саммари отображается, если количество загруженных файлов >= validationSummaryStart
51
- * - `enabled` — всегда включено
52
- * - `disabled` — всегда отключено
47
+ /** Режим блока-саммари по ошибкам и предупреждениям:
48
+ * - `auto` — от порога `validationSummaryStart`,
49
+ * - `enabled` / `disabled` — всегда или никогда.
53
50
  * @default auto
54
51
  */
55
52
  validationSummary?: FileUploaderValidationSummary;
56
- /** Количество файлов, от которого показываем саммари (при validationSummary = `auto`)
53
+ /** Порог числа файлов для показа саммари при `validationSummary="auto"`.
57
54
  * @default 5 */
58
55
  validationSummaryStart?: number;
59
- /** Позиционирование области загрузки файла
56
+ /** Расположение кнопки загрузки относительно списка: в начале или в конце.
60
57
  * @default start */
61
58
  uploadButtonPosition?: FileUploaderUploadButtonPosition;
62
- /** Задает функцию, через которую отправляются файлы. Используется для отслеживания статуса загрузки файла.
63
- * @param {FileUploaderAttachedFile} file - файл, статус загрузки которого необходимо отследить. */
59
+ /** Включает асинхронный режим загрузки файлов.
60
+ * Отклонённый промис помечает файл(ы) ошибкой загрузки.
61
+ */
64
62
  request?: (file: FileUploaderAttachedFile) => Promise<void>;
65
- /** Задает функцию, которая вызывается при удачной попытке отправки через request. */
63
+ /** Колбэк после успешного завершения `request` для файла. */
66
64
  onRequestSuccess?: (fileId: string) => void;
67
- /** Задает функцию, которая вызывается при неудачной попытке отправки через request. */
65
+ /** Колбэк после ошибки `request` для файла. */
68
66
  onRequestError?: (fileId: string) => void;
69
- /** Определяет функцию валидации каждого файла. Срабатывает после выбора файлов и перед попыткой отправить в request.
70
- * Чтобы вывести валидацию ошибки, промис должен вернуть строку или объект с ошибкой.
71
- * @returns {Promise<Nullable<string | { message: string; status: FileUploaderFileStatus }>>} */
67
+ /** Проверка файла после выбора и до `request`: строка или `{ message, status }` ошибка/предупреждение. Пустой результат — файл проходит.
68
+ */
72
69
  validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string | {
73
70
  message: string;
74
71
  status: FileUploaderFileStatus;
75
72
  }>>;
76
73
  /**
77
- * Задает функцию, которая позволяет кастомизировать файлы. Через нее можно вешать кастомные валидации на каждый файл.
74
+ * Задаёт метод отрисовки файлов.
78
75
  * @default (props: FileUploaderFileProps) => <FileUploaderFile {...props} />
79
- * @param {FileUploaderFileProps} props - пропсы компонента `FileUploaderFile`, смотри примеры использования в документации.
80
- * @returns {ReactNode} элемент, который отрисовывает контент файла.
81
76
  */
82
77
  renderFile?: (props: FileUploaderFileProps) => React.ReactNode;
83
78
  }
84
79
  export interface FileUploaderRef extends InstanceWithRootNode {
80
+ /** Устанавливает фокус на скрытом `input` выбора файла. */
85
81
  focus: () => void;
82
+ /** Снимает фокус с `input` выбора файла. */
86
83
  blur: () => void;
87
- /** Сбрасывает выбранные файлы */
84
+ /** Очищает список файлов и значения `input`. */
88
85
  reset: () => void;
86
+ /** Удаляет файл по id с вызовом `onRemove` и `onValueChange`. */
89
87
  removeFile: (fileId: string) => void;
90
88
  }
91
89
  export type FileUploader = FileUploaderRef;
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploader.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEzG,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAExF,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAGjE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACvG,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAOzF,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAEvF,IAAM,eAAe,GAA4B,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,eAAe,EAAE,EAAnB,CAAmB,CAAC;AAyG5E,MAAM,CAAC,IAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,uBAAuB;IAChC,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE,qBAAqB;CACpB,CAAC;AAEX,IAAM,iBAAiB,GAAG,UAAC,KAA4B,IAAK,OAAA,oBAAC,gBAAgB,eAAK,KAAK,EAAI,EAA/B,CAA+B,CAAC;AAE5F,IAAM,aAAa,GAAG,iBAAiB,CAAsC,cAAc,EAAE,UAAC,KAAK,EAAE,GAAG;;;IACtG,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACvC,IAAM,YAAY,GAAG,SAAS,EAAE,CAAC;IACzB,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,IAAM,WAAW,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IAChD,IAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAGnC,IAAA,QAAQ,GAyBN,KAAK,SAzBC,EACR,KAAK,GAwBH,KAAK,MAxBF,EACL,OAAO,GAuBL,KAAK,QAvBA,EACP,KAsBE,KAAK,sBAtBsB,EAA7B,qBAAqB,mBAAG,KAAK,KAAA,EAC7B,yBAAyB,GAqBvB,KAAK,0BArBkB,EACzB,KAoBE,KAAK,gBApBgB,EAAvB,eAAe,mBAAG,KAAK,KAAA,EACvB,KAmBE,KAAK,SAnBS,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAChB,YAAY,GAkBV,KAAK,aAlBK,EACZ,YAAY,GAiBV,KAAK,aAjBK,EACZ,KAgBE,KAAK,KAhBK,EAAZ,IAAI,mBAAG,KAAK,KAAA,EACZ,KAeE,KAAK,qBAfuB,EAA9B,oBAAoB,mBAAG,OAAO,KAAA,EAC9B,KAcE,KAAK,kBAdmB,EAA1B,iBAAiB,mBAAG,MAAM,KAAA,EAC1B,KAaE,KAAK,uBAbmB,EAA1B,sBAAsB,mBAAG,CAAC,KAAA,EAC1B,KAYE,KAAK,MAZwB,EAA/B,KAAK,mBAAG,KAAK,CAAC,iBAAiB,KAAA,EAC/B,KAWE,KAAK,UAXU,EAAjB,SAAS,mBAAG,KAAK,KAAA,EACjB,MAAM,GAUJ,KAAK,OAVD,EACN,OAAO,GASL,KAAK,QATA,EACP,QAAQ,GAQN,KAAK,SARC,EACR,OAAO,GAOL,KAAK,QAPA,EACP,oBAAoB,GAMlB,KAAK,qBANa,EACpB,gBAAgB,GAKd,KAAK,iBALS,EAChB,cAAc,GAIZ,KAAK,eAJO,EACR,QAAQ,GAGZ,KAAK,KAHO,EACd,KAEE,KAAK,WAFuB,EAA9B,UAAU,mBAAG,iBAAiB,KAAA,EAC3B,UAAU,UACX,KAAK,EA1BH,0XA0BL,CADc,CACL;IACV,IAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEhC,IAAA,KAAkE,UAAU,CAAC,0BAA0B,CAAC,EAAtG,KAAK,WAAA,EAAE,QAAQ,cAAA,EAAE,UAAU,gBAAA,EAAE,KAAK,WAAA,EAAE,uBAAuB,6BAA2C,CAAC;IAE/G,IAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAElC,IAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAChD,IAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEhD,IAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;IAC1B,IAAM,YAAY,GAAG,CAAC,QAAQ,CAAC;IAEzB,IAAA,KAAwB,QAAQ,CAAC,KAAK,CAAC,EAAtC,OAAO,QAAA,EAAE,UAAU,QAAmB,CAAC;IAC9C,IAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;IAEpE,IAAM,oBAAoB,GAAG,WAAW,CACtC,UAAC,KAAiC;QAChC,KAAK,CAAC,OAAO,CAAC,UAAO,IAAI;;;;;wBACG,KAAA,oBAAoB,CAAA;iCAApB,wBAAoB;wBAAK,qBAAM,oBAAoB,CAAC,IAAI,CAAC,EAAA;;wBAAjC,KAAA,CAAC,SAAgC,CAAC,CAAA;;;wBAA9E,iBAAiB,KAA6D;wBAEpF,IAAI,CAAC,iBAAiB,EAAE,CAAC;4BACvB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC1B,CAAC;6BAAM,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;4BACjD,uBAAuB,CACrB,IAAI,CAAC,EAAE,EACP,gCAAgC,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,EACjE,iBAAiB,CAAC,MAAM,CACzB,CAAC;wBACJ,CAAC;6BAAM,CAAC;4BACN,uBAAuB,CACrB,IAAI,CAAC,EAAE,EACP,gCAAgC,CAAC,KAAK,CAAC,iBAAiB,CAAC,EACzD,sBAAsB,CAAC,KAAK,CAC7B,CAAC;wBACJ,CAAC;;;;aACF,CAAC,CAAC;IACL,CAAC,EACD,CAAC,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,uBAAuB,CAAC,CACjE,CAAC;IAEF,IAAM,UAAU,GAAG,IAAI,KAAK,MAAM,CAAC;IACnC,IAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;IAE7D,IAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,EAAE;QAC9C,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC;QACpC,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;QACtC,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC;KACrC,CAAC,CAAC;IAEH,IAAM,iCAAiC,GAAG,mBAAmB,CAAC,IAAI,EAAE;QAClE,KAAK,EAAE,YAAY,CAAC,6BAA6B,CAAC,KAAK,CAAC;QACxD,MAAM,EAAE,YAAY,CAAC,8BAA8B,CAAC,KAAK,CAAC;QAC1D,KAAK,EAAE,YAAY,CAAC,6BAA6B,CAAC,KAAK,CAAC;KACzD,CAAC,CAAC;IAEH,IAAM,wBAAwB,GAAG,mBAAmB,CAAC,IAAI,EAAE;QACzD,KAAK,EAAE,YAAY,CAAC,wBAAwB,CAAC,KAAK,CAAC;QACnD,MAAM,EAAE,YAAY,CAAC,yBAAyB,CAAC,KAAK,CAAC;QACrD,KAAK,EAAE,YAAY,CAAC,wBAAwB,CAAC,KAAK,CAAC;KACpD,CAAC,CAAC;IAEH,IAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,EAAE;QAC9C,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;QAChC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;QAClC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;KACjC,CAAC,CAAC;IAEH,IAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,EAAE;QACjD,KAAK,EAAE,YAAY,CAAC,wBAAwB,CAAC,KAAK,CAAC;QACnD,MAAM,EAAE,YAAY,CAAC,yBAAyB,CAAC,KAAK,CAAC;QACrD,KAAK,EAAE,YAAY,CAAC,wBAAwB,CAAC,KAAK,CAAC;KACpD,CAAC,CAAC;IAEH,IAAM,yBAAyB,GAAG,mBAAmB,CAAC,IAAI,EAAE;QAC1D,KAAK,EAAE,YAAY,CAAC,iCAAiC,CAAC,KAAK,CAAC;QAC5D,MAAM,EAAE,YAAY,CAAC,kCAAkC,CAAC,KAAK,CAAC;QAC9D,KAAK,EAAE,YAAY,CAAC,iCAAiC,CAAC,KAAK,CAAC;KAC7D,CAAC,CAAC;IAEH,IAAM,iBAAiB,GAAG,mBAAmB,CAAC,IAAI,EAAE;QAClD,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC;QACxC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAC1C,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC;KACzC,CAAC,CAAC;IAEH,mBAAmB;IACnB,IAAM,YAAY,GAAG,WAAW,CAC9B,UAAC,QAAyB;QACxB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtC,IAAI,YAAY,EAAE,CAAC;YACjB,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,IAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAEtD,IAAI,YAAY,IAAI,aAAa,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACzD,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;YACzB,QAAQ,CAAC,aAAa,CAAC,CAAC;YACxB,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,EACD,CAAC,oBAAoB,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,CAAC,CAClE,CAAC;IAEF,IAAM,UAAU,GAAG,WAAW,CAC5B,UAAC,KAAgB;;QACf,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAEO,IAAA,YAAY,GAAK,KAAK,aAAV,CAAW;QAC/B,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,YAAY,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;gBACjC,OAAO;YACT,CAAC;YACD,IAAI,CAAA,MAAA,YAAY,CAAC,KAAK,0CAAE,MAAM,IAAG,CAAC,EAAE,CAAC;gBACnC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;gBAClE,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC,EACD,CAAC,YAAY,EAAE,QAAQ,CAAC,CACzB,CAAC;IAEI,IAAA,KAAiC,OAAO,CAAmB,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAhF,WAAW,iBAAA,EAAO,QAAQ,SAAsD,CAAC;IACnF,IAAA,KAAqD,OAAO,EAAY,EAAzD,iBAAiB,iBAAA,EAAO,SAAS,SAAwB,CAAC;IAE/E,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC;IAC5C,CAAC;IAED,IAAM,KAAK,GAAG,WAAW,CAAC;;QACxB,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC;QAChC,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;IAC5B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,IAAI,GAAG,WAAW,CAAC;;QACvB,MAAA,QAAQ,CAAC,OAAO,0CAAE,IAAI,EAAE,CAAC;IAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,yBAAyB,GAAG,WAAW,CAC3C,UAAC,MAAc;QACb,IAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACxC,KAAK;aACF,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,EAAE,KAAK,MAAM,EAAf,CAAe,CAAC;aAC9B,OAAO,CAAC,UAAC,IAAI;YACZ,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACL,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC,EACD,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,IAAM,gBAAgB,GAAG,WAAW,CAClC,UAAC,MAAc;QACb,UAAU,CAAC,MAAM,CAAC,CAAC;QACnB,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,EACD,CAAC,yBAAyB,EAAE,UAAU,CAAC,CACxC,CAAC;IAEF,IAAM,WAAW,GAAG,WAAW,CAAC;QAC9B,KAAK,EAAE,CAAC;QACR,IAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACxC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE9B,mBAAmB,CACjB,GAAG,EACH,cAAM,OAAA,CAAC;QACL,KAAK,OAAA;QACL,IAAI,MAAA;QACJ,KAAK,EAAE,WAAW;QAClB,UAAU,EAAE,gBAAgB;QAC5B,WAAW,EAAE,cAAM,OAAA,WAAW,CAAC,OAAO,EAAnB,CAAmB;KACvC,CAAC,EANI,CAMJ,EACF,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAClD,CAAC;IAEI,IAAA,KAAkC,QAAQ,CAAC,KAAK,CAAC,EAAhD,YAAY,QAAA,EAAE,eAAe,QAAmB,CAAC;IACxD,IAAM,iBAAiB,GAAG,UAAC,KAA0C;QACnE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,KAAK,CAAC,CAAC;QAClB,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,UAAU,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG,UAAC,CAAqC;;QACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,iDAAiD;YACjD,6CAA6C;YAC7C,MAAA,YAAY,CAAC,qBAAqB,6DAAG;gBACnC,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;oBAC7B,eAAe,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,CAAC,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG,UAAC,CAAqC;QACvD,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,CAAC,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,IAAM,UAAU,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACtC,IAAM,mBAAmB,GAAG,YAAY,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC;IAErE,IAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,CAAA,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,MAAM,MAAK,sBAAsB,CAAC,KAAK,CAAC;IAC9E,IAAM,UAAU,GAAG,CAAC,CAAC,OAAO,IAAI,CAAA,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,MAAM,MAAK,sBAAsB,CAAC,OAAO,CAAC;IAEpF,IAAM,sBAAsB,GAAG,EAAE,CAC/B,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,EAC5B,YAAY,CAAC,YAAY,EAAE,EAC3B,aAAa,EACb,mBAAmB,IAAI,YAAY,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAC/D,YAAY,IAAI,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,EACjD,QAAQ;QACN,GAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAG,IAAI;QAChC,GAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAG,CAAC,QAAQ;WAChD,EACD,CAAC,YAAY,IAAI,CAAC,mBAAmB,CAAC;QACpC,GAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,IAAG,UAAU;QAC3C,GAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAG,QAAQ;WACxC,EACD,mBAAmB;QACjB,GAAC,iCAAiC,IAAG,UAAU;QAC/C,GAAC,YAAY,CAAC,aAAa,EAAE,IAAG,UAAU;QAC1C,GAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,UAAU;QACrE,GAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,QAAQ;WAClE,EACD,CAAC,QAAQ;QACP,OAAO;QACL,GAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAG,IAAI;WAChC,EACH,WAAW,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CACrD,CAAC;IAEF,IAAM,OAAO,GAAG,iBAAiB,IAAI,CAAC,QAAQ,CAAC;IAC/C,IAAM,6BAA6B,GAAG,EAAE,CACtC,UAAU;QACR,GAAC,gBAAgB,IAAG,IAAI;QACxB,GAAC,yBAAyB,IAAG,CAAC,mBAAmB;WAClD,EACD,YAAY,CAAC,mBAAmB,EAAE,EAClC,OAAO,IAAI,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAC1C,CAAC;IAEF,IAAM,0BAA0B,GAAG,EAAE,CACnC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EACpB,aAAa,EACb,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,EACxC,wBAAwB,CACzB,CAAC;IAEF,IAAM,cAAc,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAEnF,IAAM,iBAAiB,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE;QACjD,GAAC,YAAY,CAAC,gBAAgB,EAAE,IAAG,mBAAmB;QACtD,GAAC,iBAAiB,IAAG,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC;YACpE,CAAC;IAEH,IAAM,uBAAuB,GAAG,EAAE,CAChC,aAAa,CAAC,aAAa,EAC3B,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CACnF,CAAC;IAEF,IAAM,cAAc,GAAG,EAAE,CACvB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EACpB,CAAC,QAAQ,IAAI,OAAO,IAAI,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,EACnD,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CACzC,CAAC;IAEF,SAAS,CAAC;QACR,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QAED,IAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACxC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EAAzC,CAAyC,CAAC,CAAC;QACnE,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;IAC9C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAEjC,IAAM,IAAI,GAAG,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,oBAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC;IACpE,IAAM,cAAc,GAAG,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,MAAM,CAAC,UAAU,CAAC;IACzD,IAAM,gBAAgB,GAAG,UAAG,cAAc,SAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAE,CAAC,CAAC,YAAY;IACtF,IAAM,gBAAgB,GAAG,UAAU,IAAI,YAAY,KAAK,EAAE,CAAC;IAC3D,IAAM,oBAAoB,GAAG;QAC3B,OAAA,CAAC,gBAAgB,IAAI,CACnB,0CAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,IACjE,CAAC,mBAAmB,IAAI,gBAAgB,CACpC,CACR;IAJD,CAIC,CAAC;IAEJ,IAAM,cAAc,GAAG;QACrB,OAAO,CACL,CAAC,SAAS;YACV,CAAC,YAAY;YACb,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAChB,oBAAC,oBAAoB,IACnB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,gBAAgB,EAC1B,yBAAyB,EAAE,yBAAyB,EACpD,qBAAqB,EAAE,qBAAqB,EAC5C,iBAAiB,EAAE,iBAAiB,EACpC,sBAAsB,EAAE,sBAAsB,EAC9C,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,QAAQ,GAClB,CACH,CACF,CAAC;IACJ,CAAC,CAAC;IAEF,IAAM,SAAS,GAA0B;QACvC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACd,IAAI,MAAA;QACJ,IAAI,MAAA;QACJ,QAAQ,EAAE,gBAAgB;QAC1B,KAAK,OAAA;QACL,OAAO,SAAA;QACP,qBAAqB,uBAAA;QACrB,yBAAyB,2BAAA;QACzB,eAAe,iBAAA;QACf,OAAO,SAAA;QACP,QAAQ,UAAA;KACT,CAAC;IAEF,IAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAE1C,OAAO,CACL,oBAAC,aAAa,eAAK,KAAK;QACtB,yCACY,oBAAoB,CAAC,IAAI,EACnC,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,aAAa,CAAC,EAAE,KAAK,EAAE,UAAU,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAC9F,GAAG,EAAE,WAAW;YAEf,oBAAoB,KAAK,KAAK,IAAI,cAAc,EAAE;YACnD,6BAAK,SAAS,EAAE,6BAA6B;gBAC3C,+BACE,YAAY,EAAE,cAAM,OAAA,UAAU,CAAC,IAAI,CAAC,EAAhB,CAAgB,EACpC,YAAY,EAAE,cAAM,OAAA,UAAU,CAAC,KAAK,CAAC,EAAjB,CAAiB,EACrC,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,sBAAsB;oBAEhC,CAAC,mBAAmB,IAAI,6BAAK,SAAS,EAAE,0BAA0B,IAAG,IAAI,CAAO;oBACjF,yCAAe,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,iBAAiB;wBACtE,oBAAoB,EAAE;wBACvB,6BAAK,SAAS,EAAE,uBAAuB,IACpC,mBAAmB,IAAI,CACtB,6BAAK,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,UAAU,EAAE,IACnD,WAAW,CACR,CACP,CACG,CACF;oBACN,oBAAC,mBAAmB,IAAC,kBAAkB,EAAE,cAAM,OAAA,eAAe,CAAC,KAAK,CAAC,EAAtB,CAAsB;wBACnE,0CACM,UAAU,gBACJ,oBAAoB,CAAC,KAAK,EACpC,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC3B,IAAI,EAAC,MAAM,EACX,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,QAAQ,CAAC,cAAc,EAAE,EACpC,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,IAClB,CACkB,CAChB,CACJ;YACL,oBAAoB,KAAK,OAAO,IAAI,cAAc,EAAE,CACjD,CACQ,CACjB,CAAC;AACJ,CAAC,CAAC,CAAC;AAIH;;;;GAIG;AACH,MAAM,CAAC,IAAM,YAAY,GAAG,+BAA+B,CACzD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAC1B,CAAC;AAEF,YAAY,CAAC,WAAW,GAAG,cAAc,CAAC","sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\n\nimport { useDrop } from '../../hooks/useDrop.js';\nimport { useMemoObject } from '../../hooks/useMemoObject.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\nimport type { PopupPositionsType, ShortPopupPositionsType } from '../../internal/Popup/index.js';\nimport { useKeyListener } from '../../lib/events/keyListener.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport { useEmotion, useGlobal, useStyles } from '../../lib/renderEnvironment/index.js';\nimport type { InstanceWithRootNode } from '../../lib/rootNode/index.js';\nimport { useSizeControl } from '../../lib/size/useSizeControl.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getJsRowStyles, getJsStyles, getJsTileStyles, globalClasses } from './FileUploader.styles.js';\nimport { FileUploaderControlContext } from './FileUploaderControlContext.js';\nimport type { FileUploaderControlProviderProps } from './FileUploaderControlProvider.js';\nimport { FileUploaderFile } from './FileUploaderFile.js';\nimport type { FileUploaderFileProps } from './FileUploaderFile.js';\nimport { FileUploaderFileList } from './FileUploaderFileList/FileUploaderFileList.js';\nimport { FileUploaderFileValidationResult } from './FileUploaderFileValidationResult.js';\nimport type {\n FileUploaderAttachedFile,\n FileUploaderUploadButtonPosition,\n FileUploaderValidationSummary,\n FileUploaderView,\n} from './fileUtils.js';\nimport { FileUploaderFileStatus, getAttachedFile } from './fileUtils.js';\nimport { useControlLocale } from './hooks/useControlLocale.js';\nimport { useFileUploaderSize } from './hooks/useFileUploaderSize.js';\nimport { useUpload } from './hooks/useUpload.js';\nimport { UploadIcon } from './icons/UploadIcon.js';\nimport { withFileUploaderControlProvider } from './withFileUploaderControlProvider.js';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps, Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Переводит контрол в состояние валидации \"ошибка\". */\n /** Состояние ошибки всего контрола */\n error?: boolean;\n\n /** Переводит контрол в состояние валидации \"предупреждение\" */\n warning?: boolean;\n\n /** Задает приоритетное расположение подсказки относительно контрола\n * @default 'top left' */\n validationTooltipPosition?: ShortPopupPositionsType | PopupPositionsType;\n\n /** Использовать тултип для отображения валидации\n * @default false */\n withValidationTooltip?: boolean;\n\n /** Использовать иконку для ворнинга (восклицательный знак)\n * @default false */\n withWarningIcon?: boolean;\n\n /** Задает длину компонента. */\n width?: React.CSSProperties['width'];\n\n /** Задаёт размер контрола.\n * @default small */\n size?: SizeProp;\n\n /** Скрывает отображение файлов.\n * @default false */\n hideFiles?: boolean;\n\n /** Пользовательский текст для загрузки файла\n * @default 'Загрузить файл'\n */\n uploaderText?: string;\n\n /** Пользовательская иконка для загрузки файла\n * @default UploadIcon\n */\n uploaderIcon?: React.ReactNode;\n\n /** Вид компонента\n * - `row` — строчный вид\n * - `tile` — плиточный вид\n * @default row\n */\n view?: FileUploaderView;\n\n /** Отображать ли саммари с детализацией ошибок. Работает с версией темы >= 5_5.\n * - `auto` — саммари отображается, если количество загруженных файлов >= validationSummaryStart\n * - `enabled` — всегда включено\n * - `disabled` — всегда отключено\n * @default auto\n */\n validationSummary?: FileUploaderValidationSummary;\n\n /** Количество файлов, от которого показываем саммари (при validationSummary = `auto`)\n * @default 5 */\n validationSummaryStart?: number;\n\n /** Позиционирование области загрузки файла\n * @default start */\n uploadButtonPosition?: FileUploaderUploadButtonPosition;\n\n /** Задает функцию, через которую отправляются файлы. Используется для отслеживания статуса загрузки файла.\n * @param {FileUploaderAttachedFile} file - файл, статус загрузки которого необходимо отследить. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n\n /** Задает функцию, которая вызывается при удачной попытке отправки через request. */\n onRequestSuccess?: (fileId: string) => void;\n\n /** Задает функцию, которая вызывается при неудачной попытке отправки через request. */\n onRequestError?: (fileId: string) => void;\n\n /** Определяет функцию валидации каждого файла. Срабатывает после выбора файлов и перед попыткой отправить в request.\n * Чтобы вывести валидацию ошибки, промис должен вернуть строку или объект с ошибкой.\n * @returns {Promise<Nullable<string | { message: string; status: FileUploaderFileStatus }>>} */\n validateBeforeUpload?: (\n file: FileUploaderAttachedFile,\n ) => Promise<Nullable<string | { message: string; status: FileUploaderFileStatus }>>;\n\n /**\n * Задает функцию, которая позволяет кастомизировать файлы. Через нее можно вешать кастомные валидации на каждый файл.\n * @default (props: FileUploaderFileProps) => <FileUploaderFile {...props} />\n * @param {FileUploaderFileProps} props - пропсы компонента `FileUploaderFile`, смотри примеры использования в документации.\n * @returns {ReactNode} элемент, который отрисовывает контент файла.\n */\n renderFile?: (props: FileUploaderFileProps) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n removeFile: (fileId: string) => void;\n}\n\nexport type FileUploader = FileUploaderRef;\n\nexport const FileUploaderDataTids = {\n root: 'FileUploader__root',\n content: 'FileUploader__content',\n link: 'FileUploader__link',\n input: 'FileUploader__input',\n} as const;\n\nconst defaultRenderFile = (props: FileUploaderFileProps) => <FileUploaderFile {...props} />;\n\nconst _FileUploader = forwardRefAndName<FileUploaderRef, _FileUploaderProps>('FileUploader', (props, ref) => {\n const theme = useContext(ThemeContext);\n const globalObject = useGlobal();\n const { cx } = useEmotion();\n const jsStyles = useStyles(getJsStyles);\n const jsRowStyles = useStyles(getJsRowStyles);\n const jsTileStyles = useStyles(getJsTileStyles);\n const keyListener = useKeyListener();\n\n const {\n disabled,\n error,\n warning,\n withValidationTooltip = false,\n validationTooltipPosition,\n withWarningIcon = false,\n multiple = false,\n uploaderText,\n uploaderIcon,\n view = 'row',\n uploadButtonPosition = 'start',\n validationSummary = 'auto',\n validationSummaryStart = 5,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size: sizeProp,\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n const size = useSizeControl(sizeProp);\n\n const { files, setFiles, removeFile, reset, setFileValidationResult } = useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const fileDivRef = useRef<HTMLDivElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const [hovered, setHovered] = useState(false);\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else if (typeof validationMessage === 'object') {\n setFileValidationResult(\n file.id,\n FileUploaderFileValidationResult.error(validationMessage.message),\n validationMessage.status,\n );\n } else {\n setFileValidationResult(\n file.id,\n FileUploaderFileValidationResult.error(validationMessage),\n FileUploaderFileStatus.Error,\n );\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const isTileView = view === 'tile';\n const jsViewStyles = isTileView ? jsTileStyles : jsRowStyles;\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsViewStyles.sizeSmall(theme),\n medium: jsViewStyles.sizeMedium(theme),\n large: jsViewStyles.sizeLarge(theme),\n });\n\n const uploadButtonTileWithFileClassName = useFileUploaderSize(size, {\n small: jsTileStyles.uploadButtonTileWithFileSmall(theme),\n medium: jsTileStyles.uploadButtonTileWithFileMedium(theme),\n large: jsTileStyles.uploadButtonTileWithFileLarge(theme),\n });\n\n const uploadButtonIconGapClass = useFileUploaderSize(size, {\n small: jsViewStyles.uploadButtonIconGapSmall(theme),\n medium: jsViewStyles.uploadButtonIconGapMedium(theme),\n large: jsViewStyles.uploadButtonIconGapLarge(theme),\n });\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(theme),\n medium: jsStyles.iconMedium(theme),\n large: jsStyles.iconLarge(theme),\n });\n\n const sizeWrapperClass = useFileUploaderSize(size, {\n small: jsTileStyles.uploadButtonWrapperSmall(theme),\n medium: jsTileStyles.uploadButtonWrapperMedium(theme),\n large: jsTileStyles.uploadButtonWrapperLarge(theme),\n });\n\n const sizeWrapperEmptyFileClass = useFileUploaderSize(size, {\n small: jsTileStyles.uploadButtonWrapperEmptyFileSmall(theme),\n medium: jsTileStyles.uploadButtonWrapperEmptyFileMedium(theme),\n large: jsTileStyles.uploadButtonWrapperEmptyFileLarge(theme),\n });\n\n const contentInnerClass = useFileUploaderSize(size, {\n small: jsStyles.contentInnerSmall(theme),\n medium: jsStyles.contentInnerMedium(theme),\n large: jsStyles.contentInnerLarge(theme),\n });\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles || !newFiles.length) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n if (dataTransfer) {\n if (isSingleMode && dataTransfer.files.length > 1) {\n dataTransfer.dropEffect = 'none';\n return;\n }\n if (dataTransfer.files?.length > 0) {\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n handleChange(dataTransfer.files);\n }\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(globalObject)) {\n windowRef.current = globalObject.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 const removeFileFromNativeInput = useCallback(\n (fileId: string) => {\n const dataTransfer = new DataTransfer();\n files\n .filter((f) => f.id !== fileId)\n .forEach((file) => {\n dataTransfer.items.add(file.originalFile);\n });\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n },\n [files],\n );\n\n const handleRemoveFile = useCallback(\n (fileId: string) => {\n removeFile(fileId);\n removeFileFromNativeInput(fileId);\n },\n [removeFileFromNativeInput, removeFile],\n );\n\n const handleReset = useCallback(() => {\n reset();\n const dataTransfer = new DataTransfer();\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n }, [reset, handleRemoveFile]);\n\n useImperativeHandle(\n ref,\n () => ({\n focus,\n blur,\n reset: handleReset,\n removeFile: handleRemoveFile,\n getRootNode: () => rootNodeRef.current,\n }),\n [ref, blur, focus, handleReset, handleRemoveFile],\n );\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n setHovered(false);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const hasFiles = files.length > 0;\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const hasError = !!error || files[0]?.status === FileUploaderFileStatus.Error;\n const hasWarning = !!warning || files[0]?.status === FileUploaderFileStatus.Warning;\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n jsViewStyles.uploadButton(),\n sizeClassName,\n hasOneFileForSingle && jsViewStyles.uploadButtonWithFile(theme),\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && {\n [jsStyles.disabled(theme)]: true,\n [jsStyles.disabledBackground(theme)]: !hasFiles,\n },\n (focusedByTab || !hasOneFileForSingle) && {\n [jsStyles.warningButton(theme)]: hasWarning,\n [jsStyles.errorButton(theme)]: hasError,\n },\n hasOneFileForSingle && {\n [uploadButtonTileWithFileClassName]: isTileView,\n [jsTileStyles.verticalAlign()]: isTileView,\n [jsStyles.warningFile(theme)]: (!isTileView || hovered) && hasWarning,\n [jsStyles.errorFile(theme)]: (!isTileView || hovered) && hasError,\n },\n !disabled &&\n hovered && {\n [jsStyles.hovered(theme)]: true,\n },\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(\n isTileView && {\n [sizeWrapperClass]: true,\n [sizeWrapperEmptyFileClass]: !hasOneFileForSingle,\n },\n jsViewStyles.uploadButtonWrapper(),\n canDrop && jsStyles.windowDragOver(theme),\n );\n\n const uploadButtonIconClassNames = cx(\n jsStyles.icon(theme),\n sizeIconClass,\n disabled && jsStyles.iconDisabled(theme),\n uploadButtonIconGapClass,\n );\n\n const rootClassNames = cx(jsStyles.root(theme), !isTileView && jsRowStyles.root());\n\n const contentClassNames = cx(jsViewStyles.content(), {\n [jsViewStyles.contentWithFiles()]: hasOneFileForSingle,\n [contentInnerClass]: !isTileView && (!files.length || !isSingleMode),\n });\n\n const afterLinkTextClassNames = cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles() : jsStyles.afterLinkText(),\n );\n\n const linkClassNames = cx(\n jsStyles.link(theme),\n !disabled && hovered && jsStyles.linkHovered(theme),\n disabled && jsStyles.linkDisabled(theme),\n );\n\n useEffect(() => {\n if (!files || !files.length || !inputRef.current) {\n return;\n }\n\n const dataTransfer = new DataTransfer();\n files.forEach((file) => dataTransfer.items.add(file.originalFile));\n inputRef.current.files = dataTransfer.files;\n }, []);\n\n const rootNodeRef = useRef(null);\n\n const icon = uploaderIcon ?? <UploadIcon size={size} view={view} />;\n const chooseFileText = uploaderText ?? locale.chooseFile;\n const chooseFileLocale = `${chooseFileText}${String.fromCharCode(0xa0)}`; /* &nbsp; */\n const hideUploaderText = isTileView && uploaderText === '';\n const renderChooseFileText = () =>\n !hideUploaderText && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {!hasOneFileForSingle && chooseFileLocale}\n </span>\n );\n\n const renderFileList = () => {\n return (\n !hideFiles &&\n !isSingleMode &&\n !!files.length && (\n <FileUploaderFileList\n renderFile={renderFile}\n size={size}\n view={view}\n onRemove={handleRemoveFile}\n validationTooltipPosition={validationTooltipPosition}\n withValidationTooltip={withValidationTooltip}\n validationSummary={validationSummary}\n validationSummaryStart={validationSummaryStart}\n withWarningIcon={withWarningIcon}\n disabled={disabled}\n />\n )\n );\n };\n\n const fileProps: FileUploaderFileProps = {\n file: files[0],\n size,\n view,\n onRemove: handleRemoveFile,\n error,\n warning,\n withValidationTooltip,\n validationTooltipPosition,\n withWarningIcon,\n hovered,\n disabled,\n };\n\n const fileElement = renderFile(fileProps);\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={rootClassNames}\n style={useMemoObject({ width: isTileView && !multiple ? theme.fileUploaderTileWidth : width })}\n ref={rootNodeRef}\n >\n {uploadButtonPosition === 'end' && renderFileList()}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n {!hasOneFileForSingle && <div className={uploadButtonIconClassNames}>{icon}</div>}\n <div data-tid={FileUploaderDataTids.content} className={contentClassNames}>\n {renderChooseFileText()}\n <div className={afterLinkTextClassNames}>\n {hasOneFileForSingle && (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {fileElement}\n </div>\n )}\n </div>\n </div>\n <FocusControlWrapper onBlurWhenDisabled={() => setFocusedByTab(false)}>\n <input\n {...inputProps}\n data-tid={FileUploaderDataTids.input}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.visuallyHidden()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n </FocusControlWrapper>\n </label>\n </div>\n {uploadButtonPosition === 'start' && renderFileList()}\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\n/**\n * `FileUploader` — контрол для выбора пользователем файла на компьютере и отображения статуса его отправки на сервер.\n *\n * Можно использовать для синхронной отправки данных, например, в форме. Или же можно использовать в асинхронном режиме.\n */\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\n\nFileUploader.displayName = 'FileUploader';\n"]}
1
+ {"version":3,"file":"FileUploader.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploader.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\n\nimport { useDrop } from '../../hooks/useDrop.js';\nimport { useMemoObject } from '../../hooks/useMemoObject.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\nimport type { PopupPositionsType, ShortPopupPositionsType } from '../../internal/Popup/index.js';\nimport { useKeyListener } from '../../lib/events/keyListener.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport { useEmotion, useGlobal, useStyles } from '../../lib/renderEnvironment/index.js';\nimport type { InstanceWithRootNode } from '../../lib/rootNode/index.js';\nimport { useSizeControl } from '../../lib/size/useSizeControl.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getJsRowStyles, getJsStyles, getJsTileStyles, globalClasses } from './FileUploader.styles.js';\nimport { FileUploaderControlContext } from './FileUploaderControlContext.js';\nimport type { FileUploaderControlProviderProps } from './FileUploaderControlProvider.js';\nimport { FileUploaderFile } from './FileUploaderFile.js';\nimport type { FileUploaderFileProps } from './FileUploaderFile.js';\nimport { FileUploaderFileList } from './FileUploaderFileList/FileUploaderFileList.js';\nimport { FileUploaderFileValidationResult } from './FileUploaderFileValidationResult.js';\nimport type {\n FileUploaderAttachedFile,\n FileUploaderUploadButtonPosition,\n FileUploaderValidationSummary,\n FileUploaderView,\n} from './fileUtils.js';\nimport { FileUploaderFileStatus, getAttachedFile } from './fileUtils.js';\nimport { useControlLocale } from './hooks/useControlLocale.js';\nimport { useFileUploaderSize } from './hooks/useFileUploaderSize.js';\nimport { useUpload } from './hooks/useUpload.js';\nimport { UploadIcon } from './icons/UploadIcon.js';\nimport { withFileUploaderControlProvider } from './withFileUploaderControlProvider.js';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps, Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Переводит контрол в состояние валидации \"ошибка\". */\n /** Состояние ошибки всего контрола */\n error?: boolean;\n\n /** Переводит контрол в состояние валидации \"предупреждение\" */\n /** Состояние предупреждения всего контрола */\n warning?: boolean;\n\n /** Расположение тултипа с текстом валидации файла.\n * @default 'top left' */\n validationTooltipPosition?: ShortPopupPositionsType | PopupPositionsType;\n\n /** Включает отображение текста валидации файла во всплывающей подсказке вместо строки рядом с именем.\n * @default false */\n withValidationTooltip?: boolean;\n\n /** Включает отображение иконки предупреждения (восклицательный знак) при статусе предупреждения у файла.\n * @default false */\n withWarningIcon?: boolean;\n\n /** Ширина контрола. */\n width?: React.CSSProperties['width'];\n\n /** Размер контрола и вложенных элементов.\n * @default small */\n size?: SizeProp;\n\n /** Скрывает встроенный список файлов.\n * @default false */\n hideFiles?: boolean;\n\n /** Текст ссылки выбора файла.\n * @default \"Выберите файл\"\n */\n uploaderText?: string;\n\n /** Иконка в кнопке загрузки.\n */\n uploaderIcon?: React.ReactNode;\n\n /** Режим отображения списка файлов: строка (`row`) или плитка (`tile`).\n * @default row\n */\n view?: FileUploaderView;\n\n /** Режим блока-саммари по ошибкам и предупреждениям:\n * - `auto` — от порога `validationSummaryStart`,\n * - `enabled` / `disabled` — всегда или никогда.\n * @default auto\n */\n validationSummary?: FileUploaderValidationSummary;\n\n /** Порог числа файлов для показа саммари при `validationSummary=\"auto\"`.\n * @default 5 */\n validationSummaryStart?: number;\n\n /** Расположение кнопки загрузки относительно списка: в начале или в конце.\n * @default start */\n uploadButtonPosition?: FileUploaderUploadButtonPosition;\n\n /** Включает асинхронный режим загрузки файлов.\n * Отклонённый промис помечает файл(ы) ошибкой загрузки.\n */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n\n /** Колбэк после успешного завершения `request` для файла. */\n onRequestSuccess?: (fileId: string) => void;\n\n /** Колбэк после ошибки `request` для файла. */\n onRequestError?: (fileId: string) => void;\n\n /** Проверка файла после выбора и до `request`: строка или `{ message, status }` — ошибка/предупреждение. Пустой результат — файл проходит.\n */\n validateBeforeUpload?: (\n file: FileUploaderAttachedFile,\n ) => Promise<Nullable<string | { message: string; status: FileUploaderFileStatus }>>;\n\n /**\n * Задаёт метод отрисовки файлов.\n * @default (props: FileUploaderFileProps) => <FileUploaderFile {...props} />\n */\n renderFile?: (props: FileUploaderFileProps) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n /** Устанавливает фокус на скрытом `input` выбора файла. */\n focus: () => void;\n /** Снимает фокус с `input` выбора файла. */\n blur: () => void;\n /** Очищает список файлов и значения `input`. */\n reset: () => void;\n /** Удаляет файл по id с вызовом `onRemove` и `onValueChange`. */\n removeFile: (fileId: string) => void;\n}\n\nexport type FileUploader = FileUploaderRef;\n\nexport const FileUploaderDataTids = {\n root: 'FileUploader__root',\n content: 'FileUploader__content',\n link: 'FileUploader__link',\n input: 'FileUploader__input',\n} as const;\n\nconst defaultRenderFile = (props: FileUploaderFileProps) => <FileUploaderFile {...props} />;\n\nconst _FileUploader = forwardRefAndName<FileUploaderRef, _FileUploaderProps>('FileUploader', (props, ref) => {\n const theme = useContext(ThemeContext);\n const globalObject = useGlobal();\n const { cx } = useEmotion();\n const jsStyles = useStyles(getJsStyles);\n const jsRowStyles = useStyles(getJsRowStyles);\n const jsTileStyles = useStyles(getJsTileStyles);\n const keyListener = useKeyListener();\n\n const {\n disabled,\n error,\n warning,\n withValidationTooltip = false,\n validationTooltipPosition,\n withWarningIcon = false,\n multiple = false,\n uploaderText,\n uploaderIcon,\n view = 'row',\n uploadButtonPosition = 'start',\n validationSummary = 'auto',\n validationSummaryStart = 5,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size: sizeProp,\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n const size = useSizeControl(sizeProp);\n\n const { files, setFiles, removeFile, reset, setFileValidationResult } = useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const fileDivRef = useRef<HTMLDivElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const [hovered, setHovered] = useState(false);\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else if (typeof validationMessage === 'object') {\n setFileValidationResult(\n file.id,\n FileUploaderFileValidationResult.error(validationMessage.message),\n validationMessage.status,\n );\n } else {\n setFileValidationResult(\n file.id,\n FileUploaderFileValidationResult.error(validationMessage),\n FileUploaderFileStatus.Error,\n );\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const isTileView = view === 'tile';\n const jsViewStyles = isTileView ? jsTileStyles : jsRowStyles;\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsViewStyles.sizeSmall(theme),\n medium: jsViewStyles.sizeMedium(theme),\n large: jsViewStyles.sizeLarge(theme),\n });\n\n const uploadButtonTileWithFileClassName = useFileUploaderSize(size, {\n small: jsTileStyles.uploadButtonTileWithFileSmall(theme),\n medium: jsTileStyles.uploadButtonTileWithFileMedium(theme),\n large: jsTileStyles.uploadButtonTileWithFileLarge(theme),\n });\n\n const uploadButtonIconGapClass = useFileUploaderSize(size, {\n small: jsViewStyles.uploadButtonIconGapSmall(theme),\n medium: jsViewStyles.uploadButtonIconGapMedium(theme),\n large: jsViewStyles.uploadButtonIconGapLarge(theme),\n });\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(theme),\n medium: jsStyles.iconMedium(theme),\n large: jsStyles.iconLarge(theme),\n });\n\n const sizeWrapperClass = useFileUploaderSize(size, {\n small: jsTileStyles.uploadButtonWrapperSmall(theme),\n medium: jsTileStyles.uploadButtonWrapperMedium(theme),\n large: jsTileStyles.uploadButtonWrapperLarge(theme),\n });\n\n const sizeWrapperEmptyFileClass = useFileUploaderSize(size, {\n small: jsTileStyles.uploadButtonWrapperEmptyFileSmall(theme),\n medium: jsTileStyles.uploadButtonWrapperEmptyFileMedium(theme),\n large: jsTileStyles.uploadButtonWrapperEmptyFileLarge(theme),\n });\n\n const contentInnerClass = useFileUploaderSize(size, {\n small: jsStyles.contentInnerSmall(theme),\n medium: jsStyles.contentInnerMedium(theme),\n large: jsStyles.contentInnerLarge(theme),\n });\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles || !newFiles.length) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n if (dataTransfer) {\n if (isSingleMode && dataTransfer.files.length > 1) {\n dataTransfer.dropEffect = 'none';\n return;\n }\n if (dataTransfer.files?.length > 0) {\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n handleChange(dataTransfer.files);\n }\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(globalObject)) {\n windowRef.current = globalObject.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 const removeFileFromNativeInput = useCallback(\n (fileId: string) => {\n const dataTransfer = new DataTransfer();\n files\n .filter((f) => f.id !== fileId)\n .forEach((file) => {\n dataTransfer.items.add(file.originalFile);\n });\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n },\n [files],\n );\n\n const handleRemoveFile = useCallback(\n (fileId: string) => {\n removeFile(fileId);\n removeFileFromNativeInput(fileId);\n },\n [removeFileFromNativeInput, removeFile],\n );\n\n const handleReset = useCallback(() => {\n reset();\n const dataTransfer = new DataTransfer();\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n }, [reset, handleRemoveFile]);\n\n useImperativeHandle(\n ref,\n () => ({\n focus,\n blur,\n reset: handleReset,\n removeFile: handleRemoveFile,\n getRootNode: () => rootNodeRef.current,\n }),\n [ref, blur, focus, handleReset, handleRemoveFile],\n );\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n setHovered(false);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const hasFiles = files.length > 0;\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const hasError = !!error || files[0]?.status === FileUploaderFileStatus.Error;\n const hasWarning = !!warning || files[0]?.status === FileUploaderFileStatus.Warning;\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n jsViewStyles.uploadButton(),\n sizeClassName,\n hasOneFileForSingle && jsViewStyles.uploadButtonWithFile(theme),\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && {\n [jsStyles.disabled(theme)]: true,\n [jsStyles.disabledBackground(theme)]: !hasFiles,\n },\n (focusedByTab || !hasOneFileForSingle) && {\n [jsStyles.warningButton(theme)]: hasWarning,\n [jsStyles.errorButton(theme)]: hasError,\n },\n hasOneFileForSingle && {\n [uploadButtonTileWithFileClassName]: isTileView,\n [jsTileStyles.verticalAlign()]: isTileView,\n [jsStyles.warningFile(theme)]: (!isTileView || hovered) && hasWarning,\n [jsStyles.errorFile(theme)]: (!isTileView || hovered) && hasError,\n },\n !disabled &&\n hovered && {\n [jsStyles.hovered(theme)]: true,\n },\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(\n isTileView && {\n [sizeWrapperClass]: true,\n [sizeWrapperEmptyFileClass]: !hasOneFileForSingle,\n },\n jsViewStyles.uploadButtonWrapper(),\n canDrop && jsStyles.windowDragOver(theme),\n );\n\n const uploadButtonIconClassNames = cx(\n jsStyles.icon(theme),\n sizeIconClass,\n disabled && jsStyles.iconDisabled(theme),\n uploadButtonIconGapClass,\n );\n\n const rootClassNames = cx(jsStyles.root(theme), !isTileView && jsRowStyles.root());\n\n const contentClassNames = cx(jsViewStyles.content(), {\n [jsViewStyles.contentWithFiles()]: hasOneFileForSingle,\n [contentInnerClass]: !isTileView && (!files.length || !isSingleMode),\n });\n\n const afterLinkTextClassNames = cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles() : jsStyles.afterLinkText(),\n );\n\n const linkClassNames = cx(\n jsStyles.link(theme),\n !disabled && hovered && jsStyles.linkHovered(theme),\n disabled && jsStyles.linkDisabled(theme),\n );\n\n useEffect(() => {\n if (!files || !files.length || !inputRef.current) {\n return;\n }\n\n const dataTransfer = new DataTransfer();\n files.forEach((file) => dataTransfer.items.add(file.originalFile));\n inputRef.current.files = dataTransfer.files;\n }, []);\n\n const rootNodeRef = useRef(null);\n\n const icon = uploaderIcon ?? <UploadIcon size={size} view={view} />;\n const chooseFileText = uploaderText ?? locale.chooseFile;\n const chooseFileLocale = `${chooseFileText}${String.fromCharCode(0xa0)}`; /* &nbsp; */\n const hideUploaderText = isTileView && uploaderText === '';\n const renderChooseFileText = () =>\n !hideUploaderText && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {!hasOneFileForSingle && chooseFileLocale}\n </span>\n );\n\n const renderFileList = () => {\n return (\n !hideFiles &&\n !isSingleMode &&\n !!files.length && (\n <FileUploaderFileList\n renderFile={renderFile}\n size={size}\n view={view}\n onRemove={handleRemoveFile}\n validationTooltipPosition={validationTooltipPosition}\n withValidationTooltip={withValidationTooltip}\n validationSummary={validationSummary}\n validationSummaryStart={validationSummaryStart}\n withWarningIcon={withWarningIcon}\n disabled={disabled}\n />\n )\n );\n };\n\n const fileProps: FileUploaderFileProps = {\n file: files[0],\n size,\n view,\n onRemove: handleRemoveFile,\n error,\n warning,\n withValidationTooltip,\n validationTooltipPosition,\n withWarningIcon,\n hovered,\n disabled,\n };\n\n const fileElement = renderFile(fileProps);\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={rootClassNames}\n style={useMemoObject({ width: isTileView && !multiple ? theme.fileUploaderTileWidth : width })}\n ref={rootNodeRef}\n >\n {uploadButtonPosition === 'end' && renderFileList()}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n {!hasOneFileForSingle && <div className={uploadButtonIconClassNames}>{icon}</div>}\n <div data-tid={FileUploaderDataTids.content} className={contentClassNames}>\n {renderChooseFileText()}\n <div className={afterLinkTextClassNames}>\n {hasOneFileForSingle && (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {fileElement}\n </div>\n )}\n </div>\n </div>\n <FocusControlWrapper onBlurWhenDisabled={() => setFocusedByTab(false)}>\n <input\n {...inputProps}\n data-tid={FileUploaderDataTids.input}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.visuallyHidden()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n </FocusControlWrapper>\n </label>\n </div>\n {uploadButtonPosition === 'start' && renderFileList()}\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\n/**\n * `FileUploader` — контрол для выбора пользователем файла на компьютере и отображения статуса его отправки на сервер.\n *\n * Можно использовать для синхронной отправки данных, например, в форме. Или же можно использовать в асинхронном режиме.\n */\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\n\nFileUploader.displayName = 'FileUploader';\n"]}
@@ -3,7 +3,6 @@ export declare const globalClasses: {
3
3
  afterLinkText: string;
4
4
  };
5
5
  export declare const getJsStyles: import("../../lib/theming/Emotion.js").StylesGetter<{
6
- calcPulse(t: Theme): string;
7
6
  root(t: Theme): string;
8
7
  uploadButton(t: Theme): string;
9
8
  uploadButtonFocus(t: Theme): string;
@@ -9,10 +9,10 @@ export var globalClasses = prefix('file-uploader')({
9
9
  });
10
10
  export var getJsStyles = memoizeGetStyles(function (_a) {
11
11
  var css = _a.css, keyframes = _a.keyframes;
12
+ var calcPulse = function (t) {
13
+ return keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n 0% {\n box-shadow: 0 0 0 1px ", ";\n }\n 95% {\n box-shadow: 0 0 0 10px ", ";\n }\n 100% {\n box-shadow: 0 0 0 1px ", ";\n }\n "], ["\n 0% {\n box-shadow: 0 0 0 1px ", ";\n }\n 95% {\n box-shadow: 0 0 0 10px ", ";\n }\n 100% {\n box-shadow: 0 0 0 1px ", ";\n }\n "])), t.inputBlinkColor, t.inputBlinkColor, t.inputBlinkColor);
14
+ };
12
15
  return {
13
- calcPulse: function (t) {
14
- return keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n 0% {\n box-shadow: 0 0 0 1px ", ";\n }\n 95% {\n box-shadow: 0 0 0 10px ", ";\n }\n 100% {\n box-shadow: 0 0 0 1px ", ";\n }\n "], ["\n 0% {\n box-shadow: 0 0 0 1px ", ";\n }\n 95% {\n box-shadow: 0 0 0 10px ", ";\n }\n 100% {\n box-shadow: 0 0 0 1px ", ";\n }\n "])), t.inputBlinkColor, t.inputBlinkColor, t.inputBlinkColor);
15
- },
16
16
  root: function (t) {
17
17
  return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: inline-flex;\n flex-wrap: wrap;\n position: relative;\n border-radius: ", ";\n line-height: ", ";\n font-size: ", ";\n color: ", ";\n background-color: ", ";\n "], ["\n display: inline-flex;\n flex-wrap: wrap;\n position: relative;\n border-radius: ", ";\n line-height: ", ";\n font-size: ", ";\n color: ", ";\n background-color: ", ";\n "])), t.fileUploaderBorderRadius, t.fileUploaderLineHeightSmall, t.fileUploaderFontSizeSmall, t.fileUploaderTextColorDefault, t.fileUploaderBg);
18
18
  },
@@ -38,7 +38,7 @@ export var getJsStyles = memoizeGetStyles(function (_a) {
38
38
  return css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n border: 1px solid ", ";\n border-radius: ", ";\n box-shadow: ", ";\n "], ["\n border: 1px solid ", ";\n border-radius: ", ";\n box-shadow: ", ";\n "])), t.fileUploaderDragOverBorderColor, t.fileUploaderBorderRadius, t.fileUploaderDragOverShadow);
39
39
  },
40
40
  windowDragOver: function (t) {
41
- return css(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n border-radius: ", ";\n animation: ", " 1.5s infinite;\n "], ["\n border-radius: ", ";\n animation: ", " 1.5s infinite;\n "])), t.fileUploaderBorderRadius, this.calcPulse(t));
41
+ return css(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n border-radius: ", ";\n animation: ", " 1.5s infinite;\n "], ["\n border-radius: ", ";\n animation: ", " 1.5s infinite;\n "])), t.fileUploaderBorderRadius, calcPulse(t));
42
42
  },
43
43
  contentInnerSmall: function (t) {
44
44
  return css(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n width: calc(100% - ", " - ", ");\n "], ["\n width: calc(100% - ", " - ", ");\n "])), t.inputIconSizeSmall, t.fileUploaderIconGapSmall);
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploader.styles.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploader.styles.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles, prefix } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { fileUploaderSizeMixin } from './FileUploader.mixins.js';\n\nexport const globalClasses = prefix('file-uploader')({\n afterLinkText: 'after-link-text',\n});\nexport const getJsStyles = memoizeGetStyles(({ css, keyframes }: Emotion) => {\n return {\n calcPulse(t: Theme) {\n return keyframes`\n 0% {\n box-shadow: 0 0 0 1px ${t.inputBlinkColor};\n }\n 95% {\n box-shadow: 0 0 0 10px ${t.inputBlinkColor};\n }\n 100% {\n box-shadow: 0 0 0 1px ${t.inputBlinkColor};\n }\n `;\n },\n\n root(t: Theme) {\n return css`\n display: inline-flex;\n flex-wrap: wrap;\n position: relative;\n border-radius: ${t.fileUploaderBorderRadius};\n line-height: ${t.fileUploaderLineHeightSmall};\n font-size: ${t.fileUploaderFontSizeSmall};\n color: ${t.fileUploaderTextColorDefault};\n background-color: ${t.fileUploaderBg};\n `;\n },\n uploadButton(t: Theme) {\n return css`\n width: 100%;\n position: relative;\n display: inline-flex;\n align-items: center;\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 transition:\n background-color ${t.transitionDuration} ${t.transitionTimingFunction},\n border-color ${t.transitionDuration} ${t.transitionTimingFunction};\n background-color: ${t.fileUploaderUploadButtonBg};\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 uploadButtonWithFile(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid transparent;\n background: none;\n `;\n },\n\n uploadButtonIconGapSmall(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapSmall};\n `;\n },\n\n uploadButtonIconGapMedium(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapMedium};\n `;\n },\n\n uploadButtonIconGapLarge(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapLarge};\n `;\n },\n\n dragOver(t: Theme) {\n return css`\n border: 1px solid ${t.fileUploaderDragOverBorderColor};\n border-radius: ${t.fileUploaderBorderRadius};\n box-shadow: ${t.fileUploaderDragOverShadow};\n `;\n },\n\n windowDragOver(t: Theme) {\n return css`\n border-radius: ${t.fileUploaderBorderRadius};\n animation: ${this.calcPulse(t)} 1.5s infinite;\n `;\n },\n\n contentInnerSmall(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeSmall} - ${t.fileUploaderIconGapSmall});\n `;\n },\n\n contentInnerMedium(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeMedium} - ${t.fileUploaderIconGapMedium});\n `;\n },\n\n contentInnerLarge(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeLarge} - ${t.fileUploaderIconGapLarge});\n `;\n },\n\n visuallyHidden() {\n return css`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n border: 0;\n padding: 0;\n white-space: nowrap;\n clip-path: inset(100%);\n clip: rect(0 0 0 0);\n overflow: hidden;\n `;\n },\n\n afterLinkText() {\n return css`\n display: inline;\n `;\n },\n\n afterLinkText_HasFiles() {\n return css`\n display: flex;\n justify-content: space-between;\n flex: 1 1 auto;\n height: 100%;\n `;\n },\n\n warningButton(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 warningFile(t: Theme) {\n return css`\n background: ${t.fileUploaderWarningBgColor};\n color: ${t.fileUploaderValidationTextColor};\n &:hover {\n background: ${t.fileUploaderWarningBgHoverColor};\n }\n `;\n },\n\n errorButton(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 errorFile(t: Theme) {\n return css`\n background: ${t.fileUploaderErrorBgColor};\n color: ${t.fileUploaderValidationTextColor};\n &:hover {\n background: ${t.fileUploaderErrorBgHoverColor};\n }\n `;\n },\n\n hovered(t: Theme) {\n return css`\n background: ${t.fileUploaderHoveredBg};\n `;\n },\n\n linkHovered(t: Theme) {\n return css`\n text-decoration: ${t.fileUploaderLinkHoverTextDecoration};\n `;\n },\n\n disabled(t: Theme) {\n return css`\n cursor: default;\n color: ${t.fileUploaderDisabledTextColor};\n box-shadow: none;\n background-clip: ${t.fileUploaderDisabledBgClip};\n\n .${globalClasses.afterLinkText} {\n color: ${t.fileUploaderDisabledTextColor};\n }\n `;\n },\n\n disabledBackground(t: Theme) {\n return css`\n background: ${t.fileUploaderDisabledBg};\n border: ${t.fileUploaderDisabledBorder};\n `;\n },\n\n icon(t: Theme) {\n return css`\n display: inline-block;\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 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 singleFile() {\n return css`\n width: 100%;\n height: inherit;\n `;\n },\n\n iconSmall(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeSmall};\n line-height: ${t.fileUploaderLineHeightSmall};\n `;\n },\n\n iconMedium(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeMedium};\n line-height: ${t.fileUploaderLineHeightMedium};\n `;\n },\n\n iconLarge(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeLarge};\n line-height: ${t.fileUploaderLineHeightLarge};\n `;\n },\n };\n});\n\nexport const getJsRowStyles = memoizeGetStyles(({ css }: Emotion) => {\n return {\n root() {\n return css`\n width: 100%;\n `;\n },\n\n uploadButtonWithFile(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid transparent;\n background: none;\n `;\n },\n\n uploadButton() {\n return css`\n justify-content: space-between;\n `;\n },\n\n uploadButtonWrapper() {\n return css`\n height: inherit;\n width: 100%;\n `;\n },\n\n uploadButtonIconGapSmall(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapSmall};\n `;\n },\n\n uploadButtonIconGapMedium(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapMedium};\n `;\n },\n\n uploadButtonIconGapLarge(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapLarge};\n `;\n },\n\n sizeSmall(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeSmall,\n t.fileUploaderLineHeightSmall,\n t.fileUploaderPaddingXSmall,\n t.fileUploaderPaddingYSmall,\n )};\n `;\n },\n\n sizeMedium(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeMedium,\n t.fileUploaderLineHeightMedium,\n t.fileUploaderPaddingXMedium,\n t.fileUploaderPaddingYMedium,\n )};\n `;\n },\n\n sizeLarge(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeLarge,\n t.fileUploaderLineHeightLarge,\n t.fileUploaderPaddingXLarge,\n t.fileUploaderPaddingYLarge,\n )};\n `;\n },\n\n content() {\n return css`\n display: block;\n width: 100%;\n height: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n `;\n },\n\n contentWithFiles() {\n return css`\n display: flex;\n align-items: center;\n `;\n },\n };\n});\n\nexport const getJsTileStyles = memoizeGetStyles(({ css }: Emotion) => {\n return {\n uploadButton() {\n return css`\n height: 100%;\n justify-content: center;\n flex-direction: column;\n `;\n },\n\n uploadButtonWrapper() {\n return css`\n box-sizing: border-box;\n `;\n },\n\n uploadButtonWrapperSmall(t: Theme) {\n return css`\n width: ${t.fileUploaderTileWidthSmall};\n min-height: ${t.fileUploaderTileMinHeightSmall};\n height: auto;\n `;\n },\n\n uploadButtonWrapperMedium(t: Theme) {\n return css`\n width: ${t.fileUploaderTileWidthMedium};\n min-height: ${t.fileUploaderTileMinHeightMedium};\n height: auto;\n `;\n },\n\n uploadButtonWrapperLarge(t: Theme) {\n return css`\n width: ${t.fileUploaderTileWidthLarge};\n min-height: ${t.fileUploaderTileMinHeightLarge};\n height: auto;\n `;\n },\n\n uploadButtonWrapperEmptyFileSmall(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingSmall};\n height: ${t.fileUploaderTileMinHeightSmall};\n `;\n },\n\n uploadButtonWrapperEmptyFileMedium(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingMedium};\n height: ${t.fileUploaderTileMinHeightMedium};\n `;\n },\n\n uploadButtonWrapperEmptyFileLarge(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingLarge};\n height: ${t.fileUploaderTileMinHeightLarge};\n `;\n },\n\n uploadButtonWithFile(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid transparent;\n background: none;\n justify-content: start;\n `;\n },\n\n uploadButtonIconGapSmall(t: Theme) {\n return css`\n margin-bottom: ${t.inputIconGapSmall};\n `;\n },\n\n uploadButtonIconGapMedium(t: Theme) {\n return css`\n margin-bottom: ${t.inputIconGapMedium};\n `;\n },\n\n uploadButtonIconGapLarge(t: Theme) {\n return css`\n margin-bottom: ${t.inputIconGapLarge};\n `;\n },\n\n uploadButtonTileWithFileSmall(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingSmall};\n `;\n },\n\n uploadButtonTileWithFileMedium(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingMedium};\n `;\n },\n\n uploadButtonTileWithFileLarge(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingLarge};\n `;\n },\n\n sizeSmall(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeSmall,\n t.fileUploaderLineHeightSmall,\n t.fileUploaderTilePaddingSmall,\n t.fileUploaderTilePaddingSmall,\n )};\n `;\n },\n\n sizeMedium(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeMedium,\n t.fileUploaderLineHeightMedium,\n t.fileUploaderTilePaddingMedium,\n t.fileUploaderTilePaddingMedium,\n )};\n `;\n },\n sizeLarge(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeLarge,\n t.fileUploaderLineHeightLarge,\n t.fileUploaderTilePaddingLarge,\n t.fileUploaderTilePaddingLarge,\n )};\n `;\n },\n\n verticalAlign() {\n return css`\n vertical-align: middle;\n `;\n },\n\n content() {\n return css`\n display: block;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: normal;\n overflow-wrap: break-word;\n word-wrap: break-word;\n text-align: center;\n `;\n },\n\n contentWithFiles() {\n return css`\n display: flex;\n align-items: flex-start;\n height: 100%;\n `;\n },\n };\n});\n"]}
1
+ {"version":3,"file":"FileUploader.styles.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploader.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,CAAC,IAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IACnD,aAAa,EAAE,iBAAiB;CACjC,CAAC,CAAC;AACH,MAAM,CAAC,IAAM,WAAW,GAAG,gBAAgB,CAAC,UAAC,EAA2B;QAAzB,GAAG,SAAA,EAAE,SAAS,eAAA;IAC3D,IAAM,SAAS,GAAG,UAAC,CAAQ;QACzB,OAAO,SAAS,6PAAA,8CAEY,EAAiB,0DAGhB,EAAiB,0DAGlB,EAAiB,kBAE5C,KAR2B,CAAC,CAAC,eAAe,EAGhB,CAAC,CAAC,eAAe,EAGlB,CAAC,CAAC,eAAe,EAE3C;IACJ,CAAC,CAAC;IACF,OAAO;QACL,IAAI,YAAC,CAAQ;YACX,OAAO,GAAG,8SAAA,iHAIS,EAA0B,0BAC5B,EAA6B,wBAC/B,EAA2B,oBAC/B,EAA8B,+BACnB,EAAgB,WACrC,KALkB,CAAC,CAAC,wBAAwB,EAC5B,CAAC,CAAC,2BAA2B,EAC/B,CAAC,CAAC,yBAAyB,EAC/B,CAAC,CAAC,4BAA4B,EACnB,CAAC,CAAC,cAAc,EACpC;QACJ,CAAC;QACD,YAAY,YAAC,CAAQ;YACnB,OAAO,GAAG,+cAAA,oIAKE,EAAyB,GAAI,EAAyB,GAAI,EAAyB,6DAE5E,EAA0B,uGAItB,EAAoB,GAAI,EAA0B,4BACtD,EAAoB,GAAI,EAA0B,+BAC/C,EAA4B,WACjD,KATW,CAAC,CAAC,uBAAuB,EAAI,CAAC,CAAC,uBAAuB,EAAI,CAAC,CAAC,uBAAuB,EAE5E,CAAC,CAAC,wBAAwB,EAItB,CAAC,CAAC,kBAAkB,EAAI,CAAC,CAAC,wBAAwB,EACtD,CAAC,CAAC,kBAAkB,EAAI,CAAC,CAAC,wBAAwB,EAC/C,CAAC,CAAC,0BAA0B,EAChD;QACJ,CAAC;QAED,iBAAiB,YAAC,CAAQ;YACxB,OAAO,GAAG,0JAAA,oBACE,EAAyB,SAAU,EAA8B,yCAC7C,EAA8B,WAC7D,KAFW,CAAC,CAAC,uBAAuB,EAAU,CAAC,CAAC,4BAA4B,EAC7C,CAAC,CAAC,4BAA4B,EAC5D;QACJ,CAAC;QAED,oBAAoB,YAAC,CAAQ;YAC3B,OAAO,GAAG,iJAAA,oBACE,EAAyB,wDAEpC,KAFW,CAAC,CAAC,uBAAuB,EAEnC;QACJ,CAAC;QAED,wBAAwB,YAAC,CAAQ;YAC/B,OAAO,GAAG,0GAAA,0BACQ,EAAmB,WACpC,KADiB,CAAC,CAAC,iBAAiB,EACnC;QACJ,CAAC;QAED,yBAAyB,YAAC,CAAQ;YAChC,OAAO,GAAG,0GAAA,0BACQ,EAAoB,WACrC,KADiB,CAAC,CAAC,kBAAkB,EACpC;QACJ,CAAC;QAED,wBAAwB,YAAC,CAAQ;YAC/B,OAAO,GAAG,0GAAA,0BACQ,EAAmB,WACpC,KADiB,CAAC,CAAC,iBAAiB,EACnC;QACJ,CAAC;QAED,QAAQ,YAAC,CAAQ;YACf,OAAO,GAAG,uKAAA,8BACY,EAAiC,4BACpC,EAA0B,yBAC7B,EAA4B,WAC3C,KAHqB,CAAC,CAAC,+BAA+B,EACpC,CAAC,CAAC,wBAAwB,EAC7B,CAAC,CAAC,0BAA0B,EAC1C;QACJ,CAAC;QAED,cAAc,YAAC,CAAQ;YACrB,OAAO,GAAG,qJAAA,2BACS,EAA0B,wBAC9B,EAAY,yBAC1B,KAFkB,CAAC,CAAC,wBAAwB,EAC9B,SAAS,CAAC,CAAC,CAAC,EACzB;QACJ,CAAC;QAED,iBAAiB,YAAC,CAAQ;YACxB,OAAO,GAAG,yHAAA,+BACa,EAAoB,KAAM,EAA0B,YAC1E,KADsB,CAAC,CAAC,kBAAkB,EAAM,CAAC,CAAC,wBAAwB,EACzE;QACJ,CAAC;QAED,kBAAkB,YAAC,CAAQ;YACzB,OAAO,GAAG,yHAAA,+BACa,EAAqB,KAAM,EAA2B,YAC5E,KADsB,CAAC,CAAC,mBAAmB,EAAM,CAAC,CAAC,yBAAyB,EAC3E;QACJ,CAAC;QAED,iBAAiB,YAAC,CAAQ;YACxB,OAAO,GAAG,yHAAA,+BACa,EAAoB,KAAM,EAA0B,YAC1E,KADsB,CAAC,CAAC,kBAAkB,EAAM,CAAC,CAAC,wBAAwB,EACzE;QACJ,CAAC;QAED,cAAc;YACZ,OAAO,GAAG,+UAAA,0QAWT,KAAC;QACJ,CAAC;QAED,aAAa;YACX,OAAO,GAAG,yGAAA,oCAET,KAAC;QACJ,CAAC;QAED,sBAAsB;YACpB,OAAO,GAAG,gMAAA,2HAKT,KAAC;QACJ,CAAC;QAED,aAAa,YAAC,CAAQ;YACpB,OAAO,GAAG,4JAAA,oBACE,EAAyB,SAAU,EAAgC,yCAC/C,EAAgC,WAC/D,KAFW,CAAC,CAAC,uBAAuB,EAAU,CAAC,CAAC,8BAA8B,EAC/C,CAAC,CAAC,8BAA8B,EAC9D;QACJ,CAAC;QAED,WAAW,YAAC,CAAQ;YAClB,OAAO,GAAG,2LAAA,wBACM,EAA4B,oBACjC,EAAiC,8CAE1B,EAAiC,sBAElD,KALe,CAAC,CAAC,0BAA0B,EACjC,CAAC,CAAC,+BAA+B,EAE1B,CAAC,CAAC,+BAA+B,EAEjD;QACJ,CAAC;QAED,WAAW,YAAC,CAAQ;YAClB,OAAO,GAAG,4JAAA,oBACE,EAAyB,SAAU,EAA8B,yCAC7C,EAA8B,WAC7D,KAFW,CAAC,CAAC,uBAAuB,EAAU,CAAC,CAAC,4BAA4B,EAC7C,CAAC,CAAC,4BAA4B,EAC5D;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,2LAAA,wBACM,EAA0B,oBAC/B,EAAiC,8CAE1B,EAA+B,sBAEhD,KALe,CAAC,CAAC,wBAAwB,EAC/B,CAAC,CAAC,+BAA+B,EAE1B,CAAC,CAAC,6BAA6B,EAE/C;QACJ,CAAC;QAED,OAAO,YAAC,CAAQ;YACd,OAAO,GAAG,0GAAA,wBACM,EAAuB,WACtC,KADe,CAAC,CAAC,qBAAqB,EACrC;QACJ,CAAC;QAED,WAAW,YAAC,CAAQ;YAClB,OAAO,GAAG,+GAAA,6BACW,EAAqC,WACzD,KADoB,CAAC,CAAC,mCAAmC,EACxD;QACJ,CAAC;QAED,QAAQ,YAAC,CAAQ;YACf,OAAO,GAAG,gPAAA,6CAEC,EAA+B,yDAErB,EAA4B,gBAE5C,EAA2B,uBACnB,EAA+B,sBAE3C,KAPU,CAAC,CAAC,6BAA6B,EAErB,CAAC,CAAC,0BAA0B,EAE5C,aAAa,CAAC,aAAa,EACnB,CAAC,CAAC,6BAA6B,EAE1C;QACJ,CAAC;QAED,kBAAkB,YAAC,CAAQ;YACzB,OAAO,GAAG,iIAAA,wBACM,EAAwB,qBAC5B,EAA4B,WACvC,KAFe,CAAC,CAAC,sBAAsB,EAC5B,CAAC,CAAC,0BAA0B,EACtC;QACJ,CAAC;QAED,IAAI,YAAC,CAAQ;YACX,OAAO,GAAG,qIAAA,mDAEC,EAAuB,WACjC,KADU,CAAC,CAAC,qBAAqB,EAChC;QACJ,CAAC;QAED,YAAY,YAAC,CAAQ;YACnB,OAAO,GAAG,qGAAA,mBACC,EAA+B,WACzC,KADU,CAAC,CAAC,6BAA6B,EACxC;QACJ,CAAC;QAED,IAAI,YAAC,CAAQ;YACX,OAAO,GAAG,6JAAA,2EAGC,EAAuB,WACjC,KADU,CAAC,CAAC,qBAAqB,EAChC;QACJ,CAAC;QAED,YAAY,YAAC,CAAQ;YACnB,OAAO,GAAG,qKAAA,mBACC,EAA+B,2EAIzC,KAJU,CAAC,CAAC,6BAA6B,EAIxC;QACJ,CAAC;QAED,UAAU;YACR,OAAO,GAAG,+HAAA,0DAGT,KAAC;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,qIAAA,uBACK,EAA2B,0BACzB,EAA6B,WAC7C,KAFc,CAAC,CAAC,yBAAyB,EACzB,CAAC,CAAC,2BAA2B,EAC5C;QACJ,CAAC;QAED,UAAU,YAAC,CAAQ;YACjB,OAAO,GAAG,qIAAA,uBACK,EAA4B,0BAC1B,EAA8B,WAC9C,KAFc,CAAC,CAAC,0BAA0B,EAC1B,CAAC,CAAC,4BAA4B,EAC7C;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,qIAAA,uBACK,EAA2B,0BACzB,EAA6B,WAC7C,KAFc,CAAC,CAAC,yBAAyB,EACzB,CAAC,CAAC,2BAA2B,EAC5C;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,IAAM,cAAc,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IACnD,OAAO;QACL,IAAI;YACF,OAAO,GAAG,qGAAA,gCAET,KAAC;QACJ,CAAC;QAED,oBAAoB,YAAC,CAAQ;YAC3B,OAAO,GAAG,mJAAA,oBACE,EAAyB,wDAEpC,KAFW,CAAC,CAAC,uBAAuB,EAEnC;QACJ,CAAC;QAED,YAAY;YACV,OAAO,GAAG,wHAAA,mDAET,KAAC;QACJ,CAAC;QAED,mBAAmB;YACjB,OAAO,GAAG,+HAAA,0DAGT,KAAC;QACJ,CAAC;QAED,wBAAwB,YAAC,CAAQ;YAC/B,OAAO,GAAG,4GAAA,0BACQ,EAAmB,WACpC,KADiB,CAAC,CAAC,iBAAiB,EACnC;QACJ,CAAC;QAED,yBAAyB,YAAC,CAAQ;YAChC,OAAO,GAAG,4GAAA,0BACQ,EAAoB,WACrC,KADiB,CAAC,CAAC,kBAAkB,EACpC;QACJ,CAAC;QAED,wBAAwB,YAAC,CAAQ;YAC/B,OAAO,GAAG,4GAAA,0BACQ,EAAmB,WACpC,KADiB,CAAC,CAAC,iBAAiB,EACnC;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,8FAAA,YACN,EAKD,WACF,KANG,qBAAqB,CACrB,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,2BAA2B,EAC7B,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,yBAAyB,CAC5B,EACD;QACJ,CAAC;QAED,UAAU,YAAC,CAAQ;YACjB,OAAO,GAAG,8FAAA,YACN,EAKD,WACF,KANG,qBAAqB,CACrB,CAAC,CAAC,0BAA0B,EAC5B,CAAC,CAAC,4BAA4B,EAC9B,CAAC,CAAC,0BAA0B,EAC5B,CAAC,CAAC,0BAA0B,CAC7B,EACD;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,8FAAA,YACN,EAKD,WACF,KANG,qBAAqB,CACrB,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,2BAA2B,EAC7B,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,yBAAyB,CAC5B,EACD;QACJ,CAAC;QAED,OAAO;YACL,OAAO,GAAG,kNAAA,6IAMT,KAAC;QACJ,CAAC;QAED,gBAAgB;YACd,OAAO,GAAG,qIAAA,gEAGT,KAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,IAAM,eAAe,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IACpD,OAAO;QACL,YAAY;YACV,OAAO,GAAG,yKAAA,oGAIT,KAAC;QACJ,CAAC;QAED,mBAAmB;YACjB,OAAO,GAAG,gHAAA,2CAET,KAAC;QACJ,CAAC;QAED,wBAAwB,YAAC,CAAQ;YAC/B,OAAO,GAAG,uJAAA,mBACC,EAA4B,yBACvB,EAAgC,kCAE/C,KAHU,CAAC,CAAC,0BAA0B,EACvB,CAAC,CAAC,8BAA8B,EAE9C;QACJ,CAAC;QAED,yBAAyB,YAAC,CAAQ;YAChC,OAAO,GAAG,uJAAA,mBACC,EAA6B,yBACxB,EAAiC,kCAEhD,KAHU,CAAC,CAAC,2BAA2B,EACxB,CAAC,CAAC,+BAA+B,EAE/C;QACJ,CAAC;QAED,wBAAwB,YAAC,CAAQ;YAC/B,OAAO,GAAG,uJAAA,mBACC,EAA4B,yBACvB,EAAgC,kCAE/C,KAHU,CAAC,CAAC,0BAA0B,EACvB,CAAC,CAAC,8BAA8B,EAE9C;QACJ,CAAC;QAED,iCAAiC,YAAC,CAAQ;YACxC,OAAO,GAAG,8HAAA,qBACG,EAAkC,qBACnC,EAAgC,WAC3C,KAFY,CAAC,CAAC,gCAAgC,EACnC,CAAC,CAAC,8BAA8B,EAC1C;QACJ,CAAC;QAED,kCAAkC,YAAC,CAAQ;YACzC,OAAO,GAAG,8HAAA,qBACG,EAAmC,qBACpC,EAAiC,WAC5C,KAFY,CAAC,CAAC,iCAAiC,EACpC,CAAC,CAAC,+BAA+B,EAC3C;QACJ,CAAC;QAED,iCAAiC,YAAC,CAAQ;YACxC,OAAO,GAAG,8HAAA,qBACG,EAAkC,qBACnC,EAAgC,WAC3C,KAFY,CAAC,CAAC,gCAAgC,EACnC,CAAC,CAAC,8BAA8B,EAC1C;QACJ,CAAC;QAED,oBAAoB,YAAC,CAAQ;YAC3B,OAAO,GAAG,oLAAA,oBACE,EAAyB,yFAGpC,KAHW,CAAC,CAAC,uBAAuB,EAGnC;QACJ,CAAC;QAED,wBAAwB,YAAC,CAAQ;YAC/B,OAAO,GAAG,6GAAA,2BACS,EAAmB,WACrC,KADkB,CAAC,CAAC,iBAAiB,EACpC;QACJ,CAAC;QAED,yBAAyB,YAAC,CAAQ;YAChC,OAAO,GAAG,6GAAA,2BACS,EAAoB,WACtC,KADkB,CAAC,CAAC,kBAAkB,EACrC;QACJ,CAAC;QAED,wBAAwB,YAAC,CAAQ;YAC/B,OAAO,GAAG,6GAAA,2BACS,EAAmB,WACrC,KADkB,CAAC,CAAC,iBAAiB,EACpC;QACJ,CAAC;QAED,6BAA6B,YAAC,CAAQ;YACpC,OAAO,GAAG,uGAAA,qBACG,EAAkC,WAC9C,KADY,CAAC,CAAC,gCAAgC,EAC7C;QACJ,CAAC;QAED,8BAA8B,YAAC,CAAQ;YACrC,OAAO,GAAG,uGAAA,qBACG,EAAmC,WAC/C,KADY,CAAC,CAAC,iCAAiC,EAC9C;QACJ,CAAC;QAED,6BAA6B,YAAC,CAAQ;YACpC,OAAO,GAAG,uGAAA,qBACG,EAAkC,WAC9C,KADY,CAAC,CAAC,gCAAgC,EAC7C;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,8FAAA,YACN,EAKD,WACF,KANG,qBAAqB,CACrB,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,2BAA2B,EAC7B,CAAC,CAAC,4BAA4B,EAC9B,CAAC,CAAC,4BAA4B,CAC/B,EACD;QACJ,CAAC;QAED,UAAU,YAAC,CAAQ;YACjB,OAAO,GAAG,8FAAA,YACN,EAKD,WACF,KANG,qBAAqB,CACrB,CAAC,CAAC,0BAA0B,EAC5B,CAAC,CAAC,4BAA4B,EAC9B,CAAC,CAAC,6BAA6B,EAC/B,CAAC,CAAC,6BAA6B,CAChC,EACD;QACJ,CAAC;QACD,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,8FAAA,YACN,EAKD,WACF,KANG,qBAAqB,CACrB,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,2BAA2B,EAC7B,CAAC,CAAC,4BAA4B,EAC9B,CAAC,CAAC,4BAA4B,CAC/B,EACD;QACJ,CAAC;QAED,aAAa;YACX,OAAO,GAAG,gHAAA,2CAET,KAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,GAAG,0TAAA,qPAST,KAAC;QACJ,CAAC;QAED,gBAAgB;YACd,OAAO,GAAG,gKAAA,2FAIT,KAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles, prefix } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { fileUploaderSizeMixin } from './FileUploader.mixins.js';\n\nexport const globalClasses = prefix('file-uploader')({\n afterLinkText: 'after-link-text',\n});\nexport const getJsStyles = memoizeGetStyles(({ css, keyframes }: Emotion) => {\n const calcPulse = (t: Theme) => {\n return keyframes`\n 0% {\n box-shadow: 0 0 0 1px ${t.inputBlinkColor};\n }\n 95% {\n box-shadow: 0 0 0 10px ${t.inputBlinkColor};\n }\n 100% {\n box-shadow: 0 0 0 1px ${t.inputBlinkColor};\n }\n `;\n };\n return {\n root(t: Theme) {\n return css`\n display: inline-flex;\n flex-wrap: wrap;\n position: relative;\n border-radius: ${t.fileUploaderBorderRadius};\n line-height: ${t.fileUploaderLineHeightSmall};\n font-size: ${t.fileUploaderFontSizeSmall};\n color: ${t.fileUploaderTextColorDefault};\n background-color: ${t.fileUploaderBg};\n `;\n },\n uploadButton(t: Theme) {\n return css`\n width: 100%;\n position: relative;\n display: inline-flex;\n align-items: center;\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 transition:\n background-color ${t.transitionDuration} ${t.transitionTimingFunction},\n border-color ${t.transitionDuration} ${t.transitionTimingFunction};\n background-color: ${t.fileUploaderUploadButtonBg};\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 uploadButtonWithFile(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid transparent;\n background: none;\n `;\n },\n\n uploadButtonIconGapSmall(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapSmall};\n `;\n },\n\n uploadButtonIconGapMedium(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapMedium};\n `;\n },\n\n uploadButtonIconGapLarge(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapLarge};\n `;\n },\n\n dragOver(t: Theme) {\n return css`\n border: 1px solid ${t.fileUploaderDragOverBorderColor};\n border-radius: ${t.fileUploaderBorderRadius};\n box-shadow: ${t.fileUploaderDragOverShadow};\n `;\n },\n\n windowDragOver(t: Theme) {\n return css`\n border-radius: ${t.fileUploaderBorderRadius};\n animation: ${calcPulse(t)} 1.5s infinite;\n `;\n },\n\n contentInnerSmall(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeSmall} - ${t.fileUploaderIconGapSmall});\n `;\n },\n\n contentInnerMedium(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeMedium} - ${t.fileUploaderIconGapMedium});\n `;\n },\n\n contentInnerLarge(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeLarge} - ${t.fileUploaderIconGapLarge});\n `;\n },\n\n visuallyHidden() {\n return css`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n border: 0;\n padding: 0;\n white-space: nowrap;\n clip-path: inset(100%);\n clip: rect(0 0 0 0);\n overflow: hidden;\n `;\n },\n\n afterLinkText() {\n return css`\n display: inline;\n `;\n },\n\n afterLinkText_HasFiles() {\n return css`\n display: flex;\n justify-content: space-between;\n flex: 1 1 auto;\n height: 100%;\n `;\n },\n\n warningButton(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 warningFile(t: Theme) {\n return css`\n background: ${t.fileUploaderWarningBgColor};\n color: ${t.fileUploaderValidationTextColor};\n &:hover {\n background: ${t.fileUploaderWarningBgHoverColor};\n }\n `;\n },\n\n errorButton(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 errorFile(t: Theme) {\n return css`\n background: ${t.fileUploaderErrorBgColor};\n color: ${t.fileUploaderValidationTextColor};\n &:hover {\n background: ${t.fileUploaderErrorBgHoverColor};\n }\n `;\n },\n\n hovered(t: Theme) {\n return css`\n background: ${t.fileUploaderHoveredBg};\n `;\n },\n\n linkHovered(t: Theme) {\n return css`\n text-decoration: ${t.fileUploaderLinkHoverTextDecoration};\n `;\n },\n\n disabled(t: Theme) {\n return css`\n cursor: default;\n color: ${t.fileUploaderDisabledTextColor};\n box-shadow: none;\n background-clip: ${t.fileUploaderDisabledBgClip};\n\n .${globalClasses.afterLinkText} {\n color: ${t.fileUploaderDisabledTextColor};\n }\n `;\n },\n\n disabledBackground(t: Theme) {\n return css`\n background: ${t.fileUploaderDisabledBg};\n border: ${t.fileUploaderDisabledBorder};\n `;\n },\n\n icon(t: Theme) {\n return css`\n display: inline-block;\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 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 singleFile() {\n return css`\n width: 100%;\n height: inherit;\n `;\n },\n\n iconSmall(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeSmall};\n line-height: ${t.fileUploaderLineHeightSmall};\n `;\n },\n\n iconMedium(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeMedium};\n line-height: ${t.fileUploaderLineHeightMedium};\n `;\n },\n\n iconLarge(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeLarge};\n line-height: ${t.fileUploaderLineHeightLarge};\n `;\n },\n };\n});\n\nexport const getJsRowStyles = memoizeGetStyles(({ css }: Emotion) => {\n return {\n root() {\n return css`\n width: 100%;\n `;\n },\n\n uploadButtonWithFile(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid transparent;\n background: none;\n `;\n },\n\n uploadButton() {\n return css`\n justify-content: space-between;\n `;\n },\n\n uploadButtonWrapper() {\n return css`\n height: inherit;\n width: 100%;\n `;\n },\n\n uploadButtonIconGapSmall(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapSmall};\n `;\n },\n\n uploadButtonIconGapMedium(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapMedium};\n `;\n },\n\n uploadButtonIconGapLarge(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapLarge};\n `;\n },\n\n sizeSmall(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeSmall,\n t.fileUploaderLineHeightSmall,\n t.fileUploaderPaddingXSmall,\n t.fileUploaderPaddingYSmall,\n )};\n `;\n },\n\n sizeMedium(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeMedium,\n t.fileUploaderLineHeightMedium,\n t.fileUploaderPaddingXMedium,\n t.fileUploaderPaddingYMedium,\n )};\n `;\n },\n\n sizeLarge(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeLarge,\n t.fileUploaderLineHeightLarge,\n t.fileUploaderPaddingXLarge,\n t.fileUploaderPaddingYLarge,\n )};\n `;\n },\n\n content() {\n return css`\n display: block;\n width: 100%;\n height: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n `;\n },\n\n contentWithFiles() {\n return css`\n display: flex;\n align-items: center;\n `;\n },\n };\n});\n\nexport const getJsTileStyles = memoizeGetStyles(({ css }: Emotion) => {\n return {\n uploadButton() {\n return css`\n height: 100%;\n justify-content: center;\n flex-direction: column;\n `;\n },\n\n uploadButtonWrapper() {\n return css`\n box-sizing: border-box;\n `;\n },\n\n uploadButtonWrapperSmall(t: Theme) {\n return css`\n width: ${t.fileUploaderTileWidthSmall};\n min-height: ${t.fileUploaderTileMinHeightSmall};\n height: auto;\n `;\n },\n\n uploadButtonWrapperMedium(t: Theme) {\n return css`\n width: ${t.fileUploaderTileWidthMedium};\n min-height: ${t.fileUploaderTileMinHeightMedium};\n height: auto;\n `;\n },\n\n uploadButtonWrapperLarge(t: Theme) {\n return css`\n width: ${t.fileUploaderTileWidthLarge};\n min-height: ${t.fileUploaderTileMinHeightLarge};\n height: auto;\n `;\n },\n\n uploadButtonWrapperEmptyFileSmall(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingSmall};\n height: ${t.fileUploaderTileMinHeightSmall};\n `;\n },\n\n uploadButtonWrapperEmptyFileMedium(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingMedium};\n height: ${t.fileUploaderTileMinHeightMedium};\n `;\n },\n\n uploadButtonWrapperEmptyFileLarge(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingLarge};\n height: ${t.fileUploaderTileMinHeightLarge};\n `;\n },\n\n uploadButtonWithFile(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid transparent;\n background: none;\n justify-content: start;\n `;\n },\n\n uploadButtonIconGapSmall(t: Theme) {\n return css`\n margin-bottom: ${t.inputIconGapSmall};\n `;\n },\n\n uploadButtonIconGapMedium(t: Theme) {\n return css`\n margin-bottom: ${t.inputIconGapMedium};\n `;\n },\n\n uploadButtonIconGapLarge(t: Theme) {\n return css`\n margin-bottom: ${t.inputIconGapLarge};\n `;\n },\n\n uploadButtonTileWithFileSmall(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingSmall};\n `;\n },\n\n uploadButtonTileWithFileMedium(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingMedium};\n `;\n },\n\n uploadButtonTileWithFileLarge(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingLarge};\n `;\n },\n\n sizeSmall(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeSmall,\n t.fileUploaderLineHeightSmall,\n t.fileUploaderTilePaddingSmall,\n t.fileUploaderTilePaddingSmall,\n )};\n `;\n },\n\n sizeMedium(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeMedium,\n t.fileUploaderLineHeightMedium,\n t.fileUploaderTilePaddingMedium,\n t.fileUploaderTilePaddingMedium,\n )};\n `;\n },\n sizeLarge(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeLarge,\n t.fileUploaderLineHeightLarge,\n t.fileUploaderTilePaddingLarge,\n t.fileUploaderTilePaddingLarge,\n )};\n `;\n },\n\n verticalAlign() {\n return css`\n vertical-align: middle;\n `;\n },\n\n content() {\n return css`\n display: block;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: normal;\n overflow-wrap: break-word;\n word-wrap: break-word;\n text-align: center;\n `;\n },\n\n contentWithFiles() {\n return css`\n display: flex;\n align-items: flex-start;\n height: 100%;\n `;\n },\n };\n});\n"]}
@@ -2,9 +2,13 @@ import React from 'react';
2
2
  import type { PropsWithChildren } from 'react';
3
3
  import type { FileUploaderAttachedFile } from './fileUtils.js';
4
4
  export interface FileUploaderControlProviderProps {
5
+ /** Файлы при первом рендере (в одиночном режиме берётся только первый). */
5
6
  initialFiles?: File[];
7
+ /** Вызывается при добавлении файлов через контрол (перед обновлением состояния списка). */
6
8
  onAttach?: (files: FileUploaderAttachedFile[]) => void;
9
+ /** Вызывается при удалении файла. */
7
10
  onRemove?: (fileId: string) => void;
11
+ /** Вызывается при любом изменении массива прикреплённых файлов. */
8
12
  onValueChange?: (files: FileUploaderAttachedFile[]) => void;
9
13
  }
10
14
  export declare const FileUploaderControlProvider: React.MemoExoticComponent<(props: PropsWithChildren<FileUploaderControlProviderProps & {
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploaderControlProvider.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploaderControlProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useState } from 'react';\nimport type { PropsWithChildren } from 'react';\n\nimport { useEffectWithoutInitCall } from '../../hooks/useEffectWithoutInitCall.js';\nimport { useMemoObject } from '../../hooks/useMemoObject.js';\nimport { FileUploaderControlContext } from './FileUploaderControlContext.js';\nimport { FileUploaderFileValidationResult } from './FileUploaderFileValidationResult.js';\nimport { FileUploaderFileStatus, getAttachedFile } from './fileUtils.js';\nimport type { FileUploaderAttachedFile } from './fileUtils.js';\nimport { useControlLocale } from './hooks/useControlLocale.js';\n\nexport interface FileUploaderControlProviderProps {\n initialFiles?: File[];\n onAttach?: (files: FileUploaderAttachedFile[]) => void;\n onRemove?: (fileId: string) => void;\n onValueChange?: (files: FileUploaderAttachedFile[]) => void;\n}\n\nconst updateFile = (\n files: FileUploaderAttachedFile[],\n fileId: string,\n getFileUpdatedProps: (file: FileUploaderAttachedFile) => Partial<FileUploaderAttachedFile>,\n): FileUploaderAttachedFile[] => {\n const fileIndex = files.findIndex((file) => file.id === fileId);\n if (fileIndex === -1) {\n return files;\n }\n\n const newFiles = [...files];\n const file = files[fileIndex];\n\n const updatedProps = getFileUpdatedProps(file);\n\n newFiles[fileIndex] = {\n ...file,\n ...updatedProps,\n };\n\n return newFiles;\n};\n\nexport const FileUploaderControlProvider = React.memo(\n (\n props: PropsWithChildren<\n FileUploaderControlProviderProps & {\n multiple?: boolean;\n }\n >,\n ) => {\n const { initialFiles, multiple, children, onValueChange, onRemove, onAttach } = props;\n\n const [files, setFiles] = useState<FileUploaderAttachedFile[]>(() => {\n if (initialFiles && initialFiles.length > 0) {\n const attachedFiles = initialFiles.map((item: File) => getAttachedFile(item));\n\n return multiple ? attachedFiles : [attachedFiles[0]];\n }\n return [];\n });\n const locale = useControlLocale();\n\n useEffectWithoutInitCall(() => {\n onValueChange?.(files);\n }, [files]);\n\n const setFileStatus = useCallback(\n (fileId: string, status: FileUploaderFileStatus) => {\n setFiles((files) =>\n updateFile(files, fileId, (file) => ({\n status,\n validationResult:\n status === FileUploaderFileStatus.Error || status === FileUploaderFileStatus.Warning\n ? FileUploaderFileValidationResult.error(locale.requestErrorText)\n : file.validationResult,\n })),\n );\n },\n [locale],\n );\n\n const handleExternalSetFiles = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n onAttach?.(files);\n setFiles((state) => [...state, ...files]);\n },\n [onAttach],\n );\n\n const removeFile = useCallback(\n (fileId: string) => {\n onRemove?.(fileId);\n setFiles((state) => state.filter((file) => file.id !== fileId));\n },\n [onRemove],\n );\n\n const setFileValidationResult = useCallback(\n (fileId: string, validationResult: FileUploaderFileValidationResult, status?: FileUploaderFileStatus) => {\n setFiles((files) => updateFile(files, fileId, () => ({ validationResult, status })));\n },\n [],\n );\n\n const reset = React.useCallback(() => {\n setFiles(() => [] as FileUploaderAttachedFile[]);\n }, []);\n\n return (\n <FileUploaderControlContext.Provider\n value={useMemoObject({\n setFileStatus,\n files,\n setFiles: handleExternalSetFiles,\n removeFile,\n setFileValidationResult,\n reset,\n })}\n >\n {children}\n </FileUploaderControlContext.Provider>\n );\n },\n);\n\nFileUploaderControlProvider.displayName = 'FileUploaderControlProvider';\n"]}
1
+ {"version":3,"file":"FileUploaderControlProvider.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploaderControlProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useState } from 'react';\nimport type { PropsWithChildren } from 'react';\n\nimport { useEffectWithoutInitCall } from '../../hooks/useEffectWithoutInitCall.js';\nimport { useMemoObject } from '../../hooks/useMemoObject.js';\nimport { FileUploaderControlContext } from './FileUploaderControlContext.js';\nimport { FileUploaderFileValidationResult } from './FileUploaderFileValidationResult.js';\nimport { FileUploaderFileStatus, getAttachedFile } from './fileUtils.js';\nimport type { FileUploaderAttachedFile } from './fileUtils.js';\nimport { useControlLocale } from './hooks/useControlLocale.js';\n\nexport interface FileUploaderControlProviderProps {\n /** Файлы при первом рендере (в одиночном режиме берётся только первый). */\n initialFiles?: File[];\n /** Вызывается при добавлении файлов через контрол (перед обновлением состояния списка). */\n onAttach?: (files: FileUploaderAttachedFile[]) => void;\n /** Вызывается при удалении файла. */\n onRemove?: (fileId: string) => void;\n /** Вызывается при любом изменении массива прикреплённых файлов. */\n onValueChange?: (files: FileUploaderAttachedFile[]) => void;\n}\n\nconst updateFile = (\n files: FileUploaderAttachedFile[],\n fileId: string,\n getFileUpdatedProps: (file: FileUploaderAttachedFile) => Partial<FileUploaderAttachedFile>,\n): FileUploaderAttachedFile[] => {\n const fileIndex = files.findIndex((file) => file.id === fileId);\n if (fileIndex === -1) {\n return files;\n }\n\n const newFiles = [...files];\n const file = files[fileIndex];\n\n const updatedProps = getFileUpdatedProps(file);\n\n newFiles[fileIndex] = {\n ...file,\n ...updatedProps,\n };\n\n return newFiles;\n};\n\nexport const FileUploaderControlProvider = React.memo(\n (\n props: PropsWithChildren<\n FileUploaderControlProviderProps & {\n multiple?: boolean;\n }\n >,\n ) => {\n const { initialFiles, multiple, children, onValueChange, onRemove, onAttach } = props;\n\n const [files, setFiles] = useState<FileUploaderAttachedFile[]>(() => {\n if (initialFiles && initialFiles.length > 0) {\n const attachedFiles = initialFiles.map((item: File) => getAttachedFile(item));\n\n return multiple ? attachedFiles : [attachedFiles[0]];\n }\n return [];\n });\n const locale = useControlLocale();\n\n useEffectWithoutInitCall(() => {\n onValueChange?.(files);\n }, [files]);\n\n const setFileStatus = useCallback(\n (fileId: string, status: FileUploaderFileStatus) => {\n setFiles((files) =>\n updateFile(files, fileId, (file) => ({\n status,\n validationResult:\n status === FileUploaderFileStatus.Error || status === FileUploaderFileStatus.Warning\n ? FileUploaderFileValidationResult.error(locale.requestErrorText)\n : file.validationResult,\n })),\n );\n },\n [locale],\n );\n\n const handleExternalSetFiles = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n onAttach?.(files);\n setFiles((state) => [...state, ...files]);\n },\n [onAttach],\n );\n\n const removeFile = useCallback(\n (fileId: string) => {\n onRemove?.(fileId);\n setFiles((state) => state.filter((file) => file.id !== fileId));\n },\n [onRemove],\n );\n\n const setFileValidationResult = useCallback(\n (fileId: string, validationResult: FileUploaderFileValidationResult, status?: FileUploaderFileStatus) => {\n setFiles((files) => updateFile(files, fileId, () => ({ validationResult, status })));\n },\n [],\n );\n\n const reset = React.useCallback(() => {\n setFiles(() => [] as FileUploaderAttachedFile[]);\n }, []);\n\n return (\n <FileUploaderControlContext.Provider\n value={useMemoObject({\n setFileStatus,\n files,\n setFiles: handleExternalSetFiles,\n removeFile,\n setFileValidationResult,\n reset,\n })}\n >\n {children}\n </FileUploaderControlContext.Provider>\n );\n },\n);\n\nFileUploaderControlProvider.displayName = 'FileUploaderControlProvider';\n"]}
@@ -4,37 +4,45 @@ import type { PopupPositionsType, ShortPopupPositionsType } from '../../internal
4
4
  import type { SizeProp } from '../../lib/types/props.js';
5
5
  import type { FileUploaderAttachedFile, FileUploaderView } from './fileUtils.js';
6
6
  export interface FileUploaderFileProps extends CommonProps {
7
+ /** Данные файла и статусы из контекста `FileUploader`. */
7
8
  file: FileUploaderAttachedFile;
9
+ /** Включает отображение размера файла рядом с именем. */
8
10
  showSize?: boolean;
11
+ /** Фон превью в плиточном виде (URL изображения). */
9
12
  previewImg?: string;
13
+ /** Включает мультивыбор файлов. */
10
14
  multiple?: boolean;
15
+ /** Блокирует строку файла. */
11
16
  disabled?: boolean;
17
+ /** Переводит строку файла в состояние "наведенное". */
12
18
  hovered?: boolean;
19
+ /** Переводит строку файла в состояние "фокус". */
13
20
  focused?: boolean;
21
+ /** Размер контрола и вложенных элементов.
22
+ * @default small */
14
23
  size: SizeProp;
15
- /** Вид контрола
16
- * - `row` — стандартное отображение в виде инпута
17
- * - `tile` — вид карточки/плитки
24
+ /** Внешний вид: строка (`row`) или плитка (`tile`).
18
25
  * @default row
19
26
  */
20
27
  view?: FileUploaderView;
21
- /** Состояние ошибки контрола файла */
28
+ /** Переводит строку файла в состояние валидации "ошибка". */
22
29
  error?: boolean;
23
- /** Состояние предупреждения контрола файла */
30
+ /** Переводит строку файла в состояние валидации "предупреждение". */
24
31
  warning?: boolean;
25
- /** Валидация с тултипом */
32
+ /** Включает отображение текста валидации во всплывающей подсказке (и в плитке по умолчанию). */
26
33
  withValidationTooltip?: boolean;
27
- /** Задает приоритетное расположение подсказки относительно контрола */
34
+ /** Расположение тултипа с текстом валидации. */
28
35
  validationTooltipPosition?: ShortPopupPositionsType | PopupPositionsType;
29
- /** Использовать иконку для ворнинга (восклицательный знак)*/
36
+ /** Включает отображение иконки предупреждения (восклицательный знак) при статусе предупреждения у файла. */
30
37
  withWarningIcon?: boolean;
38
+ /** Удаляет файл по `id`. */
31
39
  onRemove(id: string): void;
32
40
  /**
33
- * Добавляет иконку типа файла
41
+ * Замена стандартной иконки типа файла.
34
42
  */
35
43
  fileTypeIcon?: React.ReactElement;
36
44
  /**
37
- * Задаёт показ подсказки с полным именем файла
45
+ * Включает отображение подсказки с полным именем при обрезке текста (через `Hint`).
38
46
  * @default true
39
47
  */
40
48
  showFilenameHint?: boolean;
@@ -48,6 +56,6 @@ export declare const FileUploaderFileDataTids: {
48
56
  readonly fileTypeIcon: "FileUploader__fileTypeIcon";
49
57
  };
50
58
  /**
51
- * Компонент файла `FileUploaderFile` из FileUploader для отрисовки загруженного файла.
59
+ * `FileUploaderFile` показывает одну строку файла внутри `FileUploader`: имя, тип, размер, статусы и удаление.
52
60
  */
53
61
  export declare const FileUploaderFile: import("../../lib/forwardRefAndName.js").ReactUIComponentWithRef<HTMLDivElement, FileUploaderFileProps> & Record<never, never>;
@@ -83,7 +83,7 @@ export var FileUploaderFileDataTids = {
83
83
  fileTypeIcon: 'FileUploader__fileTypeIcon',
84
84
  };
85
85
  /**
86
- * Компонент файла `FileUploaderFile` из FileUploader для отрисовки загруженного файла.
86
+ * `FileUploaderFile` показывает одну строку файла внутри `FileUploader`: имя, тип, размер, статусы и удаление.
87
87
  */
88
88
  export var FileUploaderFile = forwardRefAndName('FileUploaderFile', function (props, ref) {
89
89
  var _a, _b, _c;