@webiny/app-admin 5.43.2 → 6.0.0-alpha.0

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 (553) hide show
  1. package/base/Admin.js +25 -35
  2. package/base/Admin.js.map +1 -1
  3. package/base/Base/Menus/SupportMenuItems.d.ts +2 -0
  4. package/base/Base/Menus/SupportMenuItems.js +20 -0
  5. package/base/Base/Menus/SupportMenuItems.js.map +1 -0
  6. package/base/Base/Menus/WebinyVersion.d.ts +2 -0
  7. package/base/Base/Menus/WebinyVersion.js +24 -0
  8. package/base/Base/Menus/WebinyVersion.js.map +1 -0
  9. package/base/Base/Menus.d.ts +2 -0
  10. package/base/Base/Menus.js +129 -0
  11. package/base/Base/Menus.js.map +1 -0
  12. package/base/Base/Routes.d.ts +2 -0
  13. package/base/Base/Routes.js +24 -0
  14. package/base/Base/Routes.js.map +1 -0
  15. package/base/Base/Tenant/wby-logo.svg +3 -0
  16. package/base/Base/Tenant.d.ts +2 -0
  17. package/base/Base/Tenant.js +19 -0
  18. package/base/Base/Tenant.js.map +1 -0
  19. package/base/Base.js +11 -79
  20. package/base/Base.js.map +1 -1
  21. package/base/WebinyVersion.d.ts +2 -0
  22. package/base/WebinyVersion.js +24 -0
  23. package/base/WebinyVersion.js.map +1 -0
  24. package/base/plugins/AddGraphQLQuerySelection.js +11 -21
  25. package/base/plugins/AddGraphQLQuerySelection.js.map +1 -1
  26. package/base/providers/AdminUiStateProvider.d.ts +1 -0
  27. package/base/providers/AdminUiStateProvider.js +14 -0
  28. package/base/providers/AdminUiStateProvider.js.map +1 -0
  29. package/base/providers/ApolloProvider.js +9 -15
  30. package/base/providers/ApolloProvider.js.map +1 -1
  31. package/base/providers/TelemetryProvider.js +12 -18
  32. package/base/providers/TelemetryProvider.js.map +1 -1
  33. package/base/providers/UiProviders.d.ts +1 -0
  34. package/base/providers/UiProviders.js +14 -0
  35. package/base/providers/UiProviders.js.map +1 -0
  36. package/base/providers/UiStateProvider.js +9 -15
  37. package/base/providers/UiStateProvider.js.map +1 -1
  38. package/base/providers/ViewCompositionProvider.js +33 -44
  39. package/base/providers/ViewCompositionProvider.js.map +1 -1
  40. package/base/ui/Brand.js +5 -12
  41. package/base/ui/Brand.js.map +1 -1
  42. package/base/ui/CenteredView.js +12 -43
  43. package/base/ui/CenteredView.js.map +1 -1
  44. package/base/ui/Dashboard.js +5 -12
  45. package/base/ui/Dashboard.js.map +1 -1
  46. package/base/ui/FileManager.js +42 -56
  47. package/base/ui/FileManager.js.map +1 -1
  48. package/base/ui/Layout.js +8 -16
  49. package/base/ui/Layout.js.map +1 -1
  50. package/base/ui/LocaleSelector.js +5 -12
  51. package/base/ui/LocaleSelector.js.map +1 -1
  52. package/base/ui/LoginScreen.js +9 -15
  53. package/base/ui/LoginScreen.js.map +1 -1
  54. package/base/ui/Logo.d.ts +0 -5
  55. package/base/ui/Logo.js +5 -26
  56. package/base/ui/Logo.js.map +1 -1
  57. package/base/ui/Navigation.d.ts +0 -57
  58. package/base/ui/Navigation.js +5 -146
  59. package/base/ui/Navigation.js.map +1 -1
  60. package/base/ui/NotFound.js +5 -12
  61. package/base/ui/NotFound.js.map +1 -1
  62. package/base/ui/Tags.js +14 -19
  63. package/base/ui/Tags.js.map +1 -1
  64. package/base/ui/{Search.d.ts → TenantSelector.d.ts} +2 -18
  65. package/base/ui/TenantSelector.js +8 -0
  66. package/base/ui/TenantSelector.js.map +1 -0
  67. package/base/ui/UserMenu/UserMenu.d.ts +39 -0
  68. package/base/ui/UserMenu/UserMenu.js +8 -0
  69. package/base/ui/UserMenu/UserMenu.js.map +1 -0
  70. package/base/ui/UserMenu/UserMenuHandle.d.ts +39 -0
  71. package/base/ui/UserMenu/UserMenuHandle.js +8 -0
  72. package/base/ui/UserMenu/UserMenuHandle.js.map +1 -0
  73. package/base/ui/UserMenu/UserMenuItem.d.ts +81 -0
  74. package/base/ui/UserMenu/UserMenuItem.js +19 -0
  75. package/base/ui/UserMenu/UserMenuItem.js.map +1 -0
  76. package/base/ui/UserMenu/UserMenuLink.d.ts +81 -0
  77. package/base/ui/UserMenu/UserMenuLink.js +19 -0
  78. package/base/ui/UserMenu/UserMenuLink.js.map +1 -0
  79. package/base/ui/UserMenu/UserMenuSeparator.d.ts +42 -0
  80. package/base/ui/UserMenu/UserMenuSeparator.js +9 -0
  81. package/base/ui/UserMenu/UserMenuSeparator.js.map +1 -0
  82. package/base/ui/UserMenu.d.ts +3 -79
  83. package/base/ui/UserMenu.js +14 -101
  84. package/base/ui/UserMenu.js.map +1 -1
  85. package/components/AdminLayout.js +7 -13
  86. package/components/AdminLayout.js.map +1 -1
  87. package/components/AppInstaller/AppInstaller.js +57 -67
  88. package/components/AppInstaller/AppInstaller.js.map +1 -1
  89. package/components/AppInstaller/Sidebar.js +49 -69
  90. package/components/AppInstaller/Sidebar.js.map +1 -1
  91. package/components/AppInstaller/index.js +10 -16
  92. package/components/AppInstaller/index.js.map +1 -1
  93. package/components/AppInstaller/styled.js +8 -15
  94. package/components/AppInstaller/styled.js.map +1 -1
  95. package/components/AppInstaller/useInstaller.js +81 -91
  96. package/components/AppInstaller/useInstaller.js.map +1 -1
  97. package/components/BulkActions/Worker.js +95 -141
  98. package/components/BulkActions/Worker.js.map +1 -1
  99. package/components/BulkActions/index.js +2 -27
  100. package/components/BulkActions/index.js.map +1 -1
  101. package/components/BulkActions/useDialogWithReport/DialogMessage.js +20 -33
  102. package/components/BulkActions/useDialogWithReport/DialogMessage.js.map +1 -1
  103. package/components/BulkActions/useDialogWithReport/index.js +1 -16
  104. package/components/BulkActions/useDialogWithReport/index.js.map +1 -1
  105. package/components/BulkActions/useDialogWithReport/useDialogWithReport.js +45 -52
  106. package/components/BulkActions/useDialogWithReport/useDialogWithReport.js.map +1 -1
  107. package/components/Buttons/Buttons.d.ts +7 -6
  108. package/components/Buttons/Buttons.js +58 -56
  109. package/components/Buttons/Buttons.js.map +1 -1
  110. package/components/Buttons/Buttons.styles.js +2 -9
  111. package/components/Buttons/Buttons.styles.js.map +1 -1
  112. package/components/Buttons/index.js +2 -25
  113. package/components/Buttons/index.js.map +1 -1
  114. package/components/Buttons/useButtons.js +13 -19
  115. package/components/Buttons/useButtons.js.map +1 -1
  116. package/components/Dialogs/CustomDialog.js +30 -37
  117. package/components/Dialogs/CustomDialog.js.map +1 -1
  118. package/components/Dialogs/Dialog.d.ts +8 -4
  119. package/components/Dialogs/Dialog.js +56 -41
  120. package/components/Dialogs/Dialog.js.map +1 -1
  121. package/components/Dialogs/DialogsContext.d.ts +9 -3
  122. package/components/Dialogs/DialogsContext.js +96 -107
  123. package/components/Dialogs/DialogsContext.js.map +1 -1
  124. package/components/Dialogs/useDialogs.js +5 -17
  125. package/components/Dialogs/useDialogs.js.map +1 -1
  126. package/components/EmptyView.d.ts +1 -1
  127. package/components/EmptyView.js +31 -41
  128. package/components/EmptyView.js.map +1 -1
  129. package/components/Filters/Filters.js +12 -20
  130. package/components/Filters/Filters.js.map +1 -1
  131. package/components/Filters/FiltersToggle.d.ts +7 -0
  132. package/components/Filters/FiltersToggle.js +26 -0
  133. package/components/Filters/FiltersToggle.js.map +1 -0
  134. package/components/Filters/index.d.ts +1 -0
  135. package/components/Filters/index.js +2 -16
  136. package/components/Filters/index.js.map +1 -1
  137. package/components/FloatingActionButton.js +7 -13
  138. package/components/FloatingActionButton.js.map +1 -1
  139. package/components/FloatingPanel.js +44 -68
  140. package/components/FloatingPanel.js.map +1 -1
  141. package/components/IconPicker/IconPicker.d.ts +1 -1
  142. package/components/IconPicker/IconPicker.js +25 -32
  143. package/components/IconPicker/IconPicker.js.map +1 -1
  144. package/components/IconPicker/IconPickerComponent.d.ts +5 -5
  145. package/components/IconPicker/IconPickerComponent.js +67 -87
  146. package/components/IconPicker/IconPickerComponent.js.map +1 -1
  147. package/components/IconPicker/IconPickerPresenter.d.ts +5 -4
  148. package/components/IconPicker/IconPickerPresenter.js +68 -109
  149. package/components/IconPicker/IconPickerPresenter.js.map +1 -1
  150. package/components/IconPicker/IconPickerPresenter.test.js +21 -23
  151. package/components/IconPicker/IconPickerPresenter.test.js.map +1 -1
  152. package/components/IconPicker/IconPickerPresenterProvider.js +10 -17
  153. package/components/IconPicker/IconPickerPresenterProvider.js.map +1 -1
  154. package/components/IconPicker/IconPickerTab.d.ts +2 -1
  155. package/components/IconPicker/IconPickerTab.js +103 -113
  156. package/components/IconPicker/IconPickerTab.js.map +1 -1
  157. package/components/IconPicker/IconRenderer.js +16 -24
  158. package/components/IconPicker/IconRenderer.js.map +1 -1
  159. package/components/IconPicker/IconRepository.js +41 -73
  160. package/components/IconPicker/IconRepository.js.map +1 -1
  161. package/components/IconPicker/IconRepository.test.js +11 -13
  162. package/components/IconPicker/IconRepository.test.js.map +1 -1
  163. package/components/IconPicker/IconRepositoryFactory.js +14 -37
  164. package/components/IconPicker/IconRepositoryFactory.js.map +1 -1
  165. package/components/IconPicker/Loading.js +42 -68
  166. package/components/IconPicker/Loading.js.map +1 -1
  167. package/components/IconPicker/components/IconPickerCell.d.ts +12 -0
  168. package/components/IconPicker/components/IconPickerCell.js +27 -0
  169. package/components/IconPicker/components/IconPickerCell.js.map +1 -0
  170. package/components/IconPicker/components/IconPickerContent.d.ts +11 -0
  171. package/components/IconPicker/components/IconPickerContent.js +41 -0
  172. package/components/IconPicker/components/IconPickerContent.js.map +1 -0
  173. package/components/IconPicker/components/IconPickerRow.d.ts +4 -0
  174. package/components/IconPicker/components/IconPickerRow.js +14 -0
  175. package/components/IconPicker/components/IconPickerRow.js.map +1 -0
  176. package/components/IconPicker/components/IconPickerTrigger.d.ts +13 -0
  177. package/components/IconPicker/components/IconPickerTrigger.js +52 -0
  178. package/components/IconPicker/components/IconPickerTrigger.js.map +1 -0
  179. package/components/IconPicker/components/index.d.ts +4 -0
  180. package/components/IconPicker/components/index.js +6 -0
  181. package/components/IconPicker/components/index.js.map +1 -0
  182. package/components/IconPicker/config/Emojis.js +9 -16
  183. package/components/IconPicker/config/Emojis.js.map +1 -1
  184. package/components/IconPicker/config/FontAwesomeIcons.js +30 -43
  185. package/components/IconPicker/config/FontAwesomeIcons.js.map +1 -1
  186. package/components/IconPicker/config/IconPackProvider.js +10 -16
  187. package/components/IconPicker/config/IconPackProvider.js.map +1 -1
  188. package/components/IconPicker/config/IconType.js +52 -55
  189. package/components/IconPicker/config/IconType.js.map +1 -1
  190. package/components/IconPicker/config/index.js +35 -53
  191. package/components/IconPicker/config/index.js.map +1 -1
  192. package/components/IconPicker/defaultIcon.js +1 -7
  193. package/components/IconPicker/defaultIcon.js.map +1 -1
  194. package/components/IconPicker/index.js +6 -47
  195. package/components/IconPicker/index.js.map +1 -1
  196. package/components/IconPicker/plugins/customPlugin.js +71 -96
  197. package/components/IconPicker/plugins/customPlugin.js.map +1 -1
  198. package/components/IconPicker/plugins/emojisPlugin.js +80 -117
  199. package/components/IconPicker/plugins/emojisPlugin.js.map +1 -1
  200. package/components/IconPicker/plugins/graphql.js +19 -10
  201. package/components/IconPicker/plugins/graphql.js.map +1 -1
  202. package/components/IconPicker/plugins/iconsPlugin.js +62 -93
  203. package/components/IconPicker/plugins/iconsPlugin.js.map +1 -1
  204. package/components/IconPicker/types.d.ts +1 -1
  205. package/components/IconPicker/types.js +3 -8
  206. package/components/IconPicker/types.js.map +1 -1
  207. package/components/LexicalEditor/LexicalEditor.js +24 -31
  208. package/components/LexicalEditor/LexicalEditor.js.map +1 -1
  209. package/components/LexicalEditor/index.js +1 -12
  210. package/components/LexicalEditor/index.js.map +1 -1
  211. package/components/MultiImageUpload.d.ts +1 -1
  212. package/components/MultiImageUpload.js +8 -31
  213. package/components/MultiImageUpload.js.map +1 -1
  214. package/components/OptionsMenu/OptionsMenu.d.ts +1 -0
  215. package/components/OptionsMenu/OptionsMenu.js +17 -23
  216. package/components/OptionsMenu/OptionsMenu.js.map +1 -1
  217. package/components/OptionsMenu/OptionsMenuItem.d.ts +1 -0
  218. package/components/OptionsMenu/OptionsMenuItem.js +12 -17
  219. package/components/OptionsMenu/OptionsMenuItem.js.map +1 -1
  220. package/components/OptionsMenu/OptionsMenuLink.d.ts +1 -0
  221. package/components/OptionsMenu/OptionsMenuLink.js +13 -36
  222. package/components/OptionsMenu/OptionsMenuLink.js.map +1 -1
  223. package/components/OptionsMenu/index.js +4 -51
  224. package/components/OptionsMenu/index.js.map +1 -1
  225. package/components/OptionsMenu/useOptionsMenuItem.js +12 -18
  226. package/components/OptionsMenu/useOptionsMenuItem.js.map +1 -1
  227. package/components/OverlayLayout/OverlayLayout.d.ts +6 -16
  228. package/components/OverlayLayout/OverlayLayout.js +42 -147
  229. package/components/OverlayLayout/OverlayLayout.js.map +1 -1
  230. package/components/OverlayLayout/components/OverlayBackdrop.d.ts +7 -0
  231. package/components/OverlayLayout/components/OverlayBackdrop.js +15 -0
  232. package/components/OverlayLayout/components/OverlayBackdrop.js.map +1 -0
  233. package/components/OverlayLayout/components/OverlayContent.d.ts +6 -0
  234. package/components/OverlayLayout/components/OverlayContent.js +21 -0
  235. package/components/OverlayLayout/components/OverlayContent.js.map +1 -0
  236. package/components/OverlayLayout/components/OverlayHeader.d.ts +13 -0
  237. package/components/OverlayLayout/components/OverlayHeader.js +44 -0
  238. package/components/OverlayLayout/components/OverlayHeader.js.map +1 -0
  239. package/components/OverlayLayout/components/OverlayRoot.d.ts +9 -0
  240. package/components/OverlayLayout/components/OverlayRoot.js +19 -0
  241. package/components/OverlayLayout/components/OverlayRoot.js.map +1 -0
  242. package/components/OverlayLayout/components/index.d.ts +4 -0
  243. package/components/OverlayLayout/components/index.js +6 -0
  244. package/components/OverlayLayout/components/index.js.map +1 -0
  245. package/components/OverlayLayout/index.js +1 -16
  246. package/components/OverlayLayout/index.js.map +1 -1
  247. package/components/Permissions/CannotUseAaclAlert.js +5 -12
  248. package/components/Permissions/CannotUseAaclAlert.js.map +1 -1
  249. package/components/Permissions/Permissions.js +37 -48
  250. package/components/Permissions/Permissions.js.map +1 -1
  251. package/components/Permissions/PermissionsGroup.d.ts +6 -0
  252. package/components/Permissions/PermissionsGroup.js +18 -0
  253. package/components/Permissions/PermissionsGroup.js.map +1 -0
  254. package/components/Permissions/StyledComponents.d.ts +1 -2
  255. package/components/Permissions/StyledComponents.js +12 -25
  256. package/components/Permissions/StyledComponents.js.map +1 -1
  257. package/components/Permissions/index.d.ts +1 -0
  258. package/components/Permissions/index.js +4 -35
  259. package/components/Permissions/index.js.map +1 -1
  260. package/components/ResizablePanels/index.js +1 -42
  261. package/components/ResizablePanels/index.js.map +1 -1
  262. package/components/RichTextEditor/RichTextEditor.js +13 -21
  263. package/components/RichTextEditor/RichTextEditor.js.map +1 -1
  264. package/components/RichTextEditor/index.js +2 -19
  265. package/components/RichTextEditor/index.js.map +1 -1
  266. package/components/RichTextEditor/tools/header/index.js +455 -521
  267. package/components/RichTextEditor/tools/header/index.js.map +1 -1
  268. package/components/RichTextEditor/tools/image/index.js +147 -182
  269. package/components/RichTextEditor/tools/image/index.js.map +1 -1
  270. package/components/RichTextEditor/tools/image/svgs.js +4 -10
  271. package/components/RichTextEditor/tools/image/svgs.js.map +1 -1
  272. package/components/RichTextEditor/tools/image/tunes.js +75 -96
  273. package/components/RichTextEditor/tools/image/tunes.js.map +1 -1
  274. package/components/RichTextEditor/tools/image/types.js +1 -5
  275. package/components/RichTextEditor/tools/image/ui.js +143 -174
  276. package/components/RichTextEditor/tools/image/ui.js.map +1 -1
  277. package/components/RichTextEditor/tools/paragraph/index.js +337 -389
  278. package/components/RichTextEditor/tools/paragraph/index.js.map +1 -1
  279. package/components/RichTextEditor/tools/textColor/index.js +164 -202
  280. package/components/RichTextEditor/tools/textColor/index.js.map +1 -1
  281. package/components/RichTextEditor/tools/utils.js +3 -9
  282. package/components/RichTextEditor/tools/utils.js.map +1 -1
  283. package/components/Routes.js +14 -23
  284. package/components/Routes.js.map +1 -1
  285. package/components/SearchUI.d.ts +2 -1
  286. package/components/SearchUI.js +22 -48
  287. package/components/SearchUI.js.map +1 -1
  288. package/components/SimpleForm/SimpleForm.d.ts +14 -7
  289. package/components/SimpleForm/SimpleForm.js +72 -77
  290. package/components/SimpleForm/SimpleForm.js.map +1 -1
  291. package/components/SimpleForm/index.js +1 -30
  292. package/components/SimpleForm/index.js.map +1 -1
  293. package/components/SimpleUI/InputField.js +39 -47
  294. package/components/SimpleUI/InputField.js.map +1 -1
  295. package/components/SingleImageUpload.d.ts +19 -1
  296. package/components/SingleImageUpload.js +39 -75
  297. package/components/SingleImageUpload.js.map +1 -1
  298. package/components/SplitView/SplitView.d.ts +4 -4
  299. package/components/SplitView/SplitView.js +41 -88
  300. package/components/SplitView/SplitView.js.map +1 -1
  301. package/components/SplitView/index.js +1 -24
  302. package/components/SplitView/index.js.map +1 -1
  303. package/components/StateInspector.js +28 -28
  304. package/components/StateInspector.js.map +1 -1
  305. package/components/Wcp.js +21 -25
  306. package/components/Wcp.js.map +1 -1
  307. package/components/index.js +3 -26
  308. package/components/index.js.map +1 -1
  309. package/config/AdminConfig/Menu/MenuGroup.d.ts +62 -0
  310. package/config/AdminConfig/Menu/MenuGroup.js +14 -0
  311. package/config/AdminConfig/Menu/MenuGroup.js.map +1 -0
  312. package/config/AdminConfig/Menu/MenuItem.d.ts +43 -0
  313. package/config/AdminConfig/Menu/MenuItem.js +14 -0
  314. package/config/AdminConfig/Menu/MenuItem.js.map +1 -0
  315. package/config/AdminConfig/Menu/MenuLink.d.ts +43 -0
  316. package/config/AdminConfig/Menu/MenuLink.js +18 -0
  317. package/config/AdminConfig/Menu/MenuLink.js.map +1 -0
  318. package/config/AdminConfig/Menu/SupportMenu/SupportMenuItem.d.ts +43 -0
  319. package/config/AdminConfig/Menu/SupportMenu/SupportMenuItem.js +13 -0
  320. package/config/AdminConfig/Menu/SupportMenu/SupportMenuItem.js.map +1 -0
  321. package/config/AdminConfig/Menu/SupportMenu/SupportMenuLink.d.ts +24 -0
  322. package/config/AdminConfig/Menu/SupportMenu/SupportMenuLink.js +13 -0
  323. package/config/AdminConfig/Menu/SupportMenu/SupportMenuLink.js.map +1 -0
  324. package/config/AdminConfig/Menu/SupportMenu.d.ts +72 -0
  325. package/config/AdminConfig/Menu/SupportMenu.js +49 -0
  326. package/config/AdminConfig/Menu/SupportMenu.js.map +1 -0
  327. package/config/AdminConfig/Menu/UserMenu/UserMenuItem.d.ts +41 -0
  328. package/config/AdminConfig/Menu/UserMenu/UserMenuItem.js +7 -0
  329. package/config/AdminConfig/Menu/UserMenu/UserMenuItem.js.map +1 -0
  330. package/config/AdminConfig/Menu/UserMenu/UserMenuLink.d.ts +41 -0
  331. package/config/AdminConfig/Menu/UserMenu/UserMenuLink.js +7 -0
  332. package/config/AdminConfig/Menu/UserMenu/UserMenuLink.js.map +1 -0
  333. package/config/AdminConfig/Menu/UserMenu/UserMenuSeparator.d.ts +1 -0
  334. package/config/AdminConfig/Menu/UserMenu/UserMenuSeparator.js +3 -0
  335. package/config/AdminConfig/Menu/UserMenu/UserMenuSeparator.js.map +1 -0
  336. package/config/AdminConfig/Menu/UserMenu/types.d.ts +7 -0
  337. package/config/AdminConfig/Menu/UserMenu/types.js +3 -0
  338. package/config/AdminConfig/Menu/UserMenu/types.js.map +1 -0
  339. package/config/AdminConfig/Menu/UserMenu.d.ts +129 -0
  340. package/config/AdminConfig/Menu/UserMenu.js +61 -0
  341. package/config/AdminConfig/Menu/UserMenu.js.map +1 -0
  342. package/config/AdminConfig/Menu/types.d.ts +7 -0
  343. package/config/AdminConfig/Menu/types.js +3 -0
  344. package/config/AdminConfig/Menu/types.js.map +1 -0
  345. package/config/AdminConfig/Menu.d.ts +350 -0
  346. package/config/AdminConfig/Menu.js +75 -0
  347. package/config/AdminConfig/Menu.js.map +1 -0
  348. package/config/AdminConfig/Route.d.ts +3 -0
  349. package/config/AdminConfig/Route.js +8 -0
  350. package/config/AdminConfig/Route.js.map +1 -0
  351. package/config/AdminConfig/Tenant/TenantLogo.d.ts +23 -0
  352. package/config/AdminConfig/Tenant/TenantLogo.js +16 -0
  353. package/config/AdminConfig/Tenant/TenantLogo.js.map +1 -0
  354. package/config/AdminConfig/Tenant/TenantName.d.ts +23 -0
  355. package/config/AdminConfig/Tenant/TenantName.js +16 -0
  356. package/config/AdminConfig/Tenant/TenantName.js.map +1 -0
  357. package/config/AdminConfig/Tenant.d.ts +66 -0
  358. package/config/AdminConfig/Tenant.js +23 -0
  359. package/config/AdminConfig/Tenant.js.map +1 -0
  360. package/config/AdminConfig/Theme/assignColor.d.ts +2 -0
  361. package/config/AdminConfig/Theme/assignColor.js +22 -0
  362. package/config/AdminConfig/Theme/assignColor.js.map +1 -0
  363. package/config/AdminConfig/Theme/consts.d.ts +2 -0
  364. package/config/AdminConfig/Theme/consts.js +4 -0
  365. package/config/AdminConfig/Theme/consts.js.map +1 -0
  366. package/config/AdminConfig/Theme/types.d.ts +3 -0
  367. package/config/AdminConfig/Theme/types.js +3 -0
  368. package/config/AdminConfig/Theme/types.js.map +1 -0
  369. package/config/AdminConfig/Theme.d.ts +16 -0
  370. package/config/AdminConfig/Theme.js +22 -0
  371. package/config/AdminConfig/Theme.js.map +1 -0
  372. package/config/AdminConfig.d.ts +434 -0
  373. package/config/AdminConfig.js +47 -0
  374. package/config/AdminConfig.js.map +1 -0
  375. package/config/createAdminConfig.d.ts +57 -0
  376. package/config/createAdminConfig.js +94 -0
  377. package/config/createAdminConfig.js.map +1 -0
  378. package/hooks/index.js +10 -115
  379. package/hooks/index.js.map +1 -1
  380. package/hooks/useConfirmationDialog.js +26 -39
  381. package/hooks/useConfirmationDialog.js.map +1 -1
  382. package/hooks/useDialog.js +16 -21
  383. package/hooks/useDialog.js.map +1 -1
  384. package/hooks/useIsMounted.js +6 -14
  385. package/hooks/useIsMounted.js.map +1 -1
  386. package/hooks/useKeyHandler.js +28 -46
  387. package/hooks/useKeyHandler.js.map +1 -1
  388. package/hooks/useModKey.js +9 -20
  389. package/hooks/useModKey.js.map +1 -1
  390. package/hooks/useShiftKey.js +13 -26
  391. package/hooks/useShiftKey.js.map +1 -1
  392. package/hooks/useSnackbar.js +22 -43
  393. package/hooks/useSnackbar.js.map +1 -1
  394. package/hooks/useStateIfMounted.js +8 -18
  395. package/hooks/useStateIfMounted.js.map +1 -1
  396. package/hooks/useStateWithCallback.js +7 -20
  397. package/hooks/useStateWithCallback.js.map +1 -1
  398. package/index.d.ts +2 -5
  399. package/index.js +52 -491
  400. package/index.js.map +1 -1
  401. package/package.json +25 -23
  402. package/plugins/MenuPlugin.js +15 -36
  403. package/plugins/MenuPlugin.js.map +1 -1
  404. package/plugins/PermissionRendererPlugin.js +15 -36
  405. package/plugins/PermissionRendererPlugin.js.map +1 -1
  406. package/plugins/uiLayoutRenderer/index.js +39 -48
  407. package/plugins/uiLayoutRenderer/index.js.map +1 -1
  408. package/styles.scss +7 -3
  409. package/types.d.ts +1 -36
  410. package/types.js +4 -11
  411. package/types.js.map +1 -1
  412. package/ui/UIElement.js +1 -18
  413. package/ui/UIElement.js.map +1 -1
  414. package/ui/UILayout.js +1 -18
  415. package/ui/UILayout.js.map +1 -1
  416. package/ui/UIRenderer.js +1 -12
  417. package/ui/UIRenderer.js.map +1 -1
  418. package/ui/UIView.js +1 -24
  419. package/ui/UIView.js.map +1 -1
  420. package/ui/elements/AccordionElement.js +43 -74
  421. package/ui/elements/AccordionElement.js.map +1 -1
  422. package/ui/elements/ButtonElement.js +46 -79
  423. package/ui/elements/ButtonElement.js.map +1 -1
  424. package/ui/elements/ButtonGroupElement.js +12 -31
  425. package/ui/elements/ButtonGroupElement.js.map +1 -1
  426. package/ui/elements/GenericElement.js +1 -16
  427. package/ui/elements/GenericElement.js.map +1 -1
  428. package/ui/elements/LabelElement.js +15 -37
  429. package/ui/elements/LabelElement.js.map +1 -1
  430. package/ui/elements/NavigationMenuElement.js +67 -119
  431. package/ui/elements/NavigationMenuElement.js.map +1 -1
  432. package/ui/elements/PanelElement.js +2 -20
  433. package/ui/elements/PanelElement.js.map +1 -1
  434. package/ui/elements/PlaceholderElement.js +8 -29
  435. package/ui/elements/PlaceholderElement.js.map +1 -1
  436. package/ui/elements/SmallButtonElement.js +20 -40
  437. package/ui/elements/SmallButtonElement.js.map +1 -1
  438. package/ui/elements/TypographyElement.js +20 -43
  439. package/ui/elements/TypographyElement.js.map +1 -1
  440. package/ui/elements/ViewElement.js +1 -16
  441. package/ui/elements/ViewElement.js.map +1 -1
  442. package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js +17 -33
  443. package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js.map +1 -1
  444. package/ui/elements/form/DynamicFieldsetElement.js +90 -127
  445. package/ui/elements/form/DynamicFieldsetElement.js.map +1 -1
  446. package/ui/elements/form/FileManagerElement/EmptyStateElement.js +7 -23
  447. package/ui/elements/form/FileManagerElement/EmptyStateElement.js.map +1 -1
  448. package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js +40 -65
  449. package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js.map +1 -1
  450. package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js +56 -82
  451. package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js.map +1 -1
  452. package/ui/elements/form/FileManagerElement/styled.js +37 -35
  453. package/ui/elements/form/FileManagerElement/styled.js.map +1 -1
  454. package/ui/elements/form/FileManagerElement.js +43 -81
  455. package/ui/elements/form/FileManagerElement.js.map +1 -1
  456. package/ui/elements/form/FormElement.js +17 -40
  457. package/ui/elements/form/FormElement.js.map +1 -1
  458. package/ui/elements/form/FormFieldElement.js +100 -158
  459. package/ui/elements/form/FormFieldElement.js.map +1 -1
  460. package/ui/elements/form/HiddenElement.js +21 -42
  461. package/ui/elements/form/HiddenElement.js.map +1 -1
  462. package/ui/elements/form/InputElement.js +28 -49
  463. package/ui/elements/form/InputElement.js.map +1 -1
  464. package/ui/elements/form/PasswordElement.js +26 -48
  465. package/ui/elements/form/PasswordElement.js.map +1 -1
  466. package/ui/elements/form/SelectElement.js +38 -64
  467. package/ui/elements/form/SelectElement.js.map +1 -1
  468. package/ui/elements/form/TextareaElement.js +30 -50
  469. package/ui/elements/form/TextareaElement.js.map +1 -1
  470. package/ui/views/AdminView/ContentElement.js +19 -42
  471. package/ui/views/AdminView/ContentElement.js.map +1 -1
  472. package/ui/views/AdminView/HeaderElement.js +57 -90
  473. package/ui/views/AdminView/HeaderElement.js.map +1 -1
  474. package/ui/views/AdminView/HeaderSectionCenterElement.js +16 -35
  475. package/ui/views/AdminView/HeaderSectionCenterElement.js.map +1 -1
  476. package/ui/views/AdminView/HeaderSectionLeftElement.js +16 -35
  477. package/ui/views/AdminView/HeaderSectionLeftElement.js.map +1 -1
  478. package/ui/views/AdminView/HeaderSectionRightElement.js +16 -35
  479. package/ui/views/AdminView/HeaderSectionRightElement.js.map +1 -1
  480. package/ui/views/AdminView/components/Dialog.js +30 -36
  481. package/ui/views/AdminView/components/Dialog.js.map +1 -1
  482. package/ui/views/AdminView/components/Hamburger.js +12 -21
  483. package/ui/views/AdminView/components/Hamburger.js.map +1 -1
  484. package/ui/views/FormView/FormContainerElement.js +16 -53
  485. package/ui/views/FormView/FormContainerElement.js.map +1 -1
  486. package/ui/views/FormView/FormContentElement.d.ts +3 -1
  487. package/ui/views/FormView/FormContentElement.js +7 -19
  488. package/ui/views/FormView/FormContentElement.js.map +1 -1
  489. package/ui/views/FormView/FormFooterElement.js +11 -45
  490. package/ui/views/FormView/FormFooterElement.js.map +1 -1
  491. package/ui/views/FormView/FormHeaderElement.js +26 -75
  492. package/ui/views/FormView/FormHeaderElement.js.map +1 -1
  493. package/ui/views/FormView.js +104 -148
  494. package/ui/views/FormView.js.map +1 -1
  495. package/ui/views/OverlayView/ContentElement.js +12 -31
  496. package/ui/views/OverlayView/ContentElement.js.map +1 -1
  497. package/ui/views/OverlayView/HeaderElement.js +62 -99
  498. package/ui/views/OverlayView/HeaderElement.js.map +1 -1
  499. package/ui/views/OverlayView/HeaderTitleElement.js +21 -44
  500. package/ui/views/OverlayView/HeaderTitleElement.js.map +1 -1
  501. package/ui/views/OverlayView/useOverlayView.js +16 -27
  502. package/ui/views/OverlayView/useOverlayView.js.map +1 -1
  503. package/ui/views/OverlayView.js +72 -123
  504. package/ui/views/OverlayView.js.map +1 -1
  505. package/ui/views/SplitView/SplitViewPanelElement.js +28 -64
  506. package/ui/views/SplitView/SplitViewPanelElement.js.map +1 -1
  507. package/ui/views/SplitView.js +51 -82
  508. package/ui/views/SplitView.js.map +1 -1
  509. package/base/Version.d.ts +0 -3
  510. package/base/Version.js +0 -56
  511. package/base/Version.js.map +0 -1
  512. package/base/ui/Menu.d.ts +0 -51
  513. package/base/ui/Menu.js +0 -133
  514. package/base/ui/Menu.js.map +0 -1
  515. package/base/ui/Search.js +0 -61
  516. package/base/ui/Search.js.map +0 -1
  517. package/components/BulkActions/useDialogWithReport/useDialogWithReport.styled.d.ts +0 -20
  518. package/components/BulkActions/useDialogWithReport/useDialogWithReport.styled.js +0 -48
  519. package/components/BulkActions/useDialogWithReport/useDialogWithReport.styled.js.map +0 -1
  520. package/components/Dialogs/styled.d.ts +0 -10
  521. package/components/Dialogs/styled.js +0 -40
  522. package/components/Dialogs/styled.js.map +0 -1
  523. package/components/Filters/Filters.styled.d.ts +0 -13
  524. package/components/Filters/Filters.styled.js +0 -53
  525. package/components/Filters/Filters.styled.js.map +0 -1
  526. package/components/IconPicker/IconPicker.styles.d.ts +0 -63
  527. package/components/IconPicker/IconPicker.styles.js +0 -187
  528. package/components/IconPicker/IconPicker.styles.js.map +0 -1
  529. package/components/OptionsMenu/OptionsMenu.styled.d.ts +0 -3
  530. package/components/OptionsMenu/OptionsMenu.styled.js +0 -26
  531. package/components/OptionsMenu/OptionsMenu.styled.js.map +0 -1
  532. package/components/OverlayLayout/icons/close.svg +0 -13
  533. package/components/OverlayLayout/icons/navigate_before.svg +0 -16
  534. package/plugins/globalSearch/SearchBar.d.ts +0 -34
  535. package/plugins/globalSearch/SearchBar.js +0 -225
  536. package/plugins/globalSearch/SearchBar.js.map +0 -1
  537. package/plugins/globalSearch/SearchBarDropdown.d.ts +0 -23
  538. package/plugins/globalSearch/SearchBarDropdown.js +0 -82
  539. package/plugins/globalSearch/SearchBarDropdown.js.map +0 -1
  540. package/plugins/globalSearch/icons/round-search-24px.svg +0 -20
  541. package/plugins/globalSearch/index.d.ts +0 -6
  542. package/plugins/globalSearch/index.js +0 -17
  543. package/plugins/globalSearch/index.js.map +0 -1
  544. package/plugins/globalSearch/styled.d.ts +0 -18
  545. package/plugins/globalSearch/styled.js +0 -133
  546. package/plugins/globalSearch/styled.js.map +0 -1
  547. package/styles/material-theme-assignments.scss +0 -375
  548. package/styles/material.scss +0 -42
  549. package/styles/reset.scss +0 -1
  550. package/styles/theme.scss +0 -76
  551. package/ui/views/AdminView/components/Snackbar.d.ts +0 -3
  552. package/ui/views/AdminView/components/Snackbar.js +0 -33
  553. package/ui/views/AdminView/components/Snackbar.js.map +0 -1
@@ -1,20 +1,10 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.make = exports.default = void 0;
8
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
1
  /**
12
2
  * Class for working with UI:
13
3
  * - rendering base structure
14
4
  * - show/hide preview
15
5
  * - apply tune view
16
6
  */
17
- var Ui = exports.default = /*#__PURE__*/function () {
7
+ export default class Ui {
18
8
  /**
19
9
  * @param ui - image tool Ui module
20
10
  * @param ui.api - Editor.js API
@@ -22,12 +12,12 @@ var Ui = exports.default = /*#__PURE__*/function () {
22
12
  * @param ui.onSelectFile - callback for clicks on Select file button
23
13
  * @param ui.readOnly - read-only mode flag
24
14
  */
25
- function Ui(_ref) {
26
- var api = _ref.api,
27
- config = _ref.config,
28
- onSelectFile = _ref.onSelectFile,
29
- readOnly = _ref.readOnly;
30
- (0, _classCallCheck2.default)(this, Ui);
15
+ constructor({
16
+ api,
17
+ config,
18
+ onSelectFile,
19
+ readOnly
20
+ }) {
31
21
  this.api = api;
32
22
  this.config = config;
33
23
  this.onSelectFile = onSelectFile;
@@ -60,183 +50,165 @@ var Ui = exports.default = /*#__PURE__*/function () {
60
50
  *
61
51
  * @returns {object}
62
52
  */
63
- return (0, _createClass2.default)(Ui, [{
64
- key: "CSS",
65
- get: function get() {
66
- return {
67
- baseClass: this.api.styles.block,
68
- input: this.api.styles.input,
69
- button: this.api.styles.button,
70
- /**
71
- * Tool's classes
72
- */
73
- wrapper: "image-tool",
74
- imageContainer: "image-tool__image",
75
- imageEl: "image-tool__image-picture",
76
- caption: "image-tool__caption"
77
- };
53
+ get CSS() {
54
+ return {
55
+ baseClass: this.api.styles.block,
56
+ input: this.api.styles.input,
57
+ button: this.api.styles.button,
58
+ /**
59
+ * Tool's classes
60
+ */
61
+ wrapper: "image-tool",
62
+ imageContainer: "image-tool__image",
63
+ imageEl: "image-tool__image-picture",
64
+ caption: "image-tool__caption"
65
+ };
66
+ }
67
+
68
+ /**
69
+ * Ui statuses:
70
+ * - empty
71
+ * - filled
72
+ *
73
+ * @returns {{EMPTY: string, UPLOADING: string, FILLED: string}}
74
+ */
75
+ static get status() {
76
+ return {
77
+ EMPTY: "empty",
78
+ FILLED: "filled"
79
+ };
80
+ }
81
+
82
+ /**
83
+ * Renders tool UI
84
+ *
85
+ * @param {ImageToolData} toolData - saved tool data
86
+ * @returns {Element}
87
+ */
88
+ render(toolData) {
89
+ if (!toolData.file || Object.keys(toolData.file).length === 0) {
90
+ this.toggleStatus(Ui.status.EMPTY);
78
91
  }
92
+ return this.nodes.wrapper;
93
+ }
79
94
 
95
+ /**
96
+ * Creates upload-file button
97
+ *
98
+ * @returns {Element}
99
+ */
100
+ createFileButton() {
101
+ const button = make("div", [this.CSS.button]);
102
+ button.innerHTML = this.api.i18n.t("Select an Image");
103
+ button.addEventListener("click", () => {
104
+ this.onSelectFile();
105
+ });
106
+ return button;
107
+ }
108
+
109
+ /**
110
+ * Shows an image
111
+ *
112
+ * @param {string} url - image source
113
+ * @returns {void}
114
+ */
115
+ fillImage(url) {
80
116
  /**
81
- * Ui statuses:
82
- * - empty
83
- * - filled
84
- *
85
- * @returns {{EMPTY: string, UPLOADING: string, FILLED: string}}
86
- */
87
- }, {
88
- key: "render",
89
- value:
90
- /**
91
- * Renders tool UI
92
- *
93
- * @param {ImageToolData} toolData - saved tool data
94
- * @returns {Element}
117
+ * Check for a source extension to compose element correctly: video tag for mp4, img — for others
95
118
  */
96
- function render(toolData) {
97
- if (!toolData.file || Object.keys(toolData.file).length === 0) {
98
- this.toggleStatus(Ui.status.EMPTY);
99
- }
100
- return this.nodes.wrapper;
101
- }
119
+ const tag = /\.mp4$/.test(url) ? "VIDEO" : "IMG";
120
+ const attributes = {
121
+ src: url
122
+ };
102
123
 
103
124
  /**
104
- * Creates upload-file button
125
+ * We use eventName variable because IMG and VIDEO tags have different event to be called on source load
126
+ * - IMG: load
127
+ * - VIDEO: loadeddata
105
128
  *
106
- * @returns {Element}
129
+ * @type {string}
107
130
  */
108
- }, {
109
- key: "createFileButton",
110
- value: function createFileButton() {
111
- var _this = this;
112
- var button = make("div", [this.CSS.button]);
113
- button.innerHTML = this.api.i18n.t("Select an Image");
114
- button.addEventListener("click", function () {
115
- _this.onSelectFile();
116
- });
117
- return button;
118
- }
131
+ let eventName = "load";
119
132
 
120
133
  /**
121
- * Shows an image
122
- *
123
- * @param {string} url - image source
124
- * @returns {void}
134
+ * Update attributes and eventName if source is a mp4 video
125
135
  */
126
- }, {
127
- key: "fillImage",
128
- value: function fillImage(url) {
129
- var _this2 = this;
130
- /**
131
- * Check for a source extension to compose element correctly: video tag for mp4, img — for others
132
- */
133
- var tag = /\.mp4$/.test(url) ? "VIDEO" : "IMG";
134
- var attributes = {
135
- src: url
136
- };
137
-
136
+ if (tag === "VIDEO") {
138
137
  /**
139
- * We use eventName variable because IMG and VIDEO tags have different event to be called on source load
140
- * - IMG: load
141
- * - VIDEO: loadeddata
138
+ * Add attributes for playing muted mp4 as a gif
142
139
  *
143
- * @type {string}
140
+ * @type {boolean}
144
141
  */
145
- var eventName = "load";
142
+ attributes.autoplay = true;
143
+ attributes.loop = true;
144
+ attributes.muted = true;
145
+ attributes.playsinline = true;
146
146
 
147
147
  /**
148
- * Update attributes and eventName if source is a mp4 video
149
- */
150
- if (tag === "VIDEO") {
151
- /**
152
- * Add attributes for playing muted mp4 as a gif
153
- *
154
- * @type {boolean}
155
- */
156
- attributes.autoplay = true;
157
- attributes.loop = true;
158
- attributes.muted = true;
159
- attributes.playsinline = true;
160
-
161
- /**
162
- * Change event to be listened
163
- *
164
- * @type {string}
165
- */
166
- eventName = "loadeddata";
167
- }
168
-
169
- /**
170
- * Compose tag with defined attributes
148
+ * Change event to be listened
171
149
  *
172
- * @type {Element}
173
- */
174
- this.nodes.imageEl = make(tag, this.CSS.imageEl, attributes);
175
-
176
- /**
177
- * Add load event listener
150
+ * @type {string}
178
151
  */
179
- this.nodes.imageEl.addEventListener(eventName, function () {
180
- _this2.toggleStatus(Ui.status.FILLED);
181
- });
182
- this.nodes.imageContainer.appendChild(this.nodes.imageEl);
152
+ eventName = "loadeddata";
183
153
  }
184
154
 
185
155
  /**
186
- * Shows caption input
156
+ * Compose tag with defined attributes
187
157
  *
188
- * @param {string} text - caption text
189
- * @returns {void}
158
+ * @type {Element}
190
159
  */
191
- }, {
192
- key: "fillCaption",
193
- value: function fillCaption(text) {
194
- if (!this.nodes.caption) {
195
- return;
196
- }
197
- this.nodes.caption.innerHTML = text;
198
- }
160
+ this.nodes.imageEl = make(tag, this.CSS.imageEl, attributes);
199
161
 
200
162
  /**
201
- * Changes UI status
202
- *
203
- * @param {string} status - see {@link Ui.status} constants
204
- * @returns {void}
163
+ * Add load event listener
205
164
  */
206
- }, {
207
- key: "toggleStatus",
208
- value: function toggleStatus(status) {
209
- for (var statusType in Ui.status) {
210
- if (Object.prototype.hasOwnProperty.call(Ui.status, statusType) === false) {
211
- continue;
212
- }
213
- var newStatus = Ui.status[statusType];
214
- this.nodes.wrapper.classList.toggle("".concat(this.CSS.wrapper, "--").concat(newStatus), status === newStatus);
215
- }
216
- }
165
+ this.nodes.imageEl.addEventListener(eventName, () => {
166
+ this.toggleStatus(Ui.status.FILLED);
167
+ });
168
+ this.nodes.imageContainer.appendChild(this.nodes.imageEl);
169
+ }
217
170
 
218
- /**
219
- * Apply visual representation of activated tune
220
- *
221
- * @param {string} tuneName - one of available tunes {@link Tunes.tunes}
222
- * @param {boolean} status - true for enable, false for disable
223
- * @returns {void}
224
- */
225
- }, {
226
- key: "applyTune",
227
- value: function applyTune(tuneName, status) {
228
- this.nodes.wrapper.classList.toggle("".concat(this.CSS.wrapper, "--").concat(tuneName), status);
171
+ /**
172
+ * Shows caption input
173
+ *
174
+ * @param {string} text - caption text
175
+ * @returns {void}
176
+ */
177
+ fillCaption(text) {
178
+ if (!this.nodes.caption) {
179
+ return;
229
180
  }
230
- }], [{
231
- key: "status",
232
- get: function get() {
233
- return {
234
- EMPTY: "empty",
235
- FILLED: "filled"
236
- };
181
+ this.nodes.caption.innerHTML = text;
182
+ }
183
+
184
+ /**
185
+ * Changes UI status
186
+ *
187
+ * @param {string} status - see {@link Ui.status} constants
188
+ * @returns {void}
189
+ */
190
+ toggleStatus(status) {
191
+ for (const statusType in Ui.status) {
192
+ if (Object.prototype.hasOwnProperty.call(Ui.status, statusType) === false) {
193
+ continue;
194
+ }
195
+ const newStatus = Ui.status[statusType];
196
+ this.nodes.wrapper.classList.toggle(`${this.CSS.wrapper}--${newStatus}`, status === newStatus);
237
197
  }
238
- }]);
239
- }();
198
+ }
199
+
200
+ /**
201
+ * Apply visual representation of activated tune
202
+ *
203
+ * @param {string} tuneName - one of available tunes {@link Tunes.tunes}
204
+ * @param {boolean} status - true for enable, false for disable
205
+ * @returns {void}
206
+ */
207
+ applyTune(tuneName, status) {
208
+ this.nodes.wrapper.classList.toggle(`${this.CSS.wrapper}--${tuneName}`, status);
209
+ }
210
+ }
211
+
240
212
  /**
241
213
  * Helper for making Elements with attributes
242
214
  *
@@ -245,30 +217,27 @@ var Ui = exports.default = /*#__PURE__*/function () {
245
217
  * @param {object} attributes - any attributes
246
218
  * @returns {HTMLElement}
247
219
  */
248
- var make = exports.make = function make(tagName) {
249
- var classNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
250
- var attributes = arguments.length > 2 ? arguments[2] : undefined;
251
- var element = document.createElement(tagName);
220
+ export const make = function make(tagName, classNames = null, attributes) {
221
+ const element = document.createElement(tagName);
252
222
  if (Array.isArray(classNames)) {
253
- var _element$classList;
254
- (_element$classList = element.classList).add.apply(_element$classList, (0, _toConsumableArray2.default)(classNames));
223
+ element.classList.add(...classNames);
255
224
  } else if (classNames) {
256
225
  element.classList.add(classNames);
257
226
  }
258
227
  if (!attributes) {
259
228
  return element;
260
229
  }
261
- for (var attrName in attributes) {
230
+ for (const attrName in attributes) {
262
231
  /**
263
232
  * Unfortunately it is a problem to map attributes to element because element is complaining
264
233
  * that attrName is a string, which cannot index the HTMLElement
265
234
  */
266
- var _key = attrName;
235
+ const key = attrName;
267
236
  /**
268
237
  * Error says that each key is a read-only property.
269
238
  */
270
239
  // @ts-expect-error
271
- element[_key] = attributes[attrName];
240
+ element[key] = attributes[attrName];
272
241
  }
273
242
  return element;
274
243
  };
@@ -1 +1 @@
1
- {"version":3,"names":["Ui","exports","default","_ref","api","config","onSelectFile","readOnly","_classCallCheck2","nodes","wrapper","make","CSS","baseClass","imageContainer","fileButton","createFileButton","imageEl","undefined","caption","input","contentEditable","dataset","captionPlaceholder","appendChild","_createClass2","key","get","styles","block","button","value","render","toolData","file","Object","keys","length","toggleStatus","status","EMPTY","_this","innerHTML","i18n","t","addEventListener","fillImage","url","_this2","tag","test","attributes","src","eventName","autoplay","loop","muted","playsinline","FILLED","fillCaption","text","statusType","prototype","hasOwnProperty","call","newStatus","classList","toggle","concat","applyTune","tuneName","tagName","classNames","arguments","element","document","createElement","Array","isArray","_element$classList","add","apply","_toConsumableArray2","attrName"],"sources":["ui.ts"],"sourcesContent":["import { API } from \"@editorjs/editorjs\";\nimport { ImageToolConfig, ImageToolData } from \"./types\";\n\ninterface OnSelectFileCallable {\n (): void;\n}\ninterface UiStatus {\n EMPTY: \"empty\";\n FILLED: \"filled\";\n [key: string]: string;\n}\ninterface UiParams {\n api: API;\n config: ImageToolConfig;\n onSelectFile: OnSelectFileCallable;\n readOnly: boolean;\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: ImageToolConfig;\n private readonly readOnly: boolean;\n private readonly onSelectFile: OnSelectFileCallable;\n\n public readonly nodes: {\n wrapper: HTMLElement;\n imageContainer: HTMLElement;\n fileButton: HTMLElement;\n imageEl?: HTMLElement;\n caption: HTMLElement;\n };\n\n /**\n * @param ui - image tool Ui module\n * @param ui.api - Editor.js API\n * @param ui.config - user config\n * @param ui.onSelectFile - callback for clicks on Select file button\n * @param ui.readOnly - read-only mode flag\n */\n constructor({ api, config, onSelectFile, readOnly }: UiParams) {\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(): UiStatus {\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: ImageToolData) {\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 public fillImage(url: string): void {\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 public fillCaption(text: string): void {\n if (!this.nodes.caption) {\n return;\n }\n this.nodes.caption.innerHTML = text;\n }\n\n /**\n * Changes UI status\n *\n * @param {string} status - see {@link Ui.status} constants\n * @returns {void}\n */\n public toggleStatus(status: string): void {\n for (const statusType in Ui.status) {\n if (Object.prototype.hasOwnProperty.call(Ui.status, statusType) === false) {\n continue;\n }\n const newStatus = Ui.status[statusType];\n this.nodes.wrapper.classList.toggle(\n `${this.CSS.wrapper}--${newStatus}`,\n status === newStatus\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 public applyTune(tuneName: string, status: boolean) {\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 {HTMLElement}\n */\nexport const make = function make(\n tagName: string,\n classNames: string[] | string | null = null,\n attributes?: Record<string, string | number | boolean>\n): HTMLElement {\n const element: HTMLElement = document.createElement(tagName);\n\n if (Array.isArray(classNames)) {\n element.classList.add(...classNames);\n } else if (classNames) {\n element.classList.add(classNames);\n }\n\n if (!attributes) {\n return element;\n }\n for (const attrName in attributes) {\n /**\n * Unfortunately it is a problem to map attributes to element because element is complaining\n * that attrName is a string, which cannot index the HTMLElement\n */\n const key = attrName as keyof HTMLElement;\n /**\n * Error says that each key is a read-only property.\n */\n // @ts-expect-error\n element[key] = attributes[attrName];\n }\n\n return element;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Ui","constructor","api","config","onSelectFile","readOnly","nodes","wrapper","make","CSS","baseClass","imageContainer","fileButton","createFileButton","imageEl","undefined","caption","input","contentEditable","dataset","captionPlaceholder","appendChild","styles","block","button","status","EMPTY","FILLED","render","toolData","file","Object","keys","length","toggleStatus","innerHTML","i18n","t","addEventListener","fillImage","url","tag","test","attributes","src","eventName","autoplay","loop","muted","playsinline","fillCaption","text","statusType","prototype","hasOwnProperty","call","newStatus","classList","toggle","applyTune","tuneName","tagName","classNames","element","document","createElement","Array","isArray","add","attrName","key"],"sources":["ui.ts"],"sourcesContent":["import { API } from \"@editorjs/editorjs\";\nimport { ImageToolConfig, ImageToolData } from \"./types\";\n\ninterface OnSelectFileCallable {\n (): void;\n}\ninterface UiStatus {\n EMPTY: \"empty\";\n FILLED: \"filled\";\n [key: string]: string;\n}\ninterface UiParams {\n api: API;\n config: ImageToolConfig;\n onSelectFile: OnSelectFileCallable;\n readOnly: boolean;\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: ImageToolConfig;\n private readonly readOnly: boolean;\n private readonly onSelectFile: OnSelectFileCallable;\n\n public readonly nodes: {\n wrapper: HTMLElement;\n imageContainer: HTMLElement;\n fileButton: HTMLElement;\n imageEl?: HTMLElement;\n caption: HTMLElement;\n };\n\n /**\n * @param ui - image tool Ui module\n * @param ui.api - Editor.js API\n * @param ui.config - user config\n * @param ui.onSelectFile - callback for clicks on Select file button\n * @param ui.readOnly - read-only mode flag\n */\n constructor({ api, config, onSelectFile, readOnly }: UiParams) {\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(): UiStatus {\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: ImageToolData) {\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 public fillImage(url: string): void {\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 public fillCaption(text: string): void {\n if (!this.nodes.caption) {\n return;\n }\n this.nodes.caption.innerHTML = text;\n }\n\n /**\n * Changes UI status\n *\n * @param {string} status - see {@link Ui.status} constants\n * @returns {void}\n */\n public toggleStatus(status: string): void {\n for (const statusType in Ui.status) {\n if (Object.prototype.hasOwnProperty.call(Ui.status, statusType) === false) {\n continue;\n }\n const newStatus = Ui.status[statusType];\n this.nodes.wrapper.classList.toggle(\n `${this.CSS.wrapper}--${newStatus}`,\n status === newStatus\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 public applyTune(tuneName: string, status: boolean) {\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 {HTMLElement}\n */\nexport const make = function make(\n tagName: string,\n classNames: string[] | string | null = null,\n attributes?: Record<string, string | number | boolean>\n): HTMLElement {\n const element: HTMLElement = document.createElement(tagName);\n\n if (Array.isArray(classNames)) {\n element.classList.add(...classNames);\n } else if (classNames) {\n element.classList.add(classNames);\n }\n\n if (!attributes) {\n return element;\n }\n for (const attrName in attributes) {\n /**\n * Unfortunately it is a problem to map attributes to element because element is complaining\n * that attrName is a string, which cannot index the HTMLElement\n */\n const key = attrName as keyof HTMLElement;\n /**\n * Error says that each key is a read-only property.\n */\n // @ts-expect-error\n element[key] = attributes[attrName];\n }\n\n return element;\n};\n"],"mappings":"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","ignoreList":[]}