@webiny/app-admin 5.24.0 → 5.25.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/base/Admin.d.ts +2 -2
  2. package/base/Admin.js +4 -0
  3. package/base/Admin.js.map +1 -0
  4. package/base/Base.js.map +1 -0
  5. package/base/plugins/AddGraphQLQuerySelection.js +3 -2
  6. package/base/plugins/AddGraphQLQuerySelection.js.map +1 -0
  7. package/base/providers/ApolloProvider.js +2 -1
  8. package/base/providers/ApolloProvider.js.map +1 -0
  9. package/base/providers/TelemetryProvider.js.map +1 -0
  10. package/base/providers/UiStateProvider.js.map +1 -0
  11. package/base/providers/ViewCompositionProvider.d.ts +2 -1
  12. package/base/providers/ViewCompositionProvider.js +8 -1
  13. package/base/providers/ViewCompositionProvider.js.map +1 -0
  14. package/base/ui/Brand.d.ts +2 -9
  15. package/base/ui/Brand.js.map +1 -0
  16. package/base/ui/CenteredView.d.ts +1 -5
  17. package/base/ui/CenteredView.js.map +1 -0
  18. package/base/ui/Dashboard.d.ts +2 -9
  19. package/base/ui/Dashboard.js.map +1 -0
  20. package/base/ui/Layout.d.ts +2 -8
  21. package/base/ui/Layout.js.map +1 -0
  22. package/base/ui/LocaleSelector.d.ts +2 -9
  23. package/base/ui/LocaleSelector.js.map +1 -0
  24. package/base/ui/LoginScreen.d.ts +2 -5
  25. package/base/ui/LoginScreen.js.map +1 -0
  26. package/base/ui/Logo.d.ts +3 -9
  27. package/base/ui/Logo.js.map +1 -0
  28. package/base/ui/Menu.d.ts +3 -12
  29. package/base/ui/Menu.js +9 -5
  30. package/base/ui/Menu.js.map +1 -0
  31. package/base/ui/Navigation.d.ts +6 -15
  32. package/base/ui/Navigation.js +20 -3
  33. package/base/ui/Navigation.js.map +1 -0
  34. package/base/ui/NotFound.d.ts +2 -9
  35. package/base/ui/NotFound.js.map +1 -0
  36. package/base/ui/Search.d.ts +3 -9
  37. package/base/ui/Search.js +6 -1
  38. package/base/ui/Search.js.map +1 -0
  39. package/base/ui/Tags.d.ts +3 -1
  40. package/base/ui/Tags.js.map +1 -0
  41. package/base/ui/UserMenu.d.ts +7 -28
  42. package/base/ui/UserMenu.js +15 -2
  43. package/base/ui/UserMenu.js.map +1 -0
  44. package/components/AdminLayout.js.map +1 -0
  45. package/components/AppInstaller/AppInstaller.js.map +1 -0
  46. package/components/AppInstaller/Sidebar.js +2 -1
  47. package/components/AppInstaller/Sidebar.js.map +1 -0
  48. package/components/AppInstaller/index.d.ts +0 -1
  49. package/components/AppInstaller/index.js.map +1 -0
  50. package/components/AppInstaller/styled.d.ts +4 -5
  51. package/components/AppInstaller/styled.js.map +1 -0
  52. package/components/AppInstaller/useInstaller.d.ts +6 -4
  53. package/components/AppInstaller/useInstaller.js +2 -2
  54. package/components/AppInstaller/useInstaller.js.map +1 -0
  55. package/components/EmptyView.d.ts +1 -1
  56. package/components/EmptyView.js.map +1 -0
  57. package/components/FileManager/BottomInfoBar/SupportedFileTypes.js +5 -0
  58. package/components/FileManager/BottomInfoBar/SupportedFileTypes.js.map +1 -0
  59. package/components/FileManager/BottomInfoBar/UploadStatus.js.map +1 -0
  60. package/components/FileManager/BottomInfoBar.js.map +1 -0
  61. package/components/FileManager/DropFilesHere.js.map +1 -0
  62. package/components/FileManager/File.js.map +1 -0
  63. package/components/FileManager/FileDetails/Name.js +8 -5
  64. package/components/FileManager/FileDetails/Name.js.map +1 -0
  65. package/components/FileManager/FileDetails/Tags.js +18 -7
  66. package/components/FileManager/FileDetails/Tags.js.map +1 -0
  67. package/components/FileManager/FileDetails.d.ts +3 -0
  68. package/components/FileManager/FileDetails.js +66 -39
  69. package/components/FileManager/FileDetails.js.map +1 -0
  70. package/components/FileManager/FileManagerContext.js +5 -0
  71. package/components/FileManager/FileManagerContext.js.map +1 -0
  72. package/components/FileManager/FileManagerView.d.ts +2 -2
  73. package/components/FileManager/FileManagerView.js +60 -43
  74. package/components/FileManager/FileManagerView.js.map +1 -0
  75. package/components/FileManager/LeftSidebar.js +2 -1
  76. package/components/FileManager/LeftSidebar.js.map +1 -0
  77. package/components/FileManager/NoPermissionView.js.map +1 -0
  78. package/components/FileManager/NoResults.js.map +1 -0
  79. package/components/FileManager/getFileTypePlugin.d.ts +1 -1
  80. package/components/FileManager/getFileTypePlugin.js +4 -0
  81. package/components/FileManager/getFileTypePlugin.js.map +1 -0
  82. package/components/FileManager/getFileUploader.js.map +1 -0
  83. package/components/FileManager/graphql.d.ts +90 -0
  84. package/components/FileManager/graphql.js +25 -0
  85. package/components/FileManager/graphql.js.map +1 -0
  86. package/components/FileManager/outputFileSelectionError.d.ts +6 -4
  87. package/components/FileManager/outputFileSelectionError.js +3 -7
  88. package/components/FileManager/outputFileSelectionError.js.map +1 -0
  89. package/components/FileManager/types.d.ts +4 -34
  90. package/components/FileManager/types.js.map +1 -0
  91. package/components/FileManager.js +12 -4
  92. package/components/FileManager.js.map +1 -0
  93. package/components/FloatingActionButton.js.map +1 -0
  94. package/components/MultiImageUpload.d.ts +2 -2
  95. package/components/MultiImageUpload.js.map +1 -0
  96. package/components/OverlayLayout/OverlayLayout.d.ts +3 -3
  97. package/components/OverlayLayout/OverlayLayout.js.map +1 -0
  98. package/components/OverlayLayout/index.js.map +1 -0
  99. package/components/Permissions/Permissions.d.ts +4 -4
  100. package/components/Permissions/Permissions.js.map +1 -0
  101. package/components/Permissions/StyledComponents.d.ts +2 -2
  102. package/components/Permissions/StyledComponents.js.map +1 -0
  103. package/components/Permissions/index.js.map +1 -0
  104. package/components/RichTextEditor/RichTextEditor.js.map +1 -0
  105. package/components/RichTextEditor/index.js.map +1 -0
  106. package/components/RichTextEditor/tools/header/index.js +3 -3
  107. package/components/RichTextEditor/tools/header/index.js.map +1 -0
  108. package/components/RichTextEditor/tools/image/index.d.ts +3 -1
  109. package/components/RichTextEditor/tools/image/index.js.map +1 -0
  110. package/components/RichTextEditor/tools/image/svgs.js.map +1 -0
  111. package/components/RichTextEditor/tools/image/tunes.js +7 -3
  112. package/components/RichTextEditor/tools/image/tunes.js.map +1 -0
  113. package/components/RichTextEditor/tools/image/types.js.map +1 -0
  114. package/components/RichTextEditor/tools/image/ui.d.ts +4 -2
  115. package/components/RichTextEditor/tools/image/ui.js +1 -1
  116. package/components/RichTextEditor/tools/image/ui.js.map +1 -0
  117. package/components/RichTextEditor/tools/paragraph/index.d.ts +3 -7
  118. package/components/RichTextEditor/tools/paragraph/index.js +6 -10
  119. package/components/RichTextEditor/tools/paragraph/index.js.map +1 -0
  120. package/components/RichTextEditor/tools/textColor/index.d.ts +9 -1
  121. package/components/RichTextEditor/tools/textColor/index.js +43 -9
  122. package/components/RichTextEditor/tools/textColor/index.js.map +1 -0
  123. package/components/RichTextEditor/tools/utils.js.map +1 -0
  124. package/components/Routes.js +2 -2
  125. package/components/Routes.js.map +1 -0
  126. package/components/SearchUI.js.map +1 -0
  127. package/components/SimpleForm/SimpleForm.d.ts +3 -2
  128. package/components/SimpleForm/SimpleForm.js.map +1 -0
  129. package/components/SimpleForm/index.js.map +1 -0
  130. package/components/SimpleUI/InputField.d.ts +1 -0
  131. package/components/SimpleUI/InputField.js +6 -4
  132. package/components/SimpleUI/InputField.js.map +1 -0
  133. package/components/SingleImageUpload.d.ts +0 -1
  134. package/components/SingleImageUpload.js +9 -12
  135. package/components/SingleImageUpload.js.map +1 -0
  136. package/components/SplitView/SplitView.js.map +1 -0
  137. package/components/SplitView/index.js.map +1 -0
  138. package/components/index.js.map +1 -0
  139. package/hooks/useConfirmationDialog.js.map +1 -0
  140. package/hooks/useDialog.js.map +1 -0
  141. package/hooks/useSnackbar.js.map +1 -0
  142. package/index.js.map +1 -0
  143. package/package.json +21 -20
  144. package/plugins/FileManagerFileTypePlugin.d.ts +2 -2
  145. package/plugins/FileManagerFileTypePlugin.js +4 -0
  146. package/plugins/FileManagerFileTypePlugin.js.map +1 -0
  147. package/plugins/MenuPlugin.d.ts +3 -3
  148. package/plugins/MenuPlugin.js +4 -0
  149. package/plugins/MenuPlugin.js.map +1 -0
  150. package/plugins/PermissionRendererPlugin.d.ts +4 -4
  151. package/plugins/PermissionRendererPlugin.js +4 -0
  152. package/plugins/PermissionRendererPlugin.js.map +1 -0
  153. package/plugins/fileManager/fileDefault.js.map +1 -0
  154. package/plugins/fileManager/fileImage/DeleteAction.js.map +1 -0
  155. package/plugins/fileManager/fileImage/EditAction.js +6 -2
  156. package/plugins/fileManager/fileImage/EditAction.js.map +1 -0
  157. package/plugins/fileManager/fileImage/index.js.map +1 -0
  158. package/plugins/fileManager/index.js.map +1 -0
  159. package/plugins/globalSearch/SearchBar.d.ts +1 -5
  160. package/plugins/globalSearch/SearchBar.js +4 -0
  161. package/plugins/globalSearch/SearchBar.js.map +1 -0
  162. package/plugins/globalSearch/SearchBarDropdown.d.ts +12 -9
  163. package/plugins/globalSearch/SearchBarDropdown.js.map +1 -0
  164. package/plugins/globalSearch/index.js.map +1 -0
  165. package/plugins/globalSearch/styled.d.ts +3 -4
  166. package/plugins/globalSearch/styled.js.map +1 -0
  167. package/plugins/index.d.ts +0 -1
  168. package/plugins/index.js.map +1 -0
  169. package/plugins/uiLayoutRenderer/index.js.map +1 -0
  170. package/types.d.ts +2 -2
  171. package/types.js.map +1 -0
  172. package/ui/UIElement.js.map +1 -0
  173. package/ui/UILayout.js.map +1 -0
  174. package/ui/UIRenderer.js.map +1 -0
  175. package/ui/UIView.js.map +1 -0
  176. package/ui/elements/AccordionElement.js.map +1 -0
  177. package/ui/elements/ButtonElement.js +7 -0
  178. package/ui/elements/ButtonElement.js.map +1 -0
  179. package/ui/elements/ButtonGroupElement.js.map +1 -0
  180. package/ui/elements/GenericElement.js.map +1 -0
  181. package/ui/elements/LabelElement.js.map +1 -0
  182. package/ui/elements/NavigationMenuElement.d.ts +2 -5
  183. package/ui/elements/NavigationMenuElement.js.map +1 -0
  184. package/ui/elements/PanelElement.js.map +1 -0
  185. package/ui/elements/PlaceholderElement.d.ts +0 -1
  186. package/ui/elements/PlaceholderElement.js.map +1 -0
  187. package/ui/elements/SmallButtonElement.js.map +1 -0
  188. package/ui/elements/TypographyElement.js.map +1 -0
  189. package/ui/elements/ViewElement.js.map +1 -0
  190. package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.d.ts +2 -2
  191. package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js +10 -10
  192. package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js.map +1 -0
  193. package/ui/elements/form/DynamicFieldsetElement.d.ts +19 -18
  194. package/ui/elements/form/DynamicFieldsetElement.js +13 -0
  195. package/ui/elements/form/DynamicFieldsetElement.js.map +1 -0
  196. package/ui/elements/form/FileManagerElement/EmptyStateElement.js.map +1 -0
  197. package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js.map +1 -0
  198. package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js.map +1 -0
  199. package/ui/elements/form/FileManagerElement/styled.d.ts +17 -14
  200. package/ui/elements/form/FileManagerElement/styled.js.map +1 -0
  201. package/ui/elements/form/FileManagerElement.d.ts +5 -5
  202. package/ui/elements/form/FileManagerElement.js.map +1 -0
  203. package/ui/elements/form/FormElement.js.map +1 -0
  204. package/ui/elements/form/FormFieldElement.d.ts +5 -5
  205. package/ui/elements/form/FormFieldElement.js +12 -4
  206. package/ui/elements/form/FormFieldElement.js.map +1 -0
  207. package/ui/elements/form/HiddenElement.js.map +1 -0
  208. package/ui/elements/form/InputElement.js.map +1 -0
  209. package/ui/elements/form/PasswordElement.js.map +1 -0
  210. package/ui/elements/form/SelectElement.d.ts +1 -1
  211. package/ui/elements/form/SelectElement.js +1 -1
  212. package/ui/elements/form/SelectElement.js.map +1 -0
  213. package/ui/elements/form/TextareaElement.js.map +1 -0
  214. package/ui/views/AdminView/ContentElement.js.map +1 -0
  215. package/ui/views/AdminView/HeaderElement.js +14 -2
  216. package/ui/views/AdminView/HeaderElement.js.map +1 -0
  217. package/ui/views/AdminView/HeaderSectionCenterElement.js.map +1 -0
  218. package/ui/views/AdminView/HeaderSectionLeftElement.js.map +1 -0
  219. package/ui/views/AdminView/HeaderSectionRightElement.js.map +1 -0
  220. package/ui/views/AdminView/components/Dialog.js.map +1 -0
  221. package/ui/views/AdminView/components/Hamburger.js.map +1 -0
  222. package/ui/views/AdminView/components/Snackbar.js.map +1 -0
  223. package/ui/views/FormView/FormContainerElement.d.ts +0 -1
  224. package/ui/views/FormView/FormContainerElement.js.map +1 -0
  225. package/ui/views/FormView/FormContentElement.js.map +1 -0
  226. package/ui/views/FormView/FormFooterElement.d.ts +0 -1
  227. package/ui/views/FormView/FormFooterElement.js.map +1 -0
  228. package/ui/views/FormView/FormHeaderElement.js.map +1 -0
  229. package/ui/views/FormView.js +21 -1
  230. package/ui/views/FormView.js.map +1 -0
  231. package/ui/views/OverlayView/ContentElement.js.map +1 -0
  232. package/ui/views/OverlayView/HeaderElement.js.map +1 -0
  233. package/ui/views/OverlayView/HeaderTitleElement.d.ts +1 -1
  234. package/ui/views/OverlayView/HeaderTitleElement.js.map +1 -0
  235. package/ui/views/OverlayView/useOverlayView.js.map +1 -0
  236. package/ui/views/OverlayView.js.map +1 -0
  237. package/ui/views/SplitView/SplitViewPanelElement.js.map +1 -0
  238. package/ui/views/SplitView.d.ts +2 -2
  239. package/ui/views/SplitView.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FileManagerView.tsx"],"names":["React","useRef","useCallback","useMemo","css","styled","Files","ButtonPrimary","ButtonIcon","Icon","File","useQuery","useMutation","useApolloClient","LIST_FILES","CREATE_FILE","GET_FILE_SETTINGS","getFileTypePlugin","get","debounce","getFileUploader","outputFileSelectionError","DropFilesHere","NoResults","FileDetails","LeftSidebar","BottomInfoBar","OverlayLayout","useSnackbar","Scrollbar","CircularProgress","i18n","useSecurity","useHotkeys","useFileManager","ReactComponent","SearchIcon","UploadIcon","NoPermissionView","t","ns","style","draggingFeedback","position","top","left","width","height","opacity","background","zIndex","leftDrawer","header","textAlign","fontSize","padding","fontWeight","color","InputSearch","backgroundColor","borderRadius","border","marginLeft","outline","searchIcon","FileListWrapper","float","display","FileList","gridTemplateColumns","marginBottom","renderFile","props","file","plugin","id","render","renderEmpty","hasPreviouslyUploadedFiles","browseFiles","fmFilePermission","FileManagerView","onClose","onChange","accept","multiple","maxSize","multipleMaxCount","multipleMaxSize","onUploadCompletion","selected","toggleSelected","dragging","setDragging","uploading","setUploading","showFileDetails","showingFileDetails","queryParams","setQueryParams","setHasPreviouslyUploadedFiles","showSnackbar","identity","getPermission","canCreate","own","rwd","includes","canEdit","item","creatorId","identityId","login","searchOnChange","search","toggleTag","tag","finalTags","Array","isArray","tags","splice","indexOf","push","getFileUploadErrorMessage","e","match","message","updateCacheAfterCreateFile","cache","newFile","newFileData","data","readQuery","query","variables","writeQuery","fileManager","listFiles","getFileDetailsFile","src","list","find","keys","esc","searchInput","apolloClient","gqlQuery","onCompleted","response","length","refreshOnScroll","scrollFrame","fetchMore","cursor","after","updateQuery","prev","result","fetchMoreResult","next","loading","update","createFile","uploadFile","files","errors","uploadedFiles","Promise","all","map","createFileResponse","setTimeout","name","renderUploadFileAction","settingsQuery","settings","uploadMaxFileSize","filter","Boolean","getDropZoneProps","validateFiles","onDragEnter","onExited","target","value","current","onSelect","defaultProps"],"mappings":";;;;;;;;;AAAA,OAAOA,KAAP,IAAgBC,MAAhB,EAAwBC,WAAxB,EAAqCC,OAArC,QAAoD,OAApD;AACA,SAASC,GAAT,QAAoB,SAApB;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,OAAOC,KAAP,MAA2C,mBAA3C;AACA,SAASC,aAAT,EAAwBC,UAAxB,QAA0C,mBAA1C;AACA,SAASC,IAAT,QAAqB,iBAArB;AACA,OAAOC,IAAP;AACA,SAASC,QAAT,EAAmBC,WAAnB,EAAgCC,eAAhC,QAAuD,qBAAvD;AAEA,SACIC,UADJ,EAEIC,WAFJ,EAGIC,iBAHJ;AASA,OAAOC,iBAAP;AACA,OAAOC,GAAP,MAAgB,YAAhB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,eAAP;AACA,OAAOC,wBAAP;AACA,OAAOC,aAAP;AACA,OAAOC,SAAP;AACA,OAAOC,WAAP;AACA,OAAOC,WAAP;AACA,OAAOC,aAAP;AACA,SAASC,aAAT;AACA,SAASC,WAAT;AACA,SAASC,SAAT,QAA0B,sBAA1B;AACA,SAASC,gBAAT,QAAiC,qBAAjC;AACA,SAASC,IAAT,QAAqB,kBAArB;AACA,SAASC,WAAT,QAA4B,sBAA5B;AACA;AACA;AACA;AACA;;AACA,SAASC,UAAT,QAA2B,eAA3B;AACA,SAASC,cAAT;AACA,SAASC,cAAc,IAAIC,UAA3B;AACA,SAASD,cAAc,IAAIE,UAA3B;AACA,OAAOC,gBAAP;AAMA,IAAMC,CAAC,GAAGR,IAAI,CAACS,EAAL,CAAQ,0CAAR,CAAV;AAEA,IAAMC,KAAK,GAAG;AACVC,EAAAA,gBAAgB,eAAEtC,GAAG,CAAC;AAClBuC,IAAAA,QAAQ,EAAE,OADQ;AAElBC,IAAAA,GAAG,EAAE,CAFa;AAGlBC,IAAAA,IAAI,EAAE,CAHY;AAIlBC,IAAAA,KAAK,EAAE,MAJW;AAKlBC,IAAAA,MAAM,EAAE,MALU;AAMlBC,IAAAA,OAAO,EAAE,GANS;AAOlBC,IAAAA,UAAU,EAAE,OAPM;AAQlBC,IAAAA,MAAM,EAAE;AARU,GAAD,4BADX;AAWVC,EAAAA,UAAU,EAAE;AACRC,IAAAA,MAAM,eAAEhD,GAAG,CAAC;AACRiD,MAAAA,SAAS,EAAE,QADH;AAERC,MAAAA,QAAQ,EAAE,EAFF;AAGRC,MAAAA,OAAO,EAAE,EAHD;AAIRC,MAAAA,UAAU,EAAE,GAJJ;AAKRC,MAAAA,KAAK,EAAE;AALC,KAAD;AADH;AAXF,CAAd;AAsBA,IAAMC,WAAW,gBAAGrD,MAAH,CAAU,KAAV;AAAA;AAAA;AAAA,GAAiB;AAC9BsD,EAAAA,eAAe,EAAE,gCADa;AAE9BhB,EAAAA,QAAQ,EAAE,UAFoB;AAG9BI,EAAAA,MAAM,EAAE,EAHsB;AAI9BQ,EAAAA,OAAO,EAAE,CAJqB;AAK9BT,EAAAA,KAAK,EAAE,MALuB;AAM9Bc,EAAAA,YAAY,EAAE,CANgB;AAO9B,aAAW;AACPC,IAAAA,MAAM,EAAE,MADD;AAEPP,IAAAA,QAAQ,EAAE,EAFH;AAGPR,IAAAA,KAAK,EAAE,mBAHA;AAIPC,IAAAA,MAAM,EAAE,MAJD;AAKPe,IAAAA,UAAU,EAAE,EALL;AAMPH,IAAAA,eAAe,EAAE,aANV;AAOPI,IAAAA,OAAO,EAAE,MAPF;AAQPN,IAAAA,KAAK,EAAE;AARA;AAPmB,CAAjB,CAAjB;AAmBA,IAAMO,UAAU,gBAAG5D,GAAG,CAAC;AACnB,wBAAsB;AAClBqD,IAAAA,KAAK,EAAE,+CADW;AAElBd,IAAAA,QAAQ,EAAE,UAFQ;AAGlBG,IAAAA,KAAK,EAAE,EAHW;AAIlBC,IAAAA,MAAM,EAAE,EAJU;AAKlBF,IAAAA,IAAI,EAAE,EALY;AAMlBD,IAAAA,GAAG,EAAE;AANa;AADH,CAAD,sBAAtB;AAWA,IAAMqB,eAAe,gBAAG5D,MAAH,CAAU,KAAV;AAAA;AAAA;AAAA,GAAiB;AAClC6D,EAAAA,KAAK,EAAE,OAD2B;AAElCC,EAAAA,OAAO,EAAE,cAFyB;AAGlCrB,EAAAA,KAAK,EAAE,qBAH2B;AAIlCC,EAAAA,MAAM,EAAE;AAJ0B,CAAjB,CAArB;AAOA,IAAMqB,QAAQ,gBAAG/D,MAAH,CAAU,KAAV;AAAA;AAAA;AAAA,GAAiB;AAC3ByC,EAAAA,KAAK,EAAE,MADoB;AAE3BqB,EAAAA,OAAO,EAAE,MAFkB;;AAG3B;AACAE,EAAAA,mBAAmB,EAAE,yCAJM;AAK3BC,EAAAA,YAAY,EAAE;AALa,CAAjB,CAAd;;AAwBA,IAAMC,UAAqC,GAAG,SAAxCA,UAAwC,CAAAC,KAAK,EAAI;AACnD,MAAQC,IAAR,GAAiBD,KAAjB,CAAQC,IAAR;AACA,MAAMC,MAAM,GAAGzD,iBAAiB,CAACwD,IAAD,CAAhC;;AACA,MAAI,CAACC,MAAL,EAAa;AACT,WAAO,IAAP;AACH;;AACD,sBACI,oBAAC,IAAD,oBAAUF,KAAV;AAAiB,IAAA,GAAG,EAAEC,IAAI,CAACE;AAA3B,MACKD,MAAM,CAACE,MAAP,CAAc;AACX;AAChB;AACA;AACgB;AACAH,IAAAA,IAAI,EAAJA;AALW,GAAd,CADL,CADJ;AAWH,CAjBD;;AAuBA,IAAMI,WAAuC,GAAG,SAA1CA,WAA0C,OAI1C;AAAA,MAHFC,0BAGE,QAHFA,0BAGE;AAAA,MAFFC,WAEE,QAFFA,WAEE;AAAA,MADFC,gBACE,QADFA,gBACE;;AACF,MAAI,CAACA,gBAAL,EAAuB;AACnB,wBAAO,oBAAC,gBAAD,OAAP;AACH;;AACD,MAAIF,0BAAJ,EAAgC;AAC5B,wBAAO,oBAAC,SAAD,OAAP;AACH;;AACD,sBAAO,oBAAC,aAAD;AAAe,IAAA,KAAK,MAApB;AAAqB,IAAA,OAAO,EAAE;AAAA,aAAMC,WAAW,EAAjB;AAAA;AAA9B,IAAP;AACH,CAZD;;AA+BA,IAAME,eAA+C,GAAG,SAAlDA,eAAkD,CAAAT,KAAK,EAAI;AAC7D,MACIU,OADJ,GASIV,KATJ,CACIU,OADJ;AAAA,MAEIC,QAFJ,GASIX,KATJ,CAEIW,QAFJ;AAAA,MAGIC,MAHJ,GASIZ,KATJ,CAGIY,MAHJ;AAAA,MAIIC,QAJJ,GASIb,KATJ,CAIIa,QAJJ;AAAA,MAKIC,OALJ,GASId,KATJ,CAKIc,OALJ;AAAA,MAMIC,gBANJ,GASIf,KATJ,CAMIe,gBANJ;AAAA,MAOIC,eAPJ,GASIhB,KATJ,CAOIgB,eAPJ;AAAA,MAQIC,kBARJ,GASIjB,KATJ,CAQIiB,kBARJ;;AAWA,wBAaIvD,cAAc,EAblB;AAAA,MACIwD,QADJ,mBACIA,QADJ;AAAA,MAEIC,cAFJ,mBAEIA,cAFJ;AAAA,MAGIC,QAHJ,mBAGIA,QAHJ;AAAA,MAIIC,WAJJ,mBAIIA,WAJJ;AAAA,MAKIC,SALJ,mBAKIA,SALJ;AAAA,MAMIC,YANJ,mBAMIA,YANJ;AAAA,MAOIC,gBAPJ,mBAOIA,eAPJ;AAAA,MAQIC,kBARJ,mBAQIA,kBARJ;AAAA,MASIC,WATJ,mBASIA,WATJ;AAAA,MAUIC,cAVJ,mBAUIA,cAVJ;AAAA,MAWIrB,0BAXJ,mBAWIA,0BAXJ;AAAA,MAYIsB,6BAZJ,mBAYIA,6BAZJ;;AAcA,qBAAyBxE,WAAW,EAApC;AAAA,MAAQyE,YAAR,gBAAQA,YAAR;;AAEA,qBAAoCrE,WAAW,EAA/C;AAAA,MAAQsE,QAAR,gBAAQA,QAAR;AAAA,MAAkBC,aAAlB,gBAAkBA,aAAlB;;AACA,MAAMvB,gBAAgB,GAAG7E,OAAO,CAAC,YAA4C;AACzE,WAAOoG,aAAa,CAAgC,SAAhC,CAApB;AACH,GAF+B,EAE7B,CAACD,QAAD,CAF6B,CAAhC;AAGA,MAAME,SAAS,GAAGrG,OAAO,CAAC,YAAM;AAC5B;AACA,QAAI,CAAC6E,gBAAL,EAAuB;AACnB,aAAO,KAAP;AACH;;AAED,QAAIA,gBAAgB,CAACyB,GAArB,EAA0B;AACtB,aAAO,IAAP;AACH;;AAED,QAAI,OAAOzB,gBAAgB,CAAC0B,GAAxB,KAAgC,QAApC,EAA8C;AAC1C,aAAO1B,gBAAgB,CAAC0B,GAAjB,CAAqBC,QAArB,CAA8B,GAA9B,CAAP;AACH;;AAED,WAAO,IAAP;AACH,GAfwB,EAetB,CAAC3B,gBAAD,CAfsB,CAAzB;AAgBA,MAAM4B,OAAO,GAAG1G,WAAW,CACvB,UAAA2G,IAAI,EAAI;AACJ;AACA,QAAI,CAAC7B,gBAAL,EAAuB;AACnB,aAAO,KAAP;AACH;;AACD,QAAM8B,SAAS,GAAG5F,GAAG,CAAC2F,IAAD,EAAO,cAAP,CAArB;;AAEA,QAAI7B,gBAAgB,CAACyB,GAAjB,IAAwBK,SAA5B,EAAuC;AACnC,UAAMC,UAAU,GAAGT,QAAQ,GAAGA,QAAQ,CAAC3B,EAAT,IAAe2B,QAAQ,CAACU,KAA3B,GAAmC,IAA9D;AACA,aAAOF,SAAS,KAAKC,UAArB;AACH;;AAED,QAAI,OAAO/B,gBAAgB,CAAC0B,GAAxB,KAAgC,QAApC,EAA8C;AAC1C,aAAO1B,gBAAgB,CAAC0B,GAAjB,CAAqBC,QAArB,CAA8B,GAA9B,CAAP;AACH;;AAED,WAAO,IAAP;AACH,GAlBsB,EAmBvB,CAAC3B,gBAAD,CAnBuB,CAA3B;AAsBA,MAAMiC,cAAc,GAAG/G,WAAW,EAC9B;AACAiB,EAAAA,QAAQ,CAAC,UAAA+F,MAAM;AAAA,WAAIf,cAAc,CAAC;AAAEe,MAAAA,MAAM,EAANA;AAAF,KAAD,CAAlB;AAAA,GAAP,EAAuC,GAAvC,CAFsB,EAG9B,EAH8B,CAAlC;;AAMA,MAAMC,UAAS,GAAGjH,WAAW;AAAA,yEAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAASkH,cAAAA,GAAT,SAASA,GAAT,EAAclB,WAAd,SAAcA,WAAd;AACpBmB,cAAAA,SADoB,GACRC,KAAK,CAACC,OAAN,CAAcrB,WAAW,CAACsB,IAA1B,uBAAsCtB,WAAW,CAACsB,IAAlD,IAA0D,EADlD;;AAG1B,kBAAIH,SAAS,CAACV,QAAV,CAAmBS,GAAnB,CAAJ,EAA6B;AACzBC,gBAAAA,SAAS,CAACI,MAAV,CAAiBJ,SAAS,CAACK,OAAV,CAAkBN,GAAlB,CAAjB,EAAyC,CAAzC;AACH,eAFD,MAEO;AACHC,gBAAAA,SAAS,CAACM,IAAV,CAAeP,GAAf;AACH;;AAEDjB,cAAAA,cAAc,iCAAMD,WAAN;AAAmBsB,gBAAAA,IAAI,EAAEH;AAAzB,iBAAd;;AAT0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAD;;AAAA;AAAA;AAAA;AAAA,OAU1B,EAV0B,CAA7B;;AAYA,MAAMO,yBAAyB,GAAG1H,WAAW,CAAC,UAAA2H,CAAC,EAAI;AAC/C,QAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;AACvB,UAAMC,KAAK,GAAGD,CAAC,CAACC,KAAF,CAAQ,yBAAR,CAAd;;AACA,UAAIA,KAAJ,EAAW;AACP,oCAAoBA,KAApB;AAAA,YAASC,OAAT;;AACA,eAAOA,OAAP;AACH;;AAED,aAAOF,CAAP;AACH;;AACD,WAAOA,CAAC,CAACE,OAAT;AACH,GAX4C,EAW1C,EAX0C,CAA7C;;AAaA,MAAMC,0BAAyE,GAAG,SAA5EA,0BAA4E,CAC9EC,KAD8E,EAE9EC,OAF8E,EAG7E;AAAA;;AACD,QAAMC,WAAW,GAAGjH,GAAG,CAACgH,OAAD,EAAU,kCAAV,CAAvB;AAEA,QAAME,IAAI,GAAGH,KAAK,CAACI,SAAN,CAAwC;AACjDC,MAAAA,KAAK,EAAExH,UAD0C;AAEjDyH,MAAAA,SAAS,EAAErC;AAFsC,KAAxC,CAAb;AAKA+B,IAAAA,KAAK,CAACO,UAAN,CAAiB;AACbF,MAAAA,KAAK,EAAExH,UADM;AAEbyH,MAAAA,SAAS,EAAErC,WAFE;AAGbkC,MAAAA,IAAI,EAAE;AACFK,QAAAA,WAAW,kCACH,CAAAL,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEK,WAAN,KAAqB,EADlB;AAEPC,UAAAA,SAAS,kCACF,CAAC,CAAAN,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEK,WAAN,KAAqB,EAAtB,EAA0BC,SADxB;AAELN,YAAAA,IAAI,GAAGD,WAAH,4BAAoB,CAAC,CAAAC,IAAI,SAAJ,IAAAA,IAAI,WAAJ,iCAAAA,IAAI,CAAEK,WAAN,wEAAmBC,SAAnB,KAAgC,EAAjC,EAAqCN,IAArC,IAA6C,EAAjE;AAFC;AAFF;AADT;AAHO,KAAjB;AAaH,GAxBD;;AA0BA,MAAMO,kBAAkB,GAAGzI,WAAW,CAAC,iBAAuD;AAAA,QAApD0I,GAAoD,SAApDA,GAAoD;AAAA,QAA/CC,IAA+C,SAA/CA,IAA+C;AAC1F,WAAOA,IAAI,CAACC,IAAL,CAAU,UAAAjC,IAAI;AAAA,aAAIA,IAAI,CAAC+B,GAAL,KAAaA,GAAjB;AAAA,KAAd,CAAP;AACH,GAFqC,EAEnC,EAFmC,CAAtC;AAIA3G,EAAAA,UAAU,CAAC;AACPiB,IAAAA,MAAM,EAAE,EADD;AAEP6F,IAAAA,IAAI,EAAE;AACFC,MAAAA,GAAG,EAAE9D;AADH;AAFC,GAAD,CAAV;AAOA,MAAM+D,WAAW,GAAGhJ,MAAM,CAAmB,IAAnB,CAA1B;AAEA,MAAMiJ,YAAY,GAAGrI,eAAe,EAApC;AAEA,MAAMsI,QAAQ,GAAGxI,QAAQ,CAAkDG,UAAlD,EAA8D;AACnFyH,IAAAA,SAAS,EAAErC,WADwE;AAEnFkD,IAAAA,WAAW,EAAE,qBAAAC,QAAQ,EAAI;AACrB,UAAMR,IAAI,GAAG3H,GAAG,CAACmI,QAAD,EAAW,4BAAX,CAAH,IAA+C,EAA5D;;AACA,UAAIvE,0BAA0B,KAAK,IAAnC,EAAyC;AACrCsB,QAAAA,6BAA6B,CAACyC,IAAI,CAACS,MAAL,GAAc,CAAf,CAA7B;AACH;AACJ;AAPkF,GAA9D,CAAzB;AAUA,MAAMC,eAAe,GAAGrJ,WAAW,CAC/BiB,QAAQ,CAAC,iBAAuD;AAAA,QAApDqI,WAAoD,SAApDA,WAAoD;AAAA,QAAvCC,SAAuC,SAAvCA,SAAuC;;AAC5D,QAAID,WAAW,CAAC5G,GAAZ,GAAkB,GAAtB,EAA2B;AACvB,UAAM8G,MAAM,GAAGxI,GAAG,CAACiI,QAAQ,CAACf,IAAV,EAAgB,mCAAhB,CAAlB;;AACA,UAAIsB,MAAJ,EAAY;AACRD,QAAAA,SAAS,CAAC;AACNlB,UAAAA,SAAS,EAAE;AAAEoB,YAAAA,KAAK,EAAED;AAAT,WADL;AAENE,UAAAA,WAAW,EAAE,qBACTC,IADS,EAETC,MAFS,EAGR;AACD,gBAAQC,eAAR,GAA4BD,MAA5B,CAAQC,eAAR;;AACA,gBAAI,CAACA,eAAL,EAAsB;AAClB,qBAAOF,IAAP;AACH;;AAED,gBAAMG,IAAI,qBAAQD,eAAR,CAAV;;AAEAC,YAAAA,IAAI,CAACvB,WAAL,CAAiBC,SAAjB,CAA2BN,IAA3B,gCACOyB,IAAI,CAACpB,WAAL,CAAiBC,SAAjB,CAA2BN,IADlC,sBAEO2B,eAAe,CAACtB,WAAhB,CAA4BC,SAA5B,CAAsCN,IAF7C;AAKA,mBAAO4B,IAAP;AACH;AAnBK,SAAD,CAAT;AAqBH;AACJ;AACJ,GA3BO,EA2BL,GA3BK,CADuB,EA6B/B,CAACb,QAAD,CA7B+B,CAAnC;AAgCA,MAAQf,IAAR,GAAqCe,QAArC,CAAQf,IAAR;AAAA,MAAcqB,SAAd,GAAqCN,QAArC,CAAcM,SAAd;AAAA,MAAyBQ,OAAzB,GAAqCd,QAArC,CAAyBc,OAAzB;AAEA,MAAMpB,IAAgB,GAAG3H,GAAG,CAACkH,IAAD,EAAO,4BAAP,CAAH,IAA2C,EAApE;;AACA,qBAAqBxH,WAAW,CAC5BG,WAD4B,EAE5B;AACImJ,IAAAA,MAAM,EAAElC;AADZ,GAF4B,CAAhC;AAAA;AAAA,MAAOmC,UAAP;;AAMA,MAAMC,UAAU;AAAA,yEAAG,kBAAOC,KAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AACftE,cAAAA,YAAY,CAAC,IAAD,CAAZ;AACM8C,cAAAA,IAFS,GAEUvB,KAAK,CAACC,OAAN,CAAc8C,KAAd,IAAuBA,KAAvB,GAA+B,CAACA,KAAD,CAFzC;AAITC,cAAAA,MAJS,GAIa,EAJb;AAKTC,cAAAA,aALS,GAKmB,EALnB;AAAA;AAAA,qBAMTC,OAAO,CAACC,GAAR,CACF5B,IAAI,CAAC6B,GAAL;AAAA,qFAAS,kBAAMjG,IAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iCAEsBrD,eAAe,GAAGqD,IAAH,EAAS;AAAEyE,4BAAAA,YAAY,EAAZA;AAAF,2BAAT,CAFrC;;AAAA;AAEKG,0BAAAA,QAFL;AAAA;AAAA,iCAGgCc,UAAU,CAAC;AAAE5B,4BAAAA,SAAS,EAAE;AAAEH,8BAAAA,IAAI,EAAEiB;AAAR;AAAb,2BAAD,CAH1C;;AAAA;AAGKsB,0BAAAA,kBAHL;AAID;AACAJ,0BAAAA,aAAa,CAAC5C,IAAd,CAAmBzG,GAAG,CAACyJ,kBAAD,EAAqB,kCAArB,CAAtB;AALC;AAAA;;AAAA;AAAA;AAAA;AAODL,0BAAAA,MAAM,CAAC3C,IAAP,CAAY;AAAElD,4BAAAA,IAAI,EAAJA,IAAF;AAAQoD,4BAAAA,CAAC;AAAT,2BAAZ;;AAPC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAT;;AAAA;AAAA;AAAA;AAAA,kBADE,CANS;;AAAA;AAmBf,kBAAI,CAAC/C,0BAAL,EAAiC;AAC7BsB,gBAAAA,6BAA6B,CAAC,IAAD,CAA7B;AACH;;AAEDL,cAAAA,YAAY,CAAC,KAAD,CAAZ;;AAvBe,oBAyBXuE,MAAM,CAAChB,MAAP,GAAgB,CAzBL;AAAA;AAAA;AAAA;;AAAA,gDA2BJsB,UAAU,CAAC,YAAM;AACpBvE,gBAAAA,YAAY,eACR,0CACK9D,CADL,qIAEI,gCACK+H,MAAM,CAACI,GAAP,CAAW;AAAA,sBAAGjG,IAAH,SAAGA,IAAH;AAAA,sBAASoD,CAAT,SAASA,CAAT;AAAA,sCACR;AAAI,oBAAA,GAAG,EAAEpD,IAAI,CAACoG;AAAd,kCACI,oCAASpG,IAAI,CAACoG,IAAd,CADJ,QACmCjD,yBAAyB,CAACC,CAAD,CAD5D,CADQ;AAAA,iBAAX,CADL,CAFJ,CADQ,CAAZ,CADoB,CAapB;AACH,eAdgB,EAcd,GAdc,CA3BN;;AAAA;AA4Cf;AACA+C,cAAAA,UAAU,CAAC;AAAA,uBAAMvE,YAAY,CAAC9D,CAAD,6FAAlB;AAAA,eAAD,EAA+C,GAA/C,CAAV;;AA7Ce,oBA8CX,OAAOkD,kBAAP,KAA8B,UA9CnB;AAAA;AAAA;AAAA;;AAAA,gDAgDJmF,UAAU,CAAC,YAAM;AACpBnF,gBAAAA,kBAAkB,CAAC8E,aAAD,CAAlB;AACArF,gBAAAA,OAAO,GAFa,CAGpB;AACH,eAJgB,EAId,GAJc,CAhDN;;AAAA;AAAA,gDAsDR,IAtDQ;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAVkF,UAAU;AAAA;AAAA;AAAA,KAAhB;;AAyDA,MAAMU,sBAAsB,GAAG5K,WAAW,CACtC,iBAAqB;AAAA,QAAlB6E,WAAkB,SAAlBA,WAAkB;;AACjB,QAAI,CAACyB,SAAL,EAAgB;AACZ,aAAO,IAAP;AACH;;AACD,wBACI,oBAAC,aAAD;AAAe,MAAA,OAAO,EAAEzB,WAAxB;AAAqC,MAAA,QAAQ,EAAEe;AAA/C,oBACI,oBAAC,UAAD;AAAY,MAAA,IAAI,eAAE,oBAAC,UAAD;AAAlB,MADJ,EAEKvD,CAFL,iFADJ;AAMH,GAXqC,EAYtC,CAACuD,SAAD,EAAYU,SAAZ,CAZsC,CAA1C;AAeA,MAAMuE,aAAa,GAAGpK,QAAQ,CAACK,iBAAD,CAA9B;AACA,MAAMgK,QAAQ,GAAG9J,GAAG,CAAC6J,aAAa,CAAC3C,IAAf,EAAqB,8BAArB,CAAH,IAA2D,EAA5E;AACA,sBACI,oBAAC,KAAD;AACI,IAAA,QAAQ,MADZ;AAEI,IAAA,OAAO,EAAE4C,QAAQ,CAACC,iBAAT,GAA6BD,QAAQ,CAACC,iBAAT,GAA6B,GAA1D,GAAgE3F,OAF7E;AAGI,IAAA,eAAe,EAAEE,eAHrB;AAII,IAAA,gBAAgB,EAAED,gBAJtB;AAKI,IAAA,MAAM,EAAEH,MALZ;AAMI,IAAA,SAAS,EAAE,mBAAAiF,KAAK,EAAI;AAChBD,MAAAA,UAAU,CAACC,KAAK,CAACK,GAAN,CAAU,UAAAjG,IAAI;AAAA,eAAIA,IAAI,CAACmE,GAAL,CAASnE,IAAb;AAAA,OAAd,EAA6CyG,MAA7C,CAAoDC,OAApD,CAAD,CAAV;AACH,KARL;AASI,IAAA,OAAO,EAAE,iBAAAb,MAAM,EAAI;AACf;AAChB;AACA;AACA;AACgB;AACA,UAAMvC,OAAO,GAAG1G,wBAAwB,CAACiJ,MAAD,CAAxC;AACAjE,MAAAA,YAAY,CAAC0B,OAAD,CAAZ;AACH;AAjBL,KAmBK;AAAA,QAAGqD,gBAAH,UAAGA,gBAAH;AAAA,QAAqBrG,WAArB,UAAqBA,WAArB;AAAA,QAAkCsG,aAAlC,UAAkCA,aAAlC;AAAA,wBACG,oBAAC,aAAD,oBACQD,gBAAgB,CAAC;AACjBE,MAAAA,WAAW,EAAE;AAAA,eAAMxG,0BAA0B,IAAIe,WAAW,CAAC,IAAD,CAA/C;AAAA,OADI;AAEjB0F,MAAAA,QAAQ,EAAErG;AAFO,KAAD,CADxB;AAKI,MAAA,OAAO,eACH,oBAAC,WAAD,qBACI,oBAAC,IAAD;AAAM,QAAA,SAAS,EAAElB,UAAjB;AAA6B,QAAA,IAAI,eAAE,oBAAC,UAAD;AAAnC,QADJ,eAEI;AACI,QAAA,GAAG,EAAEiF,WADT;AAEI,QAAA,QAAQ,EAAE,kBAAApB,CAAC;AAAA,iBAAIZ,cAAc,CAACY,CAAC,CAAC2D,MAAF,CAASC,KAAV,CAAlB;AAAA,SAFf;AAGI,QAAA,WAAW,EAAElJ,CAAF,iGAHf;AAII,QAAA,QAAQ,EAAE,CAACyC,gBAJf;AAKI,uBAAa;AALjB,QAFJ,CANR;AAiBI,MAAA,QAAQ,EACJU,QAAQ,CAAC4D,MAAT,GAAkB,CAAlB,gBACI,oBAAC,aAAD;AACI,QAAA,QAAQ,EAAExD,SADd;AAEI,QAAA,OAAO,EAAE,mBAAM;AACX,mEAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BACSX,QAAQ,CAACE,QAAQ,GAAGK,QAAH,GAAcA,QAAQ,CAAC,CAAD,CAA/B,CADjB;;AAAA;AAGGR,oBAAAA,OAAO;;AAHV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAAD;AAKH;AARL,SAUK3C,CAVL,oFAUiB8C,QAAQ,eAAQK,QAAQ,CAAC4D,MAAjB,MAVzB,CADJ,GAcIwB,sBAAsB,CAAC;AAAE/F,QAAAA,WAAW,EAAXA;AAAF,OAAD;AAhClC,qBAoCI,0CACKa,QAAQ,IAAId,0BAAZ,iBACG,oBAAC,aAAD,CACI;AADJ;AAEI,MAAA,SAAS,EAAErC,KAAK,CAACC,gBAFrB;AAGI,MAAA,WAAW,EAAE;AAAA,eAAMmD,WAAW,CAAC,KAAD,CAAjB;AAAA,OAHjB;AAII,MAAA,MAAM,EAAE;AAAA,eAAMA,WAAW,CAAC,KAAD,CAAjB;AAAA;AAJZ,MAFR,eAUI,oBAAC,WAAD;AACI,MAAA,aAAa,EAAEwF,aADnB;AAEI,MAAA,UAAU,EAAEjB,UAFhB;AAGI,MAAA,IAAI,EAAEzB,kBAAkB,CAAC;AACrBE,QAAAA,IAAI,EAAJA,IADqB;AAErBD,QAAAA,GAAG,EAAE3C;AAFgB,OAAD,CAH5B;AAOI,MAAA,OAAO,EAAEW;AAPb,MAVJ,eAoBI,oBAAC,WAAD;AACI,MAAA,WAAW,EAAEV,WADjB;AAEI,MAAA,SAAS,EAAE,mBAAAkB,GAAG;AAAA,eAAID,UAAS,CAAC;AAAEC,UAAAA,GAAG,EAAHA,GAAF;AAAOlB,UAAAA,WAAW,EAAXA;AAAP,SAAD,CAAb;AAAA;AAFlB,MApBJ,eAyBI,oBAAC,eAAD;AAAiB,qBAAa;AAA9B,OACK+D,OAAO,iBACJ,oBAAC,gBAAD;AACI,MAAA,KAAK,EAAE1H,CAAF,uFADT;AAEI,MAAA,KAAK,EAAE;AAAES,QAAAA,OAAO,EAAE;AAAX;AAFX,MAFR,eAOI,oBAAC,SAAD;AACI,MAAA,aAAa,EAAE,uBAAAwG,WAAW;AAAA,eACtBD,eAAe,CAAC;AACZC,UAAAA,WAAW,EAAXA,WADY;AAEZC,UAAAA,SAAS,EAATA;AAFY,SAAD,CADO;AAAA;AAD9B,oBAQI,oBAAC,QAAD,QACKZ,IAAI,CAACS,MAAL,GACKT,IAAI,CAAC6B,GAAL,CAAS,UAAAjG,IAAI;AAAA,aACTF,UAAU,CAAC;AACP6F,QAAAA,UAAU,EAAVA,UADO;AAEP3F,QAAAA,IAAI,EAAJA,IAFO;AAGPuB,QAAAA,eAAe,EAAE;AAAA,iBAAMA,gBAAe,CAACvB,IAAI,CAACmE,GAAN,CAArB;AAAA,SAHV;AAIPlD,QAAAA,QAAQ,EAAEA,QAAQ,CAACoD,IAAT,CACN,UAAC4C,OAAD;AAAA,iBACIA,OAAO,CAAC9C,GAAR,KAAgBnE,IAAI,CAACmE,GADzB;AAAA,SADM,CAJH;AAQP+C,QAAAA,QAAQ,EACJ,OAAOxG,QAAP,KAAoB,WAApB,GACM,YAAM;AACF,iBAAO,KAAK,CAAZ;AACH,SAHP,yEAIM;AAAA;AAAA;AAAA;AAAA;AAAA,uBACQE,QADR;AAAA;AAAA;AAAA;;AAEQM,kBAAAA,cAAc,CAAClB,IAAD,CAAd;AAFR;;AAAA;AAAA;AAAA,yBAMUU,QAAQ,CAACV,IAAD,CANlB;;AAAA;AAOIS,kBAAAA,OAAO;;AAPX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAJN;AATG,OAAD,CADD;AAAA,KAAb,CADL,GA0BKL,WAAW,CAAC;AACRC,MAAAA,0BAA0B,EAA1BA,0BADQ;AAERC,MAAAA,WAAW,EAAXA,WAFQ;AAGRC,MAAAA,gBAAgB,EAAhBA;AAHQ,KAAD,CA3BrB,CARJ,CAPJ,eAiDI,oBAAC,aAAD;AAAe,MAAA,MAAM,EAAEI,MAAvB;AAA+B,MAAA,SAAS,EAAEU;AAA1C,MAjDJ,CAzBJ,CApCJ,CADH;AAAA,GAnBL,CADJ;AA0IH,CArZD;;AAuZAb,eAAe,CAAC2G,YAAhB,GAA+B;AAC3BvG,EAAAA,QAAQ,EAAE,KADiB;AAE3BC,EAAAA,OAAO,EAAE,QAFkB;AAG3BE,EAAAA,eAAe,EAAE,QAHU;AAI3BD,EAAAA,gBAAgB,EAAE;AAJS,CAA/B;AAOA,eAAeN,eAAf","sourcesContent":["import React, { useRef, useCallback, useMemo } from \"react\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport Files, { FilesRenderChildren } from \"react-butterfiles\";\nimport { ButtonPrimary, ButtonIcon } from \"@webiny/ui/Button\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport File, { FileProps } from \"./File\";\nimport { useQuery, useMutation, useApolloClient } from \"@apollo/react-hooks\";\nimport { FilesRules } from \"react-butterfiles\";\nimport {\n LIST_FILES,\n CREATE_FILE,\n GET_FILE_SETTINGS,\n CreateFileMutationVariables,\n CreateFileMutationResponse,\n ListFilesQueryResponse,\n ListFilesQueryVariables\n} from \"./graphql\";\nimport getFileTypePlugin from \"./getFileTypePlugin\";\nimport get from \"lodash/get\";\nimport debounce from \"lodash/debounce\";\nimport getFileUploader from \"./getFileUploader\";\nimport outputFileSelectionError from \"./outputFileSelectionError\";\nimport DropFilesHere from \"./DropFilesHere\";\nimport NoResults from \"./NoResults\";\nimport FileDetails from \"./FileDetails\";\nimport LeftSidebar from \"./LeftSidebar\";\nimport BottomInfoBar from \"./BottomInfoBar\";\nimport { OverlayLayout } from \"../OverlayLayout\";\nimport { useSnackbar } from \"~/hooks/useSnackbar\";\nimport { Scrollbar } from \"@webiny/ui/Scrollbar\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { useSecurity } from \"@webiny/app-security\";\n/**\n * Package react-hotkeyz is missing types.\n */\n// @ts-ignore\nimport { useHotkeys } from \"react-hotkeyz\";\nimport { useFileManager } from \"./FileManagerContext\";\nimport { ReactComponent as SearchIcon } from \"./icons/round-search-24px.svg\";\nimport { ReactComponent as UploadIcon } from \"./icons/round-cloud_upload-24px.svg\";\nimport NoPermissionView from \"./NoPermissionView\";\nimport { FileItem, FileManagerSecurityPermission } from \"~/components/FileManager/types\";\nimport { MutationUpdaterFn } from \"apollo-client/core/watchQueryOptions\";\nimport { SecurityPermission } from \"@webiny/app-security/types\";\nimport { ObservableQueryFields } from \"@apollo/react-common/lib/types/types\";\n\nconst t = i18n.ns(\"app-admin/file-manager/file-manager-view\");\n\nconst style = {\n draggingFeedback: css({\n position: \"fixed\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n opacity: 0.5,\n background: \"white\",\n zIndex: 100\n }),\n leftDrawer: {\n header: css({\n textAlign: \"center\",\n fontSize: 18,\n padding: 10,\n fontWeight: 600,\n color: \"var(--mdc-theme-on-surface)\"\n })\n }\n};\n\nconst InputSearch = styled(\"div\")({\n backgroundColor: \"var(--mdc-theme-on-background)\",\n position: \"relative\",\n height: 32,\n padding: 3,\n width: \"100%\",\n borderRadius: 2,\n \"> input\": {\n border: \"none\",\n fontSize: 14,\n width: \"calc(100% - 10px)\",\n height: \"100%\",\n marginLeft: 50,\n backgroundColor: \"transparent\",\n outline: \"none\",\n color: \"var(--mdc-theme-text-primary-on-background)\"\n }\n});\n\nconst searchIcon = css({\n \"&.mdc-button__icon\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n position: \"absolute\",\n width: 24,\n height: 24,\n left: 15,\n top: 7\n }\n});\n\nconst FileListWrapper = styled(\"div\")({\n float: \"right\",\n display: \"inline-block\",\n width: \"calc(100vw - 270px)\",\n height: \"100%\"\n});\n\nconst FileList = styled(\"div\")({\n width: \"100%\",\n display: \"grid\",\n /* define the number of grid columns */\n gridTemplateColumns: \"repeat( auto-fill, minmax(220px, 1fr) )\",\n marginBottom: 95\n});\n\nexport interface FileManagerViewProps {\n onChange: Function;\n onClose: Function;\n files?: FilesRules;\n multiple: boolean; // Does not affect <Files> component, it always allows multiple selection.\n accept: Array<string>;\n maxSize: number | string;\n multipleMaxCount: number;\n multipleMaxSize: number | string;\n onUploadCompletion?: Function;\n}\n\ninterface RenderFileProps extends Omit<FileProps, \"children\"> {\n file: FileItem;\n children?: React.ReactNode;\n}\nconst renderFile: React.FC<RenderFileProps> = props => {\n const { file } = props;\n const plugin = getFileTypePlugin(file);\n if (!plugin) {\n return null;\n }\n return (\n <File {...props} key={file.id}>\n {plugin.render({\n /**\n * TODO @ts-refactor\n */\n // @ts-ignore\n file\n })}\n </File>\n );\n};\ninterface RenderEmptyProps {\n hasPreviouslyUploadedFiles: boolean;\n browseFiles: FilesRenderChildren[\"browseFiles\"];\n fmFilePermission: SecurityPermission | null;\n}\nconst renderEmpty: React.FC<RenderEmptyProps> = ({\n hasPreviouslyUploadedFiles,\n browseFiles,\n fmFilePermission\n}) => {\n if (!fmFilePermission) {\n return <NoPermissionView />;\n }\n if (hasPreviouslyUploadedFiles) {\n return <NoResults />;\n }\n return <DropFilesHere empty onClick={() => browseFiles()} />;\n};\n\ninterface RefreshOnScrollParams {\n fetchMore: ObservableQueryFields<ListFilesQueryResponse, ListFilesQueryVariables>[\"fetchMore\"];\n scrollFrame: {\n top: number;\n };\n}\n\ninterface FileError {\n file: FileItem;\n e: Error;\n}\n\ninterface GetFileDetailsFileParams {\n src: string;\n list: FileItem[];\n}\n\nconst FileManagerView: React.FC<FileManagerViewProps> = props => {\n const {\n onClose,\n onChange,\n accept,\n multiple,\n maxSize,\n multipleMaxCount,\n multipleMaxSize,\n onUploadCompletion\n } = props;\n\n const {\n selected,\n toggleSelected,\n dragging,\n setDragging,\n uploading,\n setUploading,\n showFileDetails,\n showingFileDetails,\n queryParams,\n setQueryParams,\n hasPreviouslyUploadedFiles,\n setHasPreviouslyUploadedFiles\n } = useFileManager();\n const { showSnackbar } = useSnackbar();\n\n const { identity, getPermission } = useSecurity();\n const fmFilePermission = useMemo((): FileManagerSecurityPermission | null => {\n return getPermission<FileManagerSecurityPermission>(\"fm.file\");\n }, [identity]);\n const canCreate = useMemo(() => {\n // Bail out early if no access\n if (!fmFilePermission) {\n return false;\n }\n\n if (fmFilePermission.own) {\n return true;\n }\n\n if (typeof fmFilePermission.rwd === \"string\") {\n return fmFilePermission.rwd.includes(\"w\");\n }\n\n return true;\n }, [fmFilePermission]);\n const canEdit = useCallback(\n item => {\n // Bail out early if no access\n if (!fmFilePermission) {\n return false;\n }\n const creatorId = get(item, \"createdBy.id\");\n\n if (fmFilePermission.own && creatorId) {\n const identityId = identity ? identity.id || identity.login : null;\n return creatorId === identityId;\n }\n\n if (typeof fmFilePermission.rwd === \"string\") {\n return fmFilePermission.rwd.includes(\"w\");\n }\n\n return true;\n },\n [fmFilePermission]\n );\n\n const searchOnChange = useCallback(\n // @ts-ignore\n debounce(search => setQueryParams({ search }), 500),\n []\n );\n\n const toggleTag = useCallback(async ({ tag, queryParams }) => {\n const finalTags = Array.isArray(queryParams.tags) ? [...queryParams.tags] : [];\n\n if (finalTags.includes(tag)) {\n finalTags.splice(finalTags.indexOf(tag), 1);\n } else {\n finalTags.push(tag);\n }\n\n setQueryParams({ ...queryParams, tags: finalTags });\n }, []);\n\n const getFileUploadErrorMessage = useCallback(e => {\n if (typeof e === \"string\") {\n const match = e.match(/Message>(.*?)<\\/Message/);\n if (match) {\n const [, message] = match;\n return message;\n }\n\n return e;\n }\n return e.message;\n }, []);\n\n const updateCacheAfterCreateFile: MutationUpdaterFn<CreateFileMutationResponse> = (\n cache,\n newFile\n ) => {\n const newFileData = get(newFile, \"data.fileManager.createFile.data\");\n\n const data = cache.readQuery<ListFilesQueryResponse>({\n query: LIST_FILES,\n variables: queryParams\n });\n\n cache.writeQuery({\n query: LIST_FILES,\n variables: queryParams,\n data: {\n fileManager: {\n ...(data?.fileManager || {}),\n listFiles: {\n ...(data?.fileManager || {}).listFiles,\n data: [newFileData, ...((data?.fileManager?.listFiles || {}).data || [])]\n }\n }\n }\n });\n };\n\n const getFileDetailsFile = useCallback(({ src, list }: GetFileDetailsFileParams): FileItem => {\n return list.find(item => item.src === src) as FileItem;\n }, []);\n\n useHotkeys({\n zIndex: 50,\n keys: {\n esc: onClose\n }\n });\n\n const searchInput = useRef<HTMLInputElement>(null);\n\n const apolloClient = useApolloClient();\n\n const gqlQuery = useQuery<ListFilesQueryResponse, ListFilesQueryVariables>(LIST_FILES, {\n variables: queryParams,\n onCompleted: response => {\n const list = get(response, \"fileManager.listFiles.data\") || [];\n if (hasPreviouslyUploadedFiles === null) {\n setHasPreviouslyUploadedFiles(list.length > 0);\n }\n }\n });\n\n const refreshOnScroll = useCallback(\n debounce(({ scrollFrame, fetchMore }: RefreshOnScrollParams) => {\n if (scrollFrame.top > 0.9) {\n const cursor = get(gqlQuery.data, \"fileManager.listFiles.meta.cursor\");\n if (cursor) {\n fetchMore({\n variables: { after: cursor },\n updateQuery: (\n prev: ListFilesQueryResponse,\n result: { fetchMoreResult?: ListFilesQueryResponse }\n ) => {\n const { fetchMoreResult } = result;\n if (!fetchMoreResult) {\n return prev;\n }\n\n const next = { ...fetchMoreResult };\n\n next.fileManager.listFiles.data = [\n ...prev.fileManager.listFiles.data,\n ...fetchMoreResult.fileManager.listFiles.data\n ];\n\n return next;\n }\n });\n }\n }\n }, 500),\n [gqlQuery]\n );\n\n const { data, fetchMore, loading } = gqlQuery;\n\n const list: FileItem[] = get(data, \"fileManager.listFiles.data\") || [];\n const [createFile] = useMutation<CreateFileMutationResponse, CreateFileMutationVariables>(\n CREATE_FILE,\n {\n update: updateCacheAfterCreateFile\n }\n );\n const uploadFile = async (files: FileItem[] | FileItem): Promise<number | null> => {\n setUploading(true);\n const list: FileItem[] = Array.isArray(files) ? files : [files];\n\n const errors: FileError[] = [];\n const uploadedFiles: FileItem[] = [];\n await Promise.all(\n list.map(async file => {\n try {\n const response = await getFileUploader()(file, { apolloClient });\n const createFileResponse = await createFile({ variables: { data: response } });\n // Save create file data for later\n uploadedFiles.push(get(createFileResponse, \"data.fileManager.createFile.data\"));\n } catch (e) {\n errors.push({ file, e });\n }\n })\n );\n\n if (!hasPreviouslyUploadedFiles) {\n setHasPreviouslyUploadedFiles(true);\n }\n\n setUploading(false);\n\n if (errors.length > 0) {\n // We wait 750ms, just for everything to settle down a bit.\n return setTimeout(() => {\n showSnackbar(\n <>\n {t`One or more files were not uploaded successfully:`}\n <ol>\n {errors.map(({ file, e }) => (\n <li key={file.name}>\n <strong>{file.name}</strong>: {getFileUploadErrorMessage(e)}\n </li>\n ))}\n </ol>\n </>\n );\n // TODO @ts-refactor\n }, 750) as unknown as number;\n }\n\n // We wait 750ms, just for everything to settle down a bit.\n setTimeout(() => showSnackbar(t`File upload complete.`), 750);\n if (typeof onUploadCompletion === \"function\") {\n // We wait 750ms, just for everything to settle down a bit.\n return setTimeout(() => {\n onUploadCompletion(uploadedFiles);\n onClose();\n // TODO @ts-refactor\n }, 750) as unknown as number;\n }\n return null;\n };\n\n const renderUploadFileAction = useCallback(\n ({ browseFiles }) => {\n if (!canCreate) {\n return null;\n }\n return (\n <ButtonPrimary onClick={browseFiles} disabled={uploading}>\n <ButtonIcon icon={<UploadIcon />} />\n {t`Upload...`}\n </ButtonPrimary>\n );\n },\n [uploading, canCreate]\n );\n\n const settingsQuery = useQuery(GET_FILE_SETTINGS);\n const settings = get(settingsQuery.data, \"fileManager.getSettings.data\") || {};\n return (\n <Files\n multiple\n maxSize={settings.uploadMaxFileSize ? settings.uploadMaxFileSize + \"b\" : maxSize}\n multipleMaxSize={multipleMaxSize}\n multipleMaxCount={multipleMaxCount}\n accept={accept}\n onSuccess={files => {\n uploadFile(files.map(file => file.src.file as FileItem).filter(Boolean));\n }}\n onError={errors => {\n /**\n * TODO @ts-refactor\n * Figure out if incoming errors var is wrong or the one in the outputFileSelectionError\n */\n // @ts-ignore\n const message = outputFileSelectionError(errors);\n showSnackbar(message);\n }}\n >\n {({ getDropZoneProps, browseFiles, validateFiles }) => (\n <OverlayLayout\n {...getDropZoneProps({\n onDragEnter: () => hasPreviouslyUploadedFiles && setDragging(true),\n onExited: onClose\n })}\n barLeft={\n <InputSearch>\n <Icon className={searchIcon} icon={<SearchIcon />} />\n <input\n ref={searchInput}\n onChange={e => searchOnChange(e.target.value)}\n placeholder={t`Search by filename or tags`}\n disabled={!fmFilePermission}\n data-testid={\"file-manager.search-input\"}\n />\n </InputSearch>\n }\n barRight={\n selected.length > 0 ? (\n <ButtonPrimary\n disabled={uploading}\n onClick={() => {\n (async () => {\n await onChange(multiple ? selected : selected[0]);\n\n onClose();\n })();\n }}\n >\n {t`Select`} {multiple && `(${selected.length})`}\n </ButtonPrimary>\n ) : (\n renderUploadFileAction({ browseFiles })\n )\n }\n >\n <>\n {dragging && hasPreviouslyUploadedFiles && (\n <DropFilesHere\n // @ts-ignore TODO: @adrian - className is never rendered?!\n className={style.draggingFeedback}\n onDragLeave={() => setDragging(false)}\n onDrop={() => setDragging(false)}\n />\n )}\n\n <FileDetails\n validateFiles={validateFiles}\n uploadFile={uploadFile}\n file={getFileDetailsFile({\n list,\n src: showingFileDetails\n })}\n canEdit={canEdit}\n />\n\n <LeftSidebar\n queryParams={queryParams}\n toggleTag={tag => toggleTag({ tag, queryParams })}\n />\n\n <FileListWrapper data-testid={\"fm-list-wrapper\"}>\n {loading && (\n <CircularProgress\n label={t`Loading Files...`}\n style={{ opacity: 1 }}\n />\n )}\n <Scrollbar\n onScrollFrame={scrollFrame =>\n refreshOnScroll({\n scrollFrame,\n fetchMore\n })\n }\n >\n <FileList>\n {list.length\n ? list.map(file =>\n renderFile({\n uploadFile,\n file,\n showFileDetails: () => showFileDetails(file.src),\n selected: selected.find(\n (current: FileItem) =>\n current.src === file.src\n ),\n onSelect:\n typeof onChange === \"undefined\"\n ? () => {\n return void 0;\n }\n : async () => {\n if (multiple) {\n toggleSelected(file);\n return;\n }\n\n await onChange(file);\n onClose();\n }\n })\n )\n : renderEmpty({\n hasPreviouslyUploadedFiles,\n browseFiles,\n fmFilePermission\n })}\n </FileList>\n </Scrollbar>\n <BottomInfoBar accept={accept} uploading={uploading} />\n </FileListWrapper>\n </>\n </OverlayLayout>\n )}\n </Files>\n );\n};\n\nFileManagerView.defaultProps = {\n multiple: false,\n maxSize: \"1000mb\",\n multipleMaxSize: \"1000mb\",\n multipleMaxCount: 100\n};\n\nexport default FileManagerView;\n"]}
@@ -80,8 +80,9 @@ var LeftSidebar = function LeftSidebar(props) {
80
80
  }, /*#__PURE__*/React.createElement(TagList, {
81
81
  "data-testid": "fm.left-drawer.tag-list"
82
82
  }, tagList.map(function (item, index) {
83
+ var className = activeTags.includes(item) ? "active" : "";
83
84
  return /*#__PURE__*/React.createElement(Tag, {
84
- className: activeTags.includes(item) && "active",
85
+ className: className,
85
86
  key: item + index,
86
87
  onClick: function onClick() {
87
88
  return toggleTag(item);
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["LeftSidebar.tsx"],"names":["React","useQuery","get","sortBy","css","styled","Icon","ReactComponent","TagIcon","LIST_TAGS","style","leftDrawer","float","display","width","height","backgroundColor","padding","noTagged","paddingTop","textAlign","color","TagList","flexDirection","Tag","alignItems","cursor","paddingLeft","svg","marginRight","LeftSidebar","props","toggleTag","tags","queryParams","activeTags","Array","isArray","data","list","length","tagList","map","item","index","className","includes"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { useQuery } from \"@apollo/react-hooks\";\nimport get from \"lodash/get\";\nimport sortBy from \"lodash/sortBy\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { ReactComponent as TagIcon } from \"./icons/round-label-24px.svg\";\nimport { LIST_TAGS } from \"./graphql\";\n\nconst style = {\n leftDrawer: css({\n float: \"left\",\n display: \"inline-block\",\n width: 250,\n height: \"100%\",\n backgroundColor: \"var(--mdc-theme-surface)\",\n padding: 10\n }),\n noTagged: css({\n paddingTop: 100,\n textAlign: \"center\",\n color: \"var(--mdc-theme-on-surface)\"\n })\n};\n\nconst TagList = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"column\"\n});\n\nconst Tag = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"row\",\n height: 40,\n alignItems: \"center\",\n cursor: \"pointer\",\n paddingLeft: 15,\n color: \"var(--mdc-theme-on-surface)\",\n svg: {\n color: \"var(--mdc-theme-on-surface)\",\n marginRight: 10\n },\n \"&:hover\": {\n backgroundColor: \"var(--mdc-theme-background)\"\n },\n \"&.active\": {\n svg: {\n color: \"var(--mdc-theme-secondary)\"\n }\n }\n});\n\ninterface LeftSidebarProps {\n toggleTag: (item: string) => void;\n queryParams: {\n tags: string[];\n };\n}\nconst LeftSidebar: React.FC<LeftSidebarProps> = props => {\n const {\n toggleTag,\n queryParams: { tags }\n } = props;\n const activeTags = Array.isArray(tags) ? tags : [];\n\n const { data } = useQuery(LIST_TAGS);\n\n const list = get(data, \"fileManager.listTags\") || [];\n\n if (list.length === 0) {\n return (\n <div className={style.leftDrawer} data-testid={\"fm.left-drawer.empty-tag\"}>\n <div className={style.noTagged}>\n Once you tag an image, the tag will be displayed here.\n </div>\n </div>\n );\n }\n // Sort \"tags\" list in \"ASC\" order.\n const tagList = sortBy(list);\n\n return (\n <div className={style.leftDrawer}>\n <TagList data-testid={\"fm.left-drawer.tag-list\"}>\n {tagList.map((item, index) => {\n const className = activeTags.includes(item) ? \"active\" : \"\";\n return (\n <Tag\n className={className}\n key={item + index}\n onClick={() => toggleTag(item)}\n >\n <Icon icon={<TagIcon />} /> {item}\n </Tag>\n );\n })}\n </TagList>\n </div>\n );\n};\n\nexport default LeftSidebar;\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["NoPermissionView.tsx"],"names":["React","css","Icon","i18n","ReactComponent","PermissionIcon","Typography","t","ns","styles","margin","paddingTop","height","zIndex","width","position","backgroundColor","textAlign","borderRadius","left","top","transform","display","flexDirection","alignItems","color","marginTop","NoPermissionView"],"mappings":";;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,GAAT,QAAoB,SAApB;AACA,SAASC,IAAT,QAAqB,iBAArB;AACA,SAASC,IAAT,QAAqB,kBAArB;AACA,SAASC,cAAc,IAAIC,cAA3B;AACA,SAASC,UAAT,QAA2B,uBAA3B;AAEA,IAAMC,CAAC,GAAGJ,IAAI,CAACK,EAAL,CAAQ,wDAAR,CAAV;AAEA,IAAMC,MAAM,gBAAGR,GAAG,CAAC;AACfS,EAAAA,MAAM,EAAE,QADO;AAEfC,EAAAA,UAAU,EAAE,CAFG;AAGfC,EAAAA,MAAM,EAAE,MAHO;AAIfC,EAAAA,MAAM,EAAE,CAJO;AAKfC,EAAAA,KAAK,EAAE,MALQ;AAMfC,EAAAA,QAAQ,EAAE,UANK;AAOfC,EAAAA,eAAe,EAAE,aAPF;AAQf,wBAAsB;AAClBC,IAAAA,SAAS,EAAE,QADO;AAElBH,IAAAA,KAAK,EAAE,GAFW;AAGlBF,IAAAA,MAAM,EAAE,GAHU;AAIlBI,IAAAA,eAAe,EAAE,0BAJC;AAKlBE,IAAAA,YAAY,EAAE,KALI;AAMlBH,IAAAA,QAAQ,EAAE,UANQ;AAOlBI,IAAAA,IAAI,EAAE,KAPY;AAQlBC,IAAAA,GAAG,EAAE,KARa;AASlBC,IAAAA,SAAS,EAAE,oCATO;AAUlB,0BAAsB;AAClBC,MAAAA,OAAO,EAAE,MADS;AAElBC,MAAAA,aAAa,EAAE,QAFG;AAGlBC,MAAAA,UAAU,EAAE,QAHM;AAIlBb,MAAAA,UAAU,EAAE,EAJM;AAKlBG,MAAAA,KAAK,EAAE,GALW;AAMlBW,MAAAA,KAAK,EAAE,6BANW;AAOlB,8BAAwB;AACpBX,QAAAA,KAAK,EAAE,GADa;AAEpBQ,QAAAA,OAAO,EAAE,cAFW;AAGpBG,QAAAA,KAAK,EAAE;AAHa,OAPN;AAYlB,kBAAY;AACRC,QAAAA,SAAS,EAAE;AADH,OAZM;AAelB,iBAAW;AACPD,QAAAA,KAAK,EAAE;AADA;AAfO;AAVJ;AARP,CAAD,kBAAlB;;AAwCA,IAAME,gBAA0B,GAAG,SAA7BA,gBAA6B,GAAM;AACrC,sBACI;AAAK,IAAA,SAAS,EAAElB;AAAhB,kBACI;AAAK,IAAA,SAAS,EAAE;AAAhB,kBACI;AAAK,IAAA,SAAS,EAAE;AAAhB,kBACI,oBAAC,IAAD;AAAM,IAAA,IAAI,eAAE,oBAAC,cAAD;AAAZ,IADJ,eAEI,oBAAC,UAAD;AACI,IAAA,SAAS,EAAE,OADf;AAEI,IAAA,GAAG,EAAE;AAFT,KAGEF,CAHF,uFAFJ,eAMI,oBAAC,UAAD;AAAY,IAAA,SAAS,EAAE,MAAvB;AAA+B,IAAA,GAAG,EAAE;AAApC,KACKA,CADL,6JANJ,CADJ,CADJ,CADJ;AAgBH,CAjBD;;AAmBA,eAAeoB,gBAAf","sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ReactComponent as PermissionIcon } from \"./icons/privacy_tip-24px.svg\";\nimport { Typography } from \"@webiny/ui/Typography\";\n\nconst t = i18n.ns(\"app-admin/file-manager/file-manager-view/no-permission\");\n\nconst styles = css({\n margin: \"0 auto\",\n paddingTop: 0,\n height: \"100%\",\n zIndex: 2,\n width: \"100%\",\n position: \"absolute\",\n backgroundColor: \"transparent\",\n \"& .outer-container\": {\n textAlign: \"center\",\n width: 300,\n height: 300,\n backgroundColor: \"var(--mdc-theme-surface)\",\n borderRadius: \"50%\",\n position: \"absolute\",\n left: \"50%\",\n top: \"50%\",\n transform: \"translateX(-50%) translateY(-100%)\",\n \"& .inner-container\": {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n paddingTop: 35,\n width: 300,\n color: \"var(--mdc-theme-on-surface)\",\n \"svg.mdc-button__icon\": {\n width: 100,\n display: \"inline-block\",\n color: \"var(--mdc-theme-on-surface)\"\n },\n \"& .title\": {\n marginTop: 8\n },\n \"& .body\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n }\n }\n }\n});\n\nconst NoPermissionView: React.FC = () => {\n return (\n <div className={styles}>\n <div className={\"outer-container\"}>\n <div className={\"inner-container\"}>\n <Icon icon={<PermissionIcon />} />\n <Typography\n className={\"title\"}\n use={\"subtitle1\"}\n >{t`Permission needed`}</Typography>\n <Typography className={\"body\"} use={\"body2\"}>\n {t`You're missing required permission to access files. Please contact the administrator.`}\n </Typography>\n </div>\n </div>\n </div>\n );\n};\n\nexport default NoPermissionView;\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["NoResults.tsx"],"names":["React","css","styles","padding","textAlign","position","width","DropFilesHere"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,GAAT,QAAoB,SAApB;AAEA,IAAMC,MAAM,gBAAGD,GAAG,CAAC;AACfE,EAAAA,OAAO,EAAE,WADM;AAEfC,EAAAA,SAAS,EAAE,QAFI;AAGfC,EAAAA,QAAQ,EAAE,UAHK;AAIfC,EAAAA,KAAK,EAAE;AAJQ,CAAD,kBAAlB;;AAOA,IAAMC,aAAuB,GAAG,SAA1BA,aAA0B,GAAM;AAClC,sBACI;AAAK,IAAA,SAAS,EAAEL;AAAhB,kBACI,qDADJ,CADJ;AAKH,CAND;;AAOA,eAAeK,aAAf","sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\n\nconst styles = css({\n padding: \"100px 0px\",\n textAlign: \"center\",\n position: \"absolute\",\n width: \"100%\"\n});\n\nconst DropFilesHere: React.FC = () => {\n return (\n <div className={styles}>\n <div>No results found.</div>\n </div>\n );\n};\nexport default DropFilesHere;\n"]}
@@ -1,4 +1,4 @@
1
1
  import { AdminFileManagerFileTypePlugin } from "../../types";
2
2
  import { FileManagerFileTypePlugin } from "../../plugins/FileManagerFileTypePlugin";
3
3
  import { FileItem } from "./types";
4
- export default function getFileTypePlugin(file: FileItem): AdminFileManagerFileTypePlugin | FileManagerFileTypePlugin;
4
+ export default function getFileTypePlugin(file: FileItem): AdminFileManagerFileTypePlugin | FileManagerFileTypePlugin | null;
@@ -20,6 +20,10 @@ export default function getFileTypePlugin(file) {
20
20
  // We don't want to include the global wildcard in this check.
21
21
  var types = fileTypePlugins[i].types;
22
22
 
23
+ if (!types) {
24
+ continue;
25
+ }
26
+
23
27
  if (types.find(function (t) {
24
28
  return minimatch(file.type, t);
25
29
  })) {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["getFileTypePlugin.ts"],"names":["invariant","minimatch","plugins","FileManagerFileTypePlugin","getFileTypePlugin","file","fileTypePlugins","byType","type","plugin","i","length","types","find","t"],"mappings":";AAAA,OAAOA,SAAP,MAAsB,WAAtB;AACA,OAAOC,SAAP,MAAsB,WAAtB;AACA,SAASC,OAAT,QAAwB,iBAAxB;AAEA,SAASC,yBAAT;AAGA,eAAe,SAASC,iBAAT,CACXC,IADW,EAEsD;AACjE,MAAI,CAACA,IAAL,EAAW;AACP,WAAO,IAAP;AACH;;AAED,MAAMC,eAAe,gCACdJ,OAAO,CAACK,MAAR,CAA+C,8BAA/C,CADc,sBAEdL,OAAO,CAACK,MAAR,CAA0CJ,yBAAyB,CAACK,IAApE,CAFc,EAArB;AAKA;AACJ;AACA;AACA;;AACI,MAAIC,MAAM,GAAG,IAAb;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,eAAe,CAACK,MAApC,EAA4CD,CAAC,EAA7C,EAAiD;AAC7C;AACA,QAAME,KAAK,GAAGN,eAAe,CAACI,CAAD,CAAf,CAAmBE,KAAjC;;AACA,QAAI,CAACA,KAAL,EAAY;AACR;AACH;;AACD,QAAIA,KAAK,CAACC,IAAN,CAAW,UAAAC,CAAC;AAAA,aAAIb,SAAS,CAACI,IAAI,CAACG,IAAN,EAAYM,CAAZ,CAAb;AAAA,KAAZ,CAAJ,EAA8C;AAC1CL,MAAAA,MAAM,GAAGH,eAAe,CAACI,CAAD,CAAxB;AACH;AACJ;;AAEDV,EAAAA,SAAS,CAACS,MAAD,uCAAsCJ,IAAI,CAACG,IAA3C,SAAT;AAEA,SAAOC,MAAP;AACH","sourcesContent":["import invariant from \"invariant\";\nimport minimatch from \"minimatch\";\nimport { plugins } from \"@webiny/plugins\";\nimport { AdminFileManagerFileTypePlugin } from \"~/types\";\nimport { FileManagerFileTypePlugin } from \"~/plugins/FileManagerFileTypePlugin\";\nimport { FileItem } from \"./types\";\n\nexport default function getFileTypePlugin(\n file: FileItem\n): AdminFileManagerFileTypePlugin | FileManagerFileTypePlugin | null {\n if (!file) {\n return null;\n }\n\n const fileTypePlugins = [\n ...plugins.byType<AdminFileManagerFileTypePlugin>(\"admin-file-manager-file-type\"),\n ...plugins.byType<FileManagerFileTypePlugin>(FileManagerFileTypePlugin.type)\n ];\n\n /**\n * TODO: if we are searching last available plugin, we can refactor this.\n * TODO: check out @pavel\n */\n let plugin = null;\n for (let i = 0; i < fileTypePlugins.length; i++) {\n // We don't want to include the global wildcard in this check.\n const types = fileTypePlugins[i].types;\n if (!types) {\n continue;\n }\n if (types.find(t => minimatch(file.type, t))) {\n plugin = fileTypePlugins[i];\n }\n }\n\n invariant(plugin, `Missing plugin to handle \"${file.type}\"!`);\n\n return plugin;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["getFileUploader.ts"],"names":["plugins","fileStoragePlugin","byName","Error","upload"],"mappings":"AAAA,SAASA,OAAT,QAAwB,iBAAxB;AAGA,gBAAe,YAA6C;AACxD,MAAMC,iBAAiB,GAAGD,OAAO,CAACE,MAAR,CACtB,0BADsB,CAA1B;;AAIA,MAAI,CAACD,iBAAL,EAAwB;AACpB,UAAME,KAAK,CAAC,6CAAD,CAAX;AACH;;AAED,SAAOF,iBAAiB,CAACG,MAAzB;AACH,CAVD","sourcesContent":["import { plugins } from \"@webiny/plugins\";\nimport { AppFileManagerStoragePlugin } from \"@webiny/app/types\";\n\nexport default (): AppFileManagerStoragePlugin[\"upload\"] => {\n const fileStoragePlugin = plugins.byName<AppFileManagerStoragePlugin>(\n \"app-file-manager-storage\"\n );\n\n if (!fileStoragePlugin) {\n throw Error('Missing plugin: \"app-file-manager-storage\".');\n }\n\n return fileStoragePlugin.upload;\n};\n"]}
@@ -1,6 +1,96 @@
1
+ import { FileItem } from "./types";
2
+ /**
3
+ * ##################
4
+ * List Files Query Response
5
+ */
6
+ export interface ListFilesListFilesResponse {
7
+ data: FileItem[];
8
+ error?: Error | null;
9
+ meta: {
10
+ hasMoreItems: boolean;
11
+ totalItem: number;
12
+ cursor: string | null;
13
+ };
14
+ }
15
+ export interface ListFilesQueryResponse {
16
+ fileManager: {
17
+ listFiles: ListFilesListFilesResponse;
18
+ };
19
+ }
20
+ export interface ListFilesQueryVariables {
21
+ types?: string[];
22
+ tags?: string[];
23
+ limit?: number;
24
+ search?: string;
25
+ after?: string;
26
+ }
1
27
  export declare const LIST_FILES: import("graphql").DocumentNode;
28
+ /**
29
+ * ##################
30
+ * List File Tags Query Response
31
+ */
32
+ export interface ListFileTagsQueryResponse {
33
+ fileManager: {
34
+ listTags: string[];
35
+ error: Error | null;
36
+ };
37
+ }
2
38
  export declare const LIST_TAGS: import("graphql").DocumentNode;
39
+ /**
40
+ * ##################
41
+ * Create File Mutation Response
42
+ */
43
+ export interface CreateFileMutationResponse {
44
+ fileManager: {
45
+ createFile: {
46
+ data: FileItem;
47
+ error?: Error | null;
48
+ };
49
+ };
50
+ }
51
+ export interface FileInput {
52
+ key: string;
53
+ name: string;
54
+ size: number;
55
+ type: string;
56
+ tags: string;
57
+ meta: Record<string, any>;
58
+ }
59
+ export interface CreateFileMutationVariables {
60
+ data: FileInput;
61
+ }
3
62
  export declare const CREATE_FILE: import("graphql").DocumentNode;
63
+ /**
64
+ * ##################
65
+ * Update File Mutation Response
66
+ */
67
+ export interface UpdateFileMutationResponse {
68
+ fileManager: {
69
+ updateFile: {
70
+ data: FileItem;
71
+ error?: Error | null;
72
+ };
73
+ };
74
+ }
75
+ export interface UpdateFileMutationVariables {
76
+ id: string;
77
+ data: Partial<FileInput>;
78
+ }
4
79
  export declare const UPDATE_FILE: import("graphql").DocumentNode;
80
+ /**
81
+ * ##################
82
+ * Delete File Mutation Response
83
+ */
84
+ export interface DeleteFileMutationResponse {
85
+ fileManager: {
86
+ updateFile: {
87
+ data: boolean;
88
+ error?: Error | null;
89
+ };
90
+ };
91
+ }
92
+ export interface DeleteFileMutationVariables {
93
+ id: string;
94
+ }
5
95
  export declare const DELETE_FILE: import("graphql").DocumentNode;
6
96
  export declare const GET_FILE_SETTINGS: import("graphql").DocumentNode;
@@ -9,9 +9,34 @@ var FILE_FIELDS =
9
9
  var ERROR_FIELDS =
10
10
  /* GraphQL */
11
11
  "\n {\n code\n message\n data\n }\n";
12
+ /**
13
+ * ##################
14
+ * List Files Query Response
15
+ */
16
+
12
17
  export var LIST_FILES = gql(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query ListFiles($types: [String], $tags: [String], $limit: Int, $search: String, $after: String) {\n fileManager {\n listFiles(types: $types, limit: $limit, search: $search, tags: $tags, after: $after) {\n data ", "\n meta {\n cursor\n totalCount\n }\n }\n }\n }\n"])), FILE_FIELDS);
18
+ /**
19
+ * ##################
20
+ * List File Tags Query Response
21
+ */
22
+
13
23
  export var LIST_TAGS = gql(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n query ListTags {\n fileManager {\n listTags\n }\n }\n"])));
24
+ /**
25
+ * ##################
26
+ * Create File Mutation Response
27
+ */
28
+
14
29
  export var CREATE_FILE = gql(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n mutation CreateFile($data: FileInput!) {\n fileManager {\n createFile(data: $data) {\n error ", "\n data ", "\n }\n }\n }\n"])), ERROR_FIELDS, FILE_FIELDS);
30
+ /**
31
+ * ##################
32
+ * Update File Mutation Response
33
+ */
34
+
15
35
  export var UPDATE_FILE = gql(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n mutation UpdateFile($id: ID!, $data: FileInput!) {\n fileManager {\n updateFile(id: $id, data: $data) {\n data {\n id\n src\n name\n tags\n }\n error ", "\n }\n }\n }\n"])), ERROR_FIELDS);
36
+ /**
37
+ * ##################
38
+ * Delete File Mutation Response
39
+ */
40
+
16
41
  export var DELETE_FILE = gql(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n mutation deleteFile($id: ID!) {\n fileManager {\n deleteFile(id: $id) {\n data\n error ", "\n }\n }\n }\n"])), ERROR_FIELDS);
17
42
  export var GET_FILE_SETTINGS = gql(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n query getSettings {\n fileManager {\n getSettings {\n data {\n uploadMinFileSize\n uploadMaxFileSize\n }\n error ", "\n }\n }\n }\n"])), ERROR_FIELDS);
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["graphql.ts"],"names":["gql","FILE_FIELDS","ERROR_FIELDS","LIST_FILES","LIST_TAGS","CREATE_FILE","UPDATE_FILE","DELETE_FILE","GET_FILE_SETTINGS"],"mappings":";;;;AAAA,OAAOA,GAAP,MAAgB,aAAhB;AAGA,IAAMC,WAAW;AAAG;AAAH,uMAAjB;AAiBA,IAAMC,YAAY;AAAG;AAAH,+DAAlB;AAQA;AACA;AACA;AACA;;AAsBA,OAAO,IAAMC,UAAU,GAAGH,GAAH,+cAIAC,WAJA,CAAhB;AAaP;AACA;AACA;AACA;;AAOA,OAAO,IAAMG,SAAS,GAAGJ,GAAH,8JAAf;AAOP;AACA;AACA;AACA;;AAoBA,OAAO,IAAMK,WAAW,GAAGL,GAAH,8QAIAE,YAJA,EAKDD,WALC,CAAjB;AAUP;AACA;AACA;AACA;;AAaA,OAAO,IAAMK,WAAW,GAAGN,GAAH,sZAUAE,YAVA,CAAjB;AAgBP;AACA;AACA;AACA;;AAYA,OAAO,IAAMK,WAAW,GAAGP,GAAH,4PAKAE,YALA,CAAjB;AAWP,OAAO,IAAMM,iBAAiB,GAAGR,GAAH,2UAQNE,YARM,CAAvB","sourcesContent":["import gql from \"graphql-tag\";\nimport { FileItem } from \"~/components/FileManager/types\";\n\nconst FILE_FIELDS = /* GraphQL */ `\n {\n __typename\n id\n name\n key\n src\n size\n type\n tags\n createdOn\n createdBy {\n id\n }\n }\n`;\n\nconst ERROR_FIELDS = /* GraphQL */ `\n {\n code\n message\n data\n }\n`;\n\n/**\n * ##################\n * List Files Query Response\n */\nexport interface ListFilesListFilesResponse {\n data: FileItem[];\n error?: Error | null;\n meta: {\n hasMoreItems: boolean;\n totalItem: number;\n cursor: string | null;\n };\n}\nexport interface ListFilesQueryResponse {\n fileManager: {\n listFiles: ListFilesListFilesResponse;\n };\n}\nexport interface ListFilesQueryVariables {\n types?: string[];\n tags?: string[];\n limit?: number;\n search?: string;\n after?: string;\n}\nexport const LIST_FILES = gql`\n query ListFiles($types: [String], $tags: [String], $limit: Int, $search: String, $after: String) {\n fileManager {\n listFiles(types: $types, limit: $limit, search: $search, tags: $tags, after: $after) {\n data ${FILE_FIELDS}\n meta {\n cursor\n totalCount\n }\n }\n }\n }\n`;\n/**\n * ##################\n * List File Tags Query Response\n */\nexport interface ListFileTagsQueryResponse {\n fileManager: {\n listTags: string[];\n error: Error | null;\n };\n}\nexport const LIST_TAGS = gql`\n query ListTags {\n fileManager {\n listTags\n }\n }\n`;\n/**\n * ##################\n * Create File Mutation Response\n */\nexport interface CreateFileMutationResponse {\n fileManager: {\n createFile: {\n data: FileItem;\n error?: Error | null;\n };\n };\n}\nexport interface FileInput {\n key: string;\n name: string;\n size: number;\n type: string;\n tags: string;\n meta: Record<string, any>;\n}\nexport interface CreateFileMutationVariables {\n data: FileInput;\n}\nexport const CREATE_FILE = gql`\n mutation CreateFile($data: FileInput!) {\n fileManager {\n createFile(data: $data) {\n error ${ERROR_FIELDS}\n data ${FILE_FIELDS}\n }\n }\n }\n`;\n/**\n * ##################\n * Update File Mutation Response\n */\nexport interface UpdateFileMutationResponse {\n fileManager: {\n updateFile: {\n data: FileItem;\n error?: Error | null;\n };\n };\n}\nexport interface UpdateFileMutationVariables {\n id: string;\n data: Partial<FileInput>;\n}\nexport const UPDATE_FILE = gql`\n mutation UpdateFile($id: ID!, $data: FileInput!) {\n fileManager {\n updateFile(id: $id, data: $data) {\n data {\n id\n src\n name\n tags\n }\n error ${ERROR_FIELDS}\n }\n }\n }\n`;\n\n/**\n * ##################\n * Delete File Mutation Response\n */\nexport interface DeleteFileMutationResponse {\n fileManager: {\n updateFile: {\n data: boolean;\n error?: Error | null;\n };\n };\n}\nexport interface DeleteFileMutationVariables {\n id: string;\n}\nexport const DELETE_FILE = gql`\n mutation deleteFile($id: ID!) {\n fileManager {\n deleteFile(id: $id) {\n data\n error ${ERROR_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_FILE_SETTINGS = gql`\n query getSettings {\n fileManager {\n getSettings {\n data {\n uploadMinFileSize\n uploadMaxFileSize\n }\n error ${ERROR_FIELDS}\n }\n }\n }\n`;\n"]}
@@ -1,5 +1,7 @@
1
- declare const _default: (errors: Record<string, any>[]) => string | null;
2
- /**
3
- * Figure out correct types for the errors.
4
- */
1
+ import { FileError as BaseFileError } from "react-butterfiles";
2
+ interface FileError extends BaseFileError {
3
+ multipleMaxCount: number;
4
+ multipleMaxSize: number;
5
+ }
6
+ declare const _default: (errors: FileError[]) => string | null;
5
7
  export default _default;
@@ -1,9 +1,4 @@
1
1
  import bytes from "bytes";
2
- /**
3
- * Figure out correct types for the errors.
4
- */
5
- // TODO @ts-refactor
6
-
7
2
  export default (function (errors) {
8
3
  if (errors.length > 1) {
9
4
  var error = errors.find(function (error) {
@@ -40,7 +35,8 @@ export default (function (errors) {
40
35
 
41
36
  case "multipleNotAllowed":
42
37
  return "Only one file allowed.";
43
- }
44
38
 
45
- return null;
39
+ default:
40
+ return null;
41
+ }
46
42
  });
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["outputFileSelectionError.ts"],"names":["bytes","errors","length","error","find","type","multipleMaxCount","format","multipleMaxSize"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAQA,gBAAe,UAACC,MAAD,EAAwC;AACnD,MAAIA,MAAM,CAACC,MAAP,GAAgB,CAApB,EAAuB;AACnB,QAAIC,KAAK,GAAGF,MAAM,CAACG,IAAP,CAAY,UAAAD,KAAK;AAAA,aAAIA,KAAK,CAACE,IAAN,KAAe,0BAAnB;AAAA,KAAjB,CAAZ;;AACA,QAAIF,KAAJ,EAAW;AACP,+CAAkCA,KAAK,CAACG,gBAAxC;AACH;;AAEDH,IAAAA,KAAK,GAAGF,MAAM,CAACG,IAAP,CAAY,UAAAD,KAAK;AAAA,aAAIA,KAAK,CAACE,IAAN,KAAe,yBAAnB;AAAA,KAAjB,CAAR;;AACA,QAAIF,KAAJ,EAAW;AACP,+CAAkCH,KAAK,CAACO,MAAN,CAAaJ,KAAK,CAACK,eAAnB,CAAlC;AACH;;AAED,WAAO,kCAAP;AACH;;AAED,UAAQP,MAAM,CAAC,CAAD,CAAN,CAAUI,IAAlB;AACI,SAAK,qBAAL;AACI,aAAO,wBAAP;;AACJ,SAAK,iBAAL;AACI,aAAO,oBAAP;;AACJ,SAAK,0BAAL;AACI,aAAO,8BAAP;;AACJ,SAAK,yBAAL;AACI,aAAO,6BAAP;;AACJ,SAAK,oBAAL;AACI,aAAO,wBAAP;;AACJ;AACI,aAAO,IAAP;AAZR;AAcH,CA7BD","sourcesContent":["import bytes from \"bytes\";\nimport { FileError as BaseFileError } from \"react-butterfiles\";\n\ninterface FileError extends BaseFileError {\n multipleMaxCount: number;\n multipleMaxSize: number;\n}\n\nexport default (errors: FileError[]): string | null => {\n if (errors.length > 1) {\n let error = errors.find(error => error.type === \"multipleMaxCountExceeded\");\n if (error) {\n return `Cannot upload more than ${error.multipleMaxCount} files at once.`;\n }\n\n error = errors.find(error => error.type === \"multipleMaxSizeExceeded\");\n if (error) {\n return `Cannot upload more than ${bytes.format(error.multipleMaxSize)} at once.`;\n }\n\n return \"Multiple invalid files selected.\";\n }\n\n switch (errors[0].type) {\n case \"unsupportedFileType\":\n return \"Unsupported file type.\";\n case \"maxSizeExceeded\":\n return \"Max size exceeded.\";\n case \"multipleMaxCountExceeded\":\n return \"Multiple max files exceeded.\";\n case \"multipleMaxSizeExceeded\":\n return \"Multiple max size exceeded.\";\n case \"multipleNotAllowed\":\n return \"Only one file allowed.\";\n default:\n return null;\n }\n};\n"]}
@@ -1,3 +1,4 @@
1
+ import { SecurityPermission } from "@webiny/app-security/types";
1
2
  export interface FileItem {
2
3
  id: string;
3
4
  name: string;
@@ -12,38 +13,7 @@ export interface FileItem {
12
13
  };
13
14
  [key: string]: any;
14
15
  }
15
- export interface CreateFileResponse {
16
- fileManager: {
17
- createFile: {
18
- data: FileItem;
19
- error?: Error | null;
20
- };
21
- };
22
- }
23
- export interface UpdateFileResponse {
24
- fileManager: {
25
- updateFile: {
26
- data: FileItem;
27
- error?: Error | null;
28
- };
29
- };
30
- }
31
- export interface ListFilesResponse {
32
- fileManager: {
33
- listFiles: {
34
- data: FileItem[];
35
- error?: Error | null;
36
- meta: {
37
- hasMoreItems: boolean;
38
- totalItem: number;
39
- cursor: string | null;
40
- };
41
- };
42
- };
43
- }
44
- export interface ListFileTagsResponse {
45
- fileManager: {
46
- listTags: string[];
47
- error: Error | null;
48
- };
16
+ export interface FileManagerSecurityPermission extends SecurityPermission {
17
+ rwd?: string;
18
+ own?: boolean;
49
19
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -26,7 +26,7 @@ var FileManagerPortal = /*#__PURE__*/function (_React$Component) {
26
26
 
27
27
  _this = _super.call(this, props);
28
28
 
29
- _defineProperty(_assertThisInitialized(_this), "container", void 0);
29
+ _defineProperty(_assertThisInitialized(_this), "container", null);
30
30
 
31
31
  if (!window) {
32
32
  return _possibleConstructorReturn(_this);
@@ -50,8 +50,14 @@ var FileManagerPortal = /*#__PURE__*/function (_React$Component) {
50
50
  key: "render",
51
51
  value: function render() {
52
52
  var _this$props = this.props,
53
- onChange = _this$props.onChange,
54
- onClose = _this$props.onClose,
53
+ _this$props$onChange = _this$props.onChange,
54
+ onChange = _this$props$onChange === void 0 ? function () {
55
+ return void 0;
56
+ } : _this$props$onChange,
57
+ _this$props$onClose = _this$props.onClose,
58
+ onClose = _this$props$onClose === void 0 ? function () {
59
+ return void 0;
60
+ } : _this$props$onClose,
55
61
  accept = _this$props.accept,
56
62
  onChangePick = _this$props.onChangePick,
57
63
  multiple = _this$props.multiple,
@@ -82,7 +88,9 @@ var FileManagerPortal = /*#__PURE__*/function (_React$Component) {
82
88
  };
83
89
 
84
90
  var props = {
85
- onChange: typeof onChange === "function" ? handleFileOnChange : undefined,
91
+ onChange: typeof onChange === "function" ? handleFileOnChange : function () {
92
+ return void 0;
93
+ },
86
94
  onClose: onClose,
87
95
  accept: accept,
88
96
  multiple: multiple,
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FileManager.tsx"],"names":["React","useCallback","useEffect","useRef","useState","ReactDOM","FileManagerView","pick","FileManagerProvider","FileManagerPortal","props","window","container","document","getElementById","createElement","setAttribute","body","appendChild","onChange","onClose","accept","onChangePick","multiple","images","maxSize","multipleMaxCount","multipleMaxSize","onUploadCompletion","handleFileOnChange","files","length","fields","Array","isArray","items","map","file","createPortal","Component","FileManager","children","rest","show","setShow","onChangeRef","current","showFileManager"],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport FileManagerView, { FileManagerViewProps } from \"./FileManager/FileManagerView\";\nimport pick from \"lodash/pick\";\nimport { FileManagerProvider } from \"./FileManager/FileManagerContext\";\nimport { FileItem } from \"./FileManager/types\";\n\nexport interface ShowFileManagerCallable {\n (onChange?: (file?: FileItem | FileItem[]) => void): void;\n}\nexport interface FileManagerPropsChildren {\n showFileManager: ShowFileManagerCallable;\n}\n\nexport interface FileManagerProps {\n onChange?: (files: FileItem[] | FileItem) => void;\n onChangePick?: string[];\n images?: boolean;\n multiple?: boolean;\n accept?: Array<string>;\n children: (params: FileManagerPropsChildren) => React.ReactNode;\n maxSize?: number | string;\n multipleMaxCount?: number;\n multipleMaxSize?: number | string;\n onClose?: Function;\n onUploadCompletion?: (files: FileItem[]) => void;\n}\n\nexport type FileManagerPortalProps = Omit<FileManagerProps, \"children\">;\n\nclass FileManagerPortal extends React.Component<FileManagerPortalProps> {\n public container: HTMLElement | null = null;\n constructor(props: FileManagerPortalProps) {\n super(props);\n\n if (!window) {\n return;\n }\n\n this.container = window.document.getElementById(\"file-manager-container\");\n\n if (!this.container) {\n this.container = document.createElement(\"div\");\n this.container.setAttribute(\"id\", \"file-manager-container\");\n const container = this.container;\n document.body && document.body.appendChild(container);\n }\n }\n\n public override render() {\n const {\n onChange = () => {\n return void 0;\n },\n onClose = () => {\n return void 0;\n },\n accept,\n onChangePick,\n multiple,\n images,\n maxSize,\n multipleMaxCount,\n multipleMaxSize,\n onUploadCompletion\n } = this.props;\n\n const container = this.container as HTMLElement;\n\n const handleFileOnChange = (files?: FileItem[] | FileItem) => {\n if (!files || files.length === 0) {\n return;\n }\n const fields = Array.isArray(onChangePick)\n ? onChangePick\n : [\"id\", \"name\", \"key\", \"src\", \"size\", \"type\"];\n\n if (Array.isArray(files) === true) {\n const items = (files as FileItem[]).map(file => pick(file, fields));\n onChange(items as FileItem[]);\n return;\n }\n const file = pick(files as FileItem, fields);\n\n onChange(file as FileItem);\n };\n\n const props: FileManagerViewProps = {\n onChange:\n typeof onChange === \"function\"\n ? handleFileOnChange\n : () => {\n return void 0;\n },\n onClose,\n accept: accept as string[],\n multiple: multiple as boolean,\n maxSize: maxSize as string,\n multipleMaxCount: multipleMaxCount as number,\n multipleMaxSize: multipleMaxSize as number,\n onUploadCompletion\n };\n\n if (images) {\n props.accept = [\n \"image/jpg\",\n \"image/jpeg\",\n \"image/tiff\",\n \"image/gif\",\n \"image/png\",\n \"image/webp\",\n \"image/bmp\",\n \"image/svg+xml\"\n ];\n }\n\n // Let's pass \"permanent\" / \"persistent\" / \"temporary\" flags as \"mode\" prop instead.\n return ReactDOM.createPortal(\n <FileManagerProvider {...props}>\n <FileManagerView {...props} />\n </FileManagerProvider>,\n container\n );\n }\n}\n\nexport const FileManager: React.FC<FileManagerProps> = ({ children, ...rest }) => {\n const [show, setShow] = useState(false);\n const onChangeRef = useRef(rest.onChange);\n\n useEffect(() => {\n onChangeRef.current = rest.onChange;\n }, [rest.onChange]);\n\n const showFileManager = useCallback(onChange => {\n if (typeof onChange === \"function\") {\n onChangeRef.current = onChange;\n }\n setShow(true);\n }, []);\n\n return (\n <>\n {show && (\n <FileManagerPortal\n onClose={() => setShow(false)}\n {...rest}\n onChange={onChangeRef.current}\n />\n )}\n {children({ showFileManager })}\n </>\n );\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FloatingActionButton.tsx"],"names":["React","ButtonFloating","ReactComponent","AddIcon","FloatingActionButton","props","position","bottom","right"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,cAAT,QAA+B,mBAA/B;AACA,SAASC,cAAc,IAAIC,OAA3B,6C,CAEA;;AACA,IAAMC,oBAA8B,GAAG,SAAjCA,oBAAiC,CAAAC,KAAK,EAAI;AAC5C,sBACI;AACI,IAAA,KAAK,EAAE;AACHC,MAAAA,QAAQ,EAAE,UADP;AAEHC,MAAAA,MAAM,EAAE,EAFL;AAGHC,MAAAA,KAAK,EAAE;AAHJ;AADX,kBAOI,oBAAC,cAAD,oBAAoBH,KAApB;AAA2B,IAAA,IAAI,eAAE,oBAAC,OAAD;AAAjC,KAPJ,CADJ;AAWH,CAZD;;AAcA,SAASD,oBAAT","sourcesContent":["import * as React from \"react\";\nimport { ButtonFloating } from \"@webiny/ui/Button\";\nimport { ReactComponent as AddIcon } from \"../assets/icons/round-add-24px.svg\";\n\n// Set \"styles\" inline, since no customizations are possible / needed here.\nconst FloatingActionButton: React.FC = props => {\n return (\n <div\n style={{\n position: \"absolute\",\n bottom: 20,\n right: 20\n }}\n >\n <ButtonFloating {...props} icon={<AddIcon />} />\n </div>\n );\n};\n\nexport { FloatingActionButton };\n"]}
@@ -2,12 +2,12 @@ import * as React from "react";
2
2
  /**
3
3
  * TODO @ts-refactor
4
4
  */
5
- interface Props {
5
+ interface MultiImageUploadProps {
6
6
  imagePreviewProps: {
7
7
  src: string;
8
8
  [key: string]: any;
9
9
  };
10
10
  [key: string]: any;
11
11
  }
12
- declare const MultiImageUpload: React.FC<Props>;
12
+ declare const MultiImageUpload: React.FC<MultiImageUploadProps>;
13
13
  export default MultiImageUpload;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["MultiImageUpload.tsx"],"names":["React","Image","MultiImageUpload","UiMultiImageUpload","imagePreviewProps","multiImageUploadProps","renderImageProps","width"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,KAAT,QAAsB,8BAAtB;AACA,SAASC,gBAAgB,IAAIC,kBAA7B,QAAuD,wBAAvD;AAEA;AACA;AACA;;AAQA,IAAMD,gBAAiD,GAAG,SAApDA,gBAAoD,OAGpD;AAAA,MAFFE,iBAEE,QAFFA,iBAEE;AAAA,MADCC,qBACD;;AACF,sBACI,oBAAC;AACG;AACZ;AACA;AACA;AACY;AALJ;AAMI,IAAA,kBAAkB,EAAE,4BAACC,gBAAD,EAA2C;AAC3D,0BACI,oBAAC,KAAD;AACI,QAAA,SAAS,EAAE;AAAEC,UAAAA,KAAK,EAAE;AAAT;AADf,SAEQH,iBAFR,EAGQE,gBAHR,EADJ;AAOH;AAdL,KAeQD,qBAfR,EADJ;AAmBH,CAvBD;;AAwBA,eAAeH,gBAAf","sourcesContent":["import * as React from \"react\";\nimport { Image } from \"@webiny/app/components/Image\";\nimport { MultiImageUpload as UiMultiImageUpload } from \"@webiny/ui/ImageUpload\";\n\n/**\n * TODO @ts-refactor\n */\ninterface MultiImageUploadProps {\n imagePreviewProps: {\n src: string;\n [key: string]: any;\n };\n [key: string]: any;\n}\nconst MultiImageUpload: React.FC<MultiImageUploadProps> = ({\n imagePreviewProps,\n ...multiImageUploadProps\n}) => {\n return (\n <UiMultiImageUpload\n /**\n * TODO @ts-refactor\n * It appers that renderImagePreview does not exist on UiMultiImageUpload. So how did this work?\n */\n // @ts-ignore\n renderImagePreview={(renderImageProps: Record<string, any>) => {\n return (\n <Image\n transform={{ width: 300 }}\n {...imagePreviewProps}\n {...renderImageProps}\n />\n );\n }}\n {...multiImageUploadProps}\n />\n );\n};\nexport default MultiImageUpload;\n"]}
@@ -8,13 +8,13 @@ interface OverlayLayoutProps {
8
8
  onExited?: ExitHandler<HTMLElement>;
9
9
  style?: React.CSSProperties;
10
10
  }
11
- interface State {
11
+ interface OverlayLayoutState {
12
12
  isVisible: boolean;
13
13
  }
14
- export declare class OverlayLayout extends React.Component<OverlayLayoutProps, State> {
14
+ export declare class OverlayLayout extends React.Component<OverlayLayoutProps, OverlayLayoutState> {
15
15
  constructor(props: OverlayLayoutProps);
16
16
  static defaultProps: Partial<OverlayLayoutProps>;
17
- state: State;
17
+ state: OverlayLayoutState;
18
18
  hideComponent(): void;
19
19
  componentWillUnmount(): void;
20
20
  render(): JSX.Element;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["OverlayLayout.tsx"],"names":["React","Transition","styled","css","TopAppBarSecondary","TopAppBarSection","IconButton","noop","ReactComponent","CloseIcon","OverlayView","OverlayLayoutWrapper","position","width","height","backgroundColor","zIndex","paddingTop","top","left","noScroll","overflow","defaultStyle","transform","opacity","transitionProperty","transitionTimingFunction","transitionDuration","willChange","transitionStyles","entering","entered","OverlayLayout","props","isVisible","document","body","classList","add","setState","openedViews","remove","onExited","barLeft","barMiddle","barRight","children","style","rest","state","hideComponent","Component"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { Transition } from \"react-transition-group\";\nimport styled from \"@emotion/styled\";\nimport { css } from \"emotion\";\nimport { TopAppBarSecondary, TopAppBarSection } from \"@webiny/ui/TopAppBar\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport noop from \"lodash/noop\";\n\nimport { ReactComponent as CloseIcon } from \"./icons/close.svg\";\nimport { OverlayView } from \"~/ui/views/OverlayView\";\nimport { ExitHandler } from \"react-transition-group/Transition\";\n\nconst OverlayLayoutWrapper = styled(\"div\")({\n position: \"fixed\",\n width: \"100%\",\n height: \"100vh\",\n backgroundColor: \"var(--mdc-theme-background)\",\n /**\n * Has to be higher than 5 so it's above advanced settings dialog,\n * and below 20, so the image editor & Dialogs can be displayed above.\n */\n zIndex: 18,\n paddingTop: 65,\n top: 0,\n left: 0\n});\n\nconst noScroll = css({\n overflow: \"hidden\",\n height: \"100vh\"\n});\n\nconst defaultStyle = {\n transform: \"translateY(75vh)\",\n opacity: 0,\n transitionProperty: \"transform, opacity\",\n transitionTimingFunction: \"cubic-bezier(0, 0, .2, 1)\",\n transitionDuration: \"225ms\",\n willChange: \"opacity, transform\"\n};\n\nconst transitionStyles: Record<string, any> = {\n entering: {\n transform: \"translateY(75vh)\",\n opacity: 0\n },\n entered: {\n transform: \"translateY(0px)\",\n opacity: 1\n }\n};\n\ninterface OverlayLayoutProps {\n barMiddle?: React.ReactNode;\n barLeft?: React.ReactNode;\n barRight?: React.ReactNode;\n children: React.ReactNode;\n onExited?: ExitHandler<HTMLElement>;\n style?: React.CSSProperties;\n}\n\ninterface OverlayLayoutState {\n isVisible: boolean;\n}\n\nexport class OverlayLayout extends React.Component<OverlayLayoutProps, OverlayLayoutState> {\n constructor(props: OverlayLayoutProps) {\n super(props);\n document.body.classList.add(noScroll);\n }\n\n static defaultProps: Partial<OverlayLayoutProps> = {\n onExited: noop\n };\n\n public override state: OverlayLayoutState = {\n isVisible: true\n };\n\n public hideComponent(): void {\n this.setState({ isVisible: false });\n if (OverlayView.openedViews === 0) {\n document.body.classList.remove(noScroll);\n }\n }\n\n public override componentWillUnmount(): void {\n if (OverlayView.openedViews === 0) {\n document.body.classList.remove(noScroll);\n }\n }\n\n public override render() {\n const { onExited, barLeft, barMiddle, barRight, children, style, ...rest } = this.props;\n\n return (\n <Transition in={this.state.isVisible} timeout={100} appear onExited={onExited}>\n {state => (\n <OverlayLayoutWrapper\n {...rest}\n style={{ ...defaultStyle, ...style, ...transitionStyles[state] }}\n >\n <TopAppBarSecondary fixed style={{ top: 0 }}>\n <TopAppBarSection style={{ width: \"33%\" }} alignStart>\n {barLeft}\n </TopAppBarSection>\n <TopAppBarSection style={{ width: \"33%\" }}>\n {barMiddle}\n </TopAppBarSection>\n <TopAppBarSection style={{ width: \"33%\" }} alignEnd>\n {barRight}\n <IconButton\n ripple={false}\n onClick={() => this.hideComponent()}\n icon={<CloseIcon style={{ width: 24, height: 24 }} />}\n />\n </TopAppBarSection>\n </TopAppBarSecondary>\n\n {children}\n </OverlayLayoutWrapper>\n )}\n </Transition>\n );\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["OverlayLayout"],"mappings":"AAAA,SAASA,aAAT","sourcesContent":["export { OverlayLayout } from \"./OverlayLayout\";\n"]}
@@ -1,7 +1,7 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  import { BindComponentRenderProp } from "@webiny/form";
3
- declare type Props = BindComponentRenderProp & {
3
+ interface PermissionsProps extends BindComponentRenderProp {
4
4
  id: string;
5
- };
6
- export declare const Permissions: ({ id, value, onChange }: Props) => JSX.Element;
5
+ }
6
+ export declare const Permissions: React.FC<PermissionsProps>;
7
7
  export {};
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Permissions.tsx"],"names":["React","useMemo","Accordion","plugins","Permissions","id","value","onChange","byType","reduce","acc","plugin","system","systemPlugins","push","permissionPlugins","map","pl","name","render"],"mappings":";AAAA,OAAOA,KAAP,IAAgBC,OAAhB,QAA+B,OAA/B;AAEA,SAASC,SAAT,QAA0B,sBAA1B;AACA,SAASC,OAAT,QAAwB,iBAAxB;AAYA,OAAO,IAAMC,WAAuC,GAAG,SAA1CA,WAA0C,OAA6B;AAAA,MAA1BC,EAA0B,QAA1BA,EAA0B;AAAA,MAAtBC,KAAsB,QAAtBA,KAAsB;AAAA,MAAfC,QAAe,QAAfA,QAAe;;AAChF,iBAA6CN,OAAO,CAAoB,YAAM;AAC1E,WAAOE,OAAO,CACTK,MADE,CACuC,gCADvC,EAEFC,MAFE,CAGC,UAACC,GAAD,EAAMC,MAAN,EAAiB;AACb,UAAIA,MAAM,CAACC,MAAP,KAAkB,IAAtB,EAA4B;AACxBF,QAAAA,GAAG,CAACG,aAAJ,CAAkBC,IAAlB,CAAuBH,MAAvB;AACH,OAFD,MAEO;AACHD,QAAAA,GAAG,CAACK,iBAAJ,CAAsBD,IAAtB,CAA2BH,MAA3B;AACH;;AACD,aAAOD,GAAP;AACH,KAVF,EAWC;AAAEG,MAAAA,aAAa,EAAE,EAAjB;AAAqBE,MAAAA,iBAAiB,EAAE;AAAxC,KAXD,CAAP;AAaH,GAdmD,EAcjD,EAdiD,CAApD;AAAA,MAAQF,aAAR,YAAQA,aAAR;AAAA,MAAuBE,iBAAvB,YAAuBA,iBAAvB;;AAgBA,sBACI,oBAAC,SAAD;AAAW,IAAA,SAAS,EAAE;AAAtB,KACK,6BAAIF,aAAJ,sBAAsBE,iBAAtB,GAAyCC,GAAzC,CAA6C,UAAAC,EAAE;AAAA,wBAC5C,oBAAC,KAAD,CAAO,QAAP;AAAgB,MAAA,GAAG,EAAEA,EAAE,CAACC,IAAH,GAAU,GAAV,GAAgBb;AAArC,OACKY,EAAE,CAACE,MAAH,CAAU;AACPb,MAAAA,KAAK,EAALA,KADO;AAEPC,MAAAA,QAAQ,EAARA;AAFO,KAAV,CADL,CAD4C;AAAA,GAA/C,CADL,CADJ;AAYH,CA7BM","sourcesContent":["import React, { useMemo } from \"react\";\nimport { AdminAppPermissionRendererPlugin } from \"~/types\";\nimport { Accordion } from \"@webiny/ui/Accordion\";\nimport { plugins } from \"@webiny/plugins\";\nimport { BindComponentRenderProp } from \"@webiny/form\";\n\ninterface PermissionsProps extends BindComponentRenderProp {\n id: string;\n}\n\ninterface PermissionPlugins {\n systemPlugins: AdminAppPermissionRendererPlugin[];\n permissionPlugins: AdminAppPermissionRendererPlugin[];\n}\n\nexport const Permissions: React.FC<PermissionsProps> = ({ id, value, onChange }) => {\n const { systemPlugins, permissionPlugins } = useMemo<PermissionPlugins>(() => {\n return plugins\n .byType<AdminAppPermissionRendererPlugin>(\"admin-app-permissions-renderer\")\n .reduce(\n (acc, plugin) => {\n if (plugin.system === true) {\n acc.systemPlugins.push(plugin);\n } else {\n acc.permissionPlugins.push(plugin);\n }\n return acc;\n },\n { systemPlugins: [], permissionPlugins: [] } as PermissionPlugins\n );\n }, []);\n\n return (\n <Accordion elevation={0}>\n {[...systemPlugins, ...permissionPlugins].map(pl => (\n <React.Fragment key={pl.name + \".\" + id}>\n {pl.render({\n value,\n onChange\n })}\n </React.Fragment>\n ))}\n </Accordion>\n );\n};\n"]}
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
2
  export declare const flexClass: string;
3
3
  export declare const gridNoPaddingClass: string;
4
- interface Props {
4
+ interface PermissionInfoProps {
5
5
  title: string;
6
6
  }
7
- export declare const PermissionInfo: React.FC<Props>;
7
+ export declare const PermissionInfo: React.FC<PermissionInfoProps>;
8
8
  export {};
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["StyledComponents.tsx"],"names":["React","css","Typography","flexClass","display","alignItems","height","gridNoPaddingClass","padding","PermissionInfo","title"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,GAAT,QAAoB,SAApB;AACA,SAASC,UAAT,QAA2B,uBAA3B;AAEA,OAAO,IAAMC,SAAS,gBAAGF,GAAG,CAAC;AACzBG,EAAAA,OAAO,EAAE,MADgB;AAEzBC,EAAAA,UAAU,EAAE,QAFa;AAGzBC,EAAAA,MAAM,EAAE;AAHiB,CAAD,qBAArB;AAMP,OAAO,IAAMC,kBAAkB,gBAAGN,GAAG,CAAC;AAClCO,EAAAA,OAAO,EAAE;AADyB,CAAD,8BAA9B;AAOP,OAAO,IAAMC,cAA6C,GAAG,SAAhDA,cAAgD;AAAA,MAAGC,KAAH,QAAGA,KAAH;AAAA,sBACzD;AAAK,IAAA,SAAS,EAAEP;AAAhB,kBACI,oBAAC,UAAD;AAAY,IAAA,GAAG,EAAE;AAAjB,KAA+BO,KAA/B,CADJ,CADyD;AAAA,CAAtD","sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport { Typography } from \"@webiny/ui/Typography\";\n\nexport const flexClass = css({\n display: \"flex\",\n alignItems: \"center\",\n height: \"100%\"\n});\n\nexport const gridNoPaddingClass = css({\n padding: \"0px !important\"\n});\n\ninterface PermissionInfoProps {\n title: string;\n}\nexport const PermissionInfo: React.FC<PermissionInfoProps> = ({ title }) => (\n <div className={flexClass}>\n <Typography use={\"subtitle2\"}>{title}</Typography>\n </div>\n);\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["Permissions"],"mappings":"AAAA;AACA,SAASA,WAAT","sourcesContent":["export * from \"./StyledComponents\";\nexport { Permissions } from \"./Permissions\";\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["RichTextEditor.tsx"],"names":["React","RichTextEditor","UiRichTextEditor","FileManager","props","showFileManager","placeholder","context"],"mappings":";AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,cAAc,IAAIC,gBAA3B,QAAwE,2BAAxE;AACA,SAASC,WAAT;AAEA,OAAO,IAAMF,cAA6C,GAAG,SAAhDA,cAAgD,CAAAG,KAAK,EAAI;AAClE,sBACI,oBAAC,WAAD,QACK;AAAA,QAAGC,eAAH,QAAGA,eAAH;AAAA,wBACG,oBAAC,gBAAD,oBACQD,KADR;AAEI,MAAA,WAAW,EAAEA,KAAK,CAACE,WAAN,IAAqB,oBAFtC;AAGI,MAAA,OAAO,kCAAOF,KAAK,CAACG,OAAb;AAAsBF,QAAAA,eAAe,EAAfA;AAAtB;AAHX,OADH;AAAA,GADL,CADJ;AAWH,CAZM","sourcesContent":["import React from \"react\";\nimport { RichTextEditor as UiRichTextEditor, RichTextEditorProps } from \"@webiny/ui/RichTextEditor\";\nimport { FileManager } from \"../FileManager\";\n\nexport const RichTextEditor: React.FC<RichTextEditorProps> = props => {\n return (\n <FileManager>\n {({ showFileManager }) => (\n <UiRichTextEditor\n {...props}\n placeholder={props.placeholder || \"Click here to type\"}\n context={{ ...props.context, showFileManager }}\n />\n )}\n </FileManager>\n );\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["RichTextEditor","createPropsFromConfig"],"mappings":"AAAA,SAASA,cAAT;AACA,SAASC,qBAAT,QAAsC,2BAAtC","sourcesContent":["export { RichTextEditor } from \"./RichTextEditor\";\nexport { createPropsFromConfig } from \"@webiny/ui/RichTextEditor\";\n"]}