@webiny/app-admin 0.0.0-unstable.611c5af35e → 0.0.0-unstable.615a930a68

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 (273) hide show
  1. package/base/Admin.js +15 -1
  2. package/base/Admin.js.map +1 -1
  3. package/base/Base.js +23 -4
  4. package/base/Base.js.map +1 -1
  5. package/base/plugins/AddGraphQLQuerySelection.js +8 -0
  6. package/base/plugins/AddGraphQLQuerySelection.js.map +1 -1
  7. package/base/providers/ApolloProvider.js +5 -0
  8. package/base/providers/ApolloProvider.js.map +1 -1
  9. package/base/providers/TelemetryProvider.js +7 -1
  10. package/base/providers/TelemetryProvider.js.map +1 -1
  11. package/base/providers/UiStateProvider.js +5 -0
  12. package/base/providers/UiStateProvider.js.map +1 -1
  13. package/base/providers/ViewCompositionProvider.js +16 -3
  14. package/base/providers/ViewCompositionProvider.js.map +1 -1
  15. package/base/ui/Brand.js +4 -0
  16. package/base/ui/Brand.js.map +1 -1
  17. package/base/ui/CenteredView.js +7 -2
  18. package/base/ui/CenteredView.js.map +1 -1
  19. package/base/ui/Dashboard.js +4 -0
  20. package/base/ui/Dashboard.js.map +1 -1
  21. package/base/ui/Layout.js +6 -1
  22. package/base/ui/Layout.js.map +1 -1
  23. package/base/ui/LocaleSelector.js +4 -0
  24. package/base/ui/LocaleSelector.js.map +1 -1
  25. package/base/ui/LoginScreen.js +6 -0
  26. package/base/ui/LoginScreen.js.map +1 -1
  27. package/base/ui/Logo.js +6 -0
  28. package/base/ui/Logo.js.map +1 -1
  29. package/base/ui/Menu.js +31 -2
  30. package/base/ui/Menu.js.map +1 -1
  31. package/base/ui/Navigation.js +44 -11
  32. package/base/ui/Navigation.js.map +1 -1
  33. package/base/ui/NotFound.js +4 -0
  34. package/base/ui/NotFound.js.map +1 -1
  35. package/base/ui/Search.js +23 -5
  36. package/base/ui/Search.js.map +1 -1
  37. package/base/ui/Tags.js +8 -1
  38. package/base/ui/Tags.js.map +1 -1
  39. package/base/ui/UserMenu.js +29 -5
  40. package/base/ui/UserMenu.js.map +1 -1
  41. package/components/AdminLayout.js +6 -1
  42. package/components/AdminLayout.js.map +1 -1
  43. package/components/AppInstaller/AppInstaller.js +52 -18
  44. package/components/AppInstaller/AppInstaller.js.map +1 -1
  45. package/components/AppInstaller/Sidebar.js +32 -9
  46. package/components/AppInstaller/Sidebar.js.map +1 -1
  47. package/components/AppInstaller/index.js +7 -0
  48. package/components/AppInstaller/index.js.map +1 -1
  49. package/components/AppInstaller/styled.js +4 -0
  50. package/components/AppInstaller/styled.js.map +1 -1
  51. package/components/AppInstaller/useInstaller.js +69 -17
  52. package/components/AppInstaller/useInstaller.js.map +1 -1
  53. package/components/EmptyView.js +11 -3
  54. package/components/EmptyView.js.map +1 -1
  55. package/components/FileManager/BottomInfoBar/SupportedFileTypes.js +14 -0
  56. package/components/FileManager/BottomInfoBar/SupportedFileTypes.js.map +1 -1
  57. package/components/FileManager/BottomInfoBar/UploadStatus.js +9 -0
  58. package/components/FileManager/BottomInfoBar/UploadStatus.js.map +1 -1
  59. package/components/FileManager/BottomInfoBar.js +12 -0
  60. package/components/FileManager/BottomInfoBar.js.map +1 -1
  61. package/components/FileManager/DropFilesHere.js +12 -3
  62. package/components/FileManager/DropFilesHere.js.map +1 -1
  63. package/components/FileManager/File.js +18 -5
  64. package/components/FileManager/File.js.map +1 -1
  65. package/components/FileManager/FileDetails/Name.js +32 -4
  66. package/components/FileManager/FileDetails/Name.js.map +1 -1
  67. package/components/FileManager/FileDetails/Tags.js +77 -26
  68. package/components/FileManager/FileDetails/Tags.js.map +1 -1
  69. package/components/FileManager/FileDetails.js +146 -81
  70. package/components/FileManager/FileDetails.js.map +1 -1
  71. package/components/FileManager/FileManagerContext.js +45 -12
  72. package/components/FileManager/FileManagerContext.js.map +1 -1
  73. package/components/FileManager/FileManagerView.js +152 -45
  74. package/components/FileManager/FileManagerView.js.map +1 -1
  75. package/components/FileManager/LeftSidebar.js +29 -10
  76. package/components/FileManager/LeftSidebar.js.map +1 -1
  77. package/components/FileManager/NoPermissionView.js +13 -0
  78. package/components/FileManager/NoPermissionView.js.map +1 -1
  79. package/components/FileManager/NoResults.js +6 -0
  80. package/components/FileManager/NoResults.js.map +1 -1
  81. package/components/FileManager/getFileTypePlugin.js +15 -9
  82. package/components/FileManager/getFileTypePlugin.js.map +1 -1
  83. package/components/FileManager/getFileUploader.js +5 -0
  84. package/components/FileManager/getFileUploader.js.map +1 -1
  85. package/components/FileManager/graphql.js +14 -3
  86. package/components/FileManager/graphql.js.map +1 -1
  87. package/components/FileManager/outputFileSelectionError.js +14 -0
  88. package/components/FileManager/outputFileSelectionError.js.map +1 -1
  89. package/components/FileManager.js +43 -17
  90. package/components/FileManager.js.map +1 -1
  91. package/components/FloatingActionButton.js +6 -0
  92. package/components/FloatingActionButton.js.map +1 -1
  93. package/components/MultiImageUpload.js +10 -1
  94. package/components/MultiImageUpload.js.map +1 -1
  95. package/components/OverlayLayout/OverlayLayout.js +36 -7
  96. package/components/OverlayLayout/OverlayLayout.js.map +1 -1
  97. package/components/OverlayLayout/index.js +2 -0
  98. package/components/OverlayLayout/index.js.map +1 -1
  99. package/components/Permissions/Permissions.js +27 -16
  100. package/components/Permissions/Permissions.js.map +1 -1
  101. package/components/Permissions/StyledComponents.js +7 -0
  102. package/components/Permissions/StyledComponents.js.map +1 -1
  103. package/components/Permissions/index.js +3 -0
  104. package/components/Permissions/index.js.map +1 -1
  105. package/components/RichTextEditor/RichTextEditor.js +7 -0
  106. package/components/RichTextEditor/RichTextEditor.js.map +1 -1
  107. package/components/RichTextEditor/index.js +2 -0
  108. package/components/RichTextEditor/index.js.map +1 -1
  109. package/components/RichTextEditor/tools/header/index.js +102 -62
  110. package/components/RichTextEditor/tools/header/index.js.map +1 -1
  111. package/components/RichTextEditor/tools/image/index.js +36 -15
  112. package/components/RichTextEditor/tools/image/index.js.map +1 -1
  113. package/components/RichTextEditor/tools/image/svgs.js.map +1 -1
  114. package/components/RichTextEditor/tools/image/tunes.js +22 -5
  115. package/components/RichTextEditor/tools/image/tunes.js.map +1 -1
  116. package/components/RichTextEditor/tools/image/ui.js +39 -16
  117. package/components/RichTextEditor/tools/image/ui.js.map +1 -1
  118. package/components/RichTextEditor/tools/paragraph/index.js +81 -55
  119. package/components/RichTextEditor/tools/paragraph/index.js.map +1 -1
  120. package/components/RichTextEditor/tools/textColor/index.js +41 -15
  121. package/components/RichTextEditor/tools/textColor/index.js.map +1 -1
  122. package/components/RichTextEditor/tools/utils.js +2 -0
  123. package/components/RichTextEditor/tools/utils.js.map +1 -1
  124. package/components/Routes.js +13 -6
  125. package/components/Routes.js.map +1 -1
  126. package/components/SearchUI.js +11 -3
  127. package/components/SearchUI.js.map +1 -1
  128. package/components/SimpleForm/SimpleForm.js +20 -0
  129. package/components/SimpleForm/SimpleForm.js.map +1 -1
  130. package/components/SimpleForm/index.js +1 -0
  131. package/components/SimpleForm/index.js.map +1 -1
  132. package/components/SimpleUI/InputField.js +29 -13
  133. package/components/SimpleUI/InputField.js.map +1 -1
  134. package/components/SingleImageUpload.js +28 -12
  135. package/components/SingleImageUpload.js.map +1 -1
  136. package/components/SplitView/SplitView.js +20 -0
  137. package/components/SplitView/SplitView.js.map +1 -1
  138. package/components/SplitView/index.js +1 -0
  139. package/components/SplitView/index.js.map +1 -1
  140. package/components/index.js +1 -0
  141. package/components/index.js.map +1 -1
  142. package/hooks/useConfirmationDialog.js +14 -2
  143. package/hooks/useConfirmationDialog.js.map +1 -1
  144. package/hooks/useDialog.js +5 -0
  145. package/hooks/useDialog.js.map +1 -1
  146. package/hooks/useSnackbar.js +5 -0
  147. package/hooks/useSnackbar.js.map +1 -1
  148. package/index.js +48 -0
  149. package/index.js.map +1 -1
  150. package/package.json +19 -19
  151. package/plugins/FileManagerFileTypePlugin.js +15 -0
  152. package/plugins/FileManagerFileTypePlugin.js.map +1 -1
  153. package/plugins/MenuPlugin.js +15 -0
  154. package/plugins/MenuPlugin.js.map +1 -1
  155. package/plugins/PermissionRendererPlugin.js +15 -0
  156. package/plugins/PermissionRendererPlugin.js.map +1 -1
  157. package/plugins/fileManager/fileDefault.js +6 -0
  158. package/plugins/fileManager/fileDefault.js.map +1 -1
  159. package/plugins/fileManager/fileImage/DeleteAction.js +29 -7
  160. package/plugins/fileManager/fileImage/DeleteAction.js.map +1 -1
  161. package/plugins/fileManager/fileImage/EditAction.js +43 -9
  162. package/plugins/fileManager/fileImage/EditAction.js.map +1 -1
  163. package/plugins/fileManager/fileImage/index.js +8 -0
  164. package/plugins/fileManager/fileImage/index.js.map +1 -1
  165. package/plugins/fileManager/index.js +2 -0
  166. package/plugins/fileManager/index.js.map +1 -1
  167. package/plugins/globalSearch/SearchBar.js +51 -3
  168. package/plugins/globalSearch/SearchBar.js.map +1 -1
  169. package/plugins/globalSearch/SearchBarDropdown.js +31 -13
  170. package/plugins/globalSearch/SearchBarDropdown.js.map +1 -1
  171. package/plugins/globalSearch/index.js.map +1 -1
  172. package/plugins/globalSearch/styled.js +5 -1
  173. package/plugins/globalSearch/styled.js.map +1 -1
  174. package/plugins/uiLayoutRenderer/index.js +16 -2
  175. package/plugins/uiLayoutRenderer/index.js.map +1 -1
  176. package/ui/UIElement.js +1 -0
  177. package/ui/UIElement.js.map +1 -1
  178. package/ui/UILayout.js +1 -0
  179. package/ui/UILayout.js.map +1 -1
  180. package/ui/UIRenderer.js +1 -0
  181. package/ui/UIRenderer.js.map +1 -1
  182. package/ui/UIView.js +1 -0
  183. package/ui/UIView.js.map +1 -1
  184. package/ui/elements/AccordionElement.js +28 -2
  185. package/ui/elements/AccordionElement.js.map +1 -1
  186. package/ui/elements/ButtonElement.js +19 -0
  187. package/ui/elements/ButtonElement.js.map +1 -1
  188. package/ui/elements/ButtonGroupElement.js +19 -0
  189. package/ui/elements/ButtonGroupElement.js.map +1 -1
  190. package/ui/elements/GenericElement.js +2 -0
  191. package/ui/elements/GenericElement.js.map +1 -1
  192. package/ui/elements/LabelElement.js +14 -0
  193. package/ui/elements/LabelElement.js.map +1 -1
  194. package/ui/elements/NavigationMenuElement.js +36 -3
  195. package/ui/elements/NavigationMenuElement.js.map +1 -1
  196. package/ui/elements/PanelElement.js +11 -0
  197. package/ui/elements/PanelElement.js.map +1 -1
  198. package/ui/elements/PlaceholderElement.js +11 -0
  199. package/ui/elements/PlaceholderElement.js.map +1 -1
  200. package/ui/elements/SmallButtonElement.js +19 -0
  201. package/ui/elements/SmallButtonElement.js.map +1 -1
  202. package/ui/elements/TypographyElement.js +19 -0
  203. package/ui/elements/TypographyElement.js.map +1 -1
  204. package/ui/elements/ViewElement.js +2 -0
  205. package/ui/elements/ViewElement.js.map +1 -1
  206. package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js +16 -0
  207. package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js.map +1 -1
  208. package/ui/elements/form/DynamicFieldsetElement.js +34 -11
  209. package/ui/elements/form/DynamicFieldsetElement.js.map +1 -1
  210. package/ui/elements/form/FileManagerElement/EmptyStateElement.js +15 -0
  211. package/ui/elements/form/FileManagerElement/EmptyStateElement.js.map +1 -1
  212. package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js +22 -0
  213. package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js.map +1 -1
  214. package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js +36 -7
  215. package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js.map +1 -1
  216. package/ui/elements/form/FileManagerElement/styled.js +5 -0
  217. package/ui/elements/form/FileManagerElement/styled.js.map +1 -1
  218. package/ui/elements/form/FileManagerElement.js +20 -0
  219. package/ui/elements/form/FileManagerElement.js.map +1 -1
  220. package/ui/elements/form/FormElement.js +21 -0
  221. package/ui/elements/form/FormElement.js.map +1 -1
  222. package/ui/elements/form/FormFieldElement.js +33 -0
  223. package/ui/elements/form/FormFieldElement.js.map +1 -1
  224. package/ui/elements/form/HiddenElement.js +17 -0
  225. package/ui/elements/form/HiddenElement.js.map +1 -1
  226. package/ui/elements/form/InputElement.js +18 -0
  227. package/ui/elements/form/InputElement.js.map +1 -1
  228. package/ui/elements/form/PasswordElement.js +15 -0
  229. package/ui/elements/form/PasswordElement.js.map +1 -1
  230. package/ui/elements/form/SelectElement.js +19 -1
  231. package/ui/elements/form/SelectElement.js.map +1 -1
  232. package/ui/elements/form/TextareaElement.js +17 -0
  233. package/ui/elements/form/TextareaElement.js.map +1 -1
  234. package/ui/views/AdminView/ContentElement.js +25 -1
  235. package/ui/views/AdminView/ContentElement.js.map +1 -1
  236. package/ui/views/AdminView/HeaderElement.js +40 -0
  237. package/ui/views/AdminView/HeaderElement.js.map +1 -1
  238. package/ui/views/AdminView/HeaderSectionCenterElement.js +20 -0
  239. package/ui/views/AdminView/HeaderSectionCenterElement.js.map +1 -1
  240. package/ui/views/AdminView/HeaderSectionLeftElement.js +20 -0
  241. package/ui/views/AdminView/HeaderSectionLeftElement.js.map +1 -1
  242. package/ui/views/AdminView/HeaderSectionRightElement.js +20 -0
  243. package/ui/views/AdminView/HeaderSectionRightElement.js.map +1 -1
  244. package/ui/views/AdminView/components/Dialog.js +21 -10
  245. package/ui/views/AdminView/components/Dialog.js.map +1 -1
  246. package/ui/views/AdminView/components/Hamburger.js +8 -0
  247. package/ui/views/AdminView/components/Hamburger.js.map +1 -1
  248. package/ui/views/AdminView/components/Snackbar.js +9 -0
  249. package/ui/views/AdminView/components/Snackbar.js.map +1 -1
  250. package/ui/views/FormView/FormContainerElement.js +21 -0
  251. package/ui/views/FormView/FormContainerElement.js.map +1 -1
  252. package/ui/views/FormView/FormContentElement.js +11 -0
  253. package/ui/views/FormView/FormContentElement.js.map +1 -1
  254. package/ui/views/FormView/FormFooterElement.js +19 -0
  255. package/ui/views/FormView/FormFooterElement.js.map +1 -1
  256. package/ui/views/FormView/FormHeaderElement.js +24 -2
  257. package/ui/views/FormView/FormHeaderElement.js.map +1 -1
  258. package/ui/views/FormView.js +41 -0
  259. package/ui/views/FormView.js.map +1 -1
  260. package/ui/views/OverlayView/ContentElement.js +19 -0
  261. package/ui/views/OverlayView/ContentElement.js.map +1 -1
  262. package/ui/views/OverlayView/HeaderElement.js +25 -3
  263. package/ui/views/OverlayView/HeaderElement.js.map +1 -1
  264. package/ui/views/OverlayView/HeaderTitleElement.js +22 -0
  265. package/ui/views/OverlayView/HeaderTitleElement.js.map +1 -1
  266. package/ui/views/OverlayView/useOverlayView.js +13 -3
  267. package/ui/views/OverlayView/useOverlayView.js.map +1 -1
  268. package/ui/views/OverlayView.js +37 -3
  269. package/ui/views/OverlayView.js.map +1 -1
  270. package/ui/views/SplitView/SplitViewPanelElement.js +22 -2
  271. package/ui/views/SplitView/SplitViewPanelElement.js.map +1 -1
  272. package/ui/views/SplitView.js +40 -0
  273. package/ui/views/SplitView.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["mime","define","BottomInfoBarWrapper","styled","fontSize","position","bottom","height","color","borderTop","backgroundColor","width","transform","overflow","display","alignItems","zIndex","padding","BottomInfoBar","props"],"sources":["BottomInfoBar.tsx"],"sourcesContent":["import React from \"react\";\nimport mime from \"mime/lite\";\nimport styled from \"@emotion/styled\";\nimport SupportedFileTypes, { SupportedFileTypesProps } from \"./BottomInfoBar/SupportedFileTypes\";\nimport UploadStatus, { UploadStatusProps } from \"./BottomInfoBar/UploadStatus\";\n\nmime.define({ \"image/x-icon\": [\"ico\"] }, true);\nmime.define({ \"image/jpg\": [\"jpg\"] }, true);\nmime.define({ \"image/vnd.microsoft.icon\": [\"ico\"] }, true);\n\nconst BottomInfoBarWrapper = styled(\"div\")({\n fontSize: \"0.8rem\",\n position: \"sticky\",\n bottom: 0,\n height: 30,\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n borderTop: \"1px solid var(--mdc-theme-on-background)\",\n backgroundColor: \"var(--mdc-theme-surface)\",\n width: \"100%\",\n transform: \"translateZ(0)\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n zIndex: 1,\n \"> div\": {\n padding: \"0 10px\",\n width: \"100%\"\n }\n});\n\nconst BottomInfoBar: React.FC<SupportedFileTypesProps & UploadStatusProps> = props => {\n return (\n <BottomInfoBarWrapper>\n <div>\n <SupportedFileTypes {...props} />\n <UploadStatus {...props} />\n </div>\n </BottomInfoBarWrapper>\n );\n};\n\nexport default BottomInfoBar;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AAEAA,aAAI,CAACC,MAAM,CAAC;EAAE,cAAc,EAAE,CAAC,KAAK;AAAE,CAAC,EAAE,IAAI,CAAC;AAC9CD,aAAI,CAACC,MAAM,CAAC;EAAE,WAAW,EAAE,CAAC,KAAK;AAAE,CAAC,EAAE,IAAI,CAAC;AAC3CD,aAAI,CAACC,MAAM,CAAC;EAAE,0BAA0B,EAAE,CAAC,KAAK;AAAE,CAAC,EAAE,IAAI,CAAC;AAE1D,IAAMC,oBAAoB,oBAAGC,eAAM,EAAC,KAAK;EAAA;EAAA;AAAA,GAAE;EACvCC,QAAQ,EAAE,QAAQ;EAClBC,QAAQ,EAAE,QAAQ;EAClBC,MAAM,EAAE,CAAC;EACTC,MAAM,EAAE,EAAE;EACVC,KAAK,EAAE,+CAA+C;EACtDC,SAAS,EAAE,0CAA0C;EACrDC,eAAe,EAAE,0BAA0B;EAC3CC,KAAK,EAAE,MAAM;EACbC,SAAS,EAAE,eAAe;EAC1BC,QAAQ,EAAE,QAAQ;EAClBC,OAAO,EAAE,MAAM;EACfC,UAAU,EAAE,QAAQ;EACpBC,MAAM,EAAE,CAAC;EACT,OAAO,EAAE;IACLC,OAAO,EAAE,QAAQ;IACjBN,KAAK,EAAE;EACX;AACJ,CAAC,CAAC;AAEF,IAAMO,aAAoE,GAAG,SAAvEA,aAAoE,CAAGC,KAAK,EAAI;EAClF,oBACI,6BAAC,oBAAoB,qBACjB,uDACI,6BAAC,2BAAkB,EAAKA,KAAK,CAAI,eACjC,6BAAC,qBAAY,EAAKA,KAAK,CAAI,CACzB,CACa;AAE/B,CAAC;AAAC,eAEaD,aAAa;AAAA"}
1
+ {"version":3,"names":["mime","define","BottomInfoBarWrapper","styled","fontSize","position","bottom","height","color","borderTop","backgroundColor","width","transform","overflow","display","alignItems","zIndex","padding","BottomInfoBar","props"],"sources":["BottomInfoBar.tsx"],"sourcesContent":["import React from \"react\";\nimport mime from \"mime/lite\";\nimport styled from \"@emotion/styled\";\nimport SupportedFileTypes, { SupportedFileTypesProps } from \"./BottomInfoBar/SupportedFileTypes\";\nimport UploadStatus, { UploadStatusProps } from \"./BottomInfoBar/UploadStatus\";\n\nmime.define({ \"image/x-icon\": [\"ico\"] }, true);\nmime.define({ \"image/jpg\": [\"jpg\"] }, true);\nmime.define({ \"image/vnd.microsoft.icon\": [\"ico\"] }, true);\n\nconst BottomInfoBarWrapper = styled(\"div\")({\n fontSize: \"0.8rem\",\n position: \"sticky\",\n bottom: 0,\n height: 30,\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n borderTop: \"1px solid var(--mdc-theme-on-background)\",\n backgroundColor: \"var(--mdc-theme-surface)\",\n width: \"100%\",\n transform: \"translateZ(0)\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n zIndex: 1,\n \"> div\": {\n padding: \"0 10px\",\n width: \"100%\"\n }\n});\n\nconst BottomInfoBar: React.FC<SupportedFileTypesProps & UploadStatusProps> = props => {\n return (\n <BottomInfoBarWrapper>\n <div>\n <SupportedFileTypes {...props} />\n <UploadStatus {...props} />\n </div>\n </BottomInfoBarWrapper>\n );\n};\n\nexport default BottomInfoBar;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEAA,aAAA,CAAKC,MAAL,CAAY;EAAE,gBAAgB,CAAC,KAAD;AAAlB,CAAZ,EAAyC,IAAzC;;AACAD,aAAA,CAAKC,MAAL,CAAY;EAAE,aAAa,CAAC,KAAD;AAAf,CAAZ,EAAsC,IAAtC;;AACAD,aAAA,CAAKC,MAAL,CAAY;EAAE,4BAA4B,CAAC,KAAD;AAA9B,CAAZ,EAAqD,IAArD;;AAEA,IAAMC,oBAAoB,oBAAGC,eAAH,EAAU,KAAV;EAAA;EAAA;AAAA,GAAiB;EACvCC,QAAQ,EAAE,QAD6B;EAEvCC,QAAQ,EAAE,QAF6B;EAGvCC,MAAM,EAAE,CAH+B;EAIvCC,MAAM,EAAE,EAJ+B;EAKvCC,KAAK,EAAE,+CALgC;EAMvCC,SAAS,EAAE,0CAN4B;EAOvCC,eAAe,EAAE,0BAPsB;EAQvCC,KAAK,EAAE,MARgC;EASvCC,SAAS,EAAE,eAT4B;EAUvCC,QAAQ,EAAE,QAV6B;EAWvCC,OAAO,EAAE,MAX8B;EAYvCC,UAAU,EAAE,QAZ2B;EAavCC,MAAM,EAAE,CAb+B;EAcvC,SAAS;IACLC,OAAO,EAAE,QADJ;IAELN,KAAK,EAAE;EAFF;AAd8B,CAAjB,CAA1B;;AAoBA,IAAMO,aAAoE,GAAG,SAAvEA,aAAuE,CAAAC,KAAK,EAAI;EAClF,oBACI,6BAAC,oBAAD,qBACI,uDACI,6BAAC,2BAAD,EAAwBA,KAAxB,CADJ,eAEI,6BAAC,qBAAD,EAAkBA,KAAlB,CAFJ,CADJ,CADJ;AAQH,CATD;;eAWeD,a"}
@@ -1,15 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.default = void 0;
9
+
8
10
  var _react = _interopRequireDefault(require("react"));
11
+
9
12
  var _emotion = require("emotion");
13
+
10
14
  var _classnames = _interopRequireDefault(require("classnames"));
15
+
11
16
  var _Icon = require("@webiny/ui/Icon");
17
+
12
18
  var _roundCloud_upload24px = require("./icons/round-cloud_upload-24px.svg");
19
+
13
20
  var styles = /*#__PURE__*/(0, _emotion.css)({
14
21
  margin: "0 auto",
15
22
  paddingTop: 0,
@@ -47,11 +54,12 @@ var styles = /*#__PURE__*/(0, _emotion.css)({
47
54
  }
48
55
  }
49
56
  }, "label:styles;");
57
+
50
58
  var DropFilesHere = function DropFilesHere(_ref) {
51
59
  var onDrop = _ref.onDrop,
52
- onDragLeave = _ref.onDragLeave,
53
- empty = _ref.empty,
54
- onClick = _ref.onClick;
60
+ onDragLeave = _ref.onDragLeave,
61
+ empty = _ref.empty,
62
+ onClick = _ref.onClick;
55
63
  return /*#__PURE__*/_react.default.createElement("div", {
56
64
  className: (0, _classnames.default)(styles, {
57
65
  empty: empty
@@ -63,5 +71,6 @@ var DropFilesHere = function DropFilesHere(_ref) {
63
71
  icon: /*#__PURE__*/_react.default.createElement(_roundCloud_upload24px.ReactComponent, null)
64
72
  }), /*#__PURE__*/_react.default.createElement("div", null, "Drop files here"))));
65
73
  };
74
+
66
75
  var _default = DropFilesHere;
67
76
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["styles","css","margin","paddingTop","height","zIndex","width","position","backgroundColor","textAlign","borderRadius","left","top","transform","color","display","DropFilesHere","onDrop","onDragLeave","empty","onClick","classNames"],"sources":["DropFilesHere.tsx"],"sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport classNames from \"classnames\";\nimport { Icon } from \"@webiny/ui/Icon\";\n\nimport { ReactComponent as UploadIcon } from \"./icons/round-cloud_upload-24px.svg\";\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: \"var(--mdc-theme-text-hint-on-light)\",\n \"&.empty\": {\n backgroundColor: \"transparent\",\n \"> div\": {\n backgroundColor: \"var(--mdc-theme-surface)\"\n }\n },\n \"> div\": {\n textAlign: \"center\",\n width: 300,\n height: 300,\n backgroundColor: \"var(--mdc-theme-background)\",\n borderRadius: \"50%\",\n position: \"absolute\",\n left: \"50%\",\n top: \"50%\",\n transform: \"translateX(-50%) translateY(-100%)\",\n \"> div\": {\n position: \"absolute\",\n top: 90,\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 }\n }\n});\n\nexport interface DropFilesHereProps {\n onDragLeave?: (event?: React.DragEvent<HTMLElement>) => void;\n onDrop?: (event?: React.DragEvent<HTMLElement>) => void;\n empty?: boolean;\n onClick?: (event?: React.MouseEvent<HTMLElement>) => void;\n}\n\nconst DropFilesHere: React.FC<DropFilesHereProps> = ({ onDrop, onDragLeave, empty, onClick }) => {\n return (\n <div\n className={classNames(styles, { empty })}\n onDrop={onDrop}\n onClick={onClick}\n onDragLeave={onDragLeave}\n >\n <div>\n <div>\n <Icon icon={<UploadIcon />} />\n <div>Drop files here</div>\n </div>\n </div>\n </div>\n );\n};\nexport default DropFilesHere;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AAEA;AAEA,IAAMA,MAAM,gBAAG,IAAAC,YAAG,EAAC;EACfC,MAAM,EAAE,QAAQ;EAChBC,UAAU,EAAE,CAAC;EACbC,MAAM,EAAE,MAAM;EACdC,MAAM,EAAE,CAAC;EACTC,KAAK,EAAE,MAAM;EACbC,QAAQ,EAAE,UAAU;EACpBC,eAAe,EAAE,qCAAqC;EACtD,SAAS,EAAE;IACPA,eAAe,EAAE,aAAa;IAC9B,OAAO,EAAE;MACLA,eAAe,EAAE;IACrB;EACJ,CAAC;EACD,OAAO,EAAE;IACLC,SAAS,EAAE,QAAQ;IACnBH,KAAK,EAAE,GAAG;IACVF,MAAM,EAAE,GAAG;IACXI,eAAe,EAAE,6BAA6B;IAC9CE,YAAY,EAAE,KAAK;IACnBH,QAAQ,EAAE,UAAU;IACpBI,IAAI,EAAE,KAAK;IACXC,GAAG,EAAE,KAAK;IACVC,SAAS,EAAE,oCAAoC;IAC/C,OAAO,EAAE;MACLN,QAAQ,EAAE,UAAU;MACpBK,GAAG,EAAE,EAAE;MACPN,KAAK,EAAE,GAAG;MACVQ,KAAK,EAAE,6BAA6B;MACpC,sBAAsB,EAAE;QACpBR,KAAK,EAAE,GAAG;QACVS,OAAO,EAAE,cAAc;QACvBD,KAAK,EAAE;MACX;IACJ;EACJ;AACJ,CAAC,kBAAC;AASF,IAAME,aAA2C,GAAG,SAA9CA,aAA2C,OAAgD;EAAA,IAA1CC,MAAM,QAANA,MAAM;IAAEC,WAAW,QAAXA,WAAW;IAAEC,KAAK,QAALA,KAAK;IAAEC,OAAO,QAAPA,OAAO;EACtF,oBACI;IACI,SAAS,EAAE,IAAAC,mBAAU,EAACrB,MAAM,EAAE;MAAEmB,KAAK,EAALA;IAAM,CAAC,CAAE;IACzC,MAAM,EAAEF,MAAO;IACf,OAAO,EAAEG,OAAQ;IACjB,WAAW,EAAEF;EAAY,gBAEzB,uDACI,uDACI,6BAAC,UAAI;IAAC,IAAI,eAAE,6BAAC,qCAAU;EAAI,EAAG,eAC9B,4DAA0B,CACxB,CACJ,CACJ;AAEd,CAAC;AAAC,eACaF,aAAa;AAAA"}
1
+ {"version":3,"names":["styles","css","margin","paddingTop","height","zIndex","width","position","backgroundColor","textAlign","borderRadius","left","top","transform","color","display","DropFilesHere","onDrop","onDragLeave","empty","onClick","classNames"],"sources":["DropFilesHere.tsx"],"sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport classNames from \"classnames\";\nimport { Icon } from \"@webiny/ui/Icon\";\n\nimport { ReactComponent as UploadIcon } from \"./icons/round-cloud_upload-24px.svg\";\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: \"var(--mdc-theme-text-hint-on-light)\",\n \"&.empty\": {\n backgroundColor: \"transparent\",\n \"> div\": {\n backgroundColor: \"var(--mdc-theme-surface)\"\n }\n },\n \"> div\": {\n textAlign: \"center\",\n width: 300,\n height: 300,\n backgroundColor: \"var(--mdc-theme-background)\",\n borderRadius: \"50%\",\n position: \"absolute\",\n left: \"50%\",\n top: \"50%\",\n transform: \"translateX(-50%) translateY(-100%)\",\n \"> div\": {\n position: \"absolute\",\n top: 90,\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 }\n }\n});\n\nexport interface DropFilesHereProps {\n onDragLeave?: (event?: React.DragEvent<HTMLElement>) => void;\n onDrop?: (event?: React.DragEvent<HTMLElement>) => void;\n empty?: boolean;\n onClick?: (event?: React.MouseEvent<HTMLElement>) => void;\n}\n\nconst DropFilesHere: React.FC<DropFilesHereProps> = ({ onDrop, onDragLeave, empty, onClick }) => {\n return (\n <div\n className={classNames(styles, { empty })}\n onDrop={onDrop}\n onClick={onClick}\n onDragLeave={onDragLeave}\n >\n <div>\n <div>\n <Icon icon={<UploadIcon />} />\n <div>Drop files here</div>\n </div>\n </div>\n </div>\n );\n};\nexport default DropFilesHere;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AAEA,IAAMA,MAAM,gBAAG,IAAAC,YAAA,EAAI;EACfC,MAAM,EAAE,QADO;EAEfC,UAAU,EAAE,CAFG;EAGfC,MAAM,EAAE,MAHO;EAIfC,MAAM,EAAE,CAJO;EAKfC,KAAK,EAAE,MALQ;EAMfC,QAAQ,EAAE,UANK;EAOfC,eAAe,EAAE,qCAPF;EAQf,WAAW;IACPA,eAAe,EAAE,aADV;IAEP,SAAS;MACLA,eAAe,EAAE;IADZ;EAFF,CARI;EAcf,SAAS;IACLC,SAAS,EAAE,QADN;IAELH,KAAK,EAAE,GAFF;IAGLF,MAAM,EAAE,GAHH;IAILI,eAAe,EAAE,6BAJZ;IAKLE,YAAY,EAAE,KALT;IAMLH,QAAQ,EAAE,UANL;IAOLI,IAAI,EAAE,KAPD;IAQLC,GAAG,EAAE,KARA;IASLC,SAAS,EAAE,oCATN;IAUL,SAAS;MACLN,QAAQ,EAAE,UADL;MAELK,GAAG,EAAE,EAFA;MAGLN,KAAK,EAAE,GAHF;MAILQ,KAAK,EAAE,6BAJF;MAKL,wBAAwB;QACpBR,KAAK,EAAE,GADa;QAEpBS,OAAO,EAAE,cAFW;QAGpBD,KAAK,EAAE;MAHa;IALnB;EAVJ;AAdM,CAAJ,kBAAf;;AA6CA,IAAME,aAA2C,GAAG,SAA9CA,aAA8C,OAA6C;EAAA,IAA1CC,MAA0C,QAA1CA,MAA0C;EAAA,IAAlCC,WAAkC,QAAlCA,WAAkC;EAAA,IAArBC,KAAqB,QAArBA,KAAqB;EAAA,IAAdC,OAAc,QAAdA,OAAc;EAC7F,oBACI;IACI,SAAS,EAAE,IAAAC,mBAAA,EAAWrB,MAAX,EAAmB;MAAEmB,KAAK,EAALA;IAAF,CAAnB,CADf;IAEI,MAAM,EAAEF,MAFZ;IAGI,OAAO,EAAEG,OAHb;IAII,WAAW,EAAEF;EAJjB,gBAMI,uDACI,uDACI,6BAAC,UAAD;IAAM,IAAI,eAAE,6BAAC,qCAAD;EAAZ,EADJ,eAEI,4DAFJ,CADJ,CANJ,CADJ;AAeH,CAhBD;;eAiBeF,a"}
@@ -1,23 +1,32 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.default = void 0;
9
+
8
10
  var _react = _interopRequireDefault(require("react"));
11
+
9
12
  var _reactLazyLoad = _interopRequireDefault(require("react-lazy-load"));
13
+
10
14
  var _classnames = _interopRequireDefault(require("classnames"));
15
+
11
16
  var _emotion = require("emotion");
17
+
12
18
  var _Ripple = require("@webiny/ui/Ripple");
19
+
13
20
  var _Button = require("@webiny/ui/Button");
21
+
14
22
  var _roundCheck_box24px = require("./icons/round-check_box-24px.svg");
23
+
15
24
  var _roundSettings24px = require("../../assets/icons/round-settings-24px.svg");
25
+
16
26
  /**
17
27
  * Package react-lazy-load has no types.
18
28
  */
19
29
  // @ts-ignore
20
-
21
30
  var COMPONENT_WIDTH = 200;
22
31
  var COMPONENT_HEIGHT = 200;
23
32
  var grow = /*#__PURE__*/(0, _emotion.keyframes)("0%{transform:scale(1)}50%{transform:scale(1.2)}100%{transform:scale(1)}label:grow;");
@@ -94,12 +103,13 @@ var styles = /*#__PURE__*/(0, _emotion.css)({
94
103
  cursor: "auto"
95
104
  }
96
105
  }, "label:styles;");
106
+
97
107
  var File = function File(props) {
98
108
  var file = props.file,
99
- selected = props.selected,
100
- onSelect = props.onSelect,
101
- children = props.children,
102
- showFileDetails = props.showFileDetails;
109
+ selected = props.selected,
110
+ onSelect = props.onSelect,
111
+ children = props.children,
112
+ showFileDetails = props.showFileDetails;
103
113
  return /*#__PURE__*/_react.default.createElement("div", {
104
114
  className: (0, _classnames.default)(styles, {
105
115
  "disable-select": !onSelect
@@ -129,14 +139,17 @@ var File = function File(props) {
129
139
  onClick: onSelect
130
140
  }, file.name));
131
141
  };
142
+
132
143
  var MemoizedFile = /*#__PURE__*/_react.default.memo(File, function (prev, next) {
133
144
  if (prev.selected !== next.selected) {
134
145
  return false;
135
146
  } else if (prev.file.name !== next.file.name) {
136
147
  return false;
137
148
  }
149
+
138
150
  return true;
139
151
  });
152
+
140
153
  MemoizedFile.displayName = "MemoizedFile";
141
154
  var _default = MemoizedFile;
142
155
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["COMPONENT_WIDTH","COMPONENT_HEIGHT","grow","keyframes","styles","css","display","float","position","zIndex","margin","cursor","width","maxWidth","border","borderRadius","transition","height","overflow","color","top","left","opacity","right","animationName","animationDuration","animationTimingFunction","animationDelay","textAlign","backgroundColor","padding","whiteSpace","textOverflow","fontSize","File","props","file","selected","onSelect","children","showFileDetails","classNames","name","MemoizedFile","React","memo","prev","next","displayName"],"sources":["File.tsx"],"sourcesContent":["import React from \"react\";\n/**\n * Package react-lazy-load has no types.\n */\n// @ts-ignore\nimport LazyLoad from \"react-lazy-load\";\nimport classNames from \"classnames\";\nimport { css, keyframes } from \"emotion\";\nimport { Ripple } from \"@webiny/ui/Ripple\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { ReactComponent as Checked } from \"./icons/round-check_box-24px.svg\";\nimport { ReactComponent as SettingsIcon } from \"../../assets/icons/round-settings-24px.svg\";\n\nconst COMPONENT_WIDTH = 200;\nconst COMPONENT_HEIGHT = 200;\n\nconst grow = keyframes`\n 0% {\n transform: scale(1)\n }\n 50% {\n transform: scale(1.2)\n }\n 100% {\n transform: scale(1)\n }\n`;\nconst styles = css({\n display: \"inline-block\",\n float: \"left\",\n position: \"relative\",\n zIndex: 1,\n margin: 10,\n cursor: \"pointer\",\n width: \"100%\",\n maxWidth: COMPONENT_WIDTH,\n border: \"1px solid var(--mdc-theme-on-background)\",\n borderRadius: 2,\n \"> .body\": {\n transition: \"200ms ease-in opacity\",\n width: COMPONENT_WIDTH,\n height: COMPONENT_HEIGHT,\n overflow: \"hidden\",\n \"--icon-color\": \"var(--mdc-theme-on-background)\",\n \".checkedIcon\": {\n color: \"var(--mdc-theme-secondary)\",\n position: \"absolute\",\n top: 4,\n left: 4,\n zIndex: 11\n },\n \".infoIcon\": {\n opacity: 0,\n position: \"absolute\",\n top: 0,\n right: 0,\n zIndex: 10,\n transition: \"all 150ms ease-in\",\n \"& .mdc-icon-button svg\": {\n color: \"var(--mdc-theme-secondary)\"\n },\n \"&:hover\": {\n animationName: grow,\n animationDuration: \".4s\",\n animationTimingFunction: \"ease-in\",\n animationDelay: \".2s\"\n }\n },\n \".filePreview\": {\n textAlign: \"center\",\n position: \"relative\",\n backgroundColor: \"#fff\",\n width: \"100%\",\n height: \"100%\",\n \".clickableArea\": {\n position: \"absolute\",\n top: 30,\n left: 0,\n width: \"100%\",\n height: 170,\n zIndex: 2\n }\n },\n \"&:hover .infoIcon\": {\n opacity: 1\n }\n },\n \"> .label\": {\n padding: \"15px 10px\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n fontSize: \"0.8rem\",\n color: \"var(--mdc-theme-on-surface)\",\n backgroundColor: \"var(--mdc-theme-on-background)\"\n },\n \"&.disable-select\": {\n cursor: \"auto\"\n }\n});\n\nexport interface FileProps {\n file: FileItem;\n selected: boolean;\n uploadFile: (item: FileItem[] | FileItem) => Promise<number | null>;\n onSelect: (event?: React.MouseEvent) => void;\n onClick?: (event?: React.MouseEvent) => void;\n options?: Array<{ label: string; onClick: (file: Object) => void }>;\n children: React.ReactNode;\n showFileDetails: (event?: React.MouseEvent) => void;\n}\n\nconst File: React.FC<FileProps> = props => {\n const { file, selected, onSelect, children, showFileDetails } = props;\n\n return (\n <div\n className={classNames(styles, { \"disable-select\": !onSelect })}\n data-testid={\"fm-list-wrapper-file\"}\n >\n <div className={\"body\"}>\n <div className={\"checkedIcon\"} onClick={onSelect}>\n {selected ? <Checked /> : null}\n </div>\n <div className={\"infoIcon\"}>\n <IconButton\n icon={<SettingsIcon />}\n onClick={showFileDetails}\n data-testid={\"fm-file-wrapper-file-info-icon\"}\n />\n </div>\n <LazyLoad height={200} offsetVertical={300}>\n <Ripple>\n <div className={\"filePreview\"}>\n <div className=\"clickableArea\" onClick={onSelect} />\n {children}\n </div>\n </Ripple>\n </LazyLoad>\n </div>\n <div className={\"label\"} onClick={onSelect}>\n {file.name}\n </div>\n </div>\n );\n};\n\nconst MemoizedFile = React.memo(File, (prev, next) => {\n if (prev.selected !== next.selected) {\n return false;\n } else if (prev.file.name !== next.file.name) {\n return false;\n }\n\n return true;\n});\n\nMemoizedFile.displayName = \"MemoizedFile\";\nexport default MemoizedFile;\n"],"mappings":"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"}
1
+ {"version":3,"names":["COMPONENT_WIDTH","COMPONENT_HEIGHT","grow","keyframes","styles","css","display","float","position","zIndex","margin","cursor","width","maxWidth","border","borderRadius","transition","height","overflow","color","top","left","opacity","right","animationName","animationDuration","animationTimingFunction","animationDelay","textAlign","backgroundColor","padding","whiteSpace","textOverflow","fontSize","File","props","file","selected","onSelect","children","showFileDetails","classNames","name","MemoizedFile","React","memo","prev","next","displayName"],"sources":["File.tsx"],"sourcesContent":["import React from \"react\";\n/**\n * Package react-lazy-load has no types.\n */\n// @ts-ignore\nimport LazyLoad from \"react-lazy-load\";\nimport classNames from \"classnames\";\nimport { css, keyframes } from \"emotion\";\nimport { Ripple } from \"@webiny/ui/Ripple\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { ReactComponent as Checked } from \"./icons/round-check_box-24px.svg\";\nimport { ReactComponent as SettingsIcon } from \"../../assets/icons/round-settings-24px.svg\";\n\nconst COMPONENT_WIDTH = 200;\nconst COMPONENT_HEIGHT = 200;\n\nconst grow = keyframes`\n 0% {\n transform: scale(1)\n }\n 50% {\n transform: scale(1.2)\n }\n 100% {\n transform: scale(1)\n }\n`;\nconst styles = css({\n display: \"inline-block\",\n float: \"left\",\n position: \"relative\",\n zIndex: 1,\n margin: 10,\n cursor: \"pointer\",\n width: \"100%\",\n maxWidth: COMPONENT_WIDTH,\n border: \"1px solid var(--mdc-theme-on-background)\",\n borderRadius: 2,\n \"> .body\": {\n transition: \"200ms ease-in opacity\",\n width: COMPONENT_WIDTH,\n height: COMPONENT_HEIGHT,\n overflow: \"hidden\",\n \"--icon-color\": \"var(--mdc-theme-on-background)\",\n \".checkedIcon\": {\n color: \"var(--mdc-theme-secondary)\",\n position: \"absolute\",\n top: 4,\n left: 4,\n zIndex: 11\n },\n \".infoIcon\": {\n opacity: 0,\n position: \"absolute\",\n top: 0,\n right: 0,\n zIndex: 10,\n transition: \"all 150ms ease-in\",\n \"& .mdc-icon-button svg\": {\n color: \"var(--mdc-theme-secondary)\"\n },\n \"&:hover\": {\n animationName: grow,\n animationDuration: \".4s\",\n animationTimingFunction: \"ease-in\",\n animationDelay: \".2s\"\n }\n },\n \".filePreview\": {\n textAlign: \"center\",\n position: \"relative\",\n backgroundColor: \"#fff\",\n width: \"100%\",\n height: \"100%\",\n \".clickableArea\": {\n position: \"absolute\",\n top: 30,\n left: 0,\n width: \"100%\",\n height: 170,\n zIndex: 2\n }\n },\n \"&:hover .infoIcon\": {\n opacity: 1\n }\n },\n \"> .label\": {\n padding: \"15px 10px\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n fontSize: \"0.8rem\",\n color: \"var(--mdc-theme-on-surface)\",\n backgroundColor: \"var(--mdc-theme-on-background)\"\n },\n \"&.disable-select\": {\n cursor: \"auto\"\n }\n});\n\nexport interface FileProps {\n file: FileItem;\n selected: boolean;\n uploadFile: (item: FileItem[] | FileItem) => Promise<number | null>;\n onSelect: (event?: React.MouseEvent) => void;\n onClick?: (event?: React.MouseEvent) => void;\n options?: Array<{ label: string; onClick: (file: Object) => void }>;\n children: React.ReactNode;\n showFileDetails: (event?: React.MouseEvent) => void;\n}\n\nconst File: React.FC<FileProps> = props => {\n const { file, selected, onSelect, children, showFileDetails } = props;\n\n return (\n <div\n className={classNames(styles, { \"disable-select\": !onSelect })}\n data-testid={\"fm-list-wrapper-file\"}\n >\n <div className={\"body\"}>\n <div className={\"checkedIcon\"} onClick={onSelect}>\n {selected ? <Checked /> : null}\n </div>\n <div className={\"infoIcon\"}>\n <IconButton\n icon={<SettingsIcon />}\n onClick={showFileDetails}\n data-testid={\"fm-file-wrapper-file-info-icon\"}\n />\n </div>\n <LazyLoad height={200} offsetVertical={300}>\n <Ripple>\n <div className={\"filePreview\"}>\n <div className=\"clickableArea\" onClick={onSelect} />\n {children}\n </div>\n </Ripple>\n </LazyLoad>\n </div>\n <div className={\"label\"} onClick={onSelect}>\n {file.name}\n </div>\n </div>\n );\n};\n\nconst MemoizedFile = React.memo(File, (prev, next) => {\n if (prev.selected !== next.selected) {\n return false;\n } else if (prev.file.name !== next.file.name) {\n return false;\n }\n\n return true;\n});\n\nMemoizedFile.displayName = \"MemoizedFile\";\nexport default MemoizedFile;\n"],"mappings":"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"}
@@ -1,32 +1,51 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+
4
5
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
10
  exports.default = void 0;
11
+
9
12
  var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
13
+
10
14
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
11
16
  var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
17
+
12
18
  var _get2 = _interopRequireDefault(require("lodash/get"));
19
+
13
20
  var _react = _interopRequireWildcard(require("react"));
21
+
14
22
  var _reactHooks = require("@apollo/react-hooks");
23
+
15
24
  var _Input = require("@webiny/ui/Input");
25
+
16
26
  var _form = require("@webiny/form");
27
+
17
28
  var _validation = require("@webiny/validation");
29
+
18
30
  var _useSnackbar2 = require("../../../hooks/useSnackbar");
31
+
19
32
  var _graphql = require("./../graphql");
33
+
20
34
  var _FileManagerContext = require("./../FileManagerContext");
35
+
21
36
  var Name = function Name(_ref) {
22
37
  var file = _ref.file,
23
- canEdit = _ref.canEdit;
38
+ canEdit = _ref.canEdit;
24
39
  var name = file.name || "";
40
+
25
41
  var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
26
- showSnackbar = _useSnackbar.showSnackbar;
42
+ showSnackbar = _useSnackbar.showSnackbar;
43
+
27
44
  var client = (0, _reactHooks.useApolloClient)();
45
+
28
46
  var _useFileManager = (0, _FileManagerContext.useFileManager)(),
29
- queryParams = _useFileManager.queryParams;
47
+ queryParams = _useFileManager.queryParams;
48
+
30
49
  var editContent = (0, _react.useMemo)(function () {
31
50
  return /*#__PURE__*/_react.default.createElement(_form.Form, {
32
51
  data: {
@@ -40,11 +59,14 @@ var Name = function Name(_ref) {
40
59
  switch (_context.prev = _context.next) {
41
60
  case 0:
42
61
  name = _ref2.name;
62
+
43
63
  if (!(name === file.name)) {
44
64
  _context.next = 3;
45
65
  break;
46
66
  }
67
+
47
68
  return _context.abrupt("return");
69
+
48
70
  case 3:
49
71
  _context.next = 5;
50
72
  return client.mutate({
@@ -61,6 +83,7 @@ var Name = function Name(_ref) {
61
83
  query: _graphql.LIST_FILES,
62
84
  variables: queryParams
63
85
  }));
86
+
64
87
  if (data) {
65
88
  data.fileManager.listFiles.data.forEach(function (item) {
66
89
  if (item.src === newFileData.src) {
@@ -68,6 +91,7 @@ var Name = function Name(_ref) {
68
91
  }
69
92
  });
70
93
  }
94
+
71
95
  cache.writeQuery({
72
96
  query: _graphql.LIST_FILES,
73
97
  variables: queryParams,
@@ -75,8 +99,10 @@ var Name = function Name(_ref) {
75
99
  });
76
100
  }
77
101
  });
102
+
78
103
  case 5:
79
104
  showSnackbar("Name successfully updated.");
105
+
80
106
  case 6:
81
107
  case "end":
82
108
  return _context.stop();
@@ -84,13 +110,14 @@ var Name = function Name(_ref) {
84
110
  }
85
111
  }, _callee);
86
112
  }));
113
+
87
114
  return function (_x) {
88
115
  return _ref3.apply(this, arguments);
89
116
  };
90
117
  }()
91
118
  }, function (_ref4) {
92
119
  var Bind = _ref4.Bind,
93
- submit = _ref4.submit;
120
+ submit = _ref4.submit;
94
121
  return /*#__PURE__*/_react.default.createElement(Bind, {
95
122
  name: "name",
96
123
  validators: _validation.validation.create("required")
@@ -106,5 +133,6 @@ var Name = function Name(_ref) {
106
133
  }, [name, file.name, canEdit]);
107
134
  return /*#__PURE__*/_react.default.createElement("li-content", null, editContent);
108
135
  };
136
+
109
137
  var _default = Name;
110
138
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["Name","file","canEdit","name","useSnackbar","showSnackbar","client","useApolloClient","useFileManager","queryParams","editContent","useMemo","mutate","mutation","UPDATE_FILE","variables","id","data","update","cache","updated","newFileData","readQuery","query","LIST_FILES","fileManager","listFiles","forEach","item","src","writeQuery","Bind","submit","validation","create"],"sources":["Name.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { get, cloneDeep } from \"lodash\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { Form } from \"@webiny/form\";\nimport { validation } from \"@webiny/validation\";\nimport { useSnackbar } from \"~/hooks/useSnackbar\";\nimport {\n UPDATE_FILE,\n LIST_FILES,\n UpdateFileMutationResponse,\n UpdateFileMutationVariables,\n ListFilesQueryResponse\n} from \"./../graphql\";\nimport { useFileManager } from \"./../FileManagerContext\";\nimport { FileItem } from \"../types\";\n\ninterface NameProps {\n file: FileItem;\n canEdit: (file: FileItem) => boolean;\n}\nconst Name: React.FC<NameProps> = ({ file, canEdit }) => {\n const name = file.name || \"\";\n const { showSnackbar } = useSnackbar();\n const client = useApolloClient();\n\n const { queryParams } = useFileManager();\n\n const editContent = useMemo(() => {\n return (\n <Form\n data={{\n name\n }}\n onSubmit={async ({ name }) => {\n // Bail out if name is same as the current file name.\n if (name === file.name) {\n return;\n }\n // Update file.\n await client.mutate<UpdateFileMutationResponse, UpdateFileMutationVariables>({\n mutation: UPDATE_FILE,\n variables: {\n id: file.id,\n data: { name }\n },\n update: (cache, updated) => {\n const newFileData = get(\n updated,\n \"data.fileManager.updateFile.data\"\n ) as unknown as FileItem;\n const data = cloneDeep(\n cache.readQuery<ListFilesQueryResponse>({\n query: LIST_FILES,\n variables: queryParams\n })\n );\n\n if (data) {\n data.fileManager.listFiles.data.forEach(item => {\n if (item.src === newFileData.src) {\n item.name = newFileData.name;\n }\n });\n }\n\n cache.writeQuery({\n query: LIST_FILES,\n variables: queryParams,\n data: data\n });\n }\n });\n\n showSnackbar(\"Name successfully updated.\");\n }}\n >\n {({ Bind, submit }) => (\n <Bind name={\"name\"} validators={validation.create(\"required\")}>\n <Input\n disabled={!canEdit(file)}\n autoFocus\n placeholder={\"Enter name\"}\n fullwidth={true}\n onBlur={submit}\n description={\"A descriptive name is easier to remember.\"}\n />\n </Bind>\n )}\n </Form>\n );\n }, [name, file.name, canEdit]);\n\n return <li-content>{editContent}</li-content>;\n};\n\nexport default Name;\n"],"mappings":";;;;;;;;;;;;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAOA;AAOA,IAAMA,IAAyB,GAAG,SAA5BA,IAAyB,OAA0B;EAAA,IAApBC,IAAI,QAAJA,IAAI;IAAEC,OAAO,QAAPA,OAAO;EAC9C,IAAMC,IAAI,GAAGF,IAAI,CAACE,IAAI,IAAI,EAAE;EAC5B,mBAAyB,IAAAC,yBAAW,GAAE;IAA9BC,YAAY,gBAAZA,YAAY;EACpB,IAAMC,MAAM,GAAG,IAAAC,2BAAe,GAAE;EAEhC,sBAAwB,IAAAC,kCAAc,GAAE;IAAhCC,WAAW,mBAAXA,WAAW;EAEnB,IAAMC,WAAW,GAAG,IAAAC,cAAO,EAAC,YAAM;IAC9B,oBACI,6BAAC,UAAI;MACD,IAAI,EAAE;QACFR,IAAI,EAAJA;MACJ,CAAE;MACF,QAAQ;QAAA,mGAAE;UAAA;UAAA;YAAA;cAAA;gBAAA;kBAASA,IAAI,SAAJA,IAAI;kBAAA,MAEfA,IAAI,KAAKF,IAAI,CAACE,IAAI;oBAAA;oBAAA;kBAAA;kBAAA;gBAAA;kBAAA;kBAAA,OAIhBG,MAAM,CAACM,MAAM,CAA0D;oBACzEC,QAAQ,EAAEC,oBAAW;oBACrBC,SAAS,EAAE;sBACPC,EAAE,EAAEf,IAAI,CAACe,EAAE;sBACXC,IAAI,EAAE;wBAAEd,IAAI,EAAJA;sBAAK;oBACjB,CAAC;oBACDe,MAAM,EAAE,gBAACC,KAAK,EAAEC,OAAO,EAAK;sBACxB,IAAMC,WAAW,GAAG,mBAChBD,OAAO,EACP,kCAAkC,CACd;sBACxB,IAAMH,IAAI,GAAG,yBACTE,KAAK,CAACG,SAAS,CAAyB;wBACpCC,KAAK,EAAEC,mBAAU;wBACjBT,SAAS,EAAEN;sBACf,CAAC,CAAC,CACL;sBAED,IAAIQ,IAAI,EAAE;wBACNA,IAAI,CAACQ,WAAW,CAACC,SAAS,CAACT,IAAI,CAACU,OAAO,CAAC,UAAAC,IAAI,EAAI;0BAC5C,IAAIA,IAAI,CAACC,GAAG,KAAKR,WAAW,CAACQ,GAAG,EAAE;4BAC9BD,IAAI,CAACzB,IAAI,GAAGkB,WAAW,CAAClB,IAAI;0BAChC;wBACJ,CAAC,CAAC;sBACN;sBAEAgB,KAAK,CAACW,UAAU,CAAC;wBACbP,KAAK,EAAEC,mBAAU;wBACjBT,SAAS,EAAEN,WAAW;wBACtBQ,IAAI,EAAEA;sBACV,CAAC,CAAC;oBACN;kBACJ,CAAC,CAAC;gBAAA;kBAEFZ,YAAY,CAAC,4BAA4B,CAAC;gBAAC;gBAAA;kBAAA;cAAA;YAAA;UAAA;QAAA,CAC9C;QAAA;UAAA;QAAA;MAAA;IAAC,GAED;MAAA,IAAG0B,IAAI,SAAJA,IAAI;QAAEC,MAAM,SAANA,MAAM;MAAA,oBACZ,6BAAC,IAAI;QAAC,IAAI,EAAE,MAAO;QAAC,UAAU,EAAEC,sBAAU,CAACC,MAAM,CAAC,UAAU;MAAE,gBAC1D,6BAAC,YAAK;QACF,QAAQ,EAAE,CAAChC,OAAO,CAACD,IAAI,CAAE;QACzB,SAAS;QACT,WAAW,EAAE,YAAa;QAC1B,SAAS,EAAE,IAAK;QAChB,MAAM,EAAE+B,MAAO;QACf,WAAW,EAAE;MAA4C,EAC3D,CACC;IAAA,CACV,CACE;EAEf,CAAC,EAAE,CAAC7B,IAAI,EAAEF,IAAI,CAACE,IAAI,EAAED,OAAO,CAAC,CAAC;EAE9B,oBAAO,iDAAaQ,WAAW,CAAc;AACjD,CAAC;AAAC,eAEaV,IAAI;AAAA"}
1
+ {"version":3,"names":["Name","file","canEdit","name","useSnackbar","showSnackbar","client","useApolloClient","useFileManager","queryParams","editContent","useMemo","mutate","mutation","UPDATE_FILE","variables","id","data","update","cache","updated","newFileData","readQuery","query","LIST_FILES","fileManager","listFiles","forEach","item","src","writeQuery","Bind","submit","validation","create"],"sources":["Name.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { get, cloneDeep } from \"lodash\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { Form } from \"@webiny/form\";\nimport { validation } from \"@webiny/validation\";\nimport { useSnackbar } from \"~/hooks/useSnackbar\";\nimport {\n UPDATE_FILE,\n LIST_FILES,\n UpdateFileMutationResponse,\n UpdateFileMutationVariables,\n ListFilesQueryResponse\n} from \"./../graphql\";\nimport { useFileManager } from \"./../FileManagerContext\";\nimport { FileItem } from \"../types\";\n\ninterface NameProps {\n file: FileItem;\n canEdit: (file: FileItem) => boolean;\n}\nconst Name: React.FC<NameProps> = ({ file, canEdit }) => {\n const name = file.name || \"\";\n const { showSnackbar } = useSnackbar();\n const client = useApolloClient();\n\n const { queryParams } = useFileManager();\n\n const editContent = useMemo(() => {\n return (\n <Form\n data={{\n name\n }}\n onSubmit={async ({ name }) => {\n // Bail out if name is same as the current file name.\n if (name === file.name) {\n return;\n }\n // Update file.\n await client.mutate<UpdateFileMutationResponse, UpdateFileMutationVariables>({\n mutation: UPDATE_FILE,\n variables: {\n id: file.id,\n data: { name }\n },\n update: (cache, updated) => {\n const newFileData = get(\n updated,\n \"data.fileManager.updateFile.data\"\n ) as unknown as FileItem;\n const data = cloneDeep(\n cache.readQuery<ListFilesQueryResponse>({\n query: LIST_FILES,\n variables: queryParams\n })\n );\n\n if (data) {\n data.fileManager.listFiles.data.forEach(item => {\n if (item.src === newFileData.src) {\n item.name = newFileData.name;\n }\n });\n }\n\n cache.writeQuery({\n query: LIST_FILES,\n variables: queryParams,\n data: data\n });\n }\n });\n\n showSnackbar(\"Name successfully updated.\");\n }}\n >\n {({ Bind, submit }) => (\n <Bind name={\"name\"} validators={validation.create(\"required\")}>\n <Input\n disabled={!canEdit(file)}\n autoFocus\n placeholder={\"Enter name\"}\n fullwidth={true}\n onBlur={submit}\n description={\"A descriptive name is easier to remember.\"}\n />\n </Bind>\n )}\n </Form>\n );\n }, [name, file.name, canEdit]);\n\n return <li-content>{editContent}</li-content>;\n};\n\nexport default Name;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAOA;;AAOA,IAAMA,IAAyB,GAAG,SAA5BA,IAA4B,OAAuB;EAAA,IAApBC,IAAoB,QAApBA,IAAoB;EAAA,IAAdC,OAAc,QAAdA,OAAc;EACrD,IAAMC,IAAI,GAAGF,IAAI,CAACE,IAAL,IAAa,EAA1B;;EACA,mBAAyB,IAAAC,yBAAA,GAAzB;EAAA,IAAQC,YAAR,gBAAQA,YAAR;;EACA,IAAMC,MAAM,GAAG,IAAAC,2BAAA,GAAf;;EAEA,sBAAwB,IAAAC,kCAAA,GAAxB;EAAA,IAAQC,WAAR,mBAAQA,WAAR;;EAEA,IAAMC,WAAW,GAAG,IAAAC,cAAA,EAAQ,YAAM;IAC9B,oBACI,6BAAC,UAAD;MACI,IAAI,EAAE;QACFR,IAAI,EAAJA;MADE,CADV;MAII,QAAQ;QAAA,mGAAE;UAAA;UAAA;YAAA;cAAA;gBAAA;kBAASA,IAAT,SAASA,IAAT;;kBAAA,MAEFA,IAAI,KAAKF,IAAI,CAACE,IAFZ;oBAAA;oBAAA;kBAAA;;kBAAA;;gBAAA;kBAAA;kBAAA,OAMAG,MAAM,CAACM,MAAP,CAAuE;oBACzEC,QAAQ,EAAEC,oBAD+D;oBAEzEC,SAAS,EAAE;sBACPC,EAAE,EAAEf,IAAI,CAACe,EADF;sBAEPC,IAAI,EAAE;wBAAEd,IAAI,EAAJA;sBAAF;oBAFC,CAF8D;oBAMzEe,MAAM,EAAE,gBAACC,KAAD,EAAQC,OAAR,EAAoB;sBACxB,IAAMC,WAAW,GAAG,mBAChBD,OADgB,EAEhB,kCAFgB,CAApB;sBAIA,IAAMH,IAAI,GAAG,yBACTE,KAAK,CAACG,SAAN,CAAwC;wBACpCC,KAAK,EAAEC,mBAD6B;wBAEpCT,SAAS,EAAEN;sBAFyB,CAAxC,CADS,CAAb;;sBAOA,IAAIQ,IAAJ,EAAU;wBACNA,IAAI,CAACQ,WAAL,CAAiBC,SAAjB,CAA2BT,IAA3B,CAAgCU,OAAhC,CAAwC,UAAAC,IAAI,EAAI;0BAC5C,IAAIA,IAAI,CAACC,GAAL,KAAaR,WAAW,CAACQ,GAA7B,EAAkC;4BAC9BD,IAAI,CAACzB,IAAL,GAAYkB,WAAW,CAAClB,IAAxB;0BACH;wBACJ,CAJD;sBAKH;;sBAEDgB,KAAK,CAACW,UAAN,CAAiB;wBACbP,KAAK,EAAEC,mBADM;wBAEbT,SAAS,EAAEN,WAFE;wBAGbQ,IAAI,EAAEA;sBAHO,CAAjB;oBAKH;kBA/BwE,CAAvE,CANA;;gBAAA;kBAwCNZ,YAAY,CAAC,4BAAD,CAAZ;;gBAxCM;gBAAA;kBAAA;cAAA;YAAA;UAAA;QAAA,CAAF;;QAAA;UAAA;QAAA;MAAA;IAJZ,GA+CK;MAAA,IAAG0B,IAAH,SAAGA,IAAH;MAAA,IAASC,MAAT,SAASA,MAAT;MAAA,oBACG,6BAAC,IAAD;QAAM,IAAI,EAAE,MAAZ;QAAoB,UAAU,EAAEC,sBAAA,CAAWC,MAAX,CAAkB,UAAlB;MAAhC,gBACI,6BAAC,YAAD;QACI,QAAQ,EAAE,CAAChC,OAAO,CAACD,IAAD,CADtB;QAEI,SAAS,MAFb;QAGI,WAAW,EAAE,YAHjB;QAII,SAAS,EAAE,IAJf;QAKI,MAAM,EAAE+B,MALZ;QAMI,WAAW,EAAE;MANjB,EADJ,CADH;IAAA,CA/CL,CADJ;EA8DH,CA/DmB,EA+DjB,CAAC7B,IAAD,EAAOF,IAAI,CAACE,IAAZ,EAAkBD,OAAlB,CA/DiB,CAApB;EAiEA,oBAAO,iDAAaQ,WAAb,CAAP;AACH,CAzED;;eA2EeV,I"}
@@ -1,42 +1,71 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
10
  exports.tagWithoutScopePrefix = exports.formatTagAsLabel = exports.default = void 0;
11
+
9
12
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
+
10
14
  var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
15
+
11
16
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
+
12
18
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
19
+
13
20
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
21
+
14
22
  var _react = _interopRequireWildcard(require("react"));
23
+
15
24
  var _classnames = _interopRequireDefault(require("classnames"));
25
+
16
26
  var _emotion = require("emotion");
27
+
17
28
  var _reactHooks = require("@apollo/react-hooks");
29
+
18
30
  var _set = _interopRequireDefault(require("lodash/set"));
31
+
19
32
  var _get = _interopRequireDefault(require("lodash/get"));
33
+
20
34
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
35
+
21
36
  var _Chips = require("@webiny/ui/Chips");
37
+
22
38
  var _Button = require("@webiny/ui/Button");
39
+
23
40
  var _AutoComplete = require("@webiny/ui/AutoComplete");
41
+
24
42
  var _Icon = require("@webiny/ui/Icon");
43
+
25
44
  var _form = require("@webiny/form");
45
+
26
46
  var _useSnackbar2 = require("../../../hooks/useSnackbar");
47
+
27
48
  var _FileManagerContext = require("./../FileManagerContext");
49
+
28
50
  var _graphql = require("./../graphql");
51
+
29
52
  var _roundEdit24px = require("./../icons/round-edit-24px.svg");
53
+
30
54
  var _roundLabel24px = require("./../icons/round-label-24px.svg");
55
+
31
56
  var _excluded = ["value"];
32
57
  var SCOPE_SEPARATOR = ":";
58
+
33
59
  var formatTagAsLabel = function formatTagAsLabel(tag, scope) {
34
60
  if (!scope) {
35
61
  return tag;
36
62
  }
63
+
37
64
  return tag.replace("".concat(scope).concat(SCOPE_SEPARATOR), "");
38
65
  };
66
+
39
67
  exports.formatTagAsLabel = formatTagAsLabel;
68
+
40
69
  var tagWithoutScopePrefix = function tagWithoutScopePrefix(tags, scope) {
41
70
  return tags.filter(function (tag) {
42
71
  return tag !== scope;
@@ -44,6 +73,7 @@ var tagWithoutScopePrefix = function tagWithoutScopePrefix(tags, scope) {
44
73
  return formatTagAsLabel(tag, scope);
45
74
  });
46
75
  };
76
+
47
77
  exports.tagWithoutScopePrefix = tagWithoutScopePrefix;
48
78
  var chipsStyle = /*#__PURE__*/(0, _emotion.css)({
49
79
  "&.mdc-chip-set": {
@@ -74,26 +104,33 @@ var actionWrapperStyle = /*#__PURE__*/(0, _emotion.css)({
74
104
  marginRight: 16
75
105
  }
76
106
  }, "label:actionWrapperStyle;");
107
+
77
108
  var Tags = function Tags(_ref) {
78
109
  var file = _ref.file,
79
- canEdit = _ref.canEdit;
110
+ canEdit = _ref.canEdit;
80
111
  var client = (0, _reactHooks.useApolloClient)();
112
+
81
113
  var _useState = (0, _react.useState)(false),
82
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
83
- editing = _useState2[0],
84
- setEdit = _useState2[1];
114
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
115
+ editing = _useState2[0],
116
+ setEdit = _useState2[1];
117
+
85
118
  var _useState3 = (0, _react.useState)(false),
86
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
87
- saving = _useState4[0],
88
- setSaving = _useState4[1];
119
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
120
+ saving = _useState4[0],
121
+ setSaving = _useState4[1];
122
+
89
123
  var _useState5 = (0, _react.useState)(Array.isArray(file.tags) ? (0, _toConsumableArray2.default)(file.tags) : []),
90
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
91
- initialTags = _useState6[0],
92
- setInitialTags = _useState6[1];
124
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
125
+ initialTags = _useState6[0],
126
+ setInitialTags = _useState6[1];
127
+
93
128
  var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
94
- showSnackbar = _useSnackbar.showSnackbar;
129
+ showSnackbar = _useSnackbar.showSnackbar;
130
+
95
131
  var _useFileManager = (0, _FileManagerContext.useFileManager)(),
96
- queryParams = _useFileManager.queryParams;
132
+ queryParams = _useFileManager.queryParams;
133
+
97
134
  var handleEdit = (0, _react.useCallback)(function () {
98
135
  return setEdit(true);
99
136
  }, []);
@@ -107,10 +144,13 @@ var Tags = function Tags(_ref) {
107
144
  var isEditingAllowed = canEdit(file);
108
145
  var renderHeaderContent = (0, _react.useCallback)(function (_ref2) {
109
146
  var data = _ref2.data;
147
+
110
148
  if (editing) {
111
149
  return null;
112
150
  }
151
+
113
152
  var hasTags = data.tags.length > 0;
153
+
114
154
  if (hasTags) {
115
155
  // Render existing tags and "edit tags" action.
116
156
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Chips.Chips, {
@@ -128,8 +168,9 @@ var Tags = function Tags(_ref) {
128
168
  icon: /*#__PURE__*/_react.default.createElement(_roundEdit24px.ReactComponent, null),
129
169
  onClick: handleEdit
130
170
  }));
131
- }
132
- // Render "add tags" action.
171
+ } // Render "add tags" action.
172
+
173
+
133
174
  return /*#__PURE__*/_react.default.createElement(_Button.ButtonDefault, {
134
175
  className: addTagsStyle,
135
176
  onClick: handleEdit,
@@ -159,13 +200,13 @@ var Tags = function Tags(_ref) {
159
200
  }
160
201
  },
161
202
  update: function update(cache, updated) {
162
- var newFileData = (0, _get.default)(updated, "data.fileManager.updateFile.data");
203
+ var newFileData = (0, _get.default)(updated, "data.fileManager.updateFile.data"); // 1. Update files list cache
163
204
 
164
- // 1. Update files list cache
165
205
  var data = (0, _cloneDeep.default)(cache.readQuery({
166
206
  query: _graphql.LIST_FILES,
167
207
  variables: queryParams
168
208
  }));
209
+
169
210
  if (data) {
170
211
  data.fileManager.listFiles.data.forEach(function (item) {
171
212
  if (item.key === newFileData.key) {
@@ -173,12 +214,13 @@ var Tags = function Tags(_ref) {
173
214
  }
174
215
  });
175
216
  }
217
+
176
218
  cache.writeQuery({
177
219
  query: _graphql.LIST_FILES,
178
220
  variables: queryParams,
179
221
  data: data
180
- });
181
- // 2. Update "LIST_TAGS" cache
222
+ }); // 2. Update "LIST_TAGS" cache
223
+
182
224
  if (Array.isArray(newFileData.tags)) {
183
225
  // Get list tags data
184
226
  var listTagsData = (0, _cloneDeep.default)(cache.readQuery({
@@ -187,11 +229,14 @@ var Tags = function Tags(_ref) {
187
229
  where: (0, _FileManagerContext.getWhere)(queryParams.scope)
188
230
  }
189
231
  }));
232
+
190
233
  if (!listTagsData) {
191
234
  return;
192
- }
193
- // Add new tag in list
235
+ } // Add new tag in list
236
+
237
+
194
238
  var updatedTagsList = (0, _toConsumableArray2.default)(newFileData.tags);
239
+
195
240
  if (Array.isArray(listTagsData.fileManager.listTags)) {
196
241
  listTagsData.fileManager.listTags.forEach(function (tag) {
197
242
  if (!updatedTagsList.includes(tag)) {
@@ -199,8 +244,9 @@ var Tags = function Tags(_ref) {
199
244
  }
200
245
  });
201
246
  }
202
- (0, _set.default)(listTagsData, "fileManager.listTags", updatedTagsList);
203
- // Write it to cache
247
+
248
+ (0, _set.default)(listTagsData, "fileManager.listTags", updatedTagsList); // Write it to cache
249
+
204
250
  cache.writeQuery({
205
251
  query: _graphql.LIST_TAGS,
206
252
  variables: {
@@ -216,6 +262,7 @@ var Tags = function Tags(_ref) {
216
262
  setEdit(false);
217
263
  showSnackbar("Tags successfully updated.");
218
264
  });
265
+
219
266
  case 3:
220
267
  case "end":
221
268
  return _context.stop();
@@ -223,15 +270,16 @@ var Tags = function Tags(_ref) {
223
270
  }
224
271
  }, _callee);
225
272
  }));
273
+
226
274
  return function (_x) {
227
275
  return _ref4.apply(this, arguments);
228
276
  };
229
277
  }()
230
278
  }, function (_ref5) {
231
279
  var Bind = _ref5.Bind,
232
- data = _ref5.data,
233
- setValue = _ref5.setValue,
234
- submit = _ref5.submit;
280
+ data = _ref5.data,
281
+ setValue = _ref5.setValue,
282
+ submit = _ref5.submit;
235
283
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("li-title", null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
236
284
  className: "list-item__icon",
237
285
  icon: /*#__PURE__*/_react.default.createElement(_roundLabel24px.ReactComponent, null)
@@ -247,16 +295,18 @@ var Tags = function Tags(_ref) {
247
295
  /**
248
296
  * If "scope" exists, prefix tag with "scope" if not already.
249
297
  */
298
+
250
299
  if (queryParams.scope && !tagInLowerCase.startsWith(queryParams.scope)) {
251
300
  return "".concat(queryParams.scope).concat(SCOPE_SEPARATOR).concat(tagInLowerCase);
252
301
  }
302
+
253
303
  return tagInLowerCase;
254
304
  });
255
305
  baseOnChange(formattedTags);
256
306
  }
257
307
  }, function (_ref6) {
258
308
  var value = _ref6.value,
259
- bindProps = (0, _objectWithoutProperties2.default)(_ref6, _excluded);
309
+ bindProps = (0, _objectWithoutProperties2.default)(_ref6, _excluded);
260
310
  return /*#__PURE__*/_react.default.createElement(_AutoComplete.MultiAutoComplete, Object.assign({}, bindProps, {
261
311
  value: tagWithoutScopePrefix(value, queryParams.scope),
262
312
  options: allTags,
@@ -284,5 +334,6 @@ var Tags = function Tags(_ref) {
284
334
  }, "Cancel"))));
285
335
  });
286
336
  };
337
+
287
338
  var _default = Tags;
288
339
  exports.default = _default;