@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.
- package/base/Admin.js +25 -35
- package/base/Admin.js.map +1 -1
- package/base/Base/Menus/SupportMenuItems.d.ts +2 -0
- package/base/Base/Menus/SupportMenuItems.js +20 -0
- package/base/Base/Menus/SupportMenuItems.js.map +1 -0
- package/base/Base/Menus/WebinyVersion.d.ts +2 -0
- package/base/Base/Menus/WebinyVersion.js +24 -0
- package/base/Base/Menus/WebinyVersion.js.map +1 -0
- package/base/Base/Menus.d.ts +2 -0
- package/base/Base/Menus.js +129 -0
- package/base/Base/Menus.js.map +1 -0
- package/base/Base/Routes.d.ts +2 -0
- package/base/Base/Routes.js +24 -0
- package/base/Base/Routes.js.map +1 -0
- package/base/Base/Tenant/wby-logo.svg +3 -0
- package/base/Base/Tenant.d.ts +2 -0
- package/base/Base/Tenant.js +19 -0
- package/base/Base/Tenant.js.map +1 -0
- package/base/Base.js +11 -79
- package/base/Base.js.map +1 -1
- package/base/WebinyVersion.d.ts +2 -0
- package/base/WebinyVersion.js +24 -0
- package/base/WebinyVersion.js.map +1 -0
- package/base/plugins/AddGraphQLQuerySelection.js +11 -21
- package/base/plugins/AddGraphQLQuerySelection.js.map +1 -1
- package/base/providers/AdminUiStateProvider.d.ts +1 -0
- package/base/providers/AdminUiStateProvider.js +14 -0
- package/base/providers/AdminUiStateProvider.js.map +1 -0
- package/base/providers/ApolloProvider.js +9 -15
- package/base/providers/ApolloProvider.js.map +1 -1
- package/base/providers/TelemetryProvider.js +12 -18
- package/base/providers/TelemetryProvider.js.map +1 -1
- package/base/providers/UiProviders.d.ts +1 -0
- package/base/providers/UiProviders.js +14 -0
- package/base/providers/UiProviders.js.map +1 -0
- package/base/providers/UiStateProvider.js +9 -15
- package/base/providers/UiStateProvider.js.map +1 -1
- package/base/providers/ViewCompositionProvider.js +33 -44
- package/base/providers/ViewCompositionProvider.js.map +1 -1
- package/base/ui/Brand.js +5 -12
- package/base/ui/Brand.js.map +1 -1
- package/base/ui/CenteredView.js +12 -43
- package/base/ui/CenteredView.js.map +1 -1
- package/base/ui/Dashboard.js +5 -12
- package/base/ui/Dashboard.js.map +1 -1
- package/base/ui/FileManager.js +42 -56
- package/base/ui/FileManager.js.map +1 -1
- package/base/ui/Layout.js +8 -16
- package/base/ui/Layout.js.map +1 -1
- package/base/ui/LocaleSelector.js +5 -12
- package/base/ui/LocaleSelector.js.map +1 -1
- package/base/ui/LoginScreen.js +9 -15
- package/base/ui/LoginScreen.js.map +1 -1
- package/base/ui/Logo.d.ts +0 -5
- package/base/ui/Logo.js +5 -26
- package/base/ui/Logo.js.map +1 -1
- package/base/ui/Navigation.d.ts +0 -57
- package/base/ui/Navigation.js +5 -146
- package/base/ui/Navigation.js.map +1 -1
- package/base/ui/NotFound.js +5 -12
- package/base/ui/NotFound.js.map +1 -1
- package/base/ui/Tags.js +14 -19
- package/base/ui/Tags.js.map +1 -1
- package/base/ui/{Search.d.ts → TenantSelector.d.ts} +2 -18
- package/base/ui/TenantSelector.js +8 -0
- package/base/ui/TenantSelector.js.map +1 -0
- package/base/ui/UserMenu/UserMenu.d.ts +39 -0
- package/base/ui/UserMenu/UserMenu.js +8 -0
- package/base/ui/UserMenu/UserMenu.js.map +1 -0
- package/base/ui/UserMenu/UserMenuHandle.d.ts +39 -0
- package/base/ui/UserMenu/UserMenuHandle.js +8 -0
- package/base/ui/UserMenu/UserMenuHandle.js.map +1 -0
- package/base/ui/UserMenu/UserMenuItem.d.ts +81 -0
- package/base/ui/UserMenu/UserMenuItem.js +19 -0
- package/base/ui/UserMenu/UserMenuItem.js.map +1 -0
- package/base/ui/UserMenu/UserMenuLink.d.ts +81 -0
- package/base/ui/UserMenu/UserMenuLink.js +19 -0
- package/base/ui/UserMenu/UserMenuLink.js.map +1 -0
- package/base/ui/UserMenu/UserMenuSeparator.d.ts +42 -0
- package/base/ui/UserMenu/UserMenuSeparator.js +9 -0
- package/base/ui/UserMenu/UserMenuSeparator.js.map +1 -0
- package/base/ui/UserMenu.d.ts +3 -79
- package/base/ui/UserMenu.js +14 -101
- package/base/ui/UserMenu.js.map +1 -1
- package/components/AdminLayout.js +7 -13
- package/components/AdminLayout.js.map +1 -1
- package/components/AppInstaller/AppInstaller.js +57 -67
- package/components/AppInstaller/AppInstaller.js.map +1 -1
- package/components/AppInstaller/Sidebar.js +49 -69
- package/components/AppInstaller/Sidebar.js.map +1 -1
- package/components/AppInstaller/index.js +10 -16
- package/components/AppInstaller/index.js.map +1 -1
- package/components/AppInstaller/styled.js +8 -15
- package/components/AppInstaller/styled.js.map +1 -1
- package/components/AppInstaller/useInstaller.js +81 -91
- package/components/AppInstaller/useInstaller.js.map +1 -1
- package/components/BulkActions/Worker.js +95 -141
- package/components/BulkActions/Worker.js.map +1 -1
- package/components/BulkActions/index.js +2 -27
- package/components/BulkActions/index.js.map +1 -1
- package/components/BulkActions/useDialogWithReport/DialogMessage.js +20 -33
- package/components/BulkActions/useDialogWithReport/DialogMessage.js.map +1 -1
- package/components/BulkActions/useDialogWithReport/index.js +1 -16
- package/components/BulkActions/useDialogWithReport/index.js.map +1 -1
- package/components/BulkActions/useDialogWithReport/useDialogWithReport.js +45 -52
- package/components/BulkActions/useDialogWithReport/useDialogWithReport.js.map +1 -1
- package/components/Buttons/Buttons.d.ts +7 -6
- package/components/Buttons/Buttons.js +58 -56
- package/components/Buttons/Buttons.js.map +1 -1
- package/components/Buttons/Buttons.styles.js +2 -9
- package/components/Buttons/Buttons.styles.js.map +1 -1
- package/components/Buttons/index.js +2 -25
- package/components/Buttons/index.js.map +1 -1
- package/components/Buttons/useButtons.js +13 -19
- package/components/Buttons/useButtons.js.map +1 -1
- package/components/Dialogs/CustomDialog.js +30 -37
- package/components/Dialogs/CustomDialog.js.map +1 -1
- package/components/Dialogs/Dialog.d.ts +8 -4
- package/components/Dialogs/Dialog.js +56 -41
- package/components/Dialogs/Dialog.js.map +1 -1
- package/components/Dialogs/DialogsContext.d.ts +9 -3
- package/components/Dialogs/DialogsContext.js +96 -107
- package/components/Dialogs/DialogsContext.js.map +1 -1
- package/components/Dialogs/useDialogs.js +5 -17
- package/components/Dialogs/useDialogs.js.map +1 -1
- package/components/EmptyView.d.ts +1 -1
- package/components/EmptyView.js +31 -41
- package/components/EmptyView.js.map +1 -1
- package/components/Filters/Filters.js +12 -20
- package/components/Filters/Filters.js.map +1 -1
- package/components/Filters/FiltersToggle.d.ts +7 -0
- package/components/Filters/FiltersToggle.js +26 -0
- package/components/Filters/FiltersToggle.js.map +1 -0
- package/components/Filters/index.d.ts +1 -0
- package/components/Filters/index.js +2 -16
- package/components/Filters/index.js.map +1 -1
- package/components/FloatingActionButton.js +7 -13
- package/components/FloatingActionButton.js.map +1 -1
- package/components/FloatingPanel.js +44 -68
- package/components/FloatingPanel.js.map +1 -1
- package/components/IconPicker/IconPicker.d.ts +1 -1
- package/components/IconPicker/IconPicker.js +25 -32
- package/components/IconPicker/IconPicker.js.map +1 -1
- package/components/IconPicker/IconPickerComponent.d.ts +5 -5
- package/components/IconPicker/IconPickerComponent.js +67 -87
- package/components/IconPicker/IconPickerComponent.js.map +1 -1
- package/components/IconPicker/IconPickerPresenter.d.ts +5 -4
- package/components/IconPicker/IconPickerPresenter.js +68 -109
- package/components/IconPicker/IconPickerPresenter.js.map +1 -1
- package/components/IconPicker/IconPickerPresenter.test.js +21 -23
- package/components/IconPicker/IconPickerPresenter.test.js.map +1 -1
- package/components/IconPicker/IconPickerPresenterProvider.js +10 -17
- package/components/IconPicker/IconPickerPresenterProvider.js.map +1 -1
- package/components/IconPicker/IconPickerTab.d.ts +2 -1
- package/components/IconPicker/IconPickerTab.js +103 -113
- package/components/IconPicker/IconPickerTab.js.map +1 -1
- package/components/IconPicker/IconRenderer.js +16 -24
- package/components/IconPicker/IconRenderer.js.map +1 -1
- package/components/IconPicker/IconRepository.js +41 -73
- package/components/IconPicker/IconRepository.js.map +1 -1
- package/components/IconPicker/IconRepository.test.js +11 -13
- package/components/IconPicker/IconRepository.test.js.map +1 -1
- package/components/IconPicker/IconRepositoryFactory.js +14 -37
- package/components/IconPicker/IconRepositoryFactory.js.map +1 -1
- package/components/IconPicker/Loading.js +42 -68
- package/components/IconPicker/Loading.js.map +1 -1
- package/components/IconPicker/components/IconPickerCell.d.ts +12 -0
- package/components/IconPicker/components/IconPickerCell.js +27 -0
- package/components/IconPicker/components/IconPickerCell.js.map +1 -0
- package/components/IconPicker/components/IconPickerContent.d.ts +11 -0
- package/components/IconPicker/components/IconPickerContent.js +41 -0
- package/components/IconPicker/components/IconPickerContent.js.map +1 -0
- package/components/IconPicker/components/IconPickerRow.d.ts +4 -0
- package/components/IconPicker/components/IconPickerRow.js +14 -0
- package/components/IconPicker/components/IconPickerRow.js.map +1 -0
- package/components/IconPicker/components/IconPickerTrigger.d.ts +13 -0
- package/components/IconPicker/components/IconPickerTrigger.js +52 -0
- package/components/IconPicker/components/IconPickerTrigger.js.map +1 -0
- package/components/IconPicker/components/index.d.ts +4 -0
- package/components/IconPicker/components/index.js +6 -0
- package/components/IconPicker/components/index.js.map +1 -0
- package/components/IconPicker/config/Emojis.js +9 -16
- package/components/IconPicker/config/Emojis.js.map +1 -1
- package/components/IconPicker/config/FontAwesomeIcons.js +30 -43
- package/components/IconPicker/config/FontAwesomeIcons.js.map +1 -1
- package/components/IconPicker/config/IconPackProvider.js +10 -16
- package/components/IconPicker/config/IconPackProvider.js.map +1 -1
- package/components/IconPicker/config/IconType.js +52 -55
- package/components/IconPicker/config/IconType.js.map +1 -1
- package/components/IconPicker/config/index.js +35 -53
- package/components/IconPicker/config/index.js.map +1 -1
- package/components/IconPicker/defaultIcon.js +1 -7
- package/components/IconPicker/defaultIcon.js.map +1 -1
- package/components/IconPicker/index.js +6 -47
- package/components/IconPicker/index.js.map +1 -1
- package/components/IconPicker/plugins/customPlugin.js +71 -96
- package/components/IconPicker/plugins/customPlugin.js.map +1 -1
- package/components/IconPicker/plugins/emojisPlugin.js +80 -117
- package/components/IconPicker/plugins/emojisPlugin.js.map +1 -1
- package/components/IconPicker/plugins/graphql.js +19 -10
- package/components/IconPicker/plugins/graphql.js.map +1 -1
- package/components/IconPicker/plugins/iconsPlugin.js +62 -93
- package/components/IconPicker/plugins/iconsPlugin.js.map +1 -1
- package/components/IconPicker/types.d.ts +1 -1
- package/components/IconPicker/types.js +3 -8
- package/components/IconPicker/types.js.map +1 -1
- package/components/LexicalEditor/LexicalEditor.js +24 -31
- package/components/LexicalEditor/LexicalEditor.js.map +1 -1
- package/components/LexicalEditor/index.js +1 -12
- package/components/LexicalEditor/index.js.map +1 -1
- package/components/MultiImageUpload.d.ts +1 -1
- package/components/MultiImageUpload.js +8 -31
- package/components/MultiImageUpload.js.map +1 -1
- package/components/OptionsMenu/OptionsMenu.d.ts +1 -0
- package/components/OptionsMenu/OptionsMenu.js +17 -23
- package/components/OptionsMenu/OptionsMenu.js.map +1 -1
- package/components/OptionsMenu/OptionsMenuItem.d.ts +1 -0
- package/components/OptionsMenu/OptionsMenuItem.js +12 -17
- package/components/OptionsMenu/OptionsMenuItem.js.map +1 -1
- package/components/OptionsMenu/OptionsMenuLink.d.ts +1 -0
- package/components/OptionsMenu/OptionsMenuLink.js +13 -36
- package/components/OptionsMenu/OptionsMenuLink.js.map +1 -1
- package/components/OptionsMenu/index.js +4 -51
- package/components/OptionsMenu/index.js.map +1 -1
- package/components/OptionsMenu/useOptionsMenuItem.js +12 -18
- package/components/OptionsMenu/useOptionsMenuItem.js.map +1 -1
- package/components/OverlayLayout/OverlayLayout.d.ts +6 -16
- package/components/OverlayLayout/OverlayLayout.js +42 -147
- package/components/OverlayLayout/OverlayLayout.js.map +1 -1
- package/components/OverlayLayout/components/OverlayBackdrop.d.ts +7 -0
- package/components/OverlayLayout/components/OverlayBackdrop.js +15 -0
- package/components/OverlayLayout/components/OverlayBackdrop.js.map +1 -0
- package/components/OverlayLayout/components/OverlayContent.d.ts +6 -0
- package/components/OverlayLayout/components/OverlayContent.js +21 -0
- package/components/OverlayLayout/components/OverlayContent.js.map +1 -0
- package/components/OverlayLayout/components/OverlayHeader.d.ts +13 -0
- package/components/OverlayLayout/components/OverlayHeader.js +44 -0
- package/components/OverlayLayout/components/OverlayHeader.js.map +1 -0
- package/components/OverlayLayout/components/OverlayRoot.d.ts +9 -0
- package/components/OverlayLayout/components/OverlayRoot.js +19 -0
- package/components/OverlayLayout/components/OverlayRoot.js.map +1 -0
- package/components/OverlayLayout/components/index.d.ts +4 -0
- package/components/OverlayLayout/components/index.js +6 -0
- package/components/OverlayLayout/components/index.js.map +1 -0
- package/components/OverlayLayout/index.js +1 -16
- package/components/OverlayLayout/index.js.map +1 -1
- package/components/Permissions/CannotUseAaclAlert.js +5 -12
- package/components/Permissions/CannotUseAaclAlert.js.map +1 -1
- package/components/Permissions/Permissions.js +37 -48
- package/components/Permissions/Permissions.js.map +1 -1
- package/components/Permissions/PermissionsGroup.d.ts +6 -0
- package/components/Permissions/PermissionsGroup.js +18 -0
- package/components/Permissions/PermissionsGroup.js.map +1 -0
- package/components/Permissions/StyledComponents.d.ts +1 -2
- package/components/Permissions/StyledComponents.js +12 -25
- package/components/Permissions/StyledComponents.js.map +1 -1
- package/components/Permissions/index.d.ts +1 -0
- package/components/Permissions/index.js +4 -35
- package/components/Permissions/index.js.map +1 -1
- package/components/ResizablePanels/index.js +1 -42
- package/components/ResizablePanels/index.js.map +1 -1
- package/components/RichTextEditor/RichTextEditor.js +13 -21
- package/components/RichTextEditor/RichTextEditor.js.map +1 -1
- package/components/RichTextEditor/index.js +2 -19
- package/components/RichTextEditor/index.js.map +1 -1
- package/components/RichTextEditor/tools/header/index.js +455 -521
- package/components/RichTextEditor/tools/header/index.js.map +1 -1
- package/components/RichTextEditor/tools/image/index.js +147 -182
- package/components/RichTextEditor/tools/image/index.js.map +1 -1
- package/components/RichTextEditor/tools/image/svgs.js +4 -10
- package/components/RichTextEditor/tools/image/svgs.js.map +1 -1
- package/components/RichTextEditor/tools/image/tunes.js +75 -96
- package/components/RichTextEditor/tools/image/tunes.js.map +1 -1
- package/components/RichTextEditor/tools/image/types.js +1 -5
- package/components/RichTextEditor/tools/image/ui.js +143 -174
- package/components/RichTextEditor/tools/image/ui.js.map +1 -1
- package/components/RichTextEditor/tools/paragraph/index.js +337 -389
- package/components/RichTextEditor/tools/paragraph/index.js.map +1 -1
- package/components/RichTextEditor/tools/textColor/index.js +164 -202
- package/components/RichTextEditor/tools/textColor/index.js.map +1 -1
- package/components/RichTextEditor/tools/utils.js +3 -9
- package/components/RichTextEditor/tools/utils.js.map +1 -1
- package/components/Routes.js +14 -23
- package/components/Routes.js.map +1 -1
- package/components/SearchUI.d.ts +2 -1
- package/components/SearchUI.js +22 -48
- package/components/SearchUI.js.map +1 -1
- package/components/SimpleForm/SimpleForm.d.ts +14 -7
- package/components/SimpleForm/SimpleForm.js +72 -77
- package/components/SimpleForm/SimpleForm.js.map +1 -1
- package/components/SimpleForm/index.js +1 -30
- package/components/SimpleForm/index.js.map +1 -1
- package/components/SimpleUI/InputField.js +39 -47
- package/components/SimpleUI/InputField.js.map +1 -1
- package/components/SingleImageUpload.d.ts +19 -1
- package/components/SingleImageUpload.js +39 -75
- package/components/SingleImageUpload.js.map +1 -1
- package/components/SplitView/SplitView.d.ts +4 -4
- package/components/SplitView/SplitView.js +41 -88
- package/components/SplitView/SplitView.js.map +1 -1
- package/components/SplitView/index.js +1 -24
- package/components/SplitView/index.js.map +1 -1
- package/components/StateInspector.js +28 -28
- package/components/StateInspector.js.map +1 -1
- package/components/Wcp.js +21 -25
- package/components/Wcp.js.map +1 -1
- package/components/index.js +3 -26
- package/components/index.js.map +1 -1
- package/config/AdminConfig/Menu/MenuGroup.d.ts +62 -0
- package/config/AdminConfig/Menu/MenuGroup.js +14 -0
- package/config/AdminConfig/Menu/MenuGroup.js.map +1 -0
- package/config/AdminConfig/Menu/MenuItem.d.ts +43 -0
- package/config/AdminConfig/Menu/MenuItem.js +14 -0
- package/config/AdminConfig/Menu/MenuItem.js.map +1 -0
- package/config/AdminConfig/Menu/MenuLink.d.ts +43 -0
- package/config/AdminConfig/Menu/MenuLink.js +18 -0
- package/config/AdminConfig/Menu/MenuLink.js.map +1 -0
- package/config/AdminConfig/Menu/SupportMenu/SupportMenuItem.d.ts +43 -0
- package/config/AdminConfig/Menu/SupportMenu/SupportMenuItem.js +13 -0
- package/config/AdminConfig/Menu/SupportMenu/SupportMenuItem.js.map +1 -0
- package/config/AdminConfig/Menu/SupportMenu/SupportMenuLink.d.ts +24 -0
- package/config/AdminConfig/Menu/SupportMenu/SupportMenuLink.js +13 -0
- package/config/AdminConfig/Menu/SupportMenu/SupportMenuLink.js.map +1 -0
- package/config/AdminConfig/Menu/SupportMenu.d.ts +72 -0
- package/config/AdminConfig/Menu/SupportMenu.js +49 -0
- package/config/AdminConfig/Menu/SupportMenu.js.map +1 -0
- package/config/AdminConfig/Menu/UserMenu/UserMenuItem.d.ts +41 -0
- package/config/AdminConfig/Menu/UserMenu/UserMenuItem.js +7 -0
- package/config/AdminConfig/Menu/UserMenu/UserMenuItem.js.map +1 -0
- package/config/AdminConfig/Menu/UserMenu/UserMenuLink.d.ts +41 -0
- package/config/AdminConfig/Menu/UserMenu/UserMenuLink.js +7 -0
- package/config/AdminConfig/Menu/UserMenu/UserMenuLink.js.map +1 -0
- package/config/AdminConfig/Menu/UserMenu/UserMenuSeparator.d.ts +1 -0
- package/config/AdminConfig/Menu/UserMenu/UserMenuSeparator.js +3 -0
- package/config/AdminConfig/Menu/UserMenu/UserMenuSeparator.js.map +1 -0
- package/config/AdminConfig/Menu/UserMenu/types.d.ts +7 -0
- package/config/AdminConfig/Menu/UserMenu/types.js +3 -0
- package/config/AdminConfig/Menu/UserMenu/types.js.map +1 -0
- package/config/AdminConfig/Menu/UserMenu.d.ts +129 -0
- package/config/AdminConfig/Menu/UserMenu.js +61 -0
- package/config/AdminConfig/Menu/UserMenu.js.map +1 -0
- package/config/AdminConfig/Menu/types.d.ts +7 -0
- package/config/AdminConfig/Menu/types.js +3 -0
- package/config/AdminConfig/Menu/types.js.map +1 -0
- package/config/AdminConfig/Menu.d.ts +350 -0
- package/config/AdminConfig/Menu.js +75 -0
- package/config/AdminConfig/Menu.js.map +1 -0
- package/config/AdminConfig/Route.d.ts +3 -0
- package/config/AdminConfig/Route.js +8 -0
- package/config/AdminConfig/Route.js.map +1 -0
- package/config/AdminConfig/Tenant/TenantLogo.d.ts +23 -0
- package/config/AdminConfig/Tenant/TenantLogo.js +16 -0
- package/config/AdminConfig/Tenant/TenantLogo.js.map +1 -0
- package/config/AdminConfig/Tenant/TenantName.d.ts +23 -0
- package/config/AdminConfig/Tenant/TenantName.js +16 -0
- package/config/AdminConfig/Tenant/TenantName.js.map +1 -0
- package/config/AdminConfig/Tenant.d.ts +66 -0
- package/config/AdminConfig/Tenant.js +23 -0
- package/config/AdminConfig/Tenant.js.map +1 -0
- package/config/AdminConfig/Theme/assignColor.d.ts +2 -0
- package/config/AdminConfig/Theme/assignColor.js +22 -0
- package/config/AdminConfig/Theme/assignColor.js.map +1 -0
- package/config/AdminConfig/Theme/consts.d.ts +2 -0
- package/config/AdminConfig/Theme/consts.js +4 -0
- package/config/AdminConfig/Theme/consts.js.map +1 -0
- package/config/AdminConfig/Theme/types.d.ts +3 -0
- package/config/AdminConfig/Theme/types.js +3 -0
- package/config/AdminConfig/Theme/types.js.map +1 -0
- package/config/AdminConfig/Theme.d.ts +16 -0
- package/config/AdminConfig/Theme.js +22 -0
- package/config/AdminConfig/Theme.js.map +1 -0
- package/config/AdminConfig.d.ts +434 -0
- package/config/AdminConfig.js +47 -0
- package/config/AdminConfig.js.map +1 -0
- package/config/createAdminConfig.d.ts +57 -0
- package/config/createAdminConfig.js +94 -0
- package/config/createAdminConfig.js.map +1 -0
- package/hooks/index.js +10 -115
- package/hooks/index.js.map +1 -1
- package/hooks/useConfirmationDialog.js +26 -39
- package/hooks/useConfirmationDialog.js.map +1 -1
- package/hooks/useDialog.js +16 -21
- package/hooks/useDialog.js.map +1 -1
- package/hooks/useIsMounted.js +6 -14
- package/hooks/useIsMounted.js.map +1 -1
- package/hooks/useKeyHandler.js +28 -46
- package/hooks/useKeyHandler.js.map +1 -1
- package/hooks/useModKey.js +9 -20
- package/hooks/useModKey.js.map +1 -1
- package/hooks/useShiftKey.js +13 -26
- package/hooks/useShiftKey.js.map +1 -1
- package/hooks/useSnackbar.js +22 -43
- package/hooks/useSnackbar.js.map +1 -1
- package/hooks/useStateIfMounted.js +8 -18
- package/hooks/useStateIfMounted.js.map +1 -1
- package/hooks/useStateWithCallback.js +7 -20
- package/hooks/useStateWithCallback.js.map +1 -1
- package/index.d.ts +2 -5
- package/index.js +52 -491
- package/index.js.map +1 -1
- package/package.json +25 -23
- package/plugins/MenuPlugin.js +15 -36
- package/plugins/MenuPlugin.js.map +1 -1
- package/plugins/PermissionRendererPlugin.js +15 -36
- package/plugins/PermissionRendererPlugin.js.map +1 -1
- package/plugins/uiLayoutRenderer/index.js +39 -48
- package/plugins/uiLayoutRenderer/index.js.map +1 -1
- package/styles.scss +7 -3
- package/types.d.ts +1 -36
- package/types.js +4 -11
- package/types.js.map +1 -1
- package/ui/UIElement.js +1 -18
- package/ui/UIElement.js.map +1 -1
- package/ui/UILayout.js +1 -18
- package/ui/UILayout.js.map +1 -1
- package/ui/UIRenderer.js +1 -12
- package/ui/UIRenderer.js.map +1 -1
- package/ui/UIView.js +1 -24
- package/ui/UIView.js.map +1 -1
- package/ui/elements/AccordionElement.js +43 -74
- package/ui/elements/AccordionElement.js.map +1 -1
- package/ui/elements/ButtonElement.js +46 -79
- package/ui/elements/ButtonElement.js.map +1 -1
- package/ui/elements/ButtonGroupElement.js +12 -31
- package/ui/elements/ButtonGroupElement.js.map +1 -1
- package/ui/elements/GenericElement.js +1 -16
- package/ui/elements/GenericElement.js.map +1 -1
- package/ui/elements/LabelElement.js +15 -37
- package/ui/elements/LabelElement.js.map +1 -1
- package/ui/elements/NavigationMenuElement.js +67 -119
- package/ui/elements/NavigationMenuElement.js.map +1 -1
- package/ui/elements/PanelElement.js +2 -20
- package/ui/elements/PanelElement.js.map +1 -1
- package/ui/elements/PlaceholderElement.js +8 -29
- package/ui/elements/PlaceholderElement.js.map +1 -1
- package/ui/elements/SmallButtonElement.js +20 -40
- package/ui/elements/SmallButtonElement.js.map +1 -1
- package/ui/elements/TypographyElement.js +20 -43
- package/ui/elements/TypographyElement.js.map +1 -1
- package/ui/elements/ViewElement.js +1 -16
- package/ui/elements/ViewElement.js.map +1 -1
- package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js +17 -33
- package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js.map +1 -1
- package/ui/elements/form/DynamicFieldsetElement.js +90 -127
- package/ui/elements/form/DynamicFieldsetElement.js.map +1 -1
- package/ui/elements/form/FileManagerElement/EmptyStateElement.js +7 -23
- package/ui/elements/form/FileManagerElement/EmptyStateElement.js.map +1 -1
- package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js +40 -65
- package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js.map +1 -1
- package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js +56 -82
- package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js.map +1 -1
- package/ui/elements/form/FileManagerElement/styled.js +37 -35
- package/ui/elements/form/FileManagerElement/styled.js.map +1 -1
- package/ui/elements/form/FileManagerElement.js +43 -81
- package/ui/elements/form/FileManagerElement.js.map +1 -1
- package/ui/elements/form/FormElement.js +17 -40
- package/ui/elements/form/FormElement.js.map +1 -1
- package/ui/elements/form/FormFieldElement.js +100 -158
- package/ui/elements/form/FormFieldElement.js.map +1 -1
- package/ui/elements/form/HiddenElement.js +21 -42
- package/ui/elements/form/HiddenElement.js.map +1 -1
- package/ui/elements/form/InputElement.js +28 -49
- package/ui/elements/form/InputElement.js.map +1 -1
- package/ui/elements/form/PasswordElement.js +26 -48
- package/ui/elements/form/PasswordElement.js.map +1 -1
- package/ui/elements/form/SelectElement.js +38 -64
- package/ui/elements/form/SelectElement.js.map +1 -1
- package/ui/elements/form/TextareaElement.js +30 -50
- package/ui/elements/form/TextareaElement.js.map +1 -1
- package/ui/views/AdminView/ContentElement.js +19 -42
- package/ui/views/AdminView/ContentElement.js.map +1 -1
- package/ui/views/AdminView/HeaderElement.js +57 -90
- package/ui/views/AdminView/HeaderElement.js.map +1 -1
- package/ui/views/AdminView/HeaderSectionCenterElement.js +16 -35
- package/ui/views/AdminView/HeaderSectionCenterElement.js.map +1 -1
- package/ui/views/AdminView/HeaderSectionLeftElement.js +16 -35
- package/ui/views/AdminView/HeaderSectionLeftElement.js.map +1 -1
- package/ui/views/AdminView/HeaderSectionRightElement.js +16 -35
- package/ui/views/AdminView/HeaderSectionRightElement.js.map +1 -1
- package/ui/views/AdminView/components/Dialog.js +30 -36
- package/ui/views/AdminView/components/Dialog.js.map +1 -1
- package/ui/views/AdminView/components/Hamburger.js +12 -21
- package/ui/views/AdminView/components/Hamburger.js.map +1 -1
- package/ui/views/FormView/FormContainerElement.js +16 -53
- package/ui/views/FormView/FormContainerElement.js.map +1 -1
- package/ui/views/FormView/FormContentElement.d.ts +3 -1
- package/ui/views/FormView/FormContentElement.js +7 -19
- package/ui/views/FormView/FormContentElement.js.map +1 -1
- package/ui/views/FormView/FormFooterElement.js +11 -45
- package/ui/views/FormView/FormFooterElement.js.map +1 -1
- package/ui/views/FormView/FormHeaderElement.js +26 -75
- package/ui/views/FormView/FormHeaderElement.js.map +1 -1
- package/ui/views/FormView.js +104 -148
- package/ui/views/FormView.js.map +1 -1
- package/ui/views/OverlayView/ContentElement.js +12 -31
- package/ui/views/OverlayView/ContentElement.js.map +1 -1
- package/ui/views/OverlayView/HeaderElement.js +62 -99
- package/ui/views/OverlayView/HeaderElement.js.map +1 -1
- package/ui/views/OverlayView/HeaderTitleElement.js +21 -44
- package/ui/views/OverlayView/HeaderTitleElement.js.map +1 -1
- package/ui/views/OverlayView/useOverlayView.js +16 -27
- package/ui/views/OverlayView/useOverlayView.js.map +1 -1
- package/ui/views/OverlayView.js +72 -123
- package/ui/views/OverlayView.js.map +1 -1
- package/ui/views/SplitView/SplitViewPanelElement.js +28 -64
- package/ui/views/SplitView/SplitViewPanelElement.js.map +1 -1
- package/ui/views/SplitView.js +51 -82
- package/ui/views/SplitView.js.map +1 -1
- package/base/Version.d.ts +0 -3
- package/base/Version.js +0 -56
- package/base/Version.js.map +0 -1
- package/base/ui/Menu.d.ts +0 -51
- package/base/ui/Menu.js +0 -133
- package/base/ui/Menu.js.map +0 -1
- package/base/ui/Search.js +0 -61
- package/base/ui/Search.js.map +0 -1
- package/components/BulkActions/useDialogWithReport/useDialogWithReport.styled.d.ts +0 -20
- package/components/BulkActions/useDialogWithReport/useDialogWithReport.styled.js +0 -48
- package/components/BulkActions/useDialogWithReport/useDialogWithReport.styled.js.map +0 -1
- package/components/Dialogs/styled.d.ts +0 -10
- package/components/Dialogs/styled.js +0 -40
- package/components/Dialogs/styled.js.map +0 -1
- package/components/Filters/Filters.styled.d.ts +0 -13
- package/components/Filters/Filters.styled.js +0 -53
- package/components/Filters/Filters.styled.js.map +0 -1
- package/components/IconPicker/IconPicker.styles.d.ts +0 -63
- package/components/IconPicker/IconPicker.styles.js +0 -187
- package/components/IconPicker/IconPicker.styles.js.map +0 -1
- package/components/OptionsMenu/OptionsMenu.styled.d.ts +0 -3
- package/components/OptionsMenu/OptionsMenu.styled.js +0 -26
- package/components/OptionsMenu/OptionsMenu.styled.js.map +0 -1
- package/components/OverlayLayout/icons/close.svg +0 -13
- package/components/OverlayLayout/icons/navigate_before.svg +0 -16
- package/plugins/globalSearch/SearchBar.d.ts +0 -34
- package/plugins/globalSearch/SearchBar.js +0 -225
- package/plugins/globalSearch/SearchBar.js.map +0 -1
- package/plugins/globalSearch/SearchBarDropdown.d.ts +0 -23
- package/plugins/globalSearch/SearchBarDropdown.js +0 -82
- package/plugins/globalSearch/SearchBarDropdown.js.map +0 -1
- package/plugins/globalSearch/icons/round-search-24px.svg +0 -20
- package/plugins/globalSearch/index.d.ts +0 -6
- package/plugins/globalSearch/index.js +0 -17
- package/plugins/globalSearch/index.js.map +0 -1
- package/plugins/globalSearch/styled.d.ts +0 -18
- package/plugins/globalSearch/styled.js +0 -133
- package/plugins/globalSearch/styled.js.map +0 -1
- package/styles/material-theme-assignments.scss +0 -375
- package/styles/material.scss +0 -42
- package/styles/reset.scss +0 -1
- package/styles/theme.scss +0 -76
- package/ui/views/AdminView/components/Snackbar.d.ts +0 -3
- package/ui/views/AdminView/components/Snackbar.js +0 -33
- 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
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
*
|
|
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
|
-
* @
|
|
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
|
-
*
|
|
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
|
-
*
|
|
140
|
-
* - IMG: load
|
|
141
|
-
* - VIDEO: loadeddata
|
|
138
|
+
* Add attributes for playing muted mp4 as a gif
|
|
142
139
|
*
|
|
143
|
-
* @type {
|
|
140
|
+
* @type {boolean}
|
|
144
141
|
*/
|
|
145
|
-
|
|
142
|
+
attributes.autoplay = true;
|
|
143
|
+
attributes.loop = true;
|
|
144
|
+
attributes.muted = true;
|
|
145
|
+
attributes.playsinline = true;
|
|
146
146
|
|
|
147
147
|
/**
|
|
148
|
-
*
|
|
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 {
|
|
173
|
-
*/
|
|
174
|
-
this.nodes.imageEl = make(tag, this.CSS.imageEl, attributes);
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* Add load event listener
|
|
150
|
+
* @type {string}
|
|
178
151
|
*/
|
|
179
|
-
|
|
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
|
-
*
|
|
156
|
+
* Compose tag with defined attributes
|
|
187
157
|
*
|
|
188
|
-
* @
|
|
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
|
-
*
|
|
202
|
-
*
|
|
203
|
-
* @param {string} status - see {@link Ui.status} constants
|
|
204
|
-
* @returns {void}
|
|
163
|
+
* Add load event listener
|
|
205
164
|
*/
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
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
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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
|
-
|
|
249
|
-
|
|
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
|
-
|
|
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 (
|
|
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
|
-
|
|
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[
|
|
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":[]}
|