@webiny/app-admin 5.17.4 → 5.18.0-beta.3

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 (287) hide show
  1. package/components/AdminLayout.js +1 -2
  2. package/components/AppInstaller/Sidebar.js +1 -2
  3. package/components/AppInstaller/index.js +1 -2
  4. package/components/AppInstaller/styled.d.ts +4 -4
  5. package/components/AppInstaller/styled.js +1 -2
  6. package/components/AppInstaller/useInstaller.js +1 -2
  7. package/components/EmptyView.js +1 -2
  8. package/components/FileManager/BottomInfoBar/SupportedFileTypes.js +1 -2
  9. package/components/FileManager/BottomInfoBar/UploadStatus.js +1 -2
  10. package/components/FileManager/BottomInfoBar.js +1 -2
  11. package/components/FileManager/DropFilesHere.js +1 -2
  12. package/components/FileManager/File.js +1 -2
  13. package/components/FileManager/FileDetails/Name.js +1 -2
  14. package/components/FileManager/FileDetails/Tags.js +1 -2
  15. package/components/FileManager/FileDetails.js +1 -2
  16. package/components/FileManager/FileManagerContext.js +1 -2
  17. package/components/FileManager/FileManagerView.js +1 -2
  18. package/components/FileManager/LeftSidebar.js +1 -2
  19. package/components/FileManager/NoPermissionView.js +1 -2
  20. package/components/FileManager/NoResults.js +1 -2
  21. package/components/FileManager/getFileTypePlugin.js +1 -2
  22. package/components/FileManager/getFileUploader.js +1 -2
  23. package/components/FileManager/graphql.js +1 -2
  24. package/components/FileManager/outputFileSelectionError.js +1 -2
  25. package/components/FileManager.js +1 -2
  26. package/components/FloatingActionButton.js +1 -2
  27. package/components/MultiImageUpload.js +1 -2
  28. package/components/OverlayLayout/OverlayLayout.js +1 -2
  29. package/components/OverlayLayout/index.js +1 -2
  30. package/components/Permissions/Permissions.js +1 -2
  31. package/components/Permissions/StyledComponents.js +1 -2
  32. package/components/Permissions/index.js +1 -2
  33. package/components/RichTextEditor/RichTextEditor.js +1 -2
  34. package/components/RichTextEditor/index.js +1 -2
  35. package/components/RichTextEditor/tools/header/index.js +1 -2
  36. package/components/RichTextEditor/tools/image/index.d.ts +7 -6
  37. package/components/RichTextEditor/tools/image/index.js +6 -2
  38. package/components/RichTextEditor/tools/image/svgs.js +1 -2
  39. package/components/RichTextEditor/tools/image/tunes.js +1 -2
  40. package/components/RichTextEditor/tools/image/ui.js +1 -2
  41. package/components/RichTextEditor/tools/paragraph/index.js +1 -2
  42. package/components/RichTextEditor/tools/textColor/index.js +1 -2
  43. package/components/RichTextEditor/tools/utils.js +1 -2
  44. package/components/SearchUI.js +1 -2
  45. package/components/SimpleForm/SimpleForm.js +1 -2
  46. package/components/SimpleForm/index.js +1 -2
  47. package/components/SimpleUI/InputField.js +1 -2
  48. package/components/SingleImageUpload.js +1 -2
  49. package/components/SplitView/SplitView.js +1 -2
  50. package/components/SplitView/index.js +1 -2
  51. package/components/index.js +1 -2
  52. package/hooks/useConfirmationDialog.js +1 -2
  53. package/hooks/useDialog.js +1 -2
  54. package/hooks/useSnackbar.js +1 -2
  55. package/package.json +13 -13
  56. package/plugins/FileManagerFileTypePlugin.js +1 -2
  57. package/plugins/MenuPlugin.js +1 -2
  58. package/plugins/PermissionRendererPlugin.js +1 -2
  59. package/plugins/fileManager/fileDefault.js +1 -2
  60. package/plugins/fileManager/fileImage/DeleteAction.js +1 -2
  61. package/plugins/fileManager/fileImage/EditAction.js +1 -2
  62. package/plugins/fileManager/fileImage/index.js +1 -2
  63. package/plugins/fileManager/index.js +1 -2
  64. package/plugins/globalSearch/SearchBar.js +1 -2
  65. package/plugins/globalSearch/SearchBarDropdown.js +1 -2
  66. package/plugins/globalSearch/index.js +1 -2
  67. package/plugins/globalSearch/styled.d.ts +3 -3
  68. package/plugins/globalSearch/styled.js +1 -2
  69. package/plugins/index.js +1 -2
  70. package/plugins/logo/Logo.d.ts +1 -1
  71. package/plugins/logo/Logo.js +2 -3
  72. package/plugins/logo/index.js +1 -2
  73. package/plugins/menu/documentation.js +3 -3
  74. package/plugins/menu/fileManager.js +1 -2
  75. package/plugins/menu/index.js +1 -2
  76. package/plugins/menu/renderers/MenuGroupRenderer.js +1 -2
  77. package/plugins/menu/renderers/MenuLinkRenderer.js +4 -3
  78. package/plugins/menu/renderers/MenuSectionItemRenderer.js +1 -2
  79. package/plugins/menu/renderers/MenuSectionRenderer.js +1 -2
  80. package/plugins/menu/slack.js +3 -3
  81. package/plugins/menu/source.js +3 -3
  82. package/plugins/uiLayoutRenderer/index.js +1 -2
  83. package/plugins/userMenu/UserMenuElement.js +1 -2
  84. package/plugins/userMenu/UserMenuRenderer.js +1 -2
  85. package/plugins/userMenu/index.js +1 -2
  86. package/types.js +1 -2
  87. package/ui/UIElement.js +1 -2
  88. package/ui/UILayout.js +1 -2
  89. package/ui/UIRenderer.js +1 -2
  90. package/ui/UIView.js +1 -2
  91. package/ui/elements/AccordionElement.js +1 -2
  92. package/ui/elements/ButtonElement.js +1 -2
  93. package/ui/elements/ButtonGroupElement.js +1 -2
  94. package/ui/elements/GenericElement.js +1 -2
  95. package/ui/elements/LabelElement.js +1 -2
  96. package/ui/elements/NavigationMenuElement.d.ts +1 -0
  97. package/ui/elements/NavigationMenuElement.js +1 -2
  98. package/ui/elements/PanelElement.js +1 -2
  99. package/ui/elements/PlaceholderElement.js +1 -2
  100. package/ui/elements/SmallButtonElement.js +1 -2
  101. package/ui/elements/TypographyElement.js +1 -2
  102. package/ui/elements/ViewElement.js +1 -2
  103. package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js +1 -2
  104. package/ui/elements/form/DynamicFieldsetElement.js +1 -2
  105. package/ui/elements/form/FileManagerElement/EmptyStateElement.js +1 -2
  106. package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js +1 -2
  107. package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js +1 -2
  108. package/ui/elements/form/FileManagerElement/styled.d.ts +9 -9
  109. package/ui/elements/form/FileManagerElement/styled.js +1 -2
  110. package/ui/elements/form/FileManagerElement.d.ts +3 -2
  111. package/ui/elements/form/FileManagerElement.js +1 -2
  112. package/ui/elements/form/FormElement.js +1 -2
  113. package/ui/elements/form/FormFieldElement.js +1 -2
  114. package/ui/elements/form/HiddenElement.js +1 -2
  115. package/ui/elements/form/InputElement.js +1 -2
  116. package/ui/elements/form/PasswordElement.js +1 -2
  117. package/ui/elements/form/SelectElement.js +1 -2
  118. package/ui/elements/form/TextareaElement.js +1 -2
  119. package/ui/views/AdminView/ContentElement.js +1 -2
  120. package/ui/views/AdminView/HeaderElement.js +1 -2
  121. package/ui/views/AdminView/HeaderSectionCenterElement.js +1 -2
  122. package/ui/views/AdminView/HeaderSectionLeftElement.js +1 -2
  123. package/ui/views/AdminView/HeaderSectionRightElement.js +1 -2
  124. package/ui/views/AdminView/components/Dialog.js +1 -2
  125. package/ui/views/AdminView/components/Hamburger.js +1 -2
  126. package/ui/views/AdminView/components/Snackbar.js +1 -2
  127. package/ui/views/AdminView.js +1 -2
  128. package/ui/views/FormView/FormContainerElement.js +1 -2
  129. package/ui/views/FormView/FormContentElement.js +1 -2
  130. package/ui/views/FormView/FormFooterElement.js +1 -2
  131. package/ui/views/FormView/FormHeaderElement.js +1 -2
  132. package/ui/views/FormView.js +1 -2
  133. package/ui/views/NavigationView/ContentElement.js +1 -2
  134. package/ui/views/NavigationView/FooterElement.js +1 -2
  135. package/ui/views/NavigationView/HeaderElement.js +1 -2
  136. package/ui/views/NavigationView/NavigationViewRenderer.js +1 -2
  137. package/ui/views/NavigationView/Styled.d.ts +2 -2
  138. package/ui/views/NavigationView/Styled.js +1 -2
  139. package/ui/views/NavigationView/legacyMenu.js +1 -2
  140. package/ui/views/NavigationView/useNavigation.js +1 -2
  141. package/ui/views/NavigationView.js +1 -2
  142. package/ui/views/OverlayView/ContentElement.js +1 -2
  143. package/ui/views/OverlayView/HeaderElement.js +1 -2
  144. package/ui/views/OverlayView/HeaderTitleElement.js +1 -2
  145. package/ui/views/OverlayView/useOverlayView.js +1 -2
  146. package/ui/views/OverlayView.js +1 -2
  147. package/ui/views/SplitView/SplitViewPanelElement.js +1 -2
  148. package/ui/views/SplitView.js +1 -2
  149. package/components/AdminLayout.js.map +0 -1
  150. package/components/AppInstaller/Sidebar.js.map +0 -1
  151. package/components/AppInstaller/index.js.map +0 -1
  152. package/components/AppInstaller/styled.js.map +0 -1
  153. package/components/AppInstaller/useInstaller.js.map +0 -1
  154. package/components/EmptyView.js.map +0 -1
  155. package/components/FileManager/BottomInfoBar/SupportedFileTypes.js.map +0 -1
  156. package/components/FileManager/BottomInfoBar/UploadStatus.js.map +0 -1
  157. package/components/FileManager/BottomInfoBar.js.map +0 -1
  158. package/components/FileManager/DropFilesHere.js.map +0 -1
  159. package/components/FileManager/File.js.map +0 -1
  160. package/components/FileManager/FileDetails/Name.js.map +0 -1
  161. package/components/FileManager/FileDetails/Tags.js.map +0 -1
  162. package/components/FileManager/FileDetails.js.map +0 -1
  163. package/components/FileManager/FileManagerContext.js.map +0 -1
  164. package/components/FileManager/FileManagerView.js.map +0 -1
  165. package/components/FileManager/LeftSidebar.js.map +0 -1
  166. package/components/FileManager/NoPermissionView.js.map +0 -1
  167. package/components/FileManager/NoResults.js.map +0 -1
  168. package/components/FileManager/getFileTypePlugin.js.map +0 -1
  169. package/components/FileManager/getFileUploader.js.map +0 -1
  170. package/components/FileManager/graphql.js.map +0 -1
  171. package/components/FileManager/outputFileSelectionError.js.map +0 -1
  172. package/components/FileManager.js.map +0 -1
  173. package/components/FloatingActionButton.js.map +0 -1
  174. package/components/MultiImageUpload.js.map +0 -1
  175. package/components/OverlayLayout/OverlayLayout.js.map +0 -1
  176. package/components/OverlayLayout/index.js.map +0 -1
  177. package/components/Permissions/Permissions.js.map +0 -1
  178. package/components/Permissions/StyledComponents.js.map +0 -1
  179. package/components/Permissions/index.js.map +0 -1
  180. package/components/RichTextEditor/RichTextEditor.js.map +0 -1
  181. package/components/RichTextEditor/index.js.map +0 -1
  182. package/components/RichTextEditor/tools/header/index.js.map +0 -1
  183. package/components/RichTextEditor/tools/image/index.js.map +0 -1
  184. package/components/RichTextEditor/tools/image/svgs.js.map +0 -1
  185. package/components/RichTextEditor/tools/image/tunes.js.map +0 -1
  186. package/components/RichTextEditor/tools/image/ui.js.map +0 -1
  187. package/components/RichTextEditor/tools/paragraph/index.js.map +0 -1
  188. package/components/RichTextEditor/tools/textColor/index.js.map +0 -1
  189. package/components/RichTextEditor/tools/utils.js.map +0 -1
  190. package/components/SearchUI.js.map +0 -1
  191. package/components/SimpleForm/SimpleForm.js.map +0 -1
  192. package/components/SimpleForm/index.js.map +0 -1
  193. package/components/SimpleUI/InputField.js.map +0 -1
  194. package/components/SingleImageUpload.js.map +0 -1
  195. package/components/SplitView/SplitView.js.map +0 -1
  196. package/components/SplitView/index.js.map +0 -1
  197. package/components/index.js.map +0 -1
  198. package/hooks/useConfirmationDialog.js.map +0 -1
  199. package/hooks/useDialog.js.map +0 -1
  200. package/hooks/useSnackbar.js.map +0 -1
  201. package/plugins/FileManagerFileTypePlugin.js.map +0 -1
  202. package/plugins/MenuPlugin.js.map +0 -1
  203. package/plugins/PermissionRendererPlugin.js.map +0 -1
  204. package/plugins/fileManager/fileDefault.js.map +0 -1
  205. package/plugins/fileManager/fileImage/DeleteAction.js.map +0 -1
  206. package/plugins/fileManager/fileImage/EditAction.js.map +0 -1
  207. package/plugins/fileManager/fileImage/index.js.map +0 -1
  208. package/plugins/fileManager/index.js.map +0 -1
  209. package/plugins/globalSearch/SearchBar.js.map +0 -1
  210. package/plugins/globalSearch/SearchBarDropdown.js.map +0 -1
  211. package/plugins/globalSearch/index.js.map +0 -1
  212. package/plugins/globalSearch/styled.js.map +0 -1
  213. package/plugins/index.js.map +0 -1
  214. package/plugins/logo/Logo.js.map +0 -1
  215. package/plugins/logo/index.js.map +0 -1
  216. package/plugins/menu/documentation.js.map +0 -1
  217. package/plugins/menu/fileManager.js.map +0 -1
  218. package/plugins/menu/index.js.map +0 -1
  219. package/plugins/menu/renderers/MenuGroupRenderer.js.map +0 -1
  220. package/plugins/menu/renderers/MenuLinkRenderer.js.map +0 -1
  221. package/plugins/menu/renderers/MenuSectionItemRenderer.js.map +0 -1
  222. package/plugins/menu/renderers/MenuSectionRenderer.js.map +0 -1
  223. package/plugins/menu/slack.js.map +0 -1
  224. package/plugins/menu/source.js.map +0 -1
  225. package/plugins/uiLayoutRenderer/index.js.map +0 -1
  226. package/plugins/userMenu/UserMenuElement.js.map +0 -1
  227. package/plugins/userMenu/UserMenuRenderer.js.map +0 -1
  228. package/plugins/userMenu/index.js.map +0 -1
  229. package/types.js.map +0 -1
  230. package/ui/UIElement.js.map +0 -1
  231. package/ui/UILayout.js.map +0 -1
  232. package/ui/UIRenderer.js.map +0 -1
  233. package/ui/UIView.js.map +0 -1
  234. package/ui/elements/AccordionElement.js.map +0 -1
  235. package/ui/elements/ButtonElement.js.map +0 -1
  236. package/ui/elements/ButtonGroupElement.js.map +0 -1
  237. package/ui/elements/GenericElement.js.map +0 -1
  238. package/ui/elements/LabelElement.js.map +0 -1
  239. package/ui/elements/NavigationMenuElement.js.map +0 -1
  240. package/ui/elements/PanelElement.js.map +0 -1
  241. package/ui/elements/PlaceholderElement.js.map +0 -1
  242. package/ui/elements/SmallButtonElement.js.map +0 -1
  243. package/ui/elements/TypographyElement.js.map +0 -1
  244. package/ui/elements/ViewElement.js.map +0 -1
  245. package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js.map +0 -1
  246. package/ui/elements/form/DynamicFieldsetElement.js.map +0 -1
  247. package/ui/elements/form/FileManagerElement/EmptyStateElement.js.map +0 -1
  248. package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js.map +0 -1
  249. package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js.map +0 -1
  250. package/ui/elements/form/FileManagerElement/styled.js.map +0 -1
  251. package/ui/elements/form/FileManagerElement.js.map +0 -1
  252. package/ui/elements/form/FormElement.js.map +0 -1
  253. package/ui/elements/form/FormFieldElement.js.map +0 -1
  254. package/ui/elements/form/HiddenElement.js.map +0 -1
  255. package/ui/elements/form/InputElement.js.map +0 -1
  256. package/ui/elements/form/PasswordElement.js.map +0 -1
  257. package/ui/elements/form/SelectElement.js.map +0 -1
  258. package/ui/elements/form/TextareaElement.js.map +0 -1
  259. package/ui/views/AdminView/ContentElement.js.map +0 -1
  260. package/ui/views/AdminView/HeaderElement.js.map +0 -1
  261. package/ui/views/AdminView/HeaderSectionCenterElement.js.map +0 -1
  262. package/ui/views/AdminView/HeaderSectionLeftElement.js.map +0 -1
  263. package/ui/views/AdminView/HeaderSectionRightElement.js.map +0 -1
  264. package/ui/views/AdminView/components/Dialog.js.map +0 -1
  265. package/ui/views/AdminView/components/Hamburger.js.map +0 -1
  266. package/ui/views/AdminView/components/Snackbar.js.map +0 -1
  267. package/ui/views/AdminView.js.map +0 -1
  268. package/ui/views/FormView/FormContainerElement.js.map +0 -1
  269. package/ui/views/FormView/FormContentElement.js.map +0 -1
  270. package/ui/views/FormView/FormFooterElement.js.map +0 -1
  271. package/ui/views/FormView/FormHeaderElement.js.map +0 -1
  272. package/ui/views/FormView.js.map +0 -1
  273. package/ui/views/NavigationView/ContentElement.js.map +0 -1
  274. package/ui/views/NavigationView/FooterElement.js.map +0 -1
  275. package/ui/views/NavigationView/HeaderElement.js.map +0 -1
  276. package/ui/views/NavigationView/NavigationViewRenderer.js.map +0 -1
  277. package/ui/views/NavigationView/Styled.js.map +0 -1
  278. package/ui/views/NavigationView/legacyMenu.js.map +0 -1
  279. package/ui/views/NavigationView/useNavigation.js.map +0 -1
  280. package/ui/views/NavigationView.js.map +0 -1
  281. package/ui/views/OverlayView/ContentElement.js.map +0 -1
  282. package/ui/views/OverlayView/HeaderElement.js.map +0 -1
  283. package/ui/views/OverlayView/HeaderTitleElement.js.map +0 -1
  284. package/ui/views/OverlayView/useOverlayView.js.map +0 -1
  285. package/ui/views/OverlayView.js.map +0 -1
  286. package/ui/views/SplitView/SplitViewPanelElement.js.map +0 -1
  287. package/ui/views/SplitView.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/FileManager/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","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","fetchMoreResult","next","loading","update","createFile","uploadFile","files","errors","uploadedFiles","Promise","all","map","createFileResponse","setTimeout","name","renderUploadFileAction","settingsQuery","settings","uploadMaxFileSize","getDropZoneProps","validateFiles","onDragEnter","onExited","target","value","current","onSelect","undefined","defaultProps"],"mappings":"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","sourcesContent":["import React, { useRef, useCallback, useMemo } from \"react\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport Files from \"react-butterfiles\";\nimport { ButtonPrimary, ButtonIcon } from \"@webiny/ui/Button\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport File from \"./File\";\nimport { useQuery, useMutation, useApolloClient } from \"@apollo/react-hooks\";\nimport { FilesRules } from \"react-butterfiles\";\nimport { LIST_FILES, CREATE_FILE, GET_FILE_SETTINGS } 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\";\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\";\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\ntype 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\nfunction renderFile(props) {\n const { file } = props;\n const plugin = getFileTypePlugin(file);\n return (\n <File {...props} key={file.id}>\n {plugin.render({ file })}\n </File>\n );\n}\n\nconst renderEmpty = ({ hasPreviouslyUploadedFiles, browseFiles, fmFilePermission }) => {\n if (!fmFilePermission) {\n return <NoPermissionView />;\n }\n if (hasPreviouslyUploadedFiles) {\n return <NoResults />;\n }\n return <DropFilesHere empty onClick={browseFiles} />;\n};\n\nfunction FileManagerView(props: FileManagerViewProps) {\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 } = useSecurity();\n const fmFilePermission = useMemo(() => identity.getPermission(\"fm.file\"), []);\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.id || identity.login;\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 = (cache, newFile) => {\n const newFileData = get(newFile, \"data.fileManager.createFile.data\");\n\n const data = cache.readQuery({ query: LIST_FILES, variables: queryParams });\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(function getFileDetailsFile({ src, list }) {\n return list.find(item => item.src === src);\n }, []);\n\n useHotkeys({\n zIndex: 50,\n keys: {\n esc: onClose\n }\n });\n\n const searchInput = useRef();\n\n const apolloClient = useApolloClient();\n\n const gqlQuery = useQuery(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 }) => {\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: (prev, { fetchMoreResult }) => {\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 = get(data, \"fileManager.listFiles.data\") || [];\n const [createFile] = useMutation(CREATE_FILE, { update: updateCacheAfterCreateFile });\n const uploadFile = async files => {\n setUploading(true);\n const list = Array.isArray(files) ? files : [files];\n\n const errors = [];\n const uploadedFiles = [];\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 }, 750);\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 setTimeout(() => {\n onUploadCompletion(uploadedFiles);\n onClose();\n }, 750);\n }\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 => uploadFile(files.map(file => file.src.file))}\n onError={errors => {\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={async () => {\n await onChange(multiple ? selected : selected[0]);\n\n onClose();\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 => current.src === file.src\n ),\n onSelect:\n typeof onChange === \"undefined\"\n ? undefined\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"],"file":"FileManagerView.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/FileManager/LeftSidebar.tsx"],"names":["React","useQuery","get","sortBy","css","styled","Icon","LIST_TAGS","style","leftDrawer","float","display","width","height","backgroundColor","padding","noTagged","paddingTop","textAlign","color","TagList","flexDirection","Tag","alignItems","cursor","paddingLeft","svg","marginRight","LeftSidebar","toggleTag","tags","queryParams","activeTags","Array","isArray","data","list","length","tagList","map","item","index","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\nfunction LeftSidebar({ toggleTag, queryParams: { tags } }) {\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 <Tag\n className={activeTags.includes(item) && \"active\"}\n key={item + index}\n onClick={() => toggleTag(item)}\n >\n <Icon icon={<TagIcon />} /> {item}\n </Tag>\n ))}\n </TagList>\n </div>\n );\n}\n\nexport default LeftSidebar;\n"],"file":"LeftSidebar.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/FileManager/NoPermissionView.tsx"],"names":["React","css","Icon","i18n","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;;AAEA,SAASC,UAAT,QAA2B,uBAA3B;AAEA,IAAMC,CAAC,GAAGF,IAAI,CAACG,EAAL,CAAQ,wDAAR,CAAV;AAEA,IAAMC,MAAM,gBAAGN,GAAG,CAAC;AACfO,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,gBAAgB,GAAG,SAAnBA,gBAAmB,GAAM;AAC3B,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 = () => {\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"],"file":"NoPermissionView.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/FileManager/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,eAAe,SAASC,aAAT,GAAyB;AACpC,sBACI;AAAK,IAAA,SAAS,EAAEL;AAAhB,kBACI,qDADJ,CADJ;AAKH","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\nexport default function DropFilesHere() {\n return (\n <div className={styles}>\n <div>No results found.</div>\n </div>\n );\n}\n"],"file":"NoResults.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/FileManager/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;AAEA,eAAe,SAASC,iBAAT,CAA2BC,IAA3B,EAAiC;AAC5C,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,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,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\";\n\nexport default function getFileTypePlugin(file) {\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 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.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"],"file":"getFileTypePlugin.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/FileManager/getFileUploader.ts"],"names":["plugins","fileStoragePlugin","byName","Error","upload"],"mappings":"AAAA,SAASA,OAAT,QAAwB,iBAAxB;AAGA,gBAAe,YAAM;AACjB,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 () => {\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"],"file":"getFileUploader.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/FileManager/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;AAEA,IAAMC,WAAW;AAAG;AAAH,uMAAjB;AAiBA,IAAMC,YAAY;AAAG;AAAH,+DAAlB;AAQA,OAAO,IAAMC,UAAU,GAAGH,GAAH,+cAIAC,WAJA,CAAhB;AAcP,OAAO,IAAMG,SAAS,GAAGJ,GAAH,8JAAf;AAQP,OAAO,IAAMK,WAAW,GAAGL,GAAH,8QAIAE,YAJA,EAKDD,WALC,CAAjB;AAWP,OAAO,IAAMK,WAAW,GAAGN,GAAH,sZAUAE,YAVA,CAAjB;AAgBP,OAAO,IAAMK,WAAW,GAAGP,GAAH,4PAKAE,YALA,CAAjB;AAWP,OAAO,IAAMM,iBAAiB,GAAGR,GAAH,2UAQNE,YARM,CAAvB","sourcesContent":["import gql from \"graphql-tag\";\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\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\nexport const LIST_TAGS = gql`\n query ListTags {\n fileManager {\n listTags\n }\n }\n`;\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\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\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"],"file":"graphql.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/FileManager/outputFileSelectionError.ts"],"names":["bytes","errors","length","error","find","type","multipleMaxCount","format","multipleMaxSize"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,gBAAe,UAAAC,MAAM,EAAI;AACrB,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;AAVR;AAYH,CA3BD","sourcesContent":["import bytes from \"bytes\";\nexport default errors => {\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 }\n};\n"],"file":"outputFileSelectionError.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/FileManager.tsx"],"names":["React","ReactDOM","FileManagerView","pick","FileManagerProvider","useState","useRef","useCallback","useEffect","FileManagerPortal","props","window","container","document","getElementById","createElement","setAttribute","body","appendChild","onChange","onClose","accept","onChangePick","multiple","images","maxSize","multipleMaxCount","multipleMaxSize","onUploadCompletion","handleFileOnChange","files","fields","Array","isArray","map","file","undefined","createPortal","Component","FileManager","children","rest","show","setShow","onChangeRef","current","showFileManager"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport FileManagerView from \"./FileManager/FileManagerView\";\nimport pick from \"lodash/pick\";\nimport { FileManagerProvider } from \"./FileManager/FileManagerContext\";\n\ntype FileManagerProps = {\n onChange?: Function;\n onChangePick?: string[];\n images?: boolean;\n multiple?: boolean;\n accept?: Array<string>;\n children: ({ showFileManager: Function }) => React.ReactNode;\n maxSize?: number | string;\n multipleMaxCount?: number;\n multipleMaxSize?: number | string;\n onClose?: Function;\n onUploadCompletion?: Function;\n};\n\ntype FileManagerPortalProps = Omit<FileManagerProps, \"children\">;\n\nconst { useState, useRef, useCallback, useEffect } = React;\n\nclass FileManagerPortal extends React.Component<FileManagerPortalProps> {\n container: Element;\n constructor(props) {\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 render() {\n const {\n onChange,\n onClose,\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;\n\n const handleFileOnChange = files => {\n const fields = Array.isArray(onChangePick)\n ? onChangePick\n : [\"id\", \"name\", \"key\", \"src\", \"size\", \"type\"];\n if (Array.isArray(files)) {\n onChange(files.map(file => pick(file, fields)));\n } else {\n onChange(pick(files, fields));\n }\n };\n\n const props = {\n onChange: typeof onChange === \"function\" ? handleFileOnChange : undefined,\n onClose,\n accept,\n multiple,\n maxSize,\n multipleMaxCount,\n multipleMaxSize,\n onUploadCompletion\n };\n\n if (images) {\n props.accept = [\"image/jpg\", \"image/jpeg\", \"image/gif\", \"image/png\", \"image/svg+xml\"];\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 function FileManager({ children, ...rest }: FileManagerProps) {\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"],"file":"FileManager.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/FloatingActionButton.tsx"],"names":["React","ButtonFloating","FloatingActionButton","props","position","bottom","right"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,cAAT,QAA+B,mBAA/B;8FAGA;;AACA,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAuB,CAAAC,KAAK,EAAI;AAClC,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 = 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"],"file":"FloatingActionButton.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/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,C,CAEA;;AAGA,eAAe,SAASD,gBAAT,OAAkF;AAAA,MAAtDE,iBAAsD,QAAtDA,iBAAsD;AAAA,MAAhCC,qBAAgC;;AAC7F,sBACI,oBAAC,kBAAD;AACI,IAAA,kBAAkB,EAAE,4BAACC,gBAAD,EAA8B;AAC9C,0BACI,oBAAC,KAAD;AACI,QAAA,SAAS,EAAE;AAAEC,UAAAA,KAAK,EAAE;AAAT;AADf,SAEQH,iBAFR,EAGQE,gBAHR,EADJ;AAOH;AATL,KAUQD,qBAVR,EADJ;AAcH","sourcesContent":["import * as React from \"react\";\nimport { Image } from \"@webiny/app/components/Image\";\nimport { MultiImageUpload as UiMultiImageUpload } from \"@webiny/ui/ImageUpload\";\n\n// TODO: @adrian define props type\ntype Props = any;\n\nexport default function MultiImageUpload({ imagePreviewProps, ...multiImageUploadProps }: Props) {\n return (\n <UiMultiImageUpload\n renderImagePreview={(renderImageProps: Object) => {\n return (\n <Image\n transform={{ width: 300 }}\n {...imagePreviewProps}\n {...renderImageProps}\n />\n );\n }}\n {...multiImageUploadProps}\n />\n );\n}\n"],"file":"MultiImageUpload.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/OverlayLayout/OverlayLayout.tsx"],"names":["React","Transition","styled","css","TopAppBarSecondary","TopAppBarSection","IconButton","noop","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\";\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 = {\n entering: { transform: \"translateY(75vh)\", opacity: 0 },\n entered: { transform: \"translateY(0px)\", opacity: 1 }\n};\n\ntype OverlayLayoutProps = {\n barMiddle?: React.ReactNode;\n barLeft?: React.ReactNode;\n barRight?: React.ReactNode;\n children: React.ReactNode;\n onExited?: Function;\n style?: React.CSSProperties;\n};\n\ntype State = {\n isVisible: boolean;\n};\n\nexport class OverlayLayout extends React.Component<OverlayLayoutProps, State> {\n constructor(props) {\n super(props);\n document.body.classList.add(noScroll);\n }\n\n static defaultProps = {\n onExited: noop\n };\n\n state = { isVisible: true };\n\n hideComponent() {\n this.setState({ isVisible: false });\n if (OverlayView.openedViews === 0) {\n document.body.classList.remove(noScroll);\n }\n }\n\n componentWillUnmount() {\n if (OverlayView.openedViews === 0) {\n document.body.classList.remove(noScroll);\n }\n }\n\n 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"],"file":"OverlayLayout.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/OverlayLayout/index.ts"],"names":["OverlayLayout"],"mappings":"AAAA,SAASA,aAAT","sourcesContent":["export { OverlayLayout } from \"./OverlayLayout\";\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/Permissions/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,WAAW,GAAG,SAAdA,WAAc,OAAoC;AAAA,MAAjCC,EAAiC,QAAjCA,EAAiC;AAAA,MAA7BC,KAA6B,QAA7BA,KAA6B;AAAA,MAAtBC,QAAsB,QAAtBA,QAAsB;;AAC3D,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\ntype Props = BindComponentRenderProp & {\n id: string;\n};\n\ntype PermissionPlugins = {\n systemPlugins: AdminAppPermissionRendererPlugin[];\n permissionPlugins: AdminAppPermissionRendererPlugin[];\n};\n\nexport const Permissions = ({ id, value, onChange }: Props) => {\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: [] }\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"],"file":"Permissions.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/Permissions/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;AAIP,OAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAiB;AAAA,MAAGC,KAAH,QAAGA,KAAH;AAAA,sBAC1B;AAAK,IAAA,SAAS,EAAEP;AAAhB,kBACI,oBAAC,UAAD;AAAY,IAAA,GAAG,EAAE;AAAjB,KAA+BO,KAA/B,CADJ,CAD0B;AAAA,CAAvB","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\nexport const PermissionInfo = ({ title }) => (\n <div className={flexClass}>\n <Typography use={\"subtitle2\"}>{title}</Typography>\n </div>\n);\n"],"file":"StyledComponents.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/Permissions/index.ts"],"names":["Permissions"],"mappings":"AAAA;AACA,SAASA,WAAT","sourcesContent":["export * from \"./StyledComponents\";\nexport { Permissions } from \"./Permissions\";\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/RichTextEditor/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,cAAc,GAAG,SAAjBA,cAAiB,CAACG,KAAD,EAAgC;AAC1D,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 = (props: RichTextEditorProps) => {\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"],"file":"RichTextEditor.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/RichTextEditor/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"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/RichTextEditor/tools/header/index.ts"],"names":["ALIGNMENTS","ALIGNMENT_ICONS","TextAlign","Header","data","config","api","readOnly","alignments","typography","_CSS","block","styles","settingsButton","settingsButtonActive","wrapper","_settings","_data","normalizeData","settingsButtons","_element","getTag","newData","text","level","parseInt","defaultLevel","number","textAlign","START","holder","document","createElement","levels","length","forEach","selectTypeButton","classList","add","currentLevel","innerHTML","svg","dataset","addEventListener","setLevel","appendChild","push","alignment","currentAlignment","name","setAlignment","button","toggle","blockData","trim","toolsContent","getTextAlign","className","includes","undefined","parentNode","newHeader","replaceChild","tag","component","toLowerCase","typographyConfig","textAlignClass","remove","contentEditable","placeholder","i18n","t","find","levelItem","start","userSpecified","console","warn","availableLevels","filter","l","event","content","detail","tagName","reduce","prevLevel","currLevel","Math","abs","export","import","tags","icon","title"],"mappings":"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","sourcesContent":["import { API } from \"@editorjs/editorjs\";\nimport { ALIGNMENTS, ALIGNMENT_ICONS, TextAlign, Alignment } from \"../utils\";\n\ntype Typography = {\n [key: string]: {\n label: string;\n component: string;\n className: string;\n };\n};\n\ntype HeaderData = {\n text: string;\n level: any;\n textAlign: TextAlign;\n};\n\ntype HeaderConfig = {\n levels: number[];\n typography: Typography;\n};\n\ninterface HeaderArgs {\n data: HeaderData;\n config: HeaderConfig;\n api: any;\n readOnly: boolean;\n}\n\nclass Header {\n api: API;\n readOnly: boolean;\n settingsButtons: any[];\n _CSS: any;\n _settings: any;\n _data: any;\n _element: any;\n alignments: Alignment[];\n typography: Typography;\n /**\n * Render plugin`s main Element and fill it with saved data\n *\n * @param {{data: HeaderData, config: HeaderConfig, api: object}}\n * data — previously saved data\n * config - user config for Tool\n * api - Editor.js API\n * readOnly - read only mode flag\n */\n constructor({ data, config, api, readOnly }: HeaderArgs) {\n this.api = api;\n this.readOnly = readOnly;\n\n this.alignments = ALIGNMENTS;\n /**\n * Import typography from theme\n */\n this.typography = config.typography || null;\n\n /**\n * Styles\n *\n * @type {object}\n */\n this._CSS = {\n block: this.api.styles.block,\n settingsButton: this.api.styles.settingsButton,\n settingsButtonActive: this.api.styles.settingsButtonActive,\n wrapper: \"ce-header\"\n };\n\n /**\n * Tool's settings passed from Editor\n *\n * @type {HeaderConfig}\n * @private\n */\n this._settings = config;\n\n /**\n * Block's data\n *\n * @type {HeaderData}\n * @private\n */\n this._data = this.normalizeData(data);\n\n /**\n * List of settings buttons\n *\n * @type {HTMLElement[]}\n */\n this.settingsButtons = [];\n\n /**\n * Main Block wrapper\n *\n * @type {HTMLElement}\n * @private\n */\n this._element = this.getTag();\n }\n\n /**\n * Normalize input data\n *\n * @param {HeaderData} data - saved data to process\n *\n * @returns {HeaderData}\n * @private\n */\n normalizeData(data) {\n const newData: any = {};\n\n if (typeof data !== \"object\") {\n data = {};\n }\n\n newData.text = data.text || \"\";\n newData.level = parseInt(data.level) || this.defaultLevel.number;\n newData.textAlign = data.textAlign || TextAlign.START;\n\n return newData;\n }\n\n /**\n * Return Tool's view\n *\n * @returns {HTMLHeadingElement}\n * @public\n */\n render() {\n return this._element;\n }\n\n /**\n * Create Block's settings block\n *\n * @returns {HTMLElement}\n */\n renderSettings() {\n const holder = document.createElement(\"DIV\");\n\n // do not add settings button, when only one level is configured\n if (this.levels.length <= 1) {\n return holder;\n }\n\n /** Add type selectors */\n this.levels.forEach(level => {\n const selectTypeButton = document.createElement(\"SPAN\");\n\n selectTypeButton.classList.add(this._CSS.settingsButton);\n\n /**\n * Highlight current level button\n */\n if (this.currentLevel.number === level.number) {\n selectTypeButton.classList.add(this._CSS.settingsButtonActive);\n }\n\n /**\n * Add SVG icon\n */\n selectTypeButton.innerHTML = level.svg;\n\n /**\n * Save level to its button\n */\n selectTypeButton.dataset.level = level.number + \"\";\n\n /**\n * Set up click handler\n */\n selectTypeButton.addEventListener(\"click\", () => {\n this.setLevel(level.number);\n });\n\n /**\n * Append settings button to holder\n */\n holder.appendChild(selectTypeButton);\n\n /**\n * Save settings buttons\n */\n this.settingsButtons.push(selectTypeButton);\n });\n\n /**\n * Add alignment selectors\n * */\n this.alignments.forEach(alignment => {\n const selectTypeButton = document.createElement(\"SPAN\");\n\n selectTypeButton.classList.add(this._CSS.settingsButton);\n\n /**\n * Highlight current level button\n */\n if (this.currentAlignment.name === alignment.name) {\n selectTypeButton.classList.add(this._CSS.settingsButtonActive);\n }\n\n /**\n * Add SVG icon\n */\n selectTypeButton.innerHTML = alignment.svg;\n\n /**\n * Save alignment to its button\n */\n selectTypeButton.dataset.textAlign = alignment.name;\n\n /**\n * Set up click handler\n */\n selectTypeButton.addEventListener(\"click\", () => {\n this.setAlignment(alignment);\n });\n\n /**\n * Append settings button to holder\n */\n holder.appendChild(selectTypeButton);\n\n /**\n * Save settings buttons\n */\n this.settingsButtons.push(selectTypeButton);\n });\n\n return holder;\n }\n\n /**\n * Callback for Block's settings buttons\n *\n * @param {number} level - level to set\n */\n setLevel(level) {\n this.data = {\n level: level,\n text: this.data.text\n };\n\n /**\n * Highlight button by selected level\n */\n this.settingsButtons.forEach(button => {\n button.classList.toggle(\n this._CSS.settingsButtonActive,\n parseInt(button.dataset.level) === level\n );\n });\n }\n\n /**\n * Callback for Block's settings buttons\n *\n * @param {number} alignment - level to set\n */\n setAlignment(alignment) {\n this.data = {\n textAlign: alignment.name,\n text: this.data.text,\n level: this.data.level\n };\n\n /**\n * Highlight button by selected level\n */\n this.settingsButtons.forEach(button => {\n button.classList.toggle(\n this._CSS.settingsButtonActive,\n button.dataset.textAlign === alignment.name\n );\n });\n }\n\n /**\n * Method that specified how to merge two Text blocks.\n * Called by Editor.js by backspace at the beginning of the Block\n *\n * @param {HeaderData} data - saved data to merger with current block\n * @public\n */\n merge(data) {\n const newData = {\n text: this.data.text + data.text,\n level: this.data.level,\n alignment: this.data.alignment\n };\n\n this.data = newData;\n }\n\n /**\n * Validate Text block data:\n * - check for emptiness\n *\n * @param {HeaderData} blockData — data received after saving\n * @returns {boolean} false if saved data is not correct, otherwise true\n * @public\n */\n validate(blockData) {\n return blockData.text.trim() !== \"\";\n }\n\n /**\n * Extract Tool's data from the view\n *\n * @param {HTMLHeadingElement} toolsContent - Text tools rendered view\n * @returns {HeaderData} - saved data\n * @public\n */\n save(toolsContent) {\n return {\n text: toolsContent.innerHTML,\n level: this.currentLevel.number,\n textAlign: this.getTextAlign(toolsContent.className),\n className: toolsContent.className\n };\n }\n\n /**\n * Extract textAlign from className\n *\n * @param {string} className - heading element className\n * @returns {TextAlign} textAlign\n */\n getTextAlign(className) {\n let textAlign = TextAlign.START;\n // Match className with alignment\n this.alignments.forEach(alignment => {\n if (className.includes(`ce-header-text--${alignment.name}`)) {\n textAlign = alignment.name;\n }\n });\n return textAlign;\n }\n\n /**\n * Allow Header to be converted to/from other blocks\n */\n static get conversionConfig() {\n return {\n export: \"text\", // use 'text' property for other blocks\n import: \"text\" // fill 'text' property from other block's export string\n };\n }\n\n /**\n * Sanitizer Rules\n */\n static get sanitize() {\n return {\n level: false,\n text: {}\n };\n }\n\n /**\n * Returns true to notify core that read-only is supported\n *\n * @returns {boolean}\n */\n static get isReadOnlySupported() {\n return true;\n }\n\n /**\n * Get current Tools`s data\n *\n * @returns {HeaderData} Current data\n * @private\n */\n get data() {\n this._data.text = this._element.innerHTML;\n this._data.level = this.currentLevel.number;\n this._data.textAlign = this.currentAlignment.name;\n\n return this._data;\n }\n\n /**\n * Store data in plugin:\n * - at the this._data property\n * - at the HTML\n *\n * @param {HeaderData} data — data to set\n * @private\n */\n set data(data) {\n this._data = this.normalizeData(data);\n\n /**\n * If level is set and block in DOM\n * then replace it to a new block\n */\n if (data.level !== undefined && this._element.parentNode) {\n /**\n * Create a new tag\n *\n * @type {HTMLHeadingElement}\n */\n const newHeader = this.getTag();\n\n /**\n * Save Block's content\n */\n newHeader.innerHTML = this._element.innerHTML;\n\n /**\n * Replace blocks\n */\n this._element.parentNode.replaceChild(newHeader, this._element);\n\n /**\n * Save new block to private variable\n *\n * @type {HTMLHeadingElement}\n * @private\n */\n this._element = newHeader;\n }\n\n /**\n * If data.text was passed then update block's content\n */\n if (data.text !== undefined) {\n this._element.innerHTML = this._data.text || \"\";\n }\n }\n\n /**\n * Get tag for target level\n * By default returns second-leveled header\n *\n * @returns {HTMLElement}\n */\n getTag() {\n /**\n * Create element for current Block's level\n */\n const tag = document.createElement(this.currentLevel.tag);\n\n /**\n * Add text to block\n */\n tag.innerHTML = this._data.text || \"\";\n\n /**\n * Add styles class from typography\n */\n if (this.typography) {\n const component = this.currentLevel.tag.toLowerCase();\n const typographyConfig = this.typography[component];\n tag.classList.add(typographyConfig.className);\n } else {\n /**\n * Add styles class\n */\n tag.classList.add(this._CSS.wrapper);\n }\n\n /**\n * Add Alignment class\n */\n this.alignments.forEach(alignment => {\n const textAlignClass = `ce-header-text--${alignment.name}`;\n if (alignment.name === this._data.textAlign) {\n tag.classList.add(textAlignClass);\n } else {\n tag.classList.remove(textAlignClass);\n }\n });\n\n /**\n * Make tag editable\n */\n tag.contentEditable = this.readOnly ? \"false\" : \"true\";\n\n /**\n * Add Placeholder\n */\n tag.dataset.placeholder = this.api.i18n.t(this._settings.placeholder || \"\");\n\n return tag;\n }\n\n /**\n * Get current level\n *\n * @returns {level}\n */\n get currentLevel() {\n let level = this.levels.find(levelItem => levelItem.number === this._data.level);\n\n if (!level) {\n level = this.defaultLevel;\n }\n\n return level;\n }\n\n /**\n * Get current alignment\n *\n * @returns {alignment}\n */\n get currentAlignment() {\n let alignment = this.alignments.find(alignment => alignment.name === this._data.textAlign);\n\n if (!alignment) {\n alignment = { name: TextAlign.START, svg: ALIGNMENT_ICONS.start };\n }\n\n return alignment;\n }\n\n /**\n * Return default level\n *\n * @returns {level}\n */\n get defaultLevel() {\n /**\n * User can specify own default level value\n */\n if (this._settings.defaultLevel) {\n const userSpecified = this.levels.find(levelItem => {\n return levelItem.number === this._settings.defaultLevel;\n });\n\n if (userSpecified) {\n return userSpecified;\n } else {\n console.warn(\n \"(ง'̀-'́)ง Heading Tool: the default level specified was not found in available levels\"\n );\n }\n }\n\n /**\n * With no additional options, there will be H2 by default\n *\n * @type {level}\n */\n return this.levels[1];\n }\n\n /**\n * @typedef {object} level\n * @property {number} number - level number\n * @property {string} tag - tag corresponds with level number\n * @property {string} svg - icon\n */\n\n /**\n * Available header levels\n *\n * @returns {level[]}\n */\n get levels() {\n const availableLevels = [\n {\n number: 1,\n tag: \"H1\",\n svg: '<svg width=\"16\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.14 1.494V4.98h4.62V1.494c0-.498.098-.871.293-1.12A.927.927 0 0 1 7.82 0c.322 0 .583.123.782.37.2.246.3.62.3 1.124v9.588c0 .503-.101.88-.303 1.128a.957.957 0 0 1-.779.374.921.921 0 0 1-.77-.378c-.193-.251-.29-.626-.29-1.124V6.989H2.14v4.093c0 .503-.1.88-.302 1.128a.957.957 0 0 1-.778.374.921.921 0 0 1-.772-.378C.096 11.955 0 11.58 0 11.082V1.494C0 .996.095.623.285.374A.922.922 0 0 1 1.06 0c.321 0 .582.123.782.37.199.246.299.62.299 1.124zm11.653 9.985V5.27c-1.279.887-2.14 1.33-2.583 1.33a.802.802 0 0 1-.563-.228.703.703 0 0 1-.245-.529c0-.232.08-.402.241-.511.161-.11.446-.25.854-.424.61-.259 1.096-.532 1.462-.818a5.84 5.84 0 0 0 .97-.962c.282-.355.466-.573.552-.655.085-.082.246-.123.483-.123.267 0 .481.093.642.28.161.186.242.443.242.77v7.813c0 .914-.345 1.371-1.035 1.371-.307 0-.554-.093-.74-.28-.187-.186-.28-.461-.28-.825z\"/></svg>'\n },\n {\n number: 2,\n tag: \"H2\",\n svg: '<svg width=\"18\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.152 1.494V4.98h4.646V1.494c0-.498.097-.871.293-1.12A.934.934 0 0 1 7.863 0c.324 0 .586.123.786.37.2.246.301.62.301 1.124v9.588c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378c-.194-.251-.29-.626-.29-1.124V6.989H2.152v4.093c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378C.097 11.955 0 11.58 0 11.082V1.494C0 .996.095.623.286.374A.929.929 0 0 1 1.066 0c.323 0 .585.123.786.37.2.246.3.62.3 1.124zm10.99 9.288h3.527c.351 0 .62.072.804.216.185.144.277.34.277.588 0 .22-.073.408-.22.56-.146.154-.368.23-.665.23h-4.972c-.338 0-.601-.093-.79-.28a.896.896 0 0 1-.284-.659c0-.162.06-.377.182-.645s.255-.478.399-.631a38.617 38.617 0 0 1 1.621-1.598c.482-.444.827-.735 1.034-.875.369-.261.676-.523.922-.787.245-.263.432-.534.56-.81.129-.278.193-.549.193-.815 0-.288-.069-.546-.206-.773a1.428 1.428 0 0 0-.56-.53 1.618 1.618 0 0 0-.774-.19c-.59 0-1.054.26-1.392.777-.045.068-.12.252-.226.554-.106.302-.225.534-.358.696-.133.162-.328.243-.585.243a.76.76 0 0 1-.56-.223c-.149-.148-.223-.351-.223-.608 0-.31.07-.635.21-.972.139-.338.347-.645.624-.92a3.093 3.093 0 0 1 1.054-.665c.426-.169.924-.253 1.496-.253.69 0 1.277.108 1.764.324.315.144.592.343.83.595.24.252.425.544.558.875.133.33.2.674.2 1.03 0 .558-.14 1.066-.416 1.523-.277.457-.56.815-.848 1.074-.288.26-.771.666-1.45 1.22-.677.554-1.142.984-1.394 1.29a3.836 3.836 0 0 0-.331.44z\"/></svg>'\n },\n {\n number: 3,\n tag: \"H3\",\n svg: '<svg width=\"18\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.152 1.494V4.98h4.646V1.494c0-.498.097-.871.293-1.12A.934.934 0 0 1 7.863 0c.324 0 .586.123.786.37.2.246.301.62.301 1.124v9.588c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378c-.194-.251-.29-.626-.29-1.124V6.989H2.152v4.093c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378C.097 11.955 0 11.58 0 11.082V1.494C0 .996.095.623.286.374A.929.929 0 0 1 1.066 0c.323 0 .585.123.786.37.2.246.3.62.3 1.124zm11.61 4.919c.418 0 .778-.123 1.08-.368.301-.245.452-.597.452-1.055 0-.35-.12-.65-.36-.902-.241-.252-.566-.378-.974-.378-.277 0-.505.038-.684.116a1.1 1.1 0 0 0-.426.306 2.31 2.31 0 0 0-.296.49c-.093.2-.178.388-.255.565a.479.479 0 0 1-.245.225.965.965 0 0 1-.409.081.706.706 0 0 1-.5-.22c-.152-.148-.228-.345-.228-.59 0-.236.071-.484.214-.745a2.72 2.72 0 0 1 .627-.746 3.149 3.149 0 0 1 1.024-.568 4.122 4.122 0 0 1 1.368-.214c.44 0 .842.06 1.205.18.364.12.679.294.947.52.267.228.47.49.606.79.136.3.204.622.204.967 0 .454-.099.843-.296 1.168-.198.324-.48.64-.848.95.354.19.653.408.895.653.243.245.426.516.548.813.123.298.184.619.184.964 0 .413-.083.812-.248 1.198-.166.386-.41.73-.732 1.031a3.49 3.49 0 0 1-1.147.708c-.443.17-.932.256-1.467.256a3.512 3.512 0 0 1-1.464-.293 3.332 3.332 0 0 1-1.699-1.64c-.142-.314-.214-.573-.214-.777 0-.263.085-.475.255-.636a.89.89 0 0 1 .637-.242c.127 0 .25.037.367.112a.53.53 0 0 1 .232.27c.236.63.489 1.099.759 1.405.27.306.65.46 1.14.46a1.714 1.714 0 0 0 1.46-.824c.17-.273.256-.588.256-.947 0-.53-.145-.947-.436-1.249-.29-.302-.694-.453-1.212-.453-.09 0-.231.01-.422.028-.19.018-.313.027-.367.027-.25 0-.443-.062-.579-.187-.136-.125-.204-.299-.204-.521 0-.218.081-.394.245-.528.163-.134.406-.2.728-.2h.28z\"/></svg>'\n },\n {\n number: 4,\n tag: \"H4\",\n svg: '<svg width=\"20\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.152 1.494V4.98h4.646V1.494c0-.498.097-.871.293-1.12A.934.934 0 0 1 7.863 0c.324 0 .586.123.786.37.2.246.301.62.301 1.124v9.588c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378c-.194-.251-.29-.626-.29-1.124V6.989H2.152v4.093c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378C.097 11.955 0 11.58 0 11.082V1.494C0 .996.095.623.286.374A.929.929 0 0 1 1.066 0c.323 0 .585.123.786.37.2.246.3.62.3 1.124zm13.003 10.09v-1.252h-3.38c-.427 0-.746-.097-.96-.29-.213-.193-.32-.456-.32-.788 0-.085.016-.171.048-.259.031-.088.078-.18.141-.276.063-.097.128-.19.195-.28.068-.09.15-.2.25-.33l3.568-4.774a5.44 5.44 0 0 1 .576-.683.763.763 0 0 1 .542-.212c.682 0 1.023.39 1.023 1.171v5.212h.29c.346 0 .623.047.832.142.208.094.313.3.313.62 0 .26-.086.45-.256.568-.17.12-.427.179-.768.179h-.41v1.252c0 .346-.077.603-.23.771-.152.168-.356.253-.612.253a.78.78 0 0 1-.61-.26c-.154-.173-.232-.427-.232-.764zm-2.895-2.76h2.895V4.91L12.26 8.823z\"/></svg>'\n },\n {\n number: 5,\n tag: \"H5\",\n svg: '<svg width=\"18\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.152 1.494V4.98h4.646V1.494c0-.498.097-.871.293-1.12A.934.934 0 0 1 7.863 0c.324 0 .586.123.786.37.2.246.301.62.301 1.124v9.588c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378c-.194-.251-.29-.626-.29-1.124V6.989H2.152v4.093c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378C.097 11.955 0 11.58 0 11.082V1.494C0 .996.095.623.286.374A.929.929 0 0 1 1.066 0c.323 0 .585.123.786.37.2.246.3.62.3 1.124zm14.16 2.645h-3.234l-.388 2.205c.644-.344 1.239-.517 1.783-.517.436 0 .843.082 1.222.245.38.164.712.39.998.677.286.289.51.63.674 1.025.163.395.245.82.245 1.273 0 .658-.148 1.257-.443 1.797-.295.54-.72.97-1.276 1.287-.556.318-1.197.477-1.923.477-.813 0-1.472-.15-1.978-.45-.506-.3-.865-.643-1.076-1.031-.21-.388-.316-.727-.316-1.018 0-.177.073-.345.22-.504a.725.725 0 0 1 .556-.238c.381 0 .665.22.85.66.182.404.427.719.736.943.309.225.654.337 1.035.337.35 0 .656-.09.919-.272.263-.182.466-.431.61-.749.142-.318.214-.678.214-1.082 0-.436-.078-.808-.232-1.117a1.607 1.607 0 0 0-.62-.69 1.674 1.674 0 0 0-.864-.229c-.39 0-.67.048-.837.143-.168.095-.41.262-.725.5-.316.239-.576.358-.78.358a.843.843 0 0 1-.592-.242c-.173-.16-.259-.344-.259-.548 0-.022.025-.177.075-.463l.572-3.26c.063-.39.181-.675.354-.852.172-.177.454-.265.844-.265h3.595c.708 0 1.062.27 1.062.81a.711.711 0 0 1-.26.572c-.172.145-.426.218-.762.218z\"/></svg>'\n },\n {\n number: 6,\n tag: \"H6\",\n svg: '<svg width=\"18\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.152 1.494V4.98h4.646V1.494c0-.498.097-.871.293-1.12A.934.934 0 0 1 7.863 0c.324 0 .586.123.786.37.2.246.301.62.301 1.124v9.588c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378c-.194-.251-.29-.626-.29-1.124V6.989H2.152v4.093c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378C.097 11.955 0 11.58 0 11.082V1.494C0 .996.095.623.286.374A.929.929 0 0 1 1.066 0c.323 0 .585.123.786.37.2.246.3.62.3 1.124zM12.53 7.058a3.093 3.093 0 0 1 1.004-.814 2.734 2.734 0 0 1 1.214-.264c.43 0 .827.08 1.19.24.365.161.684.39.957.686.274.296.485.645.635 1.048a3.6 3.6 0 0 1 .223 1.262c0 .637-.145 1.216-.437 1.736-.292.52-.699.926-1.221 1.218-.522.292-1.114.438-1.774.438-.76 0-1.416-.186-1.967-.557-.552-.37-.974-.919-1.265-1.645-.292-.726-.438-1.613-.438-2.662 0-.855.088-1.62.265-2.293.176-.674.43-1.233.76-1.676.33-.443.73-.778 1.2-1.004.47-.226 1.006-.339 1.608-.339.579 0 1.089.113 1.53.34.44.225.773.506.997.84.224.335.335.656.335.964 0 .185-.07.354-.21.505a.698.698 0 0 1-.536.227.874.874 0 0 1-.529-.18 1.039 1.039 0 0 1-.36-.498 1.42 1.42 0 0 0-.495-.655 1.3 1.3 0 0 0-.786-.247c-.24 0-.479.069-.716.207a1.863 1.863 0 0 0-.6.56c-.33.479-.525 1.333-.584 2.563zm1.832 4.213c.456 0 .834-.186 1.133-.56.298-.373.447-.862.447-1.468 0-.412-.07-.766-.21-1.062a1.584 1.584 0 0 0-.577-.678 1.47 1.47 0 0 0-.807-.234c-.28 0-.548.074-.804.224-.255.149-.461.365-.617.647a2.024 2.024 0 0 0-.234.994c0 .61.158 1.12.475 1.527.316.407.714.61 1.194.61z\"/></svg>'\n }\n ];\n\n return this._settings.levels\n ? availableLevels.filter(l => this._settings.levels.includes(l.number))\n : availableLevels;\n }\n\n /**\n * Handle H1-H6 tags on paste to substitute it with header Tool\n *\n * @param {PasteEvent} event - event with pasted content\n */\n onPaste(event) {\n const content = event.detail.data;\n\n /**\n * Define default level value\n *\n * @type {number}\n */\n let level = this.defaultLevel.number;\n\n switch (content.tagName) {\n case \"H1\":\n level = 1;\n break;\n case \"H2\":\n level = 2;\n break;\n case \"H3\":\n level = 3;\n break;\n case \"H4\":\n level = 4;\n break;\n case \"H5\":\n level = 5;\n break;\n case \"H6\":\n level = 6;\n break;\n }\n\n if (this._settings.levels) {\n // Fallback to nearest level when specified not available\n level = this._settings.levels.reduce((prevLevel, currLevel) => {\n return Math.abs(currLevel - level) < Math.abs(prevLevel - level)\n ? currLevel\n : prevLevel;\n });\n }\n\n this.data = {\n level,\n text: content.innerHTML\n };\n }\n\n /**\n * Used by Editor.js paste handling API.\n * Provides configuration to handle H1-H6 tags.\n *\n * @returns {{handler: (function(HTMLElement): {text: string}), tags: string[]}}\n */\n static get pasteConfig() {\n return {\n tags: [\"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\"]\n };\n }\n\n /**\n * Get Tool toolbox settings\n * icon - Tool icon's SVG\n * title - title to show in toolbox\n *\n * @returns {{icon: string, title: string}}\n */\n static get toolbox() {\n return {\n icon:\n '<svg width=\"10\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 14\">\\n' +\n ' <path d=\"M7.6 8.15H2.25v4.525a1.125 1.125 0 0 1-2.25 0V1.125a1.125 1.125 0 1 1 2.25 0V5.9H7.6V1.125a1.125 1.125 0 0 1 2.25 0v11.55a1.125 1.125 0 0 1-2.25 0V8.15z\"/>\\n' +\n \"</svg>\",\n title: \"Heading\"\n };\n }\n}\n\nexport default Header;\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/RichTextEditor/tools/image/index.ts"],"names":["Ui","Tunes","svgs","defaultGetFileSrc","file","src","defaultOnSelectFile","ImageTool","data","config","api","readOnly","getFileSrc","onSelectFile","actions","context","ui","showFileManager","image","tunes","onChange","tuneName","tuneToggled","_data","render","caption","nodes","innerHTML","fillCaption","forEach","tune","name","value","setTune","fillImage","applyTune","Promise","resolve","then","blockId","blocks","getCurrentBlockIndex","stretchBlock","catch","err","console","error","icon","toolbox","title"],"mappings":"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","sourcesContent":["import { API } from \"@editorjs/editorjs\";\nimport Ui from \"./ui\";\nimport Tunes from \"./tunes\";\nimport svgs from \"./svgs\";\n\nconst defaultGetFileSrc = file => {\n if (typeof file === \"string\") {\n return file;\n }\n\n return file.src;\n};\n\nconst defaultOnSelectFile = file => {\n return file.src;\n};\n\nexport default class ImageTool {\n private api: API;\n private readOnly: boolean;\n private config: any;\n private tunes: Tunes;\n private ui: Ui;\n private _data: any;\n\n /**\n * Notify core that read-only mode is supported\n *\n * @returns {boolean}\n */\n static get isReadOnlySupported() {\n return true;\n }\n\n /**\n * Get Tool toolbox settings\n * icon - Tool icon's SVG\n * title - title to show in toolbox\n *\n * @returns {{icon: string, title: string}}\n */\n static get toolbox() {\n return {\n icon: svgs.toolbox,\n title: \"Image\"\n };\n }\n\n constructor({ data, config, api, readOnly }) {\n this.api = api;\n this.readOnly = readOnly;\n\n this.config = {\n getFileSrc: config.getFileSrc || defaultGetFileSrc,\n onSelectFile: config.onSelectFile || defaultOnSelectFile,\n actions: config.actions || [],\n context: config.context\n };\n\n /**\n * Module for working with UI\n */\n this.ui = new Ui({\n api,\n config: this.config,\n onSelectFile: () => {\n this.config.context.showFileManager(file => {\n this.image = this.config.onSelectFile(file);\n });\n },\n readOnly\n });\n\n /**\n * Module for working with tunes\n */\n this.tunes = new Tunes({\n api,\n actions: this.config.actions,\n onChange: tuneName => this.tuneToggled(tuneName)\n });\n\n /**\n * Set saved state\n */\n this._data = {};\n this.data = data;\n }\n\n /**\n * Renders Block content\n *\n * @public\n *\n * @returns {HTMLDivElement}\n */\n render() {\n return this.ui.render(this.data);\n }\n\n /**\n * Return Block data\n *\n * @public\n *\n * @returns {ImageToolData}\n */\n save() {\n const caption = this.ui.nodes.caption;\n\n this._data.caption = caption.innerHTML;\n\n return this.data;\n }\n\n /**\n * Makes buttons with tunes: stretch image\n *\n * @public\n *\n * @returns {Element}\n */\n renderSettings() {\n return this.tunes.render(this.data);\n }\n\n /**\n * Stores all Tool's data\n *\n * @private\n *\n * @param {ImageToolData} data - data in Image Tool format\n */\n set data(data) {\n this.image = data.file;\n\n this._data.caption = data.caption || \"\";\n this.ui.fillCaption(this._data.caption);\n\n Tunes.tunes.forEach(({ name: tune }) => {\n const value =\n typeof data[tune] !== \"undefined\"\n ? data[tune] === true || data[tune] === \"true\"\n : false;\n\n this.setTune(tune, value);\n });\n }\n\n /**\n * Return Tool data\n *\n * @private\n *\n * @returns {ImageToolData}\n */\n get data() {\n return this._data;\n }\n\n /**\n * Set new image file\n *\n * @private\n *\n * @param {object} file - uploaded file data\n */\n set image(file) {\n this._data.file = file || {};\n\n if (file) {\n this.ui.fillImage(this.config.getFileSrc(file));\n }\n }\n\n /**\n * Callback fired when Block Tune is activated\n *\n * @private\n *\n * @param {string} tuneName - tune that has been clicked\n * @returns {void}\n */\n tuneToggled(tuneName) {\n // inverse tune state\n this.setTune(tuneName, !this._data[tuneName]);\n }\n\n /**\n * Set one tune\n *\n * @param {string} tuneName - {@link Tunes.tunes}\n * @param {boolean} value - tune state\n * @returns {void}\n */\n setTune(tuneName, value) {\n this._data[tuneName] = value;\n\n this.ui.applyTune(tuneName, value);\n\n if (tuneName === \"stretched\") {\n /**\n * Wait until the API is ready\n */\n Promise.resolve()\n .then(() => {\n const blockId = this.api.blocks.getCurrentBlockIndex();\n\n this.api.blocks.stretchBlock(blockId, value);\n })\n .catch(err => {\n console.error(err);\n });\n }\n }\n}\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/RichTextEditor/tools/image/svgs.ts"],"names":["buttonIcon","stretched","toolbox"],"mappings":"AAAA,eAAe;AACXA,EAAAA,UAAU,8ZADC;AAEXC,EAAAA,SAAS,sZAFE;AAGXC,EAAAA,OAAO;AAHI,CAAf","sourcesContent":["export default {\n buttonIcon: `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.15 13.628A7.749 7.749 0 0 0 10 17.75a7.74 7.74 0 0 0 6.305-3.242l-2.387-2.127-2.765 2.244-4.389-4.496-3.614 3.5zm-.787-2.303l4.446-4.371 4.52 4.63 2.534-2.057 3.533 2.797c.23-.734.354-1.514.354-2.324a7.75 7.75 0 1 0-15.387 1.325zM10 20C4.477 20 0 15.523 0 10S4.477 0 10 0s10 4.477 10 10-4.477 10-10 10z\"/>`,\n stretched: `<svg width=\"17\" height=\"10\" viewBox=\"0 0 17 10\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M13.568 5.925H4.056l1.703 1.703a1.125 1.125 0 0 1-1.59 1.591L.962 6.014A1.069 1.069 0 0 1 .588 4.26L4.38.469a1.069 1.069 0 0 1 1.512 1.511L4.084 3.787h9.606l-1.85-1.85a1.069 1.069 0 1 1 1.512-1.51l3.792 3.791a1.069 1.069 0 0 1-.475 1.788L13.514 9.16a1.125 1.125 0 0 1-1.59-1.591l1.644-1.644z\"/></svg>`,\n toolbox: `<svg width=\"17\" height=\"15\" viewBox=\"0 0 336 276\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M291 150.242V79c0-18.778-15.222-34-34-34H79c-18.778 0-34 15.222-34 34v42.264l67.179-44.192 80.398 71.614 56.686-29.14L291 150.242zm-.345 51.622l-42.3-30.246-56.3 29.884-80.773-66.925L45 174.187V197c0 18.778 15.222 34 34 34h178c17.126 0 31.295-12.663 33.655-29.136zM79 0h178c43.63 0 79 35.37 79 79v118c0 43.63-35.37 79-79 79H79c-43.63 0-79-35.37-79-79V79C0 35.37 35.37 0 79 0z\"/></svg>`\n};\n"],"file":"svgs.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/RichTextEditor/tools/image/tunes.ts"],"names":["make","svgs","Tunes","api","actions","onChange","buttons","wrapper","buttonBase","styles","settingsButton","button","buttonActive","settingsButtonActive","toolData","CSS","tunes","concat","forEach","tune","title","i18n","t","el","innerHTML","icon","addEventListener","tuneClicked","name","action","dataset","classList","toggle","push","tooltip","onHover","placement","appendChild","tuneName","customFunction","find","contains","stretched"],"mappings":"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","sourcesContent":["import { API } from \"@editorjs/editorjs\";\nimport { make } from \"./ui\";\nimport svgs from \"./svgs\";\n\ntype Tune = { name: string; icon: string; title: string; action?: Function };\n\n/**\n * Working with Block Tunes\n */\nexport default class Tunes {\n private api: API;\n private actions: any;\n private onChange: Function;\n private buttons: Array<HTMLElement>;\n /**\n * @param {object} tune - image tool Tunes managers\n * @param {object} tune.api - Editor API\n * @param {object} tune.actions - list of user defined tunes\n * @param {Function} tune.onChange - tune toggling callback\n */\n constructor({ api, actions, onChange }) {\n this.api = api;\n this.actions = actions;\n this.onChange = onChange;\n this.buttons = [];\n }\n\n /**\n * Available Image tunes\n *\n * @returns {{name: string, icon: string, title: string}[]}\n */\n static get tunes(): Tune[] {\n return [\n {\n name: \"stretched\",\n icon: svgs.stretched,\n title: \"Stretch image\"\n }\n ];\n }\n\n /**\n * Styles\n *\n * @returns {{wrapper: string, buttonBase: *, button: string, buttonActive: *}}\n */\n get CSS() {\n return {\n wrapper: \"\",\n buttonBase: this.api.styles.settingsButton,\n button: \"image-tool__tune\",\n buttonActive: this.api.styles.settingsButtonActive\n };\n }\n\n /**\n * Makes buttons with tunes: stretch image\n *\n * @param {ImageToolData} toolData - generate Elements of tunes\n * @returns {Element}\n */\n render(toolData) {\n const wrapper = make(\"div\", this.CSS.wrapper);\n\n this.buttons = [];\n\n const tunes = Tunes.tunes.concat(this.actions);\n\n tunes.forEach(tune => {\n const title = this.api.i18n.t(tune.title);\n const el = make(\"div\", [this.CSS.buttonBase, this.CSS.button], {\n innerHTML: tune.icon,\n title\n });\n\n el.addEventListener(\"click\", () => {\n this.tuneClicked(tune.name, tune.action);\n });\n\n el.dataset.tune = tune.name;\n el.classList.toggle(this.CSS.buttonActive, toolData[tune.name]);\n\n this.buttons.push(el);\n\n this.api.tooltip.onHover(el, title, {\n placement: \"top\"\n });\n\n wrapper.appendChild(el);\n });\n\n return wrapper;\n }\n\n /**\n * Clicks to one of the tunes\n *\n * @param {string} tuneName - clicked tune name\n * @param {Function} customFunction - function to execute on click\n */\n tuneClicked(tuneName, customFunction) {\n if (typeof customFunction === \"function\") {\n if (!customFunction(tuneName)) {\n return false;\n }\n }\n\n const button = this.buttons.find(el => el.dataset.tune === tuneName);\n\n button.classList.toggle(\n this.CSS.buttonActive,\n !button.classList.contains(this.CSS.buttonActive)\n );\n\n this.onChange(tuneName);\n }\n}\n"],"file":"tunes.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/RichTextEditor/tools/image/ui.ts"],"names":["Ui","api","config","onSelectFile","readOnly","nodes","wrapper","make","CSS","baseClass","imageContainer","fileButton","createFileButton","imageEl","undefined","caption","input","contentEditable","dataset","placeholder","captionPlaceholder","appendChild","styles","block","button","toolData","file","Object","keys","length","toggleStatus","status","EMPTY","innerHTML","i18n","t","addEventListener","url","tag","test","attributes","src","eventName","autoplay","loop","muted","playsinline","FILLED","text","statusType","prototype","hasOwnProperty","call","classList","toggle","tuneName","tagName","classNames","el","document","createElement","Array","isArray","add","attrName"],"mappings":"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","sourcesContent":["import { API } from \"@editorjs/editorjs\";\n\n/**\n * Class for working with UI:\n * - rendering base structure\n * - show/hide preview\n * - apply tune view\n */\nexport default class Ui {\n private api: API;\n private config: any;\n private readOnly: boolean;\n private onSelectFile: Function;\n\n nodes: {\n wrapper: HTMLElement;\n imageContainer: HTMLElement;\n fileButton: HTMLElement;\n imageEl: HTMLElement;\n caption: HTMLElement;\n };\n\n /**\n * @param {object} ui - image tool Ui module\n * @param {object} ui.api - Editor.js API\n * @param {ImageConfig} ui.config - user config\n * @param {Function} ui.onSelectFile - callback for clicks on Select file button\n * @param {boolean} ui.readOnly - read-only mode flag\n */\n constructor({ api, config, onSelectFile, readOnly }) {\n this.api = api;\n this.config = config;\n this.onSelectFile = onSelectFile;\n this.readOnly = readOnly;\n this.nodes = {\n wrapper: make(\"div\", [this.CSS.baseClass, this.CSS.wrapper]),\n imageContainer: make(\"div\", [this.CSS.imageContainer]),\n fileButton: this.createFileButton(),\n imageEl: undefined,\n caption: make(\"div\", [this.CSS.input, this.CSS.caption], {\n contentEditable: !this.readOnly\n })\n };\n\n /**\n * Create base structure\n * <wrapper>\n * <image-container/>\n * <caption />\n * </wrapper>\n */\n this.nodes.caption.dataset.placeholder = this.config.captionPlaceholder;\n this.nodes.wrapper.appendChild(this.nodes.imageContainer);\n this.nodes.wrapper.appendChild(this.nodes.caption);\n this.nodes.wrapper.appendChild(this.nodes.fileButton);\n }\n\n /**\n * CSS classes\n *\n * @returns {object}\n */\n get CSS() {\n return {\n baseClass: this.api.styles.block,\n input: this.api.styles.input,\n button: this.api.styles.button,\n\n /**\n * Tool's classes\n */\n wrapper: \"image-tool\",\n imageContainer: \"image-tool__image\",\n imageEl: \"image-tool__image-picture\",\n caption: \"image-tool__caption\"\n };\n }\n\n /**\n * Ui statuses:\n * - empty\n * - filled\n *\n * @returns {{EMPTY: string, UPLOADING: string, FILLED: string}}\n */\n static get status() {\n return {\n EMPTY: \"empty\",\n FILLED: \"filled\"\n };\n }\n\n /**\n * Renders tool UI\n *\n * @param {ImageToolData} toolData - saved tool data\n * @returns {Element}\n */\n render(toolData) {\n if (!toolData.file || Object.keys(toolData.file).length === 0) {\n this.toggleStatus(Ui.status.EMPTY);\n }\n\n return this.nodes.wrapper;\n }\n\n /**\n * Creates upload-file button\n *\n * @returns {Element}\n */\n createFileButton() {\n const button = make(\"div\", [this.CSS.button]);\n\n button.innerHTML = this.api.i18n.t(\"Select an Image\");\n\n button.addEventListener(\"click\", () => {\n this.onSelectFile();\n });\n\n return button;\n }\n\n /**\n * Shows an image\n *\n * @param {string} url - image source\n * @returns {void}\n */\n fillImage(url) {\n /**\n * Check for a source extension to compose element correctly: video tag for mp4, img — for others\n */\n const tag = /\\.mp4$/.test(url) ? \"VIDEO\" : \"IMG\";\n\n const attributes: any = {\n src: url\n };\n\n /**\n * We use eventName variable because IMG and VIDEO tags have different event to be called on source load\n * - IMG: load\n * - VIDEO: loadeddata\n *\n * @type {string}\n */\n let eventName = \"load\";\n\n /**\n * Update attributes and eventName if source is a mp4 video\n */\n if (tag === \"VIDEO\") {\n /**\n * Add attributes for playing muted mp4 as a gif\n *\n * @type {boolean}\n */\n attributes.autoplay = true;\n attributes.loop = true;\n attributes.muted = true;\n attributes.playsinline = true;\n\n /**\n * Change event to be listened\n *\n * @type {string}\n */\n eventName = \"loadeddata\";\n }\n\n /**\n * Compose tag with defined attributes\n *\n * @type {Element}\n */\n this.nodes.imageEl = make(tag, this.CSS.imageEl, attributes);\n\n /**\n * Add load event listener\n */\n this.nodes.imageEl.addEventListener(eventName, () => {\n this.toggleStatus(Ui.status.FILLED);\n });\n\n this.nodes.imageContainer.appendChild(this.nodes.imageEl);\n }\n\n /**\n * Shows caption input\n *\n * @param {string} text - caption text\n * @returns {void}\n */\n fillCaption(text) {\n if (this.nodes.caption) {\n this.nodes.caption.innerHTML = text;\n }\n }\n\n /**\n * Changes UI status\n *\n * @param {string} status - see {@link Ui.status} constants\n * @returns {void}\n */\n toggleStatus(status) {\n for (const statusType in Ui.status) {\n if (Object.prototype.hasOwnProperty.call(Ui.status, statusType)) {\n this.nodes.wrapper.classList.toggle(\n `${this.CSS.wrapper}--${Ui.status[statusType]}`,\n status === Ui.status[statusType]\n );\n }\n }\n }\n\n /**\n * Apply visual representation of activated tune\n *\n * @param {string} tuneName - one of available tunes {@link Tunes.tunes}\n * @param {boolean} status - true for enable, false for disable\n * @returns {void}\n */\n applyTune(tuneName, status) {\n this.nodes.wrapper.classList.toggle(`${this.CSS.wrapper}--${tuneName}`, status);\n }\n}\n\n/**\n * Helper for making Elements with attributes\n *\n * @param {string} tagName - new Element tag name\n * @param {Array|string} classNames - list or name of CSS class\n * @param {object} attributes - any attributes\n * @returns {Element}\n */\nexport const make = function make(tagName, classNames = null, attributes = {}) {\n const el = document.createElement(tagName);\n\n if (Array.isArray(classNames)) {\n el.classList.add(...classNames);\n } else if (classNames) {\n el.classList.add(classNames);\n }\n\n for (const attrName in attributes) {\n el[attrName] = attributes[attrName];\n }\n\n return el;\n};\n"],"file":"ui.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/RichTextEditor/tools/paragraph/index.ts"],"names":["ALIGNMENTS","TextAlign","ALIGNMENT_ICONS","Paragraph","data","config","api","readOnly","typography","_CSS","block","styles","settingsButton","settingsButtonActive","wrapper","onKeyUp","bind","_placeholder","placeholder","DEFAULT_PLACEHOLDER","_data","normalizeData","_element","drawView","_preserveBlank","preserveBlank","undefined","settingsButtons","alignments","text","innerHTML","forEach","alignment","name","textAlign","classList","add","remove","className","split","find","START","svg","start","e","code","textContent","div","document","createElement","contentEditable","dataset","i18n","t","addEventListener","holder","selectTypeButton","currentAlignment","setAlignment","appendChild","push","typographyForParagraph","Object","values","filter","item","component","input","option","Option","label","onclick","event","target","value","setTypographyClass","savedData","trim","toolsContent","getTextAlign","includes","detail","button","toggle","newData","export","import","br","tags","icon","title"],"mappings":";;;;;AACA,SAAoBA,UAApB,EAAgCC,SAAhC,EAA2CC,eAA3C;AAEA;AACA;AACA;AACA;AACA;;IA8BMC,S;AAaF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI,2BAA4D;AAAA,QAA9CC,IAA8C,QAA9CA,IAA8C;AAAA,QAAxCC,MAAwC,QAAxCA,MAAwC;AAAA,QAAhCC,GAAgC,QAAhCA,GAAgC;AAAA,QAA3BC,QAA2B,QAA3BA,QAA2B;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AACxD,SAAKD,GAAL,GAAWA,GAAX;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,UAAL,GAAkBH,MAAM,CAACG,UAAP,IAAqB,IAAvC;AACA,SAAKC,IAAL,GAAY;AACRC,MAAAA,KAAK,EAAE,KAAKJ,GAAL,CAASK,MAAT,CAAgBD,KADf;AAERE,MAAAA,cAAc,EAAE,KAAKN,GAAL,CAASK,MAAT,CAAgBC,cAFxB;AAGRC,MAAAA,oBAAoB,EAAE,KAAKP,GAAL,CAASK,MAAT,CAAgBE,oBAH9B;AAIRC,MAAAA,OAAO,EAAE;AAJD,KAAZ;;AAOA,QAAI,CAAC,KAAKP,QAAV,EAAoB;AAChB,WAAKQ,OAAL,GAAe,KAAKA,OAAL,CAAaC,IAAb,CAAkB,IAAlB,CAAf;AACH;AAED;AACR;AACA;AACA;;;AACQ,SAAKC,YAAL,GAAoBZ,MAAM,CAACa,WAAP,GAAqBb,MAAM,CAACa,WAA5B,GAA0Cf,SAAS,CAACgB,mBAAxE;AACA,SAAKC,KAAL,GAAa,KAAKC,aAAL,CAAmBjB,IAAnB,CAAb;AACA,SAAKkB,QAAL,GAAgB,KAAKC,QAAL,EAAhB;AACA,SAAKC,cAAL,GAAsBnB,MAAM,CAACoB,aAAP,KAAyBC,SAAzB,GAAqCrB,MAAM,CAACoB,aAA5C,GAA4D,KAAlF;AACA,SAAKE,eAAL,GAAuB,EAAvB;AACA,SAAKC,UAAL,GAAkB5B,UAAlB;AAEA,SAAKI,IAAL,GAAY,KAAKiB,aAAL,CAAmBjB,IAAnB,CAAZ;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;;;AAmCI;AACJ;AACA;AACA;AACA;AACI,mBAAW;AACP,UAAMyB,IAAI,GAAG,KAAKP,QAAL,CAAcQ,SAA3B,CADO,CAGP;;AAEA,6CACO,KAAKV,KADZ;AAEIS,QAAAA,IAAI,EAAJA;AAFJ;AAIH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;SACI,aAASzB,IAAT,EAAe;AAAA;;AACX,WAAKgB,KAAL,GAAahB,IAAI,IAAI,EAArB;AAEA,WAAKkB,QAAL,CAAcQ,SAAd,GAA0B,KAAKV,KAAL,CAAWS,IAAX,IAAmB,EAA7C;AAEA;AACR;AACA;;AACQ,WAAKD,UAAL,CAAgBG,OAAhB,CAAwB,UAAAC,SAAS,EAAI;AACjC,YAAIA,SAAS,CAACC,IAAV,KAAmB,KAAI,CAACb,KAAL,CAAWc,SAAlC,EAA6C;AACzC,UAAA,KAAI,CAACZ,QAAL,CAAca,SAAd,CAAwBC,GAAxB,2BAA+CJ,SAAS,CAACC,IAAzD;AACH,SAFD,MAEO;AACH,UAAA,KAAI,CAACX,QAAL,CAAca,SAAd,CAAwBE,MAAxB,2BAAkDL,SAAS,CAACC,IAA5D;AACH;AACJ,OAND;AAQA;AACR;AACA;;AACQ,UAAI,KAAKb,KAAL,CAAWkB,SAAf,EAA0B;AAAA;;AACtB,sCAAKhB,QAAL,CAAca,SAAd,EAAwBC,GAAxB,iDAA+B,KAAKhB,KAAL,CAAWkB,SAAX,CAAqBC,KAArB,CAA2B,GAA3B,CAA/B;AACH;AACJ;AAED;AACJ;AACA;AACA;AACA;AACA;;;;;AAsBI;AACJ;AACA;AACA;AACA;AACI,mBAAuB;AAAA;;AACnB,UAAIP,SAAS,GAAG,KAAKJ,UAAL,CAAgBY,IAAhB,CAAqB,UAAAR,SAAS;AAAA,eAAIA,SAAS,CAACC,IAAV,KAAmB,MAAI,CAACb,KAAL,CAAWc,SAAlC;AAAA,OAA9B,CAAhB;;AAEA,UAAI,CAACF,SAAL,EAAgB;AACZA,QAAAA,SAAS,GAAG;AAAEC,UAAAA,IAAI,EAAEhC,SAAS,CAACwC,KAAlB;AAAyBC,UAAAA,GAAG,EAAExC,eAAe,CAACyC;AAA9C,SAAZ;AACH;;AAED,aAAOX,SAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,iBAAQY,CAAR,EAAW;AACP,UAAIA,CAAC,CAACC,IAAF,KAAW,WAAX,IAA0BD,CAAC,CAACC,IAAF,KAAW,QAAzC,EAAmD;AAC/C;AACH;;AAED,UAAQC,WAAR,GAAwB,KAAKxB,QAA7B,CAAQwB,WAAR;;AAEA,UAAIA,WAAW,KAAK,EAApB,EAAwB;AACpB,aAAKxB,QAAL,CAAcQ,SAAd,GAA0B,EAA1B;AACH;AACJ;AAED;AACJ;AACA;AACA;AACA;;;;WACI,oBAAW;AACP,UAAMiB,GAAG,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAZ;AACAF,MAAAA,GAAG,CAACZ,SAAJ,CAAcC,GAAd,CAAkB,KAAK3B,IAAL,CAAUK,OAA5B,EAAqC,KAAKL,IAAL,CAAUC,KAA/C,EAFO,CAGP;;AACA,UAAI,KAAKU,KAAL,CAAWkB,SAAf,EAA0B;AACtBS,QAAAA,GAAG,CAACZ,SAAJ,CAAcC,GAAd,CAAkB,KAAKhB,KAAL,CAAWkB,SAA7B;AACH;;AACDS,MAAAA,GAAG,CAACG,eAAJ,GAAsB,OAAtB;AACAH,MAAAA,GAAG,CAACI,OAAJ,CAAYjC,WAAZ,GAA0B,KAAKZ,GAAL,CAAS8C,IAAT,CAAcC,CAAd,CAAgB,KAAKpC,YAArB,CAA1B;;AAEA,UAAI,CAAC,KAAKV,QAAV,EAAoB;AAChBwC,QAAAA,GAAG,CAACG,eAAJ,GAAsB,MAAtB;AACAH,QAAAA,GAAG,CAACO,gBAAJ,CAAqB,OAArB,EAA8B,KAAKvC,OAAnC;AACH;;AAED,aAAOgC,GAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,kBAAS;AACL,aAAO,KAAKzB,QAAZ;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,0BAAiB;AAAA;;AACb,UAAMiC,MAAM,GAAGP,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAf,CADa,CAGb;;AACA,WAAKrB,UAAL,CAAgBG,OAAhB,CAAwB,UAAAC,SAAS,EAAI;AACjC,YAAMwB,gBAAgB,GAAGR,QAAQ,CAACC,aAAT,CAAuB,MAAvB,CAAzB;AAEAO,QAAAA,gBAAgB,CAACrB,SAAjB,CAA2BC,GAA3B,CAA+B,MAAI,CAAC3B,IAAL,CAAUG,cAAzC;AAEA;AACZ;AACA;;AACY,YAAI,MAAI,CAAC6C,gBAAL,CAAsBxB,IAAtB,KAA+BD,SAAS,CAACC,IAA7C,EAAmD;AAC/CuB,UAAAA,gBAAgB,CAACrB,SAAjB,CAA2BC,GAA3B,CAA+B,MAAI,CAAC3B,IAAL,CAAUI,oBAAzC;AACH;AAED;AACZ;AACA;;;AACY2C,QAAAA,gBAAgB,CAAC1B,SAAjB,GAA6BE,SAAS,CAACU,GAAvC;AAEA;AACZ;AACA;;AACYc,QAAAA,gBAAgB,CAACL,OAAjB,CAAyBjB,SAAzB,GAAqCF,SAAS,CAACC,IAA/C;AAEA;AACZ;AACA;;AACYuB,QAAAA,gBAAgB,CAACF,gBAAjB,CAAkC,OAAlC,EAA2C,YAAM;AAC7C,UAAA,MAAI,CAACI,YAAL,CAAkB1B,SAAlB;AACH,SAFD;AAIA;AACZ;AACA;;AACYuB,QAAAA,MAAM,CAACI,WAAP,CAAmBH,gBAAnB;AAEA;AACZ;AACA;;AACY,QAAA,MAAI,CAAC7B,eAAL,CAAqBiC,IAArB,CAA0BJ,gBAA1B;AACH,OAtCD,EAJa,CA4Cb;;AACA,UAAI,KAAKhD,UAAT,EAAqB;AACjB,YAAMqD,sBAAsB,GAAGC,MAAM,CAACC,MAAP,CAAc,KAAKvD,UAAnB,EAA+BwD,MAA/B,CAC3B,UAAAC,IAAI;AAAA,iBAAIA,IAAI,CAACC,SAAL,KAAmB,GAAvB;AAAA,SADuB,CAA/B;AAIA,YAAMV,gBAAgB,GAAGR,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAzB,CALiB,CAMjB;;AACAO,QAAAA,gBAAgB,CAACrB,SAAjB,CAA2BC,GAA3B,CAA+B,KAAK9B,GAAL,CAASK,MAAT,CAAgBwD,KAA/C,EAPiB,CAQjB;;AACAN,QAAAA,sBAAsB,CAAC9B,OAAvB,CAA+B,UAAAkC,IAAI,EAAI;AACnC,cAAMG,MAAM,GAAG,IAAIC,MAAJ,CAAWJ,IAAI,CAACK,KAAhB,EAAuBL,IAAI,CAAC3B,SAA5B,CAAf;AAEAkB,UAAAA,gBAAgB,CAACG,WAAjB,CAA6BS,MAA7B;AACH,SAJD,EATiB,CAcjB;;AACAZ,QAAAA,gBAAgB,CAACe,OAAjB,GAA2B,UAAAC,KAAK,EAAI;AAChC,sBAAkBA,KAAK,CAACC,MAAxB;AAAA,cAAQC,KAAR,SAAQA,KAAR;;AACA,UAAA,MAAI,CAACC,kBAAL,CAAwBD,KAAxB;AACH,SAHD;AAKA;AACZ;AACA;;;AACYnB,QAAAA,MAAM,CAACI,WAAP,CAAmBH,gBAAnB;AAEA;AACZ;AACA;;AACY,aAAK7B,eAAL,CAAqBiC,IAArB,CAA0BJ,gBAA1B;AACH;;AAED,aAAOD,MAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,eAAMnD,IAAN,EAAY;AACR,WAAKA,IAAL,GAAY;AACRyB,QAAAA,IAAI,EAAE,KAAKzB,IAAL,CAAUyB,IAAV,GAAiBzB,IAAI,CAACyB;AADpB,OAAZ;AAGH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,kBAAS+C,SAAT,EAAoB;AAChB,aAAO,EAAEA,SAAS,CAAC/C,IAAV,CAAegD,IAAf,OAA0B,EAA1B,IAAgC,CAAC,KAAKrD,cAAxC,CAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,cAAKsD,YAAL,EAAmB;AACf,aAAO;AACHjD,QAAAA,IAAI,EAAEiD,YAAY,CAAChD,SADhB;AAEHI,QAAAA,SAAS,EAAE,KAAK6C,YAAL,CAAkBD,YAAY,CAACxC,SAA/B,CAFR;AAGHA,QAAAA,SAAS,EAAE,KAAKlC,IAAL,CAAUkC;AAHlB,OAAP;AAKH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,sBAAaA,SAAb,EAAwB;AACpB,UAAIJ,SAAS,GAAGjC,SAAS,CAACwC,KAA1B,CADoB,CAEpB;;AACA,WAAKb,UAAL,CAAgBG,OAAhB,CAAwB,UAAAC,SAAS,EAAI;AACjC,YAAIM,SAAS,CAAC0C,QAAV,2BAAsChD,SAAS,CAACC,IAAhD,EAAJ,EAA6D;AACzDC,UAAAA,SAAS,GAAGF,SAAS,CAACC,IAAtB;AACH;AACJ,OAJD;AAKA,aAAOC,SAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,iBAAQsC,KAAR,EAAe;AACX,UAAMpE,IAAI,GAAG;AACTyB,QAAAA,IAAI,EAAE2C,KAAK,CAACS,MAAN,CAAa7E,IAAb,CAAkB0B;AADf,OAAb;AAIA,WAAK1B,IAAL,GAAYA,IAAZ;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,sBAAa4B,SAAb,EAAwB;AAAA;;AACpB,WAAK5B,IAAL,GAAY;AACR8B,QAAAA,SAAS,EAAEF,SAAS,CAACC,IADb;AAERJ,QAAAA,IAAI,EAAE,KAAKzB,IAAL,CAAUyB;AAFR,OAAZ;AAKA;AACR;AACA;;AACQ,WAAKF,eAAL,CAAqBI,OAArB,CAA6B,UAAAmD,MAAM,EAAI;AACnCA,QAAAA,MAAM,CAAC/C,SAAP,CAAiBgD,MAAjB,CACI,MAAI,CAAC1E,IAAL,CAAUI,oBADd,EAEIqE,MAAM,CAAC/B,OAAP,CAAejB,SAAf,KAA6BF,SAAS,CAACC,IAF3C;AAIH,OALD;AAMH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,4BAAmBK,SAAnB,EAAsC;AAClC,WAAKlC,IAAL,GAAY;AACR8B,QAAAA,SAAS,EAAE,KAAK9B,IAAL,CAAU8B,SADb;AAERL,QAAAA,IAAI,EAAE,KAAKzB,IAAL,CAAUyB,IAFR;AAGRS,QAAAA,SAAS,EAAEA;AAHH,OAAZ;AAKH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,uBAAclC,IAAd,EAAoB;AAChB,UAAMgF,OAAY,GAAG,EAArB;;AAEA,UAAI,OAAOhF,IAAP,KAAgB,QAApB,EAA8B;AAC1BA,QAAAA,IAAI,GAAG,EAAP;AACH;;AAEDgF,MAAAA,OAAO,CAACvD,IAAR,GAAezB,IAAI,CAACyB,IAAL,IAAa,EAA5B;AACAuD,MAAAA,OAAO,CAAClD,SAAR,GAAoB9B,IAAI,CAAC8B,SAAL,IAAkBjC,SAAS,CAACwC,KAAhD;AACA2C,MAAAA,OAAO,CAAC9C,SAAR,GAAoBlC,IAAI,CAACkC,SAAL,IAAkB,EAAtC;AAEA,aAAO8C,OAAP;AACH;;;SA7XD,eAAiC;AAC7B,aAAO,EAAP;AACH;AAED;AACJ;AACA;;;;SACI,eAA8B;AAC1B,aAAO;AACHC,QAAAA,MAAM,EAAE,MADL;AACa;AAChBC,QAAAA,MAAM,EAAE,MAFL,CAEY;;AAFZ,OAAP;AAIH;AAED;AACJ;AACA;;;;SACI,eAAsB;AAClB,aAAO;AACHzD,QAAAA,IAAI,EAAE;AACF0D,UAAAA,EAAE,EAAE;AADF;AADH,OAAP;AAKH;AAED;AACJ;AACA;AACA;AACA;;;;SACI,eAAiC;AAC7B,aAAO,IAAP;AACH;;;SAwDD,eAAyB;AACrB,aAAO;AACHC,QAAAA,IAAI,EAAE,CAAC,GAAD;AADH,OAAP;AAGH;AAED;AACJ;AACA;AACA;AACA;;;;SACI,eAAqB;AACjB,aAAO;AACHC,QAAAA,IAAI,EACA,gGACA,8bADA,GAEA,QAJD;AAKHC,QAAAA,KAAK,EAAE;AALJ,OAAP;AAOH;;;;;;AAqRL,eAAevF,SAAf","sourcesContent":["import { API } from \"@editorjs/editorjs\";\nimport { Alignment, ALIGNMENTS, TextAlign, ALIGNMENT_ICONS } from \"../utils\";\n\n/**\n * @typedef {object} ParagraphConfig\n * @property {string} placeholder - placeholder for the empty paragraph\n * @property {boolean} preserveBlank - Whether or not to keep blank paragraphs when saving editor data`\n */\ntype ParagraphConfig = {\n placeholder: string;\n preserveBlank: boolean;\n typography?: Typography;\n};\n/**\n * @typedef {Object} ParagraphData\n * @description Tool's input and output data format\n * @property {String} text — Paragraph's content. Can include HTML tags: <a><b><i>\n */\ntype ParagraphData = {\n text: string;\n textAlign: TextAlign;\n};\n\ntype Typography = {\n [key: string]: {\n label: string;\n component: string;\n className: string;\n };\n};\n\ninterface ParagraphArgs {\n data: ParagraphData;\n config: ParagraphConfig;\n api: any;\n readOnly: boolean;\n}\nclass Paragraph {\n api: API;\n readOnly: boolean;\n _CSS: any;\n _settings: any;\n _data: any;\n _element: any;\n _placeholder: string;\n _preserveBlank: boolean;\n alignments: Alignment[];\n settingsButtons: HTMLElement[];\n typography: Typography;\n\n /**\n * Render plugin`s main Element and fill it with saved data\n *\n * @param {object} params - constructor params\n * @param {ParagraphData} params.data - previously saved data\n * @param {ParagraphConfig} params.config - user config for Tool\n * @param {object} params.api - editor.js api\n * @param {boolean} readOnly - read only mode flag\n */\n constructor({ data, config, api, readOnly }: ParagraphArgs) {\n this.api = api;\n this.readOnly = readOnly;\n this.typography = config.typography || null;\n this._CSS = {\n block: this.api.styles.block,\n settingsButton: this.api.styles.settingsButton,\n settingsButtonActive: this.api.styles.settingsButtonActive,\n wrapper: \"ce-paragraph\"\n };\n\n if (!this.readOnly) {\n this.onKeyUp = this.onKeyUp.bind(this);\n }\n\n /**\n * Placeholder for paragraph if it is first Block\n * @type {string}\n */\n this._placeholder = config.placeholder ? config.placeholder : Paragraph.DEFAULT_PLACEHOLDER;\n this._data = this.normalizeData(data);\n this._element = this.drawView();\n this._preserveBlank = config.preserveBlank !== undefined ? config.preserveBlank : false;\n this.settingsButtons = [];\n this.alignments = ALIGNMENTS;\n\n this.data = this.normalizeData(data);\n }\n\n /**\n * Default placeholder for Paragraph Tool\n *\n * @return {string}\n * @constructor\n */\n static get DEFAULT_PLACEHOLDER() {\n return \"\";\n }\n\n /**\n * Enable Conversion Toolbar. Paragraph can be converted to/from other tools\n */\n static get conversionConfig() {\n return {\n export: \"text\", // to convert Paragraph to other block, use 'text' property of saved data\n import: \"text\" // to covert other block's exported string to Paragraph, fill 'text' property of tool data\n };\n }\n\n /**\n * Sanitizer rules\n */\n static get sanitize() {\n return {\n text: {\n br: true\n }\n };\n }\n\n /**\n * Returns true to notify the core that read-only mode is supported\n *\n * @return {boolean}\n */\n static get isReadOnlySupported() {\n return true;\n }\n\n /**\n * Get current Tools`s data\n * @returns {ParagraphData} Current data\n * @private\n */\n get data() {\n const text = this._element.innerHTML;\n\n // this._data.text = text;\n\n return {\n ...this._data,\n text\n };\n }\n\n /**\n * Store data in plugin:\n * - at the this._data property\n * - at the HTML\n *\n * @param {ParagraphData} data — data to set\n * @private\n */\n set data(data) {\n this._data = data || {};\n\n this._element.innerHTML = this._data.text || \"\";\n\n /**\n * Add Alignment class\n */\n this.alignments.forEach(alignment => {\n if (alignment.name === this._data.textAlign) {\n this._element.classList.add(`ce-header-text--${alignment.name}`);\n } else {\n this._element.classList.remove(`ce-header-text--${alignment.name}`);\n }\n });\n\n /**\n * Add Typography class\n */\n if (this._data.className) {\n this._element.classList.add(...this._data.className.split(\" \"));\n }\n }\n\n /**\n * Used by Editor paste handling API.\n * Provides configuration to handle P tags.\n *\n * @returns {{tags: string[]}}\n */\n static get pasteConfig() {\n return {\n tags: [\"P\"]\n };\n }\n\n /**\n * Icon and title for displaying at the Toolbox\n *\n * @return {{icon: string, title: string}}\n */\n static get toolbox() {\n return {\n icon:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0.2 -0.3 9 11.4\" width=\"12\" height=\"14\">\\n' +\n ' <path d=\"M0 2.77V.92A1 1 0 01.2.28C.35.1.56 0 .83 0h7.66c.28.01.48.1.63.28.14.17.21.38.21.64v1.85c0 .26-.08.48-.23.66-.15.17-.37.26-.66.26-.28 0-.5-.09-.64-.26a1 1 0 01-.21-.66V1.69H5.6v7.58h.5c.25 0 .45.08.6.23.17.16.25.35.25.6s-.08.45-.24.6a.87.87 0 01-.62.22H3.21a.87.87 0 01-.61-.22.78.78 0 01-.24-.6c0-.25.08-.44.24-.6a.85.85 0 01.61-.23h.5V1.7H1.73v1.08c0 .26-.08.48-.23.66-.15.17-.37.26-.66.26-.28 0-.5-.09-.64-.26A1 1 0 010 2.77z\"/>\\n' +\n \"</svg>\",\n title: \"Text\"\n };\n }\n\n /**\n * Get current alignment\n *\n * @returns {alignment}\n */\n get currentAlignment() {\n let alignment = this.alignments.find(alignment => alignment.name === this._data.textAlign);\n\n if (!alignment) {\n alignment = { name: TextAlign.START, svg: ALIGNMENT_ICONS.start };\n }\n\n return alignment;\n }\n\n /**\n * Check if text content is empty and set empty string to inner html.\n * We need this because some browsers (e.g. Safari) insert <br> into empty contentEditable elements\n *\n * @param {KeyboardEvent} e - key up event\n */\n onKeyUp(e) {\n if (e.code !== \"Backspace\" && e.code !== \"Delete\") {\n return;\n }\n\n const { textContent } = this._element;\n\n if (textContent === \"\") {\n this._element.innerHTML = \"\";\n }\n }\n\n /**\n * Create Tool's view\n * @return {HTMLElement}\n * @private\n */\n drawView() {\n const div = document.createElement(\"DIV\");\n div.classList.add(this._CSS.wrapper, this._CSS.block);\n // Add custom className to view.\n if (this._data.className) {\n div.classList.add(this._data.className);\n }\n div.contentEditable = \"false\";\n div.dataset.placeholder = this.api.i18n.t(this._placeholder);\n\n if (!this.readOnly) {\n div.contentEditable = \"true\";\n div.addEventListener(\"keyup\", this.onKeyUp);\n }\n\n return div;\n }\n\n /**\n * Return Tool's view\n *\n * @returns {HTMLDivElement}\n */\n render() {\n return this._element;\n }\n\n /**\n * Create Block's settings block\n *\n * @returns {HTMLElement}\n */\n renderSettings() {\n const holder = document.createElement(\"DIV\");\n\n // Add alignment selectors\n this.alignments.forEach(alignment => {\n const selectTypeButton = document.createElement(\"SPAN\");\n\n selectTypeButton.classList.add(this._CSS.settingsButton);\n\n /**\n * Highlight current level button\n */\n if (this.currentAlignment.name === alignment.name) {\n selectTypeButton.classList.add(this._CSS.settingsButtonActive);\n }\n\n /**\n * Add SVG icon\n */\n selectTypeButton.innerHTML = alignment.svg;\n\n /**\n * Save alignment to its button\n */\n selectTypeButton.dataset.textAlign = alignment.name;\n\n /**\n * Set up click handler\n */\n selectTypeButton.addEventListener(\"click\", () => {\n this.setAlignment(alignment);\n });\n\n /**\n * Append settings button to holder\n */\n holder.appendChild(selectTypeButton);\n\n /**\n * Save settings buttons\n */\n this.settingsButtons.push(selectTypeButton);\n });\n\n // Add `Typography` selector\n if (this.typography) {\n const typographyForParagraph = Object.values(this.typography).filter(\n item => item.component === \"p\"\n );\n\n const selectTypeButton = document.createElement(\"SELECT\") as HTMLSelectElement;\n // Add editor's default input style\n selectTypeButton.classList.add(this.api.styles.input);\n // Add typography options\n typographyForParagraph.forEach(item => {\n const option = new Option(item.label, item.className);\n\n selectTypeButton.appendChild(option);\n });\n // Add \"onclick\" handler\n selectTypeButton.onclick = event => {\n const { value } = event.target as HTMLSelectElement;\n this.setTypographyClass(value);\n };\n\n /**\n * Append settings button to holder\n */\n holder.appendChild(selectTypeButton);\n\n /**\n * Save settings buttons\n */\n this.settingsButtons.push(selectTypeButton);\n }\n\n return holder;\n }\n\n /**\n * Method that specified how to merge two Text blocks.\n * Called by Editor.js by backspace at the beginning of the Block\n * @param {ParagraphData} data\n * @public\n */\n merge(data) {\n this.data = {\n text: this.data.text + data.text\n };\n }\n\n /**\n * Validate Paragraph block data:\n * - check for emptiness\n *\n * @param {ParagraphData} savedData — data received after saving\n * @returns {boolean} false if saved data is not correct, otherwise true\n * @public\n */\n validate(savedData) {\n return !(savedData.text.trim() === \"\" && !this._preserveBlank);\n }\n\n /**\n * Extract Tool's data from the view\n * @param {HTMLDivElement} toolsContent - Paragraph tools rendered view\n * @returns {ParagraphData} - saved data\n * @public\n */\n save(toolsContent) {\n return {\n text: toolsContent.innerHTML,\n textAlign: this.getTextAlign(toolsContent.className),\n className: this.data.className\n };\n }\n\n /**\n * Extract textAlign from className\n *\n * @param {string} className - heading element className\n * @returns {TextAlign} textAlign\n */\n getTextAlign(className) {\n let textAlign = TextAlign.START;\n // Match className with alignment\n this.alignments.forEach(alignment => {\n if (className.includes(`ce-header-text--${alignment.name}`)) {\n textAlign = alignment.name;\n }\n });\n return textAlign;\n }\n\n /**\n * On paste callback fired from Editor.\n *\n * @param {PasteEvent} event - event with pasted data\n */\n onPaste(event) {\n const data = {\n text: event.detail.data.innerHTML\n };\n\n this.data = data;\n }\n\n /**\n * Callback for Block's settings buttons\n *\n * @param {number} alignment - level to set\n */\n setAlignment(alignment) {\n this.data = {\n textAlign: alignment.name,\n text: this.data.text\n };\n\n /**\n * Highlight button by selected level\n */\n this.settingsButtons.forEach(button => {\n button.classList.toggle(\n this._CSS.settingsButtonActive,\n button.dataset.textAlign === alignment.name\n );\n });\n }\n\n /**\n * Callback for Block's settings buttons\n *\n * @param {string} className - name of typography class\n */\n setTypographyClass(className: string) {\n this.data = {\n textAlign: this.data.textAlign,\n text: this.data.text,\n className: className\n };\n }\n\n /**\n * Normalize input data\n *\n * @param {HeaderData} data - saved data to process\n *\n * @returns {HeaderData}\n * @private\n */\n normalizeData(data) {\n const newData: any = {};\n\n if (typeof data !== \"object\") {\n data = {};\n }\n\n newData.text = data.text || \"\";\n newData.textAlign = data.textAlign || TextAlign.START;\n newData.className = data.className || \"\";\n\n return newData;\n }\n}\n\nexport default Paragraph;\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/RichTextEditor/tools/textColor/index.ts"],"names":["COLOR_TOOL_CLASS","TextColorTool","api","config","button","_state","tag","color","class","themeColors","_CSS","colorPicker","colorBox","colorBoxActive","state","classList","toggle","styles","inlineToolButtonActive","document","createElement","type","innerHTML","add","inlineToolButton","forEach","style","backgroundColor","addEventListener","childNodes","node","contains","remove","appendChild","range","unwrap","wrap","selectedText","extractContents","mark","insertNode","selection","expandToTag","findParentTag","text","onclick","hidden","onchange","showActions","hideActions","rgb","match","hexR","parseInt","toString","hexG","hexB","length","span","el"],"mappings":"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","sourcesContent":["import { API } from \"@editorjs/editorjs\";\n\nconst COLOR_TOOL_CLASS = \"cdx-text-color\";\n\nclass TextColorTool {\n _state: boolean;\n color: string;\n api: API;\n tag: string;\n class: string;\n colorPicker: HTMLDivElement;\n button: HTMLButtonElement;\n config: {\n themeColors: string[];\n };\n _CSS: any;\n\n constructor({ api, config }) {\n this.api = api;\n this.button = null;\n this._state = false;\n this.tag = \"SPAN\";\n this.color = \"red\";\n this.class = COLOR_TOOL_CLASS;\n this.config = config || { themeColors: [\"#44bd32\"] };\n this._CSS = {\n colorPicker: \"ce-text-color-tool\",\n colorBox: \"ce-text-color-tool__color-box\",\n colorBoxActive: \"ce-text-color-tool__color-box--active\"\n };\n }\n\n static get isInline() {\n return true;\n }\n\n /**\n * Sanitize method returns rules to let Editor know which HTML tags it should respect.\n * @returns {object} sanitizer configuration.\n * https://editorjs.io/sanitizer\n */\n static get sanitize() {\n // Block Tools are not connected with Inline ones,\n // so markup added by Inline Tool will be removed on pasting or on saving.\n // We need this config so that `class` & `style` attributes will remain intact for \"span\".\n return {\n span: el => {\n // Respect `class` and `style` attributes if this condition is meet.\n if (el.classList.contains(COLOR_TOOL_CLASS)) {\n return {\n class: COLOR_TOOL_CLASS,\n style: el.style\n };\n }\n }\n };\n }\n\n get state() {\n return this._state;\n }\n\n set state(state) {\n this._state = state;\n\n this.button.classList.toggle(this.api.styles.inlineToolButtonActive, state);\n }\n /**\n * Render method must return HTML element of the button for Inline Toolbar.\n */\n render() {\n this.button = document.createElement(\"button\");\n this.button.type = \"button\";\n this.button.innerHTML =\n '<svg width=\"20\" height=\"18\"><path d=\"M10.458 12.04l2.919 1.686-.781 1.417-.984-.03-.974 1.687H8.674l1.49-2.583-.508-.775.802-1.401zm.546-.952l3.624-6.327a1.597 1.597 0 0 1 2.182-.59 1.632 1.632 0 0 1 .615 2.201l-3.519 6.391-2.902-1.675zm-7.73 3.467h3.465a1.123 1.123 0 1 1 0 2.247H3.273a1.123 1.123 0 1 1 0-2.247z\"/></svg>';\n this.button.classList.add(this.api.styles.inlineToolButton);\n\n return this.button;\n }\n\n /**\n * Input for the link\n */\n public renderActions(): HTMLElement {\n // Create action element\n this.colorPicker = document.createElement(\"div\");\n // Add element properties\n this.colorPicker.classList.add(this._CSS.colorPicker);\n\n this.config.themeColors.forEach(color => {\n // create element\n const colorBox = document.createElement(\"button\");\n // add properties\n colorBox.style.backgroundColor = color;\n colorBox.classList.add(this._CSS.colorBox);\n\n colorBox.addEventListener(\"click\", () => {\n if (this.color === color) {\n // reset the color\n this.color = \"unset\";\n } else {\n // set color\n this.color = color;\n }\n\n this.colorPicker.childNodes.forEach((node: HTMLElement) => {\n if (node.classList.contains(this._CSS.colorBoxActive)) {\n // remove active class\n node.classList.remove(this._CSS.colorBoxActive);\n }\n });\n // add active class\n colorBox.classList.add(this._CSS.colorBoxActive);\n });\n // save element\n this.colorPicker.appendChild(colorBox);\n });\n\n // Return element\n return this.colorPicker;\n }\n\n /**\n * Finally, when button is pressed Editor calls\n * surround method of the tool with Range object as an argument.\n * @param range\n */\n surround(range) {\n if (this.state) {\n this.unwrap(range);\n return;\n }\n\n this.wrap(range);\n }\n\n wrap(range) {\n const selectedText = range.extractContents();\n const mark = document.createElement(this.tag);\n\n mark.classList.add(this.class);\n\n mark.appendChild(selectedText);\n range.insertNode(mark);\n\n this.api.selection.expandToTag(mark);\n }\n\n unwrap(range) {\n const mark = this.api.selection.findParentTag(this.tag, this.class);\n const text = range.extractContents();\n\n mark.remove();\n\n range.insertNode(text);\n }\n\n showActions(mark) {\n this.colorPicker.onclick = () => {\n mark.style.color = this.color;\n };\n this.colorPicker.hidden = false;\n }\n\n hideActions() {\n this.colorPicker.onchange = null;\n this.colorPicker.hidden = true;\n }\n\n /**\n * CheckState method of each Inline Tool is called by Editor with current `Selection`\n * when user selects some text\n */\n checkState() {\n const mark = this.api.selection.findParentTag(this.tag);\n\n this.state = !!mark;\n\n if (this.state) {\n this.showActions(mark);\n } else {\n this.hideActions();\n }\n }\n\n convertToHex(color) {\n const rgb = color.match(/(\\d+)/g);\n\n let hexR = parseInt(rgb[0]).toString(16);\n let hexG = parseInt(rgb[1]).toString(16);\n let hexB = parseInt(rgb[2]).toString(16);\n\n hexR = hexR.length === 1 ? \"0\" + hexR : hexR;\n hexG = hexG.length === 1 ? \"0\" + hexG : hexG;\n hexB = hexB.length === 1 ? \"0\" + hexB : hexB;\n\n return \"#\" + hexR + hexG + hexB;\n }\n\n clear() {\n this.hideActions();\n }\n}\n\nexport default TextColorTool;\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/RichTextEditor/tools/utils.ts"],"names":["TextAlign","ALIGNMENT_ICONS","start","end","center","justify","ALIGNMENTS","name","START","svg","CENTER","END"],"mappings":"AAAA,WAAYA,SAAZ;;WAAYA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;GAAAA,S,KAAAA,S;;AAWZ,OAAO,IAAMC,eAAe,GAAG;AAC3BC,EAAAA,KAAK,EACD,sEACA,6CADA,GAEA,SAFA,GAGA,gXAHA,GAIA,UAJA,GAKA,QAPuB;AAQ3BC,EAAAA,GAAG,EACC,sEACA,6CADA,GAEA,SAFA,GAGA,iXAHA,GAIA,UAJA,GAKA,QAduB;AAe3BC,EAAAA,MAAM,EACF,sEACA,6CADA,GAEA,SAFA,GAGA,uXAHA,GAIA,UAJA,GAKA,QArBuB;AAsB3BC,EAAAA,OAAO,EACH,sEACA,6CADA,GAEA,SAFA,GAGA,8WAHA,GAIA,UAJA,GAKA;AA5BuB,CAAxB;AA+BP,OAAO,IAAMC,UAAU,GAAG,CACtB;AACIC,EAAAA,IAAI,EAAEP,SAAS,CAACQ,KADpB;AAEIC,EAAAA,GAAG,EAAER,eAAe,CAACC;AAFzB,CADsB,EAKtB;AACIK,EAAAA,IAAI,EAAEP,SAAS,CAACU,MADpB;AAEID,EAAAA,GAAG,EAAER,eAAe,CAACG;AAFzB,CALsB,EAStB;AACIG,EAAAA,IAAI,EAAEP,SAAS,CAACW,GADpB;AAEIF,EAAAA,GAAG,EAAER,eAAe,CAACE;AAFzB,CATsB,CAAnB","sourcesContent":["export enum TextAlign {\n START = \"start\",\n END = \"end\",\n CENTER = \"center\"\n}\n\nexport type Alignment = {\n name: TextAlign;\n svg: string;\n};\n\nexport const ALIGNMENT_ICONS = {\n start:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\">\\n' +\n ' <path fill=\"none\" d=\"M0 0h24v24H0V0z\"/>\\n' +\n \" <g>\\n\" +\n ' <path fill=\"currentColor\" d=\"M14 15H4c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1zm0-8H4c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1zM4 13h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zm0 8h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zM3 4c0 .55.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1z\"/>\\n' +\n \" </g>\\n\" +\n \"</svg>\",\n end:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\">\\n' +\n ' <path fill=\"none\" d=\"M0 0h24v24H0V0z\"/>\\n' +\n \" <g>\\n\" +\n ' <path fill=\"currentColor\" d=\"M4 21h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zm6-4h10c.55 0 1-.45 1-1s-.45-1-1-1H10c-.55 0-1 .45-1 1s.45 1 1 1zm-6-4h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zm6-4h10c.55 0 1-.45 1-1s-.45-1-1-1H10c-.55 0-1 .45-1 1s.45 1 1 1zM3 4c0 .55.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1z\"/>\\n' +\n \" </g>\\n\" +\n \"</svg>\",\n center:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\">\\n' +\n ' <path fill=\"none\" d=\"M0 0h24v24H0V0z\"/>\\n' +\n \" <g>\\n\" +\n ' <path fill=\"currentColor\" d=\"M7 16c0 .55.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1zm-3 5h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zm0-8h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zm3-5c0 .55.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1zM3 4c0 .55.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1z\"/>\\n' +\n \" </g>\\n\" +\n \"</svg>\",\n justify:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\">\\n' +\n ' <path fill=\"none\" d=\"M0 0h24v24H0V0z\"/>\\n' +\n \" <g>\\n\" +\n ' <path fill=\"currentColor\" d=\"M4 21h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zm0-4h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zm0-4h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zm0-4h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zM3 4c0 .55.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1z\"/>\\n' +\n \" </g>\\n\" +\n \"</svg>\"\n};\n\nexport const ALIGNMENTS = [\n {\n name: TextAlign.START,\n svg: ALIGNMENT_ICONS.start\n },\n {\n name: TextAlign.CENTER,\n svg: ALIGNMENT_ICONS.center\n },\n {\n name: TextAlign.END,\n svg: ALIGNMENT_ICONS.end\n }\n];\n"],"file":"utils.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/SearchUI.tsx"],"names":["React","styled","InputField","SearchWrapper","width","height","display","position","top","left","bottom","pointerEvents","alignItems","paddingLeft","color","padding","outline","border","textTransform","letterSpacing","Search","value","onChange","inputPlaceholder"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,OAAOC,UAAP;;AAGA,IAAMC,aAAa,gBAAGF,MAAH,CAAU,KAAV;AAAA;AAAA;AAAA,GAAiB;AAChCG,EAAAA,KAAK,EAAE,MADyB;AAEhCC,EAAAA,MAAM,EAAE,MAFwB;AAGhCC,EAAAA,OAAO,EAAE,MAHuB;AAIhCC,EAAAA,QAAQ,EAAE,UAJsB;AAMhC,qBAAmB;AACfA,IAAAA,QAAQ,EAAE,UADK;AAEfC,IAAAA,GAAG,EAAE,CAFU;AAGfC,IAAAA,IAAI,EAAE,CAHS;AAIfC,IAAAA,MAAM,EAAE,CAJO;AAKfC,IAAAA,aAAa,EAAE,MALA;AAMfL,IAAAA,OAAO,EAAE,MANM;AAOfM,IAAAA,UAAU,EAAE,QAPG;AAQfC,IAAAA,WAAW,EAAE,SARE;AASfC,IAAAA,KAAK,EAAE;AATQ,GANa;AAkBhC,sBAAoB;AAChBV,IAAAA,KAAK,EAAE,MADS;AAEhBW,IAAAA,OAAO,EAAE,8BAFO;AAGhBC,IAAAA,OAAO,EAAE,MAHO;AAIhBC,IAAAA,MAAM,EAAE,MAJQ;AAKhBH,IAAAA,KAAK,EAAE,6CALS;AAMhB,eAAW;AACPE,MAAAA,OAAO,EAAE;AADF,KANK;AAShB,sBAAkB;AACdE,MAAAA,aAAa,EAAE,WADD;AAEdC,MAAAA,aAAa,EAAE,QAFD;AAGdL,MAAAA,KAAK,EAAE;AAHO;AATF;AAlBY,CAAjB,CAAnB;;AAwCA,IAAMM,MAAM,GAAG,SAATA,MAAS,OAAsE;AAAA,MAAnEC,KAAmE,QAAnEA,KAAmE;AAAA,MAA5DC,QAA4D,QAA5DA,QAA4D;AAAA,mCAAlDC,gBAAkD;AAAA,MAAlDA,gBAAkD,sCAA/B,WAA+B;AACjF,sBACI,oBAAC,aAAD;AAAe,mBAAa;AAA5B,kBACI;AAAK,IAAA,SAAS,EAAC;AAAf,kBACI,oBAAC,UAAD,OADJ,CADJ,eAII,oBAAC,UAAD;AACI,IAAA,SAAS,EAAC,eADd;AAEI,IAAA,WAAW,EAAEA,gBAFjB;AAGI,IAAA,KAAK,EAAEF,KAHX;AAII,IAAA,QAAQ,EAAEC,QAJd;AAKI,IAAA,YAAY,EAAC;AALjB,IAJJ,CADJ;AAcH,CAfD;;AAiBA,eAAeF,MAAf","sourcesContent":["import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport InputField from \"./SimpleUI/InputField\";\nimport { ReactComponent as SearchIcon } from \"../assets/icons/search-24px.svg\";\n\nconst SearchWrapper = styled(\"div\")({\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n position: \"relative\",\n\n \"& .search__icon\": {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n pointerEvents: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: \"0.25rem\",\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n },\n\n \"& .search__input\": {\n width: \"100%\",\n padding: \"0.5rem 0.5rem 0.5rem 2.25rem\",\n outline: \"none\",\n border: \"none\",\n color: \"var(--mdc-theme-text-primary-on-background)\",\n \"&:focus\": {\n outline: \"none\"\n },\n \"&::placeholder\": {\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n }\n }\n});\n\nexport type SearchProps = {\n value: string;\n onChange: (value: string) => void;\n inputPlaceholder?: string;\n};\nconst Search = ({ value, onChange, inputPlaceholder = \"Search...\" }: SearchProps) => {\n return (\n <SearchWrapper data-testid={\"default-data-list.search\"}>\n <div className=\"search__icon\">\n <SearchIcon />\n </div>\n <InputField\n className=\"search__input\"\n placeholder={inputPlaceholder}\n value={value}\n onChange={onChange}\n autoComplete=\"off\"\n />\n </SearchWrapper>\n );\n};\n\nexport default Search;\n"],"file":"SearchUI.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/SimpleForm/SimpleForm.tsx"],"names":["React","styled","css","classNames","Cell","Grid","Typography","Elevation","Icon","SimpleFormContainer","position","margin","header","borderBottom","color","title","display","alignItems","actions","justifyContent","icon","marginRight","footer","borderTop","textAlign","padding","SimpleForm","props","className","noElevation","children","SimpleFormHeader","SimpleFormFooter","SimpleFormContent"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { css } from \"emotion\";\nimport classNames from \"classnames\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { Elevation } from \"@webiny/ui/Elevation\";\nimport { Icon } from \"@webiny/ui/Icon\";\n\nconst SimpleFormContainer = styled(\"div\")({\n position: \"relative\",\n margin: \"17px 50px\"\n});\n\nconst header = css({\n borderBottom: \"1px solid var(--mdc-theme-on-background)\",\n color: \"var(--mdc-theme-text-primary-on-background)\"\n});\n\nconst title = css({\n display: \"flex\",\n alignItems: \"center\"\n});\n\nconst actions = css({\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\"\n});\n\nconst icon = css({\n marginRight: 15,\n color: \"var(--mdc-theme-text-primary-on-background)\"\n});\n\nconst footer = css({\n borderTop: \"1px solid var(--mdc-theme-on-background)\",\n color: \"var(--mdc-theme-text-primary-on-background)\",\n textAlign: \"right\",\n \"&.mdc-layout-grid\": {\n padding: 25 // \"25px 50px\"\n }\n});\n\nexport const SimpleForm = (props: {\n children: React.ReactNode;\n \"data-testid\"?: string;\n noElevation?: boolean;\n className?: string;\n}) => {\n return (\n <SimpleFormContainer\n className={classNames(\"webiny-data-list\", props.className)}\n data-testid={props[\"data-testid\"]}\n >\n {props.noElevation ? props.children : <Elevation z={1}>{props.children}</Elevation>}\n </SimpleFormContainer>\n );\n};\n\nexport const SimpleFormHeader = (props: {\n title: React.ReactNode;\n icon?: React.ReactElement<any>;\n children?: React.ReactNode;\n}) => {\n return (\n <Grid className={header}>\n <Cell span={props.children ? 6 : 12} className={title}>\n <React.Fragment>\n {props.icon && <Icon className={icon} icon={props.icon} />}\n <Typography use=\"headline5\">{props.title}</Typography>\n </React.Fragment>\n </Cell>\n {props.children && (\n <Cell span={6} className={actions}>\n {props.children}\n </Cell>\n )}\n </Grid>\n );\n};\n\nexport const SimpleFormFooter = (props: { children: React.ReactNode }) => {\n return (\n <Grid className={footer}>\n <Cell span={12}>{props.children}</Cell>\n </Grid>\n );\n};\n\nexport const SimpleFormContent = (props: { children: any }): any => {\n return props.children;\n};\n"],"file":"SimpleForm.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/SimpleForm/index.ts"],"names":["SimpleForm","SimpleFormHeader","SimpleFormFooter","SimpleFormContent"],"mappings":"AAAA,SAASA,UAAT,EAAqBC,gBAArB,EAAuCC,gBAAvC,EAAyDC,iBAAzD","sourcesContent":["export { SimpleForm, SimpleFormHeader, SimpleFormFooter, SimpleFormContent } from \"./SimpleForm\";\n"],"file":"index.js"}