@skbkontur/react-ui 6.0.4 → 6.0.6

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 (78) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/components/ComboBox/ComboBox.d.ts +2 -0
  3. package/components/ComboBox/ComboBox.js.map +1 -1
  4. package/components/Dropdown/Dropdown.d.ts +2 -0
  5. package/components/Dropdown/Dropdown.js +1 -0
  6. package/components/Dropdown/Dropdown.js.map +1 -1
  7. package/components/DropdownMenu/DropdownMenu.d.ts +16 -15
  8. package/components/DropdownMenu/DropdownMenu.js +3 -1
  9. package/components/DropdownMenu/DropdownMenu.js.map +1 -1
  10. package/components/FileUploader/FileUploader.d.ts +28 -30
  11. package/components/FileUploader/FileUploader.js.map +1 -1
  12. package/components/FileUploader/FileUploader.styles.d.ts +0 -1
  13. package/components/FileUploader/FileUploader.styles.js +4 -4
  14. package/components/FileUploader/FileUploader.styles.js.map +1 -1
  15. package/components/FileUploader/FileUploaderControlProvider.d.ts +4 -0
  16. package/components/FileUploader/FileUploaderControlProvider.js.map +1 -1
  17. package/components/FileUploader/FileUploaderFile.d.ts +19 -11
  18. package/components/FileUploader/FileUploaderFile.js +1 -1
  19. package/components/FileUploader/FileUploaderFile.js.map +1 -1
  20. package/components/Group/Group.d.ts +2 -4
  21. package/components/Group/Group.js +1 -3
  22. package/components/Group/Group.js.map +1 -1
  23. package/components/MenuFooter/MenuFooter.d.ts +4 -8
  24. package/components/MenuFooter/MenuFooter.js +1 -5
  25. package/components/MenuFooter/MenuFooter.js.map +1 -1
  26. package/components/MenuHeader/MenuHeader.d.ts +4 -8
  27. package/components/MenuHeader/MenuHeader.js +1 -5
  28. package/components/MenuHeader/MenuHeader.js.map +1 -1
  29. package/components/MenuItem/MenuItem.d.ts +11 -13
  30. package/components/MenuItem/MenuItem.js +1 -3
  31. package/components/MenuItem/MenuItem.js.map +1 -1
  32. package/components/MenuSeparator/MenuSeparator.d.ts +1 -3
  33. package/components/MenuSeparator/MenuSeparator.js +1 -3
  34. package/components/MenuSeparator/MenuSeparator.js.map +1 -1
  35. package/components/Modal/ModalFooter.d.ts +1 -1
  36. package/components/Modal/ModalFooter.js.map +1 -1
  37. package/components/ResponsiveLayout/ResponsiveLayout.d.ts +2 -2
  38. package/components/ResponsiveLayout/ResponsiveLayout.js +1 -1
  39. package/components/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  40. package/components/ScrollContainer/ScrollBar.d.ts +4 -4
  41. package/components/ScrollContainer/ScrollBar.js.map +1 -1
  42. package/components/ScrollContainer/ScrollContainer.d.ts +17 -12
  43. package/components/ScrollContainer/ScrollContainer.js +6 -1
  44. package/components/ScrollContainer/ScrollContainer.js.map +1 -1
  45. package/components/Select/Select.d.ts +2 -0
  46. package/components/Select/Select.js +2 -2
  47. package/components/Select/Select.js.map +1 -1
  48. package/components/SidePage/SidePage.d.ts +19 -20
  49. package/components/SidePage/SidePage.js +5 -6
  50. package/components/SidePage/SidePage.js.map +1 -1
  51. package/components/SidePage/SidePageBody.d.ts +1 -1
  52. package/components/SidePage/SidePageBody.js +1 -1
  53. package/components/SidePage/SidePageBody.js.map +1 -1
  54. package/components/SidePage/SidePageContainer.d.ts +1 -1
  55. package/components/SidePage/SidePageContainer.js +1 -1
  56. package/components/SidePage/SidePageContainer.js.map +1 -1
  57. package/components/SidePage/SidePageFooter.d.ts +4 -4
  58. package/components/SidePage/SidePageFooter.js +1 -1
  59. package/components/SidePage/SidePageFooter.js.map +1 -1
  60. package/components/SidePage/SidePageHeader.d.ts +5 -4
  61. package/components/SidePage/SidePageHeader.js +1 -1
  62. package/components/SidePage/SidePageHeader.js.map +1 -1
  63. package/components/Sticky/Sticky.d.ts +8 -4
  64. package/components/Sticky/Sticky.js +5 -1
  65. package/components/Sticky/Sticky.js.map +1 -1
  66. package/components/TooltipMenu/TooltipMenu.d.ts +13 -19
  67. package/components/TooltipMenu/TooltipMenu.js +2 -8
  68. package/components/TooltipMenu/TooltipMenu.js.map +1 -1
  69. package/internal/CustomComboBox/ComboBoxMenu.d.ts +1 -0
  70. package/internal/CustomComboBox/ComboBoxMenu.js +2 -2
  71. package/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  72. package/internal/CustomComboBox/ComboBoxView.d.ts +1 -0
  73. package/internal/CustomComboBox/ComboBoxView.js +2 -2
  74. package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  75. package/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
  76. package/internal/CustomComboBox/CustomComboBox.js +1 -0
  77. package/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  78. package/package.json +3 -2
@@ -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":"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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 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;
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploaderFile.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploaderFile.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { type CommonProps, CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { LoadingIcon } from '../../internal/icons2022/LoadingIcon.js';\nimport type { PopupPositionsType, ShortPopupPositionsType } from '../../internal/Popup/index.js';\nimport { TextWidthHelper } from '../../internal/TextWidthHelper/TextWidthHelper.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { isKeyEnter } from '../../lib/events/keyboard/identifiers.js';\nimport { useKeyListener } from '../../lib/events/keyListener.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useGlobal, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { truncate } from '../../lib/stringUtils.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { formatBytes } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { Hint } from '../Hint/index.js';\nimport { Tooltip } from '../Tooltip/index.js';\nimport { getJsRowStyles, getJsStyles, getJsTileStyles } from './FileUploaderFile.styles.js';\nimport { FileUploaderFileStatusIcon } from './FileUploaderFileStatusIcon.js';\nimport { FileUploaderFileTypeIcon } from './FileUploaderFileTypeIcon.js';\nimport type { FileUploaderAttachedFile, FileUploaderIconType, FileUploaderView } from './fileUtils.js';\nimport { FileUploaderFileStatus, getFileUploaderTypeIcon } from './fileUtils.js';\nimport { useFileUploaderSize } from './hooks/useFileUploaderSize.js';\n\nexport interface FileUploaderFileProps extends CommonProps {\n file: FileUploaderAttachedFile;\n showSize?: boolean;\n previewImg?: string;\n multiple?: boolean;\n disabled?: boolean;\n hovered?: boolean;\n focused?: boolean;\n size: SizeProp;\n /** Вид контрола\n * - `row` — стандартное отображение в виде инпута\n * - `tile` — вид карточки/плитки\n * @default row\n */\n view?: FileUploaderView;\n /** Состояние ошибки контрола файла */\n error?: boolean;\n /** Состояние предупреждения контрола файла */\n warning?: boolean;\n /** Валидация с тултипом */\n withValidationTooltip?: boolean;\n /** Задает приоритетное расположение подсказки относительно контрола */\n validationTooltipPosition?: ShortPopupPositionsType | PopupPositionsType;\n /** Использовать иконку для ворнинга (восклицательный знак)*/\n withWarningIcon?: boolean;\n onRemove(id: string): void;\n /**\n * Добавляет иконку типа файла\n */\n fileTypeIcon?: React.ReactElement;\n /**\n * Задаёт показ подсказки с полным именем файла\n * @default true\n */\n showFilenameHint?: boolean;\n}\n\nconst splitFileNameAndExtension = (filename: string): { name: string; extension: string } => {\n const lastDotIndex = filename.lastIndexOf('.');\n if (lastDotIndex === -1) {\n return { name: filename, extension: '' };\n }\n const name = filename.substring(0, lastDotIndex);\n const extension = filename.substring(lastDotIndex + 1);\n return { name, extension };\n};\n\nconst getTruncatedName = (fileNameWidth: number, fileNameElementWidth: number, name: string, isTileView = false) => {\n if (!fileNameWidth && !fileNameElementWidth) {\n return null;\n }\n\n if (fileNameWidth <= fileNameElementWidth) {\n return name;\n }\n\n const charWidth = Math.ceil(fileNameWidth / name.length);\n const maxCharsCountInSpan = Math.ceil(fileNameElementWidth / charWidth);\n\n if (isTileView) {\n const splitFileName = splitFileNameAndExtension(name);\n return `${truncate(splitFileName.name, maxCharsCountInSpan)}.${splitFileName.extension}`;\n }\n\n return truncate(name, maxCharsCountInSpan);\n};\n\nconst calcTruncatedName = (\n textHelperRef: React.RefObject<TextWidthHelper | null>,\n fileNameElementRef: React.RefObject<HTMLSpanElement | null>,\n name: string,\n isTileView = false,\n) => {\n const fileNameWidth = textHelperRef.current?.getTextWidth() || 0;\n const fileNameElementWidth = isTileView\n ? // даем возможность занять 2 строки с погрешностью в 50%\n getDOMRect(fileNameElementRef.current).width * 1.5\n : getDOMRect(fileNameElementRef.current).width;\n\n return getTruncatedName(fileNameWidth, fileNameElementWidth, name, isTileView);\n};\n\nexport const FileUploaderFileDataTids = {\n file: 'FileUploader__file',\n fileTooltip: 'FileUploader__fileTooltip',\n fileName: 'FileUploader__fileName',\n fileSize: 'FileUploader__fileSize',\n fileIcon: 'FileUploader__fileIcon',\n fileTypeIcon: 'FileUploader__fileTypeIcon',\n} as const;\n\n/**\n * Компонент файла `FileUploaderFile` из FileUploader для отрисовки загруженного файла.\n */\nexport const FileUploaderFile = forwardRefAndName<HTMLDivElement, FileUploaderFileProps>(\n 'FileUploaderFile',\n (props, ref) => {\n const {\n file,\n showSize = false,\n previewImg,\n error,\n warning,\n multiple,\n disabled = false,\n hovered = false,\n focused = false,\n size,\n view = 'row',\n withValidationTooltip,\n validationTooltipPosition,\n withWarningIcon,\n onRemove,\n showFilenameHint: showFullFilename = true,\n fileTypeIcon,\n ...rest\n } = props;\n const { id, originalFile, status, validationResult } = file;\n const { name, size: fileSize } = originalFile;\n\n const [hoveredFile, setHoveredFile] = useState<boolean>(hovered || false);\n const [focusedByTab, setFocusedByTab] = useState(focused || false);\n const [truncatedFileName, setTruncatedFileName] = useState<Nullable<string>>(null);\n\n const textHelperRef = useRef<TextWidthHelper>(null);\n const fileNameElementRef = useRef<HTMLSpanElement>(null);\n\n const theme = useContext(ThemeContext);\n const globalObject = useGlobal();\n\n const { cx } = useEmotion();\n const keyListener = useKeyListener();\n const jsStyles = useStyles(getJsStyles);\n const jsRowStyles = useStyles(getJsRowStyles);\n const jsTileStyles = useStyles(getJsTileStyles);\n\n const isLoading = status === FileUploaderFileStatus.Loading;\n const isTileView = view === 'tile';\n const jsViewStyles = isTileView ? jsTileStyles : jsRowStyles;\n const validationTooltipPositionByView = validationTooltipPosition || (isTileView ? 'top center' : 'top left');\n\n const formattedSize = useMemo(() => formatBytes(fileSize, 1), [fileSize]);\n\n useEffect(() => {\n const truncatedName = calcTruncatedName(textHelperRef, fileNameElementRef, name, isTileView);\n\n setTruncatedFileName(truncatedName);\n });\n\n const handleRemove = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n onRemove(id);\n },\n [id, onRemove],\n );\n\n const { isValid, message } = validationResult;\n\n const isError = file.status === FileUploaderFileStatus.Error || error;\n const isWarning = file.status === FileUploaderFileStatus.Warning || warning;\n const isInvalid = isError || !isValid;\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsViewStyles.iconSmall(theme),\n medium: jsViewStyles.iconMedium(theme),\n large: jsViewStyles.iconLarge(theme),\n });\n\n const renderTooltipContent = useCallback((): ReactNode => {\n return !isValid && !error && message ? message : null;\n }, [isValid, error, message]);\n\n const sizeNameBlockClass = useFileUploaderSize(size, {\n small: jsStyles.contentSmall(theme),\n medium: jsStyles.contentMedium(theme),\n large: jsStyles.contentLarge(theme),\n });\n\n const sizeViewNameBlockClass = useFileUploaderSize(size, {\n small: jsViewStyles.contentSmall(theme),\n medium: jsViewStyles.contentMedium(theme),\n large: jsViewStyles.contentLarge(theme),\n });\n\n const validationTextClassName = cx({\n [jsStyles.validationTextWarning(theme)]: isWarning,\n [jsStyles.validationTextError(theme)]: isError,\n });\n\n const contentClassNames = cx(jsStyles.content(), jsViewStyles.content());\n const nameTextClassNames = cx(jsViewStyles.name(), isTileView && !disabled && validationTextClassName);\n\n const handleMouseEnter = useCallback(() => {\n setHoveredFile(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHoveredFile(false);\n }, []);\n\n const handleFocus = useCallback(() => {\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 }, []);\n\n const handleBlur = useCallback(() => {\n setFocusedByTab(false);\n }, []);\n\n const handleIconKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEnter(e)) {\n onRemove(id);\n }\n },\n [onRemove, id],\n );\n\n const iconClassNames = cx(jsStyles.icon(theme), {\n [sizeIconClass]: true,\n [jsTileStyles.iconAction(theme)]: isTileView,\n [jsTileStyles.iconActionShow()]: isTileView && !disabled && (hovered || hoveredFile || focused || focusedByTab),\n });\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsStyles.sizeSmall(theme),\n medium: jsStyles.sizeMedium(theme),\n large: jsStyles.sizeLarge(theme),\n });\n\n const sizeClassNames = cx(\n jsStyles.size(theme),\n sizeClassName,\n jsViewStyles.size(theme),\n isTileView && disabled && jsTileStyles.sizeDisabled(theme),\n );\n\n const sizeFileTypeIconClass = useFileUploaderSize(size, {\n small: jsViewStyles.fileTypeIconSmall(theme),\n medium: jsViewStyles.fileTypeIconMedium(theme),\n large: jsViewStyles.fileTypeIconLarge(theme),\n });\n\n const isTruncated = truncatedFileName !== name;\n\n const fileTypeIconClassName = cx(\n sizeFileTypeIconClass,\n disabled && jsStyles.disabledFileTypeIconSvg(theme),\n isTileView && {\n [jsTileStyles.fileTypeIcon(theme)]: true,\n [jsTileStyles.fileTypeIconPreview()]: !!previewImg,\n [jsTileStyles.disabledFileTypeIcon(theme)]: disabled,\n [jsTileStyles.warningFileTypeIcon(theme)]: isWarning,\n [jsTileStyles.errorFileTypeIcon(theme)]: isError,\n },\n multiple && jsStyles.fileTypeIconMultiple(),\n );\n\n const nameBlockClassNames = cx(\n sizeNameBlockClass,\n sizeViewNameBlockClass,\n jsStyles.nameBlock(),\n disabled && jsViewStyles.disabled(theme),\n jsViewStyles.nameBlock(),\n );\n\n const fileType: FileUploaderIconType = getFileUploaderTypeIcon(\n file.originalFile,\n isError,\n isWarning && !!withWarningIcon,\n );\n const icon =\n isTileView && isLoading ? (\n <LoadingIcon size={size} />\n ) : (\n (fileTypeIcon ?? <FileUploaderFileTypeIcon type={fileType} size={size} view={view} />)\n );\n\n const splitTruncatedFileName = truncatedFileName && splitFileNameAndExtension(truncatedFileName);\n\n return (\n <CommonWrapper {...rest}>\n <div\n data-tid={FileUploaderFileDataTids.file}\n className={jsStyles.root()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n ref={ref}\n >\n <Tooltip\n data-tid={FileUploaderFileDataTids.fileTooltip}\n pos={validationTooltipPositionByView}\n render={() => (withValidationTooltip || isTileView ? renderTooltipContent() : null)}\n >\n <div className={contentClassNames}>\n {\n <div\n data-tid={FileUploaderFileDataTids.fileTypeIcon}\n className={fileTypeIconClassName}\n style={previewImg ? { backgroundImage: `url(${previewImg})` } : undefined}\n >\n {(!isTileView || !previewImg) && icon}\n </div>\n }\n <div className={nameBlockClassNames}>\n <TextWidthHelper ref={textHelperRef} text={name} />\n <Hint maxWidth={'100%'} text={showFullFilename && isTruncated ? name : null}>\n <span\n data-tid={FileUploaderFileDataTids.fileName}\n ref={fileNameElementRef}\n className={nameTextClassNames}\n >\n {splitTruncatedFileName && (\n <>\n {splitTruncatedFileName.name}\n {splitTruncatedFileName.extension && <span>.{splitTruncatedFileName.extension}</span>}\n </>\n )}\n </span>\n </Hint>\n {!(withValidationTooltip || isTileView) && (\n <span className={validationTextClassName}>{renderTooltipContent()}</span>\n )}\n </div>\n {showSize && formattedSize && (\n <span data-tid={FileUploaderFileDataTids.fileSize} className={sizeClassNames}>\n {formattedSize}\n </span>\n )}\n <div\n className={iconClassNames}\n data-tid={FileUploaderFileDataTids.fileIcon}\n tabIndex={0}\n onClick={handleRemove}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleIconKeyDown}\n >\n <FileUploaderFileStatusIcon\n isTileView={isTileView}\n status={status}\n disabled={disabled}\n hovered={hovered || hoveredFile}\n focusedByTab={focused || focusedByTab}\n isInvalid={isInvalid}\n hasValidation={isError || isWarning}\n size={size}\n />\n </div>\n </div>\n </Tooltip>\n </div>\n </CommonWrapper>\n );\n },\n);\n"]}
1
+ {"version":3,"file":"FileUploaderFile.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploaderFile.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG7F,OAAO,EAAoB,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AA+CrE,IAAM,yBAAyB,GAAG,UAAC,QAAgB;IACjD,IAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC3C,CAAC;IACD,IAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACjD,IAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;IACvD,OAAO,EAAE,IAAI,MAAA,EAAE,SAAS,WAAA,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,IAAM,gBAAgB,GAAG,UAAC,aAAqB,EAAE,oBAA4B,EAAE,IAAY,EAAE,UAAkB;IAAlB,2BAAA,EAAA,kBAAkB;IAC7G,IAAI,CAAC,aAAa,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,aAAa,IAAI,oBAAoB,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACzD,IAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;IAExE,IAAI,UAAU,EAAE,CAAC;QACf,IAAM,aAAa,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO,UAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,mBAAmB,CAAC,cAAI,aAAa,CAAC,SAAS,CAAE,CAAC;IAC3F,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,IAAM,iBAAiB,GAAG,UACxB,aAAsD,EACtD,kBAA2D,EAC3D,IAAY,EACZ,UAAkB;;IAAlB,2BAAA,EAAA,kBAAkB;IAElB,IAAM,aAAa,GAAG,CAAA,MAAA,aAAa,CAAC,OAAO,0CAAE,YAAY,EAAE,KAAI,CAAC,CAAC;IACjE,IAAM,oBAAoB,GAAG,UAAU;QACrC,CAAC,CAAC,wDAAwD;YACxD,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,GAAG;QACpD,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;IAEjD,OAAO,gBAAgB,CAAC,aAAa,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AACjF,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,2BAA2B;IACxC,QAAQ,EAAE,wBAAwB;IAClC,QAAQ,EAAE,wBAAwB;IAClC,QAAQ,EAAE,wBAAwB;IAClC,YAAY,EAAE,4BAA4B;CAClC,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,IAAM,gBAAgB,GAAG,iBAAiB,CAC/C,kBAAkB,EAClB,UAAC,KAAK,EAAE,GAAG;;IAEP,IAAA,IAAI,GAkBF,KAAK,KAlBH,EACJ,KAiBE,KAAK,SAjBS,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAChB,UAAU,GAgBR,KAAK,WAhBG,EACV,KAAK,GAeH,KAAK,MAfF,EACL,OAAO,GAcL,KAAK,QAdA,EACP,QAAQ,GAaN,KAAK,SAbC,EACR,KAYE,KAAK,SAZS,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAChB,KAWE,KAAK,QAXQ,EAAf,OAAO,mBAAG,KAAK,KAAA,EACf,KAUE,KAAK,QAVQ,EAAf,OAAO,mBAAG,KAAK,KAAA,EACf,IAAI,GASF,KAAK,KATH,EACJ,KAQE,KAAK,KARK,EAAZ,IAAI,mBAAG,KAAK,KAAA,EACZ,qBAAqB,GAOnB,KAAK,sBAPc,EACrB,yBAAyB,GAMvB,KAAK,0BANkB,EACzB,eAAe,GAKb,KAAK,gBALQ,EACf,QAAQ,GAIN,KAAK,SAJC,EACR,KAGE,KAAK,iBAHkC,EAAvB,gBAAgB,mBAAG,IAAI,KAAA,EACzC,YAAY,GAEV,KAAK,aAFK,EACT,IAAI,UACL,KAAK,EAnBH,6OAmBL,CADQ,CACC;IACF,IAAA,EAAE,GAA6C,IAAI,GAAjD,EAAE,YAAY,GAA+B,IAAI,aAAnC,EAAE,MAAM,GAAuB,IAAI,OAA3B,EAAE,gBAAgB,GAAK,IAAI,iBAAT,CAAU;IACpD,IAAA,IAAI,GAAqB,YAAY,KAAjC,EAAQ,QAAQ,GAAK,YAAY,KAAjB,CAAkB;IAExC,IAAA,KAAgC,QAAQ,CAAU,OAAO,IAAI,KAAK,CAAC,EAAlE,WAAW,QAAA,EAAE,cAAc,QAAuC,CAAC;IACpE,IAAA,KAAkC,QAAQ,CAAC,OAAO,IAAI,KAAK,CAAC,EAA3D,YAAY,QAAA,EAAE,eAAe,QAA8B,CAAC;IAC7D,IAAA,KAA4C,QAAQ,CAAmB,IAAI,CAAC,EAA3E,iBAAiB,QAAA,EAAE,oBAAoB,QAAoC,CAAC;IAEnF,IAAM,aAAa,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAC;IACpD,IAAM,kBAAkB,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAC;IAEzD,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACvC,IAAM,YAAY,GAAG,SAAS,EAAE,CAAC;IAEzB,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,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;IAEhD,IAAM,SAAS,GAAG,MAAM,KAAK,sBAAsB,CAAC,OAAO,CAAC;IAC5D,IAAM,UAAU,GAAG,IAAI,KAAK,MAAM,CAAC;IACnC,IAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;IAC7D,IAAM,+BAA+B,GAAG,yBAAyB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAE9G,IAAM,aAAa,GAAG,OAAO,CAAC,cAAM,OAAA,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAxB,CAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE1E,SAAS,CAAC;QACR,IAAM,aAAa,GAAG,iBAAiB,CAAC,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAE7F,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,IAAM,YAAY,GAAG,WAAW,CAC9B,UAAC,KAAoC;QACnC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,QAAQ,CAAC,EAAE,CAAC,CAAC;IACf,CAAC,EACD,CAAC,EAAE,EAAE,QAAQ,CAAC,CACf,CAAC;IAEM,IAAA,OAAO,GAAc,gBAAgB,QAA9B,EAAE,OAAO,GAAK,gBAAgB,QAArB,CAAsB;IAE9C,IAAM,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,sBAAsB,CAAC,KAAK,IAAI,KAAK,CAAC;IACtE,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,KAAK,sBAAsB,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5E,IAAM,SAAS,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC;IAEtC,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,oBAAoB,GAAG,WAAW,CAAC;QACvC,OAAO,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAE9B,IAAM,kBAAkB,GAAG,mBAAmB,CAAC,IAAI,EAAE;QACnD,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;QACnC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QACrC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;KACpC,CAAC,CAAC;IAEH,IAAM,sBAAsB,GAAG,mBAAmB,CAAC,IAAI,EAAE;QACvD,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC;QACvC,MAAM,EAAE,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC;QACzC,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC;KACxC,CAAC,CAAC;IAEH,IAAM,uBAAuB,GAAG,EAAE;QAChC,GAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAG,SAAS;QAClD,GAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAG,OAAO;YAC9C,CAAC;IAEH,IAAM,iBAAiB,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,IAAM,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,UAAU,IAAI,CAAC,QAAQ,IAAI,uBAAuB,CAAC,CAAC;IAEvG,IAAM,gBAAgB,GAAG,WAAW,CAAC;QACnC,cAAc,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,gBAAgB,GAAG,WAAW,CAAC;QACnC,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,WAAW,GAAG,WAAW,CAAC;;QAC9B,iDAAiD;QACjD,6CAA6C;QAC7C,MAAA,YAAY,CAAC,qBAAqB,6DAAG;YACnC,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;gBAC7B,eAAe,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,UAAU,GAAG,WAAW,CAAC;QAC7B,eAAe,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,iBAAiB,GAAG,WAAW,CACnC,UAAC,CAAmC;QAClC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,QAAQ,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;IACH,CAAC,EACD,CAAC,QAAQ,EAAE,EAAE,CAAC,CACf,CAAC;IAEF,IAAM,cAAc,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5C,GAAC,aAAa,IAAG,IAAI;QACrB,GAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,IAAG,UAAU;QAC5C,GAAC,YAAY,CAAC,cAAc,EAAE,IAAG,UAAU,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,WAAW,IAAI,OAAO,IAAI,YAAY,CAAC;YAC/G,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,cAAc,GAAG,EAAE,CACvB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EACpB,aAAa,EACb,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EACxB,UAAU,IAAI,QAAQ,IAAI,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAC3D,CAAC;IAEF,IAAM,qBAAqB,GAAG,mBAAmB,CAAC,IAAI,EAAE;QACtD,KAAK,EAAE,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC;QAC5C,MAAM,EAAE,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAC9C,KAAK,EAAE,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC;KAC7C,CAAC,CAAC;IAEH,IAAM,WAAW,GAAG,iBAAiB,KAAK,IAAI,CAAC;IAE/C,IAAM,qBAAqB,GAAG,EAAE,CAC9B,qBAAqB,EACrB,QAAQ,IAAI,QAAQ,CAAC,uBAAuB,CAAC,KAAK,CAAC,EACnD,UAAU;QACR,GAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,IAAG,IAAI;QACxC,GAAC,YAAY,CAAC,mBAAmB,EAAE,IAAG,CAAC,CAAC,UAAU;QAClD,GAAC,YAAY,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAG,QAAQ;QACpD,GAAC,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAG,SAAS;QACpD,GAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAG,OAAO;WACjD,EACD,QAAQ,IAAI,QAAQ,CAAC,oBAAoB,EAAE,CAC5C,CAAC;IAEF,IAAM,mBAAmB,GAAG,EAAE,CAC5B,kBAAkB,EAClB,sBAAsB,EACtB,QAAQ,CAAC,SAAS,EAAE,EACpB,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EACxC,YAAY,CAAC,SAAS,EAAE,CACzB,CAAC;IAEF,IAAM,QAAQ,GAAyB,uBAAuB,CAC5D,IAAI,CAAC,YAAY,EACjB,OAAO,EACP,SAAS,IAAI,CAAC,CAAC,eAAe,CAC/B,CAAC;IACF,IAAM,IAAI,GACR,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,CACxB,oBAAC,WAAW,IAAC,IAAI,EAAE,IAAI,GAAI,CAC5B,CAAC,CAAC,CAAC,CACF,CAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,oBAAC,wBAAwB,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC,CACvF,CAAC;IAEJ,IAAM,sBAAsB,GAAG,iBAAiB,IAAI,yBAAyB,CAAC,iBAAiB,CAAC,CAAC;IAEjG,OAAO,CACL,oBAAC,aAAa,eAAK,IAAI;QACrB,yCACY,wBAAwB,CAAC,IAAI,EACvC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,EAC1B,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,gBAAgB,EAC9B,GAAG,EAAE,GAAG;YAER,oBAAC,OAAO,gBACI,wBAAwB,CAAC,WAAW,EAC9C,GAAG,EAAE,+BAA+B,EACpC,MAAM,EAAE,cAAM,OAAA,CAAC,qBAAqB,IAAI,UAAU,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAArE,CAAqE;gBAEnF,6BAAK,SAAS,EAAE,iBAAiB;oBAE7B,yCACY,wBAAwB,CAAC,YAAY,EAC/C,SAAS,EAAE,qBAAqB,EAChC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,cAAO,UAAU,MAAG,EAAE,CAAC,CAAC,CAAC,SAAS,IAExE,CAAC,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CACjC;oBAER,6BAAK,SAAS,EAAE,mBAAmB;wBACjC,oBAAC,eAAe,IAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,GAAI;wBACnD,oBAAC,IAAI,IAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;4BACzE,0CACY,wBAAwB,CAAC,QAAQ,EAC3C,GAAG,EAAE,kBAAkB,EACvB,SAAS,EAAE,kBAAkB,IAE5B,sBAAsB,IAAI,CACzB;gCACG,sBAAsB,CAAC,IAAI;gCAC3B,sBAAsB,CAAC,SAAS,IAAI;;oCAAQ,sBAAsB,CAAC,SAAS,CAAQ,CACpF,CACJ,CACI,CACF;wBACN,CAAC,CAAC,qBAAqB,IAAI,UAAU,CAAC,IAAI,CACzC,8BAAM,SAAS,EAAE,uBAAuB,IAAG,oBAAoB,EAAE,CAAQ,CAC1E,CACG;oBACL,QAAQ,IAAI,aAAa,IAAI,CAC5B,0CAAgB,wBAAwB,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,IACzE,aAAa,CACT,CACR;oBACD,6BACE,SAAS,EAAE,cAAc,cACf,wBAAwB,CAAC,QAAQ,EAC3C,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,iBAAiB;wBAE5B,oBAAC,0BAA0B,IACzB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,IAAI,WAAW,EAC/B,YAAY,EAAE,OAAO,IAAI,YAAY,EACrC,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,OAAO,IAAI,SAAS,EACnC,IAAI,EAAE,IAAI,GACV,CACE,CACF,CACE,CACN,CACQ,CACjB,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { type CommonProps, CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { LoadingIcon } from '../../internal/icons2022/LoadingIcon.js';\nimport type { PopupPositionsType, ShortPopupPositionsType } from '../../internal/Popup/index.js';\nimport { TextWidthHelper } from '../../internal/TextWidthHelper/TextWidthHelper.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { isKeyEnter } from '../../lib/events/keyboard/identifiers.js';\nimport { useKeyListener } from '../../lib/events/keyListener.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useGlobal, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { truncate } from '../../lib/stringUtils.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { formatBytes } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { Hint } from '../Hint/index.js';\nimport { Tooltip } from '../Tooltip/index.js';\nimport { getJsRowStyles, getJsStyles, getJsTileStyles } from './FileUploaderFile.styles.js';\nimport { FileUploaderFileStatusIcon } from './FileUploaderFileStatusIcon.js';\nimport { FileUploaderFileTypeIcon } from './FileUploaderFileTypeIcon.js';\nimport type { FileUploaderAttachedFile, FileUploaderIconType, FileUploaderView } from './fileUtils.js';\nimport { FileUploaderFileStatus, getFileUploaderTypeIcon } from './fileUtils.js';\nimport { useFileUploaderSize } from './hooks/useFileUploaderSize.js';\n\nexport interface FileUploaderFileProps extends CommonProps {\n /** Данные файла и статусы из контекста `FileUploader`. */\n file: FileUploaderAttachedFile;\n /** Включает отображение размера файла рядом с именем. */\n showSize?: boolean;\n /** Фон превью в плиточном виде (URL изображения). */\n previewImg?: string;\n /** Включает мультивыбор файлов. */\n multiple?: boolean;\n /** Блокирует строку файла. */\n disabled?: boolean;\n /** Переводит строку файла в состояние \"наведенное\". */\n hovered?: boolean;\n /** Переводит строку файла в состояние \"фокус\". */\n focused?: boolean;\n /** Размер контрола и вложенных элементов.\n * @default small */\n size: SizeProp;\n /** Внешний вид: строка (`row`) или плитка (`tile`).\n * @default row\n */\n view?: FileUploaderView;\n /** Переводит строку файла в состояние валидации \"ошибка\". */\n error?: boolean;\n /** Переводит строку файла в состояние валидации \"предупреждение\". */\n warning?: boolean;\n /** Включает отображение текста валидации во всплывающей подсказке (и в плитке по умолчанию). */\n withValidationTooltip?: boolean;\n /** Расположение тултипа с текстом валидации. */\n validationTooltipPosition?: ShortPopupPositionsType | PopupPositionsType;\n /** Включает отображение иконки предупреждения (восклицательный знак) при статусе предупреждения у файла. */\n withWarningIcon?: boolean;\n /** Удаляет файл по `id`. */\n onRemove(id: string): void;\n /**\n * Замена стандартной иконки типа файла.\n */\n fileTypeIcon?: React.ReactElement;\n /**\n * Включает отображение подсказки с полным именем при обрезке текста (через `Hint`).\n * @default true\n */\n showFilenameHint?: boolean;\n}\n\nconst splitFileNameAndExtension = (filename: string): { name: string; extension: string } => {\n const lastDotIndex = filename.lastIndexOf('.');\n if (lastDotIndex === -1) {\n return { name: filename, extension: '' };\n }\n const name = filename.substring(0, lastDotIndex);\n const extension = filename.substring(lastDotIndex + 1);\n return { name, extension };\n};\n\nconst getTruncatedName = (fileNameWidth: number, fileNameElementWidth: number, name: string, isTileView = false) => {\n if (!fileNameWidth && !fileNameElementWidth) {\n return null;\n }\n\n if (fileNameWidth <= fileNameElementWidth) {\n return name;\n }\n\n const charWidth = Math.ceil(fileNameWidth / name.length);\n const maxCharsCountInSpan = Math.ceil(fileNameElementWidth / charWidth);\n\n if (isTileView) {\n const splitFileName = splitFileNameAndExtension(name);\n return `${truncate(splitFileName.name, maxCharsCountInSpan)}.${splitFileName.extension}`;\n }\n\n return truncate(name, maxCharsCountInSpan);\n};\n\nconst calcTruncatedName = (\n textHelperRef: React.RefObject<TextWidthHelper | null>,\n fileNameElementRef: React.RefObject<HTMLSpanElement | null>,\n name: string,\n isTileView = false,\n) => {\n const fileNameWidth = textHelperRef.current?.getTextWidth() || 0;\n const fileNameElementWidth = isTileView\n ? // даем возможность занять 2 строки с погрешностью в 50%\n getDOMRect(fileNameElementRef.current).width * 1.5\n : getDOMRect(fileNameElementRef.current).width;\n\n return getTruncatedName(fileNameWidth, fileNameElementWidth, name, isTileView);\n};\n\nexport const FileUploaderFileDataTids = {\n file: 'FileUploader__file',\n fileTooltip: 'FileUploader__fileTooltip',\n fileName: 'FileUploader__fileName',\n fileSize: 'FileUploader__fileSize',\n fileIcon: 'FileUploader__fileIcon',\n fileTypeIcon: 'FileUploader__fileTypeIcon',\n} as const;\n\n/**\n * `FileUploaderFile` показывает одну строку файла внутри `FileUploader`: имя, тип, размер, статусы и удаление.\n */\nexport const FileUploaderFile = forwardRefAndName<HTMLDivElement, FileUploaderFileProps>(\n 'FileUploaderFile',\n (props, ref) => {\n const {\n file,\n showSize = false,\n previewImg,\n error,\n warning,\n multiple,\n disabled = false,\n hovered = false,\n focused = false,\n size,\n view = 'row',\n withValidationTooltip,\n validationTooltipPosition,\n withWarningIcon,\n onRemove,\n showFilenameHint: showFullFilename = true,\n fileTypeIcon,\n ...rest\n } = props;\n const { id, originalFile, status, validationResult } = file;\n const { name, size: fileSize } = originalFile;\n\n const [hoveredFile, setHoveredFile] = useState<boolean>(hovered || false);\n const [focusedByTab, setFocusedByTab] = useState(focused || false);\n const [truncatedFileName, setTruncatedFileName] = useState<Nullable<string>>(null);\n\n const textHelperRef = useRef<TextWidthHelper>(null);\n const fileNameElementRef = useRef<HTMLSpanElement>(null);\n\n const theme = useContext(ThemeContext);\n const globalObject = useGlobal();\n\n const { cx } = useEmotion();\n const keyListener = useKeyListener();\n const jsStyles = useStyles(getJsStyles);\n const jsRowStyles = useStyles(getJsRowStyles);\n const jsTileStyles = useStyles(getJsTileStyles);\n\n const isLoading = status === FileUploaderFileStatus.Loading;\n const isTileView = view === 'tile';\n const jsViewStyles = isTileView ? jsTileStyles : jsRowStyles;\n const validationTooltipPositionByView = validationTooltipPosition || (isTileView ? 'top center' : 'top left');\n\n const formattedSize = useMemo(() => formatBytes(fileSize, 1), [fileSize]);\n\n useEffect(() => {\n const truncatedName = calcTruncatedName(textHelperRef, fileNameElementRef, name, isTileView);\n\n setTruncatedFileName(truncatedName);\n });\n\n const handleRemove = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n onRemove(id);\n },\n [id, onRemove],\n );\n\n const { isValid, message } = validationResult;\n\n const isError = file.status === FileUploaderFileStatus.Error || error;\n const isWarning = file.status === FileUploaderFileStatus.Warning || warning;\n const isInvalid = isError || !isValid;\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsViewStyles.iconSmall(theme),\n medium: jsViewStyles.iconMedium(theme),\n large: jsViewStyles.iconLarge(theme),\n });\n\n const renderTooltipContent = useCallback((): ReactNode => {\n return !isValid && !error && message ? message : null;\n }, [isValid, error, message]);\n\n const sizeNameBlockClass = useFileUploaderSize(size, {\n small: jsStyles.contentSmall(theme),\n medium: jsStyles.contentMedium(theme),\n large: jsStyles.contentLarge(theme),\n });\n\n const sizeViewNameBlockClass = useFileUploaderSize(size, {\n small: jsViewStyles.contentSmall(theme),\n medium: jsViewStyles.contentMedium(theme),\n large: jsViewStyles.contentLarge(theme),\n });\n\n const validationTextClassName = cx({\n [jsStyles.validationTextWarning(theme)]: isWarning,\n [jsStyles.validationTextError(theme)]: isError,\n });\n\n const contentClassNames = cx(jsStyles.content(), jsViewStyles.content());\n const nameTextClassNames = cx(jsViewStyles.name(), isTileView && !disabled && validationTextClassName);\n\n const handleMouseEnter = useCallback(() => {\n setHoveredFile(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHoveredFile(false);\n }, []);\n\n const handleFocus = useCallback(() => {\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 }, []);\n\n const handleBlur = useCallback(() => {\n setFocusedByTab(false);\n }, []);\n\n const handleIconKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEnter(e)) {\n onRemove(id);\n }\n },\n [onRemove, id],\n );\n\n const iconClassNames = cx(jsStyles.icon(theme), {\n [sizeIconClass]: true,\n [jsTileStyles.iconAction(theme)]: isTileView,\n [jsTileStyles.iconActionShow()]: isTileView && !disabled && (hovered || hoveredFile || focused || focusedByTab),\n });\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsStyles.sizeSmall(theme),\n medium: jsStyles.sizeMedium(theme),\n large: jsStyles.sizeLarge(theme),\n });\n\n const sizeClassNames = cx(\n jsStyles.size(theme),\n sizeClassName,\n jsViewStyles.size(theme),\n isTileView && disabled && jsTileStyles.sizeDisabled(theme),\n );\n\n const sizeFileTypeIconClass = useFileUploaderSize(size, {\n small: jsViewStyles.fileTypeIconSmall(theme),\n medium: jsViewStyles.fileTypeIconMedium(theme),\n large: jsViewStyles.fileTypeIconLarge(theme),\n });\n\n const isTruncated = truncatedFileName !== name;\n\n const fileTypeIconClassName = cx(\n sizeFileTypeIconClass,\n disabled && jsStyles.disabledFileTypeIconSvg(theme),\n isTileView && {\n [jsTileStyles.fileTypeIcon(theme)]: true,\n [jsTileStyles.fileTypeIconPreview()]: !!previewImg,\n [jsTileStyles.disabledFileTypeIcon(theme)]: disabled,\n [jsTileStyles.warningFileTypeIcon(theme)]: isWarning,\n [jsTileStyles.errorFileTypeIcon(theme)]: isError,\n },\n multiple && jsStyles.fileTypeIconMultiple(),\n );\n\n const nameBlockClassNames = cx(\n sizeNameBlockClass,\n sizeViewNameBlockClass,\n jsStyles.nameBlock(),\n disabled && jsViewStyles.disabled(theme),\n jsViewStyles.nameBlock(),\n );\n\n const fileType: FileUploaderIconType = getFileUploaderTypeIcon(\n file.originalFile,\n isError,\n isWarning && !!withWarningIcon,\n );\n const icon =\n isTileView && isLoading ? (\n <LoadingIcon size={size} />\n ) : (\n (fileTypeIcon ?? <FileUploaderFileTypeIcon type={fileType} size={size} view={view} />)\n );\n\n const splitTruncatedFileName = truncatedFileName && splitFileNameAndExtension(truncatedFileName);\n\n return (\n <CommonWrapper {...rest}>\n <div\n data-tid={FileUploaderFileDataTids.file}\n className={jsStyles.root()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n ref={ref}\n >\n <Tooltip\n data-tid={FileUploaderFileDataTids.fileTooltip}\n pos={validationTooltipPositionByView}\n render={() => (withValidationTooltip || isTileView ? renderTooltipContent() : null)}\n >\n <div className={contentClassNames}>\n {\n <div\n data-tid={FileUploaderFileDataTids.fileTypeIcon}\n className={fileTypeIconClassName}\n style={previewImg ? { backgroundImage: `url(${previewImg})` } : undefined}\n >\n {(!isTileView || !previewImg) && icon}\n </div>\n }\n <div className={nameBlockClassNames}>\n <TextWidthHelper ref={textHelperRef} text={name} />\n <Hint maxWidth={'100%'} text={showFullFilename && isTruncated ? name : null}>\n <span\n data-tid={FileUploaderFileDataTids.fileName}\n ref={fileNameElementRef}\n className={nameTextClassNames}\n >\n {splitTruncatedFileName && (\n <>\n {splitTruncatedFileName.name}\n {splitTruncatedFileName.extension && <span>.{splitTruncatedFileName.extension}</span>}\n </>\n )}\n </span>\n </Hint>\n {!(withValidationTooltip || isTileView) && (\n <span className={validationTextClassName}>{renderTooltipContent()}</span>\n )}\n </div>\n {showSize && formattedSize && (\n <span data-tid={FileUploaderFileDataTids.fileSize} className={sizeClassNames}>\n {formattedSize}\n </span>\n )}\n <div\n className={iconClassNames}\n data-tid={FileUploaderFileDataTids.fileIcon}\n tabIndex={0}\n onClick={handleRemove}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleIconKeyDown}\n >\n <FileUploaderFileStatusIcon\n isTileView={isTileView}\n status={status}\n disabled={disabled}\n hovered={hovered || hoveredFile}\n focusedByTab={focused || focusedByTab}\n isInvalid={isInvalid}\n hasValidation={isError || isWarning}\n size={size}\n />\n </div>\n </div>\n </Tooltip>\n </div>\n </CommonWrapper>\n );\n },\n);\n"]}